[Pkg-openssl-changes] r810 - in openssl/branches/1.1.0/debian: . patches

Kurt Roeckx kroeckx at moszumanska.debian.org
Sun Jun 26 13:15:26 UTC 2016


Author: kroeckx
Date: 2016-06-26 13:15:26 +0000 (Sun, 26 Jun 2016)
New Revision: 810

Modified:
   openssl/branches/1.1.0/debian/changelog
   openssl/branches/1.1.0/debian/patches/openssl_snapshot.patch
   openssl/branches/1.1.0/debian/patches/series
Log:
New upstream snapshot


Modified: openssl/branches/1.1.0/debian/changelog
===================================================================
--- openssl/branches/1.1.0/debian/changelog	2016-06-11 17:28:50 UTC (rev 809)
+++ openssl/branches/1.1.0/debian/changelog	2016-06-26 13:15:26 UTC (rev 810)
@@ -1,3 +1,11 @@
+openssl (1.1.0~pre5-4) experimental; urgency=medium
+
+  * Update snapshot to commit c32bdbf171ce6650ef045ec47b5abe0de7c264db
+  * Remove utils-mkdir-p-check-if-dir-exists-also-after-mkdir-f.patch, applied
+    upstream
+
+ -- Kurt Roeckx <kurt at roeckx.be>  Sun, 26 Jun 2016 15:07:48 +0200
+
 openssl (1.1.0~pre5-3) experimental; urgency=medium
 
   [ Kurt Roeckx ]

Modified: openssl/branches/1.1.0/debian/patches/openssl_snapshot.patch
===================================================================
--- openssl/branches/1.1.0/debian/patches/openssl_snapshot.patch	2016-06-11 17:28:50 UTC (rev 809)
+++ openssl/branches/1.1.0/debian/patches/openssl_snapshot.patch	2016-06-26 13:15:26 UTC (rev 810)
@@ -1,13 +1,13 @@
 diff --git a/.gitattributes b/.gitattributes
 new file mode 100644
-index 000000000000..f33e22acf6cb
+index 0000000..f33e22a
 --- /dev/null
 +++ b/.gitattributes
 @@ -0,0 +1,2 @@
 +*.der binary
 +/fuzz/corpora/** binary
 diff --git a/.gitignore b/.gitignore
-index a6f5bf743a67..b47a348bdd37 100644
+index a6f5bf7..b47a348 100644
 --- a/.gitignore
 +++ b/.gitignore
 @@ -31,6 +31,7 @@ Makefile
@@ -82,10 +82,26 @@
  /tmp32.dbg
  /tmp32dll
 diff --git a/.travis.yml b/.travis.yml
-index f180a446ac80..d3f67f9b4c48 100644
+index f180a44..38a298a 100644
 --- a/.travis.yml
 +++ b/.travis.yml
-@@ -23,11 +23,9 @@ cache: ccache
+@@ -5,13 +5,13 @@ addons:
+     apt:
+         packages:
+             - ccache
+-            - clang-3.6
++#            - clang-3.6
+             - gcc-5
+             - binutils-mingw-w64
+             - gcc-mingw-w64
+             - wine
+         sources:
+-            - llvm-toolchain-precise-3.6
++#            - llvm-toolchain-precise-3.6
+             - ubuntu-toolchain-r-test
+ 
+ os:
+@@ -23,28 +23,30 @@ compiler:
      - gcc
  
  env:
@@ -98,28 +114,35 @@
      - CONFIG_OPTS="no-pic --strict-warnings" BUILDONLY="yes"
      - CONFIG_OPTS="no-engine no-shared --strict-warnings" BUILDONLY="yes"
  
-@@ -35,16 +33,16 @@ cache: ccache
+ matrix:
      include:
          - os: linux
-           compiler: clang-3.6
+-          compiler: clang-3.6
 -          env: CONFIG_OPTS="-fsanitize=address no-shared"
+-        - os: linux
+-          compiler: clang-3.6
+-          env: CONFIG_OPTS="no-shared no-asm -fno-sanitize-recover -fsanitize=address -fsanitize=undefined enable-rc5 enable-md2 -fno-sanitize=alignment"
++          compiler: clang
 +          env: CONFIG_OPTS="no-shared enable-asan"
++#        - os: linux
++#          compiler: clang-3.6
++#          compiler: clang
++#          env: CONFIG_OPTS="no-shared enable-asan"
++#        - os: linux
++#          compiler: clang-3.6
++#          env: CONFIG_OPTS="no-asm enable-ubsan enable-rc5 enable-md2 -fno-sanitize=alignment"
          - os: linux
-           compiler: clang-3.6
--          env: CONFIG_OPTS="no-shared no-asm -fno-sanitize-recover -fsanitize=address -fsanitize=undefined enable-rc5 enable-md2 -fno-sanitize=alignment"
-+          env: CONFIG_OPTS="no-asm enable-ubsan enable-rc5 enable-md2 -fno-sanitize=alignment"
-         - os: linux
            compiler: gcc-5
 -          env: CONFIG_OPTS="no-shared -fsanitize=address"
-+          env: CONFIG_OPTS="no-shared no-asm enable-asan enable-rc5 enable-md2"
++          env: CONFIG_OPTS="no-shared no-asm enable-rc5 enable-md2"
          - os: linux
            compiler: gcc-5
 -          env: CONFIG_OPTS="no-shared no-asm -fno-sanitize-recover -DPEDANTIC -fsanitize=address -fsanitize=undefined enable-rc5 enable-md2"
-+          env: CONFIG_OPTS="no-asm enable-ubsan enable-rc5 enable-md2 -DPEDANTIC"
++          env: CONFIG_OPTS="no-asm enable-rc5 enable-md2 -DPEDANTIC"
          - os: linux
            compiler: i686-w64-mingw32-gcc
            env: CONFIG_OPTS="no-pic"
-@@ -60,34 +58,24 @@ cache: ccache
+@@ -60,34 +62,24 @@ matrix:
  before_script:
      - sh .travis-create-release.sh $TRAVIS_OS_NAME
      - tar -xvzf _srcdist.tar.gz
@@ -160,20 +183,20 @@
      - make
      - if [ -z "$BUILDONLY" ]; then
            if [ -n "$CROSS_COMPILE" ]; then
-@@ -97,6 +85,10 @@ cache: ccache
+@@ -97,6 +89,10 @@ script:
        else
            make build_tests;
        fi
 +    - if [ -n "$DESTDIR" ]; then
 +          mkdir "../$DESTDIR";
-+          make install DESTDIR="../$DESTDIR";
++          make install install_docs DESTDIR="../$DESTDIR";
 +      fi
      - cd ..
  
  notifications:
 diff --git a/AUTHORS b/AUTHORS
 new file mode 100644
-index 000000000000..48211a274618
+index 0000000..48211a2
 --- /dev/null
 +++ b/AUTHORS
 @@ -0,0 +1,21 @@
@@ -199,16 +222,27 @@
 +    Ulf Möller
 +    Viktor Dukhovni
 diff --git a/CHANGES b/CHANGES
-index 477d18527d66..792f602d767e 100644
+index 477d185..e182b60 100644
 --- a/CHANGES
 +++ b/CHANGES
-@@ -2,7 +2,66 @@
+@@ -2,7 +2,77 @@
   OpenSSL CHANGES
   _______________
  
 - Changes between 1.0.2g and 1.1.0  [xx XXX xxxx]
 + Changes between 1.0.2h and 1.1.0  [xx XXX 2016]
 +
++  *) The method for finding the storage location for the Windows RAND seed file
++     has changed. First we check %RANDFILE%. If that is not set then we check
++     the directories %HOME%, %USERPROFILE% and %SYSTEMROOT% in that order. If
++     all else fails we fall back to C:\.
++     [Matt Caswell]
++
++  *) The EVP_EncryptUpdate() function has had its return type changed from void
++     to int. A return of 0 indicates and error while a return of 1 indicates
++     success.
++     [Matt Caswell]
++
 +  *) The flags RSA_FLAG_NO_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME and
 +     DH_FLAG_NO_EXP_CONSTTIME which previously provided the ability to switch
 +     off the constant time implementation for RSA, DSA and DH have been made
@@ -270,7 +304,7 @@
  
    *) The following datatypes were made opaque: X509_OBJECT, X509_STORE_CTX,
       X509_STORE, X509_LOOKUP, and X509_LOOKUP_METHOD.  The unused type
-@@ -988,6 +1047,103 @@
+@@ -988,6 +1058,103 @@
       validated when establishing a connection.
       [Rob Percival <robpercival at google.com>]
  
@@ -374,7 +408,7 @@
   Changes between 1.0.2f and 1.0.2g [1 Mar 2016]
  
    * Disable weak ciphers in SSLv3 and up in default builds of OpenSSL.
-@@ -1226,7 +1382,7 @@
+@@ -1226,7 +1393,7 @@
  
    *) Alternate chains certificate forgery
  
@@ -383,7 +417,7 @@
       alternative certificate chain if the first attempt to build such a chain
       fails. An error in the implementation of this logic can mean that an
       attacker could cause certain checks on untrusted certificates to be
-@@ -1484,7 +1640,7 @@
+@@ -1484,7 +1651,7 @@
  
    *) Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g.
       ARMv5 through ARMv8, as opposite to "locking" it to single one.
@@ -392,7 +426,7 @@
       and argue that binary targeting say ARMv5 would still execute on
       ARMv8. "Universal" build resolves this compromise by providing
       near-optimal performance even on newer platforms.
-@@ -1544,7 +1700,7 @@
+@@ -1544,7 +1711,7 @@
       [Steve Henson]
  
    *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
@@ -401,7 +435,7 @@
       [Steve Henson]
  
    *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
-@@ -1653,7 +1809,7 @@
+@@ -1653,7 +1820,7 @@
  
    *) Add support for certificate stores in CERT structure. This makes it
       possible to have different stores per SSL structure or one store in
@@ -410,7 +444,7 @@
       verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
       to build and store a certificate chain in CERT structure: returing
       an error if the chain cannot be built: this will allow applications
-@@ -1716,7 +1872,7 @@
+@@ -1716,7 +1883,7 @@
       [Steve Henson]
  
    *) Integrate hostname, email address and IP address checking with certificate
@@ -420,7 +454,7 @@
  
    *) Fixes and wildcard matching support to hostname and email checking
 diff --git a/CONTRIBUTING b/CONTRIBUTING
-index 3b84ce314190..07115e5a7588 100644
+index 3b84ce31..0f11362 100644
 --- a/CONTRIBUTING
 +++ b/CONTRIBUTING
 @@ -1,42 +1,75 @@
@@ -447,33 +481,33 @@
 -OpenSSL community please discuss it on the openssl-dev mailing list first.
 -Someone may be already working on the same thing or there may be a good
 -reason as to why that feature isn't implemented.
-+OpenSSL community you might want to discuss it on the openssl-dev mailing
-+list first.  Someone may be already working on the same thing or there
-+may be a good reason as to why that feature isn't implemented.
- 
+-
 -Patches should be as up to date as possible, preferably relative to the
 -current Git or the last snapshot. They should follow our coding style
 -(see https://www.openssl.org/policies/codingstyle.html) and compile without
 -warnings using the --strict-warnings flag.  OpenSSL compiles on many varied
 -platforms: try to ensure you only use portable features.
++OpenSSL community you might want to discuss it on the openssl-dev mailing
++list first.  Someone may be already working on the same thing or there
++may be a good reason as to why that feature isn't implemented.
+ 
+-When at all possible, patches should include tests. These can either be
+-added to an existing test, or completely new.  Please see test/README for
+-information on the test framework.
 +The best way to submit a patch is to make a pull request on GitHub.
 +(It is not necessary to send mail to rt at openssl.org to open a ticket!)
 +If you think the patch could use feedback from the community, please
 +start a thread on openssl-dev.
  
--When at all possible, patches should include tests. These can either be
--added to an existing test, or completely new.  Please see test/README for
--information on the test framework.
+-Our preferred format for patch files is "git format-patch" output. For example
+-to provide a patch file containing the last commit in your local git repository
+-use the following command:
 +You can also submit patches by sending it as mail to rt at openssl.org.
 +Please include the word "PATCH" and an explanation of what the patch
 +does in the subject line.  If you do this, our preferred format is "git
 +format-patch" output. For example to provide a patch file containing the
 +last commit in your local git repository use the following command:
  
--Our preferred format for patch files is "git format-patch" output. For example
--to provide a patch file containing the last commit in your local git repository
--use the following command:
--
 -# git format-patch --stdout HEAD^ >mydiffs.patch
 +    % git format-patch --stdout HEAD^ >mydiffs.patch
  
@@ -520,7 +554,7 @@
 +
 +    4.  Patches should follow our coding style (see
 +    https://www.openssl.org/policies/codingstyle.html) and compile without
-+    warnings. Where gcc or clang is availble you should use the
++    warnings. Where gcc or clang is available you should use the
 +    --strict-warnings Configure option.  OpenSSL compiles on many varied
 +    platforms: try to ensure you only use portable features.
 +
@@ -532,7 +566,7 @@
 +    look at the "pod" files in doc/apps, doc/crypto and doc/ssl for examples of
 +    our style.
 diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf
-index c28e4e1b515e..515cf00e20af 100644
+index c28e4e1..515cf00 100644
 --- a/Configurations/00-base-templates.conf
 +++ b/Configurations/00-base-templates.conf
 @@ -185,7 +185,7 @@
@@ -577,7 +611,7 @@
  	bn_asm_src      => "bn_asm.c armv8-mont.S",
  	aes_asm_src     => "aes_core.c aes_cbc.c aesv8-armx.S vpaes-armv8.S",
 diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
-index de591c90e14d..86dd4116c819 100644
+index de591c9..86dd411 100644
 --- a/Configurations/10-main.conf
 +++ b/Configurations/10-main.conf
 @@ -9,15 +9,39 @@ sub vc_win64a_info {
@@ -691,10 +725,7 @@
          inherit_from     => [ "BASE_unix", asm("alpha_asm") ],
          cc               => "gcc",
 -        cflags           => "-O3",
-+        cflags           => combine("-std=c9x -D_XOPEN_SOURCE=500 -D_OSF_SOURCE -O3",
-+                                    threads("-pthread")),
-+        ex_libs          => "-lrt",    # for mlock(2)
-         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+-        bn_ops           => "SIXTY_FOUR_BIT_LONG",
 -        thread_scheme    => "(unknown)",
 -        dso_scheme       => "dlfcn",
 -        shared_target    => "alpha-osf1-shared",
@@ -704,7 +735,10 @@
 -        inherit_from     => [ "BASE_unix", asm("alpha_asm") ],
 -        cc               => "cc",
 -        cflags           => "-std1 -tune host -O4 -readonly_strings",
--        bn_ops           => "SIXTY_FOUR_BIT_LONG",
++        cflags           => combine("-std=c9x -D_XOPEN_SOURCE=500 -D_OSF_SOURCE -O3",
++                                    threads("-pthread")),
++        ex_libs          => "-lrt",    # for mlock(2)
+         bn_ops           => "SIXTY_FOUR_BIT_LONG",
 -        thread_scheme    => "(unknown)",
 +        thread_scheme    => "pthreads",
          dso_scheme       => "dlfcn",
@@ -891,7 +925,7 @@
          cflags           => add(sub { my @warnings =
 diff --git a/Configurations/50-djgpp.conf b/Configurations/50-djgpp.conf
 new file mode 100644
-index 000000000000..f532bd16f779
+index 0000000..f532bd1
 --- /dev/null
 +++ b/Configurations/50-djgpp.conf
 @@ -0,0 +1,15 @@
@@ -912,7 +946,7 @@
 +);
 diff --git a/Configurations/50-haiku.conf b/Configurations/50-haiku.conf
 new file mode 100644
-index 000000000000..f11466660965
+index 0000000..f114666
 --- /dev/null
 +++ b/Configurations/50-haiku.conf
 @@ -0,0 +1,29 @@
@@ -947,7 +981,7 @@
 +);
 diff --git a/Configurations/50-masm.conf b/Configurations/50-masm.conf
 new file mode 100644
-index 000000000000..60a55072f256
+index 0000000..60a5507
 --- /dev/null
 +++ b/Configurations/50-masm.conf
 @@ -0,0 +1,17 @@
@@ -970,7 +1004,7 @@
 +);
 diff --git a/Configurations/99-personal-ben.conf b/Configurations/99-personal-ben.conf
 deleted file mode 100644
-index 50b9315cf39e..000000000000
+index 50b9315..0000000
 --- a/Configurations/99-personal-ben.conf
 +++ /dev/null
 @@ -1,95 +0,0 @@
@@ -1071,7 +1105,7 @@
 -);
 diff --git a/Configurations/99-personal-bodo.conf b/Configurations/99-personal-bodo.conf
 deleted file mode 100644
-index df9b49ce92e6..000000000000
+index df9b49c..0000000
 --- a/Configurations/99-personal-bodo.conf
 +++ /dev/null
 @@ -1,21 +0,0 @@
@@ -1098,7 +1132,7 @@
 -);
 diff --git a/Configurations/99-personal-geoff.conf b/Configurations/99-personal-geoff.conf
 deleted file mode 100644
-index 5bddfaef8349..000000000000
+index 5bddfae..0000000
 --- a/Configurations/99-personal-geoff.conf
 +++ /dev/null
 @@ -1,29 +0,0 @@
@@ -1133,7 +1167,7 @@
 -);
 diff --git a/Configurations/99-personal-levitte.conf b/Configurations/99-personal-levitte.conf
 deleted file mode 100644
-index c67252b510d8..000000000000
+index c67252b..0000000
 --- a/Configurations/99-personal-levitte.conf
 +++ /dev/null
 @@ -1,21 +0,0 @@
@@ -1160,7 +1194,7 @@
 -);
 diff --git a/Configurations/99-personal-rse.conf b/Configurations/99-personal-rse.conf
 deleted file mode 100644
-index 9999fcd3cf60..000000000000
+index 9999fcd..0000000
 --- a/Configurations/99-personal-rse.conf
 +++ /dev/null
 @@ -1,12 +0,0 @@
@@ -1178,7 +1212,7 @@
 -);
 diff --git a/Configurations/99-personal-steve.conf b/Configurations/99-personal-steve.conf
 deleted file mode 100644
-index 473fd240d4f9..000000000000
+index 473fd24..0000000
 --- a/Configurations/99-personal-steve.conf
 +++ /dev/null
 @@ -1,50 +0,0 @@
@@ -1233,10 +1267,10 @@
 -    },
 -);
 diff --git a/Configurations/README b/Configurations/README
-index a5a006e46a34..8451b4400433 100644
+index a5a006e..8451b44 100644
 --- a/Configurations/README
 +++ b/Configurations/README
-@@ -99,8 +99,7 @@ hash table, where each entry represent a specific target.
+@@ -99,8 +99,7 @@ In each table entry, the following keys are significant:
                             some options.  In this case, the first
                             string in the list is the name of the build
                             scheme.
@@ -1295,7 +1329,7 @@
      src2obj     - function that produces build file lines to build an
                    object file from source files and associated data.
 diff --git a/Configurations/README.design b/Configurations/README.design
-index 574982fb5a2b..5777e72441bb 100644
+index 574982f..5777e72 100644
 --- a/Configurations/README.design
 +++ b/Configurations/README.design
 @@ -91,6 +91,7 @@ depends on the library 'libssl' to function properly.
@@ -1319,7 +1353,7 @@
  
  Two things are worth an extra note:
  
-@@ -153,13 +154,14 @@ When Configure digests these build.info files, the accumulated
+@@ -153,13 +154,14 @@ information comes down to this:
      INCLUDE[apps/openssl]=. include
      DEPEND[apps/openssl]=libssl
  
@@ -1358,7 +1392,7 @@
  
  When Configure processes the build.info files, it will take it as
  truth without question, and will therefore perform very few checks.
-@@ -202,6 +205,10 @@ collected into the %unified_info database, divided into the following
+@@ -202,6 +205,10 @@ indexes:
    engines   => a list of engines.  These are directly inferred from
                 the ENGINES variable in build.info files.
  
@@ -1369,7 +1403,7 @@
    includes  => a hash table containing 'file' => [ 'include' ... ]
                 pairs.  These are directly inferred from the INCLUDE
                 variables in build.info files.
-@@ -247,11 +254,15 @@ As an example, here is how the build.info files example from the
+@@ -247,11 +254,15 @@ section above would be digested into a %unified_info table:
                      [
                          "libssl",
                      ],
@@ -1386,7 +1420,7 @@
                      [
                          "libcrypto",
                      ],
-@@ -259,11 +270,25 @@ As an example, here is how the build.info files example from the
+@@ -259,11 +270,25 @@ section above would be digested into a %unified_info table:
                      [
                          "libcrypto",
                      ],
@@ -1413,7 +1447,7 @@
          "includes" =>
              {
                  "apps/openssl" =>
-@@ -271,7 +296,7 @@ As an example, here is how the build.info files example from the
+@@ -271,7 +296,7 @@ section above would be digested into a %unified_info table:
                          ".",
                          "include",
                      ],
@@ -1422,7 +1456,7 @@
                      [
                          "include"
                      ],
-@@ -283,6 +308,10 @@ As an example, here is how the build.info files example from the
+@@ -283,6 +308,10 @@ section above would be digested into a %unified_info table:
                      [
                          "include",
                      ],
@@ -1433,7 +1467,7 @@
              }
          "libraries" =>
              [
-@@ -308,9 +337,6 @@ As an example, here is how the build.info files example from the
+@@ -308,9 +337,6 @@ section above would be digested into a %unified_info table:
              ],
          "rawlines" =>
              [
@@ -1443,7 +1477,7 @@
              ],
          "sources" =>
              {
-@@ -338,7 +364,7 @@ As an example, here is how the build.info files example from the
+@@ -338,7 +364,7 @@ section above would be digested into a %unified_info table:
                      [
                          "engines/e_ossltest.c",
                      ],
@@ -1496,7 +1530,7 @@
  following calls:
  
      # Note: libobj2shlib will only be called if shared libraries are
-@@ -509,25 +563,43 @@ example, producing the rules to build 'libssl' would result in the
+@@ -509,25 +563,43 @@ following calls:
      # Note 2: libobj2shlib gets both the name of the static library
      # and the names of all the object files that go into it.  It's up
      # to the implementation to decide which to use as input.
@@ -1505,6 +1539,14 @@
 -                 objs => [ "ssl/tls.o" ],
 -                 deps => [ "libcrypto" ]
 -                 ordinals => [ "ssl", "util/libssl.num" ]);
+-
+-    obj2lib(lib => "libssl"
+-            objs => [ "ssl/tls.o" ]);
+-
+-    # Note 3: common.tmpl peals off the ".o" extension, as the
+-    # platform at hand may have a different one.
+-    src2obj(obj => "ssl/tls"
+-            srcs => [ "ssl/tls.c" ],
 +    # Note 3: common.tmpl peals off the ".o" extension from all object
 +    # files, as the platform at hand may have a different one.
 +    libobj2shlib(shlib => "libcrypto",
@@ -1512,16 +1554,10 @@
 +                 objs => [ "crypto/aes", "crypto/evp", "crypto/cversion" ],
 +                 deps => [  ]
 +                 ordinals => [ "crypto", "util/libcrypto.num" ]);
- 
--    obj2lib(lib => "libssl"
--            objs => [ "ssl/tls.o" ]);
++
 +    obj2lib(lib => "libcrypto"
 +            objs => [ "crypto/aes", "crypto/evp", "crypto/cversion" ]);
- 
--    # Note 3: common.tmpl peals off the ".o" extension, as the
--    # platform at hand may have a different one.
--    src2obj(obj => "ssl/tls"
--            srcs => [ "ssl/tls.c" ],
++
 +    src2obj(obj => "crypto/aes"
 +            srcs => [ "crypto/aes.c" ],
              deps => [ ],
@@ -1556,7 +1592,7 @@
  The returned strings from all those calls are then concatenated
  together and written to the resulting build-file.
 diff --git a/Configurations/common.tmpl b/Configurations/common.tmpl
-index cdcaf5320f7a..48b3d18716df 100644
+index cdcaf53..9d7fbf2 100644
 --- a/Configurations/common.tmpl
 +++ b/Configurations/common.tmpl
 @@ -1,7 +1,9 @@
@@ -1585,7 +1621,7 @@
                               deps => $unified_info{depends}->{$src},
                               incs => [ @{$unified_info{includes}->{$bin}},
                                         @{$unified_info{includes}->{$obj}} ],
-@@ -153,9 +160,59 @@
+@@ -153,9 +160,62 @@
       $cache{$script} = 1;
   }
  
@@ -1642,10 +1678,13 @@
 +     }
 + }
 +
++ # Build mandatory generated headers
++ foreach (@{$unified_info{depends}->{""}}) { dogenerate($_); }
++
   # Build all known libraries, engines, programs and scripts.
   # Everything else will be handled as a consequence.
   foreach (@{$unified_info{libraries}}) { dolib($_);    }
-@@ -163,6 +220,8 @@
+@@ -163,6 +223,8 @@
   foreach (@{$unified_info{programs}})  { dobin($_);    }
   foreach (@{$unified_info{scripts}})   { doscript($_); }
  
@@ -1655,24 +1694,105 @@
   # they are added here.
   $OUT .= $_."\n" foreach @{$unified_info{rawlines}};
 diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl
-index 2e58b1af9d25..3314a1701770 100644
+index 2e58b1a..8211d01 100644
 --- a/Configurations/descrip.mms.tmpl
 +++ b/Configurations/descrip.mms.tmpl
-@@ -82,6 +82,10 @@ CONFIGURE_ARGS=({- join(", ",quotify_l(@{$config{perlargv}})) -})
+@@ -37,14 +37,25 @@
+       "";
+   }
+ 
++  # Because we need to make two computations of these data,
++  # we store them in arrays for reuse
++  our @shlibs = map { $unified_info{sharednames}->{$_} || () } @{$unified_info{libraries}};
++  our @programs = grep { !m|^\[\.test\]| } @{$unified_info{programs}};
++  our @testprogs = grep { m|^\[\.test\]| } @{$unified_info{programs}};
++  our @generated = ( ( map { (my $x = $_) =~ s|\.S$|\.s|; $x }
++                       grep { defined $unified_info{generate}->{$_} }
++                       map { @{$unified_info{sources}->{$_}} }
++                       grep { /\.o$/ } keys %{$unified_info{sources}} ),
++                     ( grep { /\.h$/ } keys %{$unified_info{generate}} ) );
++
+   # This is a horrible hack, but is needed because recursive inclusion of files
+   # in different directories does not work well with HP C.
+   my $sd = sourcedir("crypto", "async", "arch");
+   foreach (grep /\[\.crypto\.async\.arch\].*\.o$/, keys %{$unified_info{sources}}) {
+       (my $x = $_) =~ s|\.o$|.OBJ|;
+       $unified_info{before}->{$x}
+-          = qq(arch = F\$PARSE("$sd","A.;",,,"SYNTAX_ONLY") - "A.;"
+-        define arch 'arch');
++          = qq(arch_include = F\$PARSE("$sd","A.;",,,"SYNTAX_ONLY") - "A.;"
++        define arch 'arch_include');
+       $unified_info{after}->{$x}
+           = qq(deassign arch);
+   }
+@@ -52,10 +63,10 @@
+   my $sd2 = sourcedir("ssl","statem");
+   $unified_info{before}->{"[.test]heartbeat_test.OBJ"}
+       = $unified_info{before}->{"[.test]ssltest_old.OBJ"}
+-      = qq(record = F\$PARSE("$sd1","A.;",,,"SYNTAX_ONLY") - "A.;"
+-        define record 'record'
+-        statem = F\$PARSE("$sd2","A.;",,,"SYNTAX_ONLY") - "A.;"
+-        define statem 'statem');
++      = qq(record_include = F\$PARSE("$sd1","A.;",,,"SYNTAX_ONLY") - "A.;"
++        define record 'record_include'
++        statem_include = F\$PARSE("$sd2","A.;",,,"SYNTAX_ONLY") - "A.;"
++        define statem 'statem_include');
+   $unified_info{after}->{"[.test]heartbeat_test.OBJ"}
+       = $unified_info{after}->{"[.test]ssltest.OBJ"}
+       = qq(deassign statem
+@@ -63,10 +74,10 @@
+   foreach (grep /^\[\.ssl\.(?:record|statem)\].*\.o$/, keys %{$unified_info{sources}}) {
+       (my $x = $_) =~ s|\.o$|.OBJ|;
+       $unified_info{before}->{$x}
+-          = qq(record = F\$PARSE("$sd1","A.;",,,"SYNTAX_ONLY") - "A.;"
+-        define record 'record'
+-        statem = F\$PARSE("$sd2","A.;",,,"SYNTAX_ONLY") - "A.;"
+-        define statem 'statem');
++          = qq(record_include = F\$PARSE("$sd1","A.;",,,"SYNTAX_ONLY") - "A.;"
++        define record 'record_include'
++        statem_include = F\$PARSE("$sd2","A.;",,,"SYNTAX_ONLY") - "A.;"
++        define statem 'statem_include');
+       $unified_info{after}->{$x}
+           = qq(deassign statem
+         deassign record);
+@@ -80,7 +91,11 @@ PLATFORM={- $config{target} -}
+ OPTIONS={- $config{options} -}
+ CONFIGURE_ARGS=({- join(", ",quotify_l(@{$config{perlargv}})) -})
  SRCDIR={- $config{sourcedir} -}
- BUILDDIR={- $config{builddir} -}
- 
+-BUILDDIR={- $config{builddir} -}
++BLDDIR={- $config{builddir} -}
++
 +# Allow both V and VERBOSE to indicate verbosity.  This only applies
 +# to testing.
 +VERBOSE=$(V)
-+
+ 
  VERSION={- $config{version} -}
  MAJOR={- $config{major} -}
- MINOR={- $config{minor} -}
-@@ -109,6 +113,10 @@ DEPS={- our @deps = map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; }
+@@ -95,13 +110,13 @@ EXE_EXT=.EXE
+ LIB_EXT=.OLB
+ SHLIB_EXT=.EXE
+ OBJ_EXT=.OBJ
+-DEP_EXT=.MMS
++DEP_EXT=.D
+ 
+ LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @{$unified_info{libraries}}) -}
+-SHLIBS={- join(" ", map { $_."\$(SHLIB_EXT)" } map { $unified_info{sharednames}->{$_} || () } @{$unified_info{libraries}}) -}
++SHLIBS={- join(", ", map { "-\n\t".$_.".EXE" } @shlibs) -}
+ ENGINES={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{engines}}) -}
+-PROGRAMS={- join(", ", map { "-\n\t".$_.".EXE" } grep { !m|^\[\.test\]| } @{$unified_info{programs}}) -}
+-TESTPROGS={- join(", ", map { "-\n\t".$_.".EXE" } grep { m|^\[\.test\]| } @{$unified_info{programs}}) -}
++PROGRAMS={- join(", ", map { "-\n\t".$_.".EXE" } @programs) -}
++TESTPROGS={- join(", ", map { "-\n\t".$_.".EXE" } @testprogs) -}
+ SCRIPTS={- join(", ", map { "-\n\t".$_ } @{$unified_info{scripts}}) -}
+ {- output_off() if $disabled{makedepend}; "" -}
+ DEPS={- our @deps = map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; }
+@@ -109,6 +124,13 @@ DEPS={- our @deps = map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; }
                      keys %{$unified_info{sources}};
          join(", ", map { "-\n\t".$_ } @deps); -}
  {- output_on() if $disabled{makedepend}; "" -}
++GENERATED_MANDATORY={- join(", ", map { "-\n\t".$_ } @{$unified_info{depends}->{""}} ) -}
++GENERATED={- join(", ", map { "-\n\t".$_ } @generated) -}
++
 +{- output_off() if $disabled{apps}; "" -}
 +BIN_SCRIPTS=[.tools]c_rehash.pl
 +MISC_SCRIPTS=[.apps]CA.pl, [.apps]tsget.pl
@@ -1680,7 +1800,7 @@
  
  # DESTDIR is for package builders so that they can configure for, say,
  # SYS$COMMON:[OPENSSL] and yet have everything installed in STAGING:[USER].
-@@ -137,6 +145,9 @@ CFLAGS_Q=$(CFLAGS)
+@@ -137,6 +159,9 @@ CFLAGS_Q=$(CFLAGS)
  DEPFLAG= /DEFINE=({- join(",", @{$config{depdefines}}) -})
  LDFLAGS= {- $target{lflags} -}
  EX_LIBS= {- $target{ex_libs} ? ",".$target{ex_libs} : "" -}{- $config{ex_libs} ? ",".$config{ex_libs} : "" -}
@@ -1690,7 +1810,36 @@
  
  PERL={- $config{perl} -}
  
-@@ -231,6 +242,7 @@ test tests : configdata.pm, -
+@@ -210,20 +235,22 @@ NODEBUG=@
+ 
+ # The main targets ###################################################
+ 
+-all : configdata.pm, -
++all : build_generated, -
+       build_libs_nodep, build_engines_nodep, build_apps_nodep, -
+       depend
+ 
+-build_libs : configdata.pm, build_libs_nodep, depend
++build_libs : build_generated, build_libs_nodep, depend
+ build_libs_nodep : $(LIBS)
+-build_engines : configdata.pm, build_engines_nodep, depend
++build_engines : build_generated, build_engines_nodep, depend
+ build_engines_nodep : $(ENGINES)
+-build_apps : configdata.pm, build_apps_nodep, depend
++build_apps : build_generated, build_apps_nodep, depend
+ build_apps_nodep : $(PROGRAMS), $(SCRIPTS)
+-build_tests : configdata.pm, build_tests_nodep, depend
++build_tests : build_generated, build_tests_nodep, depend
+ build_tests_nodep : $(TESTPROGS)
+ 
+-test tests : configdata.pm, -
++build_generated : $(GENERATED_MANDATORY)
++
++test tests : build_generated, -
+              build_apps_nodep, build_engines_nodep, build_tests_nodep, -
+              depend
+         @ ! {- output_off() if $disabled{tests}; "" -}
+@@ -231,6 +258,7 @@ test tests : configdata.pm, -
          DEFINE SRCTOP {- sourcedir() -}
          DEFINE BLDTOP {- builddir() -}
          DEFINE OPENSSL_ENGINES {- builddir("engines") -}
@@ -1698,7 +1847,103 @@
          $(PERL) {- sourcefile("test", "run_tests.pl") -} $(TESTS)
          DEASSIGN OPENSSL_ENGINES
          DEASSIGN BLDTOP
-@@ -339,8 +351,7 @@ install_runtime : check_INSTALLTOP
+@@ -241,18 +269,15 @@ test tests : configdata.pm, -
+         @ ! {- output_on() if !$disabled{tests}; "" -}
+ 
+ list-tests :
+-        @ TOP=$(SRCDIR) PERL=$(PERL) $(PERL) {- catfile($config{sourcedir},"test", "run_tests.pl") -} list
+-
+-# Because VMS wants the generation number (or *) to delete files, we can't
+-# use $(LIBS), $(PROGRAMS) and $(TESTPROGS) directly.
+-libclean :
+-        - DELETE []OSSL$LIB*.OLB;*,OSSL$LIB*.LIS;*
+-        - DELETE [.crypto...]*.OBJ;*,*.LIS;*
+-        - DELETE [.ssl...]*.OBJ;*,*.LIS;*
+-        - DELETE [.engines...]*.OBJ;*,*.LIS;*
+-        - DELETE []CXX$DEMANGLER_DB.;*
++        @ ! {- output_off() if $disabled{tests}; "" -}
++        @ DEFINE SRCTOP {- sourcedir() -}
++        @ $(PERL) {- sourcefile("test", "run_tests.pl") -} list
++        @ DEASSIGN SRCTOP
++        @ ! {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
++        @ WRITE SYS$OUTPUT "Tests are not supported with your chosen Configure options"
++        @ ! {- output_on() if !$disabled{tests}; "" -}
+ 
+-install : install_sw install_docs
++install : install_sw install_ssldirs install_docs
+         @ WRITE SYS$OUTPUT ""
+         @ WRITE SYS$OUTPUT "######################################################################"
+         @ WRITE SYS$OUTPUT ""
+@@ -279,15 +304,29 @@ install : install_sw install_docs
+ 
+ uninstall : uninstall_docs uninstall_sw
+ 
++# Because VMS wants the generation number (or *) to delete files, we can't
++# use $(LIBS), $(PROGRAMS), $(GENERATED), $(ENGINES) and $(TESTPROGS) directly.
++libclean :
++        {- join("\n\t", map { "- DELETE $_.OLB;*" } @{$unified_info{libraries}}) || "@ !" -}
++        {- join("\n\t", map { "- DELETE $_.EXE;*,$_.MAP;*,$_.OPT;*" } @shlibs) || "@ !" -}
++
+ clean : libclean
+-        - DELETE []OSSL$LIB*.EXE;*,OSSL$LIB*.MAP;*,OSSL$LIB*.OPT;*
+-        - DELETE [.engines...]LIB*.EXE;*,LIB*.MAP;*,LIB*.OPT;*
+-        - DELETE [.apps]*.EXE;*,*.MAP;*,*.OPT;*
+-        - DELETE [.apps]*.OBJ;*,*.LIS;*
+-        - DELETE [.test]*.EXE;*,*.MAP;*,*.OPT;*
+-        - DELETE [.test]*.OBJ;*,*.LIS;*
+-        - DELETE [.test]*.LOG;*
+-        - DELETE []*.MAP;*
++        {- join("\n\t", map { "- DELETE $_.EXE;*,$_.OPT;*" } @programs) || "@ !" -}
++        {- join("\n\t", map { "- DELETE $_.EXE;*,$_.OPT;*" } @testprogs) || "@ !" -}
++        {- join("\n\t", map { "- DELETE $_.EXE;*,$_.OPT;*" } @{$unified_info{engines}}) || "@ !" -}
++        {- join("\n\t", map { "- DELETE $_;*" } @{$unified_info{scripts}}) || "@ !" -}
++        {- join("\n\t", map { "- DELETE $_;*" } @generated) || "@ !" -}
++        - DELETE [...]*.MAP;*
++        - DELETE [...]*.D;*
++        - DELETE [...]*.OBJ;*,*.LIS;*
++        - DELETE []CXX$DEMANGLER_DB.;*
++        - DELETE [.VMS]openssl_startup.com;*
++        - DELETE [.VMS]openssl_shutdown.com;*
++        - DELETE []vmsconfig.pm;*
++
++distclean : clean
++        - DELETE configdata.pm;*
++        - DELETE descrip.mms;*
+ 
+ depend : descrip.mms
+ descrip.mms : FORCE
+@@ -306,13 +345,26 @@ descrip.mms : FORCE
+ 
+ # Install helper targets #############################################
+ 
+-install_sw : all install_dev install_engines install_runtime install_config
++install_sw : all install_dev install_engines install_runtime install_startup
+ 
+-uninstall_sw : uninstall_dev uninstall_engines uninstall_runtime uninstall_config
++uninstall_sw : uninstall_dev uninstall_engines uninstall_runtime uninstall_startup
+ 
+-install_docs : install_man_docs install_html_docs
++install_docs : install_html_docs
+ 
+-uninstall_docs : uninstall_man_docs uninstall_html_docs
++uninstall_docs : uninstall_html_docs
++
++install_ssldirs : check_INSTALLTOP
++        - CREATE/DIR/PROT=(S:RWED,O:RWE,G:RE,W:RE) OSSL_DATAROOT:[000000]
++        IF F$SEARCH("OSSL_DATAROOT:[000000]CERTS.DIR;1") .EQS. "" THEN -
++                CREATE/DIR/PROT=(S:RWED,O:RWE,G:RE,W:RE) OSSL_DATAROOT:[CERTS]
++        IF F$SEARCH("OSSL_DATAROOT:[000000]PRIVATE.DIR;1") .EQS. "" THEN -
++                CREATE/DIR/PROT=(S:RWED,O:RWE,G,W) OSSL_DATAROOT:[PRIVATE]
++        IF F$SEARCH("OSSL_DATAROOT:[000000]MISC.DIR;1") .EQS. "" THEN -
++                CREATE/DIR/PROT=(S:RWED,O:RWE,G,W) OSSL_DATAROOT:[MISC]
++        COPY/PROT=W:RE $(MISC_SCRIPTS) OSSL_DATAROOT:[MISC]
++        @ ! Install configuration file
++        COPY/PROT=W:RE {- sourcefile("apps", "openssl-vms.cnf") -} -
++                ossl_dataroot:[000000]openssl.cnf
+ 
+ install_dev : check_INSTALLTOP
+         @ WRITE SYS$OUTPUT "*** Installing development files"
+@@ -339,13 +391,8 @@ install_runtime : check_INSTALLTOP
          COPY/PROT=W:RE [.APPS]openssl.EXE ossl_installroot:[EXE.'arch']
          @ ! Install scripts
          - CREATE/DIR ossl_installroot:[EXE]
@@ -1706,22 +1951,34 @@
 -        COPY/PROT=W:RE [.TOOLS]c_rehash. ossl_installroot:[EXE]c_rehash.pl
 +        COPY/PROT=W:RE $(BIN_SCRIPTS) ossl_installroot:[EXE]
          @ ! {- output_on() if $disabled{apps}; "" -}
-         @ ! Install configuration file
-         - CREATE/DIR ossl_dataroot:[000000]
-@@ -362,6 +373,8 @@ install_config : [.VMS]openssl_startup.com [.VMS]openssl_shutdown.com -
-                 CREATE/DIR/PROT=(S:RWED,O:RWE,G:RE,W:RE) OSSL_DATAROOT:[CERTS]
-         IF F$SEARCH("OSSL_DATAROOT:[000000]PRIVATE.DIR;1") .EQS. "" THEN -
-                 CREATE/DIR/PROT=(S:RWED,O:RWE,G,W) OSSL_DATAROOT:[PRIVATE]
-+        IF F$SEARCH("OSSL_DATAROOT:[000000]MISC.DIR;1") .EQS. "" THEN -
-+                CREATE/DIR/PROT=(S:RWED,O:RWE,G,W) OSSL_DATAROOT:[MISC]
+-        @ ! Install configuration file
+-        - CREATE/DIR ossl_dataroot:[000000]
+-        COPY/PROT=W:RE {- sourcefile("apps", "openssl-vms.cnf") -} -
+-                ossl_dataroot:[000000]openssl.cnf
+ 
+ install_engines : check_INSTALLTOP
+         @ {- output_off() unless scalar @{$unified_info{engines}}; "" -} !
+@@ -356,27 +403,26 @@ install_engines : check_INSTALLTOP
+                 grep(!m|ossltest$|i, @{$unified_info{engines}})) -}
+         @ {- output_on() unless scalar @{$unified_info{engines}}; "" -} !
+ 
+-install_config : [.VMS]openssl_startup.com [.VMS]openssl_shutdown.com -
++install_startup : [.VMS]openssl_startup.com [.VMS]openssl_shutdown.com -
+                  check_INSTALLTOP
+-        IF F$SEARCH("OSSL_DATAROOT:[000000]CERTS.DIR;1") .EQS. "" THEN -
+-                CREATE/DIR/PROT=(S:RWED,O:RWE,G:RE,W:RE) OSSL_DATAROOT:[CERTS]
+-        IF F$SEARCH("OSSL_DATAROOT:[000000]PRIVATE.DIR;1") .EQS. "" THEN -
+-                CREATE/DIR/PROT=(S:RWED,O:RWE,G,W) OSSL_DATAROOT:[PRIVATE]
          - CREATE/DIR ossl_installroot:[SYS$STARTUP]
          COPY/PROT=W:RE -
++                [.VMS]openssl_startup.com,openssl_startup.com -
++                ossl_installroot:[SYS$STARTUP]
++        COPY/PROT=W:RE -
                  [.VMS]openssl_startup.com,openssl_shutdown.com -
-@@ -369,14 +382,15 @@ install_config : [.VMS]openssl_startup.com [.VMS]openssl_shutdown.com -
+                 ossl_installroot:[SYS$STARTUP]
          COPY/PROT=W:RE -
                  {- sourcefile("VMS", "openssl_utils.com") -} -
                  ossl_installroot:[SYS$STARTUP]
-+        COPY/PROT=W:RE $(MISC_SCRIPTS) OSSL_DATAROOT:[MISC]
  
 -[.VMS]openssl_startup.com : vmsconfig.pm
 +[.VMS]openssl_startup.com : vmsconfig.pm {- sourcefile("VMS", "openssl_startup.com.in") -}
@@ -1735,7 +1992,7 @@
          - CREATE/DIR [.VMS]
          $(PERL) "-I." "-Mvmsconfig" {- sourcefile("util", "dofile.pl") -} -
                  {- sourcefile("VMS", "openssl_shutdown.com.in") -} -
-@@ -397,7 +411,10 @@ vmsconfig.pm : configdata.pm
+@@ -397,7 +443,10 @@ vmsconfig.pm : configdata.pm
          WRITE CONFIG "  OPENSSLDIR => '$(OPENSSLDIR)',"
          WRITE CONFIG "  pointersize => '","{- $target{pointersize} -}","',"
          WRITE CONFIG "  shared_libs => ["
@@ -1747,7 +2004,7 @@
          WRITE CONFIG "  ],"
          WRITE CONFIG ");"
          WRITE CONFIG "our %target = ();"
-@@ -407,6 +424,10 @@ vmsconfig.pm : configdata.pm
+@@ -407,6 +456,10 @@ vmsconfig.pm : configdata.pm
          WRITE CONFIG "1;"
          CLOSE CONFIG
  
@@ -1758,7 +2015,7 @@
  check_INSTALLTOP :
          @ IF "$(INSTALLTOP)" .EQS. "" THEN -
                  WRITE SYS$ERROR "INSTALLTOP should not be empty"
-@@ -418,9 +439,7 @@ vmsconfig.pm : configdata.pm
+@@ -418,9 +471,7 @@ check_INSTALLTOP :
  # Developer targets ##################################################
  
  debug_logicals :
@@ -1769,7 +2026,7 @@
  
  # Building targets ###################################################
  
-@@ -441,12 +460,13 @@ configdata.pm : {- join(" ", sourcefile("Configurations", "descrip.mms.tmpl"), s
+@@ -441,13 +492,25 @@ configdata.pm : {- join(" ", sourcefile("Configurations", "descrip.mms.tmpl"), s
    sub generatesrc {
        my %args = @_;
        my $generator = join(" ", @{$args{generator}});
@@ -1778,14 +2035,27 @@
 +      my $deps = join(", -\n\t\t", @{$args{generator_deps}}, @{$args{deps}});
  
        if ($args{src} !~ /\.[sS]$/) {
-           return <<"EOF";
+-          return <<"EOF";
++          if ($args{generator}->[0] =~ m|^.*\.in$|) {
++	      my $dofile = abs2rel(rel2abs(catfile($config{sourcedir},
++                                                   "util", "dofile.pl")),
++                                   rel2abs($config{builddir}));
++              return <<"EOF";
++$args{src} : $args{generator}->[0] $deps
++	\$(PERL) "-I\$(BLDDIR)" "-Mconfigdata" $dofile \\
++	    "-o$target{build_file}" $generator > \$@
++EOF
++	  } else {
++              return <<"EOF";
  $args{src} : $args{generator}->[0] $deps
 -	\$(PERL) $generator > \$@
 +	\$(PERL)$generator_incs $generator > \$@
  EOF
++	  }
        } else {
            die "No method to generate assembler source present.\n";
-@@ -471,6 +491,9 @@ EOF
+       }
+@@ -471,6 +534,9 @@ EOF
        my $srcs =
            join(", ",
                 map { abs2rel(rel2abs($_), rel2abs($forward)) } @{$args{srcs}});
@@ -1795,7 +2065,15 @@
        my $incs_on = "\@ !";
        my $incs_off = "\@ !";
        my $incs = "";
-@@ -501,7 +524,7 @@ $obj.OBJ : $deps
+@@ -494,20 +560,20 @@ EOF
+       my $before = $unified_info{before}->{$obj.".OBJ"} || "\@ !";
+       my $after = $unified_info{after}->{$obj.".OBJ"} || "\@ !";
+       my $depbuild = $disabled{makedepend} ? ""
+-          : " /MMS=(FILE=${objd}${objn}.tmp-MMS,TARGET=$obj.OBJ)";
++          : " /MMS=(FILE=${objd}${objn}.tmp-D,TARGET=$obj.OBJ)";
+ 
+       return <<"EOF";
+ $obj.OBJ : $deps
          ${before}
          SET DEFAULT $forward
          $incs_on
@@ -1804,15 +2082,64 @@
          $incs_off
          SET DEFAULT $backward
          ${after}
+-        \@ PIPE ( \$(PERL) -e "use File::Compare qw/compare_text/; my \$x = compare_text(""$obj.MMS"",""$obj.tmp-MMS""); exit(0x10000000 + (\$x == 0));" || -
+-                 RENAME $obj.tmp-MMS $obj.mms )
+-        \@ IF F\$SEARCH("$obj.tmp-MMS") .NES. "" THEN DELETE $obj.tmp-MMS;*
++        \@ PIPE ( \$(PERL) -e "use File::Compare qw/compare_text/; my \$x = compare_text(""$obj.D"",""$obj.tmp-D""); exit(0x10000000 + (\$x == 0));" || -
++                 RENAME $obj.tmp-D $obj.d )
++        \@ IF F\$SEARCH("$obj.tmp-D") .NES. "" THEN DELETE $obj.tmp-D;*
+         - PURGE $obj.OBJ
+ EOF
+   }
+@@ -545,22 +611,18 @@ EOF
+           || "\@ !";
+       return <<"EOF";
+ $shlib.EXE : $lib.OLB $deps $ordinalsfile
+-        IF "$mkdef_key" .EQS. "ssl" .OR. "$mkdef_key" .EQS. "crypto" THEN -
+-           \$(PERL) $mkdef_pl "$mkdef_key" "VMS" > $shlib.SYMVEC-tmp
+-        IF "$mkdef_key" .EQS. "ssl" .OR. "$mkdef_key" .EQS. "crypto" THEN -
+-           \$(PERL) $translatesyms_pl \$(BUILDDIR)CXX\$DEMANGLER_DB. < $shlib.SYMVEC-tmp > $shlib.SYMVEC
++        \$(PERL) $mkdef_pl "$mkdef_key" "VMS" > $shlib.SYMVEC-tmp
++        \$(PERL) $translatesyms_pl \$(BLDDIR)CXX\$DEMANGLER_DB. < $shlib.SYMVEC-tmp > $shlib.SYMVEC
++        DELETE $shlib.SYMVEC-tmp;*
+         OPEN/WRITE/SHARE=READ OPT_FILE $shlib.OPT
+         WRITE OPT_FILE "IDENTIFICATION=""V$config{version}"""
+-        IF "$mkdef_key" .NES. "ssl" .AND. "$mkdef_key" .NES. "crypto" THEN -
+-           TYPE $engine_opt /OUTPUT=OPT_FILE:
+-        IF "$mkdef_key" .EQS. "ssl" .OR. "$mkdef_key" .EQS. "crypto" THEN -
+-           TYPE $shlib.SYMVEC /OUTPUT=OPT_FILE:
++        TYPE $shlib.SYMVEC /OUTPUT=OPT_FILE:
+         WRITE OPT_FILE "$lib.OLB/LIBRARY"
+-        $write_opt ! Comment to protect from empty line
++        $write_opt
+         CLOSE OPT_FILE
+         LINK /MAP=$shlib.MAP /FULL/SHARE=$shlib.EXE $shlib.OPT/OPT \$(EX_LIBS)
+-        - DELETE $shlib.SYMVEC;*
+-        - PURGE $shlib.EXE,$shlib.OPT,$shlib.MAP
++        DELETE $shlib.SYMVEC;*
++        PURGE $shlib.EXE,$shlib.OPT,$shlib.MAP
+ EOF
+   }
+   sub obj2dso {
+@@ -656,7 +718,7 @@ EOF
+                            rel2abs($config{builddir}));
+       return <<"EOF";
+ $script : $sources
+-        \$(PERL) "-I\$(BUILDDIR)" "-Mconfigdata" $dofile -
++        \$(PERL) "-I\$(BLDDIR)" "-Mconfigdata" $dofile -
+ 	    "-o$target{build_file}" $sources > $script
+         SET FILE/PROT=(S:RWED,O:RWED,G:RE,W:RE) $script
+         PURGE $script
 diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
-index ed64e654fdcf..c595fd84e5ce 100644
+index ed64e65..34971a9 100644
 --- a/Configurations/unix-Makefile.tmpl
 +++ b/Configurations/unix-Makefile.tmpl
-@@ -84,13 +84,16 @@ DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|$depext|; $x; }
+@@ -84,13 +84,17 @@ DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|$depext|; $x; }
                    grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
                    keys %{$unified_info{sources}}); -}
  {- output_on() if $disabled{makedepend}; "" -}
 -GENERATED={- join(" ", map { (my $x = $_) =~ s|\.S$|\.s|; $x } keys %{$unified_info{generate}}) -}
++GENERATED_MANDATORY={- join(" ", @{$unified_info{depends}->{""}} ) -}
 +GENERATED={- join(" ",
 +                  ( map { (my $x = $_) =~ s|\.S$|\.s|; $x }
 +                    grep { defined $unified_info{generate}->{$_} }
@@ -1829,7 +2156,7 @@
  {- output_on() if $disabled{apps}; "" -}
  
  SHLIB_INFO={- join(" ", map { "\"".shlib($_).";".shlib_simple($_)."\"" } @{$unified_info{libraries}}) -}
-@@ -169,10 +172,9 @@ LIB_LDFLAGS={- $target{shared_ldflag}." ".$config{shared_ldflag}
+@@ -169,10 +173,9 @@ LIB_LDFLAGS={- $target{shared_ldflag}." ".$config{shared_ldflag}
                 # $prefix is not /usr.
                 . ($config{target} =~ m|^BSD-| && $prefix !~ m|^/usr/.*$|
                    ? " -Wl,-rpath,\$\$(LIBRPATH)" : "") -}
@@ -1841,7 +2168,7 @@
  
  PERL={- $config{perl} -}
  
-@@ -180,6 +182,8 @@ ARFLAGS= {- $target{arflags} -}
+@@ -180,6 +183,8 @@ ARFLAGS= {- $target{arflags} -}
  AR=$(CROSS_COMPILE){- $target{ar} || "ar" -} $(ARFLAGS) r
  RANLIB= {- $target{ranlib} -}
  NM= $(CROSS_COMPILE){- $target{nm} || "nm" -}
@@ -1850,14 +2177,35 @@
  RM= rm -f
  RMDIR= rmdir
  TAR= {- $target{tar} || "tar" -}
-@@ -217,12 +221,14 @@ build_apps_nodep: $(PROGRAMS) $(SCRIPTS)
- build_tests: configdata.pm build_tests_nodep depend
+@@ -205,24 +210,30 @@ PROCESSOR= {- $config{processor} -}
+ 
+ # The main targets ###################################################
+ 
+-all: configdata.pm build_libs_nodep build_engines_nodep build_apps_nodep \
++all: build_generated \
++     build_libs_nodep build_engines_nodep build_apps_nodep \
+      depend link-utils
+ 
+-build_libs: configdata.pm build_libs_nodep depend
++build_libs: build_generated build_libs_nodep depend
+ build_libs_nodep: libcrypto.pc libssl.pc openssl.pc
+-build_engines: configdata.pm build_engines_nodep depend
++build_engines: build_generated build_engines_nodep depend
+ build_engines_nodep: $(ENGINES)
+-build_apps: configdata.pm build_apps_nodep depend
++build_apps: build_generated build_apps_nodep depend
+ build_apps_nodep: $(PROGRAMS) $(SCRIPTS)
+-build_tests: configdata.pm build_tests_nodep depend
++build_tests: build_generated build_tests_nodep depend
  build_tests_nodep: $(TESTPROGS)
  
 -test tests: build_tests_nodep build_apps_nodep build_engines_nodep \
 -            depend link-utils
++build_generated: $(GENERATED_MANDATORY)
++
 +test: tests
-+tests: build_tests_nodep build_apps_nodep build_engines_nodep \
++tests: build_generated \
++       build_tests_nodep build_apps_nodep build_engines_nodep \
 +       depend link-utils
  	@ : {- output_off() if $disabled{tests}; "" -}
  	( cd test; \
@@ -1867,25 +2215,101 @@
  	  EXE_EXT={- $exeext -} \
  	  OPENSSL_ENGINES=../$(BLDDIR)/engines \
  	    $(PERL) ../$(SRCDIR)/test/run_tests.pl $(TESTS) )
-@@ -231,7 +237,7 @@ test tests: build_tests_nodep build_apps_nodep build_engines_nodep \
+@@ -231,7 +242,16 @@ test tests: build_tests_nodep build_apps_nodep build_engines_nodep \
  	@ : {- output_on() if !$disabled{tests}; "" -}
  
  list-tests:
 -	@TOP=$(SRCDIR) PERL=$(PERL) $(PERL) $(SRCDIR)/test/run_tests.pl list
-+	@TOP="$(SRCDIR)" PERL="$(PERL)" $(PERL) $(SRCDIR)/test/run_tests.pl list
++	@ : {- output_off() if $disabled{tests}; "" -}
++	@SRCTOP="$(SRCDIR)" \
++	 $(PERL) $(SRCDIR)/test/run_tests.pl list
++	@ : {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
++	@echo "Tests are not supported with your chosen Configure options"
++	@ : {- output_on() if !$disabled{tests}; "" -}
++
++install: install_sw install_ssldirs install_docs
++
++uninstall: uninstall_docs uninstall_sw
  
  libclean:
  	@set -e; for s in $(SHLIB_INFO); do \
-@@ -258,7 +264,7 @@ clean: libclean
- 	rm -f core
- 	rm -f tags TAGS
- 	rm -f openssl.pc libcrypto.pc libssl.pc
+@@ -245,21 +265,22 @@ libclean:
+ 		fi; \
+ 	done
+ 	$(RM) $(LIBS)
+-
+-install: install_sw install_ssldirs install_docs
+-
+-uninstall: uninstall_docs uninstall_sw
++	$(RM) *.map
+ 
+ clean: libclean
+-	rm -f $(PROGRAMS) $(TESTPROGS) $(ENGINES) $(SCRIPTS)
+-	rm -f $(GENERATED)
+-	-rm -f `find . -name '*{- $depext -}'`
+-	-rm -f `find . -name '*{- $objext -}'`
+-	rm -f core
+-	rm -f tags TAGS
+-	rm -f openssl.pc libcrypto.pc libssl.pc
 -	-rm -f `find . -type l`
-+	-rm -f `find . -type l -a \! -path "./.git/*"`
- 	rm -f $(TARFILE)
+-	rm -f $(TARFILE)
++	$(RM) $(PROGRAMS) $(TESTPROGS) $(ENGINES) $(SCRIPTS)
++	$(RM) $(GENERATED)
++	-$(RM) `find . -name '*{- $depext -}' -a \! -path "./.git/*"`
++	-$(RM) `find . -name '*{- $objext -}' -a \! -path "./.git/*"`
++	$(RM) core
++	$(RM) tags TAGS
++	$(RM) openssl.pc libcrypto.pc libssl.pc
++	-$(RM) `find . -type l -a \! -path "./.git/*"`
++	$(RM) $(TARFILE)
++
++distclean: clean
++	$(RM) configdata.pm
++	$(RM) Makefile
  
  # This exists solely for those who still type 'make depend'
-@@ -526,6 +532,7 @@ PROCESS_PODS=\
+ #
+@@ -296,6 +317,19 @@ uninstall_docs: uninstall_man_docs uninstall_html_docs
+ install_ssldirs:
+ 	@$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/certs
+ 	@$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/private
++	@set -e; for x in dummy $(MISC_SCRIPTS); do \
++		if [ "$$x" = "dummy" ]; then continue; fi; \
++		fn=`basename $$x`; \
++		echo "install $$x -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
++		cp $$x $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \
++		chmod 755 $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \
++		mv -f $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new \
++		      $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \
++	done
++	@echo "install $(SRCDIR)/apps/openssl.cnf -> $(DESTDIR)$(OPENSSLDIR)/openssl.cnf"
++	@cp $(SRCDIR)/apps/openssl.cnf $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new
++	@chmod 644 $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new
++	@mv -f  $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new $(DESTDIR)$(OPENSSLDIR)/openssl.cnf
+ 
+ install_dev:
+ 	@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
+@@ -458,19 +492,6 @@ install_runtime:
+ 		mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \
+ 		      $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
+ 	done
+-	@set -e; for x in dummy $(MISC_SCRIPTS); do \
+-		if [ "$$x" = "dummy" ]; then continue; fi; \
+-		fn=`basename $$x`; \
+-		echo "install $$x -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
+-		cp $$x $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \
+-		chmod 755 $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \
+-		mv -f $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new \
+-		      $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \
+-	done
+-	@echo "install $(SRCDIR)/apps/openssl.cnf -> $(DESTDIR)$(OPENSSLDIR)/openssl.cnf"
+-	@cp $(SRCDIR)/apps/openssl.cnf $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new
+-	@chmod 644 $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new
+-	@mv -f  $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new $(DESTDIR)$(OPENSSLDIR)/openssl.cnf
+ 
+ uninstall_runtime:
+ 	@echo "*** Uninstalling runtime files"
+@@ -526,6 +547,7 @@ PROCESS_PODS=\
  		SEC=`sed -ne 's/^=for  *comment  *openssl_manual_section: *\([0-9]\) *$$/\1/p' $$p`; \
  		[ -z "$$SEC" ] && SEC=$$defsec; \
  		fn=`basename $$p .pod`; \
@@ -1893,7 +2317,7 @@
  		NAME=`echo $$fn | tr [a-z] [A-Z]`; \
  		suf=`eval "echo $$OUTSUFFIX"`; \
  		top=`eval "echo $$OUTTOP"`; \
-@@ -605,7 +612,7 @@ UNINSTALL_DOCS=\
+@@ -605,7 +627,7 @@ install_html_docs:
  	OUTSUFFIX='.$(HTMLSUFFIX)'; \
  	OUTTOP="$(DESTDIR)$(HTMLDIR)"; \
  	GENERATE="pod2html --podroot=$(SRCDIR)/doc --htmldir=.. \
@@ -1902,7 +2326,7 @@
  		  | sed -e 's|href=\"http://man.he.net/man|href=\"../man|g'"; \
  	$(PROCESS_PODS)
  
-@@ -621,7 +628,8 @@ UNINSTALL_DOCS=\
+@@ -621,16 +643,13 @@ uninstall_html_docs:
  
  update: generate errors ordinals
  
@@ -1912,7 +2336,16 @@
  
  # Test coverage is a good idea for the future
  #coverage: $(PROGRAMS) $(TESTPROGRAMS)
-@@ -652,18 +660,26 @@ generate: generate_apps generate_crypto_bn generate_crypto_objects
+ #	...
+ 
+-# Currently disabled, util/selftest.pl needs a rewrite
+-#report:
+-#	SRCDIR=$(SRCDIR) @$(PERL) util/selftest.pl
+-
+ lint:
+ 	lint -DLINT $(INCLUDES) $(SRCS)
+ 
+@@ -652,18 +671,26 @@ generate_crypto_bn:
  	( cd $(SRCDIR); $(PERL) crypto/bn/bn_prime.pl > crypto/bn/bn_prime.h )
  
  generate_crypto_objects:
@@ -1942,7 +2375,7 @@
  errors:
  	( cd $(SRCDIR); $(PERL) util/ck_errf.pl -strict */*.c */*/*.c )
  	( cd $(SRCDIR); $(PERL) util/mkerr.pl -recurse -write )
-@@ -690,7 +706,7 @@ tags TAGS: FORCE
+@@ -690,7 +717,7 @@ tags TAGS: FORCE
  
  # Release targets (note: only available on Unix) #####################
  
@@ -1951,7 +2384,7 @@
  PREPARE_CMD=:
  tar:
  	TMPDIR=/var/tmp/openssl-copy.$$$$; \
-@@ -698,6 +714,7 @@ TAR_COMMAND=$(TAR) $(TARFLAGS) --owner 0 --group 0 -cvf -
+@@ -698,6 +725,7 @@ tar:
  	mkdir -p $$TMPDIR/$$DISTDIR; \
  	(cd $(SRCDIR); \
  	 git ls-tree -r --name-only --full-tree HEAD \
@@ -1959,7 +2392,20 @@
  	 | while read F; do \
  	       mkdir -p $$TMPDIR/$$DISTDIR/`dirname $$F`; \
  	       cp $$F $$TMPDIR/$$DISTDIR/$$F; \
-@@ -807,19 +824,20 @@ configdata.pm: $(SRCDIR)/Configurations/unix-Makefile.tmpl $(SRCDIR)/Configurati
+@@ -772,11 +800,7 @@ openssl.pc:
+ 	    echo 'Version: '$(VERSION); \
+ 	    echo 'Requires: libssl libcrypto' ) > openssl.pc
+ 
+-# Note on the use of $(MFLAGS): this was an older variant of MAKEFLAGS which
+-# wasn't passed down automatically.  It's quite safe to use it like we do
+-# below; if it doesn't exist, the result will be empty and 'make' will pick
+-# up $(MAKEFLAGS) which is passed down as an environment variable.
+-configdata.pm: $(SRCDIR)/Configurations/unix-Makefile.tmpl $(SRCDIR)/Configurations/common.tmpl $(SRCDIR)/Configure $(SRCDIR)/config {- join(" ", @{$config{build_infos}}) -}
++configdata.pm: {- $config{build_file_template} -} $(SRCDIR)/Configurations/common.tmpl $(SRCDIR)/Configure $(SRCDIR)/config {- join(" ", @{$config{build_infos}}) -}
+ 	@echo "Detected changed: $?"
+ 	@echo "Reconfiguring..."
+ 	$(SRCDIR)/Configure reconf
+@@ -807,19 +831,31 @@ configdata.pm: $(SRCDIR)/Configurations/unix-Makefile.tmpl $(SRCDIR)/Configurati
    sub generatesrc {
        my %args = @_;
        my $generator = join(" ", @{$args{generator}});
@@ -1969,11 +2415,23 @@
 +      my $deps = join(" ", @{$args{generator_deps}}, @{$args{deps}});
  
        if ($args{src} !~ /\.[sS]$/) {
-           return <<"EOF";
+-          return <<"EOF";
++          if ($args{generator}->[0] =~ m|^.*\.in$|) {
++              my $dofile = abs2rel(rel2abs(catfile($config{sourcedir},
++                                                   "util", "dofile.pl")),
++                                   rel2abs($config{builddir}));
++              return <<"EOF";
++$args{src}: $args{generator}->[0] $deps
++	\$(PERL) "-I\$(BLDDIR)" -Mconfigdata "$dofile" \\
++	    "-o$target{build_file}" $generator > \$@
++EOF
++	  } else {
++              return <<"EOF";
  $args{src}: $args{generator}->[0] $deps
 -	\$(PERL) $generator > \$@
 +	\$(PERL)$generator_incs $generator > \$@
  EOF
++	  }
        } else {
            if ($args{generator}->[0] =~ /\.pl$/) {
 -              $generator = 'CC="$(CC)" $(PERL) '.$generator;
@@ -1984,7 +2442,7 @@
            } elsif ($args{generator}->[0] =~ /\.S$/) {
                $generator = undef;
            } else {
-@@ -835,7 +853,9 @@ EOF
+@@ -835,7 +871,9 @@ EOF
  $target: $args{generator}->[0] $deps
  	( trap "rm -f \$@.*" INT 0; \\
  	  $generator \$@.S; \\
@@ -1995,7 +2453,7 @@
  EOF
                }
                # Otherwise....
-@@ -846,7 +866,8 @@ EOF
+@@ -846,7 +884,8 @@ EOF
            }
            return <<"EOF";
  $args{src}: $args{generator}->[0] $deps
@@ -2005,7 +2463,7 @@
  EOF
        }
    }
-@@ -939,15 +960,15 @@ EOF
+@@ -939,15 +978,15 @@ EOF
  $target: $lib$libext $deps $ordinalsfile
  	\$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\
  		PLATFORM=\$(PLATFORM) \\
@@ -2024,7 +2482,7 @@
  		link_shlib.$shlib_target
  EOF
  	  . (windowsdll() ? <<"EOF" : "");
-@@ -975,7 +996,7 @@ EOF
+@@ -975,7 +1014,7 @@ EOF
  $target: $objs $deps
  	\$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\
  		PLATFORM=\$(PLATFORM) \\
@@ -2033,7 +2491,7 @@
  		LIBDEPS='\$(PLIB_LDFLAGS) '"$shlibdeps"' \$(EX_LIBS)' \\
  		LIBNAME=$libname LDFLAGS='\$(LDFLAGS)' \\
  		CC='\$(CC)' CFLAGS='\$(CFLAGS) \$(DSO_CFLAGS)' \\
-@@ -1012,7 +1033,7 @@ EOF
+@@ -1012,7 +1051,7 @@ EOF
  $bin$exeext: $objs $deps
  	\$(RM) $bin$exeext
  	\$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\
@@ -2042,7 +2500,7 @@
  		APPNAME=$bin$exeext OBJECTS="$objs" \\
  		LIBDEPS='\$(PLIB_LDFLAGS) '"$linklibs"' \$(EX_LIBS)' \\
  		CC='\$(CC)' CFLAGS='\$(CFLAGS) \$(BIN_CFLAGS)' \\
-@@ -1034,5 +1055,40 @@ $script: $sources
+@@ -1034,5 +1073,40 @@ $script: $sources
  	chmod a+x $script
  EOF
    }
@@ -2084,7 +2542,7 @@
    ""    # Important!  This becomes part of the template result.
  -}
 diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl
-index 0c043a098efb..081e20b3f301 100644
+index 0c043a0..0d21c50 100644
 --- a/Configurations/windows-makefile.tmpl
 +++ b/Configurations/windows-makefile.tmpl
 @@ -19,10 +19,14 @@
@@ -2104,7 +2562,7 @@
  
   sub shlib {
       return () if $disabled{shared};
-@@ -56,16 +60,29 @@ SHLIB_VERSION_NUMBER={- $config{shlib_version_number} -}
+@@ -56,16 +60,30 @@ SHLIB_VERSION_NUMBER={- $config{shlib_version_number} -}
  
  LIBS={- join(" ", map { $_.$libext } @{$unified_info{libraries}}) -}
  SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{libraries}}) -}
@@ -2125,6 +2583,7 @@
                    grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
                    keys %{$unified_info{sources}}); -}
  {- output_on() if $disabled{makedepend}; "" -}
++GENERATED_MANDATORY={- join(" ", @{$unified_info{depends}->{""}} ) -}
 +GENERATED={- join(" ",
 +                  ( map { (my $x = $_) =~ s|\.[sS]$|\.asm|; $x }
 +                    grep { defined $unified_info{generate}->{$_} }
@@ -2134,13 +2593,33 @@
  
  # Do not edit these manually. Use Configure with --prefix or --openssldir
  # to change this!  Short explanation in the top comment in Configure
-@@ -138,12 +155,13 @@ build_apps_nodep: $(PROGRAMS) $(SCRIPTS)
- build_tests: configdata.pm build_tests_nodep depend
+@@ -127,50 +145,68 @@ PROCESSOR= {- $config{processor} -}
+ 
+ # The main targets ###################################################
+ 
+-all: configdata.pm build_libs_nodep build_engines_nodep build_apps_nodep depend
++all: build_generated \
++     build_libs_nodep build_engines_nodep build_apps_nodep depend
+ 
+-build_libs: configdata.pm build_libs_nodep depend
++build_libs: build_generated build_libs_nodep depend
+ build_libs_nodep: $(LIBS)
+-build_engines: configdata.pm build_engines_nodep depend
++build_engines: build_generated build_engines_nodep depend
+ build_engines_nodep: $(ENGINES)
+-build_apps: configdata.pm build_apps_nodep depend
++build_apps: build_generated build_apps_nodep depend
+ build_apps_nodep: $(PROGRAMS) $(SCRIPTS)
+-build_tests: configdata.pm build_tests_nodep depend
++build_tests: build_generated build_tests_nodep depend
  build_tests_nodep: $(TESTPROGS)
  
 -test tests: build_tests_nodep build_apps_nodep build_engines_nodep depend
++build_generated: $(GENERATED_MANDATORY)
++
 +test: tests
-+tests: build_tests_nodep build_apps_nodep build_engines_nodep depend
++tests: build_generated \
++       build_tests_nodep build_apps_nodep build_engines_nodep depend
  	@rem {- output_off() if $disabled{tests}; "" -}
  	set SRCTOP=$(SRCDIR)
  	set BLDTOP=$(BLDDIR)
@@ -2150,12 +2629,17 @@
  	@rem {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
  	@echo "Tests are not supported with your chosen Configure options"
  	@rem {- output_on() if !$disabled{tests}; "" -}
-@@ -151,26 +169,32 @@ test tests: build_tests_nodep build_apps_nodep build_engines_nodep depend
+ 
  list-tests:
- 	@set TOP=$(SRCDIR)
- 	@set PERL=$(PERL)
+-	@set TOP=$(SRCDIR)
+-	@set PERL=$(PERL)
 -	@$(PERL) $(SRCDIR)\test\run_tests.pl list
++	@rem {- output_off() if $disabled{tests}; "" -}
++	@set SRCTOP=$(SRCDIR)
 +	@"$(PERL)" "$(SRCDIR)\test\run_tests.pl" list
++	@rem {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
++	@echo "Tests are not supported with your chosen Configure options"
++	@rem {- output_on() if !$disabled{tests}; "" -}
  
  install: install_sw install_ssldirs install_docs
  
@@ -2181,7 +2665,7 @@
 -	del /Q /S /F engines\*.ilk
 -	del /Q /S /F engines\*.lib
 +	-del /Q /F $(PROGRAMS) $(TESTPROGS) $(ENGINES) $(SCRIPTS)
-+	-del /Q /S /F $(GENERATED)
++	-del /Q /F $(GENERATED)
 +	-del /Q /S /F *.d
 +	-del /Q /S /F *.obj
 +	-del /Q /S /F *.pdb
@@ -2192,17 +2676,22 @@
 +	-del /Q /S /F engines\*.manifest
 +	-del /Q /S /F apps\*.manifest
 +	-del /Q /S /F test\*.manifest
++
++distclean: clean
++	-del /Q /F configdata.pm
++	-del /Q /F makefile
  
  depend:
  
-@@ -181,52 +205,72 @@ install_sw: all install_dev install_engines install_runtime
+@@ -180,53 +216,77 @@ install_sw: all install_dev install_engines install_runtime
+ 
  uninstall_sw: uninstall_runtime uninstall_engines uninstall_dev
  
- install_docs:
-+        "$(PERL)" "$(SRCDIR)\util\process_docs.pl" \
-+                "--destdir=$(DESTDIR)$(INSTALLTOP)\html" --type=html
+-install_docs:
++install_docs: install_html_docs
  
- uninstall_docs:
+-uninstall_docs:
++uninstall_docs: uninstall_html_docs
  
  install_ssldirs:
 -	@$(PERL) $(SRCDIR)\util\mkdir-p.pl "$(DESTDIR)$(OPENSSLDIR)\certs"
@@ -2242,10 +2731,10 @@
  	@echo *** Installing engines
 -	@$(PERL) $(SRCDIR)\util\mkdir-p.pl "$(DESTDIR)$(ENGINESDIR)"
 +	@"$(PERL)" "$(SRCDIR)\util\mkdir-p.pl" "$(DESTDIR)$(ENGINESDIR)"
++	@if not "$(ENGINES)"=="" \
++	 "$(PERL)" "$(SRCDIR)\util\copy.pl" $(ENGINES) "$(DESTDIR)$(ENGINESDIR)"
  	@if not "$(ENGINES)"=="" \
 -	 $(PERL) $(SRCDIR)\util\copy.pl $(ENGINES) "$(DESTDIR)$(ENGINESDIR)"
-+	 "$(PERL)" "$(SRCDIR)\util\copy.pl" $(ENGINES) "$(DESTDIR)$(ENGINESDIR)"
-+	@if not "$(ENGINES)"=="" \
 +	 "$(PERL)" "$(SRCDIR)\util\copy.pl" $(ENGINEPDBS) "$(DESTDIR)$(ENGINESDIR)"
  
  uninstall_engines:
@@ -2271,10 +2760,16 @@
  
  uninstall_runtime:
  
++install_html_docs:
++        "$(PERL)" "$(SRCDIR)\util\process_docs.pl" \
++                "--destdir=$(DESTDIR)$(INSTALLTOP)\html" --type=html
++
++uninstall_html_docs:
++
  # Building targets ###################################################
  
 -configdata.pm: {- $config{build_file_template} -} $(SRCDIR)\Configure
-+configdata.pm: "{- $config{build_file_template} -}" "$(SRCDIR)\Configure"
++configdata.pm: "{- $config{build_file_template} -}" "$(SRCDIR)\Configurations\common.tmpl" "$(SRCDIR)\Configure" {- join(" ", map { '"'.$_.'"' } @{$config{build_infos}}) -}
  	@echo "Detected changed: $?"
  	@echo "Reconfiguring..."
 -	$(PERL) $(SRCDIR)\Configure reconf
@@ -2282,7 +2777,7 @@
  	@echo "**************************************************"
  	@echo "***                                            ***"
  	@echo "***   Please run the same make command again   ***"
-@@ -250,18 +294,20 @@ configdata.pm: {- $config{build_file_template} -} $(SRCDIR)\Configure
+@@ -250,18 +310,31 @@ configdata.pm: {- $config{build_file_template} -} $(SRCDIR)\Configure
    sub generatesrc {
        my %args = @_;
        (my $target = $args{src}) =~ s/\.[sS]$/.asm/;
@@ -2296,12 +2791,24 @@
 +          '"'.join('" "', @{$args{generator_deps}}, @{$args{deps}}).'"' : '';
  
        if ($target !~ /\.asm$/) {
-           return <<"EOF";
+-          return <<"EOF";
 -$target: $args{generator}->[0] $deps
 -	\$(PERL) $generator > \$@
++          if ($args{generator}->[0] =~ m|^.*\.in$|) {
++              my $dofile = abs2rel(rel2abs(catfile($config{sourcedir},
++                                                   "util", "dofile.pl")),
++                                   rel2abs($config{builddir}));
++              return <<"EOF";
 +$target: "$args{generator}->[0]" $deps
++	"\$(PERL)" "-I\$(BLDDIR)" -Mconfigdata "$dofile" \\
++	    "-o$target{build_file}" $generator > \$@
++EOF
++	  } else {
++              return <<"EOF";
++$target: "$args{generator}->[0]" $deps
 +	"\$(PERL)"$generator_incs $generator > \$@
  EOF
++	  }
        } else {
            if ($args{generator}->[0] =~ /\.pl$/) {
 -              $generator = '$(PERL) '.$generator;
@@ -2309,7 +2816,7 @@
            } elsif ($args{generator}->[0] =~ /\.S$/) {
                $generator = undef;
            } else {
-@@ -273,9 +319,8 @@ EOF
+@@ -273,9 +346,8 @@ EOF
                # end up generating foo.s in two steps.
                if ($args{src} =~ /\.S$/) {
                     return <<"EOF";
@@ -2320,7 +2827,7 @@
  	$generator \$@.S
  	\$(CC) \$(CFLAGS) $incs /EP /C \$@.S > \$@.i && move /Y \$@.i \$@
          del /Q \$@.S
-@@ -283,15 +328,14 @@ EOF
+@@ -283,15 +355,14 @@ EOF
                }
                # Otherwise....
                return <<"EOF";
@@ -2339,7 +2846,7 @@
  EOF
        }
    }
-@@ -301,12 +345,12 @@ EOF
+@@ -301,12 +372,12 @@ EOF
       my $obj = $args{obj};
       my @srcs = map { (my $x = $_) =~ s/\.s$/.asm/; $x
                      } ( @{$args{srcs}} );
@@ -2356,7 +2863,7 @@
           }
       }
       my $ecflags = { lib => '$(LIB_CFLAGS)',
-@@ -322,7 +366,7 @@ EOF
+@@ -322,7 +393,7 @@ EOF
       return <<"EOF"	if (!$disabled{makedepend});
  $obj$depext: $deps
  	\$(CC) \$(CFLAGS) $ecflags$inc /Zs /showIncludes $srcs 2>&1 | \\
@@ -2365,7 +2872,7 @@
  chomp;
  s/^Note: including file: *//;
  \$\$collect{\$\$_} = 1;
-@@ -362,18 +406,18 @@ EOF
+@@ -362,18 +433,18 @@ EOF
  			   rel2abs($config{builddir}));
       my $target = shlib_import($lib);
       return <<"EOF"
@@ -2390,7 +2897,7 @@
  	COPY $shlib$shlibext apps
  	COPY $shlib$shlibext test
  EOF
-@@ -436,15 +480,51 @@ EOF
+@@ -436,15 +507,51 @@ EOF
    sub in2script {
        my %args = @_;
        my $script = $args{script};
@@ -2445,7 +2952,7 @@
    ""    # Important!  This becomes part of the template result.
  -}
 diff --git a/Configure b/Configure
-index a7b9ed564f9d..7bbb5b7697b3 100755
+index a7b9ed5..ee0b4a7 100755
 --- a/Configure
 +++ b/Configure
 @@ -1,5 +1,11 @@
@@ -2468,7 +2975,7 @@
  
  # see INSTALL for instructions.
  
-@@ -67,9 +74,9 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
+@@ -67,12 +74,12 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
  # RC4_CHAR	use 'char' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
  # Following are set automatically by this script
  #
@@ -2480,7 +2987,29 @@
 +# RMD160_ASM	use some extra ripemd160 assembler,
  # SHA256_ASM	sha256_block is implemented in assembler
  # SHA512_ASM	sha512_block is implemented in assembler
- # AES_ASM	ASE_[en|de]crypt is implemented in assembler
+-# AES_ASM	ASE_[en|de]crypt is implemented in assembler
++# AES_ASM	AES_[en|de]crypt is implemented in assembler
+ 
+ # Minimum warning options... any contributions to OpenSSL should at least get
+ # past these.
+@@ -80,7 +87,7 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
+ # DEBUG_UNUSED enables __owur (warn unused result) checks.
+ my $gcc_devteam_warn = "-DDEBUG_UNUSED"
+         # -DPEDANTIC complements -pedantic and is meant to mask code that
+-        # is not strictly standard-compliant and/or implementation-specifc,
++        # is not strictly standard-compliant and/or implementation-specific,
+         # e.g. inline assembly, disregards to alignment requirements, such
+         # that -pedantic would complain about. Incidentally -DPEDANTIC has
+         # to be used even in sanitized builds, because sanitizer too is
+@@ -137,7 +144,7 @@ my $strict_warnings = 0;
+ our $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT";
+ 
+ #
+-# API compability name to version number mapping.
++# API compatibility name to version number mapping.
+ #
+ my $maxapi = "1.1.0";           # API for "no-deprecated" builds
+ my $apitable = {
 @@ -160,7 +167,7 @@ sub read_config;
  
  # resolve_config(target)
@@ -2549,15 +3078,18 @@
      "gost",
      "heartbeats",
      "hw(-.+)?",
-@@ -301,7 +327,6 @@ my @disablables = (
-     "ripemd",
+@@ -298,10 +324,8 @@ my @disablables = (
+     "rc5",
+     "rdrand",
+     "rfc3779",
+-    "ripemd",
      "rmd160",
      "scrypt",
 -    "sct",
      "sctp",
      "seed",
      "shared",
-@@ -316,6 +341,7 @@ my @disablables = (
+@@ -316,6 +340,7 @@ my @disablables = (
      "threads",
      "tls",
      "ts",
@@ -2565,11 +3097,16 @@
      "ui",
      "unit-test",
      "whirlpool",
-@@ -331,24 +357,30 @@ foreach my $proto ((@tls, @dtls))
+@@ -329,26 +354,33 @@ foreach my $proto ((@tls, @dtls))
+ 	push(@disablables, "$proto-method");
+ 	}
  
- my @deprecated_disablables = (
-     "ssl2",
-+    "buf-freelists",
+-my @deprecated_disablables = (
+-    "ssl2",
++my %deprecated_disablables = (
++    "ssl2" => undef,
++    "buf-freelists" => undef,
++    "ripemd" => "rmd160"
      );
  
  # All of the following is disabled by default (RC5 was enabled before 0.9.8):
@@ -2605,7 +3142,25 @@
      "dtls"		=> [ @dtls ],
  
      # SSL 3.0, (D)TLS 1.0 and TLS 1.1 require MD5 and SHA
-@@ -458,8 +490,6 @@ my $target="";
+@@ -431,17 +463,6 @@ while ((my $first, my $second) = (shift @list, shift @list)) {
+ # To remove something from %disabled, use "enable-foo".
+ # For symmetry, "disable-foo" is a synonym for "no-foo".
+ 
+-my @generated_headers = (
+-    "include/openssl/opensslconf.h",
+-    "crypto/include/internal/bn_conf.h",
+-    "crypto/include/internal/dso_conf.h"
+-    );
+-
+-my @generated_by_make_headers = (
+-    "crypto/buildinf.h"
+-    );
+-
+-
+ my $no_sse2=0;
+ 
+ &usage if ($#ARGV < 0);
+@@ -458,8 +479,6 @@ my $target="";
  $config{options}="";
  $config{build_type} = "release";
  
@@ -2614,7 +3169,55 @@
  my @argvcopy=@ARGV;
  
  if (grep /^reconf(igure)?$/, @argvcopy) {
-@@ -644,11 +674,7 @@ foreach (@argvcopy)
+@@ -533,21 +552,17 @@ foreach (@argvcopy)
+ 	s /^zlib-dynamic$/enable-zlib-dynamic/;
+ 
+         if (/^(no|disable|enable)-(.+)$/)
+-		{
+-		my $word = $2;
+-		if (grep { $word =~ /^${_}$/ } @deprecated_disablables)
+-			{
+-			$deprecated_options{$_} = 1;
+-			next;
+-			}
+-		elsif (!grep { $word =~ /^${_}$/ } @disablables)
+-			{
+-			$unsupported_options{$_} = 1;
+-			next;
+-			}
+-		}
+-	if (/^no-(.+)$/ || /^disable-(.+)$/)
+-		{
++                {
++                my $word = $2;
++                if (!exists $deprecated_disablables{$word}
++                        && !grep { $word =~ /^${_}$/ } @disablables)
++                        {
++                        $unsupported_options{$_} = 1;
++                        next;
++                        }
++                }
++        if (/^no-(.+)$/ || /^disable-(.+)$/)
++                {
+                 foreach my $proto ((@tls, @dtls))
+                         {
+                         if ($1 eq "$proto-method")
+@@ -586,6 +601,14 @@ foreach (@argvcopy)
+                         {
+                         $disabled{"dynamic-engine"} = "option";
+                         }
++                elsif (exists $deprecated_disablables{$1})
++                        {
++                        $deprecated_options{$_} = 1;
++                        if (defined $deprecated_disablables{$1})
++                                {
++                                $disabled{$deprecated_disablables{$1}} = "option";
++                                }
++                        }
+                 else
+                         {
+                         $disabled{$1} = "option";
+@@ -644,11 +667,7 @@ foreach (@argvcopy)
  		}
  	elsif (/^[-+]/)
  		{
@@ -2627,7 +3230,7 @@
  			{
  			$config{prefix}=$1;
  			die "Directory given with --prefix MUST be absolute\n"
-@@ -674,6 +700,14 @@ foreach (@argvcopy)
+@@ -674,6 +693,14 @@ foreach (@argvcopy)
  			{
  			$withargs{zlib_include}=$1;
  			}
@@ -2642,7 +3245,7 @@
  		elsif (/^--with-fipslibdir=(.*)$/)
  			{
  			$config{fipslibdir}="$1/";
-@@ -712,7 +746,7 @@ foreach (@argvcopy)
+@@ -712,7 +739,7 @@ foreach (@argvcopy)
  	unless ($_ eq $target || /^no-/ || /^disable-/)
  		{
  		# "no-..." follows later after implied disactivations
@@ -2651,7 +3254,7 @@
  		# we really only write OPTIONS to the Makefile out of
  		# nostalgia.)
  
-@@ -888,9 +922,13 @@ $config{cross_compile_prefix} = $ENV{'CROSS_COMPILE'}
+@@ -888,9 +915,13 @@ $config{cross_compile_prefix} = $ENV{'CROSS_COMPILE'}
  # Allow overriding the names of some tools.  USE WITH CARE
  $config{perl} =    $ENV{'PERL'}    || ($^O ne "VMS" ? $^X : "perl");
  $target{cc} =      $ENV{'CC'}      || $target{cc}      || "cc";
@@ -2666,7 +3269,7 @@
  
  # For cflags, lflags, plib_lflags, ex_libs and defines, add the debug_
  # or release_ attributes.
-@@ -904,22 +942,6 @@ $config{shared_ldflag} = "";
+@@ -904,22 +935,6 @@ $config{shared_ldflag} = "";
  $target{build_scheme} = [ $target{build_scheme} ]
      if ref($target{build_scheme}) ne "ARRAY";
  
@@ -2689,7 +3292,7 @@
  my ($builder, $builder_platform, @builder_opts) =
      @{$target{build_scheme}};
  
-@@ -983,7 +1005,7 @@ unless ($disabled{threads}) {
+@@ -983,7 +998,7 @@ unless ($disabled{threads}) {
              $disabled{threads} = "unavailable";
          }
      } else {
@@ -2698,7 +3301,7 @@
          # if there's a chance that's possible
          if ($target{thread_scheme} eq "(unknown)") {
              # If the user asked for "threads" and we don't have internal
-@@ -1030,6 +1052,29 @@ if ($disabled{"dynamic-engine"}) {
+@@ -1030,6 +1045,29 @@ if ($disabled{"dynamic-engine"}) {
          $config{dynamic_engines} = 1;
  }
  
@@ -2716,7 +3319,7 @@
 +}
 +
 +unless ($disabled{ubsan}) {
-+    # -DPEDANTIC or -fnosanitize=aligmnent may also be required on some
++    # -DPEDANTIC or -fnosanitize=alignment may also be required on some
 +    # platforms.
 +    $config{cflags} .= "-fsanitize=undefined -fno-sanitize-recover=all ";
 +}
@@ -2728,7 +3331,7 @@
  #
  # Platform fix-ups
  #
-@@ -1239,12 +1284,27 @@ my $buildinfo_debug = defined($ENV{CONFIGURE_DEBUG_BUILDINFO});
+@@ -1239,12 +1277,27 @@ my $buildinfo_debug = defined($ENV{CONFIGURE_DEBUG_BUILDINFO});
  if ($builder eq "unified") {
      # Store the name of the template file we will build the build file from
      # in %config.  This may be useful for the build file itself.
@@ -2762,7 +3365,7 @@
      $config{build_file_template} = $build_file_template;
  
      use lib catdir(dirname(__FILE__),"util");
-@@ -1334,6 +1394,7 @@ if ($builder eq "unified") {
+@@ -1334,6 +1387,7 @@ if ($builder eq "unified") {
              $template->fill_in(HASH => { config => \%config,
                                           target => \%target,
                                           disabled => \%disabled,
@@ -2770,7 +3373,7 @@
                                           builddir => abs2rel($buildd, $blddir),
                                           sourcedir => abs2rel($sourced, $blddir),
                                           buildtop => abs2rel($blddir, $blddir),
-@@ -1374,47 +1435,47 @@ if ($builder eq "unified") {
+@@ -1374,47 +1428,47 @@ if ($builder eq "unified") {
              => sub { die "ENDIF out of scope" if ! @skip;
                       pop @skip; },
              qr/^\s*PROGRAMS\s*=\s*(.*)\s*$/
@@ -2814,8 +3417,9 @@
 -            => sub { push @{$includes{$1}}, split(/\s+/, $2)
 +            => sub { push @{$includes{$1}}, tokenize($2)
                           if !@skip || $skip[$#skip] > 0 },
-             qr/^\s*DEPEND\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
+-            qr/^\s*DEPEND\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
 -            => sub { push @{$depends{$1}}, split(/\s+/, $2)
++            qr/^\s*DEPEND\[((?:\\.|[^\\\]])*)\]\s*=\s*(.*)\s*$/
 +            => sub { push @{$depends{$1}}, tokenize($2)
                           if !@skip || $skip[$#skip] > 0 },
              qr/^\s*GENERATE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
@@ -2831,18 +3435,18 @@
                           if !@skip || $skip[$#skip] > 0 },
              qr/^\s*BEGINRAW\[((?:\\.|[^\\\]])+)\]\s*$/
              => sub {
-@@ -1628,9 +1689,15 @@ EOF
+@@ -1628,9 +1682,15 @@ EOF
  
          foreach (keys %depends) {
              my $dest = $_;
 -            my $ddest = cleanfile($buildd, $_, $blddir);
 -            if ($unified_info{rename}->{$ddest}) {
 -                $ddest = $unified_info{rename}->{$ddest};
-+            my $ddest = cleanfile($sourced, $_, $blddir);
++            my $ddest = $dest eq "" ? "" : cleanfile($sourced, $_, $blddir);
 +
 +            # If the destination doesn't exist in source, it can only be
 +            # a generated file in the build tree.
-+            if (! -f $ddest) {
++            if ($ddest ne "" && ! -f $ddest) {
 +                $ddest = cleanfile($buildd, $_, $blddir);
 +                if ($unified_info{rename}->{$ddest}) {
 +                    $ddest = $unified_info{rename}->{$ddest};
@@ -2850,7 +3454,16 @@
              }
              foreach (@{$depends{$dest}}) {
                  my $d = cleanfile($sourced, $_, $blddir);
-@@ -1651,9 +1718,9 @@ EOF
+@@ -1643,7 +1703,7 @@ EOF
+                 if (! -f $d
+                     || (grep { $d eq $_ }
+                         map { cleanfile($srcdir, $_, $blddir) }
+-                        (@generated_headers, @generated_by_make_headers))) {
++                        grep { /\.h$/ } keys %{$unified_info{generate}})) {
+                     $d = cleanfile($buildd, $_, $blddir);
+                 }
+                 # Take note if the file to depend on is being renamed
+@@ -1651,9 +1711,9 @@ EOF
                      $d = $unified_info{rename}->{$d};
                  }
                  $unified_info{depends}->{$ddest}->{$d} = 1;
@@ -2859,11 +3472,11 @@
 -                if ($d =~ /\.h$/) {
 +                # If we depend on a header file or a perl module, let's make
 +                # sure it can get included
-+                if ($d =~ /\.(h|pm)$/) {
++                if ($dest ne "" && $d =~ /\.(h|pm)$/) {
                      my $i = dirname($d);
                      push @{$unified_info{includes}->{$ddest}}, $i
                          unless grep { $_ eq $i } @{$unified_info{includes}->{$ddest}};
-@@ -1663,9 +1730,15 @@ EOF
+@@ -1663,9 +1723,15 @@ EOF
  
          foreach (keys %includes) {
              my $dest = $_;
@@ -2882,7 +3495,7 @@
              }
              foreach (@{$includes{$dest}}) {
                  my $i = cleandir($sourced, $_, $blddir);
-@@ -1823,7 +1896,7 @@ print OUT "1;\n";
+@@ -1823,7 +1889,7 @@ print OUT "1;\n";
  close(OUT);
  
  
@@ -2891,7 +3504,7 @@
  print "CFLAG         =$target{cflags} $config{cflags}\n";
  print "SHARED_CFLAG  =$target{shared_cflag}\n";
  print "DEFINES       =",join(" ", @{$target{defines}}, @{$config{defines}}),"\n";
-@@ -1851,7 +1924,9 @@ print "CHACHA_ENC    =$target{chacha_obj}\n";
+@@ -1851,7 +1917,9 @@ print "CHACHA_ENC    =$target{chacha_obj}\n";
  print "POLY1305_OBJ  =$target{poly1305_obj}\n";
  print "BLAKE2_OBJ    =$target{blake2_obj}\n";
  print "PROCESSOR     =$config{processor}\n";
@@ -2902,10 +3515,16 @@
  print "ARFLAGS       =$target{arflags}\n";
  print "PERL          =$config{perl}\n";
  print "\n";
-@@ -1867,53 +1942,12 @@ for (@generated_headers) {
-                catfile($srcdir, $_.".in"));
- }
+@@ -1861,59 +1929,12 @@ print "THIRTY_TWO_BIT mode\n" if $config{b32};
+ print "BN_LLONG mode\n" if $config{bn_ll};
+ print "RC4 uses $config{rc4_int}\n" if $config{rc4_int} ne $def_int;
  
+-for (@generated_headers) {
+-    mkpath(catdir($blddir, dirname($_)));
+-    run_dofile(catfile($blddir, $_),
+-               catfile($srcdir, $_.".in"));
+-}
+-
 -###
 -### When the old "unixmake" scheme goes away, so does this function
 -###
@@ -2956,7 +3575,7 @@
      );
  
  $builders{$builder}->($builder_platform, @builder_opts);
-@@ -1939,6 +1973,14 @@ or position independent code, please let us know (but please first make sure
+@@ -1939,6 +1960,14 @@ or position independent code, please let us know (but please first make sure
  you have tried with a current version of OpenSSL).
  EOF
  
@@ -2971,7 +3590,7 @@
  exit(0);
  
  ######################################################################
-@@ -2104,8 +2146,8 @@ sub read_config {
+@@ -2104,8 +2133,8 @@ sub read_config {
  
  }
  
@@ -2982,7 +3601,7 @@
  # recursively
  sub resolve_config {
      my $target = shift;
-@@ -2158,7 +2200,7 @@ sub resolve_config {
+@@ -2158,7 +2187,7 @@ sub resolve_config {
      # - If a value is a coderef, it will be executed with the list of
      #   inherited values as arguments.
      # - If the corresponding key doesn't have a value at all or is the
@@ -2991,7 +3610,7 @@
      #   default combiner (below), and the result becomes this target's
      #   value.
      # - Otherwise, this target's value is assumed to be a string that
-@@ -2266,13 +2308,34 @@ sub run_dofile
+@@ -2266,13 +2295,34 @@ sub run_dofile
      foreach (@templates) {
          die "Can't open $_, $!" unless -f $_;
      }
@@ -3027,7 +3646,7 @@
  # Configuration printer ##############################################
  
  sub print_table_entry
-@@ -2400,22 +2463,6 @@ sub absolutedir {
+@@ -2400,22 +2450,6 @@ sub absolutedir {
      return realpath($dir);
  }
  
@@ -3050,7 +3669,7 @@
  sub quotify {
      my %processors = (
  	perl    => sub { my $x = shift;
-@@ -2519,3 +2566,41 @@ sub collect_information {
+@@ -2519,3 +2553,41 @@ sub collect_information {
          }
      }
  }
@@ -3093,7 +3712,7 @@
 +    return @result;
 +}
 diff --git a/INSTALL b/INSTALL
-index 2e06aa7b6066..b5cfa71c7a6a 100644
+index 2e06aa7..29db22e 100644
 --- a/INSTALL
 +++ b/INSTALL
 @@ -2,16 +2,15 @@
@@ -3215,7 +3834,7 @@
                     on a platform that does not support AFALG.
  
 +  enable-asan
-+                   Build with the Address sanitser. This is a developer option
++                   Build with the Address sanitiser. This is a developer option
 +                   only. It may not work on all platforms and should never be
 +                   used in production environments. It will only work when used
 +                   with gcc or clang and should be used in conjunction with the
@@ -3261,12 +3880,21 @@
    sctp
                     Build support for SCTP
  
+@@ -263,7 +326,7 @@
+                    "illegal instruction" exception. There might be a way
+                    to enable support in kernel, e.g. FreeBSD kernel can be
+                    compiled with CPU_ENABLE_SSE, and there is a way to
+-                   disengage SSE2 code pathes upon application start-up,
++                   disengage SSE2 code paths upon application start-up,
+                    but if you aim for wider "audience" running such kernel,
+                    consider no-sse2. Both the 386 and no-asm options imply
+                    no-sse2.
 @@ -297,6 +360,14 @@
    no-ts
                     Don't build Time Stamping Authority support.
  
 +  enable-ubsan
-+                   Build with the Undefined Behaviour sanitser. This is a
++                   Build with the Undefined Behaviour sanitiser. This is a
 +                   developer option only. It may not work on all platforms and
 +                   should never be used in production environments. It will only
 +                   work when used with gcc or clang and should be used in
@@ -3312,7 +3940,7 @@
         $ nmake test                                     # Windows
  
 +     NOTE: you MUST run the tests from an unprivileged account (or
-+     disable your privileges temporarly if your platform allows it).
++     disable your privileges temporarily if your platform allows it).
 +
       If some tests fail, look at the output.  There may be reasons for
       the failure that isn't a problem in OpenSSL itself (like a
@@ -3487,7 +4115,7 @@
  
 diff --git a/INSTALL.DJGPP b/INSTALL.DJGPP
 deleted file mode 100644
-index e1ec6760389e..000000000000
+index e1ec676..0000000
 --- a/INSTALL.DJGPP
 +++ /dev/null
 @@ -1,48 +0,0 @@
@@ -3541,7 +4169,7 @@
 - obtained from "http://www.rahul.net/dkaufman/index.html".
 diff --git a/INSTALL.WCE b/INSTALL.WCE
 deleted file mode 100644
-index fe1431acb76d..000000000000
+index fe1431a..0000000
 --- a/INSTALL.WCE
 +++ /dev/null
 @@ -1,93 +0,0 @@
@@ -3639,7 +4267,7 @@
 - build.
 -
 diff --git a/LICENSE b/LICENSE
-index fb03713dd111..c6cc098f9c28 100644
+index fb03713..c6cc098 100644
 --- a/LICENSE
 +++ b/LICENSE
 @@ -4,9 +4,7 @@
@@ -3655,7 +4283,7 @@
    ---------------
 diff --git a/Makefile.in b/Makefile.in
 deleted file mode 100644
-index baaaf84432b1..000000000000
+index baaaf84..0000000
 --- a/Makefile.in
 +++ /dev/null
 @@ -1,798 +0,0 @@
@@ -4458,7 +5086,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/Makefile.shared b/Makefile.shared
-index 65980b293f7d..d856180bf134 100644
+index 65980b2..d856180 100644
 --- a/Makefile.shared
 +++ b/Makefile.shared
 @@ -14,6 +14,7 @@ CFLAGS=$(CFLAG)
@@ -4469,7 +5097,7 @@
  # SHARED_RCFLAGS are flags used with windres, i.e. when build for Cygwin
  # or Mingw.
  SHARED_RCFLAGS=$(SHARED_RCFLAG)
-@@ -278,9 +279,9 @@ link_app.darwin:	# is there run-path on darwin?
+@@ -278,9 +279,9 @@ link_shlib.cygwin:
  	SHLIB=cyg$(LIBNAME); SHLIB_SOVER=-$(LIBVERSION); SHLIB_SUFFIX=.dll; \
  	dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
  	echo "$(PERL) $(SRCDIR)/util/mkrc.pl $$dll_name |" \
@@ -4481,7 +5109,7 @@
  	ALLSYMSFLAGS='-Wl,--whole-archive'; \
  	NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
  	SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,--enable-auto-image-base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a rc.o"; \
-@@ -306,9 +307,9 @@ link_app.darwin:	# is there run-path on darwin?
+@@ -306,9 +307,9 @@ link_shlib.mingw:
  		| sed -e 's|^\(LIBRARY  *\)$(LIBNAME)32|\1'"$$dll_name"'|' \
  		> $(LIBNAME).def; \
  	echo "$(PERL) $(SRCDIR)/util/mkrc.pl $$dll_name |" \
@@ -4493,7 +5121,7 @@
  	ALLSYMSFLAGS='-Wl,--whole-archive'; \
  	NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
  	SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a $(LIBNAME).def rc.o"; \
-@@ -561,11 +562,11 @@ symlink.gnu symlink.solaris symlink.svr3 symlink.svr5 symlink.irix \
+@@ -561,11 +562,11 @@ symlink.hpux:
  symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath:
  
  # Compatibility targets
@@ -4510,7 +5138,7 @@
  link_shlib.bsd-shared: link_shlib.bsd
  link_app.bsd-shared: link_app.bsd
 diff --git a/NEWS b/NEWS
-index 90336bc6d3aa..c3f749778e7f 100644
+index 90336bc..a6ac0eb 100644
 --- a/NEWS
 +++ b/NEWS
 @@ -5,8 +5,9 @@
@@ -4544,9 +5172,29 @@
    Major changes between OpenSSL 1.0.2f and OpenSSL 1.0.2g [1 Mar 2016]
  
        o Disable weak ciphers in SSLv3 and up in default builds of OpenSSL.
+@@ -416,8 +430,8 @@
+       o New STORE structure and library to provide an interface to all
+         sorts of data repositories.  Supports storage of public and
+         private keys, certificates, CRLs, numbers and arbitrary blobs.
+-	This library is unfortunately unfinished and unused withing
+-	OpenSSL.
++        This library is unfortunately unfinished and unused within
++        OpenSSL.
+       o New control functions for the error stack.
+       o Changed the PKCS#7 library to support one-pass S/MIME
+         processing.
+@@ -433,7 +447,7 @@
+       o Major overhaul of RC4 performance on Intel P4, IA-64 and
+         AMD64.
+       o Changed the Configure script to have some algorithms disabled
+-        by default.  Those can be explicitely enabled with the new
++        by default.  Those can be explicitly enabled with the new
+         argument form 'enable-xxx'.
+       o Change the default digest in 'openssl' commands from MD5 to
+         SHA-1.
 diff --git a/NOTES.DJGPP b/NOTES.DJGPP
 new file mode 100644
-index 000000000000..bbe63dc15438
+index 0000000..bbe63dc
 --- /dev/null
 +++ b/NOTES.DJGPP
 @@ -0,0 +1,48 @@
@@ -4600,7 +5248,7 @@
 + obtained from "http://www.rahul.net/dkaufman/index.html".
 diff --git a/NOTES.PERL b/NOTES.PERL
 new file mode 100644
-index 000000000000..46d585acca14
+index 0000000..46d585a
 --- /dev/null
 +++ b/NOTES.PERL
 @@ -0,0 +1,119 @@
@@ -4724,7 +5372,7 @@
 +
 +        $ cpan -f -i "Text::Template"
 diff --git a/NOTES.WIN b/NOTES.WIN
-index 1c10b758df0f..8c589e6d3a53 100644
+index 1c10b75..3a149fa 100644
 --- a/NOTES.WIN
 +++ b/NOTES.WIN
 @@ -2,15 +2,16 @@
@@ -4778,7 +5426,7 @@
 +   under MSYS, then Perl compiled for MSYS must be used.
  
 -   Alternativelly, one can use MSYS2 from http://msys2.github.io/,
-+   Alternativelly, one can use MSYS2 from https://msys2.github.io/,
++   Alternatively, one can use MSYS2 from https://msys2.github.io/,
     which includes MingW (32-bit and 64-bit).
  
   * It is also possible to cross-compile it on Linux by configuring
@@ -4814,7 +5462,7 @@
  	__declspec(dllexport) __cdecl BOOL _OPENSSL_isservice(void)
  	{   DWORD sess;
 diff --git a/README b/README
-index 5773613c9fc7..aa8fe685116e 100644
+index 5773613..7e623a1 100644
 --- a/README
 +++ b/README
 @@ -1,5 +1,5 @@
@@ -4884,7 +5532,7 @@
 - take a day for the ticket to show up.  (We also scan posts to make sure
 - that security disclosures aren't publically posted by mistake.) Mail
 + take a couple of days for the ticket to show up.  (We also scan posts to make
-+ sure that security disclosures aren't publically posted by mistake.) Mail
++ sure that security disclosures aren't publicly posted by mistake.) Mail
   to this address is recorded in the public RT (request tracker) database
   (see https://www.openssl.org/community/index.html#bugs for details) and
   also forwarded the public openssl-dev mailing list.  Confidential mail
@@ -4906,7 +5554,7 @@
   ----------------------------
 diff --git a/README.PERL b/README.PERL
 deleted file mode 100644
-index 184b3771a06b..000000000000
+index 184b377..0000000
 --- a/README.PERL
 +++ /dev/null
 @@ -1,118 +0,0 @@
@@ -5029,7 +5677,7 @@
 -
 -        $ cpan -f -i "Text::Template"
 diff --git a/VMS/VMSify-conf.pl b/VMS/VMSify-conf.pl
-index 9890362d5bdf..21eff113f850 100644
+index 9890362..21eff11 100644
 --- a/VMS/VMSify-conf.pl
 +++ b/VMS/VMSify-conf.pl
 @@ -1,4 +1,11 @@
@@ -5046,7 +5694,7 @@
  use strict;
  use warnings;
 diff --git a/VMS/openssl_shutdown.com.in b/VMS/openssl_shutdown.com.in
-index 236979eab22c..53853623046f 100644
+index 236979e..5385362 100644
 --- a/VMS/openssl_shutdown.com.in
 +++ b/VMS/openssl_shutdown.com.in
 @@ -39,9 +39,7 @@ $	DEAS OSSL$LIB'v'
@@ -5072,7 +5720,7 @@
  $
  $	EXIT 'status'
 diff --git a/VMS/openssl_startup.com.in b/VMS/openssl_startup.com.in
-index caad02278b95..e5043b5bb0c2 100644
+index caad022..e5043b5 100644
 --- a/VMS/openssl_startup.com.in
 +++ b/VMS/openssl_startup.com.in
 @@ -90,9 +90,7 @@ $	DEF  OSSL$LIB'v'	OSSL$INSTROOT:[LIB.'arch']
@@ -5098,7 +5746,7 @@
  $
  $	DEFT OSSL$DATAROOT	'OPENSSLDIR_'
 diff --git a/VMS/openssl_utils.com b/VMS/openssl_utils.com
-index b9dea722f3da..09c75d973c6d 100644
+index b9dea72..09c75d9 100644
 --- a/VMS/openssl_utils.com
 +++ b/VMS/openssl_utils.com
 @@ -5,8 +5,7 @@ $	OPENSSL		:== $OSSL$EXE:OPENSSL
@@ -5113,7 +5761,7 @@
 +$	    WRITE SYS$ERROR "NOTE: no perl => no C_REHASH"
  $	ENDIF
 diff --git a/VMS/translatesyms.pl b/VMS/translatesyms.pl
-index de3db6ccaf5c..f61d954ec56e 100644
+index de3db6c..f61d954 100644
 --- a/VMS/translatesyms.pl
 +++ b/VMS/translatesyms.pl
 @@ -1,4 +1,11 @@
@@ -5130,7 +5778,7 @@
  # This script will translate any SYMBOL_VECTOR item that has a translation
  # in CXX$DEMANGLER_DB.  The latter is generated by and CC/DECC command that
 diff --git a/apps/CA.pl.in b/apps/CA.pl.in
-index f5e8e4a191ee..0dec24c36f28 100644
+index f5e8e4a..0dec24c 100644
 --- a/apps/CA.pl.in
 +++ b/apps/CA.pl.in
 @@ -1,4 +1,11 @@
@@ -5174,7 +5822,7 @@
      exit 0;
 diff --git a/apps/Makefile.in b/apps/Makefile.in
 deleted file mode 100644
-index d2ec0c773afe..000000000000
+index d2ec0c7..0000000
 --- a/apps/Makefile.in
 +++ /dev/null
 @@ -1,159 +0,0 @@
@@ -5338,7 +5986,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/apps/app_rand.c b/apps/app_rand.c
-index a6805d4d75fb..0d44af903b81 100644
+index a6805d4..0d44af9 100644
 --- a/apps/app_rand.c
 +++ b/apps/app_rand.c
 @@ -1,111 +1,10 @@
@@ -5471,7 +6119,7 @@
          file = RAND_file_name(buffer, sizeof buffer);
  #ifndef OPENSSL_NO_EGD
 diff --git a/apps/apps.c b/apps/apps.c
-index 6d8c4897d0ed..fca3775b770f 100644
+index 6d8c489..ec1cfe9 100644
 --- a/apps/apps.c
 +++ b/apps/apps.c
 @@ -1,111 +1,10 @@
@@ -5664,6 +6312,15 @@
          {"esc_ctrl", ASN1_STRFLGS_ESC_CTRL, 0},
          {"esc_msb", ASN1_STRFLGS_ESC_MSB, 0},
          {"use_quote", ASN1_STRFLGS_ESC_QUOTE, 0},
+@@ -1246,7 +1148,7 @@ void print_name(BIO *out, const char *title, X509_NAME *nm,
+     }
+ }
+ 
+-void print_bignum_var(BIO *out, BIGNUM *in, const char *var,
++void print_bignum_var(BIO *out, const BIGNUM *in, const char *var,
+                       int len, unsigned char *buffer)
+ {
+     BIO_printf(out, "    static unsigned char %s_%d[] = {", var, len);
 @@ -1382,7 +1284,7 @@ static unsigned long index_serial_hash(const OPENSSL_CSTRING *a)
      n = a[DB_serial];
      while (*n == '0')
@@ -5776,7 +6433,7 @@
 +}
 +#endif
 diff --git a/apps/apps.h b/apps/apps.h
-index 10e15345033c..6a0acab58c33 100644
+index 10e1534..319b02e 100644
 --- a/apps/apps.h
 +++ b/apps/apps.h
 @@ -1,117 +1,19 @@
@@ -5916,7 +6573,57 @@
  
  /*
   * Common verification options.
-@@ -407,6 +312,7 @@ typedef struct string_int_pair_st {
+@@ -180,7 +85,7 @@ void wait_for_async(SSL *s);
+         OPT_V_POLICY_PRINT, OPT_V_CHECK_SS_SIG, OPT_V_TRUSTED_FIRST, \
+         OPT_V_SUITEB_128_ONLY, OPT_V_SUITEB_128, OPT_V_SUITEB_192, \
+         OPT_V_PARTIAL_CHAIN, OPT_V_NO_ALT_CHAINS, OPT_V_NO_CHECK_TIME, \
+-        OPT_V_VERIFY_AUTH_LEVEL, \
++        OPT_V_VERIFY_AUTH_LEVEL, OPT_V_ALLOW_PROXY_CERTS, \
+         OPT_V__LAST
+ 
+ # define OPT_V_OPTIONS \
+@@ -208,9 +113,9 @@ void wait_for_async(SSL *s);
+         { "explicit_policy", OPT_V_EXPLICIT_POLICY, '-', \
+             "set policy variable require-explicit-policy"}, \
+         { "inhibit_any", OPT_V_INHIBIT_ANY, '-', \
+-            "set policy variable inihibit-any-policy"}, \
++            "set policy variable inhibit-any-policy"}, \
+         { "inhibit_map", OPT_V_INHIBIT_MAP, '-', \
+-            "set policy variable inihibit-policy-mapping"}, \
++            "set policy variable inhibit-policy-mapping"}, \
+         { "x509_strict", OPT_V_X509_STRICT, '-', \
+             "disable certificate compatibility work-arounds"}, \
+         { "extended_crl", OPT_V_EXTENDED_CRL, '-', \
+@@ -230,7 +135,8 @@ void wait_for_async(SSL *s);
+         { "partial_chain", OPT_V_PARTIAL_CHAIN, '-', \
+             "accept chains anchored by intermediate trust-store CAs"}, \
+         { "no_alt_chains", OPT_V_NO_ALT_CHAINS, '-', "(deprecated)" }, \
+-        { "no_check_time", OPT_V_NO_CHECK_TIME, '-', "ignore certificate validity time" }
++        { "no_check_time", OPT_V_NO_CHECK_TIME, '-', "ignore certificate validity time" }, \
++        { "allow_proxy_certs", OPT_V_ALLOW_PROXY_CERTS, '-', "allow the use of proxy certificates" }
+ 
+ # define OPT_V_CASES \
+         OPT_V__FIRST: case OPT_V__LAST: break; \
+@@ -262,7 +168,8 @@ void wait_for_async(SSL *s);
+         case OPT_V_SUITEB_192: \
+         case OPT_V_PARTIAL_CHAIN: \
+         case OPT_V_NO_ALT_CHAINS: \
+-        case OPT_V_NO_CHECK_TIME
++        case OPT_V_NO_CHECK_TIME: \
++        case OPT_V_ALLOW_PROXY_CERTS
+ 
+ /*
+  * Common "extended"? options.
+@@ -282,7 +189,7 @@ void wait_for_async(SSL *s);
+         { "xcertform", OPT_X_CERTFORM, 'F', \
+             "format of Extended certificate (PEM or DER) PEM default " }, \
+         { "xkeyform", OPT_X_KEYFORM, 'F', \
+-            "format of Exnteded certificate's key (PEM or DER) PEM default"}
++            "format of Extended certificate's key (PEM or DER) PEM default"}
+ 
+ # define OPT_X_CASES \
+         OPT_X__FIRST: case OPT_X__LAST: break; \
+@@ -407,6 +314,7 @@ typedef struct string_int_pair_st {
  # define OPT_FMT_HTTP            (1L <<  9)
  # define OPT_FMT_PVK             (1L << 10)
  # define OPT_FMT_PDE     (OPT_FMT_PEMDER | OPT_FMT_ENGINE)
@@ -5924,16 +6631,24 @@
  # define OPT_FMT_ANY     ( \
          OPT_FMT_PEMDER | OPT_FMT_PKCS12 | OPT_FMT_SMIME | \
          OPT_FMT_ENGINE | OPT_FMT_MSBLOB | OPT_FMT_NETSCAPE | \
+@@ -474,7 +382,8 @@ int dump_cert_text(BIO *out, X509 *x);
+ void print_name(BIO *out, const char *title, X509_NAME *nm,
+                 unsigned long lflags);
+ # endif
+-void print_bignum_var(BIO *, BIGNUM *, const char*, int, unsigned char *);
++void print_bignum_var(BIO *, const BIGNUM *, const char*,
++                      int, unsigned char *);
+ void print_array(BIO *, const char *, int, const unsigned char *);
+ int set_cert_ex(unsigned long *flags, const char *arg);
+ int set_name_ex(unsigned long *flags, const char *arg);
 diff --git a/apps/asn1pars.c b/apps/asn1pars.c
-index 3da7e3b4c587..d3b1970deffe 100644
+index 3da7e3b..64a2d85 100644
 --- a/apps/asn1pars.c
 +++ b/apps/asn1pars.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -5981,7 +6696,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -6002,8 +6719,62 @@
      {"offset", OPT_OFFSET, 'p', "offset into file"},
      {"length", OPT_LENGTH, 'p', "length of section in file"},
      {"oid", OPT_OID, '<', "file of extra oid definitions"},
+@@ -109,7 +61,8 @@ int asn1parse_main(int argc, char **argv)
+     BUF_MEM *buf = NULL;
+     STACK_OF(OPENSSL_STRING) *osk = NULL;
+     char *genstr = NULL, *genconf = NULL;
+-    char *infile = NULL, *str = NULL, *oidfile = NULL, *derfile = NULL;
++    char *infile = NULL, *oidfile = NULL, *derfile = NULL;
++    unsigned char *str = NULL;
+     char *name = NULL, *header = NULL, *prog;
+     const unsigned char *ctmpbuf;
+     int indent = 0, noout = 0, dump = 0, strictpem = 0, informat = FORMAT_PEM;
+@@ -202,7 +155,7 @@ int asn1parse_main(int argc, char **argv)
+         goto end;
+ 
+     if (strictpem) {
+-        if (PEM_read_bio(in, &name, &header, (unsigned char **)&str, &num) !=
++        if (PEM_read_bio(in, &name, &header, &str, &num) !=
+             1) {
+             BIO_printf(bio_err, "Error reading PEM file\n");
+             ERR_print_errors(bio_err);
+@@ -246,14 +199,14 @@ int asn1parse_main(int argc, char **argv)
+                 num += i;
+             }
+         }
+-        str = buf->data;
++        str = (unsigned char *)buf->data;
+ 
+     }
+ 
+     /* If any structs to parse go through in sequence */
+ 
+     if (sk_OPENSSL_STRING_num(osk)) {
+-        tmpbuf = (unsigned char *)str;
++        tmpbuf = str;
+         tmplen = num;
+         for (i = 0; i < sk_OPENSSL_STRING_num(osk); i++) {
+             ASN1_TYPE *atmp;
+@@ -287,7 +240,7 @@ int asn1parse_main(int argc, char **argv)
+             tmpbuf = at->value.asn1_string->data;
+             tmplen = at->value.asn1_string->length;
+         }
+-        str = (char *)tmpbuf;
++        str = tmpbuf;
+         num = tmplen;
+     }
+ 
+@@ -308,7 +261,7 @@ int asn1parse_main(int argc, char **argv)
+         }
+     }
+     if (!noout &&
+-        !ASN1_parse_dump(bio_out, (unsigned char *)&(str[offset]), length,
++        !ASN1_parse_dump(bio_out, &(str[offset]), length,
+                          indent, dump)) {
+         ERR_print_errors(bio_err);
+         goto end;
 diff --git a/apps/build.info b/apps/build.info
-index 3baba66feb1c..c7dc19f7a500 100644
+index 3baba66..c7dc19f 100644
 --- a/apps/build.info
 +++ b/apps/build.info
 @@ -1,4 +1,6 @@
@@ -6029,15 +6800,13 @@
 +  SOURCE[{- $tsget_name -}]=tsget.in
  ENDIF
 diff --git a/apps/ca.c b/apps/ca.c
-index 95801fbf39b9..acbd3886c6ed 100644
+index 95801fb..acbd388 100644
 --- a/apps/ca.c
 +++ b/apps/ca.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -6085,7 +6854,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -6243,7 +7014,7 @@
          case OPT_CREATE_SERIAL:
              create_ser = 1;
              break;
-@@ -481,13 +427,11 @@ int ca_main(int argc, char **argv)
+@@ -481,13 +427,11 @@ end_of_options:
      argv = opt_rest();
  
      BIO_printf(bio_err, "Using configuration from %s\n", configfile);
@@ -6262,7 +7033,7 @@
  
      /* Lets get the config section we are using */
      if (section == NULL) {
-@@ -552,7 +496,7 @@ int ca_main(int argc, char **argv)
+@@ -552,7 +496,7 @@ end_of_options:
      } else
          ERR_clear_error();
  
@@ -6271,7 +7042,7 @@
      /* report status of cert with serial number given on command line */
      if (ser_status) {
          if ((dbfile = NCONF_get_string(conf, section, ENV_DATABASE)) == NULL) {
-@@ -571,7 +515,7 @@ int ca_main(int argc, char **argv)
+@@ -571,7 +515,7 @@ end_of_options:
          goto end;
      }
  
@@ -6280,7 +7051,7 @@
      /* we definitely need a private key, so let's get it */
  
      if ((keyfile == NULL) && ((keyfile = NCONF_get_string(conf,
-@@ -596,7 +540,7 @@ int ca_main(int argc, char **argv)
+@@ -596,7 +540,7 @@ end_of_options:
          goto end;
      }
  
@@ -6289,7 +7060,7 @@
      /* we need a certificate */
      if (!selfsign || spkac_file || ss_cert_file || gencrl) {
          if ((certfile == NULL)
-@@ -664,7 +608,7 @@ int ca_main(int argc, char **argv)
+@@ -664,7 +608,7 @@ end_of_options:
      } else
          ERR_clear_error();
  
@@ -6298,7 +7069,7 @@
      /* lookup where to write new certificates */
      if ((outdir == NULL) && (req)) {
  
-@@ -690,7 +634,7 @@ int ca_main(int argc, char **argv)
+@@ -690,7 +634,7 @@ end_of_options:
  #endif
      }
  
@@ -6307,7 +7078,7 @@
      /* we need to load the database file */
      if ((dbfile = NCONF_get_string(conf, section, ENV_DATABASE)) == NULL) {
          lookup_fail(section, ENV_DATABASE);
-@@ -748,7 +692,7 @@ int ca_main(int argc, char **argv)
+@@ -748,7 +692,7 @@ end_of_options:
      if (!index_index(db))
          goto end;
  
@@ -6316,7 +7087,7 @@
      /* Update the db file for expired certificates */
      if (doupdatedb) {
          if (verbose)
-@@ -1116,7 +1060,7 @@ int ca_main(int argc, char **argv)
+@@ -1116,7 +1060,7 @@ end_of_options:
          }
      }
  
@@ -6325,7 +7096,7 @@
      if (gencrl) {
          int crl_v2 = 0;
          if (!crl_ext) {
-@@ -1257,7 +1201,7 @@ int ca_main(int argc, char **argv)
+@@ -1257,7 +1201,7 @@ end_of_options:
                  goto end;
  
      }
@@ -6334,7 +7105,7 @@
      if (dorevoke) {
          if (infile == NULL) {
              BIO_printf(bio_err, "no input files\n");
-@@ -1283,10 +1227,9 @@ int ca_main(int argc, char **argv)
+@@ -1283,10 +1227,9 @@ end_of_options:
              BIO_printf(bio_err, "Data Base Updated\n");
          }
      }
@@ -6347,7 +7118,7 @@
      BIO_free_all(Sout);
      BIO_free_all(out);
 diff --git a/apps/ciphers.c b/apps/ciphers.c
-index 924c0153b39d..9e3b633700e3 100644
+index 924c015..c0f43ea 100644
 --- a/apps/ciphers.c
 +++ b/apps/ciphers.c
 @@ -1,58 +1,10 @@
@@ -6456,18 +7227,19 @@
      const char *p;
      char *ciphers = NULL, *prog;
      char buf[512];
-@@ -174,6 +139,10 @@ int ciphers_main(int argc, char **argv)
- #ifndef OPENSSL_NO_PSK
+@@ -175,6 +140,11 @@ int ciphers_main(int argc, char **argv)
              psk = 1;
  #endif
+             break;
 +        case OPT_SRP:
 +#ifndef OPENSSL_NO_SRP
 +            srp = 1;
 +#endif
-             break;
++            break;
          }
      }
-@@ -197,6 +166,10 @@ int ciphers_main(int argc, char **argv)
+     argv = opt_rest();
+@@ -197,6 +167,10 @@ int ciphers_main(int argc, char **argv)
      if (psk)
          SSL_CTX_set_psk_client_callback(ctx, dummy_psk);
  #endif
@@ -6479,7 +7251,7 @@
          if (!SSL_CTX_set_cipher_list(ctx, ciphers)) {
              BIO_printf(bio_err, "Error in cipher list\n");
 diff --git a/apps/cms.c b/apps/cms.c
-index 95f21245eb66..ad771d2d850b 100644
+index 95f2124..ad771d2 100644
 --- a/apps/cms.c
 +++ b/apps/cms.c
 @@ -1,54 +1,10 @@
@@ -6489,8 +7261,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -6521,7 +7292,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -6651,7 +7423,7 @@
  }
  
 diff --git a/apps/crl.c b/apps/crl.c
-index 915c9ac741c7..3e30bdc59c12 100644
+index 915c9ac..3e30bdc 100644
 --- a/apps/crl.c
 +++ b/apps/crl.c
 @@ -1,58 +1,10 @@
@@ -6765,7 +7537,7 @@
              BIO_printf(bio_err, "Error getting CRL issuer certificate\n");
              goto end;
 diff --git a/apps/crl2p7.c b/apps/crl2p7.c
-index e864973b0923..1631258793ec 100644
+index e864973..9c5f79f 100644
 --- a/apps/crl2p7.c
 +++ b/apps/crl2p7.c
 @@ -1,64 +1,10 @@
@@ -6839,7 +7611,19 @@
   */
  
  #include <stdio.h>
-@@ -197,8 +143,6 @@ int crl2pkcs7_main(int argc, char **argv)
+@@ -138,10 +84,8 @@ int crl2pkcs7_main(int argc, char **argv)
+             if ((certflst == NULL)
+                 && (certflst = sk_OPENSSL_STRING_new_null()) == NULL)
+                 goto end;
+-            if (!sk_OPENSSL_STRING_push(certflst, opt_arg())) {
+-                sk_OPENSSL_STRING_free(certflst);
++            if (!sk_OPENSSL_STRING_push(certflst, opt_arg()))
+                 goto end;
+-            }
+             break;
+         }
+     }
+@@ -197,8 +141,6 @@ int crl2pkcs7_main(int argc, char **argv)
              }
          }
  
@@ -6848,7 +7632,7 @@
      out = bio_open_default(outfile, 'w', outformat);
      if (out == NULL)
          goto end;
-@@ -214,6 +158,7 @@ int crl2pkcs7_main(int argc, char **argv)
+@@ -214,6 +156,7 @@ int crl2pkcs7_main(int argc, char **argv)
      }
      ret = 0;
   end:
@@ -6857,7 +7641,7 @@
      BIO_free_all(out);
      PKCS7_free(p7);
 diff --git a/apps/dgst.c b/apps/dgst.c
-index bebaaf53d387..e438b7c8cc35 100644
+index bebaaf5..e438b7c 100644
 --- a/apps/dgst.c
 +++ b/apps/dgst.c
 @@ -1,58 +1,10 @@
@@ -6926,7 +7710,7 @@
  
  #include <stdio.h>
 diff --git a/apps/dh1024.pem b/apps/dh1024.pem
-index 6eaeca9b8eb1..f1a5e180aa95 100644
+index 6eaeca9..f1a5e18 100644
 --- a/apps/dh1024.pem
 +++ b/apps/dh1024.pem
 @@ -1,10 +1,10 @@
@@ -6948,7 +7732,7 @@
 +
 +See https://tools.ietf.org/html/rfc2412 for how they were generated.
 diff --git a/apps/dh2048.pem b/apps/dh2048.pem
-index dcd0b8d01b89..e899f2e0296d 100644
+index dcd0b8d..e899f2e 100644
 --- a/apps/dh2048.pem
 +++ b/apps/dh2048.pem
 @@ -1,12 +1,14 @@
@@ -6976,7 +7760,7 @@
 +
 +See https://tools.ietf.org/html/rfc2412 for how they were generated.
 diff --git a/apps/dh4096.pem b/apps/dh4096.pem
-index 1b35ad8e62eb..adada2b55815 100644
+index 1b35ad8..adada2b 100644
 --- a/apps/dh4096.pem
 +++ b/apps/dh4096.pem
 @@ -1,18 +1,19 @@
@@ -7015,7 +7799,7 @@
 +
 +See https://tools.ietf.org/html/rfc2412 for how they were generated.
 diff --git a/apps/dhparam.c b/apps/dhparam.c
-index 9ad80edef603..f86e3155998c 100644
+index 9ad80ed..ab2e787 100644
 --- a/apps/dhparam.c
 +++ b/apps/dhparam.c
 @@ -1,111 +1,10 @@
@@ -7145,7 +7929,7 @@
      {"rand", OPT_RAND, 's',
       "Load the file(s) into the random number generator"},
      {"C", OPT_C, '-', "Print C code"},
-@@ -371,15 +270,30 @@ int dhparam_main(int argc, char **argv)
+@@ -371,20 +270,35 @@ int dhparam_main(int argc, char **argv)
              goto end;
          }
          if (i & DH_CHECK_P_NOT_PRIME)
@@ -7181,8 +7965,23 @@
      }
      if (C) {
          unsigned char *data;
+         int len, bits;
+-        BIGNUM *pbn, *gbn;
++        const BIGNUM *pbn, *gbn;
+ 
+         len = DH_size(dh);
+         bits = DH_bits(dh);
+@@ -423,7 +337,7 @@ int dhparam_main(int argc, char **argv)
+     }
+ 
+     if (!noout) {
+-        BIGNUM *q;
++        const BIGNUM *q;
+         DH_get0_pqg(dh, NULL, &q, NULL);
+         if (outformat == FORMAT_ASN1)
+             i = i2d_DHparams_bio(out, dh);
 diff --git a/apps/dsa.c b/apps/dsa.c
-index 1c841a3a80aa..ef50fede7874 100644
+index 1c841a3..6ac9a40 100644
 --- a/apps/dsa.c
 +++ b/apps/dsa.c
 @@ -1,58 +1,10 @@
@@ -7269,8 +8068,17 @@
      {"passin", OPT_PASSIN, 's', "Input file pass phrase source"},
      {"passout", OPT_PASSOUT, 's', "Output file pass phrase source"},
      {"", OPT_CIPHER, '-', "Any supported cipher"},
+@@ -243,7 +195,7 @@ int dsa_main(int argc, char **argv)
+     }
+ 
+     if (modulus) {
+-        BIGNUM *pub_key = NULL;
++        const BIGNUM *pub_key = NULL;
+         DSA_get0_key(dsa, &pub_key, NULL);
+         BIO_printf(out, "Public Key=");
+         BN_print(out, pub_key);
 diff --git a/apps/dsaparam.c b/apps/dsaparam.c
-index 5c282be1c32f..cd2ca4c3f7c9 100644
+index 5c282be..4042660 100644
 --- a/apps/dsaparam.c
 +++ b/apps/dsaparam.c
 @@ -1,58 +1,10 @@
@@ -7338,6 +8146,15 @@
   */
  
  #include <openssl/opensslconf.h>
+@@ -263,7 +215,7 @@ int dsaparam_main(int argc, char **argv)
+     }
+ 
+     if (C) {
+-        BIGNUM *p = NULL, *q = NULL, *g = NULL;
++        const BIGNUM *p = NULL, *q = NULL, *g = NULL;
+         unsigned char *data;
+         int len, bits_p;
+ 
 @@ -292,6 +244,7 @@ int dsaparam_main(int argc, char **argv)
                              "        return NULL;\n"
                              "    }\n"
@@ -7347,7 +8164,7 @@
  
      if (!noout) {
 diff --git a/apps/ec.c b/apps/ec.c
-index 432e9ff5eb2f..007bf0a89c95 100644
+index 432e9ff..007bf0a 100644
 --- a/apps/ec.c
 +++ b/apps/ec.c
 @@ -1,58 +1,10 @@
@@ -7493,7 +8310,7 @@
          if (pubin)
              eckey = PEM_read_bio_EC_PUBKEY(in, NULL, NULL, NULL);
 diff --git a/apps/ecparam.c b/apps/ecparam.c
-index 55d71f7fd41e..4e6cf22908f9 100644
+index 55d71f7..4e6cf22 100644
 --- a/apps/ecparam.c
 +++ b/apps/ecparam.c
 @@ -1,59 +1,12 @@
@@ -7551,9 +8368,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -7564,7 +8380,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   *
 diff --git a/apps/enc.c b/apps/enc.c
-index 9e7d0692641e..b7e4a95f9c87 100644
+index 9e7d069..403d14e 100644
 --- a/apps/enc.c
 +++ b/apps/enc.c
 @@ -1,58 +1,10 @@
@@ -7632,7 +8448,23 @@
   */
  
  #include <stdio.h>
-@@ -108,11 +60,11 @@ OPTIONS enc_options[] = {
+@@ -82,6 +34,7 @@ static void show_ciphers(const OBJ_NAME *name, void *bio_);
+ 
+ typedef enum OPTION_choice {
+     OPT_ERR = -1, OPT_EOF = 0, OPT_HELP,
++    OPT_LIST,
+     OPT_E, OPT_IN, OPT_OUT, OPT_PASS, OPT_ENGINE, OPT_D, OPT_P, OPT_V,
+     OPT_NOPAD, OPT_SALT, OPT_NOSALT, OPT_DEBUG, OPT_UPPER_P, OPT_UPPER_A,
+     OPT_A, OPT_Z, OPT_BUFSIZE, OPT_K, OPT_KFILE, OPT_UPPER_K, OPT_NONE,
+@@ -90,6 +43,7 @@ typedef enum OPTION_choice {
+ 
+ OPTIONS enc_options[] = {
+     {"help", OPT_HELP, '-', "Display this summary"},
++    {"ciphers", OPT_LIST, '-', "List ciphers"},
+     {"in", OPT_IN, '<', "Input file"},
+     {"out", OPT_OUT, '>', "Output file"},
+     {"pass", OPT_PASS, 's', "Passphrase source"},
+@@ -108,11 +62,11 @@ OPTIONS enc_options[] = {
       "Used with -[base64|a] to specify base64 buffer as a single line"},
      {"bufsize", OPT_BUFSIZE, 's', "Buffer size"},
      {"k", OPT_K, 's', "Passphrase"},
@@ -7646,7 +8478,18 @@
      {"none", OPT_NONE, '-', "Don't encrypt"},
      {"", OPT_CIPHER, '-', "Any supported cipher"},
  #ifdef ZLIB
-@@ -291,8 +243,6 @@ int enc_main(int argc, char **argv)
+@@ -177,7 +131,9 @@ int enc_main(int argc, char **argv)
+         case OPT_HELP:
+             opt_help(enc_options);
+             ret = 0;
+-            BIO_printf(bio_err, "Cipher Types\n");
++            goto end;
++        case OPT_LIST:
++            BIO_printf(bio_err, "Supported ciphers:\n");
+             OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH,
+                                    show_ciphers, bio_err);
+             BIO_printf(bio_err, "\n");
+@@ -291,8 +247,6 @@ int enc_main(int argc, char **argv)
              break;
          }
      }
@@ -7656,7 +8499,7 @@
      if (cipher && EVP_CIPHER_flags(cipher) & EVP_CIPH_FLAG_AEAD_CIPHER) {
          BIO_printf(bio_err, "%s: AEAD ciphers not supported\n", prog);
 diff --git a/apps/engine.c b/apps/engine.c
-index b60bfbc29416..bb4b0c19a894 100644
+index b60bfbc..c98839a 100644
 --- a/apps/engine.c
 +++ b/apps/engine.c
 @@ -1,59 +1,10 @@
@@ -7724,7 +8567,18 @@
   */
  
  #include <openssl/opensslconf.h>
-@@ -107,13 +58,17 @@ static int append_buf(char **buf, int *size, const char *s)
+@@ -94,10 +45,6 @@ OPTIONS engine_options[] = {
+     {NULL}
+ };
+ 
+-static void identity(char *ptr)
+-{
+-}
+-
+ static int append_buf(char **buf, int *size, const char *s)
+ {
+     if (*buf == NULL) {
+@@ -107,13 +54,17 @@ static int append_buf(char **buf, int *size, const char *s)
      }
  
      if (strlen(*buf) + strlen(s) >= (unsigned int)*size) {
@@ -7746,8 +8600,71 @@
      if (**buf != '\0')
          OPENSSL_strlcat(*buf, ", ", *size);
      OPENSSL_strlcat(*buf, s, *size);
+@@ -262,7 +213,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *out, const char *indent)
+         BIO_printf(out, "\n");
+     ret = 1;
+  err:
+-    sk_OPENSSL_STRING_pop_free(cmds, identity);
++    sk_OPENSSL_STRING_free(cmds);
+     OPENSSL_free(name);
+     OPENSSL_free(desc);
+     return ret;
+@@ -312,7 +263,7 @@ int engine_main(int argc, char **argv)
+     int ret = 1, i;
+     int verbose = 0, list_cap = 0, test_avail = 0, test_avail_noise = 0;
+     ENGINE *e;
+-    STACK_OF(OPENSSL_STRING) *engines = sk_OPENSSL_STRING_new_null();
++    STACK_OF(OPENSSL_CSTRING) *engines = sk_OPENSSL_CSTRING_new_null();
+     STACK_OF(OPENSSL_STRING) *pre_cmds = sk_OPENSSL_STRING_new_null();
+     STACK_OF(OPENSSL_STRING) *post_cmds = sk_OPENSSL_STRING_new_null();
+     BIO *out;
+@@ -329,7 +280,7 @@ int engine_main(int argc, char **argv)
+      * names, and then setup to parse the rest of the line as flags. */
+     prog = argv[0];
+     while ((argv1 = argv[1]) != NULL && *argv1 != '-') {
+-        sk_OPENSSL_STRING_push(engines, argv1);
++        sk_OPENSSL_CSTRING_push(engines, argv1);
+         argc--;
+         argv++;
+     }
+@@ -382,17 +333,17 @@ int engine_main(int argc, char **argv)
+             BIO_printf(bio_err, "%s: Use -help for summary.\n", prog);
+             goto end;
+         }
+-        sk_OPENSSL_STRING_push(engines, *argv);
++        sk_OPENSSL_CSTRING_push(engines, *argv);
+     }
+ 
+-    if (sk_OPENSSL_STRING_num(engines) == 0) {
++    if (sk_OPENSSL_CSTRING_num(engines) == 0) {
+         for (e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e)) {
+-            sk_OPENSSL_STRING_push(engines, (char *)ENGINE_get_id(e));
++            sk_OPENSSL_CSTRING_push(engines, ENGINE_get_id(e));
+         }
+     }
+ 
+-    for (i = 0; i < sk_OPENSSL_STRING_num(engines); i++) {
+-        const char *id = sk_OPENSSL_STRING_value(engines, i);
++    for (i = 0; i < sk_OPENSSL_CSTRING_num(engines); i++) {
++        const char *id = sk_OPENSSL_CSTRING_value(engines, i);
+         if ((e = ENGINE_by_id(id)) != NULL) {
+             const char *name = ENGINE_get_name(e);
+             /*
+@@ -481,9 +432,9 @@ int engine_main(int argc, char **argv)
+  end:
+ 
+     ERR_print_errors(bio_err);
+-    sk_OPENSSL_STRING_pop_free(engines, identity);
+-    sk_OPENSSL_STRING_pop_free(pre_cmds, identity);
+-    sk_OPENSSL_STRING_pop_free(post_cmds, identity);
++    sk_OPENSSL_CSTRING_free(engines);
++    sk_OPENSSL_STRING_free(pre_cmds);
++    sk_OPENSSL_STRING_free(post_cmds);
+     BIO_free_all(out);
+     return (ret);
+ }
 diff --git a/apps/errstr.c b/apps/errstr.c
-index 141338adac4b..ae7acf52f89d 100644
+index 141338a..ae7acf5 100644
 --- a/apps/errstr.c
 +++ b/apps/errstr.c
 @@ -1,58 +1,10 @@
@@ -7825,7 +8742,7 @@
      ret = 0;
      for (argv = opt_rest(); *argv; argv++) {
 diff --git a/apps/gendsa.c b/apps/gendsa.c
-index 33166b77ad71..2be3b9a0550e 100644
+index 33166b7..5dacf1b 100644
 --- a/apps/gendsa.c
 +++ b/apps/gendsa.c
 @@ -1,58 +1,10 @@
@@ -7893,8 +8810,17 @@
   */
  
  #include <openssl/opensslconf.h>
+@@ -101,7 +53,7 @@ int gendsa_main(int argc, char **argv)
+     char *outfile = NULL, *passoutarg = NULL, *passout = NULL, *prog;
+     OPTION_CHOICE o;
+     int ret = 1, private = 0;
+-    BIGNUM *p = NULL;
++    const BIGNUM *p = NULL;
+ 
+     prog = opt_init(argc, argv, gendsa_options);
+     while ((o = opt_next()) != OPT_EOF) {
 diff --git a/apps/genpkey.c b/apps/genpkey.c
-index ca5d848266c0..7abb3e6ff11f 100644
+index ca5d848..7abb3e6 100644
 --- a/apps/genpkey.c
 +++ b/apps/genpkey.c
 @@ -1,60 +1,12 @@
@@ -7953,9 +8879,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -7966,7 +8891,7 @@
  #include <string.h>
  #include "apps.h"
 diff --git a/apps/genrsa.c b/apps/genrsa.c
-index 8b6dd03d0839..79e2dae8008b 100644
+index 8b6dd03..4d104d2 100644
 --- a/apps/genrsa.c
 +++ b/apps/genrsa.c
 @@ -1,58 +1,10 @@
@@ -8034,8 +8959,17 @@
   */
  
  #include <openssl/opensslconf.h>
+@@ -107,7 +59,7 @@ int genrsa_main(int argc, char **argv)
+     ENGINE *eng = NULL;
+     BIGNUM *bn = BN_new();
+     BIO *out = NULL;
+-    BIGNUM *e;
++    const BIGNUM *e;
+     RSA *rsa = NULL;
+     const EVP_CIPHER *enc = NULL;
+     int ret = 1, num = DEFBITS, private = 0;
 diff --git a/apps/nseq.c b/apps/nseq.c
-index 4bc4f3282889..018d5ebdb655 100644
+index 4bc4f32..018d5eb 100644
 --- a/apps/nseq.c
 +++ b/apps/nseq.c
 @@ -1,59 +1,10 @@
@@ -8104,7 +9038,7 @@
  
  #include <stdio.h>
 diff --git a/apps/ocsp.c b/apps/ocsp.c
-index ca293a9709d9..48ceadd6b3d8 100644
+index ca293a9..1886504 100644
 --- a/apps/ocsp.c
 +++ b/apps/ocsp.c
 @@ -1,59 +1,10 @@
@@ -8191,8 +9125,12 @@
      {"index", OPT_INDEX, '<', "Certificate status index file"},
      {"CA", OPT_CA, '<', "CA certificate"},
      {"nmin", OPT_NMIN, 'p', "Number of minutes before next update"},
-@@ -216,9 +168,9 @@ OPTIONS ocsp_options[] = {
-      "Sesponder certificate to sign responses with"},
+@@ -213,12 +165,12 @@ OPTIONS ocsp_options[] = {
+      "Number of requests to accept (default unlimited)"},
+     {"ndays", OPT_NDAYS, 'p', "Number of days before next update"},
+     {"rsigner", OPT_RSIGNER, '<',
+-     "Sesponder certificate to sign responses with"},
++     "Responder certificate to sign responses with"},
      {"rkey", OPT_RKEY, '<', "Responder key to sign responses with"},
      {"rother", OPT_ROTHER, '<', "Other certificates to include in response"},
 -    {"rmd", OPT_RMD, 's'},
@@ -8314,8 +9252,25 @@
  }
  
  static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp)
+diff --git a/apps/openssl-vms.cnf b/apps/openssl-vms.cnf
+index 5b3a27f..0092a65 100644
+--- a/apps/openssl-vms.cnf
++++ b/apps/openssl-vms.cnf
+@@ -233,11 +233,7 @@ subjectKeyIdentifier=hash
+ 
+ authorityKeyIdentifier=keyid:always,issuer
+ 
+-# This is what PKIX recommends but some broken software chokes on critical
+-# extensions.
+-#basicConstraints = critical,CA:true
+-# So we do this instead.
+-basicConstraints = CA:true
++basicConstraints = critical,CA:true
+ 
+ # Key usage: this is typical for a CA certificate. However since it will
+ # prevent it being used as an test self-signed certificate it is best
 diff --git a/apps/openssl.c b/apps/openssl.c
-index c8912eee5941..f06927778ae0 100644
+index c8912ee..78ed023 100644
 --- a/apps/openssl.c
 +++ b/apps/openssl.c
 @@ -1,111 +1,10 @@
@@ -8436,7 +9391,15 @@
   */
  
  #include <stdio.h>
-@@ -305,7 +204,7 @@ int main(int argc, char *argv[])
+@@ -113,7 +12,6 @@
+ #include <stdlib.h>
+ #include <openssl/bio.h>
+ #include <openssl/crypto.h>
+-#include <openssl/rand.h>
+ #include <openssl/lhash.h>
+ #include <openssl/conf.h>
+ #include <openssl/x509.h>
+@@ -305,7 +203,7 @@ int main(int argc, char *argv[])
                  extern void add_history(const char *cp);
                  char *text;
  
@@ -8445,7 +9408,7 @@
                  if (text == NULL)
                      goto end;
                  i = strlen(text);
-@@ -491,10 +390,8 @@ int help_main(int argc, char **argv)
+@@ -491,10 +389,8 @@ int help_main(int argc, char **argv)
              return 0;
          }
      }
@@ -8457,7 +9420,7 @@
          BIO_printf(bio_err, "Usage: %s\n", prog);
          return 1;
      }
-@@ -628,7 +525,7 @@ static int function_cmp(const FUNCTION * a, const FUNCTION * b)
+@@ -628,7 +524,7 @@ static int function_cmp(const FUNCTION * a, const FUNCTION * b)
  
  static unsigned long function_hash(const FUNCTION * a)
  {
@@ -8466,7 +9429,7 @@
  }
  
  static int SortFnByName(const void *_f1, const void *_f2)
-@@ -743,9 +640,6 @@ static void list_disabled(void)
+@@ -743,9 +639,6 @@ static void list_disabled(void)
  #ifdef OPENSSL_NO_SCRYPT
      BIO_puts(bio_out, "SCRYPT\n");
  #endif
@@ -8476,7 +9439,7 @@
  #ifdef OPENSSL_NO_SCTP
      BIO_puts(bio_out, "SCTP\n");
  #endif
-@@ -761,15 +655,9 @@ static void list_disabled(void)
+@@ -761,15 +654,9 @@ static void list_disabled(void)
  #ifdef OPENSSL_NO_SRTP
      BIO_puts(bio_out, "SRTP\n");
  #endif
@@ -8492,16 +9455,31 @@
  #ifdef OPENSSL_NO_TLS1
      BIO_puts(bio_out, "TLS1\n");
  #endif
+diff --git a/apps/openssl.cnf b/apps/openssl.cnf
+index 53c4bef..b3e7444 100644
+--- a/apps/openssl.cnf
++++ b/apps/openssl.cnf
+@@ -233,11 +233,7 @@ subjectKeyIdentifier=hash
+ 
+ authorityKeyIdentifier=keyid:always,issuer
+ 
+-# This is what PKIX recommends but some broken software chokes on critical
+-# extensions.
+-#basicConstraints = critical,CA:true
+-# So we do this instead.
+-basicConstraints = CA:true
++basicConstraints = critical,CA:true
+ 
+ # Key usage: this is typical for a CA certificate. However since it will
+ # prevent it being used as an test self-signed certificate it is best
 diff --git a/apps/opt.c b/apps/opt.c
-index 63d32150cc63..87d3e4de63fe 100644
+index 63d3215..f72ac64 100644
 --- a/apps/opt.c
 +++ b/apps/opt.c
 @@ -1,50 +1,10 @@
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+/*
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -8532,7 +9510,9 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++/*
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -8561,6 +9541,15 @@
  
  #define MAX_OPT_HELP_WIDTH 30
  const char OPT_HELP_STR[] = "--";
+@@ -113,7 +74,7 @@ char *opt_progname(const char *argv0)
+ {
+     const char *p, *q;
+ 
+-    /* Find last special charcter sys:[foo.bar]openssl */
++    /* Find last special character sys:[foo.bar]openssl */
+     for (p = argv0 + strlen(argv0); --p > argv0;)
+         if (*p == ':' || *p == ']' || *p == '>') {
+             p++;
 @@ -179,7 +140,7 @@ char *opt_init(int ac, char **av, const OPTIONS *o)
          switch (i) {
          case   0: case '-': case '/': case '<': case '>': case 'E': case 'F':
@@ -8570,7 +9559,7 @@
              break;
          default:
              assert(0);
-@@ -615,10 +576,10 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm)
+@@ -615,10 +576,13 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm)
          break;
      case OPT_V_NO_ALT_CHAINS:
          X509_VERIFY_PARAM_set_flags(vpm, X509_V_FLAG_NO_ALT_CHAINS);
@@ -8580,10 +9569,13 @@
          X509_VERIFY_PARAM_set_flags(vpm, X509_V_FLAG_NO_CHECK_TIME);
 -	break;
 +        break;
++    case OPT_V_ALLOW_PROXY_CERTS:
++        X509_VERIFY_PARAM_set_flags(vpm, X509_V_FLAG_ALLOW_PROXY_CERTS);
++        break;
      }
      return 1;
  
-@@ -755,10 +716,12 @@ int opt_next(void)
+@@ -755,10 +719,12 @@ int opt_next(void)
                  return -1;
              }
              break;
@@ -8596,16 +9588,23 @@
                             o->valtype == 'E' ? OPT_FMT_PDE :
                             o->valtype == 'F' ? OPT_FMT_PEMDER
                             : OPT_FMT_ANY, &ival))
+@@ -894,7 +860,7 @@ void opt_help(const OPTIONS *list)
+         start[sizeof start - 1] = '\0';
+ 
+         if (o->name == OPT_MORE_STR) {
+-            /* Continuation of previous line; padd and print. */
++            /* Continuation of previous line; pad and print. */
+             start[width] = '\0';
+             BIO_printf(bio_err, "%s  %s\n", start, help);
+             continue;
 diff --git a/apps/passwd.c b/apps/passwd.c
-index 98092bb04b5d..e2825219c980 100644
+index 98092bb..e282521 100644
 --- a/apps/passwd.c
 +++ b/apps/passwd.c
 @@ -1,50 +1,10 @@
 -/* ====================================================================
 - * Copyright (c) 2000-2015 The OpenSSL Project.  All rights reserved.
-+/*
-+ * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -8636,7 +9635,9 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++/*
++ * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -8666,7 +9667,7 @@
          }
      }
 diff --git a/apps/pkcs12.c b/apps/pkcs12.c
-index 406b10328a5b..8602a99ff028 100644
+index 406b103..8602a99 100644
 --- a/apps/pkcs12.c
 +++ b/apps/pkcs12.c
 @@ -1,59 +1,10 @@
@@ -8779,7 +9780,7 @@
  
  /* Given a single certificate return a verified chain or NULL if error */
 diff --git a/apps/pkcs7.c b/apps/pkcs7.c
-index ad8330d42ff7..8763df098e7d 100644
+index ad8330d..8763df0 100644
 --- a/apps/pkcs7.c
 +++ b/apps/pkcs7.c
 @@ -1,106 +1,10 @@
@@ -8917,7 +9918,7 @@
          default:
              break;
 diff --git a/apps/pkcs8.c b/apps/pkcs8.c
-index 15b8e6a08417..22b586614468 100644
+index 15b8e6a..22b5866 100644
 --- a/apps/pkcs8.c
 +++ b/apps/pkcs8.c
 @@ -1,60 +1,12 @@
@@ -8976,9 +9977,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -9078,7 +10078,7 @@
          goto end;
      }
 diff --git a/apps/pkey.c b/apps/pkey.c
-index 122ced706cdf..50ee05f78499 100644
+index 122ced7..50ee05f 100644
 --- a/apps/pkey.c
 +++ b/apps/pkey.c
 @@ -1,60 +1,12 @@
@@ -9137,9 +10137,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -9209,7 +10208,7 @@
          } else if (outformat == FORMAT_ASN1) {
              if (pubout)
 diff --git a/apps/pkeyparam.c b/apps/pkeyparam.c
-index d55adef1ca00..f6bcb8f84efe 100644
+index d55adef..f6bcb8f 100644
 --- a/apps/pkeyparam.c
 +++ b/apps/pkeyparam.c
 @@ -1,60 +1,12 @@
@@ -9268,9 +10267,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -9281,7 +10279,7 @@
  #include <string.h>
  #include "apps.h"
 diff --git a/apps/pkeyutl.c b/apps/pkeyutl.c
-index fe7f5861199d..0dc389783d37 100644
+index fe7f586..0dc3897 100644
 --- a/apps/pkeyutl.c
 +++ b/apps/pkeyutl.c
 @@ -1,59 +1,10 @@
@@ -9359,7 +10357,7 @@
      {"keyform", OPT_KEYFORM, 'E', "Private key format - default PEM"},
      {"pkeyopt", OPT_PKEYOPT, 's', "Public key options as opt:value"},
 diff --git a/apps/prime.c b/apps/prime.c
-index b18257de7e8d..b0f5969a2203 100644
+index b18257d..b0f5969 100644
 --- a/apps/prime.c
 +++ b/apps/prime.c
 @@ -1,50 +1,10 @@
@@ -9469,7 +10467,7 @@
      return ret;
  }
 diff --git a/apps/progs.h b/apps/progs.h
-index c8779d902193..ac9d20804b08 100644
+index c8779d9..ac9d208 100644
 --- a/apps/progs.h
 +++ b/apps/progs.h
 @@ -1,12 +1,13 @@
@@ -9521,7 +10519,7 @@
      { FT_md, "mdc2", dgst_main},
  #endif
 diff --git a/apps/progs.pl b/apps/progs.pl
-index ee6ce9247451..3ec16d54cb81 100644
+index ee6ce92..3ec16d5 100644
 --- a/apps/progs.pl
 +++ b/apps/progs.pl
 @@ -1,12 +1,10 @@
@@ -9550,12 +10548,12 @@
 - * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
 + * WARNING: do not edit!
 + * Generated by apps/progs.pl
++ *
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
   *
 - * Licensed under the OpenSSL licenses, (the "License");
 - * you may not use this file except in compliance with the License.
 - * You may obtain a copy of the License at
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -9586,7 +10584,7 @@
  }
  
 diff --git a/apps/rand.c b/apps/rand.c
-index bd6fdff123ff..d60f1ecf8658 100644
+index bd6fdff..d60f1ec 100644
 --- a/apps/rand.c
 +++ b/apps/rand.c
 @@ -1,55 +1,10 @@
@@ -9685,23 +10683,19 @@
      return (ret);
  }
 diff --git a/apps/rehash.c b/apps/rehash.c
-index 895a222f0c78..4686b53b93d7 100644
+index 895a222..4686b53 100644
 --- a/apps/rehash.c
 +++ b/apps/rehash.c
 @@ -1,65 +1,22 @@
  /*
+- * C implementation based on the original Perl and shell versions
 + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
+- * Copyright (c) 2013-2014 Timo Teräs <timo.teras at iki.fi>
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
 + * https://www.openssl.org/source/license.html
-+ */
-+
-+/*
-  * C implementation based on the original Perl and shell versions
-  *
-  * Copyright (c) 2013-2014 Timo Teräs <timo.teras at iki.fi>
   */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
@@ -9754,8 +10748,12 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
-- */
++
++/*
++ * C implementation based on the original Perl and shell versions
+  *
++ * Copyright (c) 2013-2014 Timo Teräs <timo.teras at iki.fi>
+  */
  
  #include "apps.h"
  
@@ -9784,7 +10782,7 @@
  
      for (i = 0; i < 8; i++) {
          ch = filename[i];
-@@ -300,6 +260,11 @@ static int do_file(const char *filename, const char *fullpath, enum Hash h)
+@@ -300,6 +260,11 @@ end:
      return errs;
  }
  
@@ -9845,15 +10843,13 @@
      for (i = 0; i < OSSL_NELEM(hash_table); i++) {
          for (bp = hash_table[i]; bp; bp = nextbp) {
 diff --git a/apps/req.c b/apps/req.c
-index 7f4a946aaa1f..ca8a9af8747d 100644
+index 7f4a946..3e6cb07 100644
 --- a/apps/req.c
 +++ b/apps/req.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -9901,7 +10897,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -9937,8 +10935,33 @@
  
          EVP_PKEY_CTX_set_cb(genctx, genpkey_cb);
          EVP_PKEY_CTX_set_app_data(genctx, bio_err);
+@@ -812,7 +768,7 @@ int req_main(int argc, char **argv)
+         fprintf(stdout, "Modulus=");
+ #ifndef OPENSSL_NO_RSA
+         if (EVP_PKEY_base_id(tpubkey) == EVP_PKEY_RSA) {
+-            BIGNUM *n;
++            const BIGNUM *n;
+             RSA_get0_key(EVP_PKEY_get0_RSA(tpubkey), &n, NULL, NULL);
+             BN_print(out, n);
+         } else
+@@ -1153,12 +1109,12 @@ static int auto_info(X509_REQ *req, STACK_OF(CONF_VALUE) *dn_sk,
+             }
+         }
+ #ifndef CHARSET_EBCDIC
+-        plus_char = (*p == '+');
++        plus_char = (*type == '+');
+ #else
+-        plus_char = (*p == os_toascii['+']);
++        plus_char = (*type == os_toascii['+']);
+ #endif
+         if (plus_char) {
+-            p++;
++            type++;
+             mval = -1;
+         } else
+             mval = 0;
 diff --git a/apps/rsa.c b/apps/rsa.c
-index 980d9ef911c1..3a1195f566c6 100644
+index 980d9ef..63e88e6 100644
 --- a/apps/rsa.c
 +++ b/apps/rsa.c
 @@ -1,106 +1,10 @@
@@ -10054,8 +11077,17 @@
   */
  
  #include <openssl/opensslconf.h>
+@@ -310,7 +214,7 @@ int rsa_main(int argc, char **argv)
+     }
+ 
+     if (modulus) {
+-        BIGNUM *n;
++        const BIGNUM *n;
+         RSA_get0_key(rsa, &n, NULL, NULL);
+         BIO_printf(out, "Modulus=");
+         BN_print(out, n);
 diff --git a/apps/rsautl.c b/apps/rsautl.c
-index 728352cbd4c0..84f0164cebb6 100644
+index 728352c..84f0164 100644
 --- a/apps/rsautl.c
 +++ b/apps/rsautl.c
 @@ -1,59 +1,10 @@
@@ -10133,7 +11165,7 @@
      {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"},
  # endif
 diff --git a/apps/s_apps.h b/apps/s_apps.h
-index b02963591274..c47932bfb689 100644
+index b029635..c47932b 100644
 --- a/apps/s_apps.h
 +++ b/apps/s_apps.h
 @@ -1,112 +1,12 @@
@@ -10257,7 +11289,7 @@
  
  #if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS)
 diff --git a/apps/s_cb.c b/apps/s_cb.c
-index abcbad473829..9481fa51572a 100644
+index abcbad4..9481fa5 100644
 --- a/apps/s_cb.c
 +++ b/apps/s_cb.c
 @@ -1,111 +1,10 @@
@@ -10397,7 +11429,7 @@
      if (noshared) {
          BIO_puts(out, "\n");
 diff --git a/apps/s_client.c b/apps/s_client.c
-index d658e04994e0..d990f46bedfe 100644
+index d658e04..e79cf7e 100644
 --- a/apps/s_client.c
 +++ b/apps/s_client.c
 @@ -1,112 +1,12 @@
@@ -10538,7 +11570,64 @@
                  /* We just do busy waiting. Nothing clever */
                  continue;
              }
-@@ -341,7 +239,7 @@ typedef struct srp_arg_st {
+@@ -259,9 +157,9 @@ static unsigned int psk_client_cb(SSL *ssl, const char *hint, char *identity,
+                                   unsigned char *psk,
+                                   unsigned int max_psk_len)
+ {
+-    unsigned int psk_len = 0;
+     int ret;
+-    BIGNUM *bn = NULL;
++    long key_len;
++    unsigned char *key;
+ 
+     if (c_debug)
+         BIO_printf(bio_c_out, "psk_client_cb\n");
+@@ -282,31 +180,29 @@ static unsigned int psk_client_cb(SSL *ssl, const char *hint, char *identity,
+     if (c_debug)
+         BIO_printf(bio_c_out, "created identity '%s' len=%d\n", identity,
+                    ret);
+-    ret = BN_hex2bn(&bn, psk_key);
+-    if (!ret) {
+-        BIO_printf(bio_err, "Could not convert PSK key '%s' to BIGNUM\n",
++
++    /* convert the PSK key to binary */
++    key = OPENSSL_hexstr2buf(psk_key, &key_len);
++    if (key == NULL) {
++        BIO_printf(bio_err, "Could not convert PSK key '%s' to buffer\n",
+                    psk_key);
+-        BN_free(bn);
+         return 0;
+     }
+-
+-    if ((unsigned int)BN_num_bytes(bn) > max_psk_len) {
++    if (key_len > max_psk_len) {
+         BIO_printf(bio_err,
+-                   "psk buffer of callback is too small (%d) for key (%d)\n",
+-                   max_psk_len, BN_num_bytes(bn));
+-        BN_free(bn);
++                   "psk buffer of callback is too small (%d) for key (%ld)\n",
++                   max_psk_len, key_len);
++        OPENSSL_free(key);
+         return 0;
+     }
+ 
+-    psk_len = BN_bn2bin(bn, psk);
+-    BN_free(bn);
+-    if (psk_len == 0)
+-        goto out_err;
++    memcpy(psk, key, key_len);
++    OPENSSL_free(key);
+ 
+     if (c_debug)
+-        BIO_printf(bio_c_out, "created PSK len=%d\n", psk_len);
++        BIO_printf(bio_c_out, "created PSK len=%ld\n", key_len);
+ 
+-    return psk_len;
++    return key_len;
+  out_err:
+     if (c_debug)
+         BIO_printf(bio_err, "Error in PSK client callback\n");
+@@ -341,7 +237,7 @@ typedef struct srp_arg_st {
      int msg;                    /* copy from c_msg */
      int debug;                  /* copy from c_debug */
      int amp;                    /* allow more groups */
@@ -10547,7 +11636,20 @@
  } SRP_ARG;
  
  # define SRP_NUMBER_ITERATIONS_FOR_PRIME 64
-@@ -375,7 +273,7 @@ static int srp_Verify_N_and_g(const BIGNUM *N, const BIGNUM *g)
+@@ -353,10 +249,10 @@ static int srp_Verify_N_and_g(const BIGNUM *N, const BIGNUM *g)
+     BIGNUM *r = BN_new();
+     int ret =
+         g != NULL && N != NULL && bn_ctx != NULL && BN_is_odd(N) &&
+-        BN_is_prime_ex(N, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) &&
++        BN_is_prime_ex(N, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) == 1 &&
+         p != NULL && BN_rshift1(p, N) &&
+         /* p = (N-1)/2 */
+-        BN_is_prime_ex(p, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) &&
++        BN_is_prime_ex(p, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) == 1 &&
+         r != NULL &&
+         /* verify g^((N-1)/2) == -1 (mod N) */
+         BN_mod_exp(r, g, p, N, bn_ctx) &&
+@@ -375,7 +271,7 @@ static int srp_Verify_N_and_g(const BIGNUM *N, const BIGNUM *g)
   * The callback is only called for a non default group.
   *
   * An application does not need the call back at all if
@@ -10556,7 +11658,7 @@
   * client and server already share well known groups,
   * thus there is no need to verify them.
   * Furthermore, in case that a server actually proposes a group that
-@@ -508,7 +406,7 @@ static ossl_ssize_t hexdecode(const char **inptr, void *result)
+@@ -508,7 +404,7 @@ static ossl_ssize_t hexdecode(const char **inptr, void *result)
  {
      unsigned char **out = (unsigned char **)result;
      const char *in = *inptr;
@@ -10565,7 +11667,7 @@
      unsigned char *cp = ret;
      uint8_t byte;
      int nibble = 0;
-@@ -517,19 +415,16 @@ static ossl_ssize_t hexdecode(const char **inptr, void *result)
+@@ -517,19 +413,16 @@ static ossl_ssize_t hexdecode(const char **inptr, void *result)
          return -1;
  
      for (byte = 0; *in; ++in) {
@@ -10589,7 +11691,7 @@
          if ((nibble ^= 1) == 0) {
              *cp++ = byte;
              byte = 0;
-@@ -651,8 +546,14 @@ typedef enum OPTION_choice {
+@@ -651,8 +544,14 @@ typedef enum OPTION_choice {
      OPT_DEBUG, OPT_TLSEXTDEBUG, OPT_STATUS, OPT_WDEBUG,
      OPT_MSG, OPT_MSGFILE, OPT_ENGINE, OPT_TRACE, OPT_SECURITY_DEBUG,
      OPT_SECURITY_DEBUG_VERBOSE, OPT_SHOWCERTS, OPT_NBIO_TEST, OPT_STATE,
@@ -10606,7 +11708,7 @@
      OPT_TLS1_2, OPT_TLS1_1, OPT_TLS1, OPT_DTLS, OPT_DTLS1,
      OPT_DTLS1_2, OPT_TIMEOUT, OPT_MTU, OPT_KEYFORM, OPT_PASS,
      OPT_CERT_CHAIN, OPT_CAPATH, OPT_NOCAPATH, OPT_CHAINCAPATH, OPT_VERIFYCAPATH,
-@@ -683,7 +584,9 @@ OPTIONS s_client_options[] = {
+@@ -683,7 +582,9 @@ OPTIONS s_client_options[] = {
      {"unix", OPT_UNIX, 's', "Connect over unix domain sockets"},
  #endif
      {"4", OPT_4, '-', "Use IPv4 only"},
@@ -10616,7 +11718,7 @@
      {"verify", OPT_VERIFY, 'p', "Turn on peer certificate verification"},
      {"cert", OPT_CERT, '<', "Certificate file to use, PEM format assumed"},
      {"certform", OPT_CERTFORM, 'F',
-@@ -813,7 +716,7 @@ OPTIONS s_client_options[] = {
+@@ -813,7 +714,7 @@ OPTIONS s_client_options[] = {
      {"psk", OPT_PSK, 's', "PSK in hex (without 0x)"},
  #endif
  #ifndef OPENSSL_NO_SRP
@@ -10625,7 +11727,7 @@
      {"srppass", OPT_SRPPASS, 's', "Password for 'user'"},
      {"srp_lateuser", OPT_SRP_LATEUSER, '-',
       "SRP username into second ClientHello message"},
-@@ -835,7 +738,7 @@ OPTIONS s_client_options[] = {
+@@ -835,7 +736,7 @@ OPTIONS s_client_options[] = {
      {"noct", OPT_NOCT, '-', "Do not request or parse SCTs (default)"},
      {"ctlogfile", OPT_CTLOG_FILE, '<', "CT log list CONF file"},
  #endif
@@ -10634,7 +11736,7 @@
  };
  
  typedef enum PROTOCOL_choice {
-@@ -851,7 +754,7 @@ typedef enum PROTOCOL_choice {
+@@ -851,7 +752,7 @@ typedef enum PROTOCOL_choice {
      PROTO_IRC
  } PROTOCOL_CHOICE;
  
@@ -10643,7 +11745,7 @@
      {"smtp", PROTO_SMTP},
      {"pop3", PROTO_POP3},
      {"imap", PROTO_IMAP},
-@@ -860,9 +763,13 @@ static OPT_PAIR services[] = {
+@@ -860,9 +761,22 @@ static OPT_PAIR services[] = {
      {"xmpp-server", PROTO_XMPP_SERVER},
      {"telnet", PROTO_TELNET},
      {"irc", PROTO_IRC},
@@ -10655,10 +11757,36 @@
 + (o == OPT_4 || o == OPT_6 || o == OPT_HOST || o == OPT_PORT || o == OPT_CONNECT)
 +#define IS_UNIX_FLAG(o) (o == OPT_UNIX)
 +
++/* Free |*dest| and optionally set it to a copy of |source|. */
++static void freeandcopy(char **dest, const char *source)
++{
++    OPENSSL_free(*dest);
++    *dest = NULL;
++    if (source != NULL)
++        *dest = OPENSSL_strdup(source);
++}
++
  int s_client_main(int argc, char **argv)
  {
      BIO *sbio;
-@@ -937,6 +844,11 @@ int s_client_main(int argc, char **argv)
+@@ -883,7 +797,7 @@ int s_client_main(int argc, char **argv)
+     char *mbuf = NULL, *proxystr = NULL, *connectstr = NULL;
+     char *cert_file = NULL, *key_file = NULL, *chain_file = NULL;
+     char *chCApath = NULL, *chCAfile = NULL, *host = NULL;
+-    char *port = BUF_strdup(PORT);
++    char *port = OPENSSL_strdup(PORT);
+     char *inrand = NULL;
+     char *passarg = NULL, *pass = NULL, *vfyCApath = NULL, *vfyCAfile = NULL;
+     char *sess_in = NULL, *sess_out = NULL, *crl_file = NULL, *p;
+@@ -902,6 +816,7 @@ int s_client_main(int argc, char **argv)
+     int socket_family = AF_UNSPEC, socket_type = SOCK_STREAM;
+     int starttls_proto = PROTO_OFF, crl_format = FORMAT_PEM, crl_download = 0;
+     int write_tty, read_tty, write_ssl, read_ssl, tty_on, ssl_pending;
++    int at_eof = 0;
+     int read_buf_len = 0;
+     int fallback_scsv = 0;
+     long randamt = 0;
+@@ -937,6 +852,11 @@ int s_client_main(int argc, char **argv)
      int ct_validation = 0;
  #endif
      int min_version = 0, max_version = 0;
@@ -10670,7 +11798,7 @@
  
      FD_ZERO(&readfds);
      FD_ZERO(&writefds);
-@@ -972,6 +884,19 @@ int s_client_main(int argc, char **argv)
+@@ -972,6 +892,19 @@ int s_client_main(int argc, char **argv)
  
      prog = opt_init(argc, argv, s_client_options);
      while ((o = opt_next()) != OPT_EOF) {
@@ -10690,7 +11818,7 @@
          switch (o) {
          case OPT_EOF:
          case OPT_ERR:
-@@ -983,58 +908,27 @@ int s_client_main(int argc, char **argv)
+@@ -983,59 +916,28 @@ int s_client_main(int argc, char **argv)
              ret = 0;
              goto end;
          case OPT_4:
@@ -10735,7 +11863,7 @@
 -            OPENSSL_free(host); host = BUF_strdup(opt_arg());
 +        case OPT_HOST:
 +            connect_type = use_inet;
-+            host = OPENSSL_strdup(opt_arg());
++            freeandcopy(&host, opt_arg());
              break;
          case OPT_PORT:
 -#ifdef AF_UNIX
@@ -10747,7 +11875,7 @@
 -#endif
 -            OPENSSL_free(port); port = BUF_strdup(opt_arg());
 +            connect_type = use_inet;
-+            port = OPENSSL_strdup(opt_arg());
++            freeandcopy(&port, opt_arg());
              break;
          case OPT_CONNECT:
 -#ifdef AF_UNIX
@@ -10757,11 +11885,13 @@
 -#endif
 -            OPENSSL_free(host); host = NULL;
 -            OPENSSL_free(port); port = NULL;
+-            connectstr = opt_arg();
 +            connect_type = use_inet;
-             connectstr = opt_arg();
++            freeandcopy(&connectstr, opt_arg());
              break;
          case OPT_PROXY:
-@@ -1043,9 +937,9 @@ int s_client_main(int argc, char **argv)
+             proxystr = opt_arg();
+@@ -1043,9 +945,9 @@ int s_client_main(int argc, char **argv)
              break;
  #ifdef AF_UNIX
          case OPT_UNIX:
@@ -10769,11 +11899,11 @@
              socket_family = AF_UNIX;
 -            OPENSSL_free(host); host = BUF_strdup(opt_arg());
 -            OPENSSL_free(port); port = NULL;
-+            host = OPENSSL_strdup(opt_arg());
++            freeandcopy(&host, opt_arg());
              break;
  #endif
          case OPT_XMPPHOST:
-@@ -1136,7 +1030,6 @@ int s_client_main(int argc, char **argv)
+@@ -1136,7 +1038,6 @@ int s_client_main(int argc, char **argv)
                  BIO_printf(bio_err, "Error getting client auth engine\n");
                  goto opthelp;
              }
@@ -10781,7 +11911,7 @@
  #endif
              break;
          case OPT_RAND:
-@@ -1200,10 +1093,6 @@ int s_client_main(int argc, char **argv)
+@@ -1200,10 +1101,6 @@ int s_client_main(int argc, char **argv)
                  goto end;
              }
              break;
@@ -10792,7 +11922,7 @@
  #endif
  #ifndef OPENSSL_NO_SRP
          case OPT_SRPUSER:
-@@ -1233,13 +1122,6 @@ int s_client_main(int argc, char **argv)
+@@ -1233,13 +1130,6 @@ int s_client_main(int argc, char **argv)
              if (min_version < TLS1_VERSION)
                  min_version = TLS1_VERSION;
              break;
@@ -10806,7 +11936,7 @@
  #endif
          case OPT_SSL_CONFIG:
              ssl_config = opt_arg();
-@@ -1384,6 +1266,7 @@ int s_client_main(int argc, char **argv)
+@@ -1384,6 +1274,7 @@ int s_client_main(int argc, char **argv)
          case OPT_STARTTLS:
              if (!opt_pair(opt_arg(), services, &starttls_proto))
                  goto end;
@@ -10814,7 +11944,7 @@
          case OPT_SERVERNAME:
              servername = opt_arg();
              break;
-@@ -1417,6 +1300,10 @@ int s_client_main(int argc, char **argv)
+@@ -1417,6 +1308,10 @@ int s_client_main(int argc, char **argv)
              break;
          }
      }
@@ -10825,7 +11955,7 @@
      argc = opt_num_rest();
      if (argc != 0)
          goto opthelp;
-@@ -1801,9 +1688,9 @@ int s_client_main(int argc, char **argv)
+@@ -1801,9 +1696,9 @@ int s_client_main(int argc, char **argv)
              goto end;
          }
      } else if (dane_tlsa_rrset != NULL) {
@@ -10838,14 +11968,27 @@
      }
  
   re_start:
-@@ -2267,18 +2154,8 @@ int s_client_main(int argc, char **argv)
+@@ -2227,7 +2122,12 @@ int s_client_main(int argc, char **argv)
+         if (!ssl_pending) {
+ #if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS)
+             if (tty_on) {
+-                if (read_tty)
++                /*
++                 * Note that select() returns when read _would not block_,
++                 * and EOF satisfies that.  To avoid a CPU-hogging loop,
++                 * set the flag so we exit.
++                 */
++                if (read_tty && !at_eof)
+                     openssl_fdset(fileno(stdin), &readfds);
+                 if (write_tty)
+                     openssl_fdset(fileno(stdout), &writefds);
+@@ -2267,18 +2167,8 @@ int s_client_main(int argc, char **argv)
                      tv.tv_usec = 0;
                      i = select(width, (void *)&readfds, (void *)&writefds,
                                 NULL, &tv);
 -# if defined(OPENSSL_SYS_WINCE) || defined(OPENSSL_SYS_MSDOS)
 -                    if (!i && (!_kbhit() || !read_tty))
-+                    if (!i && (!has_stdin_waiting() || !read_tty))
-                         continue;
+-                        continue;
 -# else
 -                    if (!i && (!((_kbhit())
 -                                 || (WAIT_OBJECT_0 ==
@@ -10853,12 +11996,13 @@
 -                                                         (STD_INPUT_HANDLE),
 -                                                         0)))
 -                               || !read_tty))
--                        continue;
++                    if (!i && (!has_stdin_waiting() || !read_tty))
+                         continue;
 -# endif
                  } else
                      i = select(width, (void *)&readfds, (void *)&writefds,
                                 NULL, timeoutp);
-@@ -2359,6 +2236,8 @@ int s_client_main(int argc, char **argv)
+@@ -2359,6 +2249,8 @@ int s_client_main(int argc, char **argv)
                      write_ssl = 0;
                  }
                  break;
@@ -10867,7 +12011,7 @@
              case SSL_ERROR_SSL:
                  ERR_print_errors(bio_err);
                  goto shut;
-@@ -2445,20 +2324,17 @@ int s_client_main(int argc, char **argv)
+@@ -2445,20 +2337,17 @@ int s_client_main(int argc, char **argv)
                  BIO_printf(bio_c_out, "closed\n");
                  ret = 0;
                  goto shut;
@@ -10893,7 +12037,17 @@
  #else
          else if (FD_ISSET(fileno(stdin), &readfds))
  #endif
-@@ -2520,6 +2396,16 @@ int s_client_main(int argc, char **argv)
+@@ -2484,6 +2373,9 @@ int s_client_main(int argc, char **argv)
+             } else
+                 i = raw_read_stdin(cbuf, BUFSIZZ);
+ 
++            if (i == 0)
++                at_eof = 1;
++
+             if ((!c_ign_eof) && ((i <= 0) || (cbuf[0] == 'Q' && cmdletters))) {
+                 BIO_printf(bio_err, "DONE\n");
+                 ret = 0;
+@@ -2520,6 +2412,16 @@ int s_client_main(int argc, char **argv)
      if (in_init)
          print_stuff(bio_c_out, con, full_log);
      do_ssl_shutdown(con);
@@ -10910,7 +12064,7 @@
      BIO_closesocket(SSL_get_fd(con));
   end:
      if (con != NULL) {
-@@ -2669,6 +2555,7 @@ static void print_stuff(BIO *bio, SSL *s, int full)
+@@ -2669,6 +2571,7 @@ static void print_stuff(BIO *bio, SSL *s, int full)
                 SSL_CIPHER_get_version(c), SSL_CIPHER_get_name(c));
      if (peer != NULL) {
          EVP_PKEY *pktmp;
@@ -10918,8 +12072,24 @@
          pktmp = X509_get0_pubkey(peer);
          BIO_printf(bio, "Server public key is %d bit\n",
                     EVP_PKEY_bits(pktmp));
+@@ -2730,7 +2633,8 @@ static void print_stuff(BIO *bio, SSL *s, int full)
+ #endif
+ 
+     SSL_SESSION_print(bio, SSL_get_session(s));
+-    if (keymatexportlabel != NULL) {
++    if ((SSL_get_session(s) != NULL) &&
++        (keymatexportlabel != NULL)) {
+         BIO_printf(bio, "Keying material exporter:\n");
+         BIO_printf(bio, "    Label: '%s'\n", keymatexportlabel);
+         BIO_printf(bio, "    Length: %i bytes\n", keymatexportlen);
+@@ -2781,4 +2685,4 @@ static int ocsp_resp_cb(SSL *s, void *arg)
+ }
+ # endif
+ 
+-#endif
++#endif  /* OPENSSL_NO_SOCK */
 diff --git a/apps/s_server.c b/apps/s_server.c
-index 6c8541eec948..dce02f036c80 100644
+index 6c8541e..45c128d 100644
 --- a/apps/s_server.c
 +++ b/apps/s_server.c
 @@ -1,112 +1,12 @@
@@ -11062,7 +12232,62 @@
  static const char *session_id_prefix = NULL;
  
  #ifndef OPENSSL_NO_DTLS
-@@ -402,9 +302,6 @@ static void s_server_init(void)
+@@ -266,9 +166,8 @@ static unsigned int psk_server_cb(SSL *ssl, const char *identity,
+                                   unsigned char *psk,
+                                   unsigned int max_psk_len)
+ {
+-    unsigned int psk_len = 0;
+-    int ret;
+-    BIGNUM *bn = NULL;
++    long key_len = 0;
++    unsigned char *key;
+ 
+     if (s_debug)
+         BIO_printf(bio_s_out, "psk_server_cb\n");
+@@ -290,31 +189,26 @@ static unsigned int psk_server_cb(SSL *ssl, const char *identity,
+         BIO_printf(bio_s_out, "PSK client identity found\n");
+ 
+     /* convert the PSK key to binary */
+-    ret = BN_hex2bn(&bn, psk_key);
+-    if (!ret) {
+-        BIO_printf(bio_err, "Could not convert PSK key '%s' to BIGNUM\n",
++    key = OPENSSL_hexstr2buf(psk_key, &key_len);
++    if (key == NULL) {
++        BIO_printf(bio_err, "Could not convert PSK key '%s' to buffer\n",
+                    psk_key);
+-        BN_free(bn);
+         return 0;
+     }
+-    if (BN_num_bytes(bn) > (int)max_psk_len) {
++    if (key_len > (int)max_psk_len) {
+         BIO_printf(bio_err,
+-                   "psk buffer of callback is too small (%d) for key (%d)\n",
+-                   max_psk_len, BN_num_bytes(bn));
+-        BN_free(bn);
++                   "psk buffer of callback is too small (%d) for key (%ld)\n",
++                   max_psk_len, key_len);
++        OPENSSL_free(key);
+         return 0;
+     }
+ 
+-    ret = BN_bn2bin(bn, psk);
+-    BN_free(bn);
+-
+-    if (ret < 0)
+-        goto out_err;
+-    psk_len = (unsigned int)ret;
++    memcpy(psk, key, key_len);
++    OPENSSL_free(key);
+ 
+     if (s_debug)
+-        BIO_printf(bio_s_out, "fetched PSK len=%d\n", psk_len);
+-    return psk_len;
++        BIO_printf(bio_s_out, "fetched PSK len=%ld\n", key_len);
++    return key_len;
+  out_err:
+     if (s_debug)
+         BIO_printf(bio_err, "Error in PSK server callback\n");
+@@ -402,9 +296,6 @@ static void s_server_init(void)
      async = 0;
      split_send_fragment = 0;
      max_pipelines = 0;
@@ -11072,7 +12297,7 @@
  }
  
  static int local_argc = 0;
-@@ -420,17 +317,7 @@ static int ebcdic_gets(BIO *bp, char *buf, int size);
+@@ -420,17 +311,7 @@ static int ebcdic_gets(BIO *bp, char *buf, int size);
  static int ebcdic_puts(BIO *bp, const char *str);
  
  # define BIO_TYPE_EBCDIC_FILTER  (18|0x0200)
@@ -11091,7 +12316,7 @@
  
  /* This struct is "unwarranted chumminess with the compiler." */
  typedef struct {
-@@ -438,9 +325,22 @@ typedef struct {
+@@ -438,9 +319,22 @@ typedef struct {
      char buff[1];
  } EBCDIC_OUTBUFF;
  
@@ -11116,7 +12341,7 @@
  }
  
  static int ebcdic_new(BIO *bi)
-@@ -451,68 +351,71 @@ static int ebcdic_new(BIO *bi)
+@@ -451,68 +345,71 @@ static int ebcdic_new(BIO *bi)
      wbuf->alloced = 1024;
      wbuf->buff[0] = '\0';
  
@@ -11208,7 +12433,7 @@
  
      return (ret);
  }
-@@ -520,15 +423,16 @@ static int ebcdic_write(BIO *b, const char *in, int inl)
+@@ -520,15 +417,16 @@ static int ebcdic_write(BIO *b, const char *in, int inl)
  static long ebcdic_ctrl(BIO *b, int cmd, long num, void *ptr)
  {
      long ret;
@@ -11227,7 +12452,7 @@
          break;
      }
      return (ret);
-@@ -537,8 +441,10 @@ static long ebcdic_ctrl(BIO *b, int cmd, long num, void *ptr)
+@@ -537,8 +435,10 @@ static long ebcdic_ctrl(BIO *b, int cmd, long num, void *ptr)
  static int ebcdic_gets(BIO *bp, char *buf, int size)
  {
      int i, ret = 0;
@@ -11240,7 +12465,7 @@
  /*      return(BIO_gets(bp->next_bio,buf,size));*/
      for (i = 0; i < size - 1; ++i) {
          ret = ebcdic_read(bp, &buf[i], 1);
-@@ -556,8 +462,8 @@ static int ebcdic_gets(BIO *bp, char *buf, int size)
+@@ -556,8 +456,8 @@ static int ebcdic_gets(BIO *bp, char *buf, int size)
  
  static int ebcdic_puts(BIO *bp, const char *str)
  {
@@ -11251,7 +12476,7 @@
      return ebcdic_write(bp, str, strlen(str));
  }
  #endif
-@@ -664,19 +570,19 @@ static int cert_status_cb(SSL *s, void *arg)
+@@ -664,19 +564,19 @@ static int cert_status_cb(SSL *s, void *arg)
                               SSL_CTX_get_cert_store(SSL_get_SSL_CTX(s)),
                               NULL, NULL))
          goto err;
@@ -11276,7 +12501,7 @@
      if (!OCSP_request_add0_id(req, id))
          goto err;
      id = NULL;
-@@ -1007,12 +913,12 @@ OPTIONS s_server_options[] = {
+@@ -1007,12 +907,12 @@ OPTIONS s_server_options[] = {
  #ifndef OPENSSL_NO_ENGINE
      {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"},
  #endif
@@ -11291,7 +12516,7 @@
      EVP_PKEY *s_key = NULL, *s_dkey = NULL;
      SSL_CONF_CTX *cctx = NULL;
      const SSL_METHOD *meth = TLS_server_method();
-@@ -1484,7 +1390,7 @@ int s_server_main(int argc, char *argv[])
+@@ -1484,7 +1384,7 @@ int s_server_main(int argc, char *argv[])
              session_id_prefix = opt_arg();
              break;
          case OPT_ENGINE:
@@ -11300,7 +12525,7 @@
              break;
          case OPT_RAND:
              inrand = opt_arg();
-@@ -1590,7 +1496,7 @@ int s_server_main(int argc, char *argv[])
+@@ -1590,7 +1490,7 @@ int s_server_main(int argc, char *argv[])
          goto end;
  
      if (nocert == 0) {
@@ -11309,7 +12534,7 @@
                           "server certificate private key file");
          if (!s_key) {
              ERR_print_errors(bio_err);
-@@ -1611,7 +1517,7 @@ int s_server_main(int argc, char *argv[])
+@@ -1611,7 +1511,7 @@ int s_server_main(int argc, char *argv[])
          }
  
          if (tlsextcbp.servername) {
@@ -11318,7 +12543,7 @@
                                "second server certificate private key file");
              if (!s_key2) {
                  ERR_print_errors(bio_err);
-@@ -1670,7 +1576,7 @@ int s_server_main(int argc, char *argv[])
+@@ -1670,7 +1570,7 @@ int s_server_main(int argc, char *argv[])
              s_dkey_file = s_dcert_file;
  
          s_dkey = load_key(s_dkey_file, s_dkey_format,
@@ -11327,7 +12552,7 @@
          if (!s_dkey) {
              ERR_print_errors(bio_err);
              goto end;
-@@ -1854,9 +1760,10 @@ int s_server_main(int argc, char *argv[])
+@@ -1854,9 +1754,10 @@ int s_server_main(int argc, char *argv[])
          if (async)
              SSL_CTX_set_mode(ctx2, SSL_MODE_ASYNC);
  
@@ -11340,7 +12565,7 @@
          }
          if (vpmtouched && !SSL_CTX_set1_param(ctx2, vpm)) {
              BIO_printf(bio_err, "Error setting verify params\n");
-@@ -2079,6 +1986,9 @@ int s_server_main(int argc, char *argv[])
+@@ -2079,6 +1980,9 @@ int s_server_main(int argc, char *argv[])
      bio_s_out = NULL;
      BIO_free(bio_s_msg);
      bio_s_msg = NULL;
@@ -11350,7 +12575,7 @@
      return (ret);
  }
  
-@@ -2257,10 +2167,10 @@ static int sv_body(int s, int stype, unsigned char *context)
+@@ -2257,10 +2161,10 @@ static int sv_body(int s, int stype, unsigned char *context)
              tv.tv_sec = 1;
              tv.tv_usec = 0;
              i = select(width, (void *)&readfds, NULL, NULL, &tv);
@@ -11364,7 +12589,7 @@
  #else
              if ((SSL_version(con) == DTLS1_VERSION) &&
                  DTLSv1_get_timeout(con, &timeout))
-@@ -2399,13 +2309,19 @@ static int sv_body(int s, int stype, unsigned char *context)
+@@ -2399,13 +2303,19 @@ static int sv_body(int s, int stype, unsigned char *context)
                      break;
                  case SSL_ERROR_WANT_ASYNC:
                      BIO_printf(bio_s_out, "Write BLOCK (Async)\n");
@@ -11384,7 +12609,7 @@
                  case SSL_ERROR_SYSCALL:
                  case SSL_ERROR_SSL:
                      BIO_printf(bio_s_out, "ERROR\n");
-@@ -2469,17 +2385,24 @@ static int sv_body(int s, int stype, unsigned char *context)
+@@ -2469,17 +2379,24 @@ static int sv_body(int s, int stype, unsigned char *context)
                      ascii2ebcdic(buf, buf, i);
  #endif
                      raw_write_stdout(buf, (unsigned int)i);
@@ -11409,7 +12634,7 @@
                  case SSL_ERROR_SYSCALL:
                  case SSL_ERROR_SSL:
                      BIO_printf(bio_s_out, "ERROR\n");
-@@ -2530,6 +2453,7 @@ static int init_ssl_connection(SSL *con)
+@@ -2530,6 +2447,7 @@ static int init_ssl_connection(SSL *con)
      unsigned next_proto_neg_len;
  #endif
      unsigned char *exportedkeymat;
@@ -11417,7 +12642,7 @@
  
  #ifndef OPENSSL_NO_DTLS
      if(dtlslisten) {
-@@ -2557,6 +2481,8 @@ static int init_ssl_connection(SSL *con)
+@@ -2557,6 +2475,8 @@ static int init_ssl_connection(SSL *con)
              BIO_ADDR_free(client);
              dtlslisten = 0;
              i = SSL_accept(con);
@@ -11426,7 +12651,7 @@
          }
      } else
  #endif
-@@ -2564,6 +2490,8 @@ static int init_ssl_connection(SSL *con)
+@@ -2564,6 +2484,8 @@ static int init_ssl_connection(SSL *con)
      do {
          i = SSL_accept(con);
  
@@ -11435,7 +12660,7 @@
  #ifdef CERT_CB_TEST_RETRY
          {
              while (i <= 0 && SSL_get_error(con, i) == SSL_ERROR_WANT_X509_LOOKUP
-@@ -2571,6 +2499,8 @@ static int init_ssl_connection(SSL *con)
+@@ -2571,6 +2493,8 @@ static int init_ssl_connection(SSL *con)
                  BIO_printf(bio_err,
                         "LOOKUP from certificate callback during accept\n");
                  i = SSL_accept(con);
@@ -11444,7 +12669,7 @@
              }
          }
  #endif
-@@ -2589,13 +2519,15 @@ static int init_ssl_connection(SSL *con)
+@@ -2589,13 +2513,15 @@ static int init_ssl_connection(SSL *con)
              else
                  BIO_printf(bio_s_out, "LOOKUP not successful\n");
              i = SSL_accept(con);
@@ -11461,7 +12686,7 @@
              BIO_printf(bio_s_out, "DELAY\n");
              return (1);
          }
-@@ -2681,6 +2613,7 @@ static int init_ssl_connection(SSL *con)
+@@ -2681,6 +2607,7 @@ static int init_ssl_connection(SSL *con)
          OPENSSL_free(exportedkeymat);
      }
  
@@ -11469,16 +12694,20 @@
      return (1);
  }
  
+@@ -3377,4 +3304,4 @@ static void free_sessions(void)
+     first = NULL;
+ }
+ 
+-#endif
++#endif  /* OPENSSL_NO_SOCK */
 diff --git a/apps/s_socket.c b/apps/s_socket.c
-index 465321754cbb..d16f5ad81731 100644
+index 4653217..d16f5ad 100644
 --- a/apps/s_socket.c
 +++ b/apps/s_socket.c
 @@ -1,106 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -11565,7 +12794,9 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -11596,15 +12827,13 @@
      }
      BIO_ADDRINFO_free(res);
 diff --git a/apps/s_time.c b/apps/s_time.c
-index 6890bc1be00c..ecab515b1f65 100644
+index 6890bc1..ecab515 100644
 --- a/apps/s_time.c
 +++ b/apps/s_time.c
 @@ -1,67 +1,14 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -11652,7 +12881,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -11674,7 +12905,7 @@
  #include <stdlib.h>
  #include <string.h>
 diff --git a/apps/sess_id.c b/apps/sess_id.c
-index f40f131e1bd5..2b63e69cdcc0 100644
+index f40f131..2b63e69 100644
 --- a/apps/sess_id.c
 +++ b/apps/sess_id.c
 @@ -1,58 +1,10 @@
@@ -11743,7 +12974,7 @@
  
  #include <stdio.h>
 diff --git a/apps/smime.c b/apps/smime.c
-index 60daeb408d5e..f9f3d2378753 100644
+index 60daeb4..f9f3d23 100644
 --- a/apps/smime.c
 +++ b/apps/smime.c
 @@ -1,59 +1,10 @@
@@ -11888,7 +13119,7 @@
              if (operation == SMIME_RESIGN)
                  rv = SMIME_write_PKCS7(out, p7, indata, flags);
 diff --git a/apps/speed.c b/apps/speed.c
-index 160841d040b1..3b162e1058ca 100644
+index 160841d..3b162e1 100644
 --- a/apps/speed.c
 +++ b/apps/speed.c
 @@ -1,59 +1,12 @@
@@ -12022,7 +13253,7 @@
      }
      OPENSSL_free(loopargs);
 diff --git a/apps/spkac.c b/apps/spkac.c
-index 07f36d370d60..b6fc46dfc26f 100644
+index 07f36d3..b6fc46d 100644
 --- a/apps/spkac.c
 +++ b/apps/spkac.c
 @@ -1,60 +1,12 @@
@@ -12081,9 +13312,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -12094,7 +13324,7 @@
  #include <stdlib.h>
  #include <string.h>
 diff --git a/apps/srp.c b/apps/srp.c
-index 1bf2ee299a01..5ba937598452 100644
+index 1bf2ee2..5ba9375 100644
 --- a/apps/srp.c
 +++ b/apps/srp.c
 @@ -1,59 +1,10 @@
@@ -12207,7 +13437,7 @@
          ERR_print_errors(bio_err);
      if (randfile)
 diff --git a/apps/testdsa.h b/apps/testdsa.h
-index c72c71eccea3..1e4502a10bd0 100644
+index c72c71e..1e4502a 100644
 --- a/apps/testdsa.h
 +++ b/apps/testdsa.h
 @@ -1,50 +1,10 @@
@@ -12268,7 +13498,7 @@
  
  /* used by speed.c */
 diff --git a/apps/testrsa.h b/apps/testrsa.h
-index b1633136605c..1350ce54e3fb 100644
+index b163313..1350ce5 100644
 --- a/apps/testrsa.h
 +++ b/apps/testrsa.h
 @@ -1,59 +1,10 @@
@@ -12338,7 +13568,7 @@
  
  static unsigned char test512[] = {
 diff --git a/apps/timeouts.h b/apps/timeouts.h
-index dc83e9deec14..e023b0aa4920 100644
+index dc83e9d..e023b0a 100644
 --- a/apps/timeouts.h
 +++ b/apps/timeouts.h
 @@ -1,59 +1,10 @@
@@ -12407,7 +13637,7 @@
  
  #ifndef INCLUDED_TIMEOUTS_H
 diff --git a/apps/ts.c b/apps/ts.c
-index 70a9013e2b6f..ec83aacda4aa 100644
+index 70a9013..80f14bd 100644
 --- a/apps/ts.c
 +++ b/apps/ts.c
 @@ -1,59 +1,10 @@
@@ -12516,8 +13746,14 @@
          goto end;
  
      /* Check parameter consistency and execute the appropriate function. */
+@@ -1029,4 +978,4 @@ static int verify_cb(int ok, X509_STORE_CTX *ctx)
+ {
+     return ok;
+ }
+-#endif
++#endif  /* ndef OPENSSL_NO_TS */
 diff --git a/apps/tsget.in b/apps/tsget.in
-index fe029f353a04..706711155244 100644
+index fe029f3..7067111 100644
 --- a/apps/tsget.in
 +++ b/apps/tsget.in
 @@ -1,7 +1,11 @@
@@ -12546,7 +13782,7 @@
      # Options for POST method.
      $curl->setopt(CURLOPT_UPLOAD, 1);
 diff --git a/apps/verify.c b/apps/verify.c
-index fa517830cf25..86d1b2a8517e 100644
+index fa51783..40e19d4 100644
 --- a/apps/verify.c
 +++ b/apps/verify.c
 @@ -1,58 +1,10 @@
@@ -12614,8 +13850,16 @@
   */
  
  #include <stdio.h>
+@@ -262,6 +214,7 @@ static int check(X509_STORE *ctx, char *file,
+                (file == NULL) ? "stdin" : file);
+         goto end;
+     }
++
+     X509_STORE_set_flags(ctx, vflags);
+     if (!X509_STORE_CTX_init(csc, ctx, x, uchain)) {
+         printf("error %s: X.509 store context initialization failed\n",
 diff --git a/apps/version.c b/apps/version.c
-index 0a252e75b23d..e3c8299fcf9a 100644
+index 0a252e7..e3c8299 100644
 --- a/apps/version.c
 +++ b/apps/version.c
 @@ -1,111 +1,10 @@
@@ -12737,7 +13981,7 @@
  
  #include <stdio.h>
 diff --git a/apps/vms_decc_init.c b/apps/vms_decc_init.c
-index ecf21afb6ea6..f83f7168efe5 100644
+index ecf21af..f83f716 100644
 --- a/apps/vms_decc_init.c
 +++ b/apps/vms_decc_init.c
 @@ -1,53 +1,10 @@
@@ -12746,8 +13990,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2010 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -12778,7 +14021,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -12801,7 +14045,7 @@
  #if defined( __VMS) && !defined( OPENSSL_NO_DECC_INIT) && \
 diff --git a/apps/winrand.c b/apps/winrand.c
 deleted file mode 100644
-index a5fe79103771..000000000000
+index a5fe791..0000000
 --- a/apps/winrand.c
 +++ /dev/null
 @@ -1,145 +0,0 @@
@@ -12951,7 +14195,7 @@
 -    return DefWindowProc(hwnd, iMsg, wParam, lParam);
 -}
 diff --git a/apps/x509.c b/apps/x509.c
-index 6e6ee08ad29a..64197665d0ea 100644
+index 6e6ee08..ed49c4e 100644
 --- a/apps/x509.c
 +++ b/apps/x509.c
 @@ -1,58 +1,10 @@
@@ -13075,7 +14319,7 @@
      }
  
      if (reject) {
-@@ -645,6 +600,7 @@ int x509_main(int argc, char **argv)
+@@ -645,14 +600,15 @@ int x509_main(int argc, char **argv)
              objtmp = sk_ASN1_OBJECT_value(reject, i);
              X509_add1_reject_object(x, objtmp);
          }
@@ -13083,6 +14327,33 @@
      }
  
      if (num) {
+         for (i = 1; i <= num; i++) {
+             if (issuer == i) {
+-                print_name(out, "issuer= ", X509_get_issuer_name(x), nmflag);
++                print_name(out, "issuer=", X509_get_issuer_name(x), nmflag);
+             } else if (subject == i) {
+-                print_name(out, "subject= ",
++                print_name(out, "subject=",
+                            X509_get_subject_name(x), nmflag);
+             } else if (serial == i) {
+                 BIO_printf(out, "serial=");
+@@ -728,14 +684,14 @@ int x509_main(int argc, char **argv)
+                 BIO_printf(out, "Modulus=");
+ #ifndef OPENSSL_NO_RSA
+                 if (EVP_PKEY_id(pkey) == EVP_PKEY_RSA) {
+-                    BIGNUM *n;
++                    const BIGNUM *n;
+                     RSA_get0_key(EVP_PKEY_get0_RSA(pkey), &n, NULL, NULL);
+                     BN_print(out, n);
+                 } else
+ #endif
+ #ifndef OPENSSL_NO_DSA
+                 if (EVP_PKEY_id(pkey) == EVP_PKEY_DSA) {
+-                    BIGNUM *dsapub = NULL;
++                    const BIGNUM *dsapub = NULL;
+                     DSA_get0_key(EVP_PKEY_get0_DSA(pkey), &dsapub, NULL);
+                     BN_print(out, dsapub);
+                 } else
 @@ -763,7 +719,7 @@ int x509_main(int argc, char **argv)
                  BIO_printf(out, "/*\n"
                                  " * Subject: %s\n", buf);
@@ -13111,11 +14382,53 @@
      EVP_PKEY_copy_parameters(upkey, pkey);
  
      xsc = X509_STORE_CTX_new();
+@@ -1127,7 +1088,7 @@ static int sign(X509 *x, EVP_PKEY *pkey, int days, int clrext,
+ static int purpose_print(BIO *bio, X509 *cert, X509_PURPOSE *pt)
+ {
+     int id, i, idret;
+-    char *pname;
++    const char *pname;
+     id = X509_PURPOSE_get_id(pt);
+     pname = X509_PURPOSE_get0_name(pt);
+     for (i = 0; i < 2; i++) {
+diff --git a/appveyor.yml b/appveyor.yml
+index 46eaf39..c668b39 100644
+--- a/appveyor.yml
++++ b/appveyor.yml
+@@ -27,13 +27,27 @@ before_build:
+         }
+     - ps: $env:VSCOMNTOOLS=(Get-Content ("env:VS" + "$env:VSVER" + "0COMNTOOLS"))
+     - call "%VSCOMNTOOLS%\..\..\VC\vcvarsall.bat" %VCVARS_PLATFORM%
+-    - perl Configure %TARGET% no-asm %SHARED%
++    - mkdir _build
++    - cd _build
++    - perl ..\Configure %TARGET% no-asm %SHARED%
++    - cd ..
+ 
+ build_script:
++    - cd _build
+     - nmake
++    - cd ..
+ 
+ test_script:
++    - cd _build
+     - nmake test
++    - cd ..
++
++# Fake deploy script to test installation
++deploy_script:
++    - mkdir _install
++    - cd _build
++    - nmake install install_docs DESTDIR=..\_install
++    - cd ..
+ 
+ notifications:
+     - provider: Email
 diff --git a/build.info b/build.info
-index ab941f8ce467..6bc70c6939fc 100644
+index ab941f8..6f057cd 100644
 --- a/build.info
 +++ b/build.info
-@@ -2,8 +2,8 @@
+@@ -2,10 +2,22 @@
  LIBS=libcrypto libssl
  ORDINALS[libcrypto]=crypto
  ORDINALS[libssl]=ssl
@@ -13125,9 +14438,23 @@
 +INCLUDE[libssl]="{- rel2abs(catdir($builddir,"include")) -}" . include
  DEPEND[libssl]=libcrypto
  
++# Empty DEPEND "indices" means the dependencies are expected to be built
++# unconditionally before anything else.
++DEPEND[]=include/openssl/opensslconf.h crypto/include/internal/bn_conf.h \
++         crypto/include/internal/dso_conf.h
++DEPEND[include/openssl/opensslconf.h]=configdata.pm
++GENERATE[include/openssl/opensslconf.h]=include/openssl/opensslconf.h.in
++DEPEND[crypto/include/internal/bn_conf.h]=configdata.pm
++GENERATE[crypto/include/internal/bn_conf.h]=crypto/include/internal/bn_conf.h.in
++DEPEND[crypto/include/internal/dso_conf.h]=configdata.pm
++GENERATE[crypto/include/internal/dso_conf.h]=crypto/include/internal/dso_conf.h.in
++
++
  IF[{- $config{target} =~ /^Cygwin/ -}]
+  SHARED_NAME[libcrypto]=cygcrypto-{- $config{shlib_major}.".".$config{shlib_minor} -}
+  SHARED_NAME[libssl]=cygssl-{- $config{shlib_major}.".".$config{shlib_minor} -}
 diff --git a/config b/config
-index 9dfe1c3d2b03..2e02ae36918c 100755
+index 9dfe1c3..1d33126 100755
 --- a/config
 +++ b/config
 @@ -1,25 +1,15 @@
@@ -13185,7 +14512,27 @@
  	    *)
  		echo "i686-apple-darwin${VERSION}"
  		;;
-@@ -461,14 +450,6 @@ case "$GUESSOS" in
+@@ -427,19 +416,6 @@ if [ "$SYSTEM" = "SunOS" ]; then
+   fi
+ fi
+ 
+-if [ "${SYSTEM}-${MACHINE}" = "Linux-alpha" ]; then
+-  # check for Compaq C, expected output is "blah-blah C Vx.x"
+-  CCCVER=`(ccc -V 2>&1) 2>/dev/null | \
+-	egrep -e '.* C V[0-9]\.[0-9]' | \
+-	sed 's/.* C V\([0-9]\)\.\([0-9]\).*/\1\2/'`
+-  CCCVER=${CCCVER:-0}
+-  if [ $CCCVER -gt 60 ]; then
+-    CC=ccc	# overrides gcc!!! well, ccc outperforms inoticeably
+-		# only on hash routines and des, otherwise gcc (2.95)
+-		# keeps along rather tight...
+-  fi
+-fi
+-
+ if [ "${SYSTEM}" = "AIX" ]; then	# favor vendor cc over gcc
+     (cc) 2>&1 | grep -iv "not found" > /dev/null && CC=cc
+ fi
+@@ -461,14 +437,6 @@ case "$GUESSOS" in
    uClinux*)
      OUT=uClinux-dist
  	;;
@@ -13200,7 +14547,7 @@
    mips3-sgi-irix)
  	#CPU=`(hinv -t cpu) 2>/dev/null | head -1 | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
  	#CPU=${CPU:-0}
-@@ -515,7 +496,7 @@ case "$GUESSOS" in
+@@ -515,7 +483,7 @@ case "$GUESSOS" in
  	ISA64=`(sysctl -n hw.optional.x86_64) 2>/dev/null`
  	if [ "$ISA64" = "1" -a -z "$KERNEL_BITS" ]; then
  	    echo "WARNING! If you wish to build 64-bit library, then you have to"
@@ -13209,7 +14556,7 @@
  	    if [ "$TEST" = "false" -a -t 1 ]; then
  	      echo "         You have about 5 seconds to press Ctrl-C to abort."
  	      # The stty technique used elsewhere doesn't work on
-@@ -528,6 +509,22 @@ case "$GUESSOS" in
+@@ -528,6 +496,22 @@ case "$GUESSOS" in
  	else
  	    OUT="darwin-i386-cc"
  	fi ;;
@@ -13232,8 +14579,51 @@
    armv6+7-*-iphoneos)
  	options="$options -arch%20armv6 -arch%20armv7"
  	OUT="iphoneos-cross" ;;
+@@ -643,21 +627,15 @@ case "$GUESSOS" in
+ 	#fi
+ 	OUT="linux64-s390x"
+ 	;;
+-  x86_64-*-linux?) OUT="linux-x86_64" ;;
+-  *86-*-linux2) OUT="linux-elf"
+-	if [ "$GCCVER" -gt 28 ]; then
+-          if grep '^model.*Pentium' /proc/cpuinfo >/dev/null ; then
+-	    options="$options -march=pentium"
+-          fi
+-          if grep '^model.*Pentium Pro' /proc/cpuinfo >/dev/null ; then
+-	    options="$options -march=pentiumpro"
+-          fi
+-          if grep '^model.*K6' /proc/cpuinfo >/dev/null ; then
+-	    options="$options -march=k6"
+-          fi
+-        fi ;;
+-  *-*-linux1) OUT="linux-aout" ;;
+-  *-*-linux2) OUT="linux-generic32" ;;
++  x86_64-*-linux?)
++	if $CC -dM -E -x c /dev/null 2>&1 | grep -q ILP32 > /dev/null; then
++	    OUT="linux-x32"
++	else
++	    OUT="linux-x86_64"
++	fi ;;
++  *86-*-linux2) OUT="linux-elf" ;;
++  *86-*-linux1) OUT="linux-aout" ;;
++  *-*-linux?) OUT="linux-generic32" ;;
+   sun4[uv]*-*-solaris2)
+ 	OUT="solaris-sparcv9-$CC"
+ 	ISA64=`(isainfo) 2>/dev/null | grep sparcv9`
+@@ -728,9 +706,10 @@ case "$GUESSOS" in
+ 			*ELF*)	OUT="BSD-x86-elf" ;;
+ 			*)	OUT="BSD-x86"; options="$options no-sse2" ;;
+ 			esac ;;
++  *-*-*bsd*)		OUT="BSD-generic32" ;;
++
+   x86_64-*-haiku)	OUT="haiku-x86_64" ;;
+   *-*-haiku)		OUT="haiku-x86" ;;
+-  *-*-*bsd*)		OUT="BSD-generic32" ;;
+ 
+   *-*-osf)		OUT="osf1-alpha-cc" ;;
+   *-*-tru64)		OUT="tru64-alpha-cc" ;;
 diff --git a/config.com b/config.com
-index 4151a88a442b..015de511a284 100644
+index 4151a88..015de51 100644
 --- a/config.com
 +++ b/config.com
 @@ -1,4 +1,10 @@
@@ -13248,7 +14638,7 @@
  $	! Very simple for the moment, it will take the following arguments:
  $	!
 diff --git a/crypto/LPdir_nyi.c b/crypto/LPdir_nyi.c
-index 283d5b06369e..18566fd673b5 100644
+index 283d5b0..18566fd 100644
 --- a/crypto/LPdir_nyi.c
 +++ b/crypto/LPdir_nyi.c
 @@ -1,4 +1,13 @@
@@ -13266,7 +14656,7 @@
   */
  /*
 diff --git a/crypto/LPdir_unix.c b/crypto/LPdir_unix.c
-index 1428cd16c611..8f27f7080185 100644
+index 1428cd1..8f27f70 100644
 --- a/crypto/LPdir_unix.c
 +++ b/crypto/LPdir_unix.c
 @@ -1,4 +1,13 @@
@@ -13284,7 +14674,7 @@
   * $
   */
 diff --git a/crypto/LPdir_vms.c b/crypto/LPdir_vms.c
-index 362918dae379..1a5b60febfbc 100644
+index 362918d..1a5b60f 100644
 --- a/crypto/LPdir_vms.c
 +++ b/crypto/LPdir_vms.c
 @@ -1,4 +1,13 @@
@@ -13302,7 +14692,7 @@
   * All rights reserved.
   *
 diff --git a/crypto/LPdir_win.c b/crypto/LPdir_win.c
-index 4ff514f8856b..71103da0ad1e 100644
+index 4ff514f..71103da 100644
 --- a/crypto/LPdir_win.c
 +++ b/crypto/LPdir_win.c
 @@ -1,28 +1,12 @@
@@ -13341,7 +14731,7 @@
  #include <tchar.h>
  #ifndef LPDIR_H
 diff --git a/crypto/LPdir_win32.c b/crypto/LPdir_win32.c
-index b1c983d87f13..8f6d6ada031d 100644
+index b1c983d..8f6d6ad 100644
 --- a/crypto/LPdir_win32.c
 +++ b/crypto/LPdir_win32.c
 @@ -1,4 +1,13 @@
@@ -13359,7 +14749,7 @@
   * $
   */
 diff --git a/crypto/LPdir_wince.c b/crypto/LPdir_wince.c
-index ae8a56f4be89..163479e3409a 100644
+index ae8a56f..163479e 100644
 --- a/crypto/LPdir_wince.c
 +++ b/crypto/LPdir_wince.c
 @@ -1,4 +1,13 @@
@@ -13378,7 +14768,7 @@
   */
 diff --git a/crypto/Makefile.in b/crypto/Makefile.in
 deleted file mode 100644
-index 60304acbc28d..000000000000
+index 60304ac..0000000
 --- a/crypto/Makefile.in
 +++ /dev/null
 @@ -1,117 +0,0 @@
@@ -13501,7 +14891,7 @@
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/aes/Makefile.in b/crypto/aes/Makefile.in
 deleted file mode 100644
-index 0dc96e4a3d8d..000000000000
+index 0dc96e4..0000000
 --- a/crypto/aes/Makefile.in
 +++ /dev/null
 @@ -1,106 +0,0 @@
@@ -13612,7 +15002,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/aes/aes_cbc.c b/crypto/aes/aes_cbc.c
-index 826de68af886..342841fc4ff7 100644
+index 826de68..342841f 100644
 --- a/crypto/aes/aes_cbc.c
 +++ b/crypto/aes/aes_cbc.c
 @@ -1,51 +1,10 @@
@@ -13674,7 +15064,7 @@
  
  #include <openssl/aes.h>
 diff --git a/crypto/aes/aes_cfb.c b/crypto/aes/aes_cfb.c
-index 3962c3e9213f..f010e3c4ea9e 100644
+index 3962c3e..f010e3c 100644
 --- a/crypto/aes/aes_cfb.c
 +++ b/crypto/aes/aes_cfb.c
 @@ -1,51 +1,10 @@
@@ -13736,7 +15126,7 @@
  
  #include <openssl/aes.h>
 diff --git a/crypto/aes/aes_core.c b/crypto/aes/aes_core.c
-index 837d4feb9f65..ef0fc51d952f 100644
+index 837d4fe..ef0fc51 100644
 --- a/crypto/aes/aes_core.c
 +++ b/crypto/aes/aes_core.c
 @@ -1,3 +1,12 @@
@@ -13753,7 +15143,7 @@
   * rijndael-alg-fst.c
   *
 diff --git a/crypto/aes/aes_ecb.c b/crypto/aes/aes_ecb.c
-index 6639c783c47f..29bfc1ad66f7 100644
+index 6639c78..29bfc1a 100644
 --- a/crypto/aes/aes_ecb.c
 +++ b/crypto/aes/aes_ecb.c
 @@ -1,51 +1,10 @@
@@ -13815,7 +15205,7 @@
  
  #include <assert.h>
 diff --git a/crypto/aes/aes_ige.c b/crypto/aes/aes_ige.c
-index f8f4ba57753f..9125264ed98e 100644
+index f8f4ba5..9125264 100644
 --- a/crypto/aes/aes_ige.c
 +++ b/crypto/aes/aes_ige.c
 @@ -1,51 +1,10 @@
@@ -13877,7 +15267,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/aes/aes_locl.h b/crypto/aes/aes_locl.h
-index e49f35702b04..adee29df8d91 100644
+index e49f357..adee29d 100644
 --- a/crypto/aes/aes_locl.h
 +++ b/crypto/aes/aes_locl.h
 @@ -1,51 +1,10 @@
@@ -13939,7 +15329,7 @@
  
  #ifndef HEADER_AES_LOCL_H
 diff --git a/crypto/aes/aes_misc.c b/crypto/aes/aes_misc.c
-index ca84a6cc33e2..7403c84f82d2 100644
+index ca84a6c..7403c84 100644
 --- a/crypto/aes/aes_misc.c
 +++ b/crypto/aes/aes_misc.c
 @@ -1,51 +1,10 @@
@@ -14001,7 +15391,7 @@
  
  #include <openssl/opensslv.h>
 diff --git a/crypto/aes/aes_ofb.c b/crypto/aes/aes_ofb.c
-index bc240383a8cb..215b53858eb6 100644
+index bc24038..215b538 100644
 --- a/crypto/aes/aes_ofb.c
 +++ b/crypto/aes/aes_ofb.c
 @@ -1,51 +1,10 @@
@@ -14063,7 +15453,7 @@
  
  #include <openssl/aes.h>
 diff --git a/crypto/aes/aes_wrap.c b/crypto/aes/aes_wrap.c
-index c9cd3d3f2b81..cae0b212297a 100644
+index c9cd3d3..cae0b21 100644
 --- a/crypto/aes/aes_wrap.c
 +++ b/crypto/aes/aes_wrap.c
 @@ -1,54 +1,10 @@
@@ -14073,8 +15463,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -14105,7 +15494,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -14127,7 +15517,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/aes/aes_x86core.c b/crypto/aes/aes_x86core.c
-index 1b64f5b65b6c..dd7e905470f0 100644
+index 1b64f5b..dd7e905 100644
 --- a/crypto/aes/aes_x86core.c
 +++ b/crypto/aes/aes_x86core.c
 @@ -1,3 +1,12 @@
@@ -14144,7 +15534,7 @@
   * rijndael-alg-fst.c
   *
 diff --git a/crypto/aes/asm/aes-586.pl b/crypto/aes/asm/aes-586.pl
-index 5a7f1b4551bc..1ba356508a42 100755
+index 5a7f1b4..1ba3565 100755
 --- a/crypto/aes/asm/aes-586.pl
 +++ b/crypto/aes/asm/aes-586.pl
 @@ -1,4 +1,11 @@
@@ -14161,7 +15551,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/aes/asm/aes-armv4.pl b/crypto/aes/asm/aes-armv4.pl
-index 3efe415e66e6..16d79aae534e 100644
+index 3efe415..16d79aa 100644
 --- a/crypto/aes/asm/aes-armv4.pl
 +++ b/crypto/aes/asm/aes-armv4.pl
 @@ -1,4 +1,11 @@
@@ -14178,7 +15568,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/aes/asm/aes-c64xplus.pl b/crypto/aes/asm/aes-c64xplus.pl
-index 54426f7dda9e..19d2cc176fb2 100644
+index 54426f7..19d2cc1 100644
 --- a/crypto/aes/asm/aes-c64xplus.pl
 +++ b/crypto/aes/asm/aes-c64xplus.pl
 @@ -1,4 +1,11 @@
@@ -14195,7 +15585,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/aes/asm/aes-ia64.S b/crypto/aes/asm/aes-ia64.S
-index 7f6c4c366291..ef44f7cc764a 100644
+index 7f6c4c3..ef44f7c 100644
 --- a/crypto/aes/asm/aes-ia64.S
 +++ b/crypto/aes/asm/aes-ia64.S
 @@ -1,3 +1,10 @@
@@ -14210,7 +15600,7 @@
  // Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
  // project. Rights for redistribution and usage in source and binary
 diff --git a/crypto/aes/asm/aes-mips.pl b/crypto/aes/asm/aes-mips.pl
-index 77dfe1ac9b11..439578d9c244 100644
+index 77dfe1a..439578d 100644
 --- a/crypto/aes/asm/aes-mips.pl
 +++ b/crypto/aes/asm/aes-mips.pl
 @@ -1,4 +1,11 @@
@@ -14297,7 +15687,7 @@
  	bal	_mips_AES_set_encrypt_key
  
 diff --git a/crypto/aes/asm/aes-parisc.pl b/crypto/aes/asm/aes-parisc.pl
-index 714dcfbbe3b7..2c785bc56d5d 100644
+index 714dcfb..2c785bc 100644
 --- a/crypto/aes/asm/aes-parisc.pl
 +++ b/crypto/aes/asm/aes-parisc.pl
 @@ -1,4 +1,11 @@
@@ -14314,7 +15704,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/aes/asm/aes-ppc.pl b/crypto/aes/asm/aes-ppc.pl
-index 5b83016efa98..d02dde5bc5f8 100644
+index 5b83016..d02dde5 100644
 --- a/crypto/aes/asm/aes-ppc.pl
 +++ b/crypto/aes/asm/aes-ppc.pl
 @@ -1,4 +1,11 @@
@@ -14331,7 +15721,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/aes/asm/aes-s390x.pl b/crypto/aes/asm/aes-s390x.pl
-index 4aacf1b6b5ea..a93d60191347 100644
+index 4aacf1b..a93d601 100644
 --- a/crypto/aes/asm/aes-s390x.pl
 +++ b/crypto/aes/asm/aes-s390x.pl
 @@ -1,4 +1,11 @@
@@ -14407,7 +15797,7 @@
  
  $code =~ s/\`([^\`]*)\`/eval $1/gem;
 diff --git a/crypto/aes/asm/aes-sparcv9.pl b/crypto/aes/asm/aes-sparcv9.pl
-index 9eb0c3d9c1f4..883fae820f8c 100755
+index 9eb0c3d..883fae8 100755
 --- a/crypto/aes/asm/aes-sparcv9.pl
 +++ b/crypto/aes/asm/aes-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -14424,7 +15814,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/aes/asm/aes-x86_64.pl b/crypto/aes/asm/aes-x86_64.pl
-index e95593e35e0b..ce4ca30b1a78 100755
+index e95593e..ce4ca30 100755
 --- a/crypto/aes/asm/aes-x86_64.pl
 +++ b/crypto/aes/asm/aes-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -14451,7 +15841,7 @@
  $verticalspin=1;	# unlike 32-bit version $verticalspin performs
 diff --git a/crypto/aes/asm/aesfx-sparcv9.pl b/crypto/aes/asm/aesfx-sparcv9.pl
 new file mode 100755
-index 000000000000..c72f86555293
+index 0000000..c72f865
 --- /dev/null
 +++ b/crypto/aes/asm/aesfx-sparcv9.pl
 @@ -0,0 +1,446 @@
@@ -14902,7 +16292,7 @@
 +
 +close STDOUT;
 diff --git a/crypto/aes/asm/aesni-mb-x86_64.pl b/crypto/aes/asm/aesni-mb-x86_64.pl
-index d7ad7882c4ee..aa2735e06ab2 100644
+index d7ad788..aa2735e 100644
 --- a/crypto/aes/asm/aesni-mb-x86_64.pl
 +++ b/crypto/aes/asm/aesni-mb-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -14928,7 +16318,7 @@
  
  # void aesni_multi_cbc_encrypt (
 diff --git a/crypto/aes/asm/aesni-sha1-x86_64.pl b/crypto/aes/asm/aesni-sha1-x86_64.pl
-index 4a746e9be98e..4b979a734656 100644
+index 4a746e9..4b979a7 100644
 --- a/crypto/aes/asm/aesni-sha1-x86_64.pl
 +++ b/crypto/aes/asm/aesni-sha1-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -14954,7 +16344,7 @@
  
  # void aesni_cbc_sha1_enc(const void *inp,
 diff --git a/crypto/aes/asm/aesni-sha256-x86_64.pl b/crypto/aes/asm/aesni-sha256-x86_64.pl
-index 6d195a4c20b1..e9ad24f7d7e5 100644
+index 6d195a4..e9ad24f 100644
 --- a/crypto/aes/asm/aesni-sha256-x86_64.pl
 +++ b/crypto/aes/asm/aesni-sha256-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -14980,7 +16370,7 @@
  
  $func="aesni_cbc_sha256_enc";
 diff --git a/crypto/aes/asm/aesni-x86.pl b/crypto/aes/asm/aesni-x86.pl
-index b85d0c425b8e..ed1a47c30cd1 100644
+index b85d0c4..ed1a47c 100644
 --- a/crypto/aes/asm/aesni-x86.pl
 +++ b/crypto/aes/asm/aesni-x86.pl
 @@ -1,4 +1,11 @@
@@ -14997,7 +16387,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/aes/asm/aesni-x86_64.pl b/crypto/aes/asm/aesni-x86_64.pl
-index 6e41a1ae86ef..a03da20a5aba 100644
+index 6e41a1a..a03da20 100644
 --- a/crypto/aes/asm/aesni-x86_64.pl
 +++ b/crypto/aes/asm/aesni-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -15023,7 +16413,7 @@
  
  $movkey = $PREFIX eq "aesni" ? "movups" : "movups";
 diff --git a/crypto/aes/asm/aesp8-ppc.pl b/crypto/aes/asm/aesp8-ppc.pl
-index a1891cc03caa..ad54204238e8 100755
+index a1891cc..3fdf1ec 100755
 --- a/crypto/aes/asm/aesp8-ppc.pl
 +++ b/crypto/aes/asm/aesp8-ppc.pl
 @@ -1,4 +1,11 @@
@@ -15039,8 +16429,1878 @@
  #
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
+@@ -20,6 +27,19 @@
+ # instructions are interleaved. It's reckoned that eventual
+ # misalignment penalties at page boundaries are in average lower
+ # than additional overhead in pure AltiVec approach.
++#
++# May 2016
++#
++# Add XTS subroutine, 9x on little- and 12x improvement on big-endian
++# systems were measured.
++#
++######################################################################
++# Current large-block performance in cycles per byte processed with
++# 128-bit key (less is better).
++#
++#		CBC en-/decrypt	CTR	XTS
++# POWER8[le]	3.96/0.72	0.74	1.1
++# POWER8[be]	3.75/0.65	0.66	1.0
+ 
+ $flavour = shift;
+ 
+@@ -1887,6 +1907,1849 @@ Lctr32_enc8x_done:
+ ___
+ }}	}}}
+ 
++#########################################################################
++{{{	# XTS procedures						#
++# int aes_p8_xts_[en|de]crypt(const char *inp, char *out, size_t len,	#
++#                             const AES_KEY *key1, const AES_KEY *key2,	#
++#                             [const] unsigned char iv[16]);		#
++# If $key2 is NULL, then a "tweak chaining" mode is engaged, in which	#
++# input tweak value is assumed to be encrypted already, and last tweak	#
++# value, one suitable for consecutive call on same chunk of data, is	#
++# written back to original buffer. In addition, in "tweak chaining"	#
++# mode only complete input blocks are processed.			#
++
++my ($inp,$out,$len,$key1,$key2,$ivp,$rounds,$idx) =	map("r$_",(3..10));
++my ($rndkey0,$rndkey1,$inout) =				map("v$_",(0..2));
++my ($output,$inptail,$inpperm,$leperm,$keyperm) =	map("v$_",(3..7));
++my ($tweak,$seven,$eighty7,$tmp,$tweak1) =		map("v$_",(8..12));
++my $taillen = $key2;
++
++   ($inp,$idx) = ($idx,$inp);				# reassign
++
++$code.=<<___;
++.globl	.${prefix}_xts_encrypt
++.align	5
++.${prefix}_xts_encrypt:
++	mr		$inp,r3				# reassign
++	li		r3,-1
++	${UCMP}i	$len,16
++	bltlr-
++
++	lis		r0,0xfff0
++	mfspr		r12,256				# save vrsave
++	li		r11,0
++	mtspr		256,r0
++
++	vspltisb	$seven,0x07			# 0x070707..07
++	le?lvsl		$leperm,r11,r11
++	le?vspltisb	$tmp,0x0f
++	le?vxor		$leperm,$leperm,$seven
++
++	li		$idx,15
++	lvx		$tweak,0,$ivp			# load [unaligned] iv
++	lvsl		$inpperm,0,$ivp
++	lvx		$inptail,$idx,$ivp
++	le?vxor		$inpperm,$inpperm,$tmp
++	vperm		$tweak,$tweak,$inptail,$inpperm
++
++	neg		r11,$inp
++	lvsr		$inpperm,0,r11			# prepare for unaligned load
++	lvx		$inout,0,$inp
++	addi		$inp,$inp,15			# 15 is not typo
++	le?vxor		$inpperm,$inpperm,$tmp
++
++	${UCMP}i	$key2,0				# key2==NULL?
++	beq		Lxts_enc_no_key2
++
++	?lvsl		$keyperm,0,$key2		# prepare for unaligned key
++	lwz		$rounds,240($key2)
++	srwi		$rounds,$rounds,1
++	subi		$rounds,$rounds,1
++	li		$idx,16
++
++	lvx		$rndkey0,0,$key2
++	lvx		$rndkey1,$idx,$key2
++	addi		$idx,$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vxor		$tweak,$tweak,$rndkey0
++	lvx		$rndkey0,$idx,$key2
++	addi		$idx,$idx,16
++	mtctr		$rounds
++
++Ltweak_xts_enc:
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vcipher		$tweak,$tweak,$rndkey1
++	lvx		$rndkey1,$idx,$key2
++	addi		$idx,$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vcipher		$tweak,$tweak,$rndkey0
++	lvx		$rndkey0,$idx,$key2
++	addi		$idx,$idx,16
++	bdnz		Ltweak_xts_enc
++
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vcipher		$tweak,$tweak,$rndkey1
++	lvx		$rndkey1,$idx,$key2
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vcipherlast	$tweak,$tweak,$rndkey0
++
++	li		$ivp,0				# don't chain the tweak
++	b		Lxts_enc
++
++Lxts_enc_no_key2:
++	li		$idx,-16
++	and		$len,$len,$idx			# in "tweak chaining"
++							# mode only complete
++							# blocks are processed
++Lxts_enc:
++	lvx		$inptail,0,$inp
++	addi		$inp,$inp,16
++
++	?lvsl		$keyperm,0,$key1		# prepare for unaligned key
++	lwz		$rounds,240($key1)
++	srwi		$rounds,$rounds,1
++	subi		$rounds,$rounds,1
++	li		$idx,16
++
++	vslb		$eighty7,$seven,$seven		# 0x808080..80
++	vor		$eighty7,$eighty7,$seven	# 0x878787..87
++	vspltisb	$tmp,1				# 0x010101..01
++	vsldoi		$eighty7,$eighty7,$tmp,15	# 0x870101..01
++
++	${UCMP}i	$len,96
++	bge		_aesp8_xts_encrypt6x
++
++	andi.		$taillen,$len,15
++	subic		r0,$len,32
++	subi		$taillen,$taillen,16
++	subfe		r0,r0,r0
++	and		r0,r0,$taillen
++	add		$inp,$inp,r0
++
++	lvx		$rndkey0,0,$key1
++	lvx		$rndkey1,$idx,$key1
++	addi		$idx,$idx,16
++	vperm		$inout,$inout,$inptail,$inpperm
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vxor		$inout,$inout,$tweak
++	vxor		$inout,$inout,$rndkey0
++	lvx		$rndkey0,$idx,$key1
++	addi		$idx,$idx,16
++	mtctr		$rounds
++	b		Loop_xts_enc
++
++.align	5
++Loop_xts_enc:
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vcipher		$inout,$inout,$rndkey1
++	lvx		$rndkey1,$idx,$key1
++	addi		$idx,$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vcipher		$inout,$inout,$rndkey0
++	lvx		$rndkey0,$idx,$key1
++	addi		$idx,$idx,16
++	bdnz		Loop_xts_enc
++
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vcipher		$inout,$inout,$rndkey1
++	lvx		$rndkey1,$idx,$key1
++	li		$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vxor		$rndkey0,$rndkey0,$tweak
++	vcipherlast	$output,$inout,$rndkey0
++
++	le?vperm	$tmp,$output,$output,$leperm
++	be?nop
++	le?stvx_u	$tmp,0,$out
++	be?stvx_u	$output,0,$out
++	addi		$out,$out,16
++
++	subic.		$len,$len,16
++	beq		Lxts_enc_done
++
++	vmr		$inout,$inptail
++	lvx		$inptail,0,$inp
++	addi		$inp,$inp,16
++	lvx		$rndkey0,0,$key1
++	lvx		$rndkey1,$idx,$key1
++	addi		$idx,$idx,16
++
++	subic		r0,$len,32
++	subfe		r0,r0,r0
++	and		r0,r0,$taillen
++	add		$inp,$inp,r0
++
++	vsrab		$tmp,$tweak,$seven		# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	vand		$tmp,$tmp,$eighty7
++	vxor		$tweak,$tweak,$tmp
++
++	vperm		$inout,$inout,$inptail,$inpperm
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vxor		$inout,$inout,$tweak
++	vxor		$output,$output,$rndkey0	# just in case $len<16
++	vxor		$inout,$inout,$rndkey0
++	lvx		$rndkey0,$idx,$key1
++	addi		$idx,$idx,16
++
++	mtctr		$rounds
++	${UCMP}i	$len,16
++	bge		Loop_xts_enc
++
++	vxor		$output,$output,$tweak
++	lvsr		$inpperm,0,$len			# $inpperm is no longer needed
++	vxor		$inptail,$inptail,$inptail	# $inptail is no longer needed
++	vspltisb	$tmp,-1
++	vperm		$inptail,$inptail,$tmp,$inpperm
++	vsel		$inout,$inout,$output,$inptail
++
++	subi		r11,$out,17
++	subi		$out,$out,16
++	mtctr		$len
++	li		$len,16
++Loop_xts_enc_steal:
++	lbzu		r0,1(r11)
++	stb		r0,16(r11)
++	bdnz		Loop_xts_enc_steal
++
++	mtctr		$rounds
++	b		Loop_xts_enc			# one more time...
++
++Lxts_enc_done:
++	${UCMP}i	$ivp,0
++	beq		Lxts_enc_ret
++
++	vsrab		$tmp,$tweak,$seven		# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	vand		$tmp,$tmp,$eighty7
++	vxor		$tweak,$tweak,$tmp
++
++	le?vperm	$tweak,$tweak,$tweak,$leperm
++	stvx_u		$tweak,0,$ivp
++
++Lxts_enc_ret:
++	mtspr		256,r12				# restore vrsave
++	li		r3,0
++	blr
++	.long		0
++	.byte		0,12,0x04,0,0x80,6,6,0
++	.long		0
++.size	.${prefix}_xts_encrypt,.-.${prefix}_xts_encrypt
++
++.globl	.${prefix}_xts_decrypt
++.align	5
++.${prefix}_xts_decrypt:
++	mr		$inp,r3				# reassign
++	li		r3,-1
++	${UCMP}i	$len,16
++	bltlr-
++
++	lis		r0,0xfff8
++	mfspr		r12,256				# save vrsave
++	li		r11,0
++	mtspr		256,r0
++
++	andi.		r0,$len,15
++	neg		r0,r0
++	andi.		r0,r0,16
++	sub		$len,$len,r0
++
++	vspltisb	$seven,0x07			# 0x070707..07
++	le?lvsl		$leperm,r11,r11
++	le?vspltisb	$tmp,0x0f
++	le?vxor		$leperm,$leperm,$seven
++
++	li		$idx,15
++	lvx		$tweak,0,$ivp			# load [unaligned] iv
++	lvsl		$inpperm,0,$ivp
++	lvx		$inptail,$idx,$ivp
++	le?vxor		$inpperm,$inpperm,$tmp
++	vperm		$tweak,$tweak,$inptail,$inpperm
++
++	neg		r11,$inp
++	lvsr		$inpperm,0,r11			# prepare for unaligned load
++	lvx		$inout,0,$inp
++	addi		$inp,$inp,15			# 15 is not typo
++	le?vxor		$inpperm,$inpperm,$tmp
++
++	${UCMP}i	$key2,0				# key2==NULL?
++	beq		Lxts_dec_no_key2
++
++	?lvsl		$keyperm,0,$key2		# prepare for unaligned key
++	lwz		$rounds,240($key2)
++	srwi		$rounds,$rounds,1
++	subi		$rounds,$rounds,1
++	li		$idx,16
++
++	lvx		$rndkey0,0,$key2
++	lvx		$rndkey1,$idx,$key2
++	addi		$idx,$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vxor		$tweak,$tweak,$rndkey0
++	lvx		$rndkey0,$idx,$key2
++	addi		$idx,$idx,16
++	mtctr		$rounds
++
++Ltweak_xts_dec:
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vcipher		$tweak,$tweak,$rndkey1
++	lvx		$rndkey1,$idx,$key2
++	addi		$idx,$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vcipher		$tweak,$tweak,$rndkey0
++	lvx		$rndkey0,$idx,$key2
++	addi		$idx,$idx,16
++	bdnz		Ltweak_xts_dec
++
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vcipher		$tweak,$tweak,$rndkey1
++	lvx		$rndkey1,$idx,$key2
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vcipherlast	$tweak,$tweak,$rndkey0
++
++	li		$ivp,0				# don't chain the tweak
++	b		Lxts_dec
++
++Lxts_dec_no_key2:
++	neg		$idx,$len
++	andi.		$idx,$idx,15
++	add		$len,$len,$idx			# in "tweak chaining"
++							# mode only complete
++							# blocks are processed
++Lxts_dec:
++	lvx		$inptail,0,$inp
++	addi		$inp,$inp,16
++
++	?lvsl		$keyperm,0,$key1		# prepare for unaligned key
++	lwz		$rounds,240($key1)
++	srwi		$rounds,$rounds,1
++	subi		$rounds,$rounds,1
++	li		$idx,16
++
++	vslb		$eighty7,$seven,$seven		# 0x808080..80
++	vor		$eighty7,$eighty7,$seven	# 0x878787..87
++	vspltisb	$tmp,1				# 0x010101..01
++	vsldoi		$eighty7,$eighty7,$tmp,15	# 0x870101..01
++
++	${UCMP}i	$len,96
++	bge		_aesp8_xts_decrypt6x
++
++	lvx		$rndkey0,0,$key1
++	lvx		$rndkey1,$idx,$key1
++	addi		$idx,$idx,16
++	vperm		$inout,$inout,$inptail,$inpperm
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vxor		$inout,$inout,$tweak
++	vxor		$inout,$inout,$rndkey0
++	lvx		$rndkey0,$idx,$key1
++	addi		$idx,$idx,16
++	mtctr		$rounds
++
++	${UCMP}i	$len,16
++	blt		Ltail_xts_dec
++	be?b		Loop_xts_dec
++
++.align	5
++Loop_xts_dec:
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vncipher	$inout,$inout,$rndkey1
++	lvx		$rndkey1,$idx,$key1
++	addi		$idx,$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vncipher	$inout,$inout,$rndkey0
++	lvx		$rndkey0,$idx,$key1
++	addi		$idx,$idx,16
++	bdnz		Loop_xts_dec
++
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vncipher	$inout,$inout,$rndkey1
++	lvx		$rndkey1,$idx,$key1
++	li		$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vxor		$rndkey0,$rndkey0,$tweak
++	vncipherlast	$output,$inout,$rndkey0
++
++	le?vperm	$tmp,$output,$output,$leperm
++	be?nop
++	le?stvx_u	$tmp,0,$out
++	be?stvx_u	$output,0,$out
++	addi		$out,$out,16
++
++	subic.		$len,$len,16
++	beq		Lxts_dec_done
++
++	vmr		$inout,$inptail
++	lvx		$inptail,0,$inp
++	addi		$inp,$inp,16
++	lvx		$rndkey0,0,$key1
++	lvx		$rndkey1,$idx,$key1
++	addi		$idx,$idx,16
++
++	vsrab		$tmp,$tweak,$seven		# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	vand		$tmp,$tmp,$eighty7
++	vxor		$tweak,$tweak,$tmp
++
++	vperm		$inout,$inout,$inptail,$inpperm
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vxor		$inout,$inout,$tweak
++	vxor		$inout,$inout,$rndkey0
++	lvx		$rndkey0,$idx,$key1
++	addi		$idx,$idx,16
++
++	mtctr		$rounds
++	${UCMP}i	$len,16
++	bge		Loop_xts_dec
++
++Ltail_xts_dec:
++	vsrab		$tmp,$tweak,$seven		# next tweak value
++	vaddubm		$tweak1,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	vand		$tmp,$tmp,$eighty7
++	vxor		$tweak1,$tweak1,$tmp
++
++	subi		$inp,$inp,16
++	add		$inp,$inp,$len
++
++	vxor		$inout,$inout,$tweak		# :-(
++	vxor		$inout,$inout,$tweak1		# :-)
++
++Loop_xts_dec_short:
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vncipher	$inout,$inout,$rndkey1
++	lvx		$rndkey1,$idx,$key1
++	addi		$idx,$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vncipher	$inout,$inout,$rndkey0
++	lvx		$rndkey0,$idx,$key1
++	addi		$idx,$idx,16
++	bdnz		Loop_xts_dec_short
++
++	?vperm		$rndkey1,$rndkey1,$rndkey0,$keyperm
++	vncipher	$inout,$inout,$rndkey1
++	lvx		$rndkey1,$idx,$key1
++	li		$idx,16
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++	vxor		$rndkey0,$rndkey0,$tweak1
++	vncipherlast	$output,$inout,$rndkey0
++
++	le?vperm	$tmp,$output,$output,$leperm
++	be?nop
++	le?stvx_u	$tmp,0,$out
++	be?stvx_u	$output,0,$out
++
++	vmr		$inout,$inptail
++	lvx		$inptail,0,$inp
++	#addi		$inp,$inp,16
++	lvx		$rndkey0,0,$key1
++	lvx		$rndkey1,$idx,$key1
++	addi		$idx,$idx,16
++	vperm		$inout,$inout,$inptail,$inpperm
++	?vperm		$rndkey0,$rndkey0,$rndkey1,$keyperm
++
++	lvsr		$inpperm,0,$len			# $inpperm is no longer needed
++	vxor		$inptail,$inptail,$inptail	# $inptail is no longer needed
++	vspltisb	$tmp,-1
++	vperm		$inptail,$inptail,$tmp,$inpperm
++	vsel		$inout,$inout,$output,$inptail
++
++	vxor		$rndkey0,$rndkey0,$tweak
++	vxor		$inout,$inout,$rndkey0
++	lvx		$rndkey0,$idx,$key1
++	addi		$idx,$idx,16
++
++	subi		r11,$out,1
++	mtctr		$len
++	li		$len,16
++Loop_xts_dec_steal:
++	lbzu		r0,1(r11)
++	stb		r0,16(r11)
++	bdnz		Loop_xts_dec_steal
++
++	mtctr		$rounds
++	b		Loop_xts_dec			# one more time...
++
++Lxts_dec_done:
++	${UCMP}i	$ivp,0
++	beq		Lxts_dec_ret
++
++	vsrab		$tmp,$tweak,$seven		# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	vand		$tmp,$tmp,$eighty7
++	vxor		$tweak,$tweak,$tmp
++
++	le?vperm	$tweak,$tweak,$tweak,$leperm
++	stvx_u		$tweak,0,$ivp
++
++Lxts_dec_ret:
++	mtspr		256,r12				# restore vrsave
++	li		r3,0
++	blr
++	.long		0
++	.byte		0,12,0x04,0,0x80,6,6,0
++	.long		0
++.size	.${prefix}_xts_decrypt,.-.${prefix}_xts_decrypt
++___
++#########################################################################
++{{	# Optimized XTS procedures					#
++my $key_=$key2;
++my ($x00,$x10,$x20,$x30,$x40,$x50,$x60,$x70)=map("r$_",(0,3,26..31));
++    $x00=0 if ($flavour =~ /osx/);
++my ($in0,  $in1,  $in2,  $in3,  $in4,  $in5 )=map("v$_",(0..5));
++my ($out0, $out1, $out2, $out3, $out4, $out5)=map("v$_",(7,12..16));
++my ($twk0, $twk1, $twk2, $twk3, $twk4, $twk5)=map("v$_",(17..22));
++my $rndkey0="v23";	# v24-v25 rotating buffer for first found keys
++			# v26-v31 last 6 round keys
++my ($keyperm)=($out0);	# aliases with "caller", redundant assignment
++my $taillen=$x70;
++
++$code.=<<___;
++.align	5
++_aesp8_xts_encrypt6x:
++	$STU		$sp,-`($FRAME+21*16+6*$SIZE_T)`($sp)
++	mflr		r11
++	li		r7,`$FRAME+8*16+15`
++	li		r3,`$FRAME+8*16+31`
++	$PUSH		r11,`$FRAME+21*16+6*$SIZE_T+$LRSAVE`($sp)
++	stvx		v20,r7,$sp		# ABI says so
++	addi		r7,r7,32
++	stvx		v21,r3,$sp
++	addi		r3,r3,32
++	stvx		v22,r7,$sp
++	addi		r7,r7,32
++	stvx		v23,r3,$sp
++	addi		r3,r3,32
++	stvx		v24,r7,$sp
++	addi		r7,r7,32
++	stvx		v25,r3,$sp
++	addi		r3,r3,32
++	stvx		v26,r7,$sp
++	addi		r7,r7,32
++	stvx		v27,r3,$sp
++	addi		r3,r3,32
++	stvx		v28,r7,$sp
++	addi		r7,r7,32
++	stvx		v29,r3,$sp
++	addi		r3,r3,32
++	stvx		v30,r7,$sp
++	stvx		v31,r3,$sp
++	li		r0,-1
++	stw		$vrsave,`$FRAME+21*16-4`($sp)	# save vrsave
++	li		$x10,0x10
++	$PUSH		r26,`$FRAME+21*16+0*$SIZE_T`($sp)
++	li		$x20,0x20
++	$PUSH		r27,`$FRAME+21*16+1*$SIZE_T`($sp)
++	li		$x30,0x30
++	$PUSH		r28,`$FRAME+21*16+2*$SIZE_T`($sp)
++	li		$x40,0x40
++	$PUSH		r29,`$FRAME+21*16+3*$SIZE_T`($sp)
++	li		$x50,0x50
++	$PUSH		r30,`$FRAME+21*16+4*$SIZE_T`($sp)
++	li		$x60,0x60
++	$PUSH		r31,`$FRAME+21*16+5*$SIZE_T`($sp)
++	li		$x70,0x70
++	mtspr		256,r0
++
++	subi		$rounds,$rounds,3	# -4 in total
++
++	lvx		$rndkey0,$x00,$key1	# load key schedule
++	lvx		v30,$x10,$key1
++	addi		$key1,$key1,0x20
++	lvx		v31,$x00,$key1
++	?vperm		$rndkey0,$rndkey0,v30,$keyperm
++	addi		$key_,$sp,$FRAME+15
++	mtctr		$rounds
++
++Load_xts_enc_key:
++	?vperm		v24,v30,v31,$keyperm
++	lvx		v30,$x10,$key1
++	addi		$key1,$key1,0x20
++	stvx		v24,$x00,$key_		# off-load round[1]
++	?vperm		v25,v31,v30,$keyperm
++	lvx		v31,$x00,$key1
++	stvx		v25,$x10,$key_		# off-load round[2]
++	addi		$key_,$key_,0x20
++	bdnz		Load_xts_enc_key
++
++	lvx		v26,$x10,$key1
++	?vperm		v24,v30,v31,$keyperm
++	lvx		v27,$x20,$key1
++	stvx		v24,$x00,$key_		# off-load round[3]
++	?vperm		v25,v31,v26,$keyperm
++	lvx		v28,$x30,$key1
++	stvx		v25,$x10,$key_		# off-load round[4]
++	addi		$key_,$sp,$FRAME+15	# rewind $key_
++	?vperm		v26,v26,v27,$keyperm
++	lvx		v29,$x40,$key1
++	?vperm		v27,v27,v28,$keyperm
++	lvx		v30,$x50,$key1
++	?vperm		v28,v28,v29,$keyperm
++	lvx		v31,$x60,$key1
++	?vperm		v29,v29,v30,$keyperm
++	lvx		$twk5,$x70,$key1	# borrow $twk5
++	?vperm		v30,v30,v31,$keyperm
++	lvx		v24,$x00,$key_		# pre-load round[1]
++	?vperm		v31,v31,$twk5,$keyperm
++	lvx		v25,$x10,$key_		# pre-load round[2]
++
++	 vperm		$in0,$inout,$inptail,$inpperm
++	 subi		$inp,$inp,31		# undo "caller"
++	vxor		$twk0,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out0,$in0,$twk0
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in1,$x10,$inp
++	vxor		$twk1,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in1,$in1,$in1,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out1,$in1,$twk1
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in2,$x20,$inp
++	 andi.		$taillen,$len,15
++	vxor		$twk2,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in2,$in2,$in2,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out2,$in2,$twk2
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in3,$x30,$inp
++	 sub		$len,$len,$taillen
++	vxor		$twk3,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in3,$in3,$in3,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out3,$in3,$twk3
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in4,$x40,$inp
++	 subi		$len,$len,0x60
++	vxor		$twk4,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in4,$in4,$in4,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out4,$in4,$twk4
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in5,$x50,$inp
++	 addi		$inp,$inp,0x60
++	vxor		$twk5,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in5,$in5,$in5,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out5,$in5,$twk5
++	vxor		$tweak,$tweak,$tmp
++
++	vxor		v31,v31,$rndkey0
++	mtctr		$rounds
++	b		Loop_xts_enc6x
++
++.align	5
++Loop_xts_enc6x:
++	vcipher		$out0,$out0,v24
++	vcipher		$out1,$out1,v24
++	vcipher		$out2,$out2,v24
++	vcipher		$out3,$out3,v24
++	vcipher		$out4,$out4,v24
++	vcipher		$out5,$out5,v24
++	lvx		v24,$x20,$key_		# round[3]
++	addi		$key_,$key_,0x20
++
++	vcipher		$out0,$out0,v25
++	vcipher		$out1,$out1,v25
++	vcipher		$out2,$out2,v25
++	vcipher		$out3,$out3,v25
++	vcipher		$out4,$out4,v25
++	vcipher		$out5,$out5,v25
++	lvx		v25,$x10,$key_		# round[4]
++	bdnz		Loop_xts_enc6x
++
++	subic		$len,$len,96		# $len-=96
++	 vxor		$in0,$twk0,v31		# xor with last round key
++	vcipher		$out0,$out0,v24
++	vcipher		$out1,$out1,v24
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk0,$tweak,$rndkey0
++	 vaddubm	$tweak,$tweak,$tweak
++	vcipher		$out2,$out2,v24
++	vcipher		$out3,$out3,v24
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vcipher		$out4,$out4,v24
++	vcipher		$out5,$out5,v24
++
++	subfe.		r0,r0,r0		# borrow?-1:0
++	 vand		$tmp,$tmp,$eighty7
++	vcipher		$out0,$out0,v25
++	vcipher		$out1,$out1,v25
++	 vxor		$tweak,$tweak,$tmp
++	vcipher		$out2,$out2,v25
++	vcipher		$out3,$out3,v25
++	 vxor		$in1,$twk1,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk1,$tweak,$rndkey0
++	vcipher		$out4,$out4,v25
++	vcipher		$out5,$out5,v25
++
++	and		r0,r0,$len
++	 vaddubm	$tweak,$tweak,$tweak
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vcipher		$out0,$out0,v26
++	vcipher		$out1,$out1,v26
++	 vand		$tmp,$tmp,$eighty7
++	vcipher		$out2,$out2,v26
++	vcipher		$out3,$out3,v26
++	 vxor		$tweak,$tweak,$tmp
++	vcipher		$out4,$out4,v26
++	vcipher		$out5,$out5,v26
++
++	add		$inp,$inp,r0		# $inp is adjusted in such
++						# way that at exit from the
++						# loop inX-in5 are loaded
++						# with last "words"
++	 vxor		$in2,$twk2,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk2,$tweak,$rndkey0
++	 vaddubm	$tweak,$tweak,$tweak
++	vcipher		$out0,$out0,v27
++	vcipher		$out1,$out1,v27
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vcipher		$out2,$out2,v27
++	vcipher		$out3,$out3,v27
++	 vand		$tmp,$tmp,$eighty7
++	vcipher		$out4,$out4,v27
++	vcipher		$out5,$out5,v27
++
++	addi		$key_,$sp,$FRAME+15	# rewind $key_
++	 vxor		$tweak,$tweak,$tmp
++	vcipher		$out0,$out0,v28
++	vcipher		$out1,$out1,v28
++	 vxor		$in3,$twk3,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk3,$tweak,$rndkey0
++	vcipher		$out2,$out2,v28
++	vcipher		$out3,$out3,v28
++	 vaddubm	$tweak,$tweak,$tweak
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vcipher		$out4,$out4,v28
++	vcipher		$out5,$out5,v28
++	lvx		v24,$x00,$key_		# re-pre-load round[1]
++	 vand		$tmp,$tmp,$eighty7
++
++	vcipher		$out0,$out0,v29
++	vcipher		$out1,$out1,v29
++	 vxor		$tweak,$tweak,$tmp
++	vcipher		$out2,$out2,v29
++	vcipher		$out3,$out3,v29
++	 vxor		$in4,$twk4,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk4,$tweak,$rndkey0
++	vcipher		$out4,$out4,v29
++	vcipher		$out5,$out5,v29
++	lvx		v25,$x10,$key_		# re-pre-load round[2]
++	 vaddubm	$tweak,$tweak,$tweak
++	 vsldoi		$tmp,$tmp,$tmp,15
++
++	vcipher		$out0,$out0,v30
++	vcipher		$out1,$out1,v30
++	 vand		$tmp,$tmp,$eighty7
++	vcipher		$out2,$out2,v30
++	vcipher		$out3,$out3,v30
++	 vxor		$tweak,$tweak,$tmp
++	vcipher		$out4,$out4,v30
++	vcipher		$out5,$out5,v30
++	 vxor		$in5,$twk5,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk5,$tweak,$rndkey0
++
++	vcipherlast	$out0,$out0,$in0
++	 lvx_u		$in0,$x00,$inp		# load next input block
++	 vaddubm	$tweak,$tweak,$tweak
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vcipherlast	$out1,$out1,$in1
++	 lvx_u		$in1,$x10,$inp
++	vcipherlast	$out2,$out2,$in2
++	 le?vperm	$in0,$in0,$in0,$leperm
++	 lvx_u		$in2,$x20,$inp
++	 vand		$tmp,$tmp,$eighty7
++	vcipherlast	$out3,$out3,$in3
++	 le?vperm	$in1,$in1,$in1,$leperm
++	 lvx_u		$in3,$x30,$inp
++	vcipherlast	$out4,$out4,$in4
++	 le?vperm	$in2,$in2,$in2,$leperm
++	 lvx_u		$in4,$x40,$inp
++	 vxor		$tweak,$tweak,$tmp
++	vcipherlast	$tmp,$out5,$in5		# last block might be needed
++						# in stealing mode
++	 le?vperm	$in3,$in3,$in3,$leperm
++	 lvx_u		$in5,$x50,$inp
++	 addi		$inp,$inp,0x60
++	 le?vperm	$in4,$in4,$in4,$leperm
++	 le?vperm	$in5,$in5,$in5,$leperm
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	 vxor		$out0,$in0,$twk0
++	le?vperm	$out2,$out2,$out2,$leperm
++	stvx_u		$out1,$x10,$out
++	 vxor		$out1,$in1,$twk1
++	le?vperm	$out3,$out3,$out3,$leperm
++	stvx_u		$out2,$x20,$out
++	 vxor		$out2,$in2,$twk2
++	le?vperm	$out4,$out4,$out4,$leperm
++	stvx_u		$out3,$x30,$out
++	 vxor		$out3,$in3,$twk3
++	le?vperm	$out5,$tmp,$tmp,$leperm
++	stvx_u		$out4,$x40,$out
++	 vxor		$out4,$in4,$twk4
++	le?stvx_u	$out5,$x50,$out
++	be?stvx_u	$tmp, $x50,$out
++	 vxor		$out5,$in5,$twk5
++	addi		$out,$out,0x60
++
++	mtctr		$rounds
++	beq		Loop_xts_enc6x		# did $len-=96 borrow?
++
++	addic.		$len,$len,0x60
++	beq		Lxts_enc6x_zero
++	cmpwi		$len,0x20
++	blt		Lxts_enc6x_one
++	nop
++	beq		Lxts_enc6x_two
++	cmpwi		$len,0x40
++	blt		Lxts_enc6x_three
++	nop
++	beq		Lxts_enc6x_four
++
++Lxts_enc6x_five:
++	vxor		$out0,$in1,$twk0
++	vxor		$out1,$in2,$twk1
++	vxor		$out2,$in3,$twk2
++	vxor		$out3,$in4,$twk3
++	vxor		$out4,$in5,$twk4
++
++	bl		_aesp8_xts_enc5x
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	vmr		$twk0,$twk5		# unused tweak
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	le?vperm	$out2,$out2,$out2,$leperm
++	stvx_u		$out1,$x10,$out
++	le?vperm	$out3,$out3,$out3,$leperm
++	stvx_u		$out2,$x20,$out
++	vxor		$tmp,$out4,$twk5	# last block prep for stealing
++	le?vperm	$out4,$out4,$out4,$leperm
++	stvx_u		$out3,$x30,$out
++	stvx_u		$out4,$x40,$out
++	addi		$out,$out,0x50
++	bne		Lxts_enc6x_steal
++	b		Lxts_enc6x_done
++
++.align	4
++Lxts_enc6x_four:
++	vxor		$out0,$in2,$twk0
++	vxor		$out1,$in3,$twk1
++	vxor		$out2,$in4,$twk2
++	vxor		$out3,$in5,$twk3
++	vxor		$out4,$out4,$out4
++
++	bl		_aesp8_xts_enc5x
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	vmr		$twk0,$twk4		# unused tweak
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	le?vperm	$out2,$out2,$out2,$leperm
++	stvx_u		$out1,$x10,$out
++	vxor		$tmp,$out3,$twk4	# last block prep for stealing
++	le?vperm	$out3,$out3,$out3,$leperm
++	stvx_u		$out2,$x20,$out
++	stvx_u		$out3,$x30,$out
++	addi		$out,$out,0x40
++	bne		Lxts_enc6x_steal
++	b		Lxts_enc6x_done
++
++.align	4
++Lxts_enc6x_three:
++	vxor		$out0,$in3,$twk0
++	vxor		$out1,$in4,$twk1
++	vxor		$out2,$in5,$twk2
++	vxor		$out3,$out3,$out3
++	vxor		$out4,$out4,$out4
++
++	bl		_aesp8_xts_enc5x
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	vmr		$twk0,$twk3		# unused tweak
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	vxor		$tmp,$out2,$twk3	# last block prep for stealing
++	le?vperm	$out2,$out2,$out2,$leperm
++	stvx_u		$out1,$x10,$out
++	stvx_u		$out2,$x20,$out
++	addi		$out,$out,0x30
++	bne		Lxts_enc6x_steal
++	b		Lxts_enc6x_done
++
++.align	4
++Lxts_enc6x_two:
++	vxor		$out0,$in4,$twk0
++	vxor		$out1,$in5,$twk1
++	vxor		$out2,$out2,$out2
++	vxor		$out3,$out3,$out3
++	vxor		$out4,$out4,$out4
++
++	bl		_aesp8_xts_enc5x
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	vmr		$twk0,$twk2		# unused tweak
++	vxor		$tmp,$out1,$twk2	# last block prep for stealing
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	stvx_u		$out1,$x10,$out
++	addi		$out,$out,0x20
++	bne		Lxts_enc6x_steal
++	b		Lxts_enc6x_done
++
++.align	4
++Lxts_enc6x_one:
++	vxor		$out0,$in5,$twk0
++	nop
++Loop_xts_enc1x:
++	vcipher		$out0,$out0,v24
++	lvx		v24,$x20,$key_		# round[3]
++	addi		$key_,$key_,0x20
++
++	vcipher		$out0,$out0,v25
++	lvx		v25,$x10,$key_		# round[4]
++	bdnz		Loop_xts_enc1x
++
++	add		$inp,$inp,$taillen
++	cmpwi		$taillen,0
++	vcipher		$out0,$out0,v24
++
++	subi		$inp,$inp,16
++	vcipher		$out0,$out0,v25
++
++	lvsr		$inpperm,0,$taillen
++	vcipher		$out0,$out0,v26
++
++	lvx_u		$in0,0,$inp
++	vcipher		$out0,$out0,v27
++
++	addi		$key_,$sp,$FRAME+15	# rewind $key_
++	vcipher		$out0,$out0,v28
++	lvx		v24,$x00,$key_		# re-pre-load round[1]
++
++	vcipher		$out0,$out0,v29
++	lvx		v25,$x10,$key_		# re-pre-load round[2]
++	 vxor		$twk0,$twk0,v31
++
++	le?vperm	$in0,$in0,$in0,$leperm
++	vcipher		$out0,$out0,v30
++
++	vperm		$in0,$in0,$in0,$inpperm
++	vcipherlast	$out0,$out0,$twk0
++
++	vmr		$twk0,$twk1		# unused tweak
++	vxor		$tmp,$out0,$twk1	# last block prep for stealing
++	le?vperm	$out0,$out0,$out0,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	addi		$out,$out,0x10
++	bne		Lxts_enc6x_steal
++	b		Lxts_enc6x_done
++
++.align	4
++Lxts_enc6x_zero:
++	cmpwi		$taillen,0
++	beq		Lxts_enc6x_done
++
++	add		$inp,$inp,$taillen
++	subi		$inp,$inp,16
++	lvx_u		$in0,0,$inp
++	lvsr		$inpperm,0,$taillen	# $in5 is no more
++	le?vperm	$in0,$in0,$in0,$leperm
++	vperm		$in0,$in0,$in0,$inpperm
++	vxor		$tmp,$tmp,$twk0
++Lxts_enc6x_steal:
++	vxor		$in0,$in0,$twk0
++	vxor		$out0,$out0,$out0
++	vspltisb	$out1,-1
++	vperm		$out0,$out0,$out1,$inpperm
++	vsel		$out0,$in0,$tmp,$out0	# $tmp is last block, remember?
++
++	subi		r30,$out,17
++	subi		$out,$out,16
++	mtctr		$taillen
++Loop_xts_enc6x_steal:
++	lbzu		r0,1(r30)
++	stb		r0,16(r30)
++	bdnz		Loop_xts_enc6x_steal
++
++	li		$taillen,0
++	mtctr		$rounds
++	b		Loop_xts_enc1x		# one more time...
++
++.align	4
++Lxts_enc6x_done:
++	${UCMP}i	$ivp,0
++	beq		Lxts_enc6x_ret
++
++	vxor		$tweak,$twk0,$rndkey0
++	le?vperm	$tweak,$tweak,$tweak,$leperm
++	stvx_u		$tweak,0,$ivp
++
++Lxts_enc6x_ret:
++	mtlr		r11
++	li		r10,`$FRAME+15`
++	li		r11,`$FRAME+31`
++	stvx		$seven,r10,$sp		# wipe copies of round keys
++	addi		r10,r10,32
++	stvx		$seven,r11,$sp
++	addi		r11,r11,32
++	stvx		$seven,r10,$sp
++	addi		r10,r10,32
++	stvx		$seven,r11,$sp
++	addi		r11,r11,32
++	stvx		$seven,r10,$sp
++	addi		r10,r10,32
++	stvx		$seven,r11,$sp
++	addi		r11,r11,32
++	stvx		$seven,r10,$sp
++	addi		r10,r10,32
++	stvx		$seven,r11,$sp
++	addi		r11,r11,32
++
++	mtspr		256,$vrsave
++	lvx		v20,r10,$sp		# ABI says so
++	addi		r10,r10,32
++	lvx		v21,r11,$sp
++	addi		r11,r11,32
++	lvx		v22,r10,$sp
++	addi		r10,r10,32
++	lvx		v23,r11,$sp
++	addi		r11,r11,32
++	lvx		v24,r10,$sp
++	addi		r10,r10,32
++	lvx		v25,r11,$sp
++	addi		r11,r11,32
++	lvx		v26,r10,$sp
++	addi		r10,r10,32
++	lvx		v27,r11,$sp
++	addi		r11,r11,32
++	lvx		v28,r10,$sp
++	addi		r10,r10,32
++	lvx		v29,r11,$sp
++	addi		r11,r11,32
++	lvx		v30,r10,$sp
++	lvx		v31,r11,$sp
++	$POP		r26,`$FRAME+21*16+0*$SIZE_T`($sp)
++	$POP		r27,`$FRAME+21*16+1*$SIZE_T`($sp)
++	$POP		r28,`$FRAME+21*16+2*$SIZE_T`($sp)
++	$POP		r29,`$FRAME+21*16+3*$SIZE_T`($sp)
++	$POP		r30,`$FRAME+21*16+4*$SIZE_T`($sp)
++	$POP		r31,`$FRAME+21*16+5*$SIZE_T`($sp)
++	addi		$sp,$sp,`$FRAME+21*16+6*$SIZE_T`
++	blr
++	.long		0
++	.byte		0,12,0x04,1,0x80,6,6,0
++	.long		0
++
++.align	5
++_aesp8_xts_enc5x:
++	vcipher		$out0,$out0,v24
++	vcipher		$out1,$out1,v24
++	vcipher		$out2,$out2,v24
++	vcipher		$out3,$out3,v24
++	vcipher		$out4,$out4,v24
++	lvx		v24,$x20,$key_		# round[3]
++	addi		$key_,$key_,0x20
++
++	vcipher		$out0,$out0,v25
++	vcipher		$out1,$out1,v25
++	vcipher		$out2,$out2,v25
++	vcipher		$out3,$out3,v25
++	vcipher		$out4,$out4,v25
++	lvx		v25,$x10,$key_		# round[4]
++	bdnz		_aesp8_xts_enc5x
++
++	add		$inp,$inp,$taillen
++	cmpwi		$taillen,0
++	vcipher		$out0,$out0,v24
++	vcipher		$out1,$out1,v24
++	vcipher		$out2,$out2,v24
++	vcipher		$out3,$out3,v24
++	vcipher		$out4,$out4,v24
++
++	subi		$inp,$inp,16
++	vcipher		$out0,$out0,v25
++	vcipher		$out1,$out1,v25
++	vcipher		$out2,$out2,v25
++	vcipher		$out3,$out3,v25
++	vcipher		$out4,$out4,v25
++	 vxor		$twk0,$twk0,v31
++
++	vcipher		$out0,$out0,v26
++	lvsr		$inpperm,r0,$taillen	# $in5 is no more
++	vcipher		$out1,$out1,v26
++	vcipher		$out2,$out2,v26
++	vcipher		$out3,$out3,v26
++	vcipher		$out4,$out4,v26
++	 vxor		$in1,$twk1,v31
++
++	vcipher		$out0,$out0,v27
++	lvx_u		$in0,0,$inp
++	vcipher		$out1,$out1,v27
++	vcipher		$out2,$out2,v27
++	vcipher		$out3,$out3,v27
++	vcipher		$out4,$out4,v27
++	 vxor		$in2,$twk2,v31
++
++	addi		$key_,$sp,$FRAME+15	# rewind $key_
++	vcipher		$out0,$out0,v28
++	vcipher		$out1,$out1,v28
++	vcipher		$out2,$out2,v28
++	vcipher		$out3,$out3,v28
++	vcipher		$out4,$out4,v28
++	lvx		v24,$x00,$key_		# re-pre-load round[1]
++	 vxor		$in3,$twk3,v31
++
++	vcipher		$out0,$out0,v29
++	le?vperm	$in0,$in0,$in0,$leperm
++	vcipher		$out1,$out1,v29
++	vcipher		$out2,$out2,v29
++	vcipher		$out3,$out3,v29
++	vcipher		$out4,$out4,v29
++	lvx		v25,$x10,$key_		# re-pre-load round[2]
++	 vxor		$in4,$twk4,v31
++
++	vcipher		$out0,$out0,v30
++	vperm		$in0,$in0,$in0,$inpperm
++	vcipher		$out1,$out1,v30
++	vcipher		$out2,$out2,v30
++	vcipher		$out3,$out3,v30
++	vcipher		$out4,$out4,v30
++
++	vcipherlast	$out0,$out0,$twk0
++	vcipherlast	$out1,$out1,$in1
++	vcipherlast	$out2,$out2,$in2
++	vcipherlast	$out3,$out3,$in3
++	vcipherlast	$out4,$out4,$in4
++	blr
++        .long   	0
++        .byte   	0,12,0x14,0,0,0,0,0
++
++.align	5
++_aesp8_xts_decrypt6x:
++	$STU		$sp,-`($FRAME+21*16+6*$SIZE_T)`($sp)
++	mflr		r11
++	li		r7,`$FRAME+8*16+15`
++	li		r3,`$FRAME+8*16+31`
++	$PUSH		r11,`$FRAME+21*16+6*$SIZE_T+$LRSAVE`($sp)
++	stvx		v20,r7,$sp		# ABI says so
++	addi		r7,r7,32
++	stvx		v21,r3,$sp
++	addi		r3,r3,32
++	stvx		v22,r7,$sp
++	addi		r7,r7,32
++	stvx		v23,r3,$sp
++	addi		r3,r3,32
++	stvx		v24,r7,$sp
++	addi		r7,r7,32
++	stvx		v25,r3,$sp
++	addi		r3,r3,32
++	stvx		v26,r7,$sp
++	addi		r7,r7,32
++	stvx		v27,r3,$sp
++	addi		r3,r3,32
++	stvx		v28,r7,$sp
++	addi		r7,r7,32
++	stvx		v29,r3,$sp
++	addi		r3,r3,32
++	stvx		v30,r7,$sp
++	stvx		v31,r3,$sp
++	li		r0,-1
++	stw		$vrsave,`$FRAME+21*16-4`($sp)	# save vrsave
++	li		$x10,0x10
++	$PUSH		r26,`$FRAME+21*16+0*$SIZE_T`($sp)
++	li		$x20,0x20
++	$PUSH		r27,`$FRAME+21*16+1*$SIZE_T`($sp)
++	li		$x30,0x30
++	$PUSH		r28,`$FRAME+21*16+2*$SIZE_T`($sp)
++	li		$x40,0x40
++	$PUSH		r29,`$FRAME+21*16+3*$SIZE_T`($sp)
++	li		$x50,0x50
++	$PUSH		r30,`$FRAME+21*16+4*$SIZE_T`($sp)
++	li		$x60,0x60
++	$PUSH		r31,`$FRAME+21*16+5*$SIZE_T`($sp)
++	li		$x70,0x70
++	mtspr		256,r0
++
++	subi		$rounds,$rounds,3	# -4 in total
++
++	lvx		$rndkey0,$x00,$key1	# load key schedule
++	lvx		v30,$x10,$key1
++	addi		$key1,$key1,0x20
++	lvx		v31,$x00,$key1
++	?vperm		$rndkey0,$rndkey0,v30,$keyperm
++	addi		$key_,$sp,$FRAME+15
++	mtctr		$rounds
++
++Load_xts_dec_key:
++	?vperm		v24,v30,v31,$keyperm
++	lvx		v30,$x10,$key1
++	addi		$key1,$key1,0x20
++	stvx		v24,$x00,$key_		# off-load round[1]
++	?vperm		v25,v31,v30,$keyperm
++	lvx		v31,$x00,$key1
++	stvx		v25,$x10,$key_		# off-load round[2]
++	addi		$key_,$key_,0x20
++	bdnz		Load_xts_dec_key
++
++	lvx		v26,$x10,$key1
++	?vperm		v24,v30,v31,$keyperm
++	lvx		v27,$x20,$key1
++	stvx		v24,$x00,$key_		# off-load round[3]
++	?vperm		v25,v31,v26,$keyperm
++	lvx		v28,$x30,$key1
++	stvx		v25,$x10,$key_		# off-load round[4]
++	addi		$key_,$sp,$FRAME+15	# rewind $key_
++	?vperm		v26,v26,v27,$keyperm
++	lvx		v29,$x40,$key1
++	?vperm		v27,v27,v28,$keyperm
++	lvx		v30,$x50,$key1
++	?vperm		v28,v28,v29,$keyperm
++	lvx		v31,$x60,$key1
++	?vperm		v29,v29,v30,$keyperm
++	lvx		$twk5,$x70,$key1	# borrow $twk5
++	?vperm		v30,v30,v31,$keyperm
++	lvx		v24,$x00,$key_		# pre-load round[1]
++	?vperm		v31,v31,$twk5,$keyperm
++	lvx		v25,$x10,$key_		# pre-load round[2]
++
++	 vperm		$in0,$inout,$inptail,$inpperm
++	 subi		$inp,$inp,31		# undo "caller"
++	vxor		$twk0,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out0,$in0,$twk0
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in1,$x10,$inp
++	vxor		$twk1,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in1,$in1,$in1,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out1,$in1,$twk1
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in2,$x20,$inp
++	 andi.		$taillen,$len,15
++	vxor		$twk2,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in2,$in2,$in2,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out2,$in2,$twk2
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in3,$x30,$inp
++	 sub		$len,$len,$taillen
++	vxor		$twk3,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in3,$in3,$in3,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out3,$in3,$twk3
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in4,$x40,$inp
++	 subi		$len,$len,0x60
++	vxor		$twk4,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in4,$in4,$in4,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out4,$in4,$twk4
++	vxor		$tweak,$tweak,$tmp
++
++	 lvx_u		$in5,$x50,$inp
++	 addi		$inp,$inp,0x60
++	vxor		$twk5,$tweak,$rndkey0
++	vsrab		$tmp,$tweak,$seven	# next tweak value
++	vaddubm		$tweak,$tweak,$tweak
++	vsldoi		$tmp,$tmp,$tmp,15
++	 le?vperm	$in5,$in5,$in5,$leperm
++	vand		$tmp,$tmp,$eighty7
++	 vxor		$out5,$in5,$twk5
++	vxor		$tweak,$tweak,$tmp
++
++	vxor		v31,v31,$rndkey0
++	mtctr		$rounds
++	b		Loop_xts_dec6x
++
++.align	5
++Loop_xts_dec6x:
++	vncipher	$out0,$out0,v24
++	vncipher	$out1,$out1,v24
++	vncipher	$out2,$out2,v24
++	vncipher	$out3,$out3,v24
++	vncipher	$out4,$out4,v24
++	vncipher	$out5,$out5,v24
++	lvx		v24,$x20,$key_		# round[3]
++	addi		$key_,$key_,0x20
++
++	vncipher	$out0,$out0,v25
++	vncipher	$out1,$out1,v25
++	vncipher	$out2,$out2,v25
++	vncipher	$out3,$out3,v25
++	vncipher	$out4,$out4,v25
++	vncipher	$out5,$out5,v25
++	lvx		v25,$x10,$key_		# round[4]
++	bdnz		Loop_xts_dec6x
++
++	subic		$len,$len,96		# $len-=96
++	 vxor		$in0,$twk0,v31		# xor with last round key
++	vncipher	$out0,$out0,v24
++	vncipher	$out1,$out1,v24
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk0,$tweak,$rndkey0
++	 vaddubm	$tweak,$tweak,$tweak
++	vncipher	$out2,$out2,v24
++	vncipher	$out3,$out3,v24
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vncipher	$out4,$out4,v24
++	vncipher	$out5,$out5,v24
++
++	subfe.		r0,r0,r0		# borrow?-1:0
++	 vand		$tmp,$tmp,$eighty7
++	vncipher	$out0,$out0,v25
++	vncipher	$out1,$out1,v25
++	 vxor		$tweak,$tweak,$tmp
++	vncipher	$out2,$out2,v25
++	vncipher	$out3,$out3,v25
++	 vxor		$in1,$twk1,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk1,$tweak,$rndkey0
++	vncipher	$out4,$out4,v25
++	vncipher	$out5,$out5,v25
++
++	and		r0,r0,$len
++	 vaddubm	$tweak,$tweak,$tweak
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vncipher	$out0,$out0,v26
++	vncipher	$out1,$out1,v26
++	 vand		$tmp,$tmp,$eighty7
++	vncipher	$out2,$out2,v26
++	vncipher	$out3,$out3,v26
++	 vxor		$tweak,$tweak,$tmp
++	vncipher	$out4,$out4,v26
++	vncipher	$out5,$out5,v26
++
++	add		$inp,$inp,r0		# $inp is adjusted in such
++						# way that at exit from the
++						# loop inX-in5 are loaded
++						# with last "words"
++	 vxor		$in2,$twk2,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk2,$tweak,$rndkey0
++	 vaddubm	$tweak,$tweak,$tweak
++	vncipher	$out0,$out0,v27
++	vncipher	$out1,$out1,v27
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vncipher	$out2,$out2,v27
++	vncipher	$out3,$out3,v27
++	 vand		$tmp,$tmp,$eighty7
++	vncipher	$out4,$out4,v27
++	vncipher	$out5,$out5,v27
++
++	addi		$key_,$sp,$FRAME+15	# rewind $key_
++	 vxor		$tweak,$tweak,$tmp
++	vncipher	$out0,$out0,v28
++	vncipher	$out1,$out1,v28
++	 vxor		$in3,$twk3,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk3,$tweak,$rndkey0
++	vncipher	$out2,$out2,v28
++	vncipher	$out3,$out3,v28
++	 vaddubm	$tweak,$tweak,$tweak
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vncipher	$out4,$out4,v28
++	vncipher	$out5,$out5,v28
++	lvx		v24,$x00,$key_		# re-pre-load round[1]
++	 vand		$tmp,$tmp,$eighty7
++
++	vncipher	$out0,$out0,v29
++	vncipher	$out1,$out1,v29
++	 vxor		$tweak,$tweak,$tmp
++	vncipher	$out2,$out2,v29
++	vncipher	$out3,$out3,v29
++	 vxor		$in4,$twk4,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk4,$tweak,$rndkey0
++	vncipher	$out4,$out4,v29
++	vncipher	$out5,$out5,v29
++	lvx		v25,$x10,$key_		# re-pre-load round[2]
++	 vaddubm	$tweak,$tweak,$tweak
++	 vsldoi		$tmp,$tmp,$tmp,15
++
++	vncipher	$out0,$out0,v30
++	vncipher	$out1,$out1,v30
++	 vand		$tmp,$tmp,$eighty7
++	vncipher	$out2,$out2,v30
++	vncipher	$out3,$out3,v30
++	 vxor		$tweak,$tweak,$tmp
++	vncipher	$out4,$out4,v30
++	vncipher	$out5,$out5,v30
++	 vxor		$in5,$twk5,v31
++	 vsrab		$tmp,$tweak,$seven	# next tweak value
++	 vxor		$twk5,$tweak,$rndkey0
++
++	vncipherlast	$out0,$out0,$in0
++	 lvx_u		$in0,$x00,$inp		# load next input block
++	 vaddubm	$tweak,$tweak,$tweak
++	 vsldoi		$tmp,$tmp,$tmp,15
++	vncipherlast	$out1,$out1,$in1
++	 lvx_u		$in1,$x10,$inp
++	vncipherlast	$out2,$out2,$in2
++	 le?vperm	$in0,$in0,$in0,$leperm
++	 lvx_u		$in2,$x20,$inp
++	 vand		$tmp,$tmp,$eighty7
++	vncipherlast	$out3,$out3,$in3
++	 le?vperm	$in1,$in1,$in1,$leperm
++	 lvx_u		$in3,$x30,$inp
++	vncipherlast	$out4,$out4,$in4
++	 le?vperm	$in2,$in2,$in2,$leperm
++	 lvx_u		$in4,$x40,$inp
++	 vxor		$tweak,$tweak,$tmp
++	vncipherlast	$out5,$out5,$in5
++	 le?vperm	$in3,$in3,$in3,$leperm
++	 lvx_u		$in5,$x50,$inp
++	 addi		$inp,$inp,0x60
++	 le?vperm	$in4,$in4,$in4,$leperm
++	 le?vperm	$in5,$in5,$in5,$leperm
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	 vxor		$out0,$in0,$twk0
++	le?vperm	$out2,$out2,$out2,$leperm
++	stvx_u		$out1,$x10,$out
++	 vxor		$out1,$in1,$twk1
++	le?vperm	$out3,$out3,$out3,$leperm
++	stvx_u		$out2,$x20,$out
++	 vxor		$out2,$in2,$twk2
++	le?vperm	$out4,$out4,$out4,$leperm
++	stvx_u		$out3,$x30,$out
++	 vxor		$out3,$in3,$twk3
++	le?vperm	$out5,$out5,$out5,$leperm
++	stvx_u		$out4,$x40,$out
++	 vxor		$out4,$in4,$twk4
++	stvx_u		$out5,$x50,$out
++	 vxor		$out5,$in5,$twk5
++	addi		$out,$out,0x60
++
++	mtctr		$rounds
++	beq		Loop_xts_dec6x		# did $len-=96 borrow?
++
++	addic.		$len,$len,0x60
++	beq		Lxts_dec6x_zero
++	cmpwi		$len,0x20
++	blt		Lxts_dec6x_one
++	nop
++	beq		Lxts_dec6x_two
++	cmpwi		$len,0x40
++	blt		Lxts_dec6x_three
++	nop
++	beq		Lxts_dec6x_four
++
++Lxts_dec6x_five:
++	vxor		$out0,$in1,$twk0
++	vxor		$out1,$in2,$twk1
++	vxor		$out2,$in3,$twk2
++	vxor		$out3,$in4,$twk3
++	vxor		$out4,$in5,$twk4
++
++	bl		_aesp8_xts_dec5x
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	vmr		$twk0,$twk5		# unused tweak
++	vxor		$twk1,$tweak,$rndkey0
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	vxor		$out0,$in0,$twk1
++	le?vperm	$out2,$out2,$out2,$leperm
++	stvx_u		$out1,$x10,$out
++	le?vperm	$out3,$out3,$out3,$leperm
++	stvx_u		$out2,$x20,$out
++	le?vperm	$out4,$out4,$out4,$leperm
++	stvx_u		$out3,$x30,$out
++	stvx_u		$out4,$x40,$out
++	addi		$out,$out,0x50
++	bne		Lxts_dec6x_steal
++	b		Lxts_dec6x_done
++
++.align	4
++Lxts_dec6x_four:
++	vxor		$out0,$in2,$twk0
++	vxor		$out1,$in3,$twk1
++	vxor		$out2,$in4,$twk2
++	vxor		$out3,$in5,$twk3
++	vxor		$out4,$out4,$out4
++
++	bl		_aesp8_xts_dec5x
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	vmr		$twk0,$twk4		# unused tweak
++	vmr		$twk1,$twk5
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	vxor		$out0,$in0,$twk5
++	le?vperm	$out2,$out2,$out2,$leperm
++	stvx_u		$out1,$x10,$out
++	le?vperm	$out3,$out3,$out3,$leperm
++	stvx_u		$out2,$x20,$out
++	stvx_u		$out3,$x30,$out
++	addi		$out,$out,0x40
++	bne		Lxts_dec6x_steal
++	b		Lxts_dec6x_done
++
++.align	4
++Lxts_dec6x_three:
++	vxor		$out0,$in3,$twk0
++	vxor		$out1,$in4,$twk1
++	vxor		$out2,$in5,$twk2
++	vxor		$out3,$out3,$out3
++	vxor		$out4,$out4,$out4
++
++	bl		_aesp8_xts_dec5x
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	vmr		$twk0,$twk3		# unused tweak
++	vmr		$twk1,$twk4
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	vxor		$out0,$in0,$twk4
++	le?vperm	$out2,$out2,$out2,$leperm
++	stvx_u		$out1,$x10,$out
++	stvx_u		$out2,$x20,$out
++	addi		$out,$out,0x30
++	bne		Lxts_dec6x_steal
++	b		Lxts_dec6x_done
++
++.align	4
++Lxts_dec6x_two:
++	vxor		$out0,$in4,$twk0
++	vxor		$out1,$in5,$twk1
++	vxor		$out2,$out2,$out2
++	vxor		$out3,$out3,$out3
++	vxor		$out4,$out4,$out4
++
++	bl		_aesp8_xts_dec5x
++
++	le?vperm	$out0,$out0,$out0,$leperm
++	vmr		$twk0,$twk2		# unused tweak
++	vmr		$twk1,$twk3
++	le?vperm	$out1,$out1,$out1,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	vxor		$out0,$in0,$twk3
++	stvx_u		$out1,$x10,$out
++	addi		$out,$out,0x20
++	bne		Lxts_dec6x_steal
++	b		Lxts_dec6x_done
++
++.align	4
++Lxts_dec6x_one:
++	vxor		$out0,$in5,$twk0
++	nop
++Loop_xts_dec1x:
++	vncipher	$out0,$out0,v24
++	lvx		v24,$x20,$key_		# round[3]
++	addi		$key_,$key_,0x20
++
++	vncipher	$out0,$out0,v25
++	lvx		v25,$x10,$key_		# round[4]
++	bdnz		Loop_xts_dec1x
++
++	subi		r0,$taillen,1
++	vncipher	$out0,$out0,v24
++
++	andi.		r0,r0,16
++	cmpwi		$taillen,0
++	vncipher	$out0,$out0,v25
++
++	sub		$inp,$inp,r0
++	vncipher	$out0,$out0,v26
++
++	lvx_u		$in0,0,$inp
++	vncipher	$out0,$out0,v27
++
++	addi		$key_,$sp,$FRAME+15	# rewind $key_
++	vncipher	$out0,$out0,v28
++	lvx		v24,$x00,$key_		# re-pre-load round[1]
++
++	vncipher	$out0,$out0,v29
++	lvx		v25,$x10,$key_		# re-pre-load round[2]
++	 vxor		$twk0,$twk0,v31
++
++	le?vperm	$in0,$in0,$in0,$leperm
++	vncipher	$out0,$out0,v30
++
++	mtctr		$rounds
++	vncipherlast	$out0,$out0,$twk0
++
++	vmr		$twk0,$twk1		# unused tweak
++	vmr		$twk1,$twk2
++	le?vperm	$out0,$out0,$out0,$leperm
++	stvx_u		$out0,$x00,$out		# store output
++	addi		$out,$out,0x10
++	vxor		$out0,$in0,$twk2
++	bne		Lxts_dec6x_steal
++	b		Lxts_dec6x_done
++
++.align	4
++Lxts_dec6x_zero:
++	cmpwi		$taillen,0
++	beq		Lxts_dec6x_done
++
++	lvx_u		$in0,0,$inp
++	le?vperm	$in0,$in0,$in0,$leperm
++	vxor		$out0,$in0,$twk1
++Lxts_dec6x_steal:
++	vncipher	$out0,$out0,v24
++	lvx		v24,$x20,$key_		# round[3]
++	addi		$key_,$key_,0x20
++
++	vncipher	$out0,$out0,v25
++	lvx		v25,$x10,$key_		# round[4]
++	bdnz		Lxts_dec6x_steal
++
++	add		$inp,$inp,$taillen
++	vncipher	$out0,$out0,v24
++
++	cmpwi		$taillen,0
++	vncipher	$out0,$out0,v25
++
++	lvx_u		$in0,0,$inp
++	vncipher	$out0,$out0,v26
++
++	lvsr		$inpperm,0,$taillen	# $in5 is no more
++	vncipher	$out0,$out0,v27
++
++	addi		$key_,$sp,$FRAME+15	# rewind $key_
++	vncipher	$out0,$out0,v28
++	lvx		v24,$x00,$key_		# re-pre-load round[1]
++
++	vncipher	$out0,$out0,v29
++	lvx		v25,$x10,$key_		# re-pre-load round[2]
++	 vxor		$twk1,$twk1,v31
++
++	le?vperm	$in0,$in0,$in0,$leperm
++	vncipher	$out0,$out0,v30
++
++	vperm		$in0,$in0,$in0,$inpperm
++	vncipherlast	$tmp,$out0,$twk1
++
++	le?vperm	$out0,$tmp,$tmp,$leperm
++	le?stvx_u	$out0,0,$out
++	be?stvx_u	$tmp,0,$out
++
++	vxor		$out0,$out0,$out0
++	vspltisb	$out1,-1
++	vperm		$out0,$out0,$out1,$inpperm
++	vsel		$out0,$in0,$tmp,$out0
++	vxor		$out0,$out0,$twk0
++
++	subi		r30,$out,1
++	mtctr		$taillen
++Loop_xts_dec6x_steal:
++	lbzu		r0,1(r30)
++	stb		r0,16(r30)
++	bdnz		Loop_xts_dec6x_steal
++
++	li		$taillen,0
++	mtctr		$rounds
++	b		Loop_xts_dec1x		# one more time...
++
++.align	4
++Lxts_dec6x_done:
++	${UCMP}i	$ivp,0
++	beq		Lxts_dec6x_ret
++
++	vxor		$tweak,$twk0,$rndkey0
++	le?vperm	$tweak,$tweak,$tweak,$leperm
++	stvx_u		$tweak,0,$ivp
++
++Lxts_dec6x_ret:
++	mtlr		r11
++	li		r10,`$FRAME+15`
++	li		r11,`$FRAME+31`
++	stvx		$seven,r10,$sp		# wipe copies of round keys
++	addi		r10,r10,32
++	stvx		$seven,r11,$sp
++	addi		r11,r11,32
++	stvx		$seven,r10,$sp
++	addi		r10,r10,32
++	stvx		$seven,r11,$sp
++	addi		r11,r11,32
++	stvx		$seven,r10,$sp
++	addi		r10,r10,32
++	stvx		$seven,r11,$sp
++	addi		r11,r11,32
++	stvx		$seven,r10,$sp
++	addi		r10,r10,32
++	stvx		$seven,r11,$sp
++	addi		r11,r11,32
++
++	mtspr		256,$vrsave
++	lvx		v20,r10,$sp		# ABI says so
++	addi		r10,r10,32
++	lvx		v21,r11,$sp
++	addi		r11,r11,32
++	lvx		v22,r10,$sp
++	addi		r10,r10,32
++	lvx		v23,r11,$sp
++	addi		r11,r11,32
++	lvx		v24,r10,$sp
++	addi		r10,r10,32
++	lvx		v25,r11,$sp
++	addi		r11,r11,32
++	lvx		v26,r10,$sp
++	addi		r10,r10,32
++	lvx		v27,r11,$sp
++	addi		r11,r11,32
++	lvx		v28,r10,$sp
++	addi		r10,r10,32
++	lvx		v29,r11,$sp
++	addi		r11,r11,32
++	lvx		v30,r10,$sp
++	lvx		v31,r11,$sp
++	$POP		r26,`$FRAME+21*16+0*$SIZE_T`($sp)
++	$POP		r27,`$FRAME+21*16+1*$SIZE_T`($sp)
++	$POP		r28,`$FRAME+21*16+2*$SIZE_T`($sp)
++	$POP		r29,`$FRAME+21*16+3*$SIZE_T`($sp)
++	$POP		r30,`$FRAME+21*16+4*$SIZE_T`($sp)
++	$POP		r31,`$FRAME+21*16+5*$SIZE_T`($sp)
++	addi		$sp,$sp,`$FRAME+21*16+6*$SIZE_T`
++	blr
++	.long		0
++	.byte		0,12,0x04,1,0x80,6,6,0
++	.long		0
++
++.align	5
++_aesp8_xts_dec5x:
++	vncipher	$out0,$out0,v24
++	vncipher	$out1,$out1,v24
++	vncipher	$out2,$out2,v24
++	vncipher	$out3,$out3,v24
++	vncipher	$out4,$out4,v24
++	lvx		v24,$x20,$key_		# round[3]
++	addi		$key_,$key_,0x20
++
++	vncipher	$out0,$out0,v25
++	vncipher	$out1,$out1,v25
++	vncipher	$out2,$out2,v25
++	vncipher	$out3,$out3,v25
++	vncipher	$out4,$out4,v25
++	lvx		v25,$x10,$key_		# round[4]
++	bdnz		_aesp8_xts_dec5x
++
++	subi		r0,$taillen,1
++	vncipher	$out0,$out0,v24
++	vncipher	$out1,$out1,v24
++	vncipher	$out2,$out2,v24
++	vncipher	$out3,$out3,v24
++	vncipher	$out4,$out4,v24
++
++	andi.		r0,r0,16
++	cmpwi		$taillen,0
++	vncipher	$out0,$out0,v25
++	vncipher	$out1,$out1,v25
++	vncipher	$out2,$out2,v25
++	vncipher	$out3,$out3,v25
++	vncipher	$out4,$out4,v25
++	 vxor		$twk0,$twk0,v31
++
++	sub		$inp,$inp,r0
++	vncipher	$out0,$out0,v26
++	vncipher	$out1,$out1,v26
++	vncipher	$out2,$out2,v26
++	vncipher	$out3,$out3,v26
++	vncipher	$out4,$out4,v26
++	 vxor		$in1,$twk1,v31
++
++	vncipher	$out0,$out0,v27
++	lvx_u		$in0,0,$inp
++	vncipher	$out1,$out1,v27
++	vncipher	$out2,$out2,v27
++	vncipher	$out3,$out3,v27
++	vncipher	$out4,$out4,v27
++	 vxor		$in2,$twk2,v31
++
++	addi		$key_,$sp,$FRAME+15	# rewind $key_
++	vncipher	$out0,$out0,v28
++	vncipher	$out1,$out1,v28
++	vncipher	$out2,$out2,v28
++	vncipher	$out3,$out3,v28
++	vncipher	$out4,$out4,v28
++	lvx		v24,$x00,$key_		# re-pre-load round[1]
++	 vxor		$in3,$twk3,v31
++
++	vncipher	$out0,$out0,v29
++	le?vperm	$in0,$in0,$in0,$leperm
++	vncipher	$out1,$out1,v29
++	vncipher	$out2,$out2,v29
++	vncipher	$out3,$out3,v29
++	vncipher	$out4,$out4,v29
++	lvx		v25,$x10,$key_		# re-pre-load round[2]
++	 vxor		$in4,$twk4,v31
++
++	vncipher	$out0,$out0,v30
++	vncipher	$out1,$out1,v30
++	vncipher	$out2,$out2,v30
++	vncipher	$out3,$out3,v30
++	vncipher	$out4,$out4,v30
++
++	vncipherlast	$out0,$out0,$twk0
++	vncipherlast	$out1,$out1,$in1
++	vncipherlast	$out2,$out2,$in2
++	vncipherlast	$out3,$out3,$in3
++	vncipherlast	$out4,$out4,$in4
++	mtctr		$rounds
++	blr
++        .long   	0
++        .byte   	0,12,0x14,0,0,0,0,0
++___
++}}	}}}
++
+ my $consts=1;
+ foreach(split("\n",$code)) {
+         s/\`([^\`]*)\`/eval($1)/geo;
 diff --git a/crypto/aes/asm/aest4-sparcv9.pl b/crypto/aes/asm/aest4-sparcv9.pl
-index 5b0159e22289..bf479c60aede 100644
+index 5b0159e..bf479c6 100644
 --- a/crypto/aes/asm/aest4-sparcv9.pl
 +++ b/crypto/aes/asm/aest4-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -15057,7 +18317,7 @@
  # ====================================================================
  # Written by David S. Miller <davem at devemloft.net> and Andy Polyakov
 diff --git a/crypto/aes/asm/aesv8-armx.pl b/crypto/aes/asm/aesv8-armx.pl
-index 9844ca1aabc9..aa36ed272405 100755
+index 9844ca1..aa36ed2 100755
 --- a/crypto/aes/asm/aesv8-armx.pl
 +++ b/crypto/aes/asm/aesv8-armx.pl
 @@ -1,4 +1,11 @@
@@ -15074,7 +18334,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/aes/asm/bsaes-armv7.pl b/crypto/aes/asm/bsaes-armv7.pl
-index 58d0173de246..4ccdc827594d 100644
+index 58d0173..12091ef 100644
 --- a/crypto/aes/asm/bsaes-armv7.pl
 +++ b/crypto/aes/asm/bsaes-armv7.pl
 @@ -1,4 +1,11 @@
@@ -15090,8 +18350,113 @@
  
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
+@@ -1832,8 +1839,6 @@ $code.=<<___;
+ 	b		.Lxts_enc_done
+ .align	4
+ .Lxts_enc_6:
+-	vst1.64		{@XMM[14]}, [r0,:128]		@ next round tweak
+-
+ 	veor		@XMM[4], @XMM[4], @XMM[12]
+ #ifndef	BSAES_ASM_EXTENDED_KEY
+ 	add		r4, sp, #0x90			@ pass key schedule
+@@ -1869,8 +1874,6 @@ $code.=<<___;
+ 
+ .align	5
+ .Lxts_enc_5:
+-	vst1.64		{@XMM[13]}, [r0,:128]		@ next round tweak
+-
+ 	veor		@XMM[3], @XMM[3], @XMM[11]
+ #ifndef	BSAES_ASM_EXTENDED_KEY
+ 	add		r4, sp, #0x90			@ pass key schedule
+@@ -1899,8 +1902,6 @@ $code.=<<___;
+ 	b		.Lxts_enc_done
+ .align	4
+ .Lxts_enc_4:
+-	vst1.64		{@XMM[12]}, [r0,:128]		@ next round tweak
+-
+ 	veor		@XMM[2], @XMM[2], @XMM[10]
+ #ifndef	BSAES_ASM_EXTENDED_KEY
+ 	add		r4, sp, #0x90			@ pass key schedule
+@@ -1926,8 +1927,6 @@ $code.=<<___;
+ 	b		.Lxts_enc_done
+ .align	4
+ .Lxts_enc_3:
+-	vst1.64		{@XMM[11]}, [r0,:128]		@ next round tweak
+-
+ 	veor		@XMM[1], @XMM[1], @XMM[9]
+ #ifndef	BSAES_ASM_EXTENDED_KEY
+ 	add		r4, sp, #0x90			@ pass key schedule
+@@ -1952,8 +1951,6 @@ $code.=<<___;
+ 	b		.Lxts_enc_done
+ .align	4
+ .Lxts_enc_2:
+-	vst1.64		{@XMM[10]}, [r0,:128]		@ next round tweak
+-
+ 	veor		@XMM[0], @XMM[0], @XMM[8]
+ #ifndef	BSAES_ASM_EXTENDED_KEY
+ 	add		r4, sp, #0x90			@ pass key schedule
+@@ -1976,7 +1973,7 @@ $code.=<<___;
+ .align	4
+ .Lxts_enc_1:
+ 	mov		r0, sp
+-	veor		@XMM[0], @XMM[8]
++	veor		@XMM[0], @XMM[0], @XMM[8]
+ 	mov		r1, sp
+ 	vst1.8		{@XMM[0]}, [sp,:128]
+ 	mov		r2, $key
+@@ -2288,8 +2285,6 @@ $code.=<<___;
+ 	b		.Lxts_dec_done
+ .align	4
+ .Lxts_dec_5:
+-	vst1.64		{@XMM[13]}, [r0,:128]		@ next round tweak
+-
+ 	veor		@XMM[3], @XMM[3], @XMM[11]
+ #ifndef	BSAES_ASM_EXTENDED_KEY
+ 	add		r4, sp, #0x90			@ pass key schedule
+@@ -2318,8 +2313,6 @@ $code.=<<___;
+ 	b		.Lxts_dec_done
+ .align	4
+ .Lxts_dec_4:
+-	vst1.64		{@XMM[12]}, [r0,:128]		@ next round tweak
+-
+ 	veor		@XMM[2], @XMM[2], @XMM[10]
+ #ifndef	BSAES_ASM_EXTENDED_KEY
+ 	add		r4, sp, #0x90			@ pass key schedule
+@@ -2345,8 +2338,6 @@ $code.=<<___;
+ 	b		.Lxts_dec_done
+ .align	4
+ .Lxts_dec_3:
+-	vst1.64		{@XMM[11]}, [r0,:128]		@ next round tweak
+-
+ 	veor		@XMM[1], @XMM[1], @XMM[9]
+ #ifndef	BSAES_ASM_EXTENDED_KEY
+ 	add		r4, sp, #0x90			@ pass key schedule
+@@ -2371,8 +2362,6 @@ $code.=<<___;
+ 	b		.Lxts_dec_done
+ .align	4
+ .Lxts_dec_2:
+-	vst1.64		{@XMM[10]}, [r0,:128]		@ next round tweak
+-
+ 	veor		@XMM[0], @XMM[0], @XMM[8]
+ #ifndef	BSAES_ASM_EXTENDED_KEY
+ 	add		r4, sp, #0x90			@ pass key schedule
+@@ -2395,12 +2384,12 @@ $code.=<<___;
+ .align	4
+ .Lxts_dec_1:
+ 	mov		r0, sp
+-	veor		@XMM[0], @XMM[8]
++	veor		@XMM[0], @XMM[0], @XMM[8]
+ 	mov		r1, sp
+ 	vst1.8		{@XMM[0]}, [sp,:128]
++	mov		r5, $magic			@ preserve magic
+ 	mov		r2, $key
+ 	mov		r4, $fp				@ preserve fp
+-	mov		r5, $magic			@ preserve magic
+ 
+ 	bl		AES_decrypt
+ 
 diff --git a/crypto/aes/asm/bsaes-x86_64.pl b/crypto/aes/asm/bsaes-x86_64.pl
-index 3f7d33c45bce..6b14a517dc58 100644
+index 3f7d33c..6b14a51 100644
 --- a/crypto/aes/asm/bsaes-x86_64.pl
 +++ b/crypto/aes/asm/bsaes-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -15117,7 +18482,7 @@
  
  my ($inp,$out,$len,$key,$ivp)=("%rdi","%rsi","%rdx","%rcx");
 diff --git a/crypto/aes/asm/vpaes-armv8.pl b/crypto/aes/asm/vpaes-armv8.pl
-index f44c62a0a28e..776a9b744f3d 100755
+index f44c62a..776a9b7 100755
 --- a/crypto/aes/asm/vpaes-armv8.pl
 +++ b/crypto/aes/asm/vpaes-armv8.pl
 @@ -1,4 +1,11 @@
@@ -15134,7 +18499,7 @@
  ######################################################################
  ## Constant-time SSSE3 AES core implementation.
 diff --git a/crypto/aes/asm/vpaes-ppc.pl b/crypto/aes/asm/vpaes-ppc.pl
-index 1759ae9dcff2..7f8120992705 100644
+index 1759ae9..7f81209 100644
 --- a/crypto/aes/asm/vpaes-ppc.pl
 +++ b/crypto/aes/asm/vpaes-ppc.pl
 @@ -1,4 +1,11 @@
@@ -15151,7 +18516,7 @@
  ######################################################################
  ## Constant-time SSSE3 AES core implementation.
 diff --git a/crypto/aes/asm/vpaes-x86.pl b/crypto/aes/asm/vpaes-x86.pl
-index 4fcd561592a7..47615c0795f8 100644
+index 4fcd561..47615c0 100644
 --- a/crypto/aes/asm/vpaes-x86.pl
 +++ b/crypto/aes/asm/vpaes-x86.pl
 @@ -1,4 +1,11 @@
@@ -15168,7 +18533,7 @@
  ######################################################################
  ## Constant-time SSSE3 AES core implementation.
 diff --git a/crypto/aes/asm/vpaes-x86_64.pl b/crypto/aes/asm/vpaes-x86_64.pl
-index f2ef318fae4e..265b6aa36201 100644
+index f2ef318..265b6aa 100644
 --- a/crypto/aes/asm/vpaes-x86_64.pl
 +++ b/crypto/aes/asm/vpaes-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -15194,7 +18559,7 @@
  
  $PREFIX="vpaes";
 diff --git a/crypto/aes/build.info b/crypto/aes/build.info
-index 08c3afe48d3b..cf6cb5ec25ba 100644
+index 08c3afe..cf6cb5e 100644
 --- a/crypto/aes/build.info
 +++ b/crypto/aes/build.info
 @@ -25,6 +25,8 @@ INCLUDE[aes-sparcv9.o]=..
@@ -15207,7 +18572,7 @@
  GENERATE[aes-ppc.s]=asm/aes-ppc.pl $(PERLASM_SCHEME)
  GENERATE[vpaes-ppc.s]=asm/vpaes-ppc.pl $(PERLASM_SCHEME)
 diff --git a/crypto/alphacpuid.pl b/crypto/alphacpuid.pl
-index 8af0f09d4b95..6c7fd4c9dd3d 100644
+index 8af0f09..6c7fd4c 100644
 --- a/crypto/alphacpuid.pl
 +++ b/crypto/alphacpuid.pl
 @@ -1,7 +1,14 @@
@@ -15227,7 +18592,7 @@
  
  print <<'___';
  .text
-@@ -127,6 +134,34 @@ print <<'___';
+@@ -127,6 +134,34 @@ OPENSSL_cleanse:
  	bne	$17,.Little
  .Ldone: ret	($26)
  .end	OPENSSL_cleanse
@@ -15263,7 +18628,7 @@
  {
  my ($out,$cnt,$max)=("\$16","\$17","\$18");
 diff --git a/crypto/arm64cpuid.pl b/crypto/arm64cpuid.pl
-index bfec664198cf..caa33875c937 100755
+index bfec664..caa3387 100755
 --- a/crypto/arm64cpuid.pl
 +++ b/crypto/arm64cpuid.pl
 @@ -1,4 +1,11 @@
@@ -15279,7 +18644,7 @@
  
  $flavour = shift;
  $output  = shift;
-@@ -62,6 +69,57 @@ $code.=<<___;
+@@ -62,6 +69,57 @@ _armv8_pmull_probe:
  	pmull	v0.1q, v0.1d, v0.1d
  	ret
  .size	_armv8_pmull_probe,.-_armv8_pmull_probe
@@ -15338,7 +18703,7 @@
  
  print $code;
 diff --git a/crypto/arm_arch.h b/crypto/arm_arch.h
-index 31dbd3a5fc09..3fc9e69b1c0a 100644
+index 31dbd3a..3fc9e69 100644
 --- a/crypto/arm_arch.h
 +++ b/crypto/arm_arch.h
 @@ -1,3 +1,12 @@
@@ -15355,7 +18720,7 @@
  # define __ARM_ARCH_H__
  
 diff --git a/crypto/armcap.c b/crypto/armcap.c
-index 1afbc9fcd036..4215766bf449 100644
+index 1afbc9f..4215766 100644
 --- a/crypto/armcap.c
 +++ b/crypto/armcap.c
 @@ -1,3 +1,12 @@
@@ -15372,7 +18737,7 @@
  #include <stdlib.h>
  #include <string.h>
 diff --git a/crypto/armv4cpuid.pl b/crypto/armv4cpuid.pl
-index c66962350d30..33c893d0e460 100644
+index c669623..33c893d 100644
 --- a/crypto/armv4cpuid.pl
 +++ b/crypto/armv4cpuid.pl
 @@ -1,4 +1,11 @@
@@ -15388,7 +18753,7 @@
  
  $flavour = shift;
  $output  = shift;
-@@ -98,6 +105,36 @@ $code.=<<___;
+@@ -98,6 +105,36 @@ OPENSSL_cleanse:
  #endif
  .size	OPENSSL_cleanse,.-OPENSSL_cleanse
  
@@ -15427,7 +18792,7 @@
  .fpu	neon
 diff --git a/crypto/asn1/Makefile.in b/crypto/asn1/Makefile.in
 deleted file mode 100644
-index 282bd45727fe..000000000000
+index 282bd45..0000000
 --- a/crypto/asn1/Makefile.in
 +++ /dev/null
 @@ -1,78 +0,0 @@
@@ -15510,15 +18875,13 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/asn1/a_bitstr.c b/crypto/asn1/a_bitstr.c
-index 00b0854c6b21..33be907f9d5e 100644
+index 00b0854..33be907 100644
 --- a/crypto/asn1/a_bitstr.c
 +++ b/crypto/asn1/a_bitstr.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -15566,7 +18929,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -15594,7 +18959,7 @@
      return (ret);
  }
 diff --git a/crypto/asn1/a_d2i_fp.c b/crypto/asn1/a_d2i_fp.c
-index 5ba6e1d1dadf..e5c1d0ed70e2 100644
+index 5ba6e1d..e5c1d0e 100644
 --- a/crypto/asn1/a_d2i_fp.c
 +++ b/crypto/asn1/a_d2i_fp.c
 @@ -1,63 +1,16 @@
@@ -15769,7 +19134,7 @@
              } else
                  want = HEADER_SIZE;
 diff --git a/crypto/asn1/a_digest.c b/crypto/asn1/a_digest.c
-index a2c837c75703..2f9b63b2a102 100644
+index a2c837c..2f9b63b 100644
 --- a/crypto/asn1/a_digest.c
 +++ b/crypto/asn1/a_digest.c
 @@ -1,58 +1,10 @@
@@ -15838,15 +19203,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_dup.c b/crypto/asn1/a_dup.c
-index 569fceea94d3..d9a57b2c6123 100644
+index 569fcee..d9a57b2 100644
 --- a/crypto/asn1/a_dup.c
 +++ b/crypto/asn1/a_dup.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -15894,7 +19257,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -15907,15 +19272,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_gentm.c b/crypto/asn1/a_gentm.c
-index 7ba5e524157d..8d43ee5f5309 100644
+index 7ba5e52..8d43ee5 100644
 --- a/crypto/asn1/a_gentm.c
 +++ b/crypto/asn1/a_gentm.c
 @@ -1,62 +1,14 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -15963,7 +19326,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -16044,7 +19409,7 @@
  
  const char *_asn1_mon[12] = {
 diff --git a/crypto/asn1/a_i2d_fp.c b/crypto/asn1/a_i2d_fp.c
-index 68eedc41228f..1514ede4fd48 100644
+index 68eedc4..1514ede 100644
 --- a/crypto/asn1/a_i2d_fp.c
 +++ b/crypto/asn1/a_i2d_fp.c
 @@ -1,58 +1,10 @@
@@ -16113,15 +19478,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_int.c b/crypto/asn1/a_int.c
-index ec623f7b5a3f..9c28c02951f8 100644
+index ec623f7..43174f7 100644
 --- a/crypto/asn1/a_int.c
 +++ b/crypto/asn1/a_int.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -16169,7 +19532,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -16181,6 +19546,34 @@
   */
  
  #include <stdio.h>
+@@ -163,21 +115,21 @@ static size_t i2c_ibuf(const unsigned char *b, size_t blen, int neg,
+         memcpy(p, b, blen);
+     else {
+         /* Begin at the end of the encoding */
+-        n = b + blen - 1;
+-        p += blen - 1;
++        n = b + blen;
++        p += blen;
+         i = blen;
+         /* Copy zeros to destination as long as source is zero */
+-        while (!*n && i > 1) {
+-            *(p--) = 0;
++        while (!n[-1] && i > 1) {
++            *(--p) = 0;
+             n--;
+             i--;
+         }
+         /* Complement and increment next octet */
+-        *(p--) = ((*(n--)) ^ 0xff) + 1;
++        *(--p) = ((*(--n)) ^ 0xff) + 1;
+         i--;
+         /* Complement any octets left */
+         for (; i > 0; i--)
+-            *(p--) = *(n--) ^ 0xff;
++            *(--p) = *(--n) ^ 0xff;
+     }
+ 
+     *pp += ret;
 @@ -249,18 +201,18 @@ static size_t c2i_ibuf(unsigned char *b, int *pneg,
      /* Must be negative: calculate twos complement */
      if (b) {
@@ -16205,7 +19598,7 @@
      return plen;
  }
 diff --git a/crypto/asn1/a_mbstr.c b/crypto/asn1/a_mbstr.c
-index 8c38e19963b8..5578e9239769 100644
+index 8c38e19..5578e92 100644
 --- a/crypto/asn1/a_mbstr.c
 +++ b/crypto/asn1/a_mbstr.c
 @@ -1,59 +1,10 @@
@@ -16274,7 +19667,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_object.c b/crypto/asn1/a_object.c
-index 5d3ebd6ca7ab..4cca7a09e304 100644
+index 5d3ebd6..4cca7a0 100644
 --- a/crypto/asn1/a_object.c
 +++ b/crypto/asn1/a_object.c
 @@ -1,58 +1,10 @@
@@ -16343,7 +19736,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_octet.c b/crypto/asn1/a_octet.c
-index 7b5bf6fc38d2..2e1205caea00 100644
+index 7b5bf6f..2e1205c 100644
 --- a/crypto/asn1/a_octet.c
 +++ b/crypto/asn1/a_octet.c
 @@ -1,58 +1,10 @@
@@ -16412,7 +19805,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_print.c b/crypto/asn1/a_print.c
-index 9c70891c2225..1aafe7c839e6 100644
+index 9c70891..1aafe7c 100644
 --- a/crypto/asn1/a_print.c
 +++ b/crypto/asn1/a_print.c
 @@ -1,61 +1,14 @@
@@ -16485,7 +19878,7 @@
  #include <openssl/asn1.h>
  
 diff --git a/crypto/asn1/a_sign.c b/crypto/asn1/a_sign.c
-index 616f97993fa9..7e21a5ec9fbd 100644
+index 616f979..7e21a5e 100644
 --- a/crypto/asn1/a_sign.c
 +++ b/crypto/asn1/a_sign.c
 @@ -1,111 +1,10 @@
@@ -16607,7 +20000,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_strex.c b/crypto/asn1/a_strex.c
-index 977f523fbfea..59d51210c3cd 100644
+index 977f523..d419e9d 100644
 --- a/crypto/asn1/a_strex.c
 +++ b/crypto/asn1/a_strex.c
 @@ -1,59 +1,10 @@
@@ -16737,6 +20130,15 @@
                              io_ch, arg);
              if (len < 0)
                  return -1;
+@@ -326,7 +282,7 @@ static const signed char tag2nbyte[] = {
+     -1, -1, -1, -1, -1,         /* 5-9 */
+     -1, -1, 0, -1,              /* 10-13 */
+     -1, -1, -1, -1,             /* 15-17 */
+-    -1, 1, 1,                   /* 18-20 */
++    1, 1, 1,                    /* 18-20 */
+     -1, 1, 1, 1,                /* 21-24 */
+     -1, 1, -1,                  /* 25-27 */
+     4, -1, 2                    /* 28-30 */
 @@ -344,10 +300,10 @@ static int do_print_ex(char_io *io_ch, void *arg, unsigned long lflags,
      int outlen, len;
      int type;
@@ -16751,7 +20153,7 @@
      type = str->type;
  
 diff --git a/crypto/asn1/a_strnid.c b/crypto/asn1/a_strnid.c
-index 79748bf75478..53832c8a2c6d 100644
+index 79748bf..53832c8 100644
 --- a/crypto/asn1/a_strnid.c
 +++ b/crypto/asn1/a_strnid.c
 @@ -1,59 +1,10 @@
@@ -16857,7 +20259,7 @@
      }
      return rv;
 diff --git a/crypto/asn1/a_time.c b/crypto/asn1/a_time.c
-index ef429da27320..3f82c2bc3166 100644
+index ef429da..3f82c2b 100644
 --- a/crypto/asn1/a_time.c
 +++ b/crypto/asn1/a_time.c
 @@ -1,55 +1,10 @@
@@ -16931,7 +20333,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_type.c b/crypto/asn1/a_type.c
-index 8dea2e0e5cbd..8547513e3ae9 100644
+index 8dea2e0..8547513 100644
 --- a/crypto/asn1/a_type.c
 +++ b/crypto/asn1/a_type.c
 @@ -1,58 +1,10 @@
@@ -17010,7 +20412,7 @@
      case V_ASN1_OCTET_STRING:
      case V_ASN1_SEQUENCE:
 diff --git a/crypto/asn1/a_utctm.c b/crypto/asn1/a_utctm.c
-index 432125bfc401..eadc31a4522a 100644
+index 432125b..eadc31a 100644
 --- a/crypto/asn1/a_utctm.c
 +++ b/crypto/asn1/a_utctm.c
 @@ -1,58 +1,10 @@
@@ -17079,15 +20481,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_utf8.c b/crypto/asn1/a_utf8.c
-index 64e983e79a4b..e2dc09f6aee5 100644
+index 64e983e..e2dc09f 100644
 --- a/crypto/asn1/a_utf8.c
 +++ b/crypto/asn1/a_utf8.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -17135,7 +20535,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -17148,7 +20550,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/a_verify.c b/crypto/asn1/a_verify.c
-index 211689b14d51..00ab136f0223 100644
+index 211689b..00ab136 100644
 --- a/crypto/asn1/a_verify.c
 +++ b/crypto/asn1/a_verify.c
 @@ -1,58 +1,10 @@
@@ -17217,7 +20619,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/ameth_lib.c b/crypto/asn1/ameth_lib.c
-index a0c63207f9e6..577e2050edee 100644
+index a0c6320..577e205 100644
 --- a/crypto/asn1/ameth_lib.c
 +++ b/crypto/asn1/ameth_lib.c
 @@ -1,59 +1,10 @@
@@ -17286,7 +20688,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/asn1_err.c b/crypto/asn1/asn1_err.c
-index 465b2633e662..a363fdb2d12a 100644
+index 465b263..a363fdb 100644
 --- a/crypto/asn1/asn1_err.c
 +++ b/crypto/asn1/asn1_err.c
 @@ -1,61 +1,11 @@
@@ -17572,7 +20974,7 @@
  };
  
 diff --git a/crypto/asn1/asn1_gen.c b/crypto/asn1/asn1_gen.c
-index 59a99edf2ff7..493a693aa384 100644
+index 59a99ed..493a693 100644
 --- a/crypto/asn1/asn1_gen.c
 +++ b/crypto/asn1/asn1_gen.c
 @@ -1,59 +1,10 @@
@@ -17695,15 +21097,13 @@
                  goto bad_str;
              }
 diff --git a/crypto/asn1/asn1_lib.c b/crypto/asn1/asn1_lib.c
-index 938984d50959..aecb4adb5b3f 100644
+index 938984d..aecb4ad 100644
 --- a/crypto/asn1/asn1_lib.c
 +++ b/crypto/asn1/asn1_lib.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -17751,7 +21151,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -17764,7 +21166,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/asn1_locl.h b/crypto/asn1/asn1_locl.h
-index ea3d20ae3840..56c99541d5f4 100644
+index ea3d20a..56c9954 100644
 --- a/crypto/asn1/asn1_locl.h
 +++ b/crypto/asn1/asn1_locl.h
 @@ -1,59 +1,10 @@
@@ -17833,7 +21235,7 @@
  
  /* Internal ASN1 structures and functions: not for application use */
 diff --git a/crypto/asn1/asn1_par.c b/crypto/asn1/asn1_par.c
-index e41282094dec..51da0143aa2e 100644
+index e412820..1e17895 100644
 --- a/crypto/asn1/asn1_par.c
 +++ b/crypto/asn1/asn1_par.c
 @@ -1,58 +1,10 @@
@@ -17901,8 +21303,18 @@
   */
  
  #include <stdio.h>
+@@ -134,8 +86,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
+     dump_indent = 6;            /* Because we know BIO_dump_indent() */
+     p = *pp;
+     tot = p + length;
+-    op = p - 1;
+-    while ((p < tot) && (op < p)) {
++    while (length > 0) {
+         op = p;
+         j = ASN1_get_object(&p, &len, &tag, &xclass, length);
+         if (j & 0x80) {
 diff --git a/crypto/asn1/asn_mime.c b/crypto/asn1/asn_mime.c
-index 851fb91e8cb1..a588fbd23fef 100644
+index 851fb91..a6b3893 100644
 --- a/crypto/asn1/asn_mime.c
 +++ b/crypto/asn1/asn_mime.c
 @@ -1,55 +1,10 @@
@@ -17966,6 +21378,32 @@
   */
  
  #include <stdio.h>
+@@ -89,19 +44,19 @@ static int asn1_output_data(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
+ static char *strip_ends(char *name);
+ static char *strip_start(char *name);
+ static char *strip_end(char *name);
+-static MIME_HEADER *mime_hdr_new(char *name, char *value);
+-static int mime_hdr_addparam(MIME_HEADER *mhdr, char *name, char *value);
++static MIME_HEADER *mime_hdr_new(const char *name, const char *value);
++static int mime_hdr_addparam(MIME_HEADER *mhdr, const char *name, const char *value);
+ static STACK_OF(MIME_HEADER) *mime_parse_hdr(BIO *bio);
+ static int mime_hdr_cmp(const MIME_HEADER *const *a,
+                         const MIME_HEADER *const *b);
+ static int mime_param_cmp(const MIME_PARAM *const *a,
+                           const MIME_PARAM *const *b);
+ static void mime_param_free(MIME_PARAM *param);
+-static int mime_bound_check(char *line, int linelen, char *bound, int blen);
+-static int multi_split(BIO *bio, char *bound, STACK_OF(BIO) **ret);
++static int mime_bound_check(char *line, int linelen, const char *bound, int blen);
++static int multi_split(BIO *bio, const char *bound, STACK_OF(BIO) **ret);
+ static int strip_eol(char *linebuf, int *plen, int flags);
+-static MIME_HEADER *mime_hdr_find(STACK_OF(MIME_HEADER) *hdrs, char *name);
+-static MIME_PARAM *mime_param_find(MIME_HEADER *hdr, char *name);
++static MIME_HEADER *mime_hdr_find(STACK_OF(MIME_HEADER) *hdrs, const char *name);
++static MIME_PARAM *mime_param_find(MIME_HEADER *hdr, const char *name);
+ static void mime_hdr_free(MIME_HEADER *hdr);
+ 
+ #define MAX_SMLEN 1024
 @@ -187,7 +142,7 @@ static ASN1_VALUE *b64_read_asn1(BIO *bio, const ASN1_ITEM *it)
      if (!val)
          ASN1err(ASN1_F_B64_READ_ASN1, ASN1_R_DECODE_ERROR);
@@ -17975,8 +21413,77 @@
      BIO_free(b64);
      return val;
  }
+@@ -602,7 +557,7 @@ int SMIME_text(BIO *in, BIO *out)
+  * canonical parts in a STACK of bios
+  */
+ 
+-static int multi_split(BIO *bio, char *bound, STACK_OF(BIO) **ret)
++static int multi_split(BIO *bio, const char *bound, STACK_OF(BIO) **ret)
+ {
+     char linebuf[MAX_SMLEN];
+     int len, blen;
+@@ -818,7 +773,7 @@ static char *strip_end(char *name)
+     return NULL;
+ }
+ 
+-static MIME_HEADER *mime_hdr_new(char *name, char *value)
++static MIME_HEADER *mime_hdr_new(const char *name, const char *value)
+ {
+     MIME_HEADER *mhdr = NULL;
+     char *tmpname = NULL, *tmpval = NULL, *p;
+@@ -862,7 +817,7 @@ static MIME_HEADER *mime_hdr_new(char *name, char *value)
+     return NULL;
+ }
+ 
+-static int mime_hdr_addparam(MIME_HEADER *mhdr, char *name, char *value)
++static int mime_hdr_addparam(MIME_HEADER *mhdr, const char *name, const char *value)
+ {
+     char *tmpname = NULL, *tmpval = NULL, *p;
+     int c;
+@@ -919,22 +874,28 @@ static int mime_param_cmp(const MIME_PARAM *const *a,
+ 
+ /* Find a header with a given name (if possible) */
+ 
+-static MIME_HEADER *mime_hdr_find(STACK_OF(MIME_HEADER) *hdrs, char *name)
++static MIME_HEADER *mime_hdr_find(STACK_OF(MIME_HEADER) *hdrs, const char *name)
+ {
+     MIME_HEADER htmp;
+     int idx;
+-    htmp.name = name;
++
++    htmp.name = (char *)name;
++    htmp.value = NULL;
++    htmp.params = NULL;
++
+     idx = sk_MIME_HEADER_find(hdrs, &htmp);
+     if (idx < 0)
+         return NULL;
+     return sk_MIME_HEADER_value(hdrs, idx);
+ }
+ 
+-static MIME_PARAM *mime_param_find(MIME_HEADER *hdr, char *name)
++static MIME_PARAM *mime_param_find(MIME_HEADER *hdr, const char *name)
+ {
+     MIME_PARAM param;
+     int idx;
+-    param.param_name = name;
++
++    param.param_name = (char *)name;
++    param.param_value = NULL;
+     idx = sk_MIME_PARAM_find(hdr->params, &param);
+     if (idx < 0)
+         return NULL;
+@@ -963,7 +924,7 @@ static void mime_param_free(MIME_PARAM *param)
+  * 1 : part boundary
+  * 2 : final boundary
+  */
+-static int mime_bound_check(char *line, int linelen, char *bound, int blen)
++static int mime_bound_check(char *line, int linelen, const char *bound, int blen)
+ {
+     if (linelen == -1)
+         linelen = strlen(line);
 diff --git a/crypto/asn1/asn_moid.c b/crypto/asn1/asn_moid.c
-index a5c86011ff73..9bffee62f781 100644
+index a5c8601..8176b76 100644
 --- a/crypto/asn1/asn_moid.c
 +++ b/crypto/asn1/asn_moid.c
 @@ -1,59 +1,10 @@
@@ -18044,8 +21551,32 @@
   */
  
  #include <stdio.h>
+@@ -67,7 +18,7 @@
+ 
+ /* Simple ASN1 OID module: add all objects in a given section */
+ 
+-static int do_create(char *value, char *name);
++static int do_create(const char *value, const char *name);
+ 
+ static int oid_module_init(CONF_IMODULE *md, const CONF *cnf)
+ {
+@@ -106,11 +57,12 @@ void ASN1_add_oid_module(void)
+  * shortname = some long name, 1.2.3.4
+  */
+ 
+-static int do_create(char *value, char *name)
++static int do_create(const char *value, const char *name)
+ {
+     int nid;
+     ASN1_OBJECT *oid;
+-    char *ln, *ostr, *p, *lntmp;
++    const char *ln, *ostr, *p;
++    char *lntmp;
+     p = strrchr(value, ',');
+     if (!p) {
+         ln = name;
 diff --git a/crypto/asn1/asn_mstbl.c b/crypto/asn1/asn_mstbl.c
-index f90b442673a6..196dd56f06af 100644
+index f90b442..8260939 100644
 --- a/crypto/asn1/asn_mstbl.c
 +++ b/crypto/asn1/asn_mstbl.c
 @@ -1,55 +1,10 @@
@@ -18109,8 +21640,26 @@
   */
  
  #include <stdio.h>
+@@ -61,7 +16,7 @@
+ 
+ /* Multi string module: add table entries from a given section */
+ 
+-static int do_tcreate(char *value, char *name);
++static int do_tcreate(const char *value, const char *name);
+ 
+ static int stbl_module_init(CONF_IMODULE *md, const CONF *cnf)
+ {
+@@ -100,7 +55,7 @@ void ASN1_add_stable_module(void)
+  * n1:v1, n2:v2,... where name is "min", "max", "mask" or "flags".
+  */
+ 
+-static int do_tcreate(char *value, char *name)
++static int do_tcreate(const char *value, const char *name)
+ {
+     char *eptr;
+     int nid, i, rv = 0;
 diff --git a/crypto/asn1/asn_pack.c b/crypto/asn1/asn_pack.c
-index 93b7b90215b9..1f5be531896f 100644
+index 93b7b90..1f5be53 100644
 --- a/crypto/asn1/asn_pack.c
 +++ b/crypto/asn1/asn_pack.c
 @@ -1,59 +1,10 @@
@@ -18222,7 +21771,7 @@
  
  /* Extract an ASN1 object from an ASN1_STRING */
 diff --git a/crypto/asn1/bio_asn1.c b/crypto/asn1/bio_asn1.c
-index 1657ac72cfad..400effa12cf5 100644
+index 1657ac7..400effa 100644
 --- a/crypto/asn1/bio_asn1.c
 +++ b/crypto/asn1/bio_asn1.c
 @@ -1,59 +1,10 @@
@@ -18317,7 +21866,7 @@
      return 1;
  }
 diff --git a/crypto/asn1/bio_ndef.c b/crypto/asn1/bio_ndef.c
-index 9a6eaf612ab8..0f206b24977e 100644
+index 9a6eaf6..0f206b2 100644
 --- a/crypto/asn1/bio_ndef.c
 +++ b/crypto/asn1/bio_ndef.c
 @@ -1,55 +1,10 @@
@@ -18409,7 +21958,7 @@
       */
  
 diff --git a/crypto/asn1/charmap.h b/crypto/asn1/charmap.h
-index 3305ad146b9c..6e42f86a9bcd 100644
+index 3305ad1..6e42f86 100644
 --- a/crypto/asn1/charmap.h
 +++ b/crypto/asn1/charmap.h
 @@ -1,15 +1,26 @@
@@ -18451,7 +22000,7 @@
 +    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,  0,  0,  0,  0,  2
  };
 diff --git a/crypto/asn1/charmap.pl b/crypto/asn1/charmap.pl
-index 878504f9c37a..a3511da07288 100644
+index 878504f..a3511da 100644
 --- a/crypto/asn1/charmap.pl
 +++ b/crypto/asn1/charmap.pl
 @@ -1,7 +1,10 @@
@@ -18529,15 +22078,13 @@
 +print("\n};\n");
  
 diff --git a/crypto/asn1/d2i_pr.c b/crypto/asn1/d2i_pr.c
-index 85567cee5caf..e311b909dbb2 100644
+index 85567ce..e311b90 100644
 --- a/crypto/asn1/d2i_pr.c
 +++ b/crypto/asn1/d2i_pr.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -18585,7 +22132,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -18619,7 +22168,7 @@
              ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_ASN1_LIB);
              goto err;
 diff --git a/crypto/asn1/d2i_pu.c b/crypto/asn1/d2i_pu.c
-index 3ebdb5d1509e..dfdc1a6c96c3 100644
+index 3ebdb5d..dfdc1a6 100644
 --- a/crypto/asn1/d2i_pu.c
 +++ b/crypto/asn1/d2i_pu.c
 @@ -1,58 +1,10 @@
@@ -18688,15 +22237,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/evp_asn1.c b/crypto/asn1/evp_asn1.c
-index 79e7121998a2..f7416e5550c3 100644
+index 79e7121..f7416e5 100644
 --- a/crypto/asn1/evp_asn1.c
 +++ b/crypto/asn1/evp_asn1.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -18744,7 +22291,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -18757,7 +22306,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/f_int.c b/crypto/asn1/f_int.c
-index 0feb7a15b6fd..0f16ac0bbbdd 100644
+index 0feb7a1..0f16ac0 100644
 --- a/crypto/asn1/f_int.c
 +++ b/crypto/asn1/f_int.c
 @@ -1,61 +1,14 @@
@@ -18855,7 +22404,7 @@
  }
  
 diff --git a/crypto/asn1/f_string.c b/crypto/asn1/f_string.c
-index 7d9eb1475aca..f9a77a2cde2a 100644
+index 7d9eb14..0e03139 100644
 --- a/crypto/asn1/f_string.c
 +++ b/crypto/asn1/f_string.c
 @@ -1,61 +1,14 @@
@@ -18927,8 +22476,16 @@
  #include "internal/cryptlib.h"
  #include <openssl/buffer.h>
  #include <openssl/asn1.h>
-@@ -166,14 +119,8 @@ int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
+@@ -151,6 +104,7 @@ int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
+         i -= again;
+         if (i % 2 != 0) {
+             ASN1err(ASN1_F_A2I_ASN1_STRING, ASN1_R_ODD_NUMBER_OF_CHARS);
++            OPENSSL_free(s);
+             return 0;
          }
+         i /= 2;
+@@ -166,16 +120,11 @@ int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
+         }
          for (j = 0; j < i; j++, k += 2) {
              for (n = 0; n < 2; n++) {
 -                m = bufp[k + n];
@@ -18943,9 +22500,19 @@
 +                if (m < 0) {
                      ASN1err(ASN1_F_A2I_ASN1_STRING,
                              ASN1_R_NON_HEX_CHARACTERS);
++                    OPENSSL_free(s);
                      return 0;
+                 }
+                 s[num + j] <<= 4;
+@@ -194,5 +143,6 @@ int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
+ 
+  err:
+     ASN1err(ASN1_F_A2I_ASN1_STRING, ASN1_R_SHORT_LINE);
++    OPENSSL_free(s);
+     return 0;
+ }
 diff --git a/crypto/asn1/i2d_pr.c b/crypto/asn1/i2d_pr.c
-index 7ca643fb5842..445b0c84251f 100644
+index 7ca643f..445b0c8 100644
 --- a/crypto/asn1/i2d_pr.c
 +++ b/crypto/asn1/i2d_pr.c
 @@ -1,58 +1,10 @@
@@ -19031,7 +22598,7 @@
 +    return -1;
  }
 diff --git a/crypto/asn1/i2d_pu.c b/crypto/asn1/i2d_pu.c
-index c1504d8263ba..8986c43cbee5 100644
+index c1504d8..8986c43 100644
 --- a/crypto/asn1/i2d_pu.c
 +++ b/crypto/asn1/i2d_pu.c
 @@ -1,58 +1,10 @@
@@ -19100,7 +22667,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/n_pkey.c b/crypto/asn1/n_pkey.c
-index c7382bd94432..267ce60110d5 100644
+index c7382bd..267ce60 100644
 --- a/crypto/asn1/n_pkey.c
 +++ b/crypto/asn1/n_pkey.c
 @@ -1,58 +1,10 @@
@@ -19169,7 +22736,7 @@
  
  #include "openssl/opensslconf.h"
 diff --git a/crypto/asn1/nsseq.c b/crypto/asn1/nsseq.c
-index 550fc8eb708b..c7baf40d30f5 100644
+index 550fc8e..c7baf40 100644
 --- a/crypto/asn1/nsseq.c
 +++ b/crypto/asn1/nsseq.c
 @@ -1,59 +1,10 @@
@@ -19238,7 +22805,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/p5_pbe.c b/crypto/asn1/p5_pbe.c
-index e75ab7e9765d..92da23ec3bce 100644
+index e75ab7e..92da23e 100644
 --- a/crypto/asn1/p5_pbe.c
 +++ b/crypto/asn1/p5_pbe.c
 @@ -1,59 +1,10 @@
@@ -19307,7 +22874,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/p5_pbev2.c b/crypto/asn1/p5_pbev2.c
-index 244706a3dfe8..96870579688a 100644
+index 244706a..9687057 100644
 --- a/crypto/asn1/p5_pbev2.c
 +++ b/crypto/asn1/p5_pbev2.c
 @@ -1,59 +1,10 @@
@@ -19385,7 +22952,7 @@
      EVP_CIPHER_CTX_free(ctx);
      ctx = NULL;
 diff --git a/crypto/asn1/p5_scrypt.c b/crypto/asn1/p5_scrypt.c
-index 6ee7ef4b3b53..cc1f76c228df 100644
+index 6ee7ef4..cc1f76c 100644
 --- a/crypto/asn1/p5_scrypt.c
 +++ b/crypto/asn1/p5_scrypt.c
 @@ -1,59 +1,10 @@
@@ -19454,7 +23021,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/p8_pkey.c b/crypto/asn1/p8_pkey.c
-index 1e062a9ee9ae..ebee6b50cd94 100644
+index 1e062a9..ebee6b5 100644
 --- a/crypto/asn1/p8_pkey.c
 +++ b/crypto/asn1/p8_pkey.c
 @@ -1,59 +1,10 @@
@@ -19523,7 +23090,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/t_bitst.c b/crypto/asn1/t_bitst.c
-index 2b38e0573c13..0c3a2393ba35 100644
+index 2b38e05..c0aeca4 100644
 --- a/crypto/asn1/t_bitst.c
 +++ b/crypto/asn1/t_bitst.c
 @@ -1,59 +1,10 @@
@@ -19591,8 +23158,26 @@
   */
  
  #include <stdio.h>
+@@ -79,7 +30,7 @@ int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs,
+     return 1;
+ }
+ 
+-int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value,
++int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value,
+                             BIT_STRING_BITNAME *tbl)
+ {
+     int bitnum;
+@@ -93,7 +44,7 @@ int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value,
+     return 1;
+ }
+ 
+-int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl)
++int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl)
+ {
+     BIT_STRING_BITNAME *bnam;
+     for (bnam = tbl; bnam->lname; bnam++) {
 diff --git a/crypto/asn1/t_pkey.c b/crypto/asn1/t_pkey.c
-index b17862c2f49d..5ae19ed78a5b 100644
+index b17862c..7a570ee 100644
 --- a/crypto/asn1/t_pkey.c
 +++ b/crypto/asn1/t_pkey.c
 @@ -1,58 +1,10 @@
@@ -19660,8 +23245,17 @@
   */
  
  #include <stdio.h>
+@@ -79,7 +31,7 @@ int ASN1_buf_print(BIO *bp, unsigned char *buf, size_t buflen, int indent)
+         }
+         /*
+          * Use colon separators for each octet for compatibility as
+-         * this fuction is used to print out key components.
++         * this function is used to print out key components.
+          */
+         if (BIO_printf(bp, "%02x%s", buf[i],
+                        (i == buflen - 1) ? "" : ":") <= 0)
 diff --git a/crypto/asn1/t_spki.c b/crypto/asn1/t_spki.c
-index bc20c14e2bf4..51b56d0aa9f7 100644
+index bc20c14..51b56d0 100644
 --- a/crypto/asn1/t_spki.c
 +++ b/crypto/asn1/t_spki.c
 @@ -1,59 +1,10 @@
@@ -19730,7 +23324,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/tasn_dec.c b/crypto/asn1/tasn_dec.c
-index 571592199f90..aad838a08300 100644
+index 5715921..a1b0e28 100644
 --- a/crypto/asn1/tasn_dec.c
 +++ b/crypto/asn1/tasn_dec.c
 @@ -1,59 +1,10 @@
@@ -19806,7 +23400,34 @@
  #include "asn1_locl.h"
  
  static int asn1_item_embed_d2i(ASN1_VALUE **pval, const unsigned char **in,
-@@ -584,7 +536,7 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
+@@ -349,6 +301,8 @@ static int asn1_item_embed_d2i(ASN1_VALUE **pval, const unsigned char **in,
+                 const ASN1_TEMPLATE *seqtt;
+                 ASN1_VALUE **pseqval;
+                 seqtt = asn1_do_adb(pval, tt, 1);
++                if (seqtt == NULL)
++                    continue;
+                 pseqval = asn1_get_field_ptr(pval, seqtt);
+                 asn1_template_free(pseqval, seqtt);
+             }
+@@ -359,7 +313,7 @@ static int asn1_item_embed_d2i(ASN1_VALUE **pval, const unsigned char **in,
+             const ASN1_TEMPLATE *seqtt;
+             ASN1_VALUE **pseqval;
+             seqtt = asn1_do_adb(pval, tt, 1);
+-            if (!seqtt)
++            if (seqtt == NULL)
+                 goto err;
+             pseqval = asn1_get_field_ptr(pval, seqtt);
+             /* Have we ran out of data? */
+@@ -424,7 +378,7 @@ static int asn1_item_embed_d2i(ASN1_VALUE **pval, const unsigned char **in,
+         for (; i < it->tcount; tt++, i++) {
+             const ASN1_TEMPLATE *seqtt;
+             seqtt = asn1_do_adb(pval, tt, 1);
+-            if (!seqtt)
++            if (seqtt == NULL)
+                 goto err;
+             if (seqtt->flags & ASN1_TFLG_OPTIONAL) {
+                 ASN1_VALUE **pseqval;
+@@ -584,7 +538,7 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
          } else if (ret == -1)
              return -1;
          if (!*val)
@@ -19815,7 +23436,7 @@
          else {
              /*
               * We've got a valid STACK: free up any items present
-@@ -858,9 +810,7 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
+@@ -858,9 +812,7 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
          break;
  
      case V_ASN1_INTEGER:
@@ -19825,7 +23446,7 @@
          tint = (ASN1_INTEGER **)pval;
          if (!c2i_ASN1_INTEGER(tint, &cont, len))
              goto err;
-@@ -946,7 +896,7 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
+@@ -946,7 +898,7 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
  
  static int asn1_find_end(const unsigned char **in, long len, char inf)
  {
@@ -19834,7 +23455,7 @@
      long plen;
      const unsigned char *p = *in, *q;
      /* If not indefinite length constructed just add length */
-@@ -976,10 +926,15 @@ static int asn1_find_end(const unsigned char **in, long len, char inf)
+@@ -976,10 +928,15 @@ static int asn1_find_end(const unsigned char **in, long len, char inf)
              ASN1err(ASN1_F_ASN1_FIND_END, ERR_R_NESTED_ASN1_ERROR);
              return 0;
          }
@@ -19853,7 +23474,7 @@
      }
      if (expected_eoc) {
 diff --git a/crypto/asn1/tasn_enc.c b/crypto/asn1/tasn_enc.c
-index 0d25cf9d75e7..9526cff35b3f 100644
+index 0d25cf9..9526cff 100644
 --- a/crypto/asn1/tasn_enc.c
 +++ b/crypto/asn1/tasn_enc.c
 @@ -1,59 +1,10 @@
@@ -19932,7 +23553,7 @@
           * These are all have the same content format as ASN1_INTEGER
           */
 diff --git a/crypto/asn1/tasn_fre.c b/crypto/asn1/tasn_fre.c
-index 2fc036fb666f..9b623d907c4a 100644
+index 2fc036f..d467b89 100644
 --- a/crypto/asn1/tasn_fre.c
 +++ b/crypto/asn1/tasn_fre.c
 @@ -1,59 +1,10 @@
@@ -20000,6 +23621,15 @@
   */
  
  #include <stddef.h>
+@@ -138,7 +89,7 @@ static void asn1_item_embed_free(ASN1_VALUE **pval, const ASN1_ITEM *it,
+ 
+     case ASN1_ITYPE_NDEF_SEQUENCE:
+     case ASN1_ITYPE_SEQUENCE:
+-        if (asn1_do_lock(pval, -1, it) > 0)
++        if (asn1_do_lock(pval, -1, it) != 0) /* if error or ref-counter > 0 */
+             return;
+         if (asn1_cb) {
+             i = asn1_cb(ASN1_OP_FREE_PRE, pval, it, NULL);
 @@ -151,9 +102,11 @@ static void asn1_item_embed_free(ASN1_VALUE **pval, const ASN1_ITEM *it,
           * field and we wont be able to determine the type of the field it
           * defines. So free up in reverse order.
@@ -20015,7 +23645,7 @@
              if (!seqtt)
                  continue;
 diff --git a/crypto/asn1/tasn_new.c b/crypto/asn1/tasn_new.c
-index 9e8ba9c0b271..455a88ab6282 100644
+index 9e8ba9c..897120d 100644
 --- a/crypto/asn1/tasn_new.c
 +++ b/crypto/asn1/tasn_new.c
 @@ -1,59 +1,10 @@
@@ -20083,8 +23713,19 @@
   */
  
  #include <stddef.h>
+@@ -172,7 +123,9 @@ int asn1_item_embed_new(ASN1_VALUE **pval, const ASN1_ITEM *it, int embed)
+             if (*pval == NULL)
+                 goto memerr;
+         }
+-        asn1_do_lock(pval, 0, it);
++        /* 0 : init. lock */
++        if (asn1_do_lock(pval, 0, it) < 0)
++            goto memerr;
+         asn1_enc_init(pval, it);
+         for (i = 0, tt = it->templates; i < it->tcount; tt++, i++) {
+             pseqval = asn1_get_field_ptr(pval, tt);
 diff --git a/crypto/asn1/tasn_prn.c b/crypto/asn1/tasn_prn.c
-index f6bd2189cf28..425810b4219e 100644
+index f6bd218..9f4c81e 100644
 --- a/crypto/asn1/tasn_prn.c
 +++ b/crypto/asn1/tasn_prn.c
 @@ -1,59 +1,10 @@
@@ -20152,6 +23793,15 @@
   */
  
  #include <stddef.h>
+@@ -218,7 +169,7 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
+                 return 0;
+             break;
+         }
+-        /* fall thru */
++        /* fall through */
+     case ASN1_ITYPE_MSTRING:
+         if (!asn1_primitive_print(out, fld, it, indent, fname, sname, pctx))
+             return 0;
 @@ -314,6 +265,7 @@ int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
  {
      int i, flags;
@@ -20178,7 +23828,7 @@
          char *tname;
          ASN1_VALUE *skitem;
 diff --git a/crypto/asn1/tasn_scn.c b/crypto/asn1/tasn_scn.c
-index a7758394b1d9..e1df2cfcae04 100644
+index a775839..e1df2cf 100644
 --- a/crypto/asn1/tasn_scn.c
 +++ b/crypto/asn1/tasn_scn.c
 @@ -1,59 +1,10 @@
@@ -20258,7 +23908,7 @@
          ASN1err(ASN1_F_ASN1_SCTX_NEW, ERR_R_MALLOC_FAILURE);
          return NULL;
 diff --git a/crypto/asn1/tasn_typ.c b/crypto/asn1/tasn_typ.c
-index da9a80a06d27..98d987901413 100644
+index da9a80a..98d9879 100644
 --- a/crypto/asn1/tasn_typ.c
 +++ b/crypto/asn1/tasn_typ.c
 @@ -1,60 +1,12 @@
@@ -20317,9 +23967,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -20330,7 +23979,7 @@
  #include <openssl/asn1.h>
  #include <openssl/asn1t.h>
 diff --git a/crypto/asn1/tasn_utl.c b/crypto/asn1/tasn_utl.c
-index 41f2fc24a0fe..f03f9e9ed04b 100644
+index 41f2fc2..f79d7d6 100644
 --- a/crypto/asn1/tasn_utl.c
 +++ b/crypto/asn1/tasn_utl.c
 @@ -1,59 +1,10 @@
@@ -20398,28 +24047,64 @@
   */
  
  #include <stddef.h>
-@@ -99,6 +50,7 @@ int asn1_set_choice_selector(ASN1_VALUE **pval, int value,
-  * then the count is incremented. If op is 0 count is set to 1. If op is -1
-  * count is decremented and the return value is the current reference count
-  * or 0 if no reference count exists.
-+ * FIXME: return and manage any error from inside this method
+@@ -95,12 +46,14 @@ int asn1_set_choice_selector(ASN1_VALUE **pval, int value,
+ }
+ 
+ /*
+- * Do reference counting. The value 'op' decides what to do. if it is +1
+- * then the count is incremented. If op is 0 count is set to 1. If op is -1
+- * count is decremented and the return value is the current reference count
+- * or 0 if no reference count exists.
++ * Do atomic reference counting. The value 'op' decides what to do.
++ * If it is +1 then the count is incremented.
++ * If |op| is 0, lock is initialised and count is set to 1.
++ * If |op| is -1, count is decremented and the return value is the current
++ * reference count or 0 if no reference count is active.
++ * It returns -1 on initialisation error.
++ * Used by ASN1_SEQUENCE construct of X509, X509_REQ, X509_CRL objects
   */
- 
+-
  int asn1_do_lock(ASN1_VALUE **pval, int op, const ASN1_ITEM *it)
-@@ -117,8 +69,10 @@ int asn1_do_lock(ASN1_VALUE **pval, int op, const ASN1_ITEM *it)
+ {
+     const ASN1_AUX *aux;
+@@ -117,17 +70,22 @@ int asn1_do_lock(ASN1_VALUE **pval, int op, const ASN1_ITEM *it)
      if (op == 0) {
          *lck = 1;
          *lock = CRYPTO_THREAD_lock_new();
 -        if (*lock == NULL)
+-            return 0;
 +        if (*lock == NULL) {
-+            /* FIXME: should report an error (-1) at this point */
-             return 0;
++            ASN1err(ASN1_F_ASN1_DO_LOCK, ERR_R_MALLOC_FAILURE);
++            return -1;
 +        }
          return 1;
      }
-     CRYPTO_atomic_add(lck, op, &ret, *lock);
+-    CRYPTO_atomic_add(lck, op, &ret, *lock);
++    if (CRYPTO_atomic_add(lck, op, &ret, *lock) < 0)
++        return -1;  /* failed */
+ #ifdef REF_PRINT
+     fprintf(stderr, "%p:%4d:%s\n", it, *lck, it->sname);
+ #endif
+     REF_ASSERT_ISNT(ret < 0);
+-    if (ret == 0)
++    if (ret == 0) {
+         CRYPTO_THREAD_lock_free(*lock);
++        *lock = NULL;
++    }
+     return ret;
+ }
+ 
+@@ -235,7 +193,7 @@ const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt,
+     sfld = offset2ptr(*pval, adb->offset);
+ 
+     /* Check if NULL */
+-    if (!sfld) {
++    if (*sfld == NULL) {
+         if (!adb->null_tt)
+             goto err;
+         return adb->null_tt;
 diff --git a/crypto/asn1/x_algor.c b/crypto/asn1/x_algor.c
-index 30c59d850f43..dfebf6865ab5 100644
+index 30c59d8..dfebf68 100644
 --- a/crypto/asn1/x_algor.c
 +++ b/crypto/asn1/x_algor.c
 @@ -1,59 +1,10 @@
@@ -20488,7 +24173,7 @@
  
  #include <stddef.h>
 diff --git a/crypto/asn1/x_bignum.c b/crypto/asn1/x_bignum.c
-index c8072e337f94..db6ce82e8ff4 100644
+index c8072e3..db6ce82 100644
 --- a/crypto/asn1/x_bignum.c
 +++ b/crypto/asn1/x_bignum.c
 @@ -1,59 +1,10 @@
@@ -20557,7 +24242,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/x_info.c b/crypto/asn1/x_info.c
-index b49c787792f5..8d99f07c6361 100644
+index b49c787..8d99f07 100644
 --- a/crypto/asn1/x_info.c
 +++ b/crypto/asn1/x_info.c
 @@ -1,58 +1,10 @@
@@ -20626,7 +24311,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/x_long.c b/crypto/asn1/x_long.c
-index f804282c51b2..9d27ba4bc1ff 100644
+index f804282..0af7875 100644
 --- a/crypto/asn1/x_long.c
 +++ b/crypto/asn1/x_long.c
 @@ -1,59 +1,10 @@
@@ -20694,8 +24379,18 @@
   */
  
  #include <stdio.h>
+@@ -177,8 +128,8 @@ static int long_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
+     }
+     ltmp = (long)utmp;
+     if (neg) {
+-        ltmp++;
+         ltmp = -ltmp;
++        ltmp--;
+     }
+     if (ltmp == it->size) {
+         ASN1err(ASN1_F_LONG_C2I, ASN1_R_INTEGER_TOO_LARGE_FOR_LONG);
 diff --git a/crypto/asn1/x_pkey.c b/crypto/asn1/x_pkey.c
-index 1e80d9ec3495..593049f0f26e 100644
+index 1e80d9e..593049f 100644
 --- a/crypto/asn1/x_pkey.c
 +++ b/crypto/asn1/x_pkey.c
 @@ -1,58 +1,10 @@
@@ -20764,7 +24459,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/x_sig.c b/crypto/asn1/x_sig.c
-index b880e2420b1b..d5b0b69dde31 100644
+index b880e24..d5b0b69 100644
 --- a/crypto/asn1/x_sig.c
 +++ b/crypto/asn1/x_sig.c
 @@ -1,58 +1,10 @@
@@ -20833,7 +24528,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/asn1/x_spki.c b/crypto/asn1/x_spki.c
-index 636f69b3edaa..c45400b42f3a 100644
+index 636f69b..c45400b 100644
 --- a/crypto/asn1/x_spki.c
 +++ b/crypto/asn1/x_spki.c
 @@ -1,58 +1,10 @@
@@ -20902,7 +24597,7 @@
  
   /*
 diff --git a/crypto/asn1/x_val.c b/crypto/asn1/x_val.c
-index d9ebfe1c7e75..d1f1d3bff989 100644
+index d9ebfe1..d1f1d3b 100644
 --- a/crypto/asn1/x_val.c
 +++ b/crypto/asn1/x_val.c
 @@ -1,58 +1,10 @@
@@ -20972,7 +24667,7 @@
  #include <stdio.h>
 diff --git a/crypto/async/Makefile.in b/crypto/async/Makefile.in
 deleted file mode 100644
-index aa85749899cf..000000000000
+index aa85749..0000000
 --- a/crypto/async/Makefile.in
 +++ /dev/null
 @@ -1,63 +0,0 @@
@@ -21040,7 +24735,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/async/arch/async_null.c b/crypto/async/arch/async_null.c
-index 19fb72c2c081..a9ae35de45b0 100644
+index 19fb72c..a9ae35d 100644
 --- a/crypto/async/arch/async_null.c
 +++ b/crypto/async/arch/async_null.c
 @@ -1,53 +1,10 @@
@@ -21049,8 +24744,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -21081,7 +24775,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -21103,7 +24798,7 @@
  
  /* This must be the first #include file */
 diff --git a/crypto/async/arch/async_null.h b/crypto/async/arch/async_null.h
-index a965bdbbd849..aef40b5d9ee0 100644
+index a965bdb..aef40b5 100644
 --- a/crypto/async/arch/async_null.h
 +++ b/crypto/async/arch/async_null.h
 @@ -1,53 +1,10 @@
@@ -21112,8 +24807,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -21144,7 +24838,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -21166,7 +24861,7 @@
  
  #include <openssl/async.h>
 diff --git a/crypto/async/arch/async_posix.c b/crypto/async/arch/async_posix.c
-index 33f2a3fa1ea2..02c342d3dfa9 100644
+index 33f2a3f..02c342d 100644
 --- a/crypto/async/arch/async_posix.c
 +++ b/crypto/async/arch/async_posix.c
 @@ -1,53 +1,10 @@
@@ -21175,8 +24870,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -21207,7 +24901,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -21229,7 +24924,7 @@
  
  /* This must be the first #include file */
 diff --git a/crypto/async/arch/async_posix.h b/crypto/async/arch/async_posix.h
-index de80f95f9d44..3c61f7f7b081 100644
+index de80f95..3c61f7f 100644
 --- a/crypto/async/arch/async_posix.h
 +++ b/crypto/async/arch/async_posix.h
 @@ -1,59 +1,19 @@
@@ -21255,7 +24950,8 @@
 - *    software must display the following acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
@@ -21283,8 +24979,6 @@
 - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 - * OF THE POSSIBILITY OF SUCH DAMAGE.
 - * ====================================================================
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -21312,7 +25006,7 @@
      o->env_init = 1;
  
 diff --git a/crypto/async/arch/async_win.c b/crypto/async/arch/async_win.c
-index 4f4c799e9863..37a31110527f 100644
+index 4f4c799..37a3111 100644
 --- a/crypto/async/arch/async_win.c
 +++ b/crypto/async/arch/async_win.c
 @@ -1,53 +1,10 @@
@@ -21321,8 +25015,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -21353,7 +25046,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -21375,7 +25069,7 @@
  
  /* This must be the first #include file */
 diff --git a/crypto/async/arch/async_win.h b/crypto/async/arch/async_win.h
-index 42873307d08b..61cfdd72dec6 100644
+index 4287330..61cfdd7 100644
 --- a/crypto/async/arch/async_win.h
 +++ b/crypto/async/arch/async_win.h
 @@ -1,53 +1,10 @@
@@ -21384,8 +25078,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -21416,7 +25109,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -21438,7 +25132,7 @@
  
  /*
 diff --git a/crypto/async/async.c b/crypto/async/async.c
-index b4ba56188817..965a1954f9bc 100644
+index b4ba561..965a195 100644
 --- a/crypto/async/async.c
 +++ b/crypto/async/async.c
 @@ -1,53 +1,10 @@
@@ -21447,8 +25141,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -21479,7 +25172,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -21509,7 +25203,7 @@
  #include <internal/cryptlib_int.h>
  #include <string.h>
 diff --git a/crypto/async/async_err.c b/crypto/async/async_err.c
-index 26b34d4defec..13c41cdd28a2 100644
+index 26b34d4..13c41cd 100644
 --- a/crypto/async/async_err.c
 +++ b/crypto/async/async_err.c
 @@ -1,61 +1,11 @@
@@ -21595,7 +25289,7 @@
  };
  
 diff --git a/crypto/async/async_locl.h b/crypto/async/async_locl.h
-index 7fa1f26c005c..786cf0099c19 100644
+index 7fa1f26..786cf00 100644
 --- a/crypto/async/async_locl.h
 +++ b/crypto/async/async_locl.h
 @@ -1,53 +1,10 @@
@@ -21604,8 +25298,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -21636,7 +25329,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -21658,7 +25352,7 @@
  
  /*
 diff --git a/crypto/async/async_wait.c b/crypto/async/async_wait.c
-index ece995f4e9a8..e5ecaeb5ee8a 100644
+index ece995f..e5ecaeb 100644
 --- a/crypto/async/async_wait.c
 +++ b/crypto/async/async_wait.c
 @@ -1,53 +1,10 @@
@@ -21667,8 +25361,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2016 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -21699,7 +25392,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -21722,7 +25416,7 @@
  /* This must be the first #include file */
 diff --git a/crypto/bf/COPYRIGHT b/crypto/bf/COPYRIGHT
 deleted file mode 100644
-index 6857223506de..000000000000
+index 6857223..0000000
 --- a/crypto/bf/COPYRIGHT
 +++ /dev/null
 @@ -1,46 +0,0 @@
@@ -21774,7 +25468,7 @@
 -implementation was a non-trivial and unpaid effort.
 diff --git a/crypto/bf/INSTALL b/crypto/bf/INSTALL
 deleted file mode 100644
-index 3b259235326a..000000000000
+index 3b25923..0000000
 --- a/crypto/bf/INSTALL
 +++ /dev/null
 @@ -1,14 +0,0 @@
@@ -21794,7 +25488,7 @@
 - 
 diff --git a/crypto/bf/Makefile.in b/crypto/bf/Makefile.in
 deleted file mode 100644
-index a41b9d19692f..000000000000
+index a41b9d1..0000000
 --- a/crypto/bf/Makefile.in
 +++ /dev/null
 @@ -1,51 +0,0 @@
@@ -21851,7 +25545,7 @@
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/bf/VERSION b/crypto/bf/VERSION
 deleted file mode 100644
-index be995855e43b..000000000000
+index be99585..0000000
 --- a/crypto/bf/VERSION
 +++ /dev/null
 @@ -1,6 +0,0 @@
@@ -21862,7 +25556,7 @@
 -
 -0.7.2m - the first release
 diff --git a/crypto/bf/asm/bf-586.pl b/crypto/bf/asm/bf-586.pl
-index 319a63875497..ebc24f48a152 100644
+index 319a638..ebc24f4 100644
 --- a/crypto/bf/asm/bf-586.pl
 +++ b/crypto/bf/asm/bf-586.pl
 @@ -1,4 +1,11 @@
@@ -21879,7 +25573,7 @@
  $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
  push(@INC,"${dir}","${dir}../../perlasm");
 diff --git a/crypto/bf/bf_cbc.c b/crypto/bf/bf_cbc.c
-index b052951fcd3f..6ed62578ace3 100644
+index b052951..6ed6257 100644
 --- a/crypto/bf/bf_cbc.c
 +++ b/crypto/bf/bf_cbc.c
 @@ -1,58 +1,10 @@
@@ -21948,15 +25642,13 @@
  
  #include <openssl/blowfish.h>
 diff --git a/crypto/bf/bf_cfb64.c b/crypto/bf/bf_cfb64.c
-index cab8bf8e7443..ce6e13b5a4cc 100644
+index cab8bf8..ce6e13b 100644
 --- a/crypto/bf/bf_cfb64.c
 +++ b/crypto/bf/bf_cfb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -22004,7 +25696,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -22017,15 +25711,13 @@
  
  #include <openssl/blowfish.h>
 diff --git a/crypto/bf/bf_ecb.c b/crypto/bf/bf_ecb.c
-index a7640d88b3e2..aa73540f35ae 100644
+index a7640d8..aa73540 100644
 --- a/crypto/bf/bf_ecb.c
 +++ b/crypto/bf/bf_ecb.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -22073,7 +25765,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -22086,15 +25780,13 @@
  
  #include <openssl/blowfish.h>
 diff --git a/crypto/bf/bf_enc.c b/crypto/bf/bf_enc.c
-index 04eb39134aba..9f80c56d5716 100644
+index 04eb391..9f80c56 100644
 --- a/crypto/bf/bf_enc.c
 +++ b/crypto/bf/bf_enc.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -22142,7 +25834,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -22155,15 +25849,13 @@
  
  #include <openssl/blowfish.h>
 diff --git a/crypto/bf/bf_locl.h b/crypto/bf/bf_locl.h
-index 5ad9ec29494e..7e5f92c26cb6 100644
+index 5ad9ec2..7e5f92c 100644
 --- a/crypto/bf/bf_locl.h
 +++ b/crypto/bf/bf_locl.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1997 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -22211,7 +25903,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -22224,15 +25918,13 @@
  
  #ifndef HEADER_BF_LOCL_H
 diff --git a/crypto/bf/bf_ofb64.c b/crypto/bf/bf_ofb64.c
-index 97a58cef6a04..6418217b307d 100644
+index 97a58ce..6418217 100644
 --- a/crypto/bf/bf_ofb64.c
 +++ b/crypto/bf/bf_ofb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -22280,7 +25972,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -22293,7 +25987,7 @@
  
  #include <openssl/blowfish.h>
 diff --git a/crypto/bf/bf_pi.h b/crypto/bf/bf_pi.h
-index c3e187363cf1..a054b03f8122 100644
+index c3e1873..a054b03 100644
 --- a/crypto/bf/bf_pi.h
 +++ b/crypto/bf/bf_pi.h
 @@ -1,58 +1,10 @@
@@ -22362,7 +26056,7 @@
  
  static const BF_KEY bf_init = {
 diff --git a/crypto/bf/bf_skey.c b/crypto/bf/bf_skey.c
-index 3cfc6a1c65e0..a4903a2a71de 100644
+index 3cfc6a1..a4903a2 100644
 --- a/crypto/bf/bf_skey.c
 +++ b/crypto/bf/bf_skey.c
 @@ -1,58 +1,10 @@
@@ -22432,7 +26126,7 @@
  #include <stdio.h>
 diff --git a/crypto/bf/bfs.cpp b/crypto/bf/bfs.cpp
 deleted file mode 100644
-index d74c45776078..000000000000
+index d74c457..0000000
 --- a/crypto/bf/bfs.cpp
 +++ /dev/null
 @@ -1,67 +0,0 @@
@@ -22504,7 +26198,7 @@
 -	}
 -
 diff --git a/crypto/bf/build.info b/crypto/bf/build.info
-index b8f982004ad7..37a004ea5b59 100644
+index b8f9820..37a004e 100644
 --- a/crypto/bf/build.info
 +++ b/crypto/bf/build.info
 @@ -1,5 +1,6 @@
@@ -22517,7 +26211,7 @@
  DEPEND[bf-586.s]=../perlasm/x86asm.pl ../perlasm/cbc.pl
 diff --git a/crypto/bio/Makefile.in b/crypto/bio/Makefile.in
 deleted file mode 100644
-index f57d357fa90e..000000000000
+index f57d357..0000000
 --- a/crypto/bio/Makefile.in
 +++ /dev/null
 @@ -1,55 +0,0 @@
@@ -22577,7 +26271,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/bio/b_addr.c b/crypto/bio/b_addr.c
-index eed40bf8b5f4..3a9a00c121ab 100644
+index eed40bf..e5352db 100644
 --- a/crypto/bio/b_addr.c
 +++ b/crypto/bio/b_addr.c
 @@ -1,61 +1,16 @@
@@ -22710,6 +26404,23 @@
   */
  static int addrinfo_wrap(int family, int socktype,
                           const void *where, size_t wherelen,
+@@ -734,12 +708,12 @@ int BIO_lookup(const char *host, const char *service,
+         /* Windows doesn't seem to have in_addr_t */
+ #ifdef OPENSSL_SYS_WINDOWS
+         static uint32_t he_fallback_address;
+-        static const uint32_t *he_fallback_addresses[] =
+-            { &he_fallback_address, NULL };
++        static const char *he_fallback_addresses[] =
++            { (char *)&he_fallback_address, NULL };
+ #else
+         static in_addr_t he_fallback_address;
+-        static const in_addr_t *he_fallback_addresses[] =
+-            { &he_fallback_address, NULL };
++        static const char *he_fallback_addresses[] =
++            { (char *)&he_fallback_address, NULL };
+ #endif
+         static const struct hostent he_fallback =
+             { NULL, NULL, AF_INET, sizeof(he_fallback_address),
 @@ -749,7 +723,7 @@ int BIO_lookup(const char *host, const char *service,
  #endif
  
@@ -22720,15 +26431,13 @@
          struct servent se_fallback = { NULL, NULL, NULL, 0 };
  #else
 diff --git a/crypto/bio/b_dump.c b/crypto/bio/b_dump.c
-index c586b765ee79..a27954fa34fa 100644
+index c586b76..a27954f 100644
 --- a/crypto/bio/b_dump.c
 +++ b/crypto/bio/b_dump.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -22776,7 +26485,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -22789,7 +26500,7 @@
  
  /*
 diff --git a/crypto/bio/b_print.c b/crypto/bio/b_print.c
-index 72a2ee849b27..6808cdc6de65 100644
+index 72a2ee8..6808cdc 100644
 --- a/crypto/bio/b_print.c
 +++ b/crypto/bio/b_print.c
 @@ -1,69 +1,16 @@
@@ -23250,7 +26961,7 @@
              }
              *sbuffer = NULL;
 diff --git a/crypto/bio/b_sock.c b/crypto/bio/b_sock.c
-index a2d0100bb368..ac2c2d161ba8 100644
+index a2d0100..ac2c2d1 100644
 --- a/crypto/bio/b_sock.c
 +++ b/crypto/bio/b_sock.c
 @@ -1,58 +1,10 @@
@@ -23362,7 +27073,7 @@
          OPENSSL_free(port);
      }
 diff --git a/crypto/bio/b_sock2.c b/crypto/bio/b_sock2.c
-index 9f092fc0737d..726b0629b372 100644
+index 9f092fc..726b062 100644
 --- a/crypto/bio/b_sock2.c
 +++ b/crypto/bio/b_sock2.c
 @@ -1,55 +1,10 @@
@@ -23440,7 +27151,7 @@
      return accepted_sock;
  }
 diff --git a/crypto/bio/bf_buff.c b/crypto/bio/bf_buff.c
-index 361d26a5b73d..702581e4cdee 100644
+index 361d26a..702581e 100644
 --- a/crypto/bio/bf_buff.c
 +++ b/crypto/bio/bf_buff.c
 @@ -1,58 +1,10 @@
@@ -23509,7 +27220,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/bio/bf_lbuf.c b/crypto/bio/bf_lbuf.c
-index d8c90f58af8c..ed25b1f6c1df 100644
+index d8c90f5..ed25b1f 100644
 --- a/crypto/bio/bf_lbuf.c
 +++ b/crypto/bio/bf_lbuf.c
 @@ -1,58 +1,10 @@
@@ -23578,15 +27289,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/bio/bf_nbio.c b/crypto/bio/bf_nbio.c
-index cefd35f9841c..364d9fb5aef2 100644
+index cefd35f..364d9fb 100644
 --- a/crypto/bio/bf_nbio.c
 +++ b/crypto/bio/bf_nbio.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -23634,7 +27343,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -23647,15 +27358,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/bio/bf_null.c b/crypto/bio/bf_null.c
-index 162e250f9baf..0736b3f2fcf2 100644
+index 162e250..0736b3f 100644
 --- a/crypto/bio/bf_null.c
 +++ b/crypto/bio/bf_null.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -23703,7 +27412,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -23716,7 +27427,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/bio/bio_cb.c b/crypto/bio/bio_cb.c
-index 552b66eca010..860208be3bb9 100644
+index 552b66e..860208b 100644
 --- a/crypto/bio/bio_cb.c
 +++ b/crypto/bio/bio_cb.c
 @@ -1,58 +1,10 @@
@@ -23785,7 +27496,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/bio/bio_err.c b/crypto/bio/bio_err.c
-index 36b9dfe62c3d..75531824c33d 100644
+index 36b9dfe..7553182 100644
 --- a/crypto/bio/bio_err.c
 +++ b/crypto/bio/bio_err.c
 @@ -1,62 +1,11 @@
@@ -23941,7 +27652,7 @@
      {ERR_REASON(BIO_R_UNABLE_TO_CREATE_SOCKET), "unable to create socket"},
      {ERR_REASON(BIO_R_UNABLE_TO_KEEPALIVE), "unable to keepalive"},
 diff --git a/crypto/bio/bio_lcl.h b/crypto/bio/bio_lcl.h
-index 52c9e79a24c6..f5a886cb7ccf 100644
+index 52c9e79..f5a886c 100644
 --- a/crypto/bio/bio_lcl.h
 +++ b/crypto/bio/bio_lcl.h
 @@ -1,3 +1,12 @@
@@ -23958,15 +27669,13 @@
  #include "e_os.h"
  
 diff --git a/crypto/bio/bio_lib.c b/crypto/bio/bio_lib.c
-index 94c97da369d5..0b111c663c3f 100644
+index 94c97da..0b111c6 100644
 --- a/crypto/bio/bio_lib.c
 +++ b/crypto/bio/bio_lib.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -24014,7 +27723,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -24058,7 +27769,7 @@
  
      return 1;
 diff --git a/crypto/bio/bio_meth.c b/crypto/bio/bio_meth.c
-index 88ce8c339603..d172047f5577 100644
+index 88ce8c3..d172047 100644
 --- a/crypto/bio/bio_meth.c
 +++ b/crypto/bio/bio_meth.c
 @@ -1,55 +1,10 @@
@@ -24124,7 +27835,7 @@
  
  #include "bio_lcl.h"
 diff --git a/crypto/bio/bss_acpt.c b/crypto/bio/bss_acpt.c
-index 8cd66fe1ee07..628da9e6348b 100644
+index 8cd66fe..628da9e 100644
 --- a/crypto/bio/bss_acpt.c
 +++ b/crypto/bio/bss_acpt.c
 @@ -1,58 +1,10 @@
@@ -24215,7 +27926,7 @@
          break;
      case BIO_C_SET_NBIO:
 diff --git a/crypto/bio/bss_bio.c b/crypto/bio/bss_bio.c
-index 2991c3afedcb..de34f6bf3763 100644
+index 2991c3a..de34f6b 100644
 --- a/crypto/bio/bss_bio.c
 +++ b/crypto/bio/bss_bio.c
 @@ -1,55 +1,10 @@
@@ -24304,12 +28015,12 @@
      case BIO_CTRL_EOF:
 -        {
 -            BIO *other_bio = ptr;
+-
+-            if (other_bio) {
+-                struct bio_bio_st *other_b = other_bio->ptr;
 +        if (b->peer != NULL) {
 +            struct bio_bio_st *peer_b = b->peer->ptr;
  
--            if (other_bio) {
--                struct bio_bio_st *other_b = other_bio->ptr;
--
 -                assert(other_b != NULL);
 -                ret = other_b->len == 0 && other_b->closed;
 -            } else
@@ -24323,7 +28034,7 @@
          break;
  
 diff --git a/crypto/bio/bss_conn.c b/crypto/bio/bss_conn.c
-index a4949b3d6070..dfd0988dfb49 100644
+index a4949b3..dfd0988 100644
 --- a/crypto/bio/bss_conn.c
 +++ b/crypto/bio/bss_conn.c
 @@ -1,58 +1,10 @@
@@ -24401,7 +28112,7 @@
                      BIO_set_retry_special(b);
                      c->state = BIO_CONN_S_BLOCKED_CONNECT;
 diff --git a/crypto/bio/bss_dgram.c b/crypto/bio/bss_dgram.c
-index cf2f9f66b534..6dfcc9ba7b5a 100644
+index cf2f9f6..6dfcc9b 100644
 --- a/crypto/bio/bss_dgram.c
 +++ b/crypto/bio/bss_dgram.c
 @@ -1,59 +1,10 @@
@@ -24483,15 +28194,13 @@
  static int dgram_read(BIO *h, char *buf, int size);
  static int dgram_puts(BIO *h, const char *str);
 diff --git a/crypto/bio/bss_fd.c b/crypto/bio/bss_fd.c
-index 983e9fe08c76..1e56cb62df95 100644
+index 983e9fe..1e56cb6 100644
 --- a/crypto/bio/bss_fd.c
 +++ b/crypto/bio/bss_fd.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -24539,7 +28248,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -24552,15 +28263,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c
-index a37e89d935b2..36099f8a5dbe 100644
+index a37e89d..4f79c32 100644
 --- a/crypto/bio/bss_file.c
 +++ b/crypto/bio/bss_file.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -24608,7 +28317,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -24620,45 +28331,80 @@
   */
  
  /*-
-@@ -154,6 +106,36 @@ static FILE *file_fopen(const char *filename, const char *mode)
-     } else if (GetLastError() == ERROR_NO_UNICODE_TRANSLATION) {
-         file = fopen(filename, mode);
-     }
-+#  elif defined(__DJGPP__)
-+    {
-+        char *newname = NULL;
-+
-+        if (!HAS_LFN_SUPPORT(filename)) {
-+            char *iterator;
-+            char lastchar;
-+
-+            newname = OPENSSL_malloc(strlen(filename) + 1);
-+            if (newname == NULL)
-+                return NULL;
-+
-+            for(iterator = newname, lastchar = '\0';
-+                *filename; filename++, iterator++) {
-+                if (lastchar == '/' && filename[0] == '.'
-+                    && filename[1] != '.' && filename[1] != '/') {
-+                    /* Leading dots are not permitted in plain DOS. */
-+                    *iterator = '_';
-+                } else {
-+                    *iterator = *filename;
-+                }
-+                lastchar = *filename;
-+            }
-+            *iterator = '\0';
-+            filename = newname;
-+        }
-+        file = fopen(filename, mode);
-+
-+        OPENSSL_free(newname);
-+    }
- #  else
-     file = fopen(filename, mode);
+@@ -109,61 +61,10 @@ static const BIO_METHOD methods_filep = {
+     NULL,
+ };
+ 
+-static FILE *file_fopen(const char *filename, const char *mode)
+-{
+-    FILE *file = NULL;
+-
+-#  if defined(_WIN32) && defined(CP_UTF8)
+-    int sz, len_0 = (int)strlen(filename) + 1;
+-    DWORD flags;
+-
+-    /*
+-     * Basically there are three cases to cover: a) filename is
+-     * pure ASCII string; b) actual UTF-8 encoded string and
+-     * c) locale-ized string, i.e. one containing 8-bit
+-     * characters that are meaningful in current system locale.
+-     * If filename is pure ASCII or real UTF-8 encoded string,
+-     * MultiByteToWideChar succeeds and _wfopen works. If
+-     * filename is locale-ized string, chances are that
+-     * MultiByteToWideChar fails reporting
+-     * ERROR_NO_UNICODE_TRANSLATION, in which case we fall
+-     * back to fopen...
+-     */
+-    if ((sz = MultiByteToWideChar(CP_UTF8, (flags = MB_ERR_INVALID_CHARS),
+-                                  filename, len_0, NULL, 0)) > 0 ||
+-        (GetLastError() == ERROR_INVALID_FLAGS &&
+-         (sz = MultiByteToWideChar(CP_UTF8, (flags = 0),
+-                                   filename, len_0, NULL, 0)) > 0)
+-        ) {
+-        WCHAR wmode[8];
+-        WCHAR *wfilename = _alloca(sz * sizeof(WCHAR));
+-
+-        if (MultiByteToWideChar(CP_UTF8, flags,
+-                                filename, len_0, wfilename, sz) &&
+-            MultiByteToWideChar(CP_UTF8, 0, mode, strlen(mode) + 1,
+-                                wmode, OSSL_NELEM(wmode)) &&
+-            (file = _wfopen(wfilename, wmode)) == NULL &&
+-            (errno == ENOENT || errno == EBADF)
+-            ) {
+-            /*
+-             * UTF-8 decode succeeded, but no file, filename
+-             * could still have been locale-ized...
+-             */
+-            file = fopen(filename, mode);
+-        }
+-    } else if (GetLastError() == ERROR_NO_UNICODE_TRANSLATION) {
+-        file = fopen(filename, mode);
+-    }
+-#  else
+-    file = fopen(filename, mode);
+-#  endif
+-    return (file);
+-}
+-
+ BIO *BIO_new_file(const char *filename, const char *mode)
+ {
+     BIO  *ret;
+-    FILE *file = file_fopen(filename, mode);
++    FILE *file = openssl_fopen(filename, mode);
+     int fp_flags = BIO_CLOSE;
+ 
+     if (strchr(mode, 'b') == NULL)
+@@ -381,7 +282,7 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr)
+         else
+             strcat(p, "t");
  #  endif
+-        fp = file_fopen(ptr, p);
++        fp = openssl_fopen(ptr, p);
+         if (fp == NULL) {
+             SYSerr(SYS_F_FOPEN, get_last_sys_error());
+             ERR_add_error_data(5, "fopen('", ptr, "','", p, "')");
 diff --git a/crypto/bio/bss_log.c b/crypto/bio/bss_log.c
-index c2c8c79097d1..6cbde4d2fe81 100644
+index c2c8c79..6cbde4d 100644
 --- a/crypto/bio/bss_log.c
 +++ b/crypto/bio/bss_log.c
 @@ -1,55 +1,10 @@
@@ -24724,15 +28470,13 @@
  
  /*
 diff --git a/crypto/bio/bss_mem.c b/crypto/bio/bss_mem.c
-index 46bd0343d547..80da3a1e0978 100644
+index 46bd034..80da3a1 100644
 --- a/crypto/bio/bss_mem.c
 +++ b/crypto/bio/bss_mem.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -24780,7 +28524,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -24822,7 +28568,7 @@
  
  static int mem_new(BIO *bi)
 diff --git a/crypto/bio/bss_null.c b/crypto/bio/bss_null.c
-index 29561c7326c0..e5c4adc874f1 100644
+index 29561c7..e5c4adc 100644
 --- a/crypto/bio/bss_null.c
 +++ b/crypto/bio/bss_null.c
 @@ -1,58 +1,10 @@
@@ -24891,7 +28637,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/bio/bss_sock.c b/crypto/bio/bss_sock.c
-index c1f76a24a799..570e8985af57 100644
+index c1f76a2..570e898 100644
 --- a/crypto/bio/bss_sock.c
 +++ b/crypto/bio/bss_sock.c
 @@ -1,58 +1,10 @@
@@ -24974,7 +28720,7 @@
  # endif
 diff --git a/crypto/blake2/Makefile.in b/crypto/blake2/Makefile.in
 deleted file mode 100644
-index ebfaa045b2e6..000000000000
+index ebfaa04..0000000
 --- a/crypto/blake2/Makefile.in
 +++ /dev/null
 @@ -1,41 +0,0 @@
@@ -25020,7 +28766,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/blake2/blake2_impl.h b/crypto/blake2/blake2_impl.h
-index 335a38302f01..8fe5c9591505 100644
+index 335a383..8fe5c95 100644
 --- a/crypto/blake2/blake2_impl.h
 +++ b/crypto/blake2/blake2_impl.h
 @@ -1,16 +1,15 @@
@@ -25045,7 +28791,7 @@
   * can be found at https://blake2.net.
   */
 diff --git a/crypto/blake2/blake2_locl.h b/crypto/blake2/blake2_locl.h
-index 10334b1622ba..fb7beb976c2f 100644
+index 10334b1..fb7beb9 100644
 --- a/crypto/blake2/blake2_locl.h
 +++ b/crypto/blake2/blake2_locl.h
 @@ -1,16 +1,15 @@
@@ -25070,7 +28816,7 @@
   * can be found at https://blake2.net.
   */
 diff --git a/crypto/blake2/blake2b.c b/crypto/blake2/blake2b.c
-index 8e92a0a8bef6..e77bd9ac16ff 100644
+index 8e92a0a..e77bd9a 100644
 --- a/crypto/blake2/blake2b.c
 +++ b/crypto/blake2/blake2b.c
 @@ -1,16 +1,15 @@
@@ -25106,7 +28852,7 @@
              stashlen = stashlen ? stashlen : BLAKE2B_BLOCKBYTES;
              datalen -= stashlen;
 diff --git a/crypto/blake2/blake2s.c b/crypto/blake2/blake2s.c
-index 227fa10edc3c..0b3503e4f007 100644
+index 227fa10..0b3503e 100644
 --- a/crypto/blake2/blake2s.c
 +++ b/crypto/blake2/blake2s.c
 @@ -1,16 +1,15 @@
@@ -25142,7 +28888,7 @@
              stashlen = stashlen ? stashlen : BLAKE2S_BLOCKBYTES;
              datalen -= stashlen;
 diff --git a/crypto/blake2/m_blake2b.c b/crypto/blake2/m_blake2b.c
-index e06bb5bdb77d..82c6f6bd8044 100644
+index e06bb5b..82c6f6b 100644
 --- a/crypto/blake2/m_blake2b.c
 +++ b/crypto/blake2/m_blake2b.c
 @@ -1,16 +1,15 @@
@@ -25176,7 +28922,7 @@
  };
  
 diff --git a/crypto/blake2/m_blake2s.c b/crypto/blake2/m_blake2s.c
-index 6150e981f080..467e91a87bdd 100644
+index 6150e98..467e91a 100644
 --- a/crypto/blake2/m_blake2s.c
 +++ b/crypto/blake2/m_blake2s.c
 @@ -1,16 +1,15 @@
@@ -25211,7 +28957,7 @@
  
 diff --git a/crypto/bn/Makefile.in b/crypto/bn/Makefile.in
 deleted file mode 100644
-index 420eebbc87a2..000000000000
+index 420eebb..0000000
 --- a/crypto/bn/Makefile.in
 +++ /dev/null
 @@ -1,149 +0,0 @@
@@ -25366,7 +29112,7 @@
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/bn/README.pod b/crypto/bn/README.pod
 new file mode 100644
-index 000000000000..07e72aa2c5d9
+index 0000000..07e72aa
 --- /dev/null
 +++ b/crypto/bn/README.pod
 @@ -0,0 +1,247 @@
@@ -25618,7 +29364,7 @@
 +
 +=cut
 diff --git a/crypto/bn/asm/alpha-mont.pl b/crypto/bn/asm/alpha-mont.pl
-index 2ac3532435cf..1d68d6d07215 100644
+index 2ac3532..1d68d6d 100644
 --- a/crypto/bn/asm/alpha-mont.pl
 +++ b/crypto/bn/asm/alpha-mont.pl
 @@ -1,4 +1,11 @@
@@ -25635,7 +29381,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/armv4-gf2m.pl b/crypto/bn/asm/armv4-gf2m.pl
-index 36681ee9cfd6..0bb543307590 100644
+index 36681ee..0bb5433 100644
 --- a/crypto/bn/asm/armv4-gf2m.pl
 +++ b/crypto/bn/asm/armv4-gf2m.pl
 @@ -1,4 +1,11 @@
@@ -25652,7 +29398,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/armv4-mont.pl b/crypto/bn/asm/armv4-mont.pl
-index c791502e9969..0dc4fe95e439 100644
+index c791502..0dc4fe9 100644
 --- a/crypto/bn/asm/armv4-mont.pl
 +++ b/crypto/bn/asm/armv4-mont.pl
 @@ -1,4 +1,11 @@
@@ -25669,7 +29415,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/armv8-mont.pl b/crypto/bn/asm/armv8-mont.pl
-index f04aab16bc59..5d5af1b6be25 100755
+index f04aab1..5d5af1b 100755
 --- a/crypto/bn/asm/armv8-mont.pl
 +++ b/crypto/bn/asm/armv8-mont.pl
 @@ -1,4 +1,11 @@
@@ -25686,7 +29432,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/bn-586.pl b/crypto/bn/asm/bn-586.pl
-index 3f34abef9e38..1ca1bbf7d4e1 100644
+index 3f34abe..1ca1bbf 100644
 --- a/crypto/bn/asm/bn-586.pl
 +++ b/crypto/bn/asm/bn-586.pl
 @@ -1,4 +1,11 @@
@@ -25703,7 +29449,7 @@
  $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
  push(@INC,"${dir}","${dir}../../perlasm");
 diff --git a/crypto/bn/asm/bn-c64xplus.asm b/crypto/bn/asm/bn-c64xplus.asm
-index 7b72bff4acda..de6d37728fba 100644
+index 7b72bff..de6d377 100644
 --- a/crypto/bn/asm/bn-c64xplus.asm
 +++ b/crypto/bn/asm/bn-c64xplus.asm
 @@ -1,3 +1,10 @@
@@ -25718,7 +29464,7 @@
  ;; Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
  ;; project.
 diff --git a/crypto/bn/asm/c64xplus-gf2m.pl b/crypto/bn/asm/c64xplus-gf2m.pl
-index c79f46f33310..c0e5400807f5 100644
+index c79f46f..c0e5400 100644
 --- a/crypto/bn/asm/c64xplus-gf2m.pl
 +++ b/crypto/bn/asm/c64xplus-gf2m.pl
 @@ -1,4 +1,11 @@
@@ -25735,7 +29481,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/co-586.pl b/crypto/bn/asm/co-586.pl
-index ec3ea343c840..60d0363660d0 100644
+index ec3ea34..60d0363 100644
 --- a/crypto/bn/asm/co-586.pl
 +++ b/crypto/bn/asm/co-586.pl
 @@ -1,4 +1,10 @@
@@ -25751,7 +29497,7 @@
  $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
  push(@INC,"${dir}","${dir}../../perlasm");
 diff --git a/crypto/bn/asm/ia64-mont.pl b/crypto/bn/asm/ia64-mont.pl
-index 710ca3c1f4c0..5cc5c599f9de 100644
+index 710ca3c..5cc5c59 100644
 --- a/crypto/bn/asm/ia64-mont.pl
 +++ b/crypto/bn/asm/ia64-mont.pl
 @@ -1,4 +1,11 @@
@@ -25768,7 +29514,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/ia64.S b/crypto/bn/asm/ia64.S
-index 9e090ab8fda3..2fdf5bbabe15 100644
+index 9e090ab..2fdf5bb 100644
 --- a/crypto/bn/asm/ia64.S
 +++ b/crypto/bn/asm/ia64.S
 @@ -3,6 +3,13 @@
@@ -25786,7 +29532,7 @@
  // ====================================================================
  // Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/mips-mont.pl b/crypto/bn/asm/mips-mont.pl
-index 3bccdf6931de..a907571bec3f 100644
+index 3bccdf6..a907571 100644
 --- a/crypto/bn/asm/mips-mont.pl
 +++ b/crypto/bn/asm/mips-mont.pl
 @@ -1,4 +1,11 @@
@@ -25803,7 +29549,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/mips.pl b/crypto/bn/asm/mips.pl
-index 4c8eba0a0527..e3a38bd14013 100644
+index 4c8eba0..e3a38bd 100644
 --- a/crypto/bn/asm/mips.pl
 +++ b/crypto/bn/asm/mips.pl
 @@ -1,4 +1,11 @@
@@ -25820,7 +29566,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/pa-risc2.s b/crypto/bn/asm/pa-risc2.s
-index f3b16290eb04..413eac71237c 100644
+index f3b1629..413eac7 100644
 --- a/crypto/bn/asm/pa-risc2.s
 +++ b/crypto/bn/asm/pa-risc2.s
 @@ -1,3 +1,9 @@
@@ -25834,7 +29580,7 @@
  ; PA-RISC 2.0 implementation of bn_asm code, based on the
  ; 64-bit version of the code.  This code is effectively the
 diff --git a/crypto/bn/asm/pa-risc2W.s b/crypto/bn/asm/pa-risc2W.s
-index a99545754d18..97381172e727 100644
+index a995457..9738117 100644
 --- a/crypto/bn/asm/pa-risc2W.s
 +++ b/crypto/bn/asm/pa-risc2W.s
 @@ -1,3 +1,10 @@
@@ -25849,7 +29595,7 @@
  ; PA-RISC 64-bit implementation of bn_asm code
  ;
 diff --git a/crypto/bn/asm/parisc-mont.pl b/crypto/bn/asm/parisc-mont.pl
-index aa6c797dcdc0..8aa94e8511c9 100644
+index aa6c797..8aa94e8 100644
 --- a/crypto/bn/asm/parisc-mont.pl
 +++ b/crypto/bn/asm/parisc-mont.pl
 @@ -1,4 +1,11 @@
@@ -25866,7 +29612,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/ppc-mont.pl b/crypto/bn/asm/ppc-mont.pl
-index 6930a3acebd2..5802260ca680 100644
+index 6930a3a..5802260 100644
 --- a/crypto/bn/asm/ppc-mont.pl
 +++ b/crypto/bn/asm/ppc-mont.pl
 @@ -1,4 +1,11 @@
@@ -25883,7 +29629,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/ppc.pl b/crypto/bn/asm/ppc.pl
-index 446d8ba9492b..346e01faf5dd 100644
+index 446d8ba..346e01f 100644
 --- a/crypto/bn/asm/ppc.pl
 +++ b/crypto/bn/asm/ppc.pl
 @@ -1,5 +1,11 @@
@@ -25900,7 +29646,7 @@
  # architectures with single file. We pick up the target based on the
  # file name we are asked to generate.
 diff --git a/crypto/bn/asm/ppc64-mont.pl b/crypto/bn/asm/ppc64-mont.pl
-index 595fc6d31f60..1e19c958a16f 100644
+index 595fc6d..1e19c95 100644
 --- a/crypto/bn/asm/ppc64-mont.pl
 +++ b/crypto/bn/asm/ppc64-mont.pl
 @@ -1,4 +1,11 @@
@@ -25917,7 +29663,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/rsaz-avx2.pl b/crypto/bn/asm/rsaz-avx2.pl
-index 712a77fe8ca3..0c1b236ef982 100755
+index 712a77f..0c1b236 100755
 --- a/crypto/bn/asm/rsaz-avx2.pl
 +++ b/crypto/bn/asm/rsaz-avx2.pl
 @@ -1,4 +1,11 @@
@@ -25943,7 +29689,7 @@
  
  if ($avx>1) {{{
 diff --git a/crypto/bn/asm/rsaz-x86_64.pl b/crypto/bn/asm/rsaz-x86_64.pl
-index 3290054f2e90..6f3b664f7a89 100755
+index 3290054..6f3b664 100755
 --- a/crypto/bn/asm/rsaz-x86_64.pl
 +++ b/crypto/bn/asm/rsaz-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -25969,7 +29715,7 @@
  
  if (`$ENV{CC} -Wa,-v -c -o /dev/null -x assembler /dev/null 2>&1`
 diff --git a/crypto/bn/asm/s390x-gf2m.pl b/crypto/bn/asm/s390x-gf2m.pl
-index 1d76c9f416c3..cbd16f42145b 100644
+index 1d76c9f..cbd16f4 100644
 --- a/crypto/bn/asm/s390x-gf2m.pl
 +++ b/crypto/bn/asm/s390x-gf2m.pl
 @@ -1,4 +1,11 @@
@@ -25986,7 +29732,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/s390x-mont.pl b/crypto/bn/asm/s390x-mont.pl
-index bdad486e4f47..2205bc2ca043 100644
+index bdad486..2205bc2 100644
 --- a/crypto/bn/asm/s390x-mont.pl
 +++ b/crypto/bn/asm/s390x-mont.pl
 @@ -1,4 +1,11 @@
@@ -26003,7 +29749,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/s390x.S b/crypto/bn/asm/s390x.S
-index f5eebe413a28..292a7a9998bd 100755
+index f5eebe4..292a7a9 100755
 --- a/crypto/bn/asm/s390x.S
 +++ b/crypto/bn/asm/s390x.S
 @@ -1,11 +1,11 @@
@@ -26024,7 +29770,7 @@
  
  .text
 diff --git a/crypto/bn/asm/sparct4-mont.pl b/crypto/bn/asm/sparct4-mont.pl
-index 7ec83c2c9c22..4faf66f10a52 100755
+index 7ec83c2..4faf66f 100755
 --- a/crypto/bn/asm/sparct4-mont.pl
 +++ b/crypto/bn/asm/sparct4-mont.pl
 @@ -1,4 +1,11 @@
@@ -26041,7 +29787,7 @@
  # ====================================================================
  # Written by David S. Miller <davem at devemloft.net> and Andy Polyakov
 diff --git a/crypto/bn/asm/sparcv8.S b/crypto/bn/asm/sparcv8.S
-index 88c5dc480a76..9c31073b2430 100644
+index 88c5dc4..9c31073 100644
 --- a/crypto/bn/asm/sparcv8.S
 +++ b/crypto/bn/asm/sparcv8.S
 @@ -3,12 +3,12 @@
@@ -26063,7 +29809,7 @@
   */
  
 diff --git a/crypto/bn/asm/sparcv8plus.S b/crypto/bn/asm/sparcv8plus.S
-index 915a4e781a54..e77e67aa5720 100644
+index 915a4e7..e77e67a 100644
 --- a/crypto/bn/asm/sparcv8plus.S
 +++ b/crypto/bn/asm/sparcv8plus.S
 @@ -3,12 +3,12 @@
@@ -26085,7 +29831,7 @@
   */
  
 diff --git a/crypto/bn/asm/sparcv9-gf2m.pl b/crypto/bn/asm/sparcv9-gf2m.pl
-index c7bf9f228bda..dcf11a87a18e 100644
+index c7bf9f2..dcf11a8 100644
 --- a/crypto/bn/asm/sparcv9-gf2m.pl
 +++ b/crypto/bn/asm/sparcv9-gf2m.pl
 @@ -1,4 +1,11 @@
@@ -26102,7 +29848,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/sparcv9-mont.pl b/crypto/bn/asm/sparcv9-mont.pl
-index 4f922c3110e1..771cd96141c3 100644
+index 4f922c3..771cd96 100644
 --- a/crypto/bn/asm/sparcv9-mont.pl
 +++ b/crypto/bn/asm/sparcv9-mont.pl
 @@ -1,4 +1,11 @@
@@ -26119,7 +29865,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/sparcv9a-mont.pl b/crypto/bn/asm/sparcv9a-mont.pl
-index 7a4782e78764..902c0d3ad266 100755
+index 7a4782e..902c0d3 100755
 --- a/crypto/bn/asm/sparcv9a-mont.pl
 +++ b/crypto/bn/asm/sparcv9a-mont.pl
 @@ -1,4 +1,11 @@
@@ -26136,7 +29882,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/via-mont.pl b/crypto/bn/asm/via-mont.pl
-index 8cf4dde4d5a1..9f81bc822e8a 100644
+index 8cf4dde..9f81bc8 100644
 --- a/crypto/bn/asm/via-mont.pl
 +++ b/crypto/bn/asm/via-mont.pl
 @@ -1,4 +1,11 @@
@@ -26153,7 +29899,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/vis3-mont.pl b/crypto/bn/asm/vis3-mont.pl
-index 7b953a2be040..64dba4480fbe 100644
+index 7b953a2..64dba44 100644
 --- a/crypto/bn/asm/vis3-mont.pl
 +++ b/crypto/bn/asm/vis3-mont.pl
 @@ -1,4 +1,11 @@
@@ -26171,7 +29917,7 @@
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/vms.mar b/crypto/bn/asm/vms.mar
 deleted file mode 100644
-index aefab15cdb29..000000000000
+index aefab15..0000000
 --- a/crypto/bn/asm/vms.mar
 +++ /dev/null
 @@ -1,6440 +0,0 @@
@@ -32616,7 +36362,7 @@
 -; For now, the code below doesn't work, so I end this prematurely.
 -.end
 diff --git a/crypto/bn/asm/x86-gf2m.pl b/crypto/bn/asm/x86-gf2m.pl
-index 0292178d2488..f4643687332f 100644
+index 0292178..f464368 100644
 --- a/crypto/bn/asm/x86-gf2m.pl
 +++ b/crypto/bn/asm/x86-gf2m.pl
 @@ -1,4 +1,11 @@
@@ -32633,7 +36379,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/bn/asm/x86-mont.pl b/crypto/bn/asm/x86-mont.pl
-index 7c4e0b2ee373..9994b0bf9652 100755
+index 7c4e0b2..9994b0b 100755
 --- a/crypto/bn/asm/x86-mont.pl
 +++ b/crypto/bn/asm/x86-mont.pl
 @@ -1,4 +1,11 @@
@@ -32650,7 +36396,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/bn/asm/x86.pl b/crypto/bn/asm/x86.pl
-index c1cab72716c0..d57571db5d09 100644
+index c1cab72..d57571d 100644
 --- a/crypto/bn/asm/x86.pl
 +++ b/crypto/bn/asm/x86.pl
 @@ -1,4 +1,10 @@
@@ -32666,7 +36412,7 @@
  push(@INC,"perlasm","../../perlasm");
  require "x86asm.pl";
 diff --git a/crypto/bn/asm/x86_64-gcc.c b/crypto/bn/asm/x86_64-gcc.c
-index d77dc433d405..d46109a8c200 100644
+index d77dc43..d46109a 100644
 --- a/crypto/bn/asm/x86_64-gcc.c
 +++ b/crypto/bn/asm/x86_64-gcc.c
 @@ -1,3 +1,12 @@
@@ -32683,7 +36429,7 @@
  #if !(defined(__GNUC__) && __GNUC__>=2)
  # include "../bn_asm.c"         /* kind of dirty hack for Sun Studio */
 diff --git a/crypto/bn/asm/x86_64-gf2m.pl b/crypto/bn/asm/x86_64-gf2m.pl
-index 42bbec2fb7ef..d962f62033ca 100644
+index 42bbec2..d962f62 100644
 --- a/crypto/bn/asm/x86_64-gf2m.pl
 +++ b/crypto/bn/asm/x86_64-gf2m.pl
 @@ -1,4 +1,11 @@
@@ -32709,7 +36455,7 @@
  
  ($lo,$hi)=("%rax","%rdx");	$a=$lo;
 diff --git a/crypto/bn/asm/x86_64-mont.pl b/crypto/bn/asm/x86_64-mont.pl
-index 3e0a78e41fa8..3a2511f7f287 100755
+index 3e0a78e..3a2511f 100755
 --- a/crypto/bn/asm/x86_64-mont.pl
 +++ b/crypto/bn/asm/x86_64-mont.pl
 @@ -1,4 +1,11 @@
@@ -32735,7 +36481,7 @@
  
  if (`$ENV{CC} -Wa,-v -c -o /dev/null -x assembler /dev/null 2>&1`
 diff --git a/crypto/bn/asm/x86_64-mont5.pl b/crypto/bn/asm/x86_64-mont5.pl
-index aa6a5d1d0e53..2a7972d61086 100755
+index aa6a5d1..2a7972d 100755
 --- a/crypto/bn/asm/x86_64-mont5.pl
 +++ b/crypto/bn/asm/x86_64-mont5.pl
 @@ -1,4 +1,11 @@
@@ -32761,7 +36507,7 @@
  
  if (`$ENV{CC} -Wa,-v -c -o /dev/null -x assembler /dev/null 2>&1`
 diff --git a/crypto/bn/bn_add.c b/crypto/bn/bn_add.c
-index 3e7d86b2dd57..d44e8f7d899d 100644
+index 3e7d86b..6479650 100644
 --- a/crypto/bn/bn_add.c
 +++ b/crypto/bn/bn_add.c
 @@ -1,58 +1,10 @@
@@ -32829,16 +36575,232 @@
   */
  
  #include "internal/cryptlib.h"
+@@ -61,7 +13,6 @@
+ /* r can == a or b */
+ int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+ {
+-    const BIGNUM *tmp;
+     int a_neg = a->neg, ret;
+ 
+     bn_check_top(a);
+@@ -76,6 +27,8 @@ int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+     if (a_neg ^ b->neg) {
+         /* only one is negative */
+         if (a_neg) {
++            const BIGNUM *tmp;
++
+             tmp = a;
+             a = b;
+             b = tmp;
+@@ -85,14 +38,14 @@ int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+ 
+         if (BN_ucmp(a, b) < 0) {
+             if (!BN_usub(r, b, a))
+-                return (0);
++                return 0;
+             r->neg = 1;
+         } else {
+             if (!BN_usub(r, a, b))
+-                return (0);
++                return 0;
+             r->neg = 0;
+         }
+-        return (1);
++        return 1;
+     }
+ 
+     ret = BN_uadd(r, a, b);
+@@ -107,12 +60,13 @@ int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+     int max, min, dif;
+     const BN_ULONG *ap, *bp;
+     BN_ULONG *rp, carry, t1, t2;
+-    const BIGNUM *tmp;
+ 
+     bn_check_top(a);
+     bn_check_top(b);
+ 
+     if (a->top < b->top) {
++        const BIGNUM *tmp;
++
+         tmp = a;
+         a = b;
+         b = tmp;
+@@ -133,29 +87,17 @@ int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+     carry = bn_add_words(rp, ap, bp, min);
+     rp += min;
+     ap += min;
+-    bp += min;
+-
+-    if (carry) {
+-        while (dif) {
+-            dif--;
+-            t1 = *(ap++);
+-            t2 = (t1 + 1) & BN_MASK2;
+-            *(rp++) = t2;
+-            if (t2) {
+-                carry = 0;
+-                break;
+-            }
+-        }
+-        if (carry) {
+-            /* carry != 0 => dif == 0 */
+-            *rp = 1;
+-            r->top++;
+-        }
++
++    while (dif) {
++        dif--;
++        t1 = *(ap++);
++        t2 = (t1 + carry) & BN_MASK2;
++        *(rp++) = t2;
++        carry &= (t2 == 0);
+     }
+-    if (dif && rp != ap)
+-        while (dif--)
+-            /* copy remaining words if ap != rp */
+-            *(rp++) = *(ap++);
++    *rp = carry;
++    r->top += carry;
++
+     r->neg = 0;
+     bn_check_top(r);
+     return 1;
+@@ -165,9 +107,8 @@ int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+ int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+ {
+     int max, min, dif;
+-    register BN_ULONG t1, t2, *rp;
+-    register const BN_ULONG *ap, *bp;
+-    int i, carry;
++    BN_ULONG t1, t2, borrow, *rp;
++    const BN_ULONG *ap, *bp;
+ 
+     bn_check_top(a);
+     bn_check_top(b);
+@@ -178,63 +119,38 @@ int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+ 
+     if (dif < 0) {              /* hmm... should not be happening */
+         BNerr(BN_F_BN_USUB, BN_R_ARG2_LT_ARG3);
+-        return (0);
++        return 0;
+     }
+ 
+     if (bn_wexpand(r, max) == NULL)
+-        return (0);
++        return 0;
+ 
+     ap = a->d;
+     bp = b->d;
+     rp = r->d;
+ 
+-#if 1
+-    carry = 0;
+-    for (i = min; i != 0; i--) {
+-        t1 = *(ap++);
+-        t2 = *(bp++);
+-        if (carry) {
+-            carry = (t1 <= t2);
+-            t1 = (t1 - t2 - 1) & BN_MASK2;
+-        } else {
+-            carry = (t1 < t2);
+-            t1 = (t1 - t2) & BN_MASK2;
+-        }
+-        *(rp++) = t1 & BN_MASK2;
+-    }
+-#else
+-    carry = bn_sub_words(rp, ap, bp, min);
++    borrow = bn_sub_words(rp, ap, bp, min);
+     ap += min;
+-    bp += min;
+     rp += min;
+-#endif
+-    if (carry) {                /* subtracted */
+-        if (!dif)
+-            /* error: a < b */
+-            return 0;
+-        while (dif) {
+-            dif--;
+-            t1 = *(ap++);
+-            t2 = (t1 - 1) & BN_MASK2;
+-            *(rp++) = t2;
+-            if (t1)
+-                break;
+-        }
++
++    while (dif) {
++        dif--;
++        t1 = *(ap++);
++        t2 = (t1 - borrow) & BN_MASK2;
++        *(rp++) = t2;
++        borrow &= (t1 == 0);
+     }
+-    if (dif && ap != rp)
+-        memcpy(rp, ap, sizeof(*rp) * dif);
+ 
+     r->top = max;
+     r->neg = 0;
+     bn_correct_top(r);
+-    return (1);
++    return 1;
+ }
+ 
+ int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+ {
+     int max;
+     int add = 0, neg = 0;
+-    const BIGNUM *tmp;
+ 
+     bn_check_top(a);
+     bn_check_top(b);
+@@ -247,6 +163,8 @@ int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+      */
+     if (a->neg) {
+         if (b->neg) {
++            const BIGNUM *tmp;
++
+             tmp = a;
+             a = b;
+             b = tmp;
+@@ -263,25 +181,25 @@ int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
+ 
+     if (add) {
+         if (!BN_uadd(r, a, b))
+-            return (0);
++            return 0;
+         r->neg = neg;
+-        return (1);
++        return 1;
+     }
+ 
+     /* We are actually doing a - b :-) */
+ 
+     max = (a->top > b->top) ? a->top : b->top;
+     if (bn_wexpand(r, max) == NULL)
+-        return (0);
++        return 0;
+     if (BN_ucmp(a, b) < 0) {
+         if (!BN_usub(r, b, a))
+-            return (0);
++            return 0;
+         r->neg = 1;
+     } else {
+         if (!BN_usub(r, a, b))
+-            return (0);
++            return 0;
+         r->neg = 0;
+     }
+     bn_check_top(r);
+-    return (1);
++    return 1;
+ }
 diff --git a/crypto/bn/bn_asm.c b/crypto/bn/bn_asm.c
-index 4c67d2809257..39c6c2134b34 100644
+index 4c67d28..39c6c21 100644
 --- a/crypto/bn/bn_asm.c
 +++ b/crypto/bn/bn_asm.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -32886,7 +36848,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -32899,7 +36863,7 @@
  
  #include <assert.h>
 diff --git a/crypto/bn/bn_blind.c b/crypto/bn/bn_blind.c
-index 81b895ce379f..24d138309d47 100644
+index 81b895c..24d1383 100644
 --- a/crypto/bn/bn_blind.c
 +++ b/crypto/bn/bn_blind.c
 @@ -1,116 +1,14 @@
@@ -33026,7 +36990,7 @@
  
  #define BN_BLINDING_COUNTER     32
 diff --git a/crypto/bn/bn_const.c b/crypto/bn/bn_const.c
-index 881b4cc915b5..39dd61202ad7 100644
+index 881b4cc..39dd612 100644
 --- a/crypto/bn/bn_const.c
 +++ b/crypto/bn/bn_const.c
 @@ -1,4 +1,11 @@
@@ -33043,7 +37007,7 @@
  #include <openssl/bn.h>
  
 diff --git a/crypto/bn/bn_ctx.c b/crypto/bn/bn_ctx.c
-index 700234be6f69..68c04687437f 100644
+index 700234b..68c0468 100644
 --- a/crypto/bn/bn_ctx.c
 +++ b/crypto/bn/bn_ctx.c
 @@ -1,56 +1,10 @@
@@ -33110,7 +37074,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/bn/bn_depr.c b/crypto/bn/bn_depr.c
-index debed8dc83e8..de54d5e8cb38 100644
+index debed8d..7d89214 100644
 --- a/crypto/bn/bn_depr.c
 +++ b/crypto/bn/bn_depr.c
 @@ -1,55 +1,10 @@
@@ -33175,8 +37139,16 @@
   */
  
  /*
+@@ -66,7 +21,6 @@ NON_EMPTY_TRANSLATION_UNIT
+ # include <time.h>
+ # include "internal/cryptlib.h"
+ # include "bn_lcl.h"
+-# include <openssl/rand.h>
+ 
+ BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe,
+                           const BIGNUM *add, const BIGNUM *rem,
 diff --git a/crypto/bn/bn_dh.c b/crypto/bn/bn_dh.c
-index ad4a16eabe88..17d05597b3fc 100644
+index ad4a16e..17d0559 100644
 --- a/crypto/bn/bn_dh.c
 +++ b/crypto/bn/bn_dh.c
 @@ -1,59 +1,10 @@
@@ -33245,7 +37217,7 @@
  
  #include "bn_lcl.h"
 diff --git a/crypto/bn/bn_div.c b/crypto/bn/bn_div.c
-index 486a31d79a88..eef1b878c810 100644
+index 486a31d..eef1b87 100644
 --- a/crypto/bn/bn_div.c
 +++ b/crypto/bn/bn_div.c
 @@ -1,58 +1,10 @@
@@ -33341,7 +37313,7 @@
      }
      bn_correct_top(snum);
 diff --git a/crypto/bn/bn_err.c b/crypto/bn/bn_err.c
-index 7412859edf34..a71b265de251 100644
+index 7412859..a71b265 100644
 --- a/crypto/bn/bn_err.c
 +++ b/crypto/bn/bn_err.c
 @@ -1,61 +1,11 @@
@@ -33433,7 +37405,7 @@
      {ERR_FUNC(BN_F_BN_MPI2BN), "BN_mpi2bn"},
      {ERR_FUNC(BN_F_BN_NEW), "BN_new"},
 diff --git a/crypto/bn/bn_exp.c b/crypto/bn/bn_exp.c
-index c5e579c77cf4..d334cf705bb3 100644
+index c5e579c..d334cf7 100644
 --- a/crypto/bn/bn_exp.c
 +++ b/crypto/bn/bn_exp.c
 @@ -1,111 +1,10 @@
@@ -33570,7 +37542,7 @@
  
      if (bn_wexpand(b, top) == NULL)
 diff --git a/crypto/bn/bn_exp2.c b/crypto/bn/bn_exp2.c
-index f83615805a8e..5141c21f6d6b 100644
+index f836158..5141c21 100644
 --- a/crypto/bn/bn_exp2.c
 +++ b/crypto/bn/bn_exp2.c
 @@ -1,111 +1,10 @@
@@ -33692,7 +37664,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/bn/bn_gcd.c b/crypto/bn/bn_gcd.c
-index a6e909d870a4..1039e7630f63 100644
+index a6e909d..1039e76 100644
 --- a/crypto/bn/bn_gcd.c
 +++ b/crypto/bn/bn_gcd.c
 @@ -1,111 +1,10 @@
@@ -33814,7 +37786,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/bn/bn_gf2m.c b/crypto/bn/bn_gf2m.c
-index 84837a0f579e..003c15b0edd5 100644
+index 84837a0..003c15b 100644
 --- a/crypto/bn/bn_gf2m.c
 +++ b/crypto/bn/bn_gf2m.c
 @@ -1,3 +1,12 @@
@@ -33917,7 +37889,7 @@
  
  #include <assert.h>
 diff --git a/crypto/bn/bn_intern.c b/crypto/bn/bn_intern.c
-index abc8fc45a178..9227b6e24159 100644
+index abc8fc4..9227b6e 100644
 --- a/crypto/bn/bn_intern.c
 +++ b/crypto/bn/bn_intern.c
 @@ -1,55 +1,10 @@
@@ -33983,7 +37955,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/bn/bn_kron.c b/crypto/bn/bn_kron.c
-index 4477bec5ee48..b9bc6cca27fe 100644
+index 4477bec..b9bc6cc 100644
 --- a/crypto/bn/bn_kron.c
 +++ b/crypto/bn/bn_kron.c
 @@ -1,55 +1,10 @@
@@ -34049,7 +38021,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/bn/bn_lcl.h b/crypto/bn/bn_lcl.h
-index 412740d4ba00..ebf17b068d7d 100644
+index 412740d..ebf17b0 100644
 --- a/crypto/bn/bn_lcl.h
 +++ b/crypto/bn/bn_lcl.h
 @@ -1,111 +1,10 @@
@@ -34171,15 +38143,13 @@
  
  #ifndef HEADER_BN_LCL_H
 diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c
-index 4b37906319fc..ccdefb354f4f 100644
+index 4b37906..90df3ee 100644
 --- a/crypto/bn/bn_lib.c
 +++ b/crypto/bn/bn_lib.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -34227,7 +38197,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -34239,7 +38211,43 @@
   */
  
  #include <assert.h>
-@@ -839,9 +791,9 @@ int bn_cmp_words(const BN_ULONG *a, const BN_ULONG *b, int n)
+@@ -613,9 +565,9 @@ BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret)
+     if (ret == NULL)
+         return (NULL);
+     bn_check_top(ret);
+-    s += len - 1;
++    s += len;
+     /* Skip trailing zeroes. */
+-    for ( ; len > 0 && *s == 0; s--, len--)
++    for ( ; len > 0 && s[-1] == 0; s--, len--)
+         continue;
+     n = len;
+     if (n == 0) {
+@@ -632,7 +584,8 @@ BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret)
+     ret->neg = 0;
+     l = 0;
+     while (n--) {
+-        l = (l << 8L) | *(s--);
++        s--;
++        l = (l << 8L) | *s;
+         if (m-- == 0) {
+             ret->d[--i] = l;
+             l = 0;
+@@ -658,10 +611,11 @@ int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen)
+     /* Add trailing zeroes if necessary */
+     if (tolen > i)
+         memset(to + i, 0, tolen - i);
+-    to += i - 1;
++    to += i;
+     while (i--) {
+         l = a->d[i / BN_BYTES];
+-        *(to--) = (unsigned char)(l >> (8 * (i % BN_BYTES))) & 0xff;
++        to--;
++        *to = (unsigned char)(l >> (8 * (i % BN_BYTES))) & 0xff;
+     }
+     return tolen;
+ }
+@@ -839,9 +793,9 @@ int bn_cmp_words(const BN_ULONG *a, const BN_ULONG *b, int n)
  
  /*
   * Here follows a specialised variants of bn_cmp_words().  It has the
@@ -34251,7 +38259,7 @@
   * two lengths, calculated as len(a)-len(b). All lengths are the number of
   * BN_ULONGs...
   */
-@@ -1070,9 +1022,11 @@ void bn_correct_top(BIGNUM *a)
+@@ -1070,9 +1024,11 @@ void bn_correct_top(BIGNUM *a)
      int tmp_top = a->top;
  
      if (tmp_top > 0) {
@@ -34266,7 +38274,7 @@
      }
      bn_pollute(a);
 diff --git a/crypto/bn/bn_mod.c b/crypto/bn/bn_mod.c
-index 99789b944ad2..13b583f76c9f 100644
+index 99789b9..13b583f 100644
 --- a/crypto/bn/bn_mod.c
 +++ b/crypto/bn/bn_mod.c
 @@ -1,115 +1,10 @@
@@ -34276,8 +38284,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
-+ * Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -34378,7 +38385,8 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++ * Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -34391,7 +38399,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/bn/bn_mont.c b/crypto/bn/bn_mont.c
-index dfa395afd667..6d37279a5ea0 100644
+index dfa395a..6d37279 100644
 --- a/crypto/bn/bn_mont.c
 +++ b/crypto/bn/bn_mont.c
 @@ -1,111 +1,10 @@
@@ -34513,7 +38521,7 @@
  
  /*
 diff --git a/crypto/bn/bn_mpi.c b/crypto/bn/bn_mpi.c
-index 80d105dd5531..043e21d26a38 100644
+index 80d105d..043e21d 100644
 --- a/crypto/bn/bn_mpi.c
 +++ b/crypto/bn/bn_mpi.c
 @@ -1,58 +1,10 @@
@@ -34640,15 +38648,13 @@
 +    return a;
  }
 diff --git a/crypto/bn/bn_mul.c b/crypto/bn/bn_mul.c
-index 0d2a743cc7cd..66139edf513c 100644
+index 0d2a743..66139ed 100644
 --- a/crypto/bn/bn_mul.c
 +++ b/crypto/bn/bn_mul.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -34696,7 +38702,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -34709,7 +38717,7 @@
  
  #include <assert.h>
 diff --git a/crypto/bn/bn_nist.c b/crypto/bn/bn_nist.c
-index 35d0eef37b5a..53598f97eff5 100644
+index 35d0eef..53598f9 100644
 --- a/crypto/bn/bn_nist.c
 +++ b/crypto/bn/bn_nist.c
 @@ -1,58 +1,10 @@
@@ -34777,10 +38785,10 @@
  
  #include "bn_lcl.h"
 diff --git a/crypto/bn/bn_prime.c b/crypto/bn/bn_prime.c
-index a5887d96a853..bdfa558a7e6e 100644
+index a5887d9..1c41938 100644
 --- a/crypto/bn/bn_prime.c
 +++ b/crypto/bn/bn_prime.c
-@@ -1,111 +1,12 @@
+@@ -1,118 +1,18 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 - *
@@ -34900,7 +38908,14 @@
   */
  
  #include <stdio.h>
-@@ -208,9 +109,6 @@ int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe,
+ #include <time.h>
+ #include "internal/cryptlib.h"
+ #include "bn_lcl.h"
+-#include <openssl/rand.h>
+ 
+ /*
+  * The quick sieve algorithm approach to weeding out primes is Philip
+@@ -208,9 +108,6 @@ int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe,
      prime_t *mods = NULL;
      int checks = BN_prime_checks_for_size(bits);
  
@@ -34910,7 +38925,7 @@
      if (bits < 2) {
          /* There are no prime numbers this small. */
          BNerr(BN_F_BN_GENERATE_PRIME_EX, BN_R_BITS_TOO_SMALL);
-@@ -221,6 +119,10 @@ int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe,
+@@ -221,6 +118,10 @@ int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe,
          return 0;
      }
  
@@ -34921,8 +38936,121 @@
      ctx = BN_CTX_new();
      if (ctx == NULL)
          goto err;
+@@ -242,7 +143,7 @@ int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe,
+                 goto err;
+         }
+     }
+-    /* if (BN_mod_word(ret,(BN_ULONG)3) == 1) goto loop; */
++
+     if (!BN_GENCB_call(cb, 0, c1++))
+         /* aborted */
+         goto err;
+@@ -317,9 +218,13 @@ int BN_is_prime_fasttest_ex(const BIGNUM *a, int checks, BN_CTX *ctx_passed,
+         /* a is even => a is prime if and only if a == 2 */
+         return BN_is_word(a, 2);
+     if (do_trial_division) {
+-        for (i = 1; i < NUMPRIMES; i++)
+-            if (BN_mod_word(a, primes[i]) == 0)
++        for (i = 1; i < NUMPRIMES; i++) {
++            BN_ULONG mod = BN_mod_word(a, primes[i]);
++            if (mod == (BN_ULONG)-1)
++                goto err;
++            if (mod == 0)
+                 return 0;
++        }
+         if (!BN_GENCB_call(cb, 1, -1))
+             goto err;
+     }
+@@ -412,7 +317,10 @@ int bn_probable_prime_dh_retry(BIGNUM *rnd, int bits, BN_CTX *ctx)
+ 
+     for (i = 1; i < NUMPRIMES; i++) {
+         /* check that rnd is a prime */
+-        if (BN_mod_word(rnd, (BN_ULONG)primes[i]) <= 1) {
++        BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]);
++        if (mod == (BN_ULONG)-1)
++            goto err;
++        if (mod <= 1) {
+             goto loop;
+         }
+     }
+@@ -438,7 +346,8 @@ int bn_probable_prime_dh_coprime(BIGNUM *rnd, int bits, BN_CTX *ctx)
+     if ((offset_count = BN_CTX_get(ctx)) == NULL)
+         goto err;
+ 
+-    BN_add_word(offset_count, prime_offset_count);
++    if (!BN_add_word(offset_count, prime_offset_count))
++        goto err;
+ 
+  loop:
+     if (!BN_rand(rnd, bits - prime_multiplier_bits, 0, 1))
+@@ -448,17 +357,20 @@ int bn_probable_prime_dh_coprime(BIGNUM *rnd, int bits, BN_CTX *ctx)
+     if (!BN_rand_range(offset_index, offset_count))
+         goto err;
+ 
+-    BN_mul_word(rnd, prime_multiplier);
+-    BN_add_word(rnd, prime_offsets[BN_get_word(offset_index)]);
++    if (!BN_mul_word(rnd, prime_multiplier)
++        || !BN_add_word(rnd, prime_offsets[BN_get_word(offset_index)]))
++        goto err;
+ 
+     /* we now have a random number 'rand' to test. */
+ 
+     /* skip coprimes */
+     for (i = first_prime_index; i < NUMPRIMES; i++) {
+         /* check that rnd is a prime */
+-        if (BN_mod_word(rnd, (BN_ULONG)primes[i]) <= 1) {
++        BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]);
++        if (mod == (BN_ULONG)-1)
++            goto err;
++        if (mod <= 1)
+             goto loop;
+-        }
+     }
+     ret = 1;
+ 
+@@ -506,8 +418,12 @@ static int probable_prime(BIGNUM *rnd, int bits, prime_t *mods)
+     if (!BN_rand(rnd, bits, 1, 1))
+         return (0);
+     /* we now have a random number 'rnd' to test. */
+-    for (i = 1; i < NUMPRIMES; i++)
+-        mods[i] = (prime_t) BN_mod_word(rnd, (BN_ULONG)primes[i]);
++    for (i = 1; i < NUMPRIMES; i++) {
++        BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]);
++        if (mod == (BN_ULONG)-1)
++            return 0;
++        mods[i] = (prime_t) mod;
++    }
+     /*
+      * If bits is so small that it fits into a single word then we
+      * additionally don't want to exceed that many bits.
+@@ -605,7 +521,10 @@ int bn_probable_prime_dh(BIGNUM *rnd, int bits,
+  loop:
+     for (i = 1; i < NUMPRIMES; i++) {
+         /* check that rnd is a prime */
+-        if (BN_mod_word(rnd, (BN_ULONG)primes[i]) <= 1) {
++        BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]);
++        if (mod == (BN_ULONG)-1)
++            goto err;
++        if (mod <= 1) {
+             if (!BN_add(rnd, rnd, add))
+                 goto err;
+             goto loop;
+@@ -666,8 +585,11 @@ static int probable_prime_dh_safe(BIGNUM *p, int bits, const BIGNUM *padd,
+         /*
+          * check that for p and q gcd(p-1,primes) == 1 (except for 2)
+          */
+-        if ((BN_mod_word(p, (BN_ULONG)primes[i]) == 0) ||
+-            (BN_mod_word(q, (BN_ULONG)primes[i]) == 0)) {
++        BN_ULONG pmod = BN_mod_word(p, (BN_ULONG)primes[i]);
++        BN_ULONG qmod = BN_mod_word(q, (BN_ULONG)primes[i]);
++        if (pmod == (BN_ULONG)-1 || qmod == (BN_ULONG)-1)
++            goto err;
++        if (pmod == 0 || qmod == 0) {
+             if (!BN_add(p, p, padd))
+                 goto err;
+             if (!BN_add(q, q, qadd))
 diff --git a/crypto/bn/bn_prime.h b/crypto/bn/bn_prime.h
-index 6f6949cd7a86..41440fa4e19c 100644
+index 6f6949c..41440fa 100644
 --- a/crypto/bn/bn_prime.h
 +++ b/crypto/bn/bn_prime.h
 @@ -1,59 +1,13 @@
@@ -34994,7 +39122,7 @@
  
  typedef unsigned short prime_t;
 diff --git a/crypto/bn/bn_prime.pl b/crypto/bn/bn_prime.pl
-index 3a5f064faa61..163d4a9d306f 100644
+index 3a5f064..163d4a9 100644
 --- a/crypto/bn/bn_prime.pl
 +++ b/crypto/bn/bn_prime.pl
 @@ -1,62 +1,22 @@
@@ -35076,7 +39204,7 @@
  
  EOF
 diff --git a/crypto/bn/bn_print.c b/crypto/bn/bn_print.c
-index 0c3b214f12a8..78589dba5bdb 100644
+index 0c3b214..8672c7e 100644
 --- a/crypto/bn/bn_print.c
 +++ b/crypto/bn/bn_print.c
 @@ -1,58 +1,10 @@
@@ -35178,8 +39306,20 @@
          goto err;
  
      num = i + neg;
+@@ -294,8 +241,9 @@ int BN_dec2bn(BIGNUM **bn, const char *a)
+         l += *a - '0';
+         a++;
+         if (++j == BN_DEC_NUM) {
+-            BN_mul_word(ret, BN_DEC_CONV);
+-            BN_add_word(ret, l);
++            if (!BN_mul_word(ret, BN_DEC_CONV)
++                || !BN_add_word(ret, l))
++                goto err;
+             l = 0;
+             j = 0;
+         }
 diff --git a/crypto/bn/bn_rand.c b/crypto/bn/bn_rand.c
-index ce4a0e17d796..9c0a4eef06fe 100644
+index ce4a0e1..9c0a4ee 100644
 --- a/crypto/bn/bn_rand.c
 +++ b/crypto/bn/bn_rand.c
 @@ -1,111 +1,10 @@
@@ -35317,15 +39457,13 @@
      if (pseudorand == 2) {
          /*
 diff --git a/crypto/bn/bn_recp.c b/crypto/bn/bn_recp.c
-index ef15c8f170b4..e532b6e668c1 100644
+index ef15c8f..e532b6e 100644
 --- a/crypto/bn/bn_recp.c
 +++ b/crypto/bn/bn_recp.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -35373,7 +39511,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -35386,7 +39526,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/bn/bn_shift.c b/crypto/bn/bn_shift.c
-index 4c8527583bb2..9907b82fa2eb 100644
+index 4c85275..9907b82 100644
 --- a/crypto/bn/bn_shift.c
 +++ b/crypto/bn/bn_shift.c
 @@ -1,58 +1,10 @@
@@ -35455,15 +39595,13 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/bn/bn_sqr.c b/crypto/bn/bn_sqr.c
-index 389b7cfab4ee..a62bb1a58480 100644
+index 389b7cf..a62bb1a 100644
 --- a/crypto/bn/bn_sqr.c
 +++ b/crypto/bn/bn_sqr.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -35511,7 +39649,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -35524,7 +39664,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/bn/bn_sqrt.c b/crypto/bn/bn_sqrt.c
-index 7ae7536d67a6..84376c78e5ba 100644
+index 7ae7536..84376c7 100644
 --- a/crypto/bn/bn_sqrt.c
 +++ b/crypto/bn/bn_sqrt.c
 @@ -1,59 +1,10 @@
@@ -35593,7 +39733,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/bn/bn_srp.c b/crypto/bn/bn_srp.c
-index a1e438c71a7b..58b1691eee77 100644
+index a1e438c..58b1691 100644
 --- a/crypto/bn/bn_srp.c
 +++ b/crypto/bn/bn_srp.c
 @@ -1,3 +1,12 @@
@@ -35610,7 +39750,7 @@
  #include "e_os.h"
  
 diff --git a/crypto/bn/bn_word.c b/crypto/bn/bn_word.c
-index 718777b5b839..a34244c4aded 100644
+index 718777b..a34244c 100644
 --- a/crypto/bn/bn_word.c
 +++ b/crypto/bn/bn_word.c
 @@ -1,58 +1,10 @@
@@ -35712,7 +39852,7 @@
          ret = ((ret << BN_BITS4) | (a->d[i] & BN_MASK2l)) % w;
  #else
 diff --git a/crypto/bn/bn_x931p.c b/crypto/bn/bn_x931p.c
-index 3c74fd57b90d..83170d49196c 100644
+index 3c74fd5..d863386 100644
 --- a/crypto/bn/bn_x931p.c
 +++ b/crypto/bn/bn_x931p.c
 @@ -1,59 +1,10 @@
@@ -35780,8 +39920,51 @@
   */
  
  #include <stdio.h>
+@@ -70,7 +21,7 @@
+ static int bn_x931_derive_pi(BIGNUM *pi, const BIGNUM *Xpi, BN_CTX *ctx,
+                              BN_GENCB *cb)
+ {
+-    int i = 0;
++    int i = 0, is_prime;
+     if (!BN_copy(pi, Xpi))
+         return 0;
+     if (!BN_is_odd(pi) && !BN_add_word(pi, 1))
+@@ -79,7 +30,10 @@ static int bn_x931_derive_pi(BIGNUM *pi, const BIGNUM *Xpi, BN_CTX *ctx,
+         i++;
+         BN_GENCB_call(cb, 0, i);
+         /* NB 27 MR is specified in X9.31 */
+-        if (BN_is_prime_fasttest_ex(pi, 27, ctx, 1, cb))
++        is_prime = BN_is_prime_fasttest_ex(pi, 27, ctx, 1, cb);
++        if (is_prime < 0)
++            return 0;
++        if (is_prime)
+             break;
+         if (!BN_add_word(pi, 2))
+             return 0;
+@@ -168,14 +122,18 @@ int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
+             goto err;
+         if (!BN_gcd(t, pm1, e, ctx))
+             goto err;
+-        if (BN_is_one(t)
++        if (BN_is_one(t)) {
+             /*
+              * X9.31 specifies 8 MR and 1 Lucas test or any prime test
+              * offering similar or better guarantees 50 MR is considerably
+              * better.
+              */
+-            && BN_is_prime_fasttest_ex(p, 50, ctx, 1, cb))
+-            break;
++            int r = BN_is_prime_fasttest_ex(p, 50, ctx, 1, cb);
++            if (r < 0)
++                goto err;
++            if (r)
++                break;
++        }
+         if (!BN_add(p, p, p1p2))
+             goto err;
+     }
 diff --git a/crypto/bn/build.info b/crypto/bn/build.info
-index 83a5b81219ed..edceb73c66a4 100644
+index 83a5b81..edceb73 100644
 --- a/crypto/bn/build.info
 +++ b/crypto/bn/build.info
 @@ -7,7 +7,7 @@ SOURCE[../../libcrypto]=\
@@ -35803,7 +39986,7 @@
  GENERATE[armv4-mont.S]=asm/armv4-mont.pl $(PERLASM_SCHEME)
  INCLUDE[armv4-mont.o]=..
 diff --git a/crypto/bn/rsaz_exp.c b/crypto/bn/rsaz_exp.c
-index d85e612bf7b4..1a70f6caded2 100644
+index d85e612..1a70f6c 100644
 --- a/crypto/bn/rsaz_exp.c
 +++ b/crypto/bn/rsaz_exp.c
 @@ -1,3 +1,12 @@
@@ -35829,7 +40012,7 @@
          index -= 5;
  
 diff --git a/crypto/bn/rsaz_exp.h b/crypto/bn/rsaz_exp.h
-index 229e181f67b5..9501cc8089e9 100644
+index 229e181..9501cc8 100644
 --- a/crypto/bn/rsaz_exp.h
 +++ b/crypto/bn/rsaz_exp.h
 @@ -1,3 +1,12 @@
@@ -35847,7 +40030,7 @@
  *  Copyright (c) 2012, Intel Corporation                                     *
 diff --git a/crypto/bn/vms-helper.c b/crypto/bn/vms-helper.c
 deleted file mode 100644
-index cb519c4ecabc..000000000000
+index cb519c4..0000000
 --- a/crypto/bn/vms-helper.c
 +++ /dev/null
 @@ -1,67 +0,0 @@
@@ -35920,7 +40103,7 @@
 -}
 diff --git a/crypto/buffer/Makefile.in b/crypto/buffer/Makefile.in
 deleted file mode 100644
-index 97e1094ddb7e..000000000000
+index 97e1094..0000000
 --- a/crypto/buffer/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -35968,7 +40151,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/buffer/buf_err.c b/crypto/buffer/buf_err.c
-index 0fb9d4fcea37..b7679ae06448 100644
+index 0fb9d4f..b7679ae 100644
 --- a/crypto/buffer/buf_err.c
 +++ b/crypto/buffer/buf_err.c
 @@ -1,61 +1,11 @@
@@ -36041,15 +40224,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/buffer/buffer.c b/crypto/buffer/buffer.c
-index a16f3bd34263..7caa2150924a 100644
+index a16f3bd..7caa215 100644
 --- a/crypto/buffer/buffer.c
 +++ b/crypto/buffer/buffer.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -36097,7 +40278,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -36129,8 +40312,21 @@
          str->length = len;
          return (len);
      }
+diff --git a/crypto/build.info b/crypto/build.info
+index 1b4ed14..916d24f 100644
+--- a/crypto/build.info
++++ b/crypto/build.info
+@@ -2,7 +2,7 @@
+ LIBS=../libcrypto
+ SOURCE[../libcrypto]=\
+         cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c cpt_err.c \
+-        ebcdic.c uid.c o_time.c o_str.c o_dir.c \
++        ebcdic.c uid.c o_time.c o_str.c o_dir.c o_fopen.c \
+         threads_pthread.c threads_win.c threads_none.c \
+         o_init.c o_fips.c mem_sec.c init.c {- $target{cpuid_asm_src} -} \
+         {- $target{uplink_aux_src} -}
 diff --git a/crypto/c64xpluscpuid.pl b/crypto/c64xpluscpuid.pl
-index 2feb4e31f45a..9efe1205fff4 100644
+index 2feb4e3..9efe120 100644
 --- a/crypto/c64xpluscpuid.pl
 +++ b/crypto/c64xpluscpuid.pl
 @@ -1,5 +1,10 @@
@@ -36153,7 +40349,7 @@
  	.asg	OPENSSL_atomic_add,_OPENSSL_atomic_add
  	.asg	OPENSSL_wipe_cpu,_OPENSSL_wipe_cpu
  	.asg	OPENSSL_instrument_bus,_OPENSSL_instrument_bus
-@@ -82,6 +88,29 @@ $code.=<<___;
+@@ -82,6 +88,29 @@ _OPENSSL_cleanse:
     [A1]	STB	A2,*A4++[2]
  	.endasmfunc
  
@@ -36185,7 +40381,7 @@
  	.asmfunc
 diff --git a/crypto/camellia/Makefile.in b/crypto/camellia/Makefile.in
 deleted file mode 100644
-index 5a806e26fd53..000000000000
+index 5a806e2..0000000
 --- a/crypto/camellia/Makefile.in
 +++ /dev/null
 @@ -1,57 +0,0 @@
@@ -36247,7 +40443,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/camellia/asm/cmll-x86.pl b/crypto/camellia/asm/cmll-x86.pl
-index de354aa2e544..59f9ed9141b0 100644
+index de354aa..59f9ed9 100644
 --- a/crypto/camellia/asm/cmll-x86.pl
 +++ b/crypto/camellia/asm/cmll-x86.pl
 @@ -1,4 +1,11 @@
@@ -36264,7 +40460,7 @@
  # ====================================================================
  # Copyright (c) 2008 Andy Polyakov <appro at openssl.org>
 diff --git a/crypto/camellia/asm/cmll-x86_64.pl b/crypto/camellia/asm/cmll-x86_64.pl
-index d94f46b887e5..da5ad7b7e0e7 100644
+index d94f46b..da5ad7b 100644
 --- a/crypto/camellia/asm/cmll-x86_64.pl
 +++ b/crypto/camellia/asm/cmll-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -36290,7 +40486,7 @@
  
  sub hi() { my $r=shift; $r =~ s/%[er]([a-d])x/%\1h/;    $r; }
 diff --git a/crypto/camellia/asm/cmllt4-sparcv9.pl b/crypto/camellia/asm/cmllt4-sparcv9.pl
-index fac53623a7bc..ffe4a7d91cbc 100644
+index fac5362..ffe4a7d 100644
 --- a/crypto/camellia/asm/cmllt4-sparcv9.pl
 +++ b/crypto/camellia/asm/cmllt4-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -36307,7 +40503,7 @@
  # ====================================================================
  # Written by David S. Miller <davem at devemloft.net> and Andy Polyakov
 diff --git a/crypto/camellia/build.info b/crypto/camellia/build.info
-index 152e0a455a0c..fd782724f069 100644
+index 152e0a4..fd78272 100644
 --- a/crypto/camellia/build.info
 +++ b/crypto/camellia/build.info
 @@ -8,4 +8,4 @@ DEPEND[cmll-x86.s]=../perlasm/x86asm.pl
@@ -36317,7 +40513,7 @@
 -DEPEND[cmllt4-sparcv9.S]=../perlasm/sparcv9-modes.pl
 +DEPEND[cmllt4-sparcv9.S]=../perlasm/sparcv9_modes.pl
 diff --git a/crypto/camellia/camellia.c b/crypto/camellia/camellia.c
-index 68651b61b8b1..f65bedb936fd 100644
+index 68651b6..6641a62 100644
 --- a/crypto/camellia/camellia.c
 +++ b/crypto/camellia/camellia.c
 @@ -1,3 +1,12 @@
@@ -36333,8 +40529,66 @@
  /* ====================================================================
   * Copyright 2006 NTT (Nippon Telegraph and Telephone Corporation) .
   * ALL RIGHTS RESERVED.
+@@ -11,57 +20,6 @@
+  * The Camellia Code included herein is developed by
+  * NTT (Nippon Telegraph and Telephone Corporation), and is contributed
+  * to the OpenSSL project.
+- *
+- * The Camellia Code is licensed pursuant to the OpenSSL open source
+- * license provided below.
+- */
+-/* ====================================================================
+- * Copyright (c) 2006 The OpenSSL Project.  All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- *
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- *
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in
+- *    the documentation and/or other materials provided with the
+- *    distribution.
+- *
+- * 3. All advertising materials mentioning features or use of this
+- *    software must display the following acknowledgment:
+- *    "This product includes software developed by the OpenSSL Project
+- *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+- *
+- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+- *    endorse or promote products derived from this software without
+- *    prior written permission. For written permission, please contact
+- *    openssl-core at openssl.org.
+- *
+- * 5. Products derived from this software may not be called "OpenSSL"
+- *    nor may "OpenSSL" appear in their names without prior written
+- *    permission of the OpenSSL Project.
+- *
+- * 6. Redistributions of any form whatsoever must retain the following
+- *    acknowledgment:
+- *    "This product includes software developed by the OpenSSL Project
+- *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+- * OF THE POSSIBILITY OF SUCH DAMAGE.
+- * ====================================================================
+  */
+ 
+ /*
 diff --git a/crypto/camellia/cmll_cbc.c b/crypto/camellia/cmll_cbc.c
-index 742af6d679f0..b19171ded26b 100644
+index 742af6d..b19171d 100644
 --- a/crypto/camellia/cmll_cbc.c
 +++ b/crypto/camellia/cmll_cbc.c
 @@ -1,51 +1,10 @@
@@ -36396,15 +40650,13 @@
  
  #include <openssl/camellia.h>
 diff --git a/crypto/camellia/cmll_cfb.c b/crypto/camellia/cmll_cfb.c
-index 8f9f8a6fd1b4..4f49eaded66c 100644
+index 8f9f8a6..4f49ead 100644
 --- a/crypto/camellia/cmll_cfb.c
 +++ b/crypto/camellia/cmll_cfb.c
 @@ -1,107 +1,10 @@
 -/* ====================================================================
 - * Copyright (c) 2006 The OpenSSL Project.  All rights reserved.
-+/*
-+ * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -36501,7 +40753,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -36514,7 +40768,7 @@
  
  #include <openssl/camellia.h>
 diff --git a/crypto/camellia/cmll_ctr.c b/crypto/camellia/cmll_ctr.c
-index b891a0445698..161d1e18c136 100644
+index b891a04..161d1e1 100644
 --- a/crypto/camellia/cmll_ctr.c
 +++ b/crypto/camellia/cmll_ctr.c
 @@ -1,51 +1,10 @@
@@ -36576,7 +40830,7 @@
  
  #include <openssl/camellia.h>
 diff --git a/crypto/camellia/cmll_ecb.c b/crypto/camellia/cmll_ecb.c
-index 4edaa6d7a9f5..d932f1b37517 100644
+index 4edaa6d..d932f1b 100644
 --- a/crypto/camellia/cmll_ecb.c
 +++ b/crypto/camellia/cmll_ecb.c
 @@ -1,51 +1,10 @@
@@ -36638,7 +40892,7 @@
  
  #include <openssl/camellia.h>
 diff --git a/crypto/camellia/cmll_locl.h b/crypto/camellia/cmll_locl.h
-index 0cbcba29d330..4b3c86c82179 100644
+index 0cbcba2..6403b39 100644
 --- a/crypto/camellia/cmll_locl.h
 +++ b/crypto/camellia/cmll_locl.h
 @@ -1,3 +1,12 @@
@@ -36654,8 +40908,66 @@
  /* ====================================================================
   * Copyright 2006 NTT (Nippon Telegraph and Telephone Corporation) .
   * ALL RIGHTS RESERVED.
+@@ -11,57 +20,6 @@
+  * The Camellia Code included herein is developed by
+  * NTT (Nippon Telegraph and Telephone Corporation), and is contributed
+  * to the OpenSSL project.
+- *
+- * The Camellia Code is licensed pursuant to the OpenSSL open source
+- * license provided below.
+- */
+-/* ====================================================================
+- * Copyright (c) 2006 The OpenSSL Project.  All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- *
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- *
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in
+- *    the documentation and/or other materials provided with the
+- *    distribution.
+- *
+- * 3. All advertising materials mentioning features or use of this
+- *    software must display the following acknowledgment:
+- *    "This product includes software developed by the OpenSSL Project
+- *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+- *
+- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+- *    endorse or promote products derived from this software without
+- *    prior written permission. For written permission, please contact
+- *    openssl-core at openssl.org.
+- *
+- * 5. Products derived from this software may not be called "OpenSSL"
+- *    nor may "OpenSSL" appear in their names without prior written
+- *    permission of the OpenSSL Project.
+- *
+- * 6. Redistributions of any form whatsoever must retain the following
+- *    acknowledgment:
+- *    "This product includes software developed by the OpenSSL Project
+- *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+- * OF THE POSSIBILITY OF SUCH DAMAGE.
+- * ====================================================================
+  */
+ 
+ #ifndef HEADER_CAMELLIA_LOCL_H
 diff --git a/crypto/camellia/cmll_misc.c b/crypto/camellia/cmll_misc.c
-index ba9370252dc9..e5f014b79cbc 100644
+index ba93702..e5f014b 100644
 --- a/crypto/camellia/cmll_misc.c
 +++ b/crypto/camellia/cmll_misc.c
 @@ -1,51 +1,10 @@
@@ -36717,15 +41029,13 @@
  
  #include <openssl/opensslv.h>
 diff --git a/crypto/camellia/cmll_ofb.c b/crypto/camellia/cmll_ofb.c
-index 8d004b939323..b43c685c751f 100644
+index 8d004b9..b43c685 100644
 --- a/crypto/camellia/cmll_ofb.c
 +++ b/crypto/camellia/cmll_ofb.c
 @@ -1,107 +1,10 @@
 -/* ====================================================================
 - * Copyright (c) 2006 The OpenSSL Project.  All rights reserved.
-+/*
-+ * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -36822,7 +41132,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -36836,7 +41148,7 @@
  #include <openssl/camellia.h>
 diff --git a/crypto/cast/Makefile.in b/crypto/cast/Makefile.in
 deleted file mode 100644
-index 218c480d1a2c..000000000000
+index 218c480..0000000
 --- a/crypto/cast/Makefile.in
 +++ /dev/null
 @@ -1,51 +0,0 @@
@@ -36892,7 +41204,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/cast/asm/cast-586.pl b/crypto/cast/asm/cast-586.pl
-index 267d69976d2c..6beb9c5f2550 100644
+index 267d699..6beb9c5 100644
 --- a/crypto/cast/asm/cast-586.pl
 +++ b/crypto/cast/asm/cast-586.pl
 @@ -1,4 +1,11 @@
@@ -36909,15 +41221,13 @@
  # This flag makes the inner loop one cycle longer, but generates 
  # code that runs %30 faster on the pentium pro/II, 44% faster
 diff --git a/crypto/cast/c_cfb64.c b/crypto/cast/c_cfb64.c
-index 32641b5a22c0..bd7cb2f46843 100644
+index 32641b5..bd7cb2f 100644
 --- a/crypto/cast/c_cfb64.c
 +++ b/crypto/cast/c_cfb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -36965,7 +41275,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -36978,7 +41290,7 @@
  
  #include <openssl/cast.h>
 diff --git a/crypto/cast/c_ecb.c b/crypto/cast/c_ecb.c
-index 1e736f0664d9..da4179438f1d 100644
+index 1e736f0..da41794 100644
 --- a/crypto/cast/c_ecb.c
 +++ b/crypto/cast/c_ecb.c
 @@ -1,58 +1,10 @@
@@ -37047,7 +41359,7 @@
  
  #include <openssl/cast.h>
 diff --git a/crypto/cast/c_enc.c b/crypto/cast/c_enc.c
-index 8fe3b26f9bee..9a858125919c 100644
+index 8fe3b26..9a85812 100644
 --- a/crypto/cast/c_enc.c
 +++ b/crypto/cast/c_enc.c
 @@ -1,58 +1,10 @@
@@ -37116,15 +41428,13 @@
  
  #include <openssl/cast.h>
 diff --git a/crypto/cast/c_ofb64.c b/crypto/cast/c_ofb64.c
-index c7b42591d04f..dffb074762c2 100644
+index c7b4259..dffb074 100644
 --- a/crypto/cast/c_ofb64.c
 +++ b/crypto/cast/c_ofb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -37172,7 +41482,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -37185,7 +41497,7 @@
  
  #include <openssl/cast.h>
 diff --git a/crypto/cast/c_skey.c b/crypto/cast/c_skey.c
-index 5ce379b6a3fc..962d2a60b4c5 100644
+index 5ce379b..962d2a6 100644
 --- a/crypto/cast/c_skey.c
 +++ b/crypto/cast/c_skey.c
 @@ -1,58 +1,10 @@
@@ -37254,7 +41566,7 @@
  
  #include <openssl/cast.h>
 diff --git a/crypto/cast/cast_lcl.h b/crypto/cast/cast_lcl.h
-index 4a3c603507e4..504232a1a910 100644
+index 4a3c603..504232a 100644
 --- a/crypto/cast/cast_lcl.h
 +++ b/crypto/cast/cast_lcl.h
 @@ -1,58 +1,10 @@
@@ -37323,7 +41635,7 @@
  
  #include "e_os.h"
 diff --git a/crypto/cast/cast_s.h b/crypto/cast/cast_s.h
-index 6eb0542d6833..d9fd6ac416e7 100644
+index 6eb0542..d9fd6ac 100644
 --- a/crypto/cast/cast_s.h
 +++ b/crypto/cast/cast_s.h
 @@ -1,59 +1,12 @@
@@ -37395,7 +41707,7 @@
      0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949,
 diff --git a/crypto/cast/casts.cpp b/crypto/cast/casts.cpp
 deleted file mode 100644
-index 8d7bd468d229..000000000000
+index 8d7bd46..0000000
 --- a/crypto/cast/casts.cpp
 +++ /dev/null
 @@ -1,70 +0,0 @@
@@ -37471,7 +41783,7 @@
 -
 diff --git a/crypto/chacha/Makefile.in b/crypto/chacha/Makefile.in
 deleted file mode 100644
-index 067fbed428b5..000000000000
+index 067fbed..0000000
 --- a/crypto/chacha/Makefile.in
 +++ /dev/null
 @@ -1,57 +0,0 @@
@@ -37533,7 +41845,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/chacha/asm/chacha-armv4.pl b/crypto/chacha/asm/chacha-armv4.pl
-index c9083998349c..5b3e7be78108 100755
+index c908399..5b3e7be 100755
 --- a/crypto/chacha/asm/chacha-armv4.pl
 +++ b/crypto/chacha/asm/chacha-armv4.pl
 @@ -1,4 +1,11 @@
@@ -37550,7 +41862,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/chacha/asm/chacha-armv8.pl b/crypto/chacha/asm/chacha-armv8.pl
-index 16cb1fad3494..03e8616a035f 100755
+index 16cb1fa..03e8616 100755
 --- a/crypto/chacha/asm/chacha-armv8.pl
 +++ b/crypto/chacha/asm/chacha-armv8.pl
 @@ -1,4 +1,11 @@
@@ -37567,7 +41879,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/chacha/asm/chacha-c64xplus.pl b/crypto/chacha/asm/chacha-c64xplus.pl
-index b2ea40666f0a..bdb380442c4a 100755
+index b2ea406..bdb3804 100755
 --- a/crypto/chacha/asm/chacha-c64xplus.pl
 +++ b/crypto/chacha/asm/chacha-c64xplus.pl
 @@ -1,4 +1,11 @@
@@ -37584,7 +41896,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/chacha/asm/chacha-ppc.pl b/crypto/chacha/asm/chacha-ppc.pl
-index 2bb3fce8ed97..b978f58c7efc 100755
+index 2bb3fce..b978f58 100755
 --- a/crypto/chacha/asm/chacha-ppc.pl
 +++ b/crypto/chacha/asm/chacha-ppc.pl
 @@ -1,4 +1,11 @@
@@ -37614,7 +41926,7 @@
  	b	Loop_outer_vmx
  
 diff --git a/crypto/chacha/asm/chacha-s390x.pl b/crypto/chacha/asm/chacha-s390x.pl
-index 42faadcd7f57..c31526473dba 100755
+index 42faadc..c315264 100755
 --- a/crypto/chacha/asm/chacha-s390x.pl
 +++ b/crypto/chacha/asm/chacha-s390x.pl
 @@ -1,4 +1,11 @@
@@ -37649,7 +41961,7 @@
  
  .align	16
 diff --git a/crypto/chacha/asm/chacha-x86.pl b/crypto/chacha/asm/chacha-x86.pl
-index 8b9696ff0252..3c6e67d9c873 100755
+index 8b9696f..3c6e67d 100755
 --- a/crypto/chacha/asm/chacha-x86.pl
 +++ b/crypto/chacha/asm/chacha-x86.pl
 @@ -1,4 +1,11 @@
@@ -37686,7 +41998,7 @@
  my ($out,$inp,$len)=("edi","esi","ecx");
  
 diff --git a/crypto/chacha/asm/chacha-x86_64.pl b/crypto/chacha/asm/chacha-x86_64.pl
-index 4b36b5825c45..4b1750cd5dea 100755
+index 4b36b58..4b1750c 100755
 --- a/crypto/chacha/asm/chacha-x86_64.pl
 +++ b/crypto/chacha/asm/chacha-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -37712,7 +42024,7 @@
  
  # input parameter block
 diff --git a/crypto/chacha/chacha_enc.c b/crypto/chacha/chacha_enc.c
-index 281a9be8a808..239f68ab825e 100644
+index 281a9be..239f68a 100644
 --- a/crypto/chacha/chacha_enc.c
 +++ b/crypto/chacha/chacha_enc.c
 @@ -1,50 +1,10 @@
@@ -37790,7 +42102,7 @@
  }
 diff --git a/crypto/cmac/Makefile.in b/crypto/cmac/Makefile.in
 deleted file mode 100644
-index 1d6f0bd52caf..000000000000
+index 1d6f0bd..0000000
 --- a/crypto/cmac/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -37838,7 +42150,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/cmac/cm_ameth.c b/crypto/cmac/cm_ameth.c
-index d9a550e72b68..a58454a089c6 100644
+index d9a550e..a58454a 100644
 --- a/crypto/cmac/cm_ameth.c
 +++ b/crypto/cmac/cm_ameth.c
 @@ -1,54 +1,10 @@
@@ -37848,8 +42160,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2010 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -37880,7 +42191,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -37902,7 +42214,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/cmac/cm_pmeth.c b/crypto/cmac/cm_pmeth.c
-index f00a32eb2f3a..10748f148859 100644
+index f00a32e..10748f1 100644
 --- a/crypto/cmac/cm_pmeth.c
 +++ b/crypto/cmac/cm_pmeth.c
 @@ -1,54 +1,10 @@
@@ -37912,8 +42224,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2010 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -37944,7 +42255,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -37966,7 +42278,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/cmac/cmac.c b/crypto/cmac/cmac.c
-index cb30e6d5be8b..c4f13a069f32 100644
+index cb30e6d..c4f13a0 100644
 --- a/crypto/cmac/cmac.c
 +++ b/crypto/cmac/cmac.c
 @@ -1,54 +1,10 @@
@@ -37976,8 +42288,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2010 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38008,7 +42319,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38031,7 +42343,7 @@
  #include <stdio.h>
 diff --git a/crypto/cms/Makefile.in b/crypto/cms/Makefile.in
 deleted file mode 100644
-index 19a50b21e79b..000000000000
+index 19a50b2..0000000
 --- a/crypto/cms/Makefile.in
 +++ /dev/null
 @@ -1,49 +0,0 @@
@@ -38085,7 +42397,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/cms/cms_asn1.c b/crypto/cms/cms_asn1.c
-index d83993584ca1..81e9a53069af 100644
+index d839935..81e9a53 100644
 --- a/crypto/cms/cms_asn1.c
 +++ b/crypto/cms/cms_asn1.c
 @@ -1,54 +1,10 @@
@@ -38095,8 +42407,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38127,7 +42438,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38149,7 +42461,7 @@
  
  #include <openssl/asn1t.h>
 diff --git a/crypto/cms/cms_att.c b/crypto/cms/cms_att.c
-index 834a254f5da4..5c560b451c67 100644
+index 834a254..5c560b4 100644
 --- a/crypto/cms/cms_att.c
 +++ b/crypto/cms/cms_att.c
 @@ -1,54 +1,10 @@
@@ -38159,8 +42471,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38191,7 +42502,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38213,7 +42525,7 @@
  
  #include <openssl/asn1t.h>
 diff --git a/crypto/cms/cms_cd.c b/crypto/cms/cms_cd.c
-index 9e120780ff09..c0cb368d0fd1 100644
+index 9e12078..c0cb368 100644
 --- a/crypto/cms/cms_cd.c
 +++ b/crypto/cms/cms_cd.c
 @@ -1,54 +1,10 @@
@@ -38223,8 +42535,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38255,7 +42566,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38277,7 +42589,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/cms/cms_dd.c b/crypto/cms/cms_dd.c
-index 54444b1b65c7..5da6802fcd5e 100644
+index 54444b1..5da6802 100644
 --- a/crypto/cms/cms_dd.c
 +++ b/crypto/cms/cms_dd.c
 @@ -1,54 +1,10 @@
@@ -38287,8 +42599,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38319,7 +42630,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38341,7 +42653,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/cms/cms_enc.c b/crypto/cms/cms_enc.c
-index 23adc2ffdabd..ed913426bc91 100644
+index 23adc2f..ed91342 100644
 --- a/crypto/cms/cms_enc.c
 +++ b/crypto/cms/cms_enc.c
 @@ -1,54 +1,10 @@
@@ -38351,8 +42663,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38374,7 +42685,8 @@
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
 - *    licensing at OpenSSL.org.
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 5. Products derived from this software may not be called "OpenSSL"
 - *    nor may "OpenSSL" appear in their names without prior written
 - *    permission of the OpenSSL Project.
@@ -38427,7 +42739,7 @@
      ok = 1;
  
 diff --git a/crypto/cms/cms_env.c b/crypto/cms/cms_env.c
-index c54667f5df50..111b2aa5735f 100644
+index c54667f..8d45943 100644
 --- a/crypto/cms/cms_env.c
 +++ b/crypto/cms/cms_env.c
 @@ -1,54 +1,10 @@
@@ -38437,8 +42749,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38460,7 +42771,8 @@
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
 - *    licensing at OpenSSL.org.
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 5. Products derived from this software may not be called "OpenSSL"
 - *    nor may "OpenSSL" appear in their names without prior written
 - *    permission of the OpenSSL Project.
@@ -38490,8 +42802,29 @@
   */
  
  #include "internal/cryptlib.h"
+@@ -57,7 +13,6 @@
+ #include <openssl/x509v3.h>
+ #include <openssl/err.h>
+ #include <openssl/cms.h>
+-#include <openssl/rand.h>
+ #include <openssl/aes.h>
+ #include "cms_lcl.h"
+ #include "internal/asn1_int.h"
+@@ -877,10 +832,10 @@ static void cms_env_set_version(CMS_EnvelopedData *env)
+             env->version = 2;
+         }
+     }
+-    if (env->version == 2)
+-        return;
+     if (env->originatorInfo || env->unprotectedAttrs)
+         env->version = 2;
++    if (env->version == 2)
++        return;
+     env->version = 0;
+ }
+ 
 diff --git a/crypto/cms/cms_err.c b/crypto/cms/cms_err.c
-index 8d43bb1ff5e2..cfda0190c244 100644
+index 8d43bb1..cfda019 100644
 --- a/crypto/cms/cms_err.c
 +++ b/crypto/cms/cms_err.c
 @@ -1,61 +1,11 @@
@@ -38572,7 +42905,7 @@
      {ERR_REASON(CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE),
       "error reading messagedigest attribute"},
 diff --git a/crypto/cms/cms_ess.c b/crypto/cms/cms_ess.c
-index 353ec0e858fb..4780231c22bb 100644
+index 353ec0e..4780231 100644
 --- a/crypto/cms/cms_ess.c
 +++ b/crypto/cms/cms_ess.c
 @@ -1,54 +1,10 @@
@@ -38582,8 +42915,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38614,7 +42946,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38636,7 +42969,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/cms/cms_io.c b/crypto/cms/cms_io.c
-index bac583e3ba95..d18f980a9732 100644
+index bac583e..d18f980 100644
 --- a/crypto/cms/cms_io.c
 +++ b/crypto/cms/cms_io.c
 @@ -1,54 +1,10 @@
@@ -38646,8 +42979,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38678,7 +43010,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38700,7 +43033,7 @@
  
  #include <openssl/asn1t.h>
 diff --git a/crypto/cms/cms_kari.c b/crypto/cms/cms_kari.c
-index 562b1e506c76..8f44c815c961 100644
+index 562b1e5..3bc46fe 100644
 --- a/crypto/cms/cms_kari.c
 +++ b/crypto/cms/cms_kari.c
 @@ -1,54 +1,10 @@
@@ -38710,8 +43043,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2013 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38742,7 +43074,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38763,8 +43096,16 @@
   */
  
  #include "internal/cryptlib.h"
+@@ -57,7 +13,6 @@
+ #include <openssl/x509v3.h>
+ #include <openssl/err.h>
+ #include <openssl/cms.h>
+-#include <openssl/rand.h>
+ #include <openssl/aes.h>
+ #include "cms_lcl.h"
+ #include "internal/asn1_int.h"
 diff --git a/crypto/cms/cms_lcl.h b/crypto/cms/cms_lcl.h
-index 7f04f20c70c9..d0c0e81363ba 100644
+index 7f04f20..d0c0e81 100644
 --- a/crypto/cms/cms_lcl.h
 +++ b/crypto/cms/cms_lcl.h
 @@ -1,54 +1,10 @@
@@ -38774,8 +43115,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38806,7 +43146,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38828,7 +43169,7 @@
  
  #ifndef HEADER_CMS_LCL_H
 diff --git a/crypto/cms/cms_lib.c b/crypto/cms/cms_lib.c
-index a0a1adb38adf..53eade31417b 100644
+index a0a1adb..86d9299 100644
 --- a/crypto/cms/cms_lib.c
 +++ b/crypto/cms/cms_lib.c
 @@ -1,54 +1,10 @@
@@ -38838,8 +43179,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38870,7 +43210,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -38891,8 +43232,35 @@
   */
  
  #include <openssl/asn1t.h>
+@@ -63,7 +19,7 @@
+ IMPLEMENT_ASN1_FUNCTIONS(CMS_ContentInfo)
+ IMPLEMENT_ASN1_PRINT_FUNCTION(CMS_ContentInfo)
+ 
+-const ASN1_OBJECT *CMS_get0_type(CMS_ContentInfo *cms)
++const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms)
+ {
+     return cms->contentType;
+ }
+@@ -389,6 +345,8 @@ static STACK_OF(CMS_CertificateChoices)
+         return &cms->d.signedData->certificates;
+ 
+     case NID_pkcs7_enveloped:
++        if (cms->d.envelopedData->originatorInfo == NULL)
++            return NULL;
+         return &cms->d.envelopedData->originatorInfo->certificates;
+ 
+     default:
+@@ -464,6 +422,8 @@ static STACK_OF(CMS_RevocationInfoChoice)
+         return &cms->d.signedData->crls;
+ 
+     case NID_pkcs7_enveloped:
++        if (cms->d.envelopedData->originatorInfo == NULL)
++            return NULL;
+         return &cms->d.envelopedData->originatorInfo->crls;
+ 
+     default:
 diff --git a/crypto/cms/cms_pwri.c b/crypto/cms/cms_pwri.c
-index 5ab20e2bfad0..0571bb8026a5 100644
+index 5ab20e2..0571bb8 100644
 --- a/crypto/cms/cms_pwri.c
 +++ b/crypto/cms/cms_pwri.c
 @@ -1,54 +1,10 @@
@@ -38902,8 +43270,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2009 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -38929,7 +43296,8 @@
 - * 5. Products derived from this software may not be called "OpenSSL"
 - *    nor may "OpenSSL" appear in their names without prior written
 - *    permission of the OpenSSL Project.
-- *
++ * Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 6. Redistributions of any form whatsoever must retain the following
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
@@ -38989,7 +43357,7 @@
      if (!EVP_CipherInit_ex(kekctx, kekcipher, NULL, NULL, NULL, en_de))
          goto err;
 diff --git a/crypto/cms/cms_sd.c b/crypto/cms/cms_sd.c
-index 151f40f9a54f..6c3db3b425ba 100644
+index 151f40f..6c3db3b 100644
 --- a/crypto/cms/cms_sd.c
 +++ b/crypto/cms/cms_sd.c
 @@ -1,54 +1,10 @@
@@ -38999,8 +43367,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -39017,7 +43384,8 @@
 - *    software must display the following acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
@@ -39062,7 +43430,7 @@
  
      if (!cms_DigestAlgorithm_find_ctx(mctx, chain, si->digestAlgorithm))
 diff --git a/crypto/cms/cms_smime.c b/crypto/cms/cms_smime.c
-index 98054b36b541..4a8f819f24dd 100644
+index 98054b3..4a8f819 100644
 --- a/crypto/cms/cms_smime.c
 +++ b/crypto/cms/cms_smime.c
 @@ -1,54 +1,10 @@
@@ -39072,8 +43440,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -39104,7 +43471,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -39127,7 +43495,7 @@
  #include "internal/cryptlib.h"
 diff --git a/crypto/comp/Makefile.in b/crypto/comp/Makefile.in
 deleted file mode 100644
-index 0673d469d978..000000000000
+index 0673d46..0000000
 --- a/crypto/comp/Makefile.in
 +++ /dev/null
 @@ -1,46 +0,0 @@
@@ -39178,7 +43546,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/comp/c_zlib.c b/crypto/comp/c_zlib.c
-index 6dd76846c5d7..2f38c2e94cef 100644
+index 6dd7684..2f38c2e 100644
 --- a/crypto/comp/c_zlib.c
 +++ b/crypto/comp/c_zlib.c
 @@ -1,55 +1,10 @@
@@ -39244,7 +43612,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/comp/comp_err.c b/crypto/comp/comp_err.c
-index 96f2a9971bbc..0233e940f637 100644
+index 96f2a99..0233e94 100644
 --- a/crypto/comp/comp_err.c
 +++ b/crypto/comp/comp_err.c
 @@ -1,61 +1,11 @@
@@ -39317,7 +43685,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/comp/comp_lcl.h b/crypto/comp/comp_lcl.h
-index 613437e05af8..aa45fca238da 100644
+index 613437e..aa45fca 100644
 --- a/crypto/comp/comp_lcl.h
 +++ b/crypto/comp/comp_lcl.h
 @@ -1,57 +1,12 @@
@@ -39385,7 +43753,7 @@
      int type;                   /* NID for compression library */
      const char *name;           /* A text string to identify the library */
 diff --git a/crypto/comp/comp_lib.c b/crypto/comp/comp_lib.c
-index 83fea93cb80d..32afd0dba818 100644
+index 83fea93..32afd0d 100644
 --- a/crypto/comp/comp_lib.c
 +++ b/crypto/comp/comp_lib.c
 @@ -1,55 +1,10 @@
@@ -39452,7 +43820,7 @@
  #include <stdio.h>
 diff --git a/crypto/conf/Makefile.in b/crypto/conf/Makefile.in
 deleted file mode 100644
-index 5acaa1c403e7..000000000000
+index 5acaa1c..0000000
 --- a/crypto/conf/Makefile.in
 +++ /dev/null
 @@ -1,46 +0,0 @@
@@ -39503,7 +43871,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/conf/conf_api.c b/crypto/conf/conf_api.c
-index 5365c97e7816..5535416ab3bf 100644
+index 5365c97..5535416 100644
 --- a/crypto/conf/conf_api.c
 +++ b/crypto/conf/conf_api.c
 @@ -1,58 +1,10 @@
@@ -39581,7 +43949,7 @@
  
  static int conf_value_cmp(const CONF_VALUE *a, const CONF_VALUE *b)
 diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c
-index 0f3f52abd3dd..8861b3a5a062 100644
+index 0f3f52a..8861b3a 100644
 --- a/crypto/conf/conf_def.c
 +++ b/crypto/conf/conf_def.c
 @@ -1,58 +1,10 @@
@@ -39650,7 +44018,7 @@
  
  /* Part of the code in here was originally in conf.c, which is now removed */
 diff --git a/crypto/conf/conf_def.h b/crypto/conf/conf_def.h
-index 3ebb0f7a736f..da4767e196cb 100644
+index 3ebb0f7..da4767e 100644
 --- a/crypto/conf/conf_def.h
 +++ b/crypto/conf/conf_def.h
 @@ -1,63 +1,12 @@
@@ -39756,7 +44124,7 @@
  
  static const unsigned short CONF_type_default[256] = {
 diff --git a/crypto/conf/conf_err.c b/crypto/conf/conf_err.c
-index 80ea3ce79862..31bb15c34a7a 100644
+index 80ea3ce..31bb15c 100644
 --- a/crypto/conf/conf_err.c
 +++ b/crypto/conf/conf_err.c
 @@ -1,61 +1,11 @@
@@ -39855,7 +44223,7 @@
      {ERR_REASON(CONF_R_MODULE_INITIALIZATION_ERROR),
       "module initialization error"},
 diff --git a/crypto/conf/conf_lib.c b/crypto/conf/conf_lib.c
-index f1977148b47a..c99837387eb0 100644
+index f197714..3532114 100644
 --- a/crypto/conf/conf_lib.c
 +++ b/crypto/conf/conf_lib.c
 @@ -1,59 +1,10 @@
@@ -39931,33 +44299,40 @@
  
  static CONF_METHOD *default_CONF_method = NULL;
  
-@@ -388,11 +340,21 @@ OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void)
+@@ -388,16 +340,26 @@ OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void)
  
  
  #ifndef OPENSSL_NO_STDIO
 -void OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
 -                                      const char *config_file)
-+int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
-+                                     const char *config_file)
++int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings,
++                                    const char *appname)
  {
-+    char *new_config_file = NULL;
+-    free(settings->config_name);
+-    settings->config_name = config_file == NULL ? NULL : strdup(config_file);
++    char *newappname = NULL;
 +
-+    if (config_file != NULL) {
-+        new_config_file = strdup(config_file);
-+        if (new_config_file == NULL)
++    if (appname != NULL) {
++        newappname = strdup(appname);
++        if (newappname == NULL)
 +            return 0;
 +    }
 +
-     free(settings->config_name);
--    settings->config_name = config_file == NULL ? NULL : strdup(config_file);
-+    settings->config_name = new_config_file;
++    free(settings->appname);
++    settings->appname = newappname;
 +
 +    return 1;
  }
  #endif
  
+ void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings)
+ {
+-    free(settings->config_name);
++    free(settings->appname);
+     free(settings);
+ }
 diff --git a/crypto/conf/conf_mall.c b/crypto/conf/conf_mall.c
-index a5c961df02fe..4e7a434e0e4d 100644
+index a5c961d..4e7a434 100644
 --- a/crypto/conf/conf_mall.c
 +++ b/crypto/conf/conf_mall.c
 @@ -1,59 +1,10 @@
@@ -40026,7 +44401,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/conf/conf_mod.c b/crypto/conf/conf_mod.c
-index cef805dfcaf1..6235f50f849f 100644
+index cef805d..d01d20e 100644
 --- a/crypto/conf/conf_mod.c
 +++ b/crypto/conf/conf_mod.c
 @@ -1,59 +1,10 @@
@@ -40094,7 +44469,53 @@
   */
  
  #include <stdio.h>
-@@ -286,8 +237,13 @@ static CONF_MODULE *module_add(DSO *dso, const char *name,
+@@ -105,15 +56,16 @@ static STACK_OF(CONF_IMODULE) *initialized_modules = NULL;
+ 
+ static void module_free(CONF_MODULE *md);
+ static void module_finish(CONF_IMODULE *imod);
+-static int module_run(const CONF *cnf, char *name, char *value,
++static int module_run(const CONF *cnf, const char *name, const char *value,
+                       unsigned long flags);
+ static CONF_MODULE *module_add(DSO *dso, const char *name,
+                                conf_init_func *ifunc,
+                                conf_finish_func *ffunc);
+-static CONF_MODULE *module_find(char *name);
+-static int module_init(CONF_MODULE *pmod, char *name, char *value,
++static CONF_MODULE *module_find(const char *name);
++static int module_init(CONF_MODULE *pmod, const char *name, const char *value,
+                        const CONF *cnf);
+-static CONF_MODULE *module_load_dso(const CONF *cnf, char *name, char *value);
++static CONF_MODULE *module_load_dso(const CONF *cnf, const char *name, 
++                                    const char *value);
+ 
+ /* Main function: load modules from a CONF structure */
+ 
+@@ -193,7 +145,7 @@ int CONF_modules_load_file(const char *filename, const char *appname,
+     return ret;
+ }
+ 
+-static int module_run(const CONF *cnf, char *name, char *value,
++static int module_run(const CONF *cnf, const char *name, const char *value,
+                       unsigned long flags)
+ {
+     CONF_MODULE *md;
+@@ -229,12 +181,13 @@ static int module_run(const CONF *cnf, char *name, char *value,
+ }
+ 
+ /* Load a module from a DSO */
+-static CONF_MODULE *module_load_dso(const CONF *cnf, char *name, char *value)
++static CONF_MODULE *module_load_dso(const CONF *cnf, 
++                                    const char *name, const char *value)
+ {
+     DSO *dso = NULL;
+     conf_init_func *ifunc;
+     conf_finish_func *ffunc;
+-    char *path = NULL;
++    const char *path = NULL;
+     int errcode = 0;
+     CONF_MODULE *md;
+     /* Look for alternative path in module section */
+@@ -286,8 +239,13 @@ static CONF_MODULE *module_add(DSO *dso, const char *name,
      tmod->name = OPENSSL_strdup(name);
      tmod->init = ifunc;
      tmod->finish = ffunc;
@@ -40108,8 +44529,26 @@
          OPENSSL_free(tmod);
          return NULL;
      }
+@@ -301,7 +259,7 @@ static CONF_MODULE *module_add(DSO *dso, const char *name,
+  * initialized more than once.
+  */
+ 
+-static CONF_MODULE *module_find(char *name)
++static CONF_MODULE *module_find(const char *name)
+ {
+     CONF_MODULE *tmod;
+     int i, nchar;
+@@ -324,7 +282,7 @@ static CONF_MODULE *module_find(char *name)
+ }
+ 
+ /* initialize a module */
+-static int module_init(CONF_MODULE *pmod, char *name, char *value,
++static int module_init(CONF_MODULE *pmod, const char *name, const char *value,
+                        const CONF *cnf)
+ {
+     int ret = 1;
 diff --git a/crypto/conf/conf_sap.c b/crypto/conf/conf_sap.c
-index ab034c2111f8..a1c25b3ee676 100644
+index ab034c2..bed95ab 100644
 --- a/crypto/conf/conf_sap.c
 +++ b/crypto/conf/conf_sap.c
 @@ -1,59 +1,10 @@
@@ -40177,8 +44616,40 @@
   */
  
  #include <stdio.h>
+@@ -73,18 +24,18 @@
+ static int openssl_configured = 0;
+ 
+ #if OPENSSL_API_COMPAT < 0x10100000L
+-void OPENSSL_config(const char *config_name)
++void OPENSSL_config(const char *appname)
+ {
+     OPENSSL_INIT_SETTINGS settings;
+ 
+     memset(&settings, 0, sizeof(settings));
+-    if (config_name != NULL)
+-        settings.config_name = strdup(config_name);
++    if (appname != NULL)
++        settings.appname = strdup(appname);
+     OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, &settings);
+ }
+ #endif
+ 
+-void openssl_config_int(const char *config_name)
++void openssl_config_int(const char *appname)
+ {
+     if (openssl_configured)
+         return;
+@@ -96,7 +47,7 @@ void openssl_config_int(const char *config_name)
+ #endif
+     ERR_clear_error();
+ #ifndef OPENSSL_SYS_UEFI
+-    CONF_modules_load_file(NULL, config_name,
++    CONF_modules_load_file(NULL, appname,
+                                CONF_MFLAGS_DEFAULT_SECTION |
+                                CONF_MFLAGS_IGNORE_MISSING_FILE);
+ #endif
 diff --git a/crypto/conf/keysets.pl b/crypto/conf/keysets.pl
-index 087c087c6219..5af08ae20ab1 100644
+index 087c087..5af08ae 100644
 --- a/crypto/conf/keysets.pl
 +++ b/crypto/conf/keysets.pl
 @@ -1,4 +1,10 @@
@@ -40299,7 +44770,7 @@
  
  EOF
 diff --git a/crypto/cpt_err.c b/crypto/cpt_err.c
-index 8ad93a9738e3..3c6e8d53d23a 100644
+index 8ad93a9..3c6e8d5 100644
 --- a/crypto/cpt_err.c
 +++ b/crypto/cpt_err.c
 @@ -1,61 +1,11 @@
@@ -40396,7 +44867,7 @@
  };
  
 diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c
-index 7e1d780f6c91..8e189eca64fe 100644
+index 7e1d780..01b8ce5 100644
 --- a/crypto/cryptlib.c
 +++ b/crypto/cryptlib.c
 @@ -1,112 +1,12 @@
@@ -40519,7 +44990,7 @@
  /* ====================================================================
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   * ECDH support in OpenSSL originally developed by
-@@ -117,7 +17,6 @@
+@@ -117,15 +17,10 @@
  #include <openssl/safestack.h>
  
  #if     defined(__i386)   || defined(__i386__)   || defined(_M_IX86) || \
@@ -40527,22 +44998,43 @@
          defined(__x86_64) || defined(__x86_64__) || \
          defined(_M_AMD64) || defined(_M_X64)
  
-@@ -417,6 +316,7 @@ void OPENSSL_die(const char *message, const char *file, int line)
+ extern unsigned int OPENSSL_ia32cap_P[4];
+-unsigned int *OPENSSL_ia32cap_loc(void)
+-{
+-    return OPENSSL_ia32cap_P;
+-}
+ 
+ # if defined(OPENSSL_CPUID_OBJ) && !defined(OPENSSL_NO_ASM) && !defined(I386_ONLY)
+ #include <stdio.h>
+@@ -181,12 +76,6 @@ void OPENSSL_cpuid_setup(void)
+ # else
+ unsigned int OPENSSL_ia32cap_P[4];
+ # endif
+-
+-#else
+-unsigned int *OPENSSL_ia32cap_loc(void)
+-{
+-    return NULL;
+-}
  #endif
+ int OPENSSL_NONPIC_relocated = 0;
+ #if !defined(OPENSSL_CPUID_SETUP) && !defined(OPENSSL_CPUID_OBJ)
+@@ -417,6 +306,7 @@ void OPENSSL_die(const char *message, const char *file, int line)
+ #endif
  }
  
 +#if !defined(OPENSSL_CPUID_OBJ)
  /* volatile unsigned char* pointers are there because
   * 1. Accessing a variable declared volatile via a pointer
   *    that lacks a volatile qualifier causes undefined behavior.
-@@ -448,3 +348,4 @@ int CRYPTO_memcmp(const volatile void * volatile in_a,
+@@ -448,3 +338,4 @@ int CRYPTO_memcmp(const volatile void * volatile in_a,
  
      return x;
  }
 +#endif
 diff --git a/crypto/ct/Makefile.in b/crypto/ct/Makefile.in
 deleted file mode 100644
-index 794efbc6d777..000000000000
+index 794efbc..0000000
 --- a/crypto/ct/Makefile.in
 +++ /dev/null
 @@ -1,45 +0,0 @@
@@ -40592,7 +45084,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/ct/ct_b64.c b/crypto/ct/ct_b64.c
-index a1693a6c28aa..d6279d22981e 100644
+index a1693a6..d6279d2 100644
 --- a/crypto/ct/ct_b64.c
 +++ b/crypto/ct/ct_b64.c
 @@ -1,59 +1,10 @@
@@ -40661,7 +45153,7 @@
  
  #include <limits.h>
 diff --git a/crypto/ct/ct_err.c b/crypto/ct/ct_err.c
-index 175439507e56..8581dbb79192 100644
+index 1754395..8581dbb 100644
 --- a/crypto/ct/ct_err.c
 +++ b/crypto/ct/ct_err.c
 @@ -1,61 +1,11 @@
@@ -40794,7 +45286,7 @@
       "unrecognized signature nid"},
      {ERR_REASON(CT_R_UNSUPPORTED_ENTRY_TYPE), "unsupported entry type"},
 diff --git a/crypto/ct/ct_locl.h b/crypto/ct/ct_locl.h
-index b1a65d626277..e3ef4b749408 100644
+index b1a65d6..1180455 100644
 --- a/crypto/ct/ct_locl.h
 +++ b/crypto/ct/ct_locl.h
 @@ -1,53 +1,10 @@
@@ -40803,8 +45295,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2016 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -40835,7 +45326,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -40856,8 +45348,14 @@
   */
  
  #include <stddef.h>
+@@ -211,4 +168,4 @@ __owur int SCT_signature_is_complete(const SCT *sct);
+ /*
+  * Handlers for Certificate Transparency X509v3/OCSP extensions
+  */
+-extern const X509V3_EXT_METHOD v3_ct_scts[];
++extern const X509V3_EXT_METHOD v3_ct_scts[3];
 diff --git a/crypto/ct/ct_log.c b/crypto/ct/ct_log.c
-index 47bd08fc2498..6fc21b7269e3 100644
+index 47bd08f..6fc21b7 100644
 --- a/crypto/ct/ct_log.c
 +++ b/crypto/ct/ct_log.c
 @@ -1,56 +1,10 @@
@@ -40924,7 +45422,7 @@
  
  #include <stdlib.h>
 diff --git a/crypto/ct/ct_oct.c b/crypto/ct/ct_oct.c
-index ece353bdac43..cacc3bd2b4fd 100644
+index ece353b..cacc3bd 100644
 --- a/crypto/ct/ct_oct.c
 +++ b/crypto/ct/ct_oct.c
 @@ -1,59 +1,10 @@
@@ -41005,7 +45503,7 @@
  
   err:
 diff --git a/crypto/ct/ct_policy.c b/crypto/ct/ct_policy.c
-index f97cfdfabd68..4c4f9b3e3b6d 100644
+index f97cfdf..4c4f9b3 100644
 --- a/crypto/ct/ct_policy.c
 +++ b/crypto/ct/ct_policy.c
 @@ -1,55 +1,11 @@
@@ -41072,7 +45570,7 @@
  #ifdef OPENSSL_NO_CT
  # error "CT is disabled"
 diff --git a/crypto/ct/ct_prn.c b/crypto/ct/ct_prn.c
-index 5004ae0b940e..2786746997b3 100644
+index 5004ae0..2786746 100644
 --- a/crypto/ct/ct_prn.c
 +++ b/crypto/ct/ct_prn.c
 @@ -1,59 +1,10 @@
@@ -41141,7 +45639,7 @@
  
  #ifdef OPENSSL_NO_CT
 diff --git a/crypto/ct/ct_sct.c b/crypto/ct/ct_sct.c
-index 1fc745612914..1aec3e2541db 100644
+index 1fc7456..1aec3e2 100644
 --- a/crypto/ct/ct_sct.c
 +++ b/crypto/ct/ct_sct.c
 @@ -1,59 +1,10 @@
@@ -41210,7 +45708,7 @@
  
  #ifdef OPENSSL_NO_CT
 diff --git a/crypto/ct/ct_sct_ctx.c b/crypto/ct/ct_sct_ctx.c
-index 13937c75cad0..28fd04485fa3 100644
+index 13937c7..28fd044 100644
 --- a/crypto/ct/ct_sct_ctx.c
 +++ b/crypto/ct/ct_sct_ctx.c
 @@ -1,59 +1,10 @@
@@ -41279,7 +45777,7 @@
  
  #ifdef OPENSSL_NO_CT
 diff --git a/crypto/ct/ct_vfy.c b/crypto/ct/ct_vfy.c
-index 71c03611261f..8305ce678eae 100644
+index 71c0361..8305ce6 100644
 --- a/crypto/ct/ct_vfy.c
 +++ b/crypto/ct/ct_vfy.c
 @@ -1,59 +1,10 @@
@@ -41348,7 +45846,7 @@
  
  #include <string.h>
 diff --git a/crypto/ct/ct_x509v3.c b/crypto/ct/ct_x509v3.c
-index ed361dc7f153..4298e1eddb9a 100644
+index ed361dc..805ada0 100644
 --- a/crypto/ct/ct_x509v3.c
 +++ b/crypto/ct/ct_x509v3.c
 @@ -1,59 +1,10 @@
@@ -41416,8 +45914,17 @@
   */
  
  #ifdef OPENSSL_NO_CT
+@@ -80,7 +31,7 @@ static int i2r_SCT_LIST(X509V3_EXT_METHOD *method, STACK_OF(SCT) *sct_list,
+ }
+ 
+ /* Handlers for X509v3/OCSP Certificate Transparency extensions */
+-const X509V3_EXT_METHOD v3_ct_scts[] = {
++const X509V3_EXT_METHOD v3_ct_scts[3] = {
+     /* X509v3 extension in certificates that contains SCTs */
+     { NID_ct_precert_scts, 0, NULL,
+     NULL, (X509V3_EXT_FREE)SCT_LIST_free,
 diff --git a/crypto/cversion.c b/crypto/cversion.c
-index a13ccf429f1d..96d8a5b5e0e7 100644
+index a13ccf4..96d8a5b 100644
 --- a/crypto/cversion.c
 +++ b/crypto/cversion.c
 @@ -1,58 +1,10 @@
@@ -41487,7 +45994,7 @@
  #include "internal/cryptlib.h"
 diff --git a/crypto/des/COPYRIGHT b/crypto/des/COPYRIGHT
 deleted file mode 100644
-index 5469e1e46996..000000000000
+index 5469e1e..0000000
 --- a/crypto/des/COPYRIGHT
 +++ /dev/null
 @@ -1,50 +0,0 @@
@@ -41543,7 +46050,7 @@
 -implementation was a non-trivial and unpaid effort.
 diff --git a/crypto/des/Makefile.in b/crypto/des/Makefile.in
 deleted file mode 100644
-index 5f87f22bf701..000000000000
+index 5f87f22..0000000
 --- a/crypto/des/Makefile.in
 +++ /dev/null
 @@ -1,72 +0,0 @@
@@ -41620,7 +46127,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/des/asm/crypt586.pl b/crypto/des/asm/crypt586.pl
-index d94528ff7c28..d5911a185823 100644
+index d94528f..d5911a1 100644
 --- a/crypto/des/asm/crypt586.pl
 +++ b/crypto/des/asm/crypt586.pl
 @@ -1,10 +1,13 @@
@@ -41642,7 +46149,7 @@
  $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
  push(@INC,"${dir}","${dir}../../perlasm");
 diff --git a/crypto/des/asm/des-586.pl b/crypto/des/asm/des-586.pl
-index e56eae47ddcb..3d7c7f1b91e1 100644
+index e56eae4..3d7c7f1 100644
 --- a/crypto/des/asm/des-586.pl
 +++ b/crypto/des/asm/des-586.pl
 @@ -1,8 +1,13 @@
@@ -41662,7 +46169,7 @@
  $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
  push(@INC,"${dir}","${dir}../../perlasm");
 diff --git a/crypto/des/asm/des_enc.m4 b/crypto/des/asm/des_enc.m4
-index 3efe2465a74a..2d794d3374b3 100644
+index 3efe246..2d794d3 100644
 --- a/crypto/des/asm/des_enc.m4
 +++ b/crypto/des/asm/des_enc.m4
 @@ -1,26 +1,9 @@
@@ -41698,7 +46205,7 @@
  !  To expand the m4 macros: m4 -B 8192 des_enc.m4 > des_enc.S
  !
 diff --git a/crypto/des/asm/desboth.pl b/crypto/des/asm/desboth.pl
-index eec00886e4c6..76759fb29203 100644
+index eec0088..76759fb 100644
 --- a/crypto/des/asm/desboth.pl
 +++ b/crypto/des/asm/desboth.pl
 @@ -1,4 +1,11 @@
@@ -41715,7 +46222,7 @@
  $L="edi";
  $R="esi";
 diff --git a/crypto/des/asm/dest4-sparcv9.pl b/crypto/des/asm/dest4-sparcv9.pl
-index 858df0ba84e3..1d4f0d11bf36 100644
+index 858df0b..1d4f0d1 100644
 --- a/crypto/des/asm/dest4-sparcv9.pl
 +++ b/crypto/des/asm/dest4-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -41733,7 +46240,7 @@
  # Written by David S. Miller <davem at devemloft.net> and Andy Polyakov
 diff --git a/crypto/des/asm/readme b/crypto/des/asm/readme
 deleted file mode 100644
-index 1beafe253b17..000000000000
+index 1beafe2..0000000
 --- a/crypto/des/asm/readme
 +++ /dev/null
 @@ -1,131 +0,0 @@
@@ -41869,7 +46376,7 @@
 -raw DES at 281,000 per second on a pentium 100.
 -
 diff --git a/crypto/des/build.info b/crypto/des/build.info
-index 10927ccbabd2..c0306cfd6f5a 100644
+index 10927cc..c0306cf 100644
 --- a/crypto/des/build.info
 +++ b/crypto/des/build.info
 @@ -1,12 +1,11 @@
@@ -41890,7 +46397,7 @@
  GENERATE[des_enc-sparc.S]=asm/des_enc.m4
  GENERATE[dest4-sparcv9.S]=asm/dest4-sparcv9.pl $(PERLASM_SCHEME)
 diff --git a/crypto/des/cbc_cksm.c b/crypto/des/cbc_cksm.c
-index 1903765c7321..a7bf0689b255 100644
+index 1903765..a7bf068 100644
 --- a/crypto/des/cbc_cksm.c
 +++ b/crypto/des/cbc_cksm.c
 @@ -1,58 +1,10 @@
@@ -41959,7 +46466,7 @@
  
  #include "des_locl.h"
 diff --git a/crypto/des/cbc_enc.c b/crypto/des/cbc_enc.c
-index 5b84e844b429..92e773f81f4a 100644
+index 5b84e84..92e773f 100644
 --- a/crypto/des/cbc_enc.c
 +++ b/crypto/des/cbc_enc.c
 @@ -1,58 +1,10 @@
@@ -42028,15 +46535,13 @@
  
  #define CBC_ENC_C__DONT_UPDATE_IV
 diff --git a/crypto/des/cfb64ede.c b/crypto/des/cfb64ede.c
-index 49222451bb57..5edb979e1069 100644
+index 4922245..5edb979 100644
 --- a/crypto/des/cfb64ede.c
 +++ b/crypto/des/cfb64ede.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -42084,7 +46589,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -42097,15 +46604,13 @@
  
  #include "des_locl.h"
 diff --git a/crypto/des/cfb64enc.c b/crypto/des/cfb64enc.c
-index f9dce3dd38fa..96de51b055ec 100644
+index f9dce3d..96de51b 100644
 --- a/crypto/des/cfb64enc.c
 +++ b/crypto/des/cfb64enc.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -42153,7 +46658,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -42166,15 +46673,13 @@
  
  #include "des_locl.h"
 diff --git a/crypto/des/cfb_enc.c b/crypto/des/cfb_enc.c
-index dd213b0326fe..6c428ba61f09 100644
+index dd213b0..6c428ba 100644
 --- a/crypto/des/cfb_enc.c
 +++ b/crypto/des/cfb_enc.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -42222,7 +46727,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -42235,7 +46742,7 @@
  
  #include "e_os.h"
 diff --git a/crypto/des/des_enc.c b/crypto/des/des_enc.c
-index 1f827f216e41..600f6df4886f 100644
+index 1f827f2..600f6df 100644
 --- a/crypto/des/des_enc.c
 +++ b/crypto/des/des_enc.c
 @@ -1,58 +1,10 @@
@@ -42304,15 +46811,13 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/des/des_locl.h b/crypto/des/des_locl.h
-index 7ed783cb3764..53881d4175ea 100644
+index 7ed783c..53881d4 100644
 --- a/crypto/des/des_locl.h
 +++ b/crypto/des/des_locl.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1997 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -42360,7 +46865,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -42413,7 +46920,7 @@
  #  undef OPENSSL_EXTERN
  #  define OPENSSL_EXTERN OPENSSL_EXPORT
 diff --git a/crypto/des/ecb3_enc.c b/crypto/des/ecb3_enc.c
-index e96dd9e507ae..6ac89d4e78bb 100644
+index e96dd9e..6ac89d4 100644
 --- a/crypto/des/ecb3_enc.c
 +++ b/crypto/des/ecb3_enc.c
 @@ -1,58 +1,10 @@
@@ -42482,7 +46989,7 @@
  
  #include "des_locl.h"
 diff --git a/crypto/des/ecb_enc.c b/crypto/des/ecb_enc.c
-index 109ffd430f67..bd130c6e03eb 100644
+index 109ffd4..bd130c6 100644
 --- a/crypto/des/ecb_enc.c
 +++ b/crypto/des/ecb_enc.c
 @@ -1,58 +1,10 @@
@@ -42552,7 +47059,7 @@
  #include "des_locl.h"
 diff --git a/crypto/des/enc_read.c b/crypto/des/enc_read.c
 deleted file mode 100644
-index a37e75324082..000000000000
+index a37e753..0000000
 --- a/crypto/des/enc_read.c
 +++ /dev/null
 @@ -1,234 +0,0 @@
@@ -42792,7 +47299,7 @@
 -}
 diff --git a/crypto/des/enc_writ.c b/crypto/des/enc_writ.c
 deleted file mode 100644
-index dd1c0f9c4036..000000000000
+index dd1c0f9..0000000
 --- a/crypto/des/enc_writ.c
 +++ /dev/null
 @@ -1,180 +0,0 @@
@@ -42977,7 +47484,7 @@
 -#endif                          /* OPENSSL_NO_POSIX_IO */
 -}
 diff --git a/crypto/des/fcrypt.c b/crypto/des/fcrypt.c
-index 0c7484ce1297..5215ad3e6420 100644
+index 0c7484c..5215ad3 100644
 --- a/crypto/des/fcrypt.c
 +++ b/crypto/des/fcrypt.c
 @@ -1,3 +1,12 @@
@@ -43020,20 +47527,20 @@
 -    /* Copy at most 2 chars of salt */
 -    if ((e_salt[0] = salt[0]) != '\0')
 -        e_salt[1] = salt[1];
+-
+-    /* Copy at most 32 chars of password */
+-    strncpy(e_buf, buf, sizeof(e_buf));
 +    if (salt[0] == '\0' || salt[1] == '\0')
 +        return NULL;
  
--    /* Copy at most 32 chars of password */
--    strncpy(e_buf, buf, sizeof(e_buf));
+-    /* Make sure we have a delimiter */
+-    e_salt[sizeof(e_salt) - 1] = e_buf[sizeof(e_buf) - 1] = '\0';
 +    /* Copy salt, convert to ASCII. */
 +    e_salt[0] = salt[0];
 +    e_salt[1] = salt[1];
 +    e_salt[2] = '\0';
 +    ebcdic2ascii(e_salt, e_salt, sizeof(e_salt));
  
--    /* Make sure we have a delimiter */
--    e_salt[sizeof(e_salt) - 1] = e_buf[sizeof(e_buf) - 1] = '\0';
--
 -    /* Convert the e_salt to ASCII, as that's what DES_fcrypt works on */
 -    ebcdic2ascii(e_salt, e_salt, sizeof e_salt);
 -
@@ -43086,15 +47593,13 @@
      /*
       * EAY r=strlen(buf); r=(r+7)/8;
 diff --git a/crypto/des/fcrypt_b.c b/crypto/des/fcrypt_b.c
-index 6e02ac7c3c7a..fe2369a93526 100644
+index 6e02ac7..fe2369a 100644
 --- a/crypto/des/fcrypt_b.c
 +++ b/crypto/des/fcrypt_b.c
 @@ -1,68 +1,14 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -43142,7 +47647,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -43165,7 +47672,7 @@
  #include "des_locl.h"
  #undef DES_FCRYPT
 diff --git a/crypto/des/ncbc_enc.c b/crypto/des/ncbc_enc.c
-index 208615d47b9f..244f15ca2a96 100644
+index 208615d..244f15c 100644
 --- a/crypto/des/ncbc_enc.c
 +++ b/crypto/des/ncbc_enc.c
 @@ -1,64 +1,17 @@
@@ -43243,15 +47750,13 @@
  #include "des_locl.h"
  
 diff --git a/crypto/des/ofb64ede.c b/crypto/des/ofb64ede.c
-index 97d4f611f413..a551a07e0eb4 100644
+index 97d4f61..a551a07 100644
 --- a/crypto/des/ofb64ede.c
 +++ b/crypto/des/ofb64ede.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -43299,7 +47804,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -43312,15 +47819,13 @@
  
  #include "des_locl.h"
 diff --git a/crypto/des/ofb64enc.c b/crypto/des/ofb64enc.c
-index 53c558f40125..30976c871daa 100644
+index 53c558f..30976c8 100644
 --- a/crypto/des/ofb64enc.c
 +++ b/crypto/des/ofb64enc.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -43368,7 +47873,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -43381,15 +47888,13 @@
  
  #include "des_locl.h"
 diff --git a/crypto/des/ofb_enc.c b/crypto/des/ofb_enc.c
-index c37709b24124..65a9b8604d80 100644
+index c37709b..65a9b86 100644
 --- a/crypto/des/ofb_enc.c
 +++ b/crypto/des/ofb_enc.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -43437,7 +47942,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -43450,7 +47957,7 @@
  
  #include "des_locl.h"
 diff --git a/crypto/des/pcbc_enc.c b/crypto/des/pcbc_enc.c
-index 91a6caf0bea1..0fa058f03f07 100644
+index 91a6caf..0fa058f 100644
 --- a/crypto/des/pcbc_enc.c
 +++ b/crypto/des/pcbc_enc.c
 @@ -1,58 +1,10 @@
@@ -43519,15 +48026,13 @@
  
  #include "des_locl.h"
 diff --git a/crypto/des/qud_cksm.c b/crypto/des/qud_cksm.c
-index 1ff0b7592d54..8710ceca9544 100644
+index 1ff0b75..8710cec 100644
 --- a/crypto/des/qud_cksm.c
 +++ b/crypto/des/qud_cksm.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -43575,7 +48080,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -43588,7 +48095,7 @@
  
  /*
 diff --git a/crypto/des/rand_key.c b/crypto/des/rand_key.c
-index da95bfebae29..61e4f9d05dcb 100644
+index da95bfe..61e4f9d 100644
 --- a/crypto/des/rand_key.c
 +++ b/crypto/des/rand_key.c
 @@ -1,55 +1,10 @@
@@ -43655,7 +48162,7 @@
  #include <openssl/des.h>
 diff --git a/crypto/des/read2pwd.c b/crypto/des/read2pwd.c
 deleted file mode 100644
-index 748d0e621b87..000000000000
+index 748d0e6..0000000
 --- a/crypto/des/read2pwd.c
 +++ /dev/null
 @@ -1,146 +0,0 @@
@@ -43806,15 +48313,13 @@
 -}
 -#endif
 diff --git a/crypto/des/rpc_des.h b/crypto/des/rpc_des.h
-index 727e28596c3b..fe59e224de75 100644
+index 727e285..fe59e22 100644
 --- a/crypto/des/rpc_des.h
 +++ b/crypto/des/rpc_des.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -43862,7 +48367,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -43875,7 +48382,7 @@
  
  /*  @(#)des.h   2.2 88/08/10 4.0 RPCSRC; from 2.7 88/02/08 SMI  */
 diff --git a/crypto/des/rpc_enc.c b/crypto/des/rpc_enc.c
-index 76cdd0c7be22..bfa85115a2d7 100644
+index 76cdd0c..bfa8511 100644
 --- a/crypto/des/rpc_enc.c
 +++ b/crypto/des/rpc_enc.c
 @@ -1,58 +1,10 @@
@@ -43944,7 +48451,7 @@
  
  #include "rpc_des.h"
 diff --git a/crypto/des/set_key.c b/crypto/des/set_key.c
-index d9fc921f8309..93adff398298 100644
+index d9fc921..93adff3 100644
 --- a/crypto/des/set_key.c
 +++ b/crypto/des/set_key.c
 @@ -1,58 +1,10 @@
@@ -44013,7 +48520,7 @@
  
  /*-
 diff --git a/crypto/des/spr.h b/crypto/des/spr.h
-index cd55a452472d..42adfbf6ee60 100644
+index cd55a45..42adfbf 100644
 --- a/crypto/des/spr.h
 +++ b/crypto/des/spr.h
 @@ -1,58 +1,10 @@
@@ -44082,7 +48589,7 @@
  
  OPENSSL_GLOBAL const DES_LONG DES_SPtrans[8][64] = {
 diff --git a/crypto/des/str2key.c b/crypto/des/str2key.c
-index e671d14b0f8d..78998a1cd071 100644
+index e671d14..78998a1 100644
 --- a/crypto/des/str2key.c
 +++ b/crypto/des/str2key.c
 @@ -1,58 +1,10 @@
@@ -44187,7 +48694,7 @@
              if ((i % 16) < 8)
                  (*key1)[i % 8] ^= (j << 1);
 diff --git a/crypto/des/xcbc_enc.c b/crypto/des/xcbc_enc.c
-index 11ee004590c2..c4e455d9b912 100644
+index 11ee004..c4e455d 100644
 --- a/crypto/des/xcbc_enc.c
 +++ b/crypto/des/xcbc_enc.c
 @@ -1,58 +1,10 @@
@@ -44257,7 +48764,7 @@
  #include "des_locl.h"
 diff --git a/crypto/dh/Makefile.in b/crypto/dh/Makefile.in
 deleted file mode 100644
-index 205909a73825..000000000000
+index 205909a..0000000
 --- a/crypto/dh/Makefile.in
 +++ /dev/null
 @@ -1,45 +0,0 @@
@@ -44307,7 +48814,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/dh/dh_ameth.c b/crypto/dh/dh_ameth.c
-index 54d5ba5d3436..78aea3609326 100644
+index 54d5ba5..78aea36 100644
 --- a/crypto/dh/dh_ameth.c
 +++ b/crypto/dh/dh_ameth.c
 @@ -1,59 +1,10 @@
@@ -44395,7 +48902,7 @@
      return 0;
  }
 diff --git a/crypto/dh/dh_asn1.c b/crypto/dh/dh_asn1.c
-index aa802915a895..7c72fd64e50a 100644
+index aa80291..7c72fd6 100644
 --- a/crypto/dh/dh_asn1.c
 +++ b/crypto/dh/dh_asn1.c
 @@ -1,59 +1,10 @@
@@ -44464,7 +48971,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/dh/dh_check.c b/crypto/dh/dh_check.c
-index 5d1426580291..523e31d05e1c 100644
+index 5d14265..fcc1d99 100644
 --- a/crypto/dh/dh_check.c
 +++ b/crypto/dh/dh_check.c
 @@ -1,58 +1,10 @@
@@ -44532,8 +49039,63 @@
   */
  
  #include <stdio.h>
+@@ -72,7 +24,7 @@
+ 
+ int DH_check(const DH *dh, int *ret)
+ {
+-    int ok = 0;
++    int ok = 0, r;
+     BN_CTX *ctx = NULL;
+     BN_ULONG l;
+     BIGNUM *t1 = NULL, *t2 = NULL;
+@@ -101,7 +53,10 @@ int DH_check(const DH *dh, int *ret)
+             if (!BN_is_one(t1))
+                 *ret |= DH_NOT_SUITABLE_GENERATOR;
+         }
+-        if (!BN_is_prime_ex(dh->q, BN_prime_checks, ctx, NULL))
++        r = BN_is_prime_ex(dh->q, BN_prime_checks, ctx, NULL);
++        if (r < 0)
++            goto err;
++        if (!r)
+             *ret |= DH_CHECK_Q_NOT_PRIME;
+         /* Check p == 1 mod q  i.e. q divides p - 1 */
+         if (!BN_div(t1, t2, dh->p, dh->q, ctx))
+@@ -113,21 +68,31 @@ int DH_check(const DH *dh, int *ret)
+ 
+     } else if (BN_is_word(dh->g, DH_GENERATOR_2)) {
+         l = BN_mod_word(dh->p, 24);
++        if (l == (BN_ULONG)-1)
++            goto err;
+         if (l != 11)
+             *ret |= DH_NOT_SUITABLE_GENERATOR;
+     } else if (BN_is_word(dh->g, DH_GENERATOR_5)) {
+         l = BN_mod_word(dh->p, 10);
++        if (l == (BN_ULONG)-1)
++            goto err;
+         if ((l != 3) && (l != 7))
+             *ret |= DH_NOT_SUITABLE_GENERATOR;
+     } else
+         *ret |= DH_UNABLE_TO_CHECK_GENERATOR;
+ 
+-    if (!BN_is_prime_ex(dh->p, BN_prime_checks, ctx, NULL))
++    r = BN_is_prime_ex(dh->p, BN_prime_checks, ctx, NULL);
++    if (r < 0)
++        goto err;
++    if (!r)
+         *ret |= DH_CHECK_P_NOT_PRIME;
+     else if (!dh->q) {
+         if (!BN_rshift1(t1, dh->p))
+             goto err;
+-        if (!BN_is_prime_ex(t1, BN_prime_checks, ctx, NULL))
++        r = BN_is_prime_ex(t1, BN_prime_checks, ctx, NULL);
++        if (r < 0)
++            goto err;
++	if (!r)
+             *ret |= DH_CHECK_P_NOT_SAFE_PRIME;
+     }
+     ok = 1;
 diff --git a/crypto/dh/dh_depr.c b/crypto/dh/dh_depr.c
-index 90ce0b0d89e5..f8ed1b7461ee 100644
+index 90ce0b0..f8ed1b7 100644
 --- a/crypto/dh/dh_depr.c
 +++ b/crypto/dh/dh_depr.c
 @@ -1,55 +1,10 @@
@@ -44599,7 +49161,7 @@
  
  /* This file contains deprecated functions as wrappers to the new ones */
 diff --git a/crypto/dh/dh_err.c b/crypto/dh/dh_err.c
-index 4778b8d87516..a5348b1aabdd 100644
+index 4778b8d..a5348b1 100644
 --- a/crypto/dh/dh_err.c
 +++ b/crypto/dh/dh_err.c
 @@ -1,61 +1,11 @@
@@ -44698,15 +49260,13 @@
      {ERR_REASON(DH_R_NO_PARAMETERS_SET), "no parameters set"},
      {ERR_REASON(DH_R_NO_PRIVATE_VALUE), "no private value"},
 diff --git a/crypto/dh/dh_gen.c b/crypto/dh/dh_gen.c
-index 5c96dacdba0a..27ecb983d16b 100644
+index 5c96dac..27ecb98 100644
 --- a/crypto/dh/dh_gen.c
 +++ b/crypto/dh/dh_gen.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -44754,7 +49314,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -44767,7 +49329,7 @@
  
  /*
 diff --git a/crypto/dh/dh_kdf.c b/crypto/dh/dh_kdf.c
-index 6c31fecd12f2..f2f3d24158d3 100644
+index 6c31fec..f2f3d24 100644
 --- a/crypto/dh/dh_kdf.c
 +++ b/crypto/dh/dh_kdf.c
 @@ -1,53 +1,10 @@
@@ -44776,8 +49338,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2013 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -44808,7 +49369,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
-- *
++ * Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -44830,10 +49392,10 @@
  
  #include <e_os.h>
 diff --git a/crypto/dh/dh_key.c b/crypto/dh/dh_key.c
-index d9575503d1f7..1644003bd95b 100644
+index d957550..21dada3 100644
 --- a/crypto/dh/dh_key.c
 +++ b/crypto/dh/dh_key.c
-@@ -1,58 +1,10 @@
+@@ -1,63 +1,14 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 +/*
@@ -44898,7 +49460,12 @@
   */
  
  #include <stdio.h>
-@@ -161,24 +113,18 @@ static int generate_key(DH *dh)
+ #include "internal/cryptlib.h"
+-#include <openssl/rand.h>
+ #include "dh_locl.h"
+ #include "internal/bn_int.h"
+ 
+@@ -161,24 +112,18 @@ static int generate_key(DH *dh)
      }
  
      {
@@ -44930,7 +49497,7 @@
      }
  
      dh->pub_key = pub_key;
-@@ -223,10 +169,7 @@ static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
+@@ -223,10 +168,7 @@ static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
      if (dh->flags & DH_FLAG_CACHE_MONT_P) {
          mont = BN_MONT_CTX_set_locked(&dh->method_mont_p,
                                        dh->lock, dh->p, ctx);
@@ -44942,7 +49509,7 @@
          if (!mont)
              goto err;
      }
-@@ -255,15 +198,7 @@ static int dh_bn_mod_exp(const DH *dh, BIGNUM *r,
+@@ -255,15 +197,7 @@ static int dh_bn_mod_exp(const DH *dh, BIGNUM *r,
                           const BIGNUM *a, const BIGNUM *p,
                           const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
  {
@@ -44960,7 +49527,7 @@
  
  static int dh_init(DH *dh)
 diff --git a/crypto/dh/dh_lib.c b/crypto/dh/dh_lib.c
-index bf9f8d331740..6a59f7faa432 100644
+index bf9f8d3..adf1771 100644
 --- a/crypto/dh/dh_lib.c
 +++ b/crypto/dh/dh_lib.c
 @@ -1,58 +1,10 @@
@@ -45087,19 +49654,27 @@
          DH_free(ret);
          ret = NULL;
      }
-@@ -245,15 +195,27 @@ void DH_get0_pqg(const DH *dh, BIGNUM **p, BIGNUM **q, BIGNUM **g)
+@@ -233,7 +183,8 @@ int DH_security_bits(const DH *dh)
+ }
  
+ 
+-void DH_get0_pqg(const DH *dh, BIGNUM **p, BIGNUM **q, BIGNUM **g)
++void DH_get0_pqg(const DH *dh,
++                 const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
+ {
+     if (p != NULL)
+         *p = dh->p;
+@@ -245,15 +196,25 @@ void DH_get0_pqg(const DH *dh, BIGNUM **p, BIGNUM **q, BIGNUM **g)
+ 
  int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
  {
 -    /* q is optional */
 -    if (p == NULL || g == NULL)
 +    /* If the fields p and g in d are NULL, the corresponding input
 +     * parameters MUST be non-NULL.  q may remain NULL.
-+     *
-+     * It is an error to give the results from get0 on d
-+     * as input parameters.
 +     */
-+    if (p == dh->p || (dh->q != NULL && q == dh->q) || g == dh->g)
++    if ((dh->p == NULL && p == NULL)
++        || (dh->g == NULL && g == NULL))
          return 0;
 -    BN_free(dh->p);
 -    BN_free(dh->q);
@@ -45123,21 +49698,26 @@
  
      if (q != NULL) {
          dh->length = BN_num_bits(q);
-@@ -283,14 +245,25 @@ void DH_get0_key(const DH *dh, BIGNUM **pub_key, BIGNUM **priv_key)
+@@ -273,7 +234,7 @@ int DH_set_length(DH *dh, long length)
+     return 1;
+ }
  
+-void DH_get0_key(const DH *dh, BIGNUM **pub_key, BIGNUM **priv_key)
++void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)
+ {
+     if (pub_key != NULL)
+         *pub_key = dh->pub_key;
+@@ -283,14 +244,21 @@ void DH_get0_key(const DH *dh, BIGNUM **pub_key, BIGNUM **priv_key)
+ 
  int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key)
  {
 -    /* Note that it is valid for priv_key to be NULL */
 -    if (pub_key == NULL)
-+    /* If the pub_key in dh is NULL, the corresponding input
++    /* If the field pub_key in dh is NULL, the corresponding input
 +     * parameters MUST be non-NULL.  The priv_key field may
 +     * be left NULL.
-+     *
-+     * It is an error to give the results from get0 on dh
-+     * as input parameters.
 +     */
-+    if (dh->pub_key == pub_key
-+        || (dh->priv_key != NULL && priv_key == dh->priv_key))
++    if (dh->pub_key == NULL && pub_key == NULL)
          return 0;
  
 -    BN_free(dh->pub_key);
@@ -45156,7 +49736,7 @@
      return 1;
  }
 diff --git a/crypto/dh/dh_locl.h b/crypto/dh/dh_locl.h
-index 46e4bc79d985..19301c318586 100644
+index 46e4bc7..19301c3 100644
 --- a/crypto/dh/dh_locl.h
 +++ b/crypto/dh/dh_locl.h
 @@ -1,11 +1,10 @@
@@ -45175,7 +49755,7 @@
  
  #include <openssl/dh.h>
 diff --git a/crypto/dh/dh_meth.c b/crypto/dh/dh_meth.c
-index 0bc5e53e0275..45753b6164bd 100644
+index 0bc5e53..45753b6 100644
 --- a/crypto/dh/dh_meth.c
 +++ b/crypto/dh/dh_meth.c
 @@ -1,16 +1,15 @@
@@ -45237,26 +49817,25 @@
  
  int DH_meth_set1_name(DH_METHOD *dhm, const char *name)
  {
--    OPENSSL_free(dhm->name);
--    dhm->name = OPENSSL_strdup(name);
 +    char *tmpname;
- 
--    return dhm->name != NULL;
++
 +    tmpname = OPENSSL_strdup(name);
 +    if (tmpname == NULL) {
 +        DHerr(DH_F_DH_METH_SET1_NAME, ERR_R_MALLOC_FAILURE);
 +        return 0;
 +    }
 +
-+    OPENSSL_free(dhm->name);
+     OPENSSL_free(dhm->name);
+-    dhm->name = OPENSSL_strdup(name);
 +    dhm->name = tmpname;
-+
+ 
+-    return dhm->name != NULL;
 +    return 1;
  }
  
  int DH_meth_get_flags(DH_METHOD *dhm)
 diff --git a/crypto/dh/dh_pmeth.c b/crypto/dh/dh_pmeth.c
-index 5d357a380154..c3e03c7a420d 100644
+index 5d357a3..c3e03c7 100644
 --- a/crypto/dh/dh_pmeth.c
 +++ b/crypto/dh/dh_pmeth.c
 @@ -1,59 +1,10 @@
@@ -45375,7 +49954,7 @@
  {
      DH_PKEY_CTX *dctx = ctx->data;
 diff --git a/crypto/dh/dh_prn.c b/crypto/dh/dh_prn.c
-index 4c89a1428358..283fb0f4a31a 100644
+index 4c89a14..283fb0f 100644
 --- a/crypto/dh/dh_prn.c
 +++ b/crypto/dh/dh_prn.c
 @@ -1,58 +1,10 @@
@@ -45444,7 +50023,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/dh/dh_rfc5114.c b/crypto/dh/dh_rfc5114.c
-index 48b199dfce74..c4a219590e9e 100644
+index 48b199d..c4a2195 100644
 --- a/crypto/dh/dh_rfc5114.c
 +++ b/crypto/dh/dh_rfc5114.c
 @@ -1,59 +1,10 @@
@@ -45514,7 +50093,7 @@
  #include <stdio.h>
 diff --git a/crypto/dh/example b/crypto/dh/example
 deleted file mode 100644
-index 16a33d2910f1..000000000000
+index 16a33d2..0000000
 --- a/crypto/dh/example
 +++ /dev/null
 @@ -1,50 +0,0 @@
@@ -45570,7 +50149,7 @@
 -
 diff --git a/crypto/dh/generate b/crypto/dh/generate
 deleted file mode 100644
-index 5d407231df5b..000000000000
+index 5d40723..0000000
 --- a/crypto/dh/generate
 +++ /dev/null
 @@ -1,65 +0,0 @@
@@ -45640,7 +50219,7 @@
 -
 -
 diff --git a/crypto/dllmain.c b/crypto/dllmain.c
-index 0a229b57f951..91904aad983b 100644
+index 0a229b5..91904aa 100644
 --- a/crypto/dllmain.c
 +++ b/crypto/dllmain.c
 @@ -1,3 +1,12 @@
@@ -45658,7 +50237,7 @@
  #if defined(_WIN32) || defined(__CYGWIN__)
 diff --git a/crypto/dsa/Makefile.in b/crypto/dsa/Makefile.in
 deleted file mode 100644
-index 145034e8878c..000000000000
+index 145034e..0000000
 --- a/crypto/dsa/Makefile.in
 +++ /dev/null
 @@ -1,47 +0,0 @@
@@ -45710,7 +50289,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/dsa/dsa_ameth.c b/crypto/dsa/dsa_ameth.c
-index 54cdb3dae068..b30368e32e33 100644
+index 54cdb3d..c7573bf 100644
 --- a/crypto/dsa/dsa_ameth.c
 +++ b/crypto/dsa/dsa_ameth.c
 @@ -1,59 +1,10 @@
@@ -45787,6 +50366,18 @@
          return 1;
      return 0;
  }
+@@ -486,9 +437,9 @@ static int dsa_sig_print(BIO *bp, const X509_ALGOR *sigalg,
+     dsa_sig = d2i_DSA_SIG(NULL, &p, sig->length);
+     if (dsa_sig) {
+         int rv = 0;
+-        BIGNUM *r, *s;
++        const BIGNUM *r, *s;
+ 
+-        DSA_SIG_get0(&r, &s, dsa_sig);
++        DSA_SIG_get0(dsa_sig, &r, &s);
+ 
+         if (BIO_write(bp, "\n", 1) != 1)
+             goto err;
 @@ -558,7 +509,7 @@ static int dsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
  
  /* NB these are sorted in pkey_id order, lowest first */
@@ -45797,7 +50388,7 @@
      {
       EVP_PKEY_DSA2,
 diff --git a/crypto/dsa/dsa_asn1.c b/crypto/dsa/dsa_asn1.c
-index 1468fb1e6678..93ce85f09e85 100644
+index 1468fb1..540d01f 100644
 --- a/crypto/dsa/dsa_asn1.c
 +++ b/crypto/dsa/dsa_asn1.c
 @@ -1,59 +1,10 @@
@@ -45865,8 +50456,47 @@
   */
  
  #include <stdio.h>
+@@ -63,11 +14,6 @@
+ #include <openssl/asn1t.h>
+ #include <openssl/rand.h>
+ 
+-struct DSA_SIG_st {
+-    BIGNUM *r;
+-    BIGNUM *s;
+-};
+-
+ ASN1_SEQUENCE(DSA_SIG) = {
+         ASN1_SIMPLE(DSA_SIG, r, CBIGNUM),
+         ASN1_SIMPLE(DSA_SIG, s, CBIGNUM)
+@@ -75,10 +21,23 @@ ASN1_SEQUENCE(DSA_SIG) = {
+ 
+ IMPLEMENT_ASN1_FUNCTIONS_const(DSA_SIG)
+ 
+-void DSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, const DSA_SIG *sig)
++void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps)
++{
++    if (pr != NULL)
++        *pr = sig->r;
++    if (ps != NULL)
++        *ps = sig->s;
++}
++
++int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s)
+ {
+-    *pr = sig->r;
+-    *ps = sig->s;
++    if (r == NULL || s == NULL)
++        return 0;
++    BN_clear_free(sig->r);
++    BN_clear_free(sig->s);
++    sig->r = r;
++    sig->s = s;
++    return 1;
+ }
+ 
+ /* Override the default free and new methods */
 diff --git a/crypto/dsa/dsa_depr.c b/crypto/dsa/dsa_depr.c
-index f50fcc01ee0b..b852fc70f6c3 100644
+index f50fcc0..f51aea7 100644
 --- a/crypto/dsa/dsa_depr.c
 +++ b/crypto/dsa/dsa_depr.c
 @@ -1,55 +1,10 @@
@@ -45931,8 +50561,16 @@
   */
  
  /*
+@@ -75,7 +30,6 @@ NON_EMPTY_TRANSLATION_UNIT
+ # include <openssl/evp.h>
+ # include <openssl/bn.h>
+ # include <openssl/dsa.h>
+-# include <openssl/rand.h>
+ # include <openssl/sha.h>
+ 
+ DSA *DSA_generate_parameters(int bits,
 diff --git a/crypto/dsa/dsa_err.c b/crypto/dsa/dsa_err.c
-index 2e2925832464..96bd4d3a8f5f 100644
+index 2e29258..96bd4d3 100644
 --- a/crypto/dsa/dsa_err.c
 +++ b/crypto/dsa/dsa_err.c
 @@ -1,61 +1,11 @@
@@ -46055,15 +50693,13 @@
      {ERR_REASON(DSA_R_PARAMETER_ENCODING_ERROR), "parameter encoding error"},
      {ERR_REASON(DSA_R_Q_NOT_PRIME), "q not prime"},
 diff --git a/crypto/dsa/dsa_gen.c b/crypto/dsa/dsa_gen.c
-index c278d9853de6..3dac5500312a 100644
+index c278d98..3dac550 100644
 --- a/crypto/dsa/dsa_gen.c
 +++ b/crypto/dsa/dsa_gen.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -46111,7 +50747,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -46133,7 +50771,7 @@
      /* if p, q already supplied generate g only */
      if (ret->p && ret->q) {
 diff --git a/crypto/dsa/dsa_key.c b/crypto/dsa/dsa_key.c
-index 441588498ee7..aa5d42ce174f 100644
+index 4415884..31442b1 100644
 --- a/crypto/dsa/dsa_key.c
 +++ b/crypto/dsa/dsa_key.c
 @@ -1,58 +1,10 @@
@@ -46201,7 +50839,15 @@
   */
  
  #include <stdio.h>
-@@ -98,24 +50,18 @@ static int dsa_builtin_keygen(DSA *dsa)
+@@ -60,7 +12,6 @@
+ #include "internal/cryptlib.h"
+ #include <openssl/bn.h>
+ #include "dsa_locl.h"
+-#include <openssl/rand.h>
+ 
+ static int dsa_builtin_keygen(DSA *dsa);
+ 
+@@ -98,24 +49,18 @@ static int dsa_builtin_keygen(DSA *dsa)
          pub_key = dsa->pub_key;
  
      {
@@ -46234,7 +50880,7 @@
  
      dsa->priv_key = priv_key;
 diff --git a/crypto/dsa/dsa_lib.c b/crypto/dsa/dsa_lib.c
-index facb97fb5ebb..14cb35f82e28 100644
+index facb97f..9c001d7 100644
 --- a/crypto/dsa/dsa_lib.c
 +++ b/crypto/dsa/dsa_lib.c
 @@ -1,58 +1,10 @@
@@ -46370,18 +51016,27 @@
          DSA_free(ret);
          ret = NULL;
      }
-@@ -315,14 +265,27 @@ void DSA_get0_pqg(const DSA *d, BIGNUM **p, BIGNUM **q, BIGNUM **g)
+@@ -303,7 +253,8 @@ DH *DSA_dup_DH(const DSA *r)
+ }
+ #endif
  
+-void DSA_get0_pqg(const DSA *d, BIGNUM **p, BIGNUM **q, BIGNUM **g)
++void DSA_get0_pqg(const DSA *d,
++                  const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
+ {
+     if (p != NULL)
+         *p = d->p;
+@@ -315,19 +266,32 @@ void DSA_get0_pqg(const DSA *d, BIGNUM **p, BIGNUM **q, BIGNUM **g)
+ 
  int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g)
  {
 -    if (p == NULL || q == NULL || g == NULL)
-+    /* If the fields in d are NULL, the corresponding input
++    /* If the fields p, q and g in d are NULL, the corresponding input
 +     * parameters MUST be non-NULL.
-+     *
-+     * It is an error to give the results from get0 on d
-+     * as input parameters.
 +     */
-+    if (p == d->p || q == d->q || g == d->g)
++    if ((d->p == NULL && p == NULL)
++        || (d->q == NULL && q == NULL)
++        || (d->g == NULL && g == NULL))
          return 0;
 -    BN_free(d->p);
 -    BN_free(d->q);
@@ -46405,21 +51060,24 @@
  
      return 1;
  }
-@@ -337,14 +300,25 @@ void DSA_get0_key(const DSA *d, BIGNUM **pub_key, BIGNUM **priv_key)
  
+-void DSA_get0_key(const DSA *d, BIGNUM **pub_key, BIGNUM **priv_key)
++void DSA_get0_key(const DSA *d,
++                  const BIGNUM **pub_key, const BIGNUM **priv_key)
+ {
+     if (pub_key != NULL)
+         *pub_key = d->pub_key;
+@@ -337,14 +301,21 @@ void DSA_get0_key(const DSA *d, BIGNUM **pub_key, BIGNUM **priv_key)
+ 
  int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key)
  {
 -    /* Note that it is valid for priv_key to be NULL */
 -    if (pub_key == NULL)
-+    /* If the pub_key in d is NULL, the corresponding input
++    /* If the field pub_key in d is NULL, the corresponding input
 +     * parameters MUST be non-NULL.  The priv_key field may
 +     * be left NULL.
-+     *
-+     * It is an error to give the results from get0 on d
-+     * as input parameters.
 +     */
-+    if (d->pub_key == pub_key
-+        || (d->priv_key != NULL && priv_key == d->priv_key))
++    if (d->pub_key == NULL && pub_key == NULL)
          return 0;
  
 -    BN_free(d->pub_key);
@@ -46438,7 +51096,7 @@
      return 1;
  }
 diff --git a/crypto/dsa/dsa_locl.h b/crypto/dsa/dsa_locl.h
-index 657fbff64fec..d488951a16f2 100644
+index 657fbff..9021fce 100644
 --- a/crypto/dsa/dsa_locl.h
 +++ b/crypto/dsa/dsa_locl.h
 @@ -1,55 +1,10 @@
@@ -46503,8 +51161,36 @@
   */
  
  #include <openssl/dsa.h>
+@@ -77,6 +32,11 @@ struct dsa_st {
+     CRYPTO_RWLOCK *lock;
+ };
+ 
++struct DSA_SIG_st {
++    BIGNUM *r;
++    BIGNUM *s;
++};
++
+ struct dsa_method {
+     char *name;
+     DSA_SIG *(*dsa_do_sign) (const unsigned char *dgst, int dlen, DSA *dsa);
+@@ -84,11 +44,11 @@ struct dsa_method {
+                            BIGNUM **rp);
+     int (*dsa_do_verify) (const unsigned char *dgst, int dgst_len,
+                           DSA_SIG *sig, DSA *dsa);
+-    int (*dsa_mod_exp) (DSA *dsa, BIGNUM *rr, BIGNUM *a1, BIGNUM *p1,
+-                        BIGNUM *a2, BIGNUM *p2, BIGNUM *m, BN_CTX *ctx,
+-                        BN_MONT_CTX *in_mont);
++    int (*dsa_mod_exp) (DSA *dsa, BIGNUM *rr, const BIGNUM *a1,
++                        const BIGNUM *p1, const BIGNUM *a2, const BIGNUM *p2,
++                        const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont);
+     /* Can be null */
+-    int (*bn_mod_exp) (DSA *dsa, BIGNUM *r, BIGNUM *a, const BIGNUM *p,
++    int (*bn_mod_exp) (DSA *dsa, BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
+                        const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
+     int (*init) (DSA *dsa);
+     int (*finish) (DSA *dsa);
 diff --git a/crypto/dsa/dsa_meth.c b/crypto/dsa/dsa_meth.c
-index 816e35ecc528..1d27ceae1ce1 100644
+index 816e35e..a8cee06 100644
 --- a/crypto/dsa/dsa_meth.c
 +++ b/crypto/dsa/dsa_meth.c
 @@ -1,4 +1,13 @@
@@ -46567,26 +51253,62 @@
  
  int DSA_meth_set1_name(DSA_METHOD *dsam, const char *name)
  {
--    OPENSSL_free(dsam->name);
--    dsam->name = OPENSSL_strdup(name);
 +    char *tmpname;
- 
--    return dsam->name != NULL;
++
 +    tmpname = OPENSSL_strdup(name);
 +    if (tmpname == NULL) {
 +        DSAerr(DSA_F_DSA_METH_SET1_NAME, ERR_R_MALLOC_FAILURE);
 +        return 0;
 +    }
 +
-+    OPENSSL_free(dsam->name);
+     OPENSSL_free(dsam->name);
+-    dsam->name = OPENSSL_strdup(name);
 +    dsam->name = tmpname;
-+
+ 
+-    return dsam->name != NULL;
 +    return 1;
  }
  
  int DSA_meth_get_flags(DSA_METHOD *dsam)
+@@ -119,29 +146,30 @@ int DSA_meth_set_verify(DSA_METHOD *dsam,
+ }
+ 
+ int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam))
+-        (DSA *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *,
+-         BN_CTX *, BN_MONT_CTX *)
++        (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *,
++         const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *)
+ {
+     return dsam->dsa_mod_exp;
+ }
+ 
+ int DSA_meth_set_mod_exp(DSA_METHOD *dsam,
+-    int (*mod_exp) (DSA *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *,
+-                    BIGNUM *, BN_CTX *, BN_MONT_CTX *))
++    int (*mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *,
++                    const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *,
++                    BN_MONT_CTX *))
+ {
+     dsam->dsa_mod_exp = mod_exp;
+     return 1;
+ }
+ 
+ int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam))
+-    (DSA *, BIGNUM *, BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *,
++    (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *,
+      BN_MONT_CTX *)
+ {
+     return dsam->bn_mod_exp;
+ }
+ 
+ int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam,
+-    int (*bn_mod_exp) (DSA *, BIGNUM *, BIGNUM *, const BIGNUM *,
++    int (*bn_mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *,
+                        const BIGNUM *, BN_CTX *, BN_MONT_CTX *))
+ {
+     dsam->bn_mod_exp = bn_mod_exp;
 diff --git a/crypto/dsa/dsa_ossl.c b/crypto/dsa/dsa_ossl.c
-index 92855537b8ee..9c97ef949c0c 100644
+index 9285553..8913fcc 100644
 --- a/crypto/dsa/dsa_ossl.c
 +++ b/crypto/dsa/dsa_ossl.c
 @@ -1,58 +1,10 @@
@@ -46654,7 +51376,15 @@
   */
  
  /* Original version from Steven Schoch <schoch at sheba.arc.nasa.gov> */
-@@ -90,42 +42,6 @@ static DSA_METHOD openssl_dsa_meth = {
+@@ -62,7 +14,6 @@
+ #include <openssl/bn.h>
+ #include <openssl/sha.h>
+ #include "dsa_locl.h"
+-#include <openssl/rand.h>
+ #include <openssl/asn1.h>
+ 
+ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa);
+@@ -90,42 +41,6 @@ static DSA_METHOD openssl_dsa_meth = {
      NULL
  };
  
@@ -46697,7 +51427,11 @@
  const DSA_METHOD *DSA_OpenSSL(void)
  {
      return &openssl_dsa_meth;
-@@ -140,7 +56,6 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
+@@ -136,11 +51,9 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
+     BIGNUM *kinv = NULL;
+     BIGNUM *m;
+     BIGNUM *xr;
+-    BIGNUM *r, *s;
      BN_CTX *ctx = NULL;
      int reason = ERR_R_BN_LIB;
      DSA_SIG *ret = NULL;
@@ -46705,7 +51439,41 @@
      int rv = 0;
  
      m = BN_new();
-@@ -191,13 +106,8 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
+@@ -157,13 +70,11 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
+     if (ret == NULL)
+         goto err;
+ 
+-    DSA_SIG_get0(&r, &s, ret);
+-
+     ctx = BN_CTX_new();
+     if (ctx == NULL)
+         goto err;
+  redo:
+-    if (!dsa_sign_setup(dsa, ctx, &kinv, &r, dgst, dlen))
++    if (!dsa_sign_setup(dsa, ctx, &kinv, &ret->r, dgst, dlen))
+         goto err;
+ 
+     if (dlen > BN_num_bytes(dsa->q))
+@@ -177,27 +88,22 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
+         goto err;
+ 
+     /* Compute  s = inv(k) (m + xr) mod q */
+-    if (!BN_mod_mul(xr, dsa->priv_key, r, dsa->q, ctx))
++    if (!BN_mod_mul(xr, dsa->priv_key, ret->r, dsa->q, ctx))
+         goto err;               /* s = xr */
+-    if (!BN_add(s, xr, m))
++    if (!BN_add(ret->s, xr, m))
+         goto err;               /* s = m + xr */
+-    if (BN_cmp(s, dsa->q) > 0)
+-        if (!BN_sub(s, s, dsa->q))
++    if (BN_cmp(ret->s, dsa->q) > 0)
++        if (!BN_sub(ret->s, ret->s, dsa->q))
+             goto err;
+-    if (!BN_mod_mul(s, s, kinv, dsa->q, ctx))
++    if (!BN_mod_mul(ret->s, ret->s, kinv, dsa->q, ctx))
+         goto err;
+ 
+     /*
       * Redo if r or s is zero as required by FIPS 186-3: this is very
       * unlikely.
       */
@@ -46714,13 +51482,13 @@
 -            reason = DSA_R_NEED_NEW_SETUP_VALUES;
 -            goto err;
 -        }
-+    if (BN_is_zero(r) || BN_is_zero(s))
++    if (BN_is_zero(ret->r) || BN_is_zero(ret->s))
          goto redo;
 -    }
  
      rv = 1;
  
-@@ -225,7 +135,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
+@@ -225,7 +131,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
                            const unsigned char *dgst, int dlen)
  {
      BN_CTX *ctx = NULL;
@@ -46729,7 +51497,7 @@
      int ret = 0;
  
      if (!dsa->p || !dsa->q || !dsa->g) {
-@@ -234,8 +144,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
+@@ -234,8 +140,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
      }
  
      k = BN_new();
@@ -46739,7 +51507,7 @@
          goto err;
  
      if (ctx_in == NULL) {
-@@ -258,9 +167,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
+@@ -258,9 +163,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
              goto err;
      } while (BN_is_zero(k));
  
@@ -46750,59 +51518,56 @@
  
      if (dsa->flags & DSA_FLAG_CACHE_MONT_P) {
          if (!BN_MONT_CTX_set_locked(&dsa->method_mont_p,
-@@ -270,30 +177,29 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
+@@ -270,30 +173,29 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
  
      /* Compute r = (g^k mod p) mod q */
  
 -    if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0) {
 -        if (!BN_copy(kq, k))
+-            goto err;
+-
+-        /*
+-         * We do not want timing information to leak the length of k, so we
+-         * compute g^k using an equivalent exponent of fixed length. (This
+-         * is a kludge that we need because the BN_mod_exp_mont() does not
+-         * let us specify the desired timing behaviour.)
+-         */
 +    /*
 +     * We do not want timing information to leak the length of k, so we
 +     * compute g^k using an equivalent exponent of fixed length. (This
 +     * is a kludge that we need because the BN_mod_exp_mont() does not
 +     * let us specify the desired timing behaviour.)
 +     */
-+
+ 
+-        if (!BN_add(kq, kq, dsa->q))
 +    if (!BN_add(k, k, dsa->q))
 +        goto err;
 +    if (BN_num_bits(k) <= BN_num_bits(dsa->q)) {
 +        if (!BN_add(k, k, dsa->q))
              goto err;
--
--        /*
--         * We do not want timing information to leak the length of k, so we
--         * compute g^k using an equivalent exponent of fixed length. (This
--         * is a kludge that we need because the BN_mod_exp_mont() does not
--         * let us specify the desired timing behaviour.)
--         */
--
--        if (!BN_add(kq, kq, dsa->q))
--            goto err;
 -        if (BN_num_bits(kq) <= BN_num_bits(dsa->q)) {
 -            if (!BN_add(kq, kq, dsa->q))
 -                goto err;
 -        }
--
++    }
+ 
 -        K = kq;
--    } else {
--        K = k;
-     }
--    DSA_BN_MOD_EXP(goto err, dsa, r, dsa->g, K, dsa->p, ctx,
--                   dsa->method_mont_p);
-+
 +    if ((dsa)->meth->bn_mod_exp != NULL) {
 +            if (!dsa->meth->bn_mod_exp(dsa, r, dsa->g, k, dsa->p, ctx,
 +                                       dsa->method_mont_p))
 +                goto err;
-+    } else {
+     } else {
+-        K = k;
 +            if (!BN_mod_exp_mont(r, dsa->g, k, dsa->p, ctx, dsa->method_mont_p))
 +                goto err;
-+    }
+     }
+-    DSA_BN_MOD_EXP(goto err, dsa, r, dsa->g, K, dsa->p, ctx,
+-                   dsa->method_mont_p);
 +
      if (!BN_mod(r, r, dsa->q, ctx))
          goto err;
  
-@@ -311,7 +217,6 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
+@@ -311,7 +213,6 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
      if (ctx != ctx_in)
          BN_CTX_free(ctx);
      BN_clear_free(k);
@@ -46810,7 +51575,25 @@
      return ret;
  }
  
-@@ -391,9 +296,16 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len,
+@@ -321,7 +222,7 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len,
+     BN_CTX *ctx;
+     BIGNUM *u1, *u2, *t1;
+     BN_MONT_CTX *mont = NULL;
+-    BIGNUM *r, *s;
++    const BIGNUM *r, *s;
+     int ret = -1, i;
+     if (!dsa->p || !dsa->q || !dsa->g) {
+         DSAerr(DSA_F_DSA_DO_VERIFY, DSA_R_MISSING_PARAMETERS);
+@@ -346,7 +247,7 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len,
+     if (u1 == NULL || u2 == NULL || t1 == NULL || ctx == NULL)
+         goto err;
+ 
+-    DSA_SIG_get0(&r, &s, sig);
++    DSA_SIG_get0(sig, &r, &s);
+ 
+     if (BN_is_zero(r) || BN_is_negative(r) ||
+         BN_ucmp(r, dsa->q) >= 0) {
+@@ -391,9 +292,16 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len,
              goto err;
      }
  
@@ -46831,7 +51614,7 @@
      if (!BN_mod(u1, t1, dsa->q, ctx))
          goto err;
 diff --git a/crypto/dsa/dsa_pmeth.c b/crypto/dsa/dsa_pmeth.c
-index 8eca37fd0a4d..418095871ec2 100644
+index 8eca37f..4180958 100644
 --- a/crypto/dsa/dsa_pmeth.c
 +++ b/crypto/dsa/dsa_pmeth.c
 @@ -1,59 +1,10 @@
@@ -46900,7 +51683,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/dsa/dsa_prn.c b/crypto/dsa/dsa_prn.c
-index de3374562cde..f3c20ea0ac6c 100644
+index de33745..f3c20ea 100644
 --- a/crypto/dsa/dsa_prn.c
 +++ b/crypto/dsa/dsa_prn.c
 @@ -1,59 +1,10 @@
@@ -46969,10 +51752,10 @@
  
  #include <stdio.h>
 diff --git a/crypto/dsa/dsa_sign.c b/crypto/dsa/dsa_sign.c
-index b9dcd5b28d3a..56927945fe5f 100644
+index b9dcd5b..2e29d40 100644
 --- a/crypto/dsa/dsa_sign.c
 +++ b/crypto/dsa/dsa_sign.c
-@@ -1,58 +1,10 @@
+@@ -1,65 +1,16 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 +/*
@@ -47037,8 +51820,15 @@
   */
  
  /* Original version from Steven Schoch <schoch at sheba.arc.nasa.gov> */
+ 
+ #include "internal/cryptlib.h"
+ #include "dsa_locl.h"
+-#include <openssl/rand.h>
+ #include <openssl/bn.h>
+ 
+ DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
 diff --git a/crypto/dsa/dsa_vrf.c b/crypto/dsa/dsa_vrf.c
-index 6ce9968eafad..a84d521283c6 100644
+index 6ce9968..a84d521 100644
 --- a/crypto/dsa/dsa_vrf.c
 +++ b/crypto/dsa/dsa_vrf.c
 @@ -1,58 +1,10 @@
@@ -47108,7 +51898,7 @@
  /* Original version from Steven Schoch <schoch at sheba.arc.nasa.gov> */
 diff --git a/crypto/dsa/fips186a.txt b/crypto/dsa/fips186a.txt
 deleted file mode 100644
-index 974f255070c1..000000000000
+index 974f255..0000000
 --- a/crypto/dsa/fips186a.txt
 +++ /dev/null
 @@ -1,122 +0,0 @@
@@ -47236,7 +52026,7 @@
 -	8bac1ab6 6410435c b7181f95 b16ab97c 92b341c0
 diff --git a/crypto/dso/Makefile.in b/crypto/dso/Makefile.in
 deleted file mode 100644
-index e2fec28d4b22..000000000000
+index e2fec28..0000000
 --- a/crypto/dso/Makefile.in
 +++ /dev/null
 @@ -1,45 +0,0 @@
@@ -47287,7 +52077,7 @@
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/dso/README b/crypto/dso/README
 deleted file mode 100644
-index d0bc9a89fbd4..000000000000
+index d0bc9a8..0000000
 --- a/crypto/dso/README
 +++ /dev/null
 @@ -1,22 +0,0 @@
@@ -47314,7 +52104,7 @@
 -         finish with (return dso->meth->dso_name_converter(dso,NULL)).
 -
 diff --git a/crypto/dso/dso_dl.c b/crypto/dso/dso_dl.c
-index 5a138b308212..bc29fb23e039 100644
+index 5a138b3..bc29fb2 100644
 --- a/crypto/dso/dso_dl.c
 +++ b/crypto/dso/dso_dl.c
 @@ -1,59 +1,10 @@
@@ -47407,7 +52197,7 @@
      }
      return ((DSO_FUNC_TYPE)sym);
 diff --git a/crypto/dso/dso_dlfcn.c b/crypto/dso/dso_dlfcn.c
-index f1773c85dabc..624052b86a31 100644
+index f1773c8..624052b 100644
 --- a/crypto/dso/dso_dlfcn.c
 +++ b/crypto/dso/dso_dlfcn.c
 @@ -1,59 +1,10 @@
@@ -47476,7 +52266,7 @@
  
  /*
 diff --git a/crypto/dso/dso_err.c b/crypto/dso/dso_err.c
-index 136c4fe5b414..870c80beb0a4 100644
+index 136c4fe..870c80b 100644
 --- a/crypto/dso/dso_err.c
 +++ b/crypto/dso/dso_err.c
 @@ -1,61 +1,11 @@
@@ -47549,7 +52339,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/dso/dso_lib.c b/crypto/dso/dso_lib.c
-index a6cc700b2883..bea8776d71b8 100644
+index a6cc700..bea8776 100644
 --- a/crypto/dso/dso_lib.c
 +++ b/crypto/dso/dso_lib.c
 @@ -1,59 +1,10 @@
@@ -47626,7 +52416,7 @@
          OPENSSL_free(ret);
          return NULL;
 diff --git a/crypto/dso/dso_locl.h b/crypto/dso/dso_locl.h
-index 622e69ef83a2..19767871fa6f 100644
+index 622e69e..1976787 100644
 --- a/crypto/dso/dso_locl.h
 +++ b/crypto/dso/dso_locl.h
 @@ -1,11 +1,12 @@
@@ -47648,7 +52438,7 @@
  #include "internal/cryptlib.h"
  #include "internal/dso.h"
 diff --git a/crypto/dso/dso_openssl.c b/crypto/dso/dso_openssl.c
-index 62191d753889..6626331e9256 100644
+index 62191d7..6626331 100644
 --- a/crypto/dso/dso_openssl.c
 +++ b/crypto/dso/dso_openssl.c
 @@ -1,59 +1,10 @@
@@ -47717,7 +52507,7 @@
  
  #include "dso_locl.h"
 diff --git a/crypto/dso/dso_vms.c b/crypto/dso/dso_vms.c
-index 654e766764fd..90d387eb5363 100644
+index 654e766..90d387e 100644
 --- a/crypto/dso/dso_vms.c
 +++ b/crypto/dso/dso_vms.c
 @@ -1,59 +1,10 @@
@@ -47795,7 +52585,7 @@
      if (filename == NULL) {
          DSOerr(DSO_F_VMS_LOAD, DSO_R_NO_FILENAME);
 diff --git a/crypto/dso/dso_win32.c b/crypto/dso/dso_win32.c
-index 01d2a720204a..4ac6e7176d72 100644
+index 01d2a72..4ac6e71 100644
 --- a/crypto/dso/dso_win32.c
 +++ b/crypto/dso/dso_win32.c
 @@ -1,59 +1,10 @@
@@ -47864,7 +52654,7 @@
  
  #include "dso_locl.h"
 diff --git a/crypto/ebcdic.c b/crypto/ebcdic.c
-index 1248cba26070..68719538fb30 100644
+index 1248cba..6871953 100644
 --- a/crypto/ebcdic.c
 +++ b/crypto/ebcdic.c
 @@ -1,17 +1,103 @@
@@ -47975,7 +52765,7 @@
   * AG, Germany, for their BS2000 mainframe machines. Within the POSIX
 diff --git a/crypto/ec/Makefile.in b/crypto/ec/Makefile.in
 deleted file mode 100644
-index cc5e4b671f30..000000000000
+index cc5e4b6..0000000
 --- a/crypto/ec/Makefile.in
 +++ /dev/null
 @@ -1,73 +0,0 @@
@@ -48053,7 +52843,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/ec/asm/ecp_nistz256-armv4.pl b/crypto/ec/asm/ecp_nistz256-armv4.pl
-index 6eafaa0ad35f..62761f8c9616 100755
+index 6eafaa0..62761f8 100755
 --- a/crypto/ec/asm/ecp_nistz256-armv4.pl
 +++ b/crypto/ec/asm/ecp_nistz256-armv4.pl
 @@ -1,4 +1,11 @@
@@ -48070,7 +52860,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/ec/asm/ecp_nistz256-armv8.pl b/crypto/ec/asm/ecp_nistz256-armv8.pl
-index 53e974bdd403..c5c1280755c5 100644
+index 53e974b..c5c1280 100644
 --- a/crypto/ec/asm/ecp_nistz256-armv8.pl
 +++ b/crypto/ec/asm/ecp_nistz256-armv8.pl
 @@ -1,4 +1,11 @@
@@ -48087,7 +52877,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/ec/asm/ecp_nistz256-avx2.pl b/crypto/ec/asm/ecp_nistz256-avx2.pl
-index 43f3c1d7881f..3bdd2cf13f01 100755
+index 43f3c1d..3bdd2cf 100755
 --- a/crypto/ec/asm/ecp_nistz256-avx2.pl
 +++ b/crypto/ec/asm/ecp_nistz256-avx2.pl
 @@ -1,4 +1,11 @@
@@ -48104,7 +52894,7 @@
  ##############################################################################
  #                                                                            #
 diff --git a/crypto/ec/asm/ecp_nistz256-sparcv9.pl b/crypto/ec/asm/ecp_nistz256-sparcv9.pl
-index 3c4b0711fc33..3f39088661b5 100755
+index 3c4b071..3f39088 100755
 --- a/crypto/ec/asm/ecp_nistz256-sparcv9.pl
 +++ b/crypto/ec/asm/ecp_nistz256-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -48128,7 +52918,7 @@
  .size	ecp_nistz256_precomputed,.-ecp_nistz256_precomputed
  .align	64
  .LRR:	! 2^512 mod P precomputed for NIST P256 polynomial
-@@ -115,6 +123,7 @@ $code.=<<___;
+@@ -115,6 +123,7 @@ ecp_nistz256_to_mont:
  	nop
  	ret
  	restore
@@ -48136,7 +52926,7 @@
  .size	ecp_nistz256_to_mont,.-ecp_nistz256_to_mont
  
  ! void	ecp_nistz256_from_mont(BN_ULONG %i0[8],const BN_ULONG %i1[8]);
-@@ -129,6 +138,7 @@ $code.=<<___;
+@@ -129,6 +138,7 @@ ecp_nistz256_from_mont:
  	nop
  	ret
  	restore
@@ -48144,7 +52934,7 @@
  .size	ecp_nistz256_from_mont,.-ecp_nistz256_from_mont
  
  ! void	ecp_nistz256_mul_mont(BN_ULONG %i0[8],const BN_ULONG %i1[8],
-@@ -142,6 +152,7 @@ $code.=<<___;
+@@ -142,6 +152,7 @@ ecp_nistz256_mul_mont:
  	nop
  	ret
  	restore
@@ -48152,7 +52942,7 @@
  .size	ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont
  
  ! void	ecp_nistz256_sqr_mont(BN_ULONG %i0[8],const BN_ULONG %i2[8]);
-@@ -154,6 +165,7 @@ $code.=<<___;
+@@ -154,6 +165,7 @@ ecp_nistz256_sqr_mont:
  	nop
  	ret
  	restore
@@ -48168,7 +52958,7 @@
  .size	__ecp_nistz256_mul_mont,.-__ecp_nistz256_mul_mont
  
  ! void	ecp_nistz256_add(BN_ULONG %i0[8],const BN_ULONG %i1[8],
-@@ -372,6 +385,7 @@ $code.=<<___;
+@@ -372,6 +385,7 @@ ecp_nistz256_add:
  	ld	[$ap+28], at acc[7]
  	ret
  	restore
@@ -48176,7 +52966,7 @@
  .size	ecp_nistz256_add,.-ecp_nistz256_add
  
  .align	32
-@@ -422,6 +436,7 @@ $code.=<<___;
+@@ -422,6 +436,7 @@ __ecp_nistz256_add:
  	st	@acc[6],[$rp+24]
  	retl
  	st	@acc[7],[$rp+28]
@@ -48184,7 +52974,7 @@
  .size	__ecp_nistz256_add,.-__ecp_nistz256_add
  
  ! void	ecp_nistz256_mul_by_2(BN_ULONG %i0[8],const BN_ULONG %i1[8]);
-@@ -440,6 +455,7 @@ $code.=<<___;
+@@ -440,6 +455,7 @@ ecp_nistz256_mul_by_2:
  	ld	[$ap+28], at acc[7]
  	ret
  	restore
@@ -48192,7 +52982,7 @@
  .size	ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2
  
  .align	32
-@@ -454,6 +470,7 @@ $code.=<<___;
+@@ -454,6 +470,7 @@ __ecp_nistz256_mul_by_2:
  	addccc	@acc[7], at acc[7], at acc[7]
  	b	.Lreduce_by_sub
  	subc	%g0,%g0,$carry		! broadcast carry bit
@@ -48200,7 +52990,7 @@
  .size	__ecp_nistz256_mul_by_2,.-__ecp_nistz256_mul_by_2
  
  ! void	ecp_nistz256_mul_by_3(BN_ULONG %i0[8],const BN_ULONG %i1[8]);
-@@ -472,6 +489,7 @@ $code.=<<___;
+@@ -472,6 +489,7 @@ ecp_nistz256_mul_by_3:
  	ld	[$ap+28], at acc[7]
  	ret
  	restore
@@ -48208,7 +52998,7 @@
  .size	ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3
  
  .align	32
-@@ -506,6 +524,7 @@ $code.=<<___;
+@@ -506,6 +524,7 @@ __ecp_nistz256_mul_by_3:
  	addccc	$t7, at acc[7], at acc[7]
  	b	.Lreduce_by_sub
  	subc	%g0,%g0,$carry		! broadcast carry bit
@@ -48216,7 +53006,7 @@
  .size	__ecp_nistz256_mul_by_3,.-__ecp_nistz256_mul_by_3
  
  ! void	ecp_nistz256_sub(BN_ULONG %i0[8],const BN_ULONG %i1[8],
-@@ -525,6 +544,7 @@ $code.=<<___;
+@@ -525,6 +544,7 @@ ecp_nistz256_sub:
  	ld	[$ap+28], at acc[7]
  	ret
  	restore
@@ -48224,7 +53014,7 @@
  .size	ecp_nistz256_sub,.-ecp_nistz256_sub
  
  ! void	ecp_nistz256_neg(BN_ULONG %i0[8],const BN_ULONG %i1[8]);
-@@ -544,6 +564,7 @@ $code.=<<___;
+@@ -544,6 +564,7 @@ ecp_nistz256_neg:
  	mov	0, at acc[7]
  	ret
  	restore
@@ -48232,7 +53022,7 @@
  .size	ecp_nistz256_neg,.-ecp_nistz256_neg
  
  .align	32
-@@ -594,6 +615,7 @@ $code.=<<___;
+@@ -594,6 +615,7 @@ __ecp_nistz256_sub_from:
  	st	@acc[6],[$rp+24]
  	retl
  	st	@acc[7],[$rp+28]
@@ -48240,7 +53030,7 @@
  .size	__ecp_nistz256_sub_from,.-__ecp_nistz256_sub_from
  
  .align	32
-@@ -616,6 +638,7 @@ $code.=<<___;
+@@ -616,6 +638,7 @@ __ecp_nistz256_sub_morf:
  	subccc	$t7, at acc[7], at acc[7]
  	b	.Lreduce_by_add
  	subc	%g0,%g0,$carry		! broadcast borrow bit
@@ -48248,7 +53038,7 @@
  .size	__ecp_nistz256_sub_morf,.-__ecp_nistz256_sub_morf
  
  ! void	ecp_nistz256_div_by_2(BN_ULONG %i0[8],const BN_ULONG %i1[8]);
-@@ -634,6 +657,7 @@ $code.=<<___;
+@@ -634,6 +657,7 @@ ecp_nistz256_div_by_2:
  	ld	[$ap+28], at acc[7]
  	ret
  	restore
@@ -48256,7 +53046,7 @@
  .size	ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2
  
  .align	32
-@@ -687,6 +711,7 @@ $code.=<<___;
+@@ -687,6 +711,7 @@ __ecp_nistz256_div_by_2:
  	st	@acc[6],[$rp+24]
  	retl
  	st	@acc[7],[$rp+28]
@@ -48264,7 +53054,7 @@
  .size	__ecp_nistz256_div_by_2,.-__ecp_nistz256_div_by_2
  ___
  
-@@ -816,6 +841,7 @@ SPARC_PIC_THUNK(%g1)
+@@ -816,6 +841,7 @@ ecp_nistz256_point_double:
  
  	ret
  	restore
@@ -48288,7 +53078,7 @@
  .size	ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine
  ___
  }								}}}
-@@ -1416,6 +1444,7 @@ $code.=<<___;
+@@ -1416,6 +1444,7 @@ ecp_nistz256_scatter_w5:
  
  	ret
  	restore
@@ -48296,7 +53086,7 @@
  .size	ecp_nistz256_scatter_w5,.-ecp_nistz256_scatter_w5
  
  ! void	ecp_nistz256_gather_w5(P256_POINT *%i0,const void *%i1,
-@@ -1513,6 +1542,7 @@ $code.=<<___;
+@@ -1513,6 +1542,7 @@ ecp_nistz256_gather_w5:
  
  	ret
  	restore
@@ -48304,7 +53094,7 @@
  .size	ecp_nistz256_gather_w5,.-ecp_nistz256_gather_w5
  
  ! void	ecp_nistz256_scatter_w7(void *%i0,const P256_POINT_AFFINE *%i1,
-@@ -1540,6 +1570,7 @@ $code.=<<___;
+@@ -1540,6 +1570,7 @@ ecp_nistz256_scatter_w7:
  
  	ret
  	restore
@@ -48312,7 +53102,7 @@
  .size	ecp_nistz256_scatter_w7,.-ecp_nistz256_scatter_w7
  
  ! void	ecp_nistz256_gather_w7(P256_POINT_AFFINE *%i0,const void *%i1,
-@@ -1580,6 +1611,7 @@ $code.=<<___;
+@@ -1580,6 +1611,7 @@ ecp_nistz256_gather_w7:
  
  	ret
  	restore
@@ -48320,7 +53110,7 @@
  .size	ecp_nistz256_gather_w7,.-ecp_nistz256_gather_w7
  ___
  }}}
-@@ -1607,6 +1639,7 @@ $code.=<<___;
+@@ -1607,6 +1639,7 @@ __ecp_nistz256_mul_by_2_vis3:
  	addxccc	$acc3,$acc3,$acc3
  	b	.Lreduce_by_sub_vis3
  	addxc	%g0,%g0,$acc4		! did it carry?
@@ -48328,7 +53118,7 @@
  .size	__ecp_nistz256_mul_by_2_vis3,.-__ecp_nistz256_mul_by_2_vis3
  
  .align	32
-@@ -1640,6 +1673,7 @@ $code.=<<___;
+@@ -1640,6 +1673,7 @@ __ecp_nistz256_add_noload_vis3:
  	stx	$acc2,[$rp+16]
  	retl
  	stx	$acc3,[$rp+24]
@@ -48336,7 +53126,7 @@
  .size	__ecp_nistz256_add_vis3,.-__ecp_nistz256_add_vis3
  
  ! Trouble with subtraction is that there is no subtraction with 64-bit
-@@ -1686,6 +1720,7 @@ $code.=<<___;
+@@ -1686,6 +1720,7 @@ __ecp_nistz256_sub_from_vis3:
  	subc	%g0,%g0,$acc4		! did it borrow?
  	b	.Lreduce_by_add_vis3
  	or	$acc3,$acc5,$acc3
@@ -48344,7 +53134,7 @@
  .size	__ecp_nistz256_sub_from_vis3,.-__ecp_nistz256_sub_from_vis3
  
  .align	32
-@@ -1744,6 +1779,7 @@ $code.=<<___;
+@@ -1744,6 +1779,7 @@ __ecp_nistz256_sub_morf_vis3:
  	stx	$acc2,[$rp+16]
  	retl
  	stx	$acc3,[$rp+24]
@@ -48352,7 +53142,7 @@
  .size	__ecp_nistz256_sub_morf_vis3,.-__ecp_nistz256_sub_morf_vis3
  
  .align	32
-@@ -1784,6 +1820,7 @@ $code.=<<___;
+@@ -1784,6 +1820,7 @@ __ecp_nistz256_div_by_2_vis3:
  	stx	$acc2,[$rp+16]
  	retl
  	stx	$acc3,[$rp+24]
@@ -48376,7 +53166,7 @@
  .size	__ecp_nistz256_sqr_mont_vis3,.-__ecp_nistz256_sqr_mont_vis3
  ___
  
-@@ -2268,6 +2307,7 @@ $code.=<<___;
+@@ -2268,6 +2307,7 @@ ecp_nistz256_point_double_vis3:
  
  	ret
  	restore
@@ -48401,7 +53191,7 @@
  .align	64
  .Lone_mont_vis3:
 diff --git a/crypto/ec/asm/ecp_nistz256-x86.pl b/crypto/ec/asm/ecp_nistz256-x86.pl
-index 7aa9b0f78ce8..e9fa038a0b34 100755
+index 7aa9b0f..e9fa038 100755
 --- a/crypto/ec/asm/ecp_nistz256-x86.pl
 +++ b/crypto/ec/asm/ecp_nistz256-x86.pl
 @@ -1,4 +1,11 @@
@@ -48418,7 +53208,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/ec/asm/ecp_nistz256-x86_64.pl b/crypto/ec/asm/ecp_nistz256-x86_64.pl
-index 824d7b51583d..cce92b99f7a2 100755
+index 824d7b5..cce92b9 100755
 --- a/crypto/ec/asm/ecp_nistz256-x86_64.pl
 +++ b/crypto/ec/asm/ecp_nistz256-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -48444,7 +53234,7 @@
  
  if (`$ENV{CC} -Wa,-v -c -o /dev/null -x assembler /dev/null 2>&1`
 diff --git a/crypto/ec/curve25519.c b/crypto/ec/curve25519.c
-index 3dbf4ac2abe1..e535823c0f75 100644
+index 3dbf4ac..e535823 100644
 --- a/crypto/ec/curve25519.c
 +++ b/crypto/ec/curve25519.c
 @@ -1,50 +1,10 @@
@@ -48608,7 +53398,7 @@
  }
  
 diff --git a/crypto/ec/ec2_mult.c b/crypto/ec/ec2_mult.c
-index c9723bff8e27..d253eba51b5a 100644
+index c9723bf..d253eba 100644
 --- a/crypto/ec/ec2_mult.c
 +++ b/crypto/ec/ec2_mult.c
 @@ -1,3 +1,12 @@
@@ -48685,7 +53475,7 @@
  #include <openssl/err.h>
  
 diff --git a/crypto/ec/ec2_oct.c b/crypto/ec/ec2_oct.c
-index 8c88607213e9..ea88ce860a9a 100644
+index 8c88607..ea88ce8 100644
 --- a/crypto/ec/ec2_oct.c
 +++ b/crypto/ec/ec2_oct.c
 @@ -1,3 +1,12 @@
@@ -48783,7 +53573,7 @@
  
   err:
 diff --git a/crypto/ec/ec2_smpl.c b/crypto/ec/ec2_smpl.c
-index 8d8d85386f9c..cfeef5fc7495 100644
+index 8d8d853..cfeef5f 100644
 --- a/crypto/ec/ec2_smpl.c
 +++ b/crypto/ec/ec2_smpl.c
 @@ -1,3 +1,12 @@
@@ -48860,7 +53650,7 @@
  #include <openssl/err.h>
  
 diff --git a/crypto/ec/ec_25519.c b/crypto/ec/ec_25519.c
-index 3acb27534431..4a9e3c9ff0db 100644
+index 3acb275..035a415 100644
 --- a/crypto/ec/ec_25519.c
 +++ b/crypto/ec/ec_25519.c
 @@ -1,54 +1,10 @@
@@ -48870,8 +53660,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2016 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -48888,7 +53677,8 @@
 - *    software must display the following acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
@@ -48923,8 +53713,20 @@
   */
  
  #include <string.h>
+@@ -297,9 +253,9 @@ static int x25519_compute_key(unsigned char **psec, size_t *pseclen,
+                               const EC_POINT *pub_key, const EC_KEY *ecdh)
+ {
+     unsigned char *key;
+-    int ret = -1;
++    int ret = 0;
+     if (ecdh->custom_data == NULL)
+-        return -1;
++        return 0;
+     key = OPENSSL_malloc(EC_X25519_KEYLEN);
+     if (key == NULL)
+         return 0;
 diff --git a/crypto/ec/ec_ameth.c b/crypto/ec/ec_ameth.c
-index ca354c05cd73..6567a2f398cf 100644
+index ca354c0..6567a2f 100644
 --- a/crypto/ec/ec_ameth.c
 +++ b/crypto/ec/ec_ameth.c
 @@ -1,59 +1,10 @@
@@ -49002,7 +53804,7 @@
      return 0;
  }
 diff --git a/crypto/ec/ec_asn1.c b/crypto/ec/ec_asn1.c
-index bc4387837d8e..9272e1f1bae9 100644
+index bc43878..be7a96b 100644
 --- a/crypto/ec/ec_asn1.c
 +++ b/crypto/ec/ec_asn1.c
 @@ -1,58 +1,10 @@
@@ -49069,8 +53871,35 @@
   */
  
  #include <string.h>
+@@ -1220,7 +1172,7 @@ DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG)
+ DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG)
+ IMPLEMENT_ASN1_FUNCTIONS_const(ECDSA_SIG)
+ 
+-void ECDSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, const ECDSA_SIG *sig)
++void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps)
+ {
+     if (pr != NULL)
+         *pr = sig->r;
+@@ -1228,6 +1180,17 @@ void ECDSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, const ECDSA_SIG *sig)
+         *ps = sig->s;
+ }
+ 
++int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s)
++{
++    if (r == NULL || s == NULL)
++        return 0;
++    BN_clear_free(sig->r);
++    BN_clear_free(sig->s);
++    sig->r = r;
++    sig->s = s;
++    return 1;
++}
++
+ int ECDSA_size(const EC_KEY *r)
+ {
+     int ret, i;
 diff --git a/crypto/ec/ec_check.c b/crypto/ec/ec_check.c
-index 601559f4c488..eeb06ec1cbe3 100644
+index 601559f..eeb06ec 100644
 --- a/crypto/ec/ec_check.c
 +++ b/crypto/ec/ec_check.c
 @@ -1,55 +1,10 @@
@@ -49155,7 +53984,7 @@
      EC_POINT_free(point);
      return ret;
 diff --git a/crypto/ec/ec_curve.c b/crypto/ec/ec_curve.c
-index a95d519f475d..6e125f4bda4b 100644
+index a95d519..6e125f4 100644
 --- a/crypto/ec/ec_curve.c
 +++ b/crypto/ec/ec_curve.c
 @@ -1,59 +1,12 @@
@@ -49213,9 +54042,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -49226,7 +54054,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   *
 diff --git a/crypto/ec/ec_cvt.c b/crypto/ec/ec_cvt.c
-index c9951414c994..bfff6d65f7b4 100644
+index c995141..bfff6d6 100644
 --- a/crypto/ec/ec_cvt.c
 +++ b/crypto/ec/ec_cvt.c
 @@ -1,59 +1,12 @@
@@ -49284,9 +54112,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -49297,7 +54124,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   *
 diff --git a/crypto/ec/ec_err.c b/crypto/ec/ec_err.c
-index 8e2a7fc1b051..56aacd4a0028 100644
+index 8e2a7fc..56aacd4 100644
 --- a/crypto/ec/ec_err.c
 +++ b/crypto/ec/ec_err.c
 @@ -1,61 +1,11 @@
@@ -49496,7 +54323,7 @@
      {ERR_REASON(EC_R_NO_PRIVATE_VALUE), "no private value"},
      {ERR_REASON(EC_R_OPERATION_NOT_SUPPORTED), "operation not supported"},
 diff --git a/crypto/ec/ec_key.c b/crypto/ec/ec_key.c
-index f7948ccab2aa..b3ea1b046d53 100644
+index f7948cc..b3ea1b0 100644
 --- a/crypto/ec/ec_key.c
 +++ b/crypto/ec/ec_key.c
 @@ -1,59 +1,12 @@
@@ -49554,9 +54381,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -49647,7 +54473,7 @@
      if (key->meth->set_private != NULL
          && key->meth->set_private(key, priv_key) == 0)
 diff --git a/crypto/ec/ec_kmeth.c b/crypto/ec/ec_kmeth.c
-index 003421eabe8e..eb469ba3adfe 100644
+index 003421e..eb469ba 100644
 --- a/crypto/ec/ec_kmeth.c
 +++ b/crypto/ec/ec_kmeth.c
 @@ -1,54 +1,10 @@
@@ -49657,8 +54483,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -49675,7 +54500,8 @@
 - *    software must display the following acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
@@ -49776,7 +54602,7 @@
  
  int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
 diff --git a/crypto/ec/ec_lcl.h b/crypto/ec/ec_lcl.h
-index 15caf4ed0f73..2cef3bced4ad 100644
+index 15caf4e..2cef3bc 100644
 --- a/crypto/ec/ec_lcl.h
 +++ b/crypto/ec/ec_lcl.h
 @@ -1,59 +1,12 @@
@@ -49834,9 +54660,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -49847,7 +54672,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   *
 diff --git a/crypto/ec/ec_lib.c b/crypto/ec/ec_lib.c
-index 67e322fbb3dd..fa74ee764477 100644
+index 67e322f..fa74ee7 100644
 --- a/crypto/ec/ec_lib.c
 +++ b/crypto/ec/ec_lib.c
 @@ -1,59 +1,12 @@
@@ -49905,9 +54730,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -49952,7 +54776,7 @@
  #endif
  
 diff --git a/crypto/ec/ec_mult.c b/crypto/ec/ec_mult.c
-index 3c283e5ed6b5..036cdde490ba 100644
+index 3c283e5..036cdde 100644
 --- a/crypto/ec/ec_mult.c
 +++ b/crypto/ec/ec_mult.c
 @@ -1,59 +1,12 @@
@@ -50010,9 +54834,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -50039,7 +54862,7 @@
                          }
                          tmp_len -= blocksize;
 diff --git a/crypto/ec/ec_oct.c b/crypto/ec/ec_oct.c
-index d6bb62af1572..effc42a344da 100644
+index d6bb62a..effc42a 100644
 --- a/crypto/ec/ec_oct.c
 +++ b/crypto/ec/ec_oct.c
 @@ -1,59 +1,12 @@
@@ -50097,9 +54920,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -50110,7 +54932,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   * Binary polynomial ECC support in OpenSSL originally developed by
 diff --git a/crypto/ec/ec_pmeth.c b/crypto/ec/ec_pmeth.c
-index bcb506385310..68ff2bbccf45 100644
+index bcb5063..68ff2bb 100644
 --- a/crypto/ec/ec_pmeth.c
 +++ b/crypto/ec/ec_pmeth.c
 @@ -1,59 +1,10 @@
@@ -50179,7 +55001,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/ec/ec_print.c b/crypto/ec/ec_print.c
-index b80ce384fcb5..1afa2ce875a7 100644
+index b80ce38..1afa2ce 100644
 --- a/crypto/ec/ec_print.c
 +++ b/crypto/ec/ec_print.c
 @@ -1,55 +1,10 @@
@@ -50245,7 +55067,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/ec/ecdh_kdf.c b/crypto/ec/ecdh_kdf.c
-index e60574f5f53c..6cb0e11c22b8 100644
+index e60574f..6cb0e11 100644
 --- a/crypto/ec/ecdh_kdf.c
 +++ b/crypto/ec/ecdh_kdf.c
 @@ -1,53 +1,10 @@
@@ -50254,8 +55076,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2013 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -50286,7 +55107,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -50308,7 +55130,7 @@
  
  #include <string.h>
 diff --git a/crypto/ec/ecdh_ossl.c b/crypto/ec/ecdh_ossl.c
-index d1bebc4c4b98..715465c5fbf3 100644
+index d1bebc4..caf65de 100644
 --- a/crypto/ec/ecdh_ossl.c
 +++ b/crypto/ec/ecdh_ossl.c
 @@ -1,3 +1,12 @@
@@ -50384,8 +55206,17 @@
  
  #include <string.h>
  #include <limits.h>
+@@ -82,7 +38,7 @@ int ossl_ecdh_compute_key(unsigned char **psec, size_t *pseclen,
+ {
+     if (ecdh->group->meth->ecdh_compute_key == NULL) {
+         ECerr(EC_F_OSSL_ECDH_COMPUTE_KEY, EC_R_CURVE_DOES_NOT_SUPPORT_ECDH);
+-        return -1;
++        return 0;
+     }
+ 
+     return ecdh->group->meth->ecdh_compute_key(psec, pseclen, pub_key, ecdh);
 diff --git a/crypto/ec/ecdsa_ossl.c b/crypto/ec/ecdsa_ossl.c
-index 113bcdfa20f9..6ff5a462d345 100644
+index 113bcdf..6ff5a46 100644
 --- a/crypto/ec/ecdsa_ossl.c
 +++ b/crypto/ec/ecdsa_ossl.c
 @@ -1,58 +1,10 @@
@@ -50453,10 +55284,10 @@
  
  #include <string.h>
 diff --git a/crypto/ec/ecdsa_sign.c b/crypto/ec/ecdsa_sign.c
-index 738c276ae97a..84a56a36d2f1 100644
+index 738c276..aee06e9 100644
 --- a/crypto/ec/ecdsa_sign.c
 +++ b/crypto/ec/ecdsa_sign.c
-@@ -1,55 +1,10 @@
+@@ -1,61 +1,14 @@
 -/* ====================================================================
 - * Copyright (c) 1998-2002 The OpenSSL Project.  All rights reserved.
 - *
@@ -50518,11 +55349,17 @@
   */
  
  #include <openssl/ec.h>
+ #include "ec_lcl.h"
+-#include <openssl/engine.h>
+-#include <openssl/rand.h>
+ #include <openssl/err.h>
+ 
+ ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey)
 diff --git a/crypto/ec/ecdsa_vrf.c b/crypto/ec/ecdsa_vrf.c
-index f519b598070d..bc9ebf402543 100644
+index f519b59..f61a200 100644
 --- a/crypto/ec/ecdsa_vrf.c
 +++ b/crypto/ec/ecdsa_vrf.c
-@@ -1,58 +1,10 @@
+@@ -1,64 +1,14 @@
  /*
 - * Written by Nils Larsch for the OpenSSL project
 - */
@@ -50586,8 +55423,14 @@
   */
  
  #include <openssl/ec.h>
+ #include "ec_lcl.h"
+-#include <string.h>
+-#include <openssl/engine.h>
+ #include <openssl/err.h>
+ 
+ /*-
 diff --git a/crypto/ec/eck_prn.c b/crypto/ec/eck_prn.c
-index eacdb9ed722b..c23d36f5d849 100644
+index eacdb9e..c23d36f 100644
 --- a/crypto/ec/eck_prn.c
 +++ b/crypto/ec/eck_prn.c
 @@ -1,59 +1,12 @@
@@ -50645,9 +55488,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -50658,7 +55500,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   * Portions originally developed by SUN MICROSYSTEMS, INC., and
 diff --git a/crypto/ec/ecp_mont.c b/crypto/ec/ecp_mont.c
-index aa1f45135918..a9c6040937c0 100644
+index aa1f451..a9c6040 100644
 --- a/crypto/ec/ecp_mont.c
 +++ b/crypto/ec/ecp_mont.c
 @@ -1,59 +1,12 @@
@@ -50716,9 +55558,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -50729,7 +55570,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   * Portions of this software developed by SUN MICROSYSTEMS, INC.,
 diff --git a/crypto/ec/ecp_nist.c b/crypto/ec/ecp_nist.c
-index c4729bf95fc9..615563bc38e0 100644
+index c4729bf..615563b 100644
 --- a/crypto/ec/ecp_nist.c
 +++ b/crypto/ec/ecp_nist.c
 @@ -1,59 +1,12 @@
@@ -50787,9 +55628,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -50800,7 +55640,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   * Portions of this software developed by SUN MICROSYSTEMS, INC.,
 diff --git a/crypto/ec/ecp_nistp224.c b/crypto/ec/ecp_nistp224.c
-index 78bdc355bd0f..0c11abc0895f 100644
+index 78bdc35..0c11abc 100644
 --- a/crypto/ec/ecp_nistp224.c
 +++ b/crypto/ec/ecp_nistp224.c
 @@ -1,6 +1,12 @@
@@ -50818,7 +55658,7 @@
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
 diff --git a/crypto/ec/ecp_nistp256.c b/crypto/ec/ecp_nistp256.c
-index 2da266cb6ead..8cd72228540c 100644
+index 2da266c..8cd7222 100644
 --- a/crypto/ec/ecp_nistp256.c
 +++ b/crypto/ec/ecp_nistp256.c
 @@ -1,6 +1,12 @@
@@ -50836,7 +55676,7 @@
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
 diff --git a/crypto/ec/ecp_nistp521.c b/crypto/ec/ecp_nistp521.c
-index a9b4295e3061..7207494b8d77 100644
+index a9b4295..7207494 100644
 --- a/crypto/ec/ecp_nistp521.c
 +++ b/crypto/ec/ecp_nistp521.c
 @@ -1,6 +1,12 @@
@@ -50854,7 +55694,7 @@
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
 diff --git a/crypto/ec/ecp_nistputil.c b/crypto/ec/ecp_nistputil.c
-index 01c88d8e5b6f..97fb63100586 100644
+index 01c88d8..97fb631 100644
 --- a/crypto/ec/ecp_nistputil.c
 +++ b/crypto/ec/ecp_nistputil.c
 @@ -1,6 +1,12 @@
@@ -50872,7 +55712,7 @@
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
 diff --git a/crypto/ec/ecp_nistz256.c b/crypto/ec/ecp_nistz256.c
-index f2ef9be7f8c0..f824a8267e54 100644
+index f2ef9be..f824a82 100644
 --- a/crypto/ec/ecp_nistz256.c
 +++ b/crypto/ec/ecp_nistz256.c
 @@ -1,3 +1,12 @@
@@ -50902,7 +55742,7 @@
  
          ecp_nistz256_scatter_w5  (row, &temp[0], 1);
 diff --git a/crypto/ec/ecp_nistz256_table.c b/crypto/ec/ecp_nistz256_table.c
-index 216d024e0120..3f5625c6c5eb 100644
+index 216d024..3f5625c 100644
 --- a/crypto/ec/ecp_nistz256_table.c
 +++ b/crypto/ec/ecp_nistz256_table.c
 @@ -1,4 +1,13 @@
@@ -50920,7 +55760,7 @@
   * ecp_montp256.c, for the default generator. The table consists of 37
   * subtables, each subtable contains 64 affine points. The affine points are
 diff --git a/crypto/ec/ecp_oct.c b/crypto/ec/ecp_oct.c
-index 14f62522cb5d..4d142a4ab96c 100644
+index 14f6252..4d142a4 100644
 --- a/crypto/ec/ecp_oct.c
 +++ b/crypto/ec/ecp_oct.c
 @@ -1,61 +1,12 @@
@@ -50980,9 +55820,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -51014,7 +55853,7 @@
  
   err:
 diff --git a/crypto/ec/ecp_smpl.c b/crypto/ec/ecp_smpl.c
-index a5f36103789b..76e0caf907ff 100644
+index a5f3610..76e0caf 100644
 --- a/crypto/ec/ecp_smpl.c
 +++ b/crypto/ec/ecp_smpl.c
 @@ -1,61 +1,12 @@
@@ -51074,9 +55913,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -51088,7 +55926,7 @@
   * Portions of this software developed by SUN MICROSYSTEMS, INC.,
 diff --git a/crypto/engine/Makefile.in b/crypto/engine/Makefile.in
 deleted file mode 100644
-index 9f4edc6a4c1d..000000000000
+index 9f4edc6..0000000
 --- a/crypto/engine/Makefile.in
 +++ /dev/null
 @@ -1,53 +0,0 @@
@@ -51146,7 +55984,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/engine/eng_all.c b/crypto/engine/eng_all.c
-index 6df6ef1f2423..4600acb69991 100644
+index 6df6ef1..4600acb 100644
 --- a/crypto/engine/eng_all.c
 +++ b/crypto/engine/eng_all.c
 @@ -1,59 +1,10 @@
@@ -51215,7 +56053,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/engine/eng_cnf.c b/crypto/engine/eng_cnf.c
-index 400b2291d855..8bea37fe28c7 100644
+index 400b229..8bea37f 100644
 --- a/crypto/engine/eng_cnf.c
 +++ b/crypto/engine/eng_cnf.c
 @@ -1,59 +1,10 @@
@@ -51284,7 +56122,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/eng_cryptodev.c b/crypto/engine/eng_cryptodev.c
-index 195912348c9c..a2acabeeb133 100644
+index 1959123..cd362be 100644
 --- a/crypto/engine/eng_cryptodev.c
 +++ b/crypto/engine/eng_cryptodev.c
 @@ -1,4 +1,13 @@
@@ -51301,6 +56139,25 @@
   * Copyright (c) 2002 Bob Beck <beck at openbsd.org>
   * Copyright (c) 2002 Theo de Raadt
   * Copyright (c) 2002 Markus Friedl
+@@ -124,13 +133,13 @@ static int cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa,
+ static int cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa,
+                                  BN_CTX *ctx);
+ #ifndef OPENSSL_NO_DSA
+-static int cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, BIGNUM *a,
++static int cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, const BIGNUM *a,
+                                     const BIGNUM *p, const BIGNUM *m,
+                                     BN_CTX *ctx, BN_MONT_CTX *m_ctx);
+-static int cryptodev_dsa_dsa_mod_exp(DSA *dsa, BIGNUM *t1, BIGNUM *g,
+-                                     BIGNUM *u1, BIGNUM *pub_key, BIGNUM *u2,
+-                                     BIGNUM *p, BN_CTX *ctx,
+-                                     BN_MONT_CTX *mont);
++static int cryptodev_dsa_dsa_mod_exp(DSA *dsa, BIGNUM *t1, const BIGNUM *g,
++                                     const BIGNUM *u1, const BIGNUM *pub_key,
++                                     const BIGNUM *u2, const BIGNUM *p,
++                                     BN_CTX *ctx, BN_MONT_CTX *mont);
+ static DSA_SIG *cryptodev_dsa_do_sign(const unsigned char *dgst, int dlen,
+                                       DSA *dsa);
+ static int cryptodev_dsa_verify(const unsigned char *dgst, int dgst_len,
 @@ -446,7 +455,7 @@ cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
      cryp.op = EVP_CIPHER_CTX_encrypting(ctx) ? COP_ENCRYPT : COP_DECRYPT;
  
@@ -51357,8 +56214,147 @@
  }
  
  static int
+@@ -1337,8 +1353,8 @@ cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa,
+                             BN_CTX *ctx)
+ {
+     int r;
+-    BIGNUM *n = NULL;
+-    BIGNUM *d = NULL;
++    const BIGNUM *n = NULL;
++    const BIGNUM *d = NULL;
+ 
+     ctx = BN_CTX_new();
+     RSA_get0_key(rsa, &n, NULL, &d);
+@@ -1352,12 +1368,12 @@ cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
+ {
+     struct crypt_kop kop;
+     int ret = 1;
+-    BIGNUM *p = NULL;
+-    BIGNUM *q = NULL;
+-    BIGNUM *dmp1 = NULL;
+-    BIGNUM *dmq1 = NULL;
+-    BIGNUM *iqmp = NULL;
+-    BIGNUM *n = NULL;
++    const BIGNUM *p = NULL;
++    const BIGNUM *q = NULL;
++    const BIGNUM *dmp1 = NULL;
++    const BIGNUM *dmq1 = NULL;
++    const BIGNUM *iqmp = NULL;
++    const BIGNUM *n = NULL;
+ 
+     RSA_get0_factors(rsa, &p, &q);
+     RSA_get0_crt_params(rsa, &dmp1, &dmq1, &iqmp);
+@@ -1404,21 +1420,23 @@ cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
+ 
+ #ifndef OPENSSL_NO_DSA
+ static int
+-cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, BIGNUM *a, const BIGNUM *p,
++cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
+                          const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
+ {
+-    return (cryptodev_bn_mod_exp(r, a, p, m, ctx, m_ctx));
++    return cryptodev_bn_mod_exp(r, a, p, m, ctx, m_ctx);
+ }
+ 
+ static int
+-cryptodev_dsa_dsa_mod_exp(DSA *dsa, BIGNUM *t1, BIGNUM *g,
+-                          BIGNUM *u1, BIGNUM *pub_key, BIGNUM *u2, BIGNUM *p,
+-                          BN_CTX *ctx, BN_MONT_CTX *mont)
++cryptodev_dsa_dsa_mod_exp(DSA *dsa, BIGNUM *t1, const BIGNUM *g,
++                          const BIGNUM *u1, const BIGNUM *pub_key,
++                          const BIGNUM *u2, const BIGNUM *p, BN_CTX *ctx,
++                          BN_MONT_CTX *mont)
+ {
+-    BIGNUM *t2, *dsag, *dsap, *dsapub_key;
++    const BIGNUM *dsag, *dsap, *dsapub_key;
++    BIGNUM *t2;
+     int ret = 0;
+     const DSA_METHOD *meth;
+-    int (*bn_mod_exp)(DSA *, BIGNUM *, BIGNUM *, const BIGNUM *, const BIGNUM *,
++    int (*bn_mod_exp)(DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *,
+                       BN_CTX *, BN_MONT_CTX *);
+ 
+     t2 = BN_new();
+@@ -1445,12 +1463,10 @@ cryptodev_dsa_dsa_mod_exp(DSA *dsa, BIGNUM *t1, BIGNUM *g,
+     /* let t2 = y ^ u2 mod p */
+     if (!bn_mod_exp(dsa, t2, dsapub_key, u2, dsap, ctx, mont))
+         goto err;
+-    /* let u1 = t1 * t2 mod p */
+-    if (!BN_mod_mul(u1, t1, t2, dsap, ctx))
++    /* let t1 = t1 * t2 mod p */
++    if (!BN_mod_mul(t1, t1, t2, dsap, ctx))
+         goto err;
+ 
+-    BN_copy(t1, u1);
+-
+     ret = 1;
+  err:
+     BN_free(t2);
+@@ -1461,14 +1477,14 @@ static DSA_SIG *cryptodev_dsa_do_sign(const unsigned char *dgst, int dlen,
+                                       DSA *dsa)
+ {
+     struct crypt_kop kop;
+-    BIGNUM *r = NULL, *s = NULL, *dsap = NULL, *dsaq = NULL, *dsag = NULL;
+-    BIGNUM *priv_key = NULL;
++    BIGNUM *r, *s;
++    const BIGNUM *dsap = NULL, *dsaq = NULL, *dsag = NULL;
++    const BIGNUM *priv_key = NULL;
+     DSA_SIG *dsasig, *dsaret = NULL;
+ 
+     dsasig = DSA_SIG_new();
+     if (dsasig == NULL)
+         goto err;
+-    DSA_SIG_get0(&r, &s, dsasig);
+ 
+     memset(&kop, 0, sizeof(kop));
+     kop.crk_op = CRK_DSA_SIGN;
+@@ -1488,8 +1504,15 @@ static DSA_SIG *cryptodev_dsa_do_sign(const unsigned char *dgst, int dlen,
+         goto err;
+     kop.crk_iparams = 5;
+ 
++    r = BN_new();
++    if (r == NULL)
++        goto err;
++    s = BN_new();
++    if (s == NULL)
++        goto err;
+     if (cryptodev_asym(&kop, BN_num_bytes(dsaq), r,
+                        BN_num_bytes(dsaq), s) == 0) {
++        DSA_SIG_set0(dsasig, r, s);
+         dsaret = dsasig;
+     } else {
+         dsaret = DSA_meth_get_sign(DSA_OpenSSL())(dgst, dlen, dsa);
+@@ -1508,7 +1531,7 @@ cryptodev_dsa_verify(const unsigned char *dgst, int dlen,
+ {
+     struct crypt_kop kop;
+     int dsaret = 1;
+-    BIGNUM *pr, *ps, *p = NULL, *q = NULL, *g = NULL, *pub_key = NULL;
++    const BIGNUM *pr, *ps, *p = NULL, *q = NULL, *g = NULL, *pub_key = NULL;
+ 
+     memset(&kop, 0, sizeof(kop));
+     kop.crk_op = CRK_DSA_VERIFY;
+@@ -1526,7 +1549,7 @@ cryptodev_dsa_verify(const unsigned char *dgst, int dlen,
+     DSA_get0_key(dsa, &pub_key, NULL);
+     if (bn2crparam(pub_key, &kop.crk_param[4]))
+         goto err;
+-    DSA_SIG_get0(&pr, &ps, sig);
++    DSA_SIG_get0(sig, &pr, &ps);
+     if (bn2crparam(pr, &kop.crk_param[5]))
+         goto err;
+     if (bn2crparam(ps, &kop.crk_param[6]))
+@@ -1564,8 +1587,8 @@ cryptodev_dh_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
+     struct crypt_kop kop;
+     int dhret = 1;
+     int fd, keylen;
+-    BIGNUM *p = NULL;
+-    BIGNUM *priv_key = NULL;
++    const BIGNUM *p = NULL;
++    const BIGNUM *priv_key = NULL;
+ 
+     if ((fd = get_asym_dev_crypto()) < 0) {
+         const DH_METHOD *meth = DH_OpenSSL();
 diff --git a/crypto/engine/eng_ctrl.c b/crypto/engine/eng_ctrl.c
-index c912c1d913f5..7589c21d6678 100644
+index c912c1d..7589c21 100644
 --- a/crypto/engine/eng_ctrl.c
 +++ b/crypto/engine/eng_ctrl.c
 @@ -1,55 +1,10 @@
@@ -51424,7 +56420,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/eng_dyn.c b/crypto/engine/eng_dyn.c
-index f224255851a0..718599f6d95a 100644
+index f224255..843226c 100644
 --- a/crypto/engine/eng_dyn.c
 +++ b/crypto/engine/eng_dyn.c
 @@ -1,59 +1,10 @@
@@ -51524,8 +56520,26 @@
  }
  
  /*
+@@ -395,11 +349,15 @@ static int dynamic_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
+         }
+         {
+             char *tmp_str = OPENSSL_strdup(p);
+-            if (!tmp_str) {
++            if (tmp_str == NULL) {
++                ENGINEerr(ENGINE_F_DYNAMIC_CTRL, ERR_R_MALLOC_FAILURE);
++                return 0;
++            }
++            if (!sk_OPENSSL_STRING_push(ctx->dirs, tmp_str)) {
++                OPENSSL_free(tmp_str);
+                 ENGINEerr(ENGINE_F_DYNAMIC_CTRL, ERR_R_MALLOC_FAILURE);
+                 return 0;
+             }
+-            sk_OPENSSL_STRING_insert(ctx->dirs, tmp_str, -1);
+         }
+         return 1;
+     default:
 diff --git a/crypto/engine/eng_err.c b/crypto/engine/eng_err.c
-index 9a9337af5e57..c8f628b9cffc 100644
+index 9a9337a..c8f628b 100644
 --- a/crypto/engine/eng_err.c
 +++ b/crypto/engine/eng_err.c
 @@ -1,61 +1,11 @@
@@ -51654,7 +56668,7 @@
      {ERR_REASON(ENGINE_R_UNIMPLEMENTED_DIGEST), "unimplemented digest"},
      {ERR_REASON(ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD),
 diff --git a/crypto/engine/eng_fat.c b/crypto/engine/eng_fat.c
-index b331608a6eae..631aa39612ff 100644
+index b331608..631aa39 100644
 --- a/crypto/engine/eng_fat.c
 +++ b/crypto/engine/eng_fat.c
 @@ -1,56 +1,12 @@
@@ -51722,7 +56736,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   * ECDH support in OpenSSL originally developed by
 diff --git a/crypto/engine/eng_init.c b/crypto/engine/eng_init.c
-index f3c0de99f9ab..c51a38dac0cf 100644
+index f3c0de9..c51a38d 100644
 --- a/crypto/engine/eng_init.c
 +++ b/crypto/engine/eng_init.c
 @@ -1,55 +1,10 @@
@@ -51788,7 +56802,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/eng_int.h b/crypto/engine/eng_int.h
-index beaa878e36f2..6b6ff9fa4cbe 100644
+index beaa878..6b6ff9f 100644
 --- a/crypto/engine/eng_int.h
 +++ b/crypto/engine/eng_int.h
 @@ -1,60 +1,12 @@
@@ -51847,9 +56861,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -51877,7 +56890,7 @@
       * (de)allocation of this structure. Hence, running_ref <= struct_ref at
       * all times.
 diff --git a/crypto/engine/eng_lib.c b/crypto/engine/eng_lib.c
-index d0bc716bb3cd..f7d0216efb01 100644
+index d0bc716..f7d0216 100644
 --- a/crypto/engine/eng_lib.c
 +++ b/crypto/engine/eng_lib.c
 @@ -1,59 +1,10 @@
@@ -51958,7 +56971,7 @@
  }
  
 diff --git a/crypto/engine/eng_list.c b/crypto/engine/eng_list.c
-index 15ba1ca33d96..a7252e930b5d 100644
+index 15ba1ca..a7252e9 100644
 --- a/crypto/engine/eng_list.c
 +++ b/crypto/engine/eng_list.c
 @@ -1,60 +1,12 @@
@@ -52017,9 +57030,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -52030,7 +57042,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   * ECDH support in OpenSSL originally developed by
 diff --git a/crypto/engine/eng_openssl.c b/crypto/engine/eng_openssl.c
-index 0ec51bb7bfe1..7e2860495574 100644
+index 0ec51bb..7e28604 100644
 --- a/crypto/engine/eng_openssl.c
 +++ b/crypto/engine/eng_openssl.c
 @@ -1,60 +1,12 @@
@@ -52089,9 +57101,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -52161,7 +57172,7 @@
  
  static int ossl_hmac_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
 diff --git a/crypto/engine/eng_pkey.c b/crypto/engine/eng_pkey.c
-index ee6ba284400b..305a648feb6a 100644
+index ee6ba28..305a648 100644
 --- a/crypto/engine/eng_pkey.c
 +++ b/crypto/engine/eng_pkey.c
 @@ -1,55 +1,10 @@
@@ -52227,7 +57238,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/eng_rdrand.c b/crypto/engine/eng_rdrand.c
-index b62f9109edd3..b3defcbe4fdb 100644
+index b62f910..b3defcb 100644
 --- a/crypto/engine/eng_rdrand.c
 +++ b/crypto/engine/eng_rdrand.c
 @@ -1,50 +1,10 @@
@@ -52288,7 +57299,7 @@
  
  #include <openssl/opensslconf.h>
 diff --git a/crypto/engine/eng_table.c b/crypto/engine/eng_table.c
-index 9648c0cb9488..219253a38acd 100644
+index 9648c0c..219253a 100644
 --- a/crypto/engine/eng_table.c
 +++ b/crypto/engine/eng_table.c
 @@ -1,55 +1,10 @@
@@ -52354,7 +57365,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/engine/tb_asnmth.c b/crypto/engine/tb_asnmth.c
-index 28aa8e8cd481..2a6a4ae95ed4 100644
+index 28aa8e8..2a6a4ae 100644
 --- a/crypto/engine/tb_asnmth.c
 +++ b/crypto/engine/tb_asnmth.c
 @@ -1,55 +1,10 @@
@@ -52420,7 +57431,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/tb_cipher.c b/crypto/engine/tb_cipher.c
-index 7df01caf1297..ac4914111540 100644
+index 7df01ca..ac49141 100644
 --- a/crypto/engine/tb_cipher.c
 +++ b/crypto/engine/tb_cipher.c
 @@ -1,55 +1,10 @@
@@ -52486,7 +57497,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/tb_dh.c b/crypto/engine/tb_dh.c
-index 4f68975ba54f..c6440df2076d 100644
+index 4f68975..c6440df 100644
 --- a/crypto/engine/tb_dh.c
 +++ b/crypto/engine/tb_dh.c
 @@ -1,55 +1,10 @@
@@ -52552,7 +57563,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/tb_digest.c b/crypto/engine/tb_digest.c
-index 03096b30faec..194b9c7e8944 100644
+index 03096b3..194b9c7 100644
 --- a/crypto/engine/tb_digest.c
 +++ b/crypto/engine/tb_digest.c
 @@ -1,55 +1,10 @@
@@ -52618,7 +57629,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/tb_dsa.c b/crypto/engine/tb_dsa.c
-index adfb11fe3736..fdb80cd79f7e 100644
+index adfb11f..fdb80cd 100644
 --- a/crypto/engine/tb_dsa.c
 +++ b/crypto/engine/tb_dsa.c
 @@ -1,55 +1,10 @@
@@ -52684,7 +57695,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/tb_eckey.c b/crypto/engine/tb_eckey.c
-index 7c05c01d10c5..75750b29fca0 100644
+index 7c05c01..75750b2 100644
 --- a/crypto/engine/tb_eckey.c
 +++ b/crypto/engine/tb_eckey.c
 @@ -1,55 +1,10 @@
@@ -52750,7 +57761,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/tb_pkmeth.c b/crypto/engine/tb_pkmeth.c
-index 947e139e2ffb..2e82d8551efb 100644
+index 947e139..2e82d85 100644
 --- a/crypto/engine/tb_pkmeth.c
 +++ b/crypto/engine/tb_pkmeth.c
 @@ -1,55 +1,10 @@
@@ -52816,7 +57827,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/tb_rand.c b/crypto/engine/tb_rand.c
-index b67cff54f5a2..225e7c81dccd 100644
+index b67cff5..225e7c8 100644
 --- a/crypto/engine/tb_rand.c
 +++ b/crypto/engine/tb_rand.c
 @@ -1,55 +1,10 @@
@@ -52882,7 +57893,7 @@
  
  #include "eng_int.h"
 diff --git a/crypto/engine/tb_rsa.c b/crypto/engine/tb_rsa.c
-index 4405d678f3f6..e2cc680a9c8d 100644
+index 4405d67..e2cc680 100644
 --- a/crypto/engine/tb_rsa.c
 +++ b/crypto/engine/tb_rsa.c
 @@ -1,55 +1,10 @@
@@ -52949,7 +57960,7 @@
  #include "eng_int.h"
 diff --git a/crypto/err/Makefile.in b/crypto/err/Makefile.in
 deleted file mode 100644
-index c12ea3ffd820..000000000000
+index c12ea3f..0000000
 --- a/crypto/err/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -52998,7 +58009,7 @@
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/err/README b/crypto/err/README
 new file mode 100644
-index 000000000000..6d2ce0cd0ee8
+index 0000000..6d2ce0c
 --- /dev/null
 +++ b/crypto/err/README
 @@ -0,0 +1,44 @@
@@ -53047,7 +58058,7 @@
 +header file must load any additional header files containing any
 +definitions it uses.
 diff --git a/crypto/err/err.c b/crypto/err/err.c
-index b0fd19e7ae29..9b679d9b4861 100644
+index b0fd19e..9b679d9 100644
 --- a/crypto/err/err.c
 +++ b/crypto/err/err.c
 @@ -1,118 +1,16 @@
@@ -53242,7 +58253,7 @@
  #endif
  
 diff --git a/crypto/err/err_all.c b/crypto/err/err_all.c
-index 97078b4e1a0c..f617dd1a0da7 100644
+index 97078b4..f617dd1 100644
 --- a/crypto/err/err_all.c
 +++ b/crypto/err/err_all.c
 @@ -1,58 +1,10 @@
@@ -53311,7 +58322,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/err/err_prn.c b/crypto/err/err_prn.c
-index 0f7d40c39820..c7dc1d151a42 100644
+index 0f7d40c..c7dc1d1 100644
 --- a/crypto/err/err_prn.c
 +++ b/crypto/err/err_prn.c
 @@ -1,63 +1,14 @@
@@ -53385,7 +58396,7 @@
  #include <openssl/crypto.h>
  #include <openssl/buffer.h>
 diff --git a/crypto/err/openssl.ec b/crypto/err/openssl.ec
-index a969d7a29083..1abd7742dccd 100644
+index a969d7a..1abd774 100644
 --- a/crypto/err/openssl.ec
 +++ b/crypto/err/openssl.ec
 @@ -28,11 +28,10 @@ L ENGINE	include/openssl/engine.h	crypto/engine/eng_err.c
@@ -53404,7 +58415,7 @@
  L KDF		include/openssl/kdf.h		crypto/kdf/kdf_err.c
 diff --git a/crypto/evp/Makefile.in b/crypto/evp/Makefile.in
 deleted file mode 100644
-index 15080d018c36..000000000000
+index 15080d0..0000000
 --- a/crypto/evp/Makefile.in
 +++ /dev/null
 @@ -1,68 +0,0 @@
@@ -53477,15 +58488,13 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/evp/bio_b64.c b/crypto/evp/bio_b64.c
-index cdb50b458452..9067848578d3 100644
+index cdb50b4..32a884a 100644
 --- a/crypto/evp/bio_b64.c
 +++ b/crypto/evp/bio_b64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -53533,7 +58542,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -53563,16 +58574,28 @@
      BIO_set_data(bi, ctx);
      BIO_set_init(bi, 1);
  
+@@ -446,9 +403,10 @@ static int b64_write(BIO *b, const char *in, int inl)
+                 ret += n;
+             }
+         } else {
+-            EVP_EncodeUpdate(ctx->base64,
+-                             (unsigned char *)ctx->buf, &ctx->buf_len,
+-                             (unsigned char *)in, n);
++            if (!EVP_EncodeUpdate(ctx->base64,
++                                 (unsigned char *)ctx->buf, &ctx->buf_len,
++                                 (unsigned char *)in, n))
++                return ((ret == 0) ? -1 : ret);
+             OPENSSL_assert(ctx->buf_len <= (int)sizeof(ctx->buf));
+             OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
+             ret += n;
 diff --git a/crypto/evp/bio_enc.c b/crypto/evp/bio_enc.c
-index ad94ba4e5c8b..5a4d9c5d8749 100644
+index ad94ba4..5a4d9c5 100644
 --- a/crypto/evp/bio_enc.c
 +++ b/crypto/evp/bio_enc.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -53620,7 +58643,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -53633,15 +58658,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/bio_md.c b/crypto/evp/bio_md.c
-index 46c558335160..cd968ec2d475 100644
+index 46c5583..cd968ec 100644
 --- a/crypto/evp/bio_md.c
 +++ b/crypto/evp/bio_md.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -53689,7 +58712,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -53702,7 +58727,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/bio_ok.c b/crypto/evp/bio_ok.c
-index 0ac1a31a63f4..33066e8d8319 100644
+index 0ac1a31..33066e8 100644
 --- a/crypto/evp/bio_ok.c
 +++ b/crypto/evp/bio_ok.c
 @@ -1,58 +1,10 @@
@@ -53782,7 +58807,7 @@
      BIO_set_data(bi, ctx);
  
 diff --git a/crypto/evp/c_allc.c b/crypto/evp/c_allc.c
-index ac172e84c4e3..6ed31edbcb6d 100644
+index ac172e8..6ed31ed 100644
 --- a/crypto/evp/c_allc.c
 +++ b/crypto/evp/c_allc.c
 @@ -1,58 +1,10 @@
@@ -53863,7 +58888,7 @@
      EVP_add_cipher_alias(SN_id_smime_alg_CMS3DESwrap, "des3-wrap");
  #endif
 diff --git a/crypto/evp/c_alld.c b/crypto/evp/c_alld.c
-index 1612c2f2ac3c..ec79734e6763 100644
+index 1612c2f..ec79734 100644
 --- a/crypto/evp/c_alld.c
 +++ b/crypto/evp/c_alld.c
 @@ -1,58 +1,10 @@
@@ -53932,7 +58957,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/cmeth_lib.c b/crypto/evp/cmeth_lib.c
-index 33944e1894b6..e2295c4dc589 100644
+index 33944e1..e2295c4 100644
 --- a/crypto/evp/cmeth_lib.c
 +++ b/crypto/evp/cmeth_lib.c
 @@ -1,59 +1,10 @@
@@ -54001,7 +59026,7 @@
  
  #include <string.h>
 diff --git a/crypto/evp/digest.c b/crypto/evp/digest.c
-index aee8127d0057..c594a0a63817 100644
+index aee8127..c594a0a 100644
 --- a/crypto/evp/digest.c
 +++ b/crypto/evp/digest.c
 @@ -1,111 +1,10 @@
@@ -54145,7 +59170,7 @@
          }
          ctx->digest = type;
 diff --git a/crypto/evp/e_aes.c b/crypto/evp/e_aes.c
-index f0e410fc20b7..cfa65b8e33f1 100644
+index f0e410f..7b66c9e 100644
 --- a/crypto/evp/e_aes.c
 +++ b/crypto/evp/e_aes.c
 @@ -1,51 +1,10 @@
@@ -54215,7 +59240,15 @@
  # include "ppc_arch.h"
  # ifdef VPAES_ASM
  #  define VPAES_CAPABLE (OPENSSL_ppccap_P & PPC_ALTIVEC)
-@@ -202,8 +161,7 @@ void AES_xts_decrypt(const char *inp, char *out, size_t len,
+@@ -196,14 +155,15 @@ void AES_xts_decrypt(const char *inp, char *out, size_t len,
+ # define HWAES_decrypt aes_p8_decrypt
+ # define HWAES_cbc_encrypt aes_p8_cbc_encrypt
+ # define HWAES_ctr32_encrypt_blocks aes_p8_ctr32_encrypt_blocks
++# define HWAES_xts_encrypt aes_p8_xts_encrypt
++# define HWAES_xts_decrypt aes_p8_xts_decrypt
+ #endif
+ 
+ #if     defined(AES_ASM) && !defined(I386_ONLY) &&      (  \
          ((defined(__i386)       || defined(__i386__)    || \
            defined(_M_IX86)) && defined(OPENSSL_IA32_SSE2))|| \
          defined(__x86_64)       || defined(__x86_64__)  || \
@@ -54225,7 +59258,7 @@
  
  extern unsigned int OPENSSL_ia32cap_P[];
  
-@@ -587,6 +545,15 @@ const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \
+@@ -587,6 +547,15 @@ const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \
  
  extern unsigned int OPENSSL_sparcv9cap_P[];
  
@@ -54241,8 +59274,21 @@
  # define SPARC_AES_CAPABLE       (OPENSSL_sparcv9cap_P[1] & CFR_AES)
  
  void aes_t4_set_encrypt_key(const unsigned char *key, int bits, AES_KEY *ks);
-@@ -1060,7 +1027,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
+@@ -1041,6 +1010,12 @@ void HWAES_cbc_encrypt(const unsigned char *in, unsigned char *out,
+ void HWAES_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out,
+                                 size_t len, const AES_KEY *key,
+                                 const unsigned char ivec[16]);
++void HWAES_xts_encrypt(const unsigned char *inp, unsigned char *out,
++                       size_t len, const AES_KEY *key1,
++                       const AES_KEY *key2, const unsigned char iv[16]);
++void HWAES_xts_decrypt(const unsigned char *inp, unsigned char *out,
++                       size_t len, const AES_KEY *key1,
++                       const AES_KEY *key2, const unsigned char iv[16]);
+ #endif
  
+ #define BLOCK_CIPHER_generic_pack(nid,keylen,flags)             \
+@@ -1060,7 +1035,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
+ 
      mode = EVP_CIPHER_CTX_mode(ctx);
      if ((mode == EVP_CIPH_ECB_MODE || mode == EVP_CIPH_CBC_MODE)
 -        && !enc)
@@ -54250,7 +59296,7 @@
  #ifdef HWAES_CAPABLE
          if (HWAES_CAPABLE) {
              ret = HWAES_set_decrypt_key(key,
-@@ -1099,6 +1066,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
+@@ -1099,6 +1074,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
              dat->block = (block128_f) AES_decrypt;
              dat->stream.cbc = mode == EVP_CIPH_CBC_MODE ?
                  (cbc128_f) AES_cbc_encrypt : NULL;
@@ -54258,8 +59304,26 @@
      } else
  #ifdef HWAES_CAPABLE
      if (HWAES_CAPABLE) {
+@@ -1836,11 +1812,17 @@ static int aes_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
+                                           EVP_CIPHER_CTX_key_length(ctx) * 4,
+                                           &xctx->ks1.ks);
+                     xctx->xts.block1 = (block128_f) HWAES_encrypt;
++# ifdef HWAES_xts_encrypt
++                    xctx->stream = HWAES_xts_encrypt;
++# endif
+                 } else {
+                     HWAES_set_decrypt_key(key,
+                                           EVP_CIPHER_CTX_key_length(ctx) * 4,
+                                           &xctx->ks1.ks);
+                     xctx->xts.block1 = (block128_f) HWAES_decrypt;
++# ifdef HWAES_xts_decrypt
++                    xctx->stream = HWAES_xts_decrypt;
++#endif
+                 }
+ 
+                 HWAES_set_encrypt_key(key + EVP_CIPHER_CTX_key_length(ctx) / 2,
 diff --git a/crypto/evp/e_aes_cbc_hmac_sha1.c b/crypto/evp/e_aes_cbc_hmac_sha1.c
-index 4d8c973c5ff9..be1deaa474d7 100644
+index 4d8c973..be1deaa 100644
 --- a/crypto/evp/e_aes_cbc_hmac_sha1.c
 +++ b/crypto/evp/e_aes_cbc_hmac_sha1.c
 @@ -1,50 +1,10 @@
@@ -54347,7 +59411,7 @@
              mask = (0 - ((inp_len - len) >> (sizeof(inp_len) * 8 - 1)));
              inp_len &= mask;
 diff --git a/crypto/evp/e_aes_cbc_hmac_sha256.c b/crypto/evp/e_aes_cbc_hmac_sha256.c
-index 075a8e8cf70f..b89d873cc19d 100644
+index 075a8e8..3b9cdf4 100644
 --- a/crypto/evp/e_aes_cbc_hmac_sha256.c
 +++ b/crypto/evp/e_aes_cbc_hmac_sha256.c
 @@ -1,50 +1,10 @@
@@ -54425,7 +59489,21 @@
  
  extern unsigned int OPENSSL_ia32cap_P[];
  # define AESNI_CAPABLE   (1<<(57-32))
-@@ -595,6 +555,8 @@ static int aesni_cbc_hmac_sha256_cipher(EVP_CIPHER_CTX *ctx,
+@@ -121,10 +81,9 @@ static int aesni_cbc_hmac_sha256_init_key(EVP_CIPHER_CTX *ctx,
+     int ret;
+ 
+     if (enc)
+-        memset(&key->ks, 0, sizeof(key->ks.rd_key)),
+-            ret = aesni_set_encrypt_key(inkey,
+-                                        EVP_CIPHER_CTX_key_length(ctx) * 8,
+-                                        &key->ks);
++        ret = aesni_set_encrypt_key(inkey,
++                                    EVP_CIPHER_CTX_key_length(ctx) * 8,
++                                    &key->ks);
+     else
+         ret = aesni_set_decrypt_key(inkey,
+                                     EVP_CIPHER_CTX_key_length(ctx) * 8,
+@@ -595,6 +554,8 @@ static int aesni_cbc_hmac_sha256_cipher(EVP_CIPHER_CTX *ctx,
              maxpad |= (255 - maxpad) >> (sizeof(maxpad) * 8 - 8);
              maxpad &= 255;
  
@@ -54435,7 +59513,7 @@
              mask = (0 - ((inp_len - len) >> (sizeof(inp_len) * 8 - 1)));
              inp_len &= mask;
 diff --git a/crypto/evp/e_bf.c b/crypto/evp/e_bf.c
-index 108a80b17c0d..dc386905c5cb 100644
+index 108a80b..dc38690 100644
 --- a/crypto/evp/e_bf.c
 +++ b/crypto/evp/e_bf.c
 @@ -1,58 +1,10 @@
@@ -54504,7 +59582,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/e_camellia.c b/crypto/evp/e_camellia.c
-index 0d9f7f195155..b50fa0b96d6f 100644
+index 0d9f7f1..b50fa0b 100644
 --- a/crypto/evp/e_camellia.c
 +++ b/crypto/evp/e_camellia.c
 @@ -1,55 +1,10 @@
@@ -54570,7 +59648,7 @@
  
  #include <openssl/opensslconf.h>
 diff --git a/crypto/evp/e_cast.c b/crypto/evp/e_cast.c
-index e4df25f0588c..259d44059b20 100644
+index e4df25f..259d440 100644
 --- a/crypto/evp/e_cast.c
 +++ b/crypto/evp/e_cast.c
 @@ -1,58 +1,10 @@
@@ -54639,7 +59717,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/e_chacha20_poly1305.c b/crypto/evp/e_chacha20_poly1305.c
-index c3c72a1665bd..26fefd9781b2 100644
+index c3c72a1..26fefd9 100644
 --- a/crypto/evp/e_chacha20_poly1305.c
 +++ b/crypto/evp/e_chacha20_poly1305.c
 @@ -1,51 +1,10 @@
@@ -54739,15 +59817,13 @@
      return 1;
  }
 diff --git a/crypto/evp/e_des.c b/crypto/evp/e_des.c
-index ebdaadf6d622..9b2facfecfce 100644
+index ebdaadf..9b2facf 100644
 --- a/crypto/evp/e_des.c
 +++ b/crypto/evp/e_des.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -54795,7 +59871,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -54808,15 +59886,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/e_des3.c b/crypto/evp/e_des3.c
-index 100ae3c4f774..e21c045307c1 100644
+index 100ae3c..a842913 100644
 --- a/crypto/evp/e_des3.c
 +++ b/crypto/evp/e_des3.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -54864,7 +59940,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -54876,16 +59954,23 @@
   */
  
  #include <stdio.h>
+@@ -212,6 +164,8 @@ static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
+     size_t n;
+     unsigned char c[1], d[1];
+ 
++    if (!EVP_CIPHER_CTX_test_flags(ctx, EVP_CIPH_FLAG_LENGTH_BITS))
++            inl *= 8;
+     for (n = 0; n < inl; ++n) {
+         c[0] = (in[n / 8] & (1 << (7 - n % 8))) ? 0x80 : 0;
+         DES_ede3_cfb_encrypt(c, d, 1, 1,
 diff --git a/crypto/evp/e_idea.c b/crypto/evp/e_idea.c
-index 38e0c0a77b05..93f6a4131fa8 100644
+index 38e0c0a..93f6a41 100644
 --- a/crypto/evp/e_idea.c
 +++ b/crypto/evp/e_idea.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -54933,7 +60018,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -54964,7 +60051,7 @@
  BLOCK_CIPHER_defs(idea, IDEA_KEY_SCHEDULE, NID_idea, 8, 16, 8, 64,
                    0, idea_init_key, NULL,
 diff --git a/crypto/evp/e_null.c b/crypto/evp/e_null.c
-index 784319645588..0dfc48abf5a1 100644
+index 7843196..0dfc48a 100644
 --- a/crypto/evp/e_null.c
 +++ b/crypto/evp/e_null.c
 @@ -1,58 +1,10 @@
@@ -55033,7 +60120,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/e_old.c b/crypto/evp/e_old.c
-index 5f0cbeef9af5..927908f87176 100644
+index 5f0cbee..927908f 100644
 --- a/crypto/evp/e_old.c
 +++ b/crypto/evp/e_old.c
 @@ -1,59 +1,10 @@
@@ -55102,7 +60189,7 @@
  
  #include <openssl/opensslconf.h>
 diff --git a/crypto/evp/e_rc2.c b/crypto/evp/e_rc2.c
-index 8a56723c7e3d..8286424bb50e 100644
+index 8a56723..ed10bb3 100644
 --- a/crypto/evp/e_rc2.c
 +++ b/crypto/evp/e_rc2.c
 @@ -1,58 +1,10 @@
@@ -55170,8 +60257,30 @@
   */
  
  #include <stdio.h>
+@@ -178,16 +130,17 @@ static int rc2_get_asn1_type_and_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
+         OPENSSL_assert(l <= sizeof(iv));
+         i = ASN1_TYPE_get_int_octetstring(type, &num, iv, l);
+         if (i != (int)l)
+-            return (-1);
++            return -1;
+         key_bits = rc2_magic_to_meth((int)num);
+         if (!key_bits)
+-            return (-1);
++            return -1;
+         if (i > 0 && !EVP_CipherInit_ex(c, NULL, NULL, NULL, iv, -1))
+             return -1;
+         EVP_CIPHER_CTX_ctrl(c, EVP_CTRL_SET_RC2_KEY_BITS, key_bits, NULL);
+-        EVP_CIPHER_CTX_set_key_length(c, key_bits / 8);
++        if (EVP_CIPHER_CTX_set_key_length(c, key_bits / 8) <= 0)
++            return -1;
+     }
+-    return (i);
++    return i;
+ }
+ 
+ static int rc2_set_asn1_type_and_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
 diff --git a/crypto/evp/e_rc4.c b/crypto/evp/e_rc4.c
-index be6b6a0d6688..1a2895f1d1fa 100644
+index be6b6a0..1a2895f 100644
 --- a/crypto/evp/e_rc4.c
 +++ b/crypto/evp/e_rc4.c
 @@ -1,58 +1,10 @@
@@ -55240,7 +60349,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/e_rc4_hmac_md5.c b/crypto/evp/e_rc4_hmac_md5.c
-index ded3090eb40d..28b12c7c26a8 100644
+index ded3090..832daef 100644
 --- a/crypto/evp/e_rc4_hmac_md5.c
 +++ b/crypto/evp/e_rc4_hmac_md5.c
 @@ -1,50 +1,10 @@
@@ -55310,8 +60419,17 @@
  #  define STITCHED_CALL
  # endif
  
+@@ -254,6 +213,8 @@ static int rc4_hmac_md5_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg,
+             MD5_Init(&key->tail);
+             MD5_Update(&key->tail, hmac_key, sizeof(hmac_key));
+ 
++            OPENSSL_cleanse(hmac_key, sizeof(hmac_key));
++
+             return 1;
+         }
+     case EVP_CTRL_AEAD_TLS1_AAD:
 diff --git a/crypto/evp/e_rc5.c b/crypto/evp/e_rc5.c
-index 58980f56defb..1bc8141e21b2 100644
+index 58980f5..1bc8141 100644
 --- a/crypto/evp/e_rc5.c
 +++ b/crypto/evp/e_rc5.c
 @@ -1,58 +1,10 @@
@@ -55380,7 +60498,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/e_seed.c b/crypto/evp/e_seed.c
-index 6964b1e5b63d..40aec5fc6ac0 100644
+index 6964b1e..40aec5f 100644
 --- a/crypto/evp/e_seed.c
 +++ b/crypto/evp/e_seed.c
 @@ -1,55 +1,10 @@
@@ -55456,7 +60574,7 @@
  static int seed_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
                           const unsigned char *iv, int enc)
 diff --git a/crypto/evp/e_xcbc_d.c b/crypto/evp/e_xcbc_d.c
-index 92fe893d7e4c..effaf5cc6173 100644
+index 92fe893..effaf5c 100644
 --- a/crypto/evp/e_xcbc_d.c
 +++ b/crypto/evp/e_xcbc_d.c
 @@ -1,58 +1,10 @@
@@ -55525,15 +60643,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/encode.c b/crypto/evp/encode.c
-index ed85f8933bc0..bd2bbc0b099a 100644
+index ed85f89..e026a8f 100644
 --- a/crypto/evp/encode.c
 +++ b/crypto/evp/encode.c
 @@ -1,61 +1,14 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -55581,7 +60697,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -55597,7 +60715,12 @@
  #include "internal/cryptlib.h"
  #include <openssl/evp.h>
  #include "evp_locl.h"
-@@ -165,13 +118,13 @@ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
+@@ -161,20 +114,20 @@ void EVP_EncodeInit(EVP_ENCODE_CTX *ctx)
+     ctx->line_num = 0;
+ }
+ 
+-void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
++int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
                        const unsigned char *in, int inl)
  {
      int i, j;
@@ -55606,13 +60729,18 @@
  
      *outl = 0;
      if (inl <= 0)
-         return;
+-        return;
++        return 0;
      OPENSSL_assert(ctx->length <= (int)sizeof(ctx->enc_data));
 -    if ((ctx->num + inl) < ctx->length) {
 +    if (ctx->length - ctx->num > inl) {
          memcpy(&(ctx->enc_data[ctx->num]), in, inl);
          ctx->num += inl;
-         return;
+-        return;
++        return 1;
+     }
+     if (ctx->num != 0) {
+         i = ctx->length - ctx->num;
 @@ -188,7 +141,7 @@ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
          *out = '\0';
          total = j + 1;
@@ -55622,20 +60750,26 @@
          j = EVP_EncodeBlock(out, in, ctx->length);
          in += ctx->length;
          inl -= ctx->length;
-@@ -197,6 +150,11 @@ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
+@@ -197,10 +150,17 @@ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
          *out = '\0';
          total += j + 1;
      }
 +    if (total > INT_MAX) {
 +        /* Too much output data! */
 +        *outl = 0;
-+        return;
++        return 0;
 +    }
      if (inl != 0)
          memcpy(&(ctx->enc_data[0]), in, inl);
      ctx->num = inl;
+     *outl = total;
++
++    return 1;
+ }
+ 
+ void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl)
 diff --git a/crypto/evp/evp_cnf.c b/crypto/evp/evp_cnf.c
-index 45e82c92462f..71d13b8df075 100644
+index 45e82c9..71d13b8 100644
 --- a/crypto/evp/evp_cnf.c
 +++ b/crypto/evp/evp_cnf.c
 @@ -1,59 +1,10 @@
@@ -55704,7 +60838,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c
-index d7cc1f453c41..acb6b8bead94 100644
+index d7cc1f4..acb6b8b 100644
 --- a/crypto/evp/evp_enc.c
 +++ b/crypto/evp/evp_enc.c
 @@ -1,58 +1,10 @@
@@ -55791,7 +60925,7 @@
              ctx->buf_len += inl;
              *outl = 0;
 diff --git a/crypto/evp/evp_err.c b/crypto/evp/evp_err.c
-index 3b77e3b864f4..c9c9dc7dcc13 100644
+index 3b77e3b..50277ff 100644
 --- a/crypto/evp/evp_err.c
 +++ b/crypto/evp/evp_err.c
 @@ -1,61 +1,11 @@
@@ -55886,15 +61020,18 @@
      {ERR_FUNC(EVP_F_EVP_CIPHERINIT_EX), "EVP_CipherInit_ex"},
      {ERR_FUNC(EVP_F_EVP_CIPHER_CTX_COPY), "EVP_CIPHER_CTX_copy"},
      {ERR_FUNC(EVP_F_EVP_CIPHER_CTX_CTRL), "EVP_CIPHER_CTX_ctrl"},
-@@ -118,7 +59,6 @@ static ERR_STRING_DATA EVP_str_functs[] = {
+@@ -116,9 +57,9 @@ static ERR_STRING_DATA EVP_str_functs[] = {
+     {ERR_FUNC(EVP_F_EVP_PKEY_ENCRYPT), "EVP_PKEY_encrypt"},
+     {ERR_FUNC(EVP_F_EVP_PKEY_ENCRYPT_INIT), "EVP_PKEY_encrypt_init"},
      {ERR_FUNC(EVP_F_EVP_PKEY_ENCRYPT_OLD), "EVP_PKEY_encrypt_old"},
++    {ERR_FUNC(EVP_F_EVP_PKEY_GET0_HMAC), "EVP_PKEY_get0_hmac"},
      {ERR_FUNC(EVP_F_EVP_PKEY_GET0_DH), "EVP_PKEY_get0_DH"},
      {ERR_FUNC(EVP_F_EVP_PKEY_GET0_DSA), "EVP_PKEY_get0_DSA"},
 -    {ERR_FUNC(EVP_F_EVP_PKEY_GET0_ECDSA), "EVP_PKEY_GET0_ECDSA"},
      {ERR_FUNC(EVP_F_EVP_PKEY_GET0_EC_KEY), "EVP_PKEY_get0_EC_KEY"},
      {ERR_FUNC(EVP_F_EVP_PKEY_GET0_RSA), "EVP_PKEY_get0_RSA"},
      {ERR_FUNC(EVP_F_EVP_PKEY_KEYGEN), "EVP_PKEY_keygen"},
-@@ -133,23 +73,13 @@ static ERR_STRING_DATA EVP_str_functs[] = {
+@@ -133,23 +74,13 @@ static ERR_STRING_DATA EVP_str_functs[] = {
      {ERR_FUNC(EVP_F_EVP_PKEY_VERIFY_RECOVER), "EVP_PKEY_verify_recover"},
      {ERR_FUNC(EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT),
       "EVP_PKEY_verify_recover_init"},
@@ -55918,7 +61055,7 @@
      {ERR_FUNC(EVP_F_PKEY_SET_TYPE), "pkey_set_type"},
      {ERR_FUNC(EVP_F_RC2_MAGIC_TO_METH), "rc2_magic_to_meth"},
      {ERR_FUNC(EVP_F_RC5_CTRL), "rc5_ctrl"},
-@@ -157,16 +87,11 @@ static ERR_STRING_DATA EVP_str_functs[] = {
+@@ -157,16 +88,11 @@ static ERR_STRING_DATA EVP_str_functs[] = {
  };
  
  static ERR_STRING_DATA EVP_str_reasons[] = {
@@ -55937,7 +61074,7 @@
      {ERR_REASON(EVP_R_CIPHER_PARAMETER_ERROR), "cipher parameter error"},
      {ERR_REASON(EVP_R_COMMAND_NOT_SUPPORTED), "command not supported"},
      {ERR_REASON(EVP_R_COPY_ERROR), "copy error"},
-@@ -178,25 +103,21 @@ static ERR_STRING_DATA EVP_str_reasons[] = {
+@@ -178,25 +104,22 @@ static ERR_STRING_DATA EVP_str_reasons[] = {
      {ERR_REASON(EVP_R_DECODE_ERROR), "decode error"},
      {ERR_REASON(EVP_R_DIFFERENT_KEY_TYPES), "different key types"},
      {ERR_REASON(EVP_R_DIFFERENT_PARAMETERS), "different parameters"},
@@ -55946,6 +61083,7 @@
      {ERR_REASON(EVP_R_ERROR_LOADING_SECTION), "error loading section"},
      {ERR_REASON(EVP_R_ERROR_SETTING_FIPS_MODE), "error setting fips mode"},
 -    {ERR_REASON(EVP_R_EVP_PBE_CIPHERINIT_ERROR), "evp pbe cipherinit error"},
++    {ERR_REASON(EVP_R_EXPECTING_AN_HMAC_KEY), "expecting an hmac key"},
      {ERR_REASON(EVP_R_EXPECTING_AN_RSA_KEY), "expecting an rsa key"},
      {ERR_REASON(EVP_R_EXPECTING_A_DH_KEY), "expecting a dh key"},
      {ERR_REASON(EVP_R_EXPECTING_A_DSA_KEY), "expecting a dsa key"},
@@ -55965,7 +61103,7 @@
      {ERR_REASON(EVP_R_KEYGEN_FAILURE), "keygen failure"},
      {ERR_REASON(EVP_R_MEMORY_LIMIT_EXCEEDED), "memory limit exceeded"},
      {ERR_REASON(EVP_R_MESSAGE_DIGEST_IS_NULL), "message digest is null"},
-@@ -205,21 +126,14 @@ static ERR_STRING_DATA EVP_str_reasons[] = {
+@@ -205,21 +128,14 @@ static ERR_STRING_DATA EVP_str_reasons[] = {
      {ERR_REASON(EVP_R_NO_CIPHER_SET), "no cipher set"},
      {ERR_REASON(EVP_R_NO_DEFAULT_DIGEST), "no default digest"},
      {ERR_REASON(EVP_R_NO_DIGEST_SET), "no digest set"},
@@ -55987,7 +61125,7 @@
      {ERR_REASON(EVP_R_UNKNOWN_CIPHER), "unknown cipher"},
      {ERR_REASON(EVP_R_UNKNOWN_DIGEST), "unknown digest"},
      {ERR_REASON(EVP_R_UNKNOWN_OPTION), "unknown option"},
-@@ -238,7 +152,6 @@ static ERR_STRING_DATA EVP_str_reasons[] = {
+@@ -238,7 +154,6 @@ static ERR_STRING_DATA EVP_str_reasons[] = {
      {ERR_REASON(EVP_R_UNSUPPORTED_SALT_TYPE), "unsupported salt type"},
      {ERR_REASON(EVP_R_WRAP_MODE_NOT_ALLOWED), "wrap mode not allowed"},
      {ERR_REASON(EVP_R_WRONG_FINAL_BLOCK_LENGTH), "wrong final block length"},
@@ -55996,15 +61134,13 @@
  };
  
 diff --git a/crypto/evp/evp_key.c b/crypto/evp/evp_key.c
-index 995d35503ca0..8a4297cf6eaa 100644
+index 995d355..8a4297c 100644
 --- a/crypto/evp/evp_key.c
 +++ b/crypto/evp/evp_key.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -56052,7 +61188,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -56065,7 +61203,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/evp_lib.c b/crypto/evp/evp_lib.c
-index bc24d5a76593..4333fb97c245 100644
+index bc24d5a..4333fb9 100644
 --- a/crypto/evp/evp_lib.c
 +++ b/crypto/evp/evp_lib.c
 @@ -1,58 +1,10 @@
@@ -56134,7 +61272,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/evp_locl.h b/crypto/evp/evp_locl.h
-index c85a46a4c811..7f3526f1ba43 100644
+index c85a46a..7f3526f 100644
 --- a/crypto/evp/evp_locl.h
 +++ b/crypto/evp/evp_locl.h
 @@ -1,59 +1,10 @@
@@ -56203,7 +61341,7 @@
  
  /* EVP_MD_CTX related stuff */
 diff --git a/crypto/evp/evp_pbe.c b/crypto/evp/evp_pbe.c
-index ddf9bff93e59..623f4473876c 100644
+index ddf9bff..623f447 100644
 --- a/crypto/evp/evp_pbe.c
 +++ b/crypto/evp/evp_pbe.c
 @@ -1,59 +1,10 @@
@@ -56272,7 +61410,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/evp_pkey.c b/crypto/evp/evp_pkey.c
-index a44d972925ce..c84ddc3f6367 100644
+index a44d972..c84ddc3 100644
 --- a/crypto/evp/evp_pkey.c
 +++ b/crypto/evp/evp_pkey.c
 @@ -1,59 +1,10 @@
@@ -56341,7 +61479,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/m_md2.c b/crypto/evp/m_md2.c
-index 0e83dfec107a..c4e28ae17af2 100644
+index 0e83dfe..c4e28ae 100644
 --- a/crypto/evp/m_md2.c
 +++ b/crypto/evp/m_md2.c
 @@ -1,58 +1,10 @@
@@ -56410,7 +61548,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/m_md4.c b/crypto/evp/m_md4.c
-index 933d82af78c3..f3decaaf0fc7 100644
+index 933d82a..f3decaa 100644
 --- a/crypto/evp/m_md4.c
 +++ b/crypto/evp/m_md4.c
 @@ -1,58 +1,10 @@
@@ -56479,7 +61617,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/m_md5.c b/crypto/evp/m_md5.c
-index b28be91edd65..f4dc0c43f406 100644
+index b28be91..f4dc0c4 100644
 --- a/crypto/evp/m_md5.c
 +++ b/crypto/evp/m_md5.c
 @@ -1,58 +1,10 @@
@@ -56548,7 +61686,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/m_md5_sha1.c b/crypto/evp/m_md5_sha1.c
-index 6367dc7a6f5c..1213ff64a6d8 100644
+index 6367dc7..1213ff6 100644
 --- a/crypto/evp/m_md5_sha1.c
 +++ b/crypto/evp/m_md5_sha1.c
 @@ -1,54 +1,10 @@
@@ -56558,8 +61696,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -56590,7 +61727,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -56612,7 +61750,7 @@
  
  #if !defined(OPENSSL_NO_MD5)
 diff --git a/crypto/evp/m_mdc2.c b/crypto/evp/m_mdc2.c
-index f7fa60022b4b..b7f0fd8c19e4 100644
+index f7fa600..b7f0fd8 100644
 --- a/crypto/evp/m_mdc2.c
 +++ b/crypto/evp/m_mdc2.c
 @@ -1,58 +1,10 @@
@@ -56681,7 +61819,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/m_null.c b/crypto/evp/m_null.c
-index 0fc8c9916e6c..6c4daf56b1b2 100644
+index 0fc8c99..6c4daf5 100644
 --- a/crypto/evp/m_null.c
 +++ b/crypto/evp/m_null.c
 @@ -1,58 +1,10 @@
@@ -56750,7 +61888,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/m_ripemd.c b/crypto/evp/m_ripemd.c
-index d4488bec0e79..07b46bd51887 100644
+index d4488be..07b46bd 100644
 --- a/crypto/evp/m_ripemd.c
 +++ b/crypto/evp/m_ripemd.c
 @@ -1,58 +1,10 @@
@@ -56819,15 +61957,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/m_sha1.c b/crypto/evp/m_sha1.c
-index e673e417255e..4f009560b338 100644
+index e673e41..4f00956 100644
 --- a/crypto/evp/m_sha1.c
 +++ b/crypto/evp/m_sha1.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -56875,7 +62011,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -56888,7 +62026,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/m_sigver.c b/crypto/evp/m_sigver.c
-index 0fe223fd3fe3..3b74f7229515 100644
+index 0fe223f..3b74f72 100644
 --- a/crypto/evp/m_sigver.c
 +++ b/crypto/evp/m_sigver.c
 @@ -1,59 +1,10 @@
@@ -56957,7 +62095,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/m_wp.c b/crypto/evp/m_wp.c
-index 12b7765ece62..94fac226b69f 100644
+index 12b7765..94fac22 100644
 --- a/crypto/evp/m_wp.c
 +++ b/crypto/evp/m_wp.c
 @@ -1,3 +1,11 @@
@@ -56973,7 +62111,7 @@
  #include <stdio.h>
  #include "internal/cryptlib.h"
 diff --git a/crypto/evp/names.c b/crypto/evp/names.c
-index 2e8281a3ff43..a92be1fedf18 100644
+index 2e8281a..a92be1f 100644
 --- a/crypto/evp/names.c
 +++ b/crypto/evp/names.c
 @@ -1,58 +1,10 @@
@@ -57042,7 +62180,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/p5_crpt.c b/crypto/evp/p5_crpt.c
-index 7900e2873f15..7e55d0bfb817 100644
+index 7900e28..7e55d0b 100644
 --- a/crypto/evp/p5_crpt.c
 +++ b/crypto/evp/p5_crpt.c
 @@ -1,59 +1,10 @@
@@ -57111,7 +62249,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/p5_crpt2.c b/crypto/evp/p5_crpt2.c
-index 76dcf02ad145..2e45aa3bd8ec 100644
+index 76dcf02..2e45aa3 100644
 --- a/crypto/evp/p5_crpt2.c
 +++ b/crypto/evp/p5_crpt2.c
 @@ -1,60 +1,12 @@
@@ -57170,9 +62308,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -57192,10 +62329,10 @@
                 EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION);
          goto err;
 diff --git a/crypto/evp/p_dec.c b/crypto/evp/p_dec.c
-index 5729ed7ac329..6171bb977e4c 100644
+index 5729ed7..6bec406 100644
 --- a/crypto/evp/p_dec.c
 +++ b/crypto/evp/p_dec.c
-@@ -1,58 +1,10 @@
+@@ -1,63 +1,14 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 +/*
@@ -57260,11 +62397,16 @@
   */
  
  #include <stdio.h>
+ #include "internal/cryptlib.h"
+-#include <openssl/rand.h>
+ #include <openssl/rsa.h>
+ #include <openssl/evp.h>
+ #include <openssl/objects.h>
 diff --git a/crypto/evp/p_enc.c b/crypto/evp/p_enc.c
-index f1fc818750d1..645f973ceacf 100644
+index f1fc818..3277fbb 100644
 --- a/crypto/evp/p_enc.c
 +++ b/crypto/evp/p_enc.c
-@@ -1,58 +1,10 @@
+@@ -1,63 +1,14 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 +/*
@@ -57329,16 +62471,19 @@
   */
  
  #include <stdio.h>
+ #include "internal/cryptlib.h"
+-#include <openssl/rand.h>
+ #include <openssl/rsa.h>
+ #include <openssl/evp.h>
+ #include <openssl/objects.h>
 diff --git a/crypto/evp/p_lib.c b/crypto/evp/p_lib.c
-index a8fa301b31c4..0b50d3210e55 100644
+index a8fa301..802f6dd 100644
 --- a/crypto/evp/p_lib.c
 +++ b/crypto/evp/p_lib.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -57386,7 +62531,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -57432,8 +62579,27 @@
  }
  
  /*
+@@ -271,6 +237,18 @@ void *EVP_PKEY_get0(const EVP_PKEY *pkey)
+     return pkey->pkey.ptr;
+ }
+ 
++const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len)
++{
++    ASN1_OCTET_STRING *os = NULL;
++    if (pkey->type != EVP_PKEY_HMAC) {
++        EVPerr(EVP_F_EVP_PKEY_GET0_HMAC, EVP_R_EXPECTING_AN_HMAC_KEY);
++        return NULL;
++    }
++    os = EVP_PKEY_get0(pkey);
++    *len = os->length;
++    return os->data;
++}
++
+ #ifndef OPENSSL_NO_RSA
+ int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key)
+ {
 diff --git a/crypto/evp/p_open.c b/crypto/evp/p_open.c
-index 7f9c7337b2c0..b65bc74ed142 100644
+index 7f9c733..b65bc74 100644
 --- a/crypto/evp/p_open.c
 +++ b/crypto/evp/p_open.c
 @@ -1,58 +1,10 @@
@@ -57502,7 +62668,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/evp/p_seal.c b/crypto/evp/p_seal.c
-index d802d84b8f3c..faa246483ba4 100644
+index d802d84..faa2464 100644
 --- a/crypto/evp/p_seal.c
 +++ b/crypto/evp/p_seal.c
 @@ -1,58 +1,10 @@
@@ -57571,7 +62737,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/p_sign.c b/crypto/evp/p_sign.c
-index 46d2dccffce1..6cb442e4f91d 100644
+index 46d2dcc..6cb442e 100644
 --- a/crypto/evp/p_sign.c
 +++ b/crypto/evp/p_sign.c
 @@ -1,58 +1,10 @@
@@ -57640,7 +62806,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/p_verify.c b/crypto/evp/p_verify.c
-index 631ce352f727..6e8c565dfd6b 100644
+index 631ce35..6e8c565 100644
 --- a/crypto/evp/p_verify.c
 +++ b/crypto/evp/p_verify.c
 @@ -1,58 +1,10 @@
@@ -57709,7 +62875,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/pmeth_fn.c b/crypto/evp/pmeth_fn.c
-index 872947a6aa50..8ff50da33a23 100644
+index 872947a..8ff50da 100644
 --- a/crypto/evp/pmeth_fn.c
 +++ b/crypto/evp/pmeth_fn.c
 @@ -1,59 +1,10 @@
@@ -57778,7 +62944,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/pmeth_gn.c b/crypto/evp/pmeth_gn.c
-index 6d58f1b05e0b..6adc3a9c1986 100644
+index 6d58f1b..6adc3a9 100644
 --- a/crypto/evp/pmeth_gn.c
 +++ b/crypto/evp/pmeth_gn.c
 @@ -1,59 +1,10 @@
@@ -57847,7 +63013,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/pmeth_lib.c b/crypto/evp/pmeth_lib.c
-index 08466efe9fed..2e5e93294130 100644
+index 08466ef..2e5e932 100644
 --- a/crypto/evp/pmeth_lib.c
 +++ b/crypto/evp/pmeth_lib.c
 @@ -1,59 +1,10 @@
@@ -57916,7 +63082,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/evp/scrypt.c b/crypto/evp/scrypt.c
-index f9b368b365b0..101bb1edbd48 100644
+index f9b368b..101bb1e 100644
 --- a/crypto/evp/scrypt.c
 +++ b/crypto/evp/scrypt.c
 @@ -1,59 +1,10 @@
@@ -57985,7 +63151,7 @@
  
  #include <stddef.h>
 diff --git a/crypto/ex_data.c b/crypto/ex_data.c
-index ca1c204f38e1..0666393900b4 100644
+index ca1c204..0666393 100644
 --- a/crypto/ex_data.c
 +++ b/crypto/ex_data.c
 @@ -1,115 +1,13 @@
@@ -58112,7 +63278,7 @@
  /*
 diff --git a/crypto/fips_err.h b/crypto/fips_err.h
 deleted file mode 100644
-index b2fcabd55046..000000000000
+index b2fcabd..0000000
 --- a/crypto/fips_err.h
 +++ /dev/null
 @@ -1,226 +0,0 @@
@@ -58344,7 +63510,7 @@
 -}
 diff --git a/crypto/fips_ers.c b/crypto/fips_ers.c
 deleted file mode 100644
-index ad6935f7fe96..000000000000
+index ad6935f..0000000
 --- a/crypto/fips_ers.c
 +++ /dev/null
 @@ -1,7 +0,0 @@
@@ -58357,7 +63523,7 @@
 -#endif
 diff --git a/crypto/hmac/Makefile.in b/crypto/hmac/Makefile.in
 deleted file mode 100644
-index 2da801ccdaea..000000000000
+index 2da801c..0000000
 --- a/crypto/hmac/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -58405,7 +63571,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/hmac/hm_ameth.c b/crypto/hmac/hm_ameth.c
-index 98e73e937ff8..714068dc6860 100644
+index 98e73e9..78ae0ea 100644
 --- a/crypto/hmac/hm_ameth.c
 +++ b/crypto/hmac/hm_ameth.c
 @@ -1,59 +1,10 @@
@@ -58473,8 +63639,29 @@
   */
  
  #include <stdio.h>
+@@ -95,6 +46,11 @@ static int hmac_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
+     }
+ }
+ 
++static int hmac_pkey_public_cmp(const EVP_PKEY *a, const EVP_PKEY *b)
++{
++    return ASN1_OCTET_STRING_cmp(EVP_PKEY_get0(a), EVP_PKEY_get0(b));
++}
++
+ #ifdef HMAC_TEST_PRIVATE_KEY_FORMAT
+ /*
+  * A bogus private key format for test purposes. This is simply the HMAC key
+@@ -150,7 +106,7 @@ const EVP_PKEY_ASN1_METHOD hmac_asn1_meth = {
+     "HMAC",
+     "OpenSSL HMAC method",
+ 
+-    0, 0, 0, 0,
++    0, 0, hmac_pkey_public_cmp, 0,
+ 
+     0, 0, 0,
+ 
 diff --git a/crypto/hmac/hm_pmeth.c b/crypto/hmac/hm_pmeth.c
-index 268b48dbce6f..5b98477f9cfc 100644
+index 268b48d..5b98477 100644
 --- a/crypto/hmac/hm_pmeth.c
 +++ b/crypto/hmac/hm_pmeth.c
 @@ -1,59 +1,10 @@
@@ -58602,7 +63789,7 @@
  }
  
 diff --git a/crypto/hmac/hmac.c b/crypto/hmac/hmac.c
-index 9504aada943b..da7f58688f1e 100644
+index 9504aad..3374105 100644
 --- a/crypto/hmac/hmac.c
 +++ b/crypto/hmac/hmac.c
 @@ -1,58 +1,10 @@
@@ -58688,8 +63875,17 @@
  }
  
  void HMAC_CTX_free(HMAC_CTX *ctx)
+@@ -281,3 +233,8 @@ void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags)
+     EVP_MD_CTX_set_flags(ctx->o_ctx, flags);
+     EVP_MD_CTX_set_flags(ctx->md_ctx, flags);
+ }
++
++const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx)
++{
++    return ctx->md;
++}
 diff --git a/crypto/hmac/hmac_lcl.h b/crypto/hmac/hmac_lcl.h
-index f93e61fd745c..4c156dc126c2 100644
+index f93e61f..4c156dc 100644
 --- a/crypto/hmac/hmac_lcl.h
 +++ b/crypto/hmac/hmac_lcl.h
 @@ -1,59 +1,12 @@
@@ -58760,7 +63956,7 @@
  # define HEADER_HMAC_LCL_H
  
 diff --git a/crypto/ia64cpuid.S b/crypto/ia64cpuid.S
-index bf5abc3be379..ffd6d6ca6f13 100644
+index bf5abc3..ffd6d6c 100644
 --- a/crypto/ia64cpuid.S
 +++ b/crypto/ia64cpuid.S
 @@ -1,7 +1,19 @@
@@ -58783,7 +63979,7 @@
  .global	OPENSSL_cpuid_setup#
  .proc	OPENSSL_cpuid_setup#
  OPENSSL_cpuid_setup:
-@@ -131,9 +143,7 @@
+@@ -131,9 +143,7 @@ OPENSSL_wipe_cpu:
  .proc	OPENSSL_cleanse#
  OPENSSL_cleanse:
  { .mib;	cmp.eq		p6,p0=0,r33	    // len==0
@@ -58794,7 +63990,7 @@
  (p6)	br.ret.spnt	b0		};;
  { .mib;	and		r2=7,r32
  	cmp.leu		p6,p0=15,r33	    // len>=15
-@@ -166,14 +176,51 @@
+@@ -166,14 +176,51 @@ OPENSSL_cleanse:
  (p6)	br.ret.sptk.many	b0	};;
  .endp	OPENSSL_cleanse#
  
@@ -58850,7 +64046,7 @@
  { .mmi;	mov		r8=ar.itc;;
  	mov		r10=r0
  	mov		r9=r8		};;
-@@ -208,10 +255,7 @@
+@@ -208,10 +255,7 @@ OPENSSL_instrument_bus:
  .proc	OPENSSL_instrument_bus2#
  OPENSSL_instrument_bus2:
  { .mmi;	mov		r2=r33			// put aside cnt
@@ -58864,7 +64060,7 @@
  	mov		r9=r8		};;
 diff --git a/crypto/idea/Makefile.in b/crypto/idea/Makefile.in
 deleted file mode 100644
-index 61ab62b713ea..000000000000
+index 61ab62b..0000000
 --- a/crypto/idea/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -58912,7 +64108,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/idea/i_cbc.c b/crypto/idea/i_cbc.c
-index 5cdcc64a672c..a70a8682a780 100644
+index 5cdcc64..a70a868 100644
 --- a/crypto/idea/i_cbc.c
 +++ b/crypto/idea/i_cbc.c
 @@ -1,58 +1,10 @@
@@ -58981,15 +64177,13 @@
  
  #include <openssl/idea.h>
 diff --git a/crypto/idea/i_cfb64.c b/crypto/idea/i_cfb64.c
-index f6ed63274930..daf467eb5c26 100644
+index f6ed632..daf467e 100644
 --- a/crypto/idea/i_cfb64.c
 +++ b/crypto/idea/i_cfb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -59037,7 +64231,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -59050,7 +64246,7 @@
  
  #include <openssl/idea.h>
 diff --git a/crypto/idea/i_ecb.c b/crypto/idea/i_ecb.c
-index 9ab64b7dcaee..2208287e3216 100644
+index 9ab64b7..2208287 100644
 --- a/crypto/idea/i_ecb.c
 +++ b/crypto/idea/i_ecb.c
 @@ -1,58 +1,10 @@
@@ -59119,15 +64315,13 @@
  
  #include <openssl/idea.h>
 diff --git a/crypto/idea/i_ofb64.c b/crypto/idea/i_ofb64.c
-index 174f6354d615..997a7b88edf4 100644
+index 174f635..997a7b8 100644
 --- a/crypto/idea/i_ofb64.c
 +++ b/crypto/idea/i_ofb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -59175,7 +64369,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -59188,7 +64384,7 @@
  
  #include <openssl/idea.h>
 diff --git a/crypto/idea/i_skey.c b/crypto/idea/i_skey.c
-index c86140ffba10..02853246dca4 100644
+index c86140f..0285324 100644
 --- a/crypto/idea/i_skey.c
 +++ b/crypto/idea/i_skey.c
 @@ -1,58 +1,10 @@
@@ -59257,15 +64453,13 @@
  
  #include <openssl/idea.h>
 diff --git a/crypto/idea/idea_lcl.h b/crypto/idea/idea_lcl.h
-index 9be76cdc5308..f227d0db3216 100644
+index 9be76cd..f227d0d 100644
 --- a/crypto/idea/idea_lcl.h
 +++ b/crypto/idea/idea_lcl.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -59313,7 +64507,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -59327,7 +64523,7 @@
  /*
 diff --git a/crypto/idea/version b/crypto/idea/version
 deleted file mode 100644
-index 3f2229379549..000000000000
+index 3f22293..0000000
 --- a/crypto/idea/version
 +++ /dev/null
 @@ -1,12 +0,0 @@
@@ -59344,7 +64540,7 @@
 -1.0 ??/??/95 - eay
 -	First version.
 diff --git a/crypto/include/internal/asn1_int.h b/crypto/include/internal/asn1_int.h
-index 0b38eaa38071..1bd1fab82fda 100644
+index 0b38eaa..1bd1fab 100644
 --- a/crypto/include/internal/asn1_int.h
 +++ b/crypto/include/internal/asn1_int.h
 @@ -1,59 +1,10 @@
@@ -59426,7 +64622,7 @@
  /*
   * These are used internally in the ASN1_OBJECT to keep track of whether the
 diff --git a/crypto/include/internal/async.h b/crypto/include/internal/async.h
-index 76fe4d1399a0..db56258f29eb 100644
+index 76fe4d1..db56258 100644
 --- a/crypto/include/internal/async.h
 +++ b/crypto/include/internal/async.h
 @@ -1,58 +1,10 @@
@@ -59494,7 +64690,7 @@
  
  #include <openssl/async.h>
 diff --git a/crypto/include/internal/bn_conf.h.in b/crypto/include/internal/bn_conf.h.in
-index e25a435726f9..ec6e4f6c1b5e 100644
+index e25a435..ec6e4f6 100644
 --- a/crypto/include/internal/bn_conf.h.in
 +++ b/crypto/include/internal/bn_conf.h.in
 @@ -1,56 +1,11 @@
@@ -59561,7 +64757,7 @@
  
  #ifndef HEADER_BN_CONF_H
 diff --git a/crypto/include/internal/bn_dh.h b/crypto/include/internal/bn_dh.h
-index 3810514eef02..b4bca40c58a3 100644
+index 3810514..b4bca40 100644
 --- a/crypto/include/internal/bn_dh.h
 +++ b/crypto/include/internal/bn_dh.h
 @@ -1,3 +1,12 @@
@@ -59578,7 +64774,7 @@
      const extern BIGNUM _bignum_dh##x##_p;              \
      const extern BIGNUM _bignum_dh##x##_g;              \
 diff --git a/crypto/include/internal/bn_int.h b/crypto/include/internal/bn_int.h
-index 8ea51936068f..9c984ba78183 100644
+index 8ea5193..9c984ba 100644
 --- a/crypto/include/internal/bn_int.h
 +++ b/crypto/include/internal/bn_int.h
 @@ -1,55 +1,10 @@
@@ -59644,7 +64840,7 @@
  
  #ifndef HEADER_BN_INT_H
 diff --git a/crypto/include/internal/bn_srp.h b/crypto/include/internal/bn_srp.h
-index 153c8cde12eb..d4b282a6bbbe 100644
+index 153c8cd..d4b282a 100644
 --- a/crypto/include/internal/bn_srp.h
 +++ b/crypto/include/internal/bn_srp.h
 @@ -1,3 +1,11 @@
@@ -59660,7 +64856,7 @@
  #ifndef OPENSSL_NO_SRP
  
 diff --git a/crypto/include/internal/chacha.h b/crypto/include/internal/chacha.h
-index dacbdf59dc65..7d4366ea2533 100644
+index dacbdf5..7d4366e 100644
 --- a/crypto/include/internal/chacha.h
 +++ b/crypto/include/internal/chacha.h
 @@ -1,51 +1,10 @@
@@ -59722,7 +64918,7 @@
  
  #ifndef HEADER_CHACHA_H
 diff --git a/crypto/include/internal/cryptlib.h b/crypto/include/internal/cryptlib.h
-index 5fc7f0dd7e8b..f2377d1c932d 100644
+index 5fc7f0d..c9f76ba 100644
 --- a/crypto/include/internal/cryptlib.h
 +++ b/crypto/include/internal/cryptlib.h
 @@ -1,58 +1,10 @@
@@ -59790,17 +64986,38 @@
   */
  
  #ifndef HEADER_CRYPTLIB_H
-@@ -115,6 +67,8 @@ void OPENSSL_showfatal(const char *fmta, ...);
+@@ -64,6 +16,7 @@
+ # include "e_os.h"
+ 
+ # ifdef OPENSSL_USE_APPLINK
++#  undef BIO_FLAGS_UPLINK
+ #  define BIO_FLAGS_UPLINK 0x8000
+ #  include "ms/uplink.h"
+ # endif
+@@ -72,7 +25,6 @@
+ # include <openssl/buffer.h>
+ # include <openssl/bio.h>
+ # include <openssl/err.h>
+-# include <openssl/opensslconf.h>
+ 
+ #ifdef  __cplusplus
+ extern "C" {
+@@ -115,6 +67,13 @@ void OPENSSL_showfatal(const char *fmta, ...);
  extern int OPENSSL_NONPIC_relocated;
  void crypto_cleanup_all_ex_data_int(void);
  
 +int openssl_strerror_r(int errnum, char *buf, size_t buflen);
++# if !defined(OPENSSL_NO_STDIO)
++FILE *openssl_fopen(const char *filename, const char *mode);
++# else
++void *openssl_fopen(const char *filename, const char *mode);
++# endif
 +
  #ifdef  __cplusplus
  }
  #endif
 diff --git a/crypto/include/internal/cryptlib_int.h b/crypto/include/internal/cryptlib_int.h
-index a38ac18d1f80..aa02ddcd1757 100644
+index a38ac18..aa02ddc 100644
 --- a/crypto/include/internal/cryptlib_int.h
 +++ b/crypto/include/internal/cryptlib_int.h
 @@ -1,58 +1,10 @@
@@ -59877,7 +65094,7 @@
   */
  # define OPENSSL_INIT_ZLIB                   0x00010000L
 diff --git a/crypto/include/internal/dso_conf.h.in b/crypto/include/internal/dso_conf.h.in
-index e78e727bc310..daa5e247a391 100644
+index e78e727..daa5e24 100644
 --- a/crypto/include/internal/dso_conf.h.in
 +++ b/crypto/include/internal/dso_conf.h.in
 @@ -1,56 +1,11 @@
@@ -59944,7 +65161,7 @@
  
  #ifndef HEADER_DSO_CONF_H
 diff --git a/crypto/include/internal/engine.h b/crypto/include/internal/engine.h
-index fffce40140f1..977cf06d434f 100644
+index fffce40..977cf06 100644
 --- a/crypto/include/internal/engine.h
 +++ b/crypto/include/internal/engine.h
 @@ -1,55 +1,10 @@
@@ -60010,7 +65227,7 @@
  
  #include <openssl/engine.h>
 diff --git a/crypto/include/internal/err_int.h b/crypto/include/internal/err_int.h
-index 7f1037e939f1..749a8db2622f 100644
+index 7f1037e..749a8db 100644
 --- a/crypto/include/internal/err_int.h
 +++ b/crypto/include/internal/err_int.h
 @@ -1,11 +1,10 @@
@@ -60036,7 +65253,7 @@
  
  #endif
 diff --git a/crypto/include/internal/evp_int.h b/crypto/include/internal/evp_int.h
-index ca130c26a418..1c3531992180 100644
+index ca130c2..1c35319 100644
 --- a/crypto/include/internal/evp_int.h
 +++ b/crypto/include/internal/evp_int.h
 @@ -1,59 +1,10 @@
@@ -60105,7 +65322,7 @@
  
  struct evp_pkey_ctx_st {
 diff --git a/crypto/include/internal/md32_common.h b/crypto/include/internal/md32_common.h
-index 156fa3aeba49..21133a37d71b 100644
+index 156fa3a..21133a3 100644
 --- a/crypto/include/internal/md32_common.h
 +++ b/crypto/include/internal/md32_common.h
 @@ -1,51 +1,10 @@
@@ -60176,7 +65393,7 @@
   * which is why it was moved to common header file.
   *
 diff --git a/crypto/include/internal/objects.h b/crypto/include/internal/objects.h
-index 86000b6db2e8..76e1b4d98838 100644
+index 86000b6..76e1b4d 100644
 --- a/crypto/include/internal/objects.h
 +++ b/crypto/include/internal/objects.h
 @@ -1,9 +1,10 @@
@@ -60195,7 +65412,7 @@
  
  #include <openssl/objects.h>
 diff --git a/crypto/include/internal/poly1305.h b/crypto/include/internal/poly1305.h
-index 8e2cac521507..1bc8716fca27 100644
+index 8e2cac5..1bc8716 100644
 --- a/crypto/include/internal/poly1305.h
 +++ b/crypto/include/internal/poly1305.h
 @@ -1,52 +1,12 @@
@@ -60259,7 +65476,7 @@
  
  #define POLY1305_BLOCK_SIZE 16
 diff --git a/crypto/include/internal/rand.h b/crypto/include/internal/rand.h
-index be92fa19ec2f..30887c4a7cbf 100644
+index be92fa1..30887c4 100644
 --- a/crypto/include/internal/rand.h
 +++ b/crypto/include/internal/rand.h
 @@ -1,4 +1,13 @@
@@ -60277,7 +65494,7 @@
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
 diff --git a/crypto/include/internal/x509_int.h b/crypto/include/internal/x509_int.h
-index ee49f2aa4ace..6df291980207 100644
+index ee49f2a..c5472e1 100644
 --- a/crypto/include/internal/x509_int.h
 +++ b/crypto/include/internal/x509_int.h
 @@ -1,59 +1,10 @@
@@ -60345,7 +65562,7 @@
   */
  
  /* Internal X509 structures and functions: not for application use */
-@@ -109,7 +60,7 @@ struct X509_req_st {
+@@ -109,19 +60,19 @@ struct X509_req_st {
  
  struct X509_crl_info_st {
      ASN1_INTEGER *version;      /* version: defaults to v1(0) so may be NULL */
@@ -60354,6 +65571,21 @@
      X509_NAME *issuer;          /* CRL issuer name */
      ASN1_TIME *lastUpdate;      /* lastUpdate field */
      ASN1_TIME *nextUpdate;      /* nextUpdate field: optional */
+-    STACK_OF(X509_REVOKED) *revoked; /* revoked entries: optional */
++    STACK_OF(X509_REVOKED) *revoked;        /* revoked entries: optional */
+     STACK_OF(X509_EXTENSION) *extensions;   /* extensions: optional */
+-    ASN1_ENCODING enc;          /* encoding of signed portion of CRL */
++    ASN1_ENCODING enc;                      /* encoding of signed portion of CRL */
+ };
+ 
+ struct X509_crl_st {
+     X509_CRL_INFO crl;          /* signed CRL data */
+     X509_ALGOR sig_alg;         /* CRL signature algorithm */
+-    ASN1_BIT_STRING signature; /* CRL signature */
++    ASN1_BIT_STRING signature;  /* CRL signature */
+     int references;
+     int flags;
+     /*
 @@ -312,3 +263,5 @@ struct x509_object_st {
          EVP_PKEY *pkey;
      } data;
@@ -60361,7 +65593,7 @@
 +
 +int a2i_ipadd(unsigned char *ipout, const char *ipasc);
 diff --git a/crypto/init.c b/crypto/init.c
-index 48f74c496c0c..2344f991d2fc 100644
+index 48f74c4..693037f 100644
 --- a/crypto/init.c
 +++ b/crypto/init.c
 @@ -1,61 +1,12 @@
@@ -60431,6 +65663,25 @@
  #include <internal/cryptlib_int.h>
  #include <openssl/err.h>
  #include <internal/rand.h>
+@@ -202,15 +153,15 @@ static void ossl_init_no_add_algs(void)
+ 
+ static CRYPTO_ONCE config = CRYPTO_ONCE_STATIC_INIT;
+ static int config_inited = 0;
+-static const char *config_filename;
++static const char *appname;
+ static void ossl_init_config(void)
+ {
+ #ifdef OPENSSL_INIT_DEBUG
+     fprintf(stderr,
+             "OPENSSL_INIT: ossl_init_config: openssl_config(%s)\n",
+-            config_filename==NULL?"NULL":config_filename);
++            appname == NULL ? "NULL" : appname);
+ #endif
+-    openssl_config_int(config_filename);
++    openssl_config_int(appname);
+     config_inited = 1;
+ }
+ static void ossl_init_no_config(void)
 @@ -351,9 +302,9 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals)
      if (locals->err_state) {
  #ifdef OPENSSL_INIT_DEBUG
@@ -60443,9 +65694,18 @@
      }
  
      OPENSSL_free(locals);
+@@ -561,7 +512,7 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
+     if (opts & OPENSSL_INIT_LOAD_CONFIG) {
+         int ret;
+         CRYPTO_THREAD_write_lock(init_lock);
+-        config_filename = (settings == NULL) ? NULL : settings->config_name;
++        appname = (settings == NULL) ? NULL : settings->appname;
+         ret = CRYPTO_THREAD_run_once(&config, ossl_init_config);
+         CRYPTO_THREAD_unlock(init_lock);
+         if (!ret)
 diff --git a/crypto/kdf/Makefile.in b/crypto/kdf/Makefile.in
 deleted file mode 100644
-index 5ab2cbfe5495..000000000000
+index 5ab2cbf..0000000
 --- a/crypto/kdf/Makefile.in
 +++ /dev/null
 @@ -1,53 +0,0 @@
@@ -60503,7 +65763,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/kdf/hkdf.c b/crypto/kdf/hkdf.c
-index bbe4334fa594..00b95b5a8840 100644
+index bbe4334..00b95b5 100644
 --- a/crypto/kdf/hkdf.c
 +++ b/crypto/kdf/hkdf.c
 @@ -1,49 +1,10 @@
@@ -60563,7 +65823,7 @@
  
  #include <stdlib.h>
 diff --git a/crypto/kdf/kdf_err.c b/crypto/kdf/kdf_err.c
-index b0321c51bde4..6707a52ba719 100644
+index b0321c5..6707a52 100644
 --- a/crypto/kdf/kdf_err.c
 +++ b/crypto/kdf/kdf_err.c
 @@ -1,61 +1,11 @@
@@ -60636,7 +65896,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/kdf/tls1_prf.c b/crypto/kdf/tls1_prf.c
-index 4b40c88ce741..fa13732bbf92 100644
+index 4b40c88..fa13732 100644
 --- a/crypto/kdf/tls1_prf.c
 +++ b/crypto/kdf/tls1_prf.c
 @@ -1,59 +1,10 @@
@@ -60706,7 +65966,7 @@
  #include <stdio.h>
 diff --git a/crypto/lhash/Makefile.in b/crypto/lhash/Makefile.in
 deleted file mode 100644
-index 9b9281f8abff..000000000000
+index 9b9281f..0000000
 --- a/crypto/lhash/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -60754,15 +66014,13 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/lhash/lh_stats.c b/crypto/lhash/lh_stats.c
-index cad3a616aba4..7337832422d6 100644
+index cad3a61..7337832 100644
 --- a/crypto/lhash/lh_stats.c
 +++ b/crypto/lhash/lh_stats.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -60810,7 +66068,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -60909,15 +66169,13 @@
      unsigned int i;
      unsigned long total = 0, n_used = 0;
 diff --git a/crypto/lhash/lhash.c b/crypto/lhash/lhash.c
-index 60e9223b59dc..3e58eea9c58b 100644
+index 60e9223..3e58eea 100644
 --- a/crypto/lhash/lhash.c
 +++ b/crypto/lhash/lhash.c
 @@ -1,124 +1,39 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -60965,7 +66223,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -61251,7 +66511,7 @@
  }
 diff --git a/crypto/lhash/lhash_lcl.h b/crypto/lhash/lhash_lcl.h
 new file mode 100644
-index 000000000000..eb4a1a3f65fe
+index 0000000..eb4a1a3
 --- /dev/null
 +++ b/crypto/lhash/lhash_lcl.h
 @@ -0,0 +1,42 @@
@@ -61298,7 +66558,7 @@
 +    int error;
 +};
 diff --git a/crypto/lhash/num.pl b/crypto/lhash/num.pl
-index 4440a992dccd..8a8c42c8a030 100644
+index 4440a99..8a8c42c 100644
 --- a/crypto/lhash/num.pl
 +++ b/crypto/lhash/num.pl
 @@ -1,4 +1,10 @@
@@ -61315,7 +66575,7 @@
  
 diff --git a/crypto/md2/Makefile.in b/crypto/md2/Makefile.in
 deleted file mode 100644
-index 16bfea7babd8..000000000000
+index 16bfea7..0000000
 --- a/crypto/md2/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -61363,15 +66623,13 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/md2/md2_dgst.c b/crypto/md2/md2_dgst.c
-index 80dec2325f25..b43cd4f489bb 100644
+index 80dec23..b43cd4f 100644
 --- a/crypto/md2/md2_dgst.c
 +++ b/crypto/md2/md2_dgst.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -61419,7 +66677,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -61432,15 +66692,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/md2/md2_one.c b/crypto/md2/md2_one.c
-index ad643eee153c..460f96e475a5 100644
+index ad643ee..460f96e 100644
 --- a/crypto/md2/md2_one.c
 +++ b/crypto/md2/md2_one.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -61488,7 +66746,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -61502,7 +66762,7 @@
  #include <stdio.h>
 diff --git a/crypto/md4/Makefile.in b/crypto/md4/Makefile.in
 deleted file mode 100644
-index f63c611dae34..000000000000
+index f63c611..0000000
 --- a/crypto/md4/Makefile.in
 +++ /dev/null
 @@ -1,44 +0,0 @@
@@ -61551,15 +66811,13 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/md4/md4_dgst.c b/crypto/md4/md4_dgst.c
-index ab1e55b64a62..5319618615e3 100644
+index ab1e55b..5319618 100644
 --- a/crypto/md4/md4_dgst.c
 +++ b/crypto/md4/md4_dgst.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -61607,7 +66865,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -61620,15 +66880,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/md4/md4_locl.h b/crypto/md4/md4_locl.h
-index 7e9701c1dafa..6aec55626660 100644
+index 7e9701c..6aec556 100644
 --- a/crypto/md4/md4_locl.h
 +++ b/crypto/md4/md4_locl.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -61676,7 +66934,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -61689,7 +66949,7 @@
  
  #include <stdlib.h>
 diff --git a/crypto/md4/md4_one.c b/crypto/md4/md4_one.c
-index efcf2c6c5f23..9f0989fad6af 100644
+index efcf2c6..9f0989f 100644
 --- a/crypto/md4/md4_one.c
 +++ b/crypto/md4/md4_one.c
 @@ -1,58 +1,10 @@
@@ -61759,7 +67019,7 @@
  #include <stdio.h>
 diff --git a/crypto/md4/md4s.cpp b/crypto/md4/md4s.cpp
 deleted file mode 100644
-index c0ec97fc9f9b..000000000000
+index c0ec97f..0000000
 --- a/crypto/md4/md4s.cpp
 +++ /dev/null
 @@ -1,78 +0,0 @@
@@ -61843,7 +67103,7 @@
 -
 diff --git a/crypto/md5/Makefile.in b/crypto/md5/Makefile.in
 deleted file mode 100644
-index 48ddab350b21..000000000000
+index 48ddab3..0000000
 --- a/crypto/md5/Makefile.in
 +++ /dev/null
 @@ -1,61 +0,0 @@
@@ -61909,7 +67169,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/md5/asm/md5-586.pl b/crypto/md5/asm/md5-586.pl
-index b3b756cf7d48..24f68af546ac 100644
+index b3b756c..24f68af 100644
 --- a/crypto/md5/asm/md5-586.pl
 +++ b/crypto/md5/asm/md5-586.pl
 @@ -1,4 +1,11 @@
@@ -61926,7 +67186,7 @@
  # Normal is the
  # md5_block_x86(MD5_CTX *c, ULONG *X);
 diff --git a/crypto/md5/asm/md5-ia64.S b/crypto/md5/asm/md5-ia64.S
-index e7de08d46a2b..c20467b47b12 100644
+index e7de08d..c20467b 100644
 --- a/crypto/md5/asm/md5-ia64.S
 +++ b/crypto/md5/asm/md5-ia64.S
 @@ -1,3 +1,13 @@
@@ -61944,7 +67204,7 @@
  
  Permission is hereby granted, free of charge, to any person obtaining
 diff --git a/crypto/md5/asm/md5-sparcv9.pl b/crypto/md5/asm/md5-sparcv9.pl
-index 1c4ae5200b98..09e6d7139a8b 100644
+index 1c4ae52..09e6d71 100644
 --- a/crypto/md5/asm/md5-sparcv9.pl
 +++ b/crypto/md5/asm/md5-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -61961,7 +67221,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/md5/asm/md5-x86_64.pl b/crypto/md5/asm/md5-x86_64.pl
-index 8d820e114024..3f656dc0b2b8 100755
+index 8d820e1..3f656dc 100755
 --- a/crypto/md5/asm/md5-x86_64.pl
 +++ b/crypto/md5/asm/md5-x86_64.pl
 @@ -1,11 +1,13 @@
@@ -61994,15 +67254,13 @@
  
  $code .= <<EOF;
 diff --git a/crypto/md5/md5_dgst.c b/crypto/md5/md5_dgst.c
-index 37b0d31160fc..fbede6742af6 100644
+index 37b0d31..fbede67 100644
 --- a/crypto/md5/md5_dgst.c
 +++ b/crypto/md5/md5_dgst.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -62050,7 +67308,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -62063,15 +67323,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/md5/md5_locl.h b/crypto/md5/md5_locl.h
-index f2d80a035c5f..9c7aade840aa 100644
+index f2d80a0..9c7aade 100644
 --- a/crypto/md5/md5_locl.h
 +++ b/crypto/md5/md5_locl.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -62119,7 +67377,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -62141,7 +67401,7 @@
  #  define md5_block_data_order md5_block_asm_data_order
  # elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
 diff --git a/crypto/md5/md5_one.c b/crypto/md5/md5_one.c
-index 9771dcfe2955..becd87e4d602 100644
+index 9771dcf..becd87e 100644
 --- a/crypto/md5/md5_one.c
 +++ b/crypto/md5/md5_one.c
 @@ -1,58 +1,10 @@
@@ -62211,7 +67471,7 @@
  #include <stdio.h>
 diff --git a/crypto/md5/md5s.cpp b/crypto/md5/md5s.cpp
 deleted file mode 100644
-index dd343fd4e6ed..000000000000
+index dd343fd..0000000
 --- a/crypto/md5/md5s.cpp
 +++ /dev/null
 @@ -1,78 +0,0 @@
@@ -62295,7 +67555,7 @@
 -
 diff --git a/crypto/mdc2/Makefile.in b/crypto/mdc2/Makefile.in
 deleted file mode 100644
-index 2f2ccf9e3fd6..000000000000
+index 2f2ccf9..0000000
 --- a/crypto/mdc2/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -62343,7 +67603,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/mdc2/mdc2_one.c b/crypto/mdc2/mdc2_one.c
-index ee94bbe08fc9..472a5ec2e0db 100644
+index ee94bbe..472a5ec 100644
 --- a/crypto/mdc2/mdc2_one.c
 +++ b/crypto/mdc2/mdc2_one.c
 @@ -1,58 +1,10 @@
@@ -62412,7 +67672,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/mdc2/mdc2dgst.c b/crypto/mdc2/mdc2dgst.c
-index abfba5afdd03..6397a47e92dc 100644
+index abfba5a..6397a47 100644
 --- a/crypto/mdc2/mdc2dgst.c
 +++ b/crypto/mdc2/mdc2dgst.c
 @@ -1,58 +1,10 @@
@@ -62481,15 +67741,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/mem.c b/crypto/mem.c
-index 16ef64c6fecf..6be14ab54ae2 100644
+index 16ef64c..6be14ab 100644
 --- a/crypto/mem.c
 +++ b/crypto/mem.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -62537,7 +67795,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -62563,7 +67823,7 @@
  }
  
 diff --git a/crypto/mem_clr.c b/crypto/mem_clr.c
-index 3389919d5fd4..a1a4f93009c9 100644
+index 3389919..a1a4f93 100644
 --- a/crypto/mem_clr.c
 +++ b/crypto/mem_clr.c
 @@ -1,59 +1,10 @@
@@ -62632,7 +67892,7 @@
  
  #include <string.h>
 diff --git a/crypto/mem_dbg.c b/crypto/mem_dbg.c
-index 2b8cf73028de..0b4870823262 100644
+index 2b8cf73..0b48708 100644
 --- a/crypto/mem_dbg.c
 +++ b/crypto/mem_dbg.c
 @@ -1,118 +1,16 @@
@@ -62761,7 +68021,7 @@
  #include <openssl/buffer.h>
  #include "internal/bio.h"
 diff --git a/crypto/mem_sec.c b/crypto/mem_sec.c
-index 31c052512d51..4ccff34e5e8f 100644
+index 31c0525..4ccff34 100644
 --- a/crypto/mem_sec.c
 +++ b/crypto/mem_sec.c
 @@ -1,4 +1,13 @@
@@ -62992,7 +68252,7 @@
  #endif /* IMPLEMENTED */
 diff --git a/crypto/modes/Makefile.in b/crypto/modes/Makefile.in
 deleted file mode 100644
-index 22ab8b9b0e39..000000000000
+index 22ab8b9..0000000
 --- a/crypto/modes/Makefile.in
 +++ /dev/null
 @@ -1,76 +0,0 @@
@@ -63073,7 +68333,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/modes/asm/aesni-gcm-x86_64.pl b/crypto/modes/asm/aesni-gcm-x86_64.pl
-index 8f5026b3a40f..810876c1a632 100644
+index 8f5026b..810876c 100644
 --- a/crypto/modes/asm/aesni-gcm-x86_64.pl
 +++ b/crypto/modes/asm/aesni-gcm-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -63099,7 +68359,7 @@
  
  if ($avx>1) {{{
 diff --git a/crypto/modes/asm/ghash-alpha.pl b/crypto/modes/asm/ghash-alpha.pl
-index df6b3a3b6f43..ccf6b2bd6fac 100644
+index df6b3a3..ccf6b2b 100644
 --- a/crypto/modes/asm/ghash-alpha.pl
 +++ b/crypto/modes/asm/ghash-alpha.pl
 @@ -1,4 +1,11 @@
@@ -63116,7 +68376,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/modes/asm/ghash-armv4.pl b/crypto/modes/asm/ghash-armv4.pl
-index 6cc36532fa27..db56c8592802 100644
+index 6cc3653..db56c85 100644
 --- a/crypto/modes/asm/ghash-armv4.pl
 +++ b/crypto/modes/asm/ghash-armv4.pl
 @@ -1,4 +1,11 @@
@@ -63133,7 +68393,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/modes/asm/ghash-c64xplus.pl b/crypto/modes/asm/ghash-c64xplus.pl
-index 93f698521150..3cadda39945c 100644
+index 93f6985..3cadda3 100644
 --- a/crypto/modes/asm/ghash-c64xplus.pl
 +++ b/crypto/modes/asm/ghash-c64xplus.pl
 @@ -1,4 +1,11 @@
@@ -63150,7 +68410,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/modes/asm/ghash-ia64.pl b/crypto/modes/asm/ghash-ia64.pl
-index 9d49143c31c9..81e75f71a800 100755
+index 9d49143..81e75f7 100755
 --- a/crypto/modes/asm/ghash-ia64.pl
 +++ b/crypto/modes/asm/ghash-ia64.pl
 @@ -1,4 +1,11 @@
@@ -63167,7 +68427,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/modes/asm/ghash-parisc.pl b/crypto/modes/asm/ghash-parisc.pl
-index d5ad96b40335..1d6254543bae 100644
+index d5ad96b..1d62545 100644
 --- a/crypto/modes/asm/ghash-parisc.pl
 +++ b/crypto/modes/asm/ghash-parisc.pl
 @@ -1,4 +1,11 @@
@@ -63184,7 +68444,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/modes/asm/ghash-s390x.pl b/crypto/modes/asm/ghash-s390x.pl
-index a46f3eba6a24..65ffaf98bca6 100644
+index a46f3eb..65ffaf9 100644
 --- a/crypto/modes/asm/ghash-s390x.pl
 +++ b/crypto/modes/asm/ghash-s390x.pl
 @@ -1,4 +1,11 @@
@@ -63212,7 +68472,7 @@
  	jz	.Lsoft_gmult
  	stg	%r0,16($sp)	# arrange 16 bytes of zero input
 diff --git a/crypto/modes/asm/ghash-sparcv9.pl b/crypto/modes/asm/ghash-sparcv9.pl
-index badfcf7b092c..6ca3a9bdf002 100644
+index badfcf7..6ca3a9b 100644
 --- a/crypto/modes/asm/ghash-sparcv9.pl
 +++ b/crypto/modes/asm/ghash-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -63229,7 +68489,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/modes/asm/ghash-x86.pl b/crypto/modes/asm/ghash-x86.pl
-index db6eeae0fe4f..4eb0b2c6e52d 100644
+index db6eeae..4eb0b2c 100644
 --- a/crypto/modes/asm/ghash-x86.pl
 +++ b/crypto/modes/asm/ghash-x86.pl
 @@ -1,4 +1,11 @@
@@ -63246,7 +68506,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/modes/asm/ghash-x86_64.pl b/crypto/modes/asm/ghash-x86_64.pl
-index 006215ecb189..b4a8ddbd2e80 100644
+index 006215e..b4a8ddb 100644
 --- a/crypto/modes/asm/ghash-x86_64.pl
 +++ b/crypto/modes/asm/ghash-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -63272,7 +68532,7 @@
  
  $do4xaggr=1;
 diff --git a/crypto/modes/asm/ghashp8-ppc.pl b/crypto/modes/asm/ghashp8-ppc.pl
-index 71457cf4fc59..70a63537fb50 100755
+index 71457cf..f0598cb 100755
 --- a/crypto/modes/asm/ghashp8-ppc.pl
 +++ b/crypto/modes/asm/ghashp8-ppc.pl
 @@ -1,4 +1,11 @@
@@ -63288,8 +68548,611 @@
  #
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
+@@ -18,6 +25,12 @@
+ # faster than "4-bit" integer-only compiler-generated 64-bit code.
+ # "Initial version" means that there is room for futher improvement.
+ 
++# May 2016
++#
++# 2x aggregated reduction improves performance by 50% (resulting
++# performance on POWER8 is 1 cycle per processed byte), and 4x
++# aggregated reduction - by 170% or 2.7x (resulting in 0.55 cpb).
++
+ $flavour=shift;
+ $output =shift;
+ 
+@@ -27,14 +40,21 @@ if ($flavour =~ /64/) {
+ 	$STU="stdu";
+ 	$POP="ld";
+ 	$PUSH="std";
++	$UCMP="cmpld";
++	$SHRI="srdi";
+ } elsif ($flavour =~ /32/) {
+ 	$SIZE_T=4;
+ 	$LRSAVE=$SIZE_T;
+ 	$STU="stwu";
+ 	$POP="lwz";
+ 	$PUSH="stw";
++	$UCMP="cmplw";
++	$SHRI="srwi";
+ } else { die "nonsense $flavour"; }
+ 
++$sp="r1";
++$FRAME=6*$SIZE_T+13*16;	# 13*16 is for v20-v31 offload
++
+ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
+ ( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
+ ( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or
+@@ -46,6 +66,7 @@ my ($Xip,$Htbl,$inp,$len)=map("r$_",(3..6));	# argument block
+ 
+ my ($Xl,$Xm,$Xh,$IN)=map("v$_",(0..3));
+ my ($zero,$t0,$t1,$t2,$xC2,$H,$Hh,$Hl,$lemask)=map("v$_",(4..12));
++my ($Xl1,$Xm1,$Xh1,$IN1,$H2,$H2h,$H2l)=map("v$_",(13..19));
+ my $vrsave="r12";
+ 
+ $code=<<___;
+@@ -56,7 +77,7 @@ $code=<<___;
+ .globl	.gcm_init_p8
+ .align	5
+ .gcm_init_p8:
+-	lis		r0,0xfff0
++	li		r0,-4096
+ 	li		r8,0x10
+ 	mfspr		$vrsave,256
+ 	li		r9,0x20
+@@ -78,17 +99,103 @@ $code=<<___;
+ 	vsl		$H,$H,$t0		# H<<=1
+ 	vsrab		$t1,$t1,$t2		# broadcast carry bit
+ 	vand		$t1,$t1,$xC2
+-	vxor		$H,$H,$t1		# twisted H
++	vxor		$IN,$H,$t1		# twisted H
+ 
+-	vsldoi		$H,$H,$H,8		# twist even more ...
++	vsldoi		$H,$IN,$IN,8		# twist even more ...
+ 	vsldoi		$xC2,$zero,$xC2,8	# 0xc2.0
+ 	vsldoi		$Hl,$zero,$H,8		# ... and split
+ 	vsldoi		$Hh,$H,$zero,8
+ 
+ 	stvx_u		$xC2,0,r3		# save pre-computed table
+ 	stvx_u		$Hl,r8,r3
++	li		r8,0x40
+ 	stvx_u		$H, r9,r3
++	li		r9,0x50
+ 	stvx_u		$Hh,r10,r3
++	li		r10,0x60
++
++	vpmsumd		$Xl,$IN,$Hl		# H.lo·H.lo
++	vpmsumd		$Xm,$IN,$H		# H.hi·H.lo+H.lo·H.hi
++	vpmsumd		$Xh,$IN,$Hh		# H.hi·H.hi
++
++	vpmsumd		$t2,$Xl,$xC2		# 1st reduction phase
++
++	vsldoi		$t0,$Xm,$zero,8
++	vsldoi		$t1,$zero,$Xm,8
++	vxor		$Xl,$Xl,$t0
++	vxor		$Xh,$Xh,$t1
++
++	vsldoi		$Xl,$Xl,$Xl,8
++	vxor		$Xl,$Xl,$t2
++
++	vsldoi		$t1,$Xl,$Xl,8		# 2nd reduction phase
++	vpmsumd		$Xl,$Xl,$xC2
++	vxor		$t1,$t1,$Xh
++	vxor		$IN1,$Xl,$t1
++
++	vsldoi		$H2,$IN1,$IN1,8
++	vsldoi		$H2l,$zero,$H2,8
++	vsldoi		$H2h,$H2,$zero,8
++
++	stvx_u		$H2l,r8,r3		# save H^2
++	li		r8,0x70
++	stvx_u		$H2,r9,r3
++	li		r9,0x80
++	stvx_u		$H2h,r10,r3
++	li		r10,0x90
++___
++{
++my ($t4,$t5,$t6) = ($Hl,$H,$Hh);
++$code.=<<___;
++	vpmsumd		$Xl,$IN,$H2l		# H.lo·H^2.lo
++	 vpmsumd	$Xl1,$IN1,$H2l		# H^2.lo·H^2.lo
++	vpmsumd		$Xm,$IN,$H2		# H.hi·H^2.lo+H.lo·H^2.hi
++	 vpmsumd	$Xm1,$IN1,$H2		# H^2.hi·H^2.lo+H^2.lo·H^2.hi
++	vpmsumd		$Xh,$IN,$H2h		# H.hi·H^2.hi
++	 vpmsumd	$Xh1,$IN1,$H2h		# H^2.hi·H^2.hi
++
++	vpmsumd		$t2,$Xl,$xC2		# 1st reduction phase
++	 vpmsumd	$t6,$Xl1,$xC2		# 1st reduction phase
++
++	vsldoi		$t0,$Xm,$zero,8
++	vsldoi		$t1,$zero,$Xm,8
++	 vsldoi		$t4,$Xm1,$zero,8
++	 vsldoi		$t5,$zero,$Xm1,8
++	vxor		$Xl,$Xl,$t0
++	vxor		$Xh,$Xh,$t1
++	 vxor		$Xl1,$Xl1,$t4
++	 vxor		$Xh1,$Xh1,$t5
++
++	vsldoi		$Xl,$Xl,$Xl,8
++	 vsldoi		$Xl1,$Xl1,$Xl1,8
++	vxor		$Xl,$Xl,$t2
++	 vxor		$Xl1,$Xl1,$t6
++
++	vsldoi		$t1,$Xl,$Xl,8		# 2nd reduction phase
++	 vsldoi		$t5,$Xl1,$Xl1,8		# 2nd reduction phase
++	vpmsumd		$Xl,$Xl,$xC2
++	 vpmsumd	$Xl1,$Xl1,$xC2
++	vxor		$t1,$t1,$Xh
++	 vxor		$t5,$t5,$Xh1
++	vxor		$Xl,$Xl,$t1
++	 vxor		$Xl1,$Xl1,$t5
++
++	vsldoi		$H,$Xl,$Xl,8
++	 vsldoi		$H2,$Xl1,$Xl1,8
++	vsldoi		$Hl,$zero,$H,8
++	vsldoi		$Hh,$H,$zero,8
++	 vsldoi		$H2l,$zero,$H2,8
++	 vsldoi		$H2h,$H2,$zero,8
++
++	stvx_u		$Hl,r8,r3		# save H^3
++	li		r8,0xa0
++	stvx_u		$H,r9,r3
++	li		r9,0xb0
++	stvx_u		$Hh,r10,r3
++	li		r10,0xc0
++	 stvx_u		$H2l,r8,r3		# save H^4
++	 stvx_u		$H2,r9,r3
++	 stvx_u		$H2h,r10,r3
+ 
+ 	mtspr		256,$vrsave
+ 	blr
+@@ -96,7 +203,9 @@ $code=<<___;
+ 	.byte		0,12,0x14,0,0,0,2,0
+ 	.long		0
+ .size	.gcm_init_p8,.-.gcm_init_p8
+-
++___
++}
++$code.=<<___;
+ .globl	.gcm_gmult_p8
+ .align	5
+ .gcm_gmult_p8:
+@@ -122,7 +231,7 @@ $code=<<___;
+ 	vpmsumd		$Xm,$IN,$H		# H.hi·Xi.lo+H.lo·Xi.hi
+ 	vpmsumd		$Xh,$IN,$Hh		# H.hi·Xi.hi
+ 
+-	vpmsumd		$t2,$Xl,$xC2		# 1st phase
++	vpmsumd		$t2,$Xl,$xC2		# 1st reduction phase
+ 
+ 	vsldoi		$t0,$Xm,$zero,8
+ 	vsldoi		$t1,$zero,$Xm,8
+@@ -132,7 +241,7 @@ $code=<<___;
+ 	vsldoi		$Xl,$Xl,$Xl,8
+ 	vxor		$Xl,$Xl,$t2
+ 
+-	vsldoi		$t1,$Xl,$Xl,8		# 2nd phase
++	vsldoi		$t1,$Xl,$Xl,8		# 2nd reduction phase
+ 	vpmsumd		$Xl,$Xl,$xC2
+ 	vxor		$t1,$t1,$Xh
+ 	vxor		$Xl,$Xl,$t1
+@@ -150,7 +259,7 @@ $code=<<___;
+ .globl	.gcm_ghash_p8
+ .align	5
+ .gcm_ghash_p8:
+-	lis		r0,0xfff8
++	li		r0,-4096
+ 	li		r8,0x10
+ 	mfspr		$vrsave,256
+ 	li		r9,0x20
+@@ -159,52 +268,99 @@ $code=<<___;
+ 	lvx_u		$Xl,0,$Xip		# load Xi
+ 
+ 	lvx_u		$Hl,r8,$Htbl		# load pre-computed table
++	li		r8,0x40
+ 	 le?lvsl	$lemask,r0,r0
+ 	lvx_u		$H, r9,$Htbl
++	li		r9,0x50
+ 	 le?vspltisb	$t0,0x07
+ 	lvx_u		$Hh,r10,$Htbl
++	li		r10,0x60
+ 	 le?vxor	$lemask,$lemask,$t0
+ 	lvx_u		$xC2,0,$Htbl
+ 	 le?vperm	$Xl,$Xl,$Xl,$lemask
+ 	vxor		$zero,$zero,$zero
+ 
++	${UCMP}i	$len,64
++	bge		Lgcm_ghash_p8_4x
++
+ 	lvx_u		$IN,0,$inp
+ 	addi		$inp,$inp,16
+-	subi		$len,$len,16
++	subic.		$len,$len,16
+ 	 le?vperm	$IN,$IN,$IN,$lemask
+ 	vxor		$IN,$IN,$Xl
+-	b		Loop
++	beq		Lshort
++
++	lvx_u		$H2l,r8,$Htbl		# load H^2
++	li		r8,16
++	lvx_u		$H2, r9,$Htbl
++	add		r9,$inp,$len		# end of input
++	lvx_u		$H2h,r10,$Htbl
++	be?b		Loop_2x
+ 
+ .align	5
+-Loop:
+-	 subic		$len,$len,16
+-	vpmsumd		$Xl,$IN,$Hl		# H.lo·Xi.lo
+-	 subfe.		r0,r0,r0		# borrow?-1:0
+-	vpmsumd		$Xm,$IN,$H		# H.hi·Xi.lo+H.lo·Xi.hi
++Loop_2x:
++	lvx_u		$IN1,0,$inp
++	le?vperm	$IN1,$IN1,$IN1,$lemask
++
++	 subic		$len,$len,32
++	vpmsumd		$Xl,$IN,$H2l		# H^2.lo·Xi.lo
++	 vpmsumd	$Xl1,$IN1,$Hl		# H.lo·Xi+1.lo
++	 subfe		r0,r0,r0		# borrow?-1:0
++	vpmsumd		$Xm,$IN,$H2		# H^2.hi·Xi.lo+H^2.lo·Xi.hi
++	 vpmsumd	$Xm1,$IN1,$H		# H.hi·Xi+1.lo+H.lo·Xi+1.hi
+ 	 and		r0,r0,$len
+-	vpmsumd		$Xh,$IN,$Hh		# H.hi·Xi.hi
++	vpmsumd		$Xh,$IN,$H2h		# H^2.hi·Xi.hi
++	 vpmsumd	$Xh1,$IN1,$Hh		# H.hi·Xi+1.hi
+ 	 add		$inp,$inp,r0
+ 
+-	vpmsumd		$t2,$Xl,$xC2		# 1st phase
++	vxor		$Xl,$Xl,$Xl1
++	vxor		$Xm,$Xm,$Xm1
++
++	vpmsumd		$t2,$Xl,$xC2		# 1st reduction phase
+ 
+ 	vsldoi		$t0,$Xm,$zero,8
+ 	vsldoi		$t1,$zero,$Xm,8
++	 vxor		$Xh,$Xh,$Xh1
+ 	vxor		$Xl,$Xl,$t0
+ 	vxor		$Xh,$Xh,$t1
+ 
+ 	vsldoi		$Xl,$Xl,$Xl,8
+ 	vxor		$Xl,$Xl,$t2
+-	 lvx_u		$IN,0,$inp
+-	 addi		$inp,$inp,16
++	 lvx_u		$IN,r8,$inp
++	 addi		$inp,$inp,32
+ 
+-	vsldoi		$t1,$Xl,$Xl,8		# 2nd phase
++	vsldoi		$t1,$Xl,$Xl,8		# 2nd reduction phase
+ 	vpmsumd		$Xl,$Xl,$xC2
+ 	 le?vperm	$IN,$IN,$IN,$lemask
+ 	vxor		$t1,$t1,$Xh
+ 	vxor		$IN,$IN,$t1
+ 	vxor		$IN,$IN,$Xl
+-	beq		Loop			# did $len-=16 borrow?
++	$UCMP		r9,$inp
++	bgt		Loop_2x			# done yet?
++
++	cmplwi		$len,0
++	bne		Leven
++
++Lshort:
++	vpmsumd		$Xl,$IN,$Hl		# H.lo·Xi.lo
++	vpmsumd		$Xm,$IN,$H		# H.hi·Xi.lo+H.lo·Xi.hi
++	vpmsumd		$Xh,$IN,$Hh		# H.hi·Xi.hi
++
++	vpmsumd		$t2,$Xl,$xC2		# 1st reduction phase
++
++	vsldoi		$t0,$Xm,$zero,8
++	vsldoi		$t1,$zero,$Xm,8
++	vxor		$Xl,$Xl,$t0
++	vxor		$Xh,$Xh,$t1
++
++	vsldoi		$Xl,$Xl,$Xl,8
++	vxor		$Xl,$Xl,$t2
++
++	vsldoi		$t1,$Xl,$Xl,8		# 2nd reduction phase
++	vpmsumd		$Xl,$Xl,$xC2
++	vxor		$t1,$t1,$Xh
+ 
++Leven:
+ 	vxor		$Xl,$Xl,$t1
+ 	le?vperm	$Xl,$Xl,$Xl,$lemask
+ 	stvx_u		$Xl,0,$Xip		# write out Xi
+@@ -214,6 +370,284 @@ Loop:
+ 	.long		0
+ 	.byte		0,12,0x14,0,0,0,4,0
+ 	.long		0
++___
++{
++my ($Xl3,$Xm2,$IN2,$H3l,$H3,$H3h,
++    $Xh3,$Xm3,$IN3,$H4l,$H4,$H4h) = map("v$_",(20..31));
++my $IN0=$IN;
++my ($H21l,$H21h,$loperm,$hiperm) = ($Hl,$Hh,$H2l,$H2h);
++
++$code.=<<___;
++.align	5
++.gcm_ghash_p8_4x:
++Lgcm_ghash_p8_4x:
++	$STU		$sp,-$FRAME($sp)
++	li		r10,`15+6*$SIZE_T`
++	li		r11,`31+6*$SIZE_T`
++	stvx		v20,r10,$sp
++	addi		r10,r10,32
++	stvx		v21,r11,$sp
++	addi		r11,r11,32
++	stvx		v22,r10,$sp
++	addi		r10,r10,32
++	stvx		v23,r11,$sp
++	addi		r11,r11,32
++	stvx		v24,r10,$sp
++	addi		r10,r10,32
++	stvx		v25,r11,$sp
++	addi		r11,r11,32
++	stvx		v26,r10,$sp
++	addi		r10,r10,32
++	stvx		v27,r11,$sp
++	addi		r11,r11,32
++	stvx		v28,r10,$sp
++	addi		r10,r10,32
++	stvx		v29,r11,$sp
++	addi		r11,r11,32
++	stvx		v30,r10,$sp
++	li		r10,0x60
++	stvx		v31,r11,$sp
++	li		r0,-1
++	stw		$vrsave,`$FRAME-4`($sp)	# save vrsave
++	mtspr		256,r0			# preserve all AltiVec registers
++
++	lvsl		$t0,0,r8		# 0x0001..0e0f
++	#lvx_u		$H2l,r8,$Htbl		# load H^2
++	li		r8,0x70
++	lvx_u		$H2, r9,$Htbl
++	li		r9,0x80
++	vspltisb	$t1,8			# 0x0808..0808
++	#lvx_u		$H2h,r10,$Htbl
++	li		r10,0x90
++	lvx_u		$H3l,r8,$Htbl		# load H^3
++	li		r8,0xa0
++	lvx_u		$H3, r9,$Htbl
++	li		r9,0xb0
++	lvx_u		$H3h,r10,$Htbl
++	li		r10,0xc0
++	lvx_u		$H4l,r8,$Htbl		# load H^4
++	li		r8,0x10
++	lvx_u		$H4, r9,$Htbl
++	li		r9,0x20
++	lvx_u		$H4h,r10,$Htbl
++	li		r10,0x30
++
++	vsldoi		$t2,$zero,$t1,8		# 0x0000..0808
++	vaddubm		$hiperm,$t0,$t2		# 0x0001..1617
++	vaddubm		$loperm,$t1,$hiperm	# 0x0809..1e1f
++
++	$SHRI		$len,$len,4		# this allows to use sign bit
++						# as carry
++	lvx_u		$IN0,0,$inp		# load input
++	lvx_u		$IN1,r8,$inp
++	subic.		$len,$len,8
++	lvx_u		$IN2,r9,$inp
++	lvx_u		$IN3,r10,$inp
++	addi		$inp,$inp,0x40
++	le?vperm	$IN0,$IN0,$IN0,$lemask
++	le?vperm	$IN1,$IN1,$IN1,$lemask
++	le?vperm	$IN2,$IN2,$IN2,$lemask
++	le?vperm	$IN3,$IN3,$IN3,$lemask
++
++	vxor		$Xh,$IN0,$Xl
++
++	 vpmsumd	$Xl1,$IN1,$H3l
++	 vpmsumd	$Xm1,$IN1,$H3
++	 vpmsumd	$Xh1,$IN1,$H3h
++
++	 vperm		$H21l,$H2,$H,$hiperm
++	 vperm		$t0,$IN2,$IN3,$loperm
++	 vperm		$H21h,$H2,$H,$loperm
++	 vperm		$t1,$IN2,$IN3,$hiperm
++	 vpmsumd	$Xm2,$IN2,$H2		# H^2.lo·Xi+2.hi+H^2.hi·Xi+2.lo
++	 vpmsumd	$Xl3,$t0,$H21l		# H^2.lo·Xi+2.lo+H.lo·Xi+3.lo
++	 vpmsumd	$Xm3,$IN3,$H		# H.hi·Xi+3.lo  +H.lo·Xi+3.hi
++	 vpmsumd	$Xh3,$t1,$H21h		# H^2.hi·Xi+2.hi+H.hi·Xi+3.hi
++
++	 vxor		$Xm2,$Xm2,$Xm1
++	 vxor		$Xl3,$Xl3,$Xl1
++	 vxor		$Xm3,$Xm3,$Xm2
++	 vxor		$Xh3,$Xh3,$Xh1
++
++	blt		Ltail_4x
++
++Loop_4x:
++	lvx_u		$IN0,0,$inp
++	lvx_u		$IN1,r8,$inp
++	subic.		$len,$len,4
++	lvx_u		$IN2,r9,$inp
++	lvx_u		$IN3,r10,$inp
++	addi		$inp,$inp,0x40
++	le?vperm	$IN1,$IN1,$IN1,$lemask
++	le?vperm	$IN2,$IN2,$IN2,$lemask
++	le?vperm	$IN3,$IN3,$IN3,$lemask
++	le?vperm	$IN0,$IN0,$IN0,$lemask
++
++	vpmsumd		$Xl,$Xh,$H4l		# H^4.lo·Xi.lo
++	vpmsumd		$Xm,$Xh,$H4		# H^4.hi·Xi.lo+H^4.lo·Xi.hi
++	vpmsumd		$Xh,$Xh,$H4h		# H^4.hi·Xi.hi
++	 vpmsumd	$Xl1,$IN1,$H3l
++	 vpmsumd	$Xm1,$IN1,$H3
++	 vpmsumd	$Xh1,$IN1,$H3h
++
++	vxor		$Xl,$Xl,$Xl3
++	vxor		$Xm,$Xm,$Xm3
++	vxor		$Xh,$Xh,$Xh3
++	 vperm		$t0,$IN2,$IN3,$loperm
++	 vperm		$t1,$IN2,$IN3,$hiperm
++
++	vpmsumd		$t2,$Xl,$xC2		# 1st reduction phase
++	 vpmsumd	$Xl3,$t0,$H21l		# H.lo·Xi+3.lo  +H^2.lo·Xi+2.lo
++	 vpmsumd	$Xh3,$t1,$H21h		# H.hi·Xi+3.hi  +H^2.hi·Xi+2.hi
++
++	vsldoi		$t0,$Xm,$zero,8
++	vsldoi		$t1,$zero,$Xm,8
++	vxor		$Xl,$Xl,$t0
++	vxor		$Xh,$Xh,$t1
++
++	vsldoi		$Xl,$Xl,$Xl,8
++	vxor		$Xl,$Xl,$t2
++
++	vsldoi		$t1,$Xl,$Xl,8		# 2nd reduction phase
++	 vpmsumd	$Xm2,$IN2,$H2		# H^2.hi·Xi+2.lo+H^2.lo·Xi+2.hi
++	 vpmsumd	$Xm3,$IN3,$H		# H.hi·Xi+3.lo  +H.lo·Xi+3.hi
++	vpmsumd		$Xl,$Xl,$xC2
++
++	 vxor		$Xl3,$Xl3,$Xl1
++	 vxor		$Xh3,$Xh3,$Xh1
++	vxor		$Xh,$Xh,$IN0
++	 vxor		$Xm2,$Xm2,$Xm1
++	vxor		$Xh,$Xh,$t1
++	 vxor		$Xm3,$Xm3,$Xm2
++	vxor		$Xh,$Xh,$Xl
++	bge		Loop_4x
++
++Ltail_4x:
++	vpmsumd		$Xl,$Xh,$H4l		# H^4.lo·Xi.lo
++	vpmsumd		$Xm,$Xh,$H4		# H^4.hi·Xi.lo+H^4.lo·Xi.hi
++	vpmsumd		$Xh,$Xh,$H4h		# H^4.hi·Xi.hi
++
++	vxor		$Xl,$Xl,$Xl3
++	vxor		$Xm,$Xm,$Xm3
++
++	vpmsumd		$t2,$Xl,$xC2		# 1st reduction phase
++
++	vsldoi		$t0,$Xm,$zero,8
++	vsldoi		$t1,$zero,$Xm,8
++	 vxor		$Xh,$Xh,$Xh3
++	vxor		$Xl,$Xl,$t0
++	vxor		$Xh,$Xh,$t1
++
++	vsldoi		$Xl,$Xl,$Xl,8
++	vxor		$Xl,$Xl,$t2
++
++	vsldoi		$t1,$Xl,$Xl,8		# 2nd reduction phase
++	vpmsumd		$Xl,$Xl,$xC2
++	vxor		$t1,$t1,$Xh
++	vxor		$Xl,$Xl,$t1
++
++	addic.		$len,$len,4
++	beq		Ldone_4x
++
++	lvx_u		$IN0,0,$inp
++	${UCMP}i	$len,2
++	li		$len,-4
++	blt		Lone
++	lvx_u		$IN1,r8,$inp
++	beq		Ltwo
++
++Lthree:
++	lvx_u		$IN2,r9,$inp
++	le?vperm	$IN0,$IN0,$IN0,$lemask
++	le?vperm	$IN1,$IN1,$IN1,$lemask
++	le?vperm	$IN2,$IN2,$IN2,$lemask
++
++	vxor		$Xh,$IN0,$Xl
++	vmr		$H4l,$H3l
++	vmr		$H4, $H3
++	vmr		$H4h,$H3h
++
++	vperm		$t0,$IN1,$IN2,$loperm
++	vperm		$t1,$IN1,$IN2,$hiperm
++	vpmsumd		$Xm2,$IN1,$H2		# H^2.lo·Xi+1.hi+H^2.hi·Xi+1.lo
++	vpmsumd		$Xm3,$IN2,$H		# H.hi·Xi+2.lo  +H.lo·Xi+2.hi
++	vpmsumd		$Xl3,$t0,$H21l		# H^2.lo·Xi+1.lo+H.lo·Xi+2.lo
++	vpmsumd		$Xh3,$t1,$H21h		# H^2.hi·Xi+1.hi+H.hi·Xi+2.hi
++
++	vxor		$Xm3,$Xm3,$Xm2
++	b		Ltail_4x
++
++.align	4
++Ltwo:
++	le?vperm	$IN0,$IN0,$IN0,$lemask
++	le?vperm	$IN1,$IN1,$IN1,$lemask
++
++	vxor		$Xh,$IN0,$Xl
++	vperm		$t0,$zero,$IN1,$loperm
++	vperm		$t1,$zero,$IN1,$hiperm
++
++	vsldoi		$H4l,$zero,$H2,8
++	vmr		$H4, $H2
++	vsldoi		$H4h,$H2,$zero,8
++
++	vpmsumd		$Xl3,$t0, $H21l		# H.lo·Xi+1.lo
++	vpmsumd		$Xm3,$IN1,$H		# H.hi·Xi+1.lo+H.lo·Xi+2.hi
++	vpmsumd		$Xh3,$t1, $H21h		# H.hi·Xi+1.hi
++
++	b		Ltail_4x
++
++.align	4
++Lone:
++	le?vperm	$IN0,$IN0,$IN0,$lemask
++
++	vsldoi		$H4l,$zero,$H,8
++	vmr		$H4, $H
++	vsldoi		$H4h,$H,$zero,8
++
++	vxor		$Xh,$IN0,$Xl
++	vxor		$Xl3,$Xl3,$Xl3
++	vxor		$Xm3,$Xm3,$Xm3
++	vxor		$Xh3,$Xh3,$Xh3
++
++	b		Ltail_4x
++
++Ldone_4x:
++	le?vperm	$Xl,$Xl,$Xl,$lemask
++	stvx_u		$Xl,0,$Xip		# write out Xi
++
++	li		r10,`15+6*$SIZE_T`
++	li		r11,`31+6*$SIZE_T`
++	mtspr		256,$vrsave
++	lvx		v20,r10,$sp
++	addi		r10,r10,32
++	lvx		v21,r11,$sp
++	addi		r11,r11,32
++	lvx		v22,r10,$sp
++	addi		r10,r10,32
++	lvx		v23,r11,$sp
++	addi		r11,r11,32
++	lvx		v24,r10,$sp
++	addi		r10,r10,32
++	lvx		v25,r11,$sp
++	addi		r11,r11,32
++	lvx		v26,r10,$sp
++	addi		r10,r10,32
++	lvx		v27,r11,$sp
++	addi		r11,r11,32
++	lvx		v28,r10,$sp
++	addi		r10,r10,32
++	lvx		v29,r11,$sp
++	addi		r11,r11,32
++	lvx		v30,r10,$sp
++	lvx		v31,r11,$sp
++	addi		$sp,$sp,$FRAME
++	blr
++	.long		0
++	.byte		0,12,0x04,0,0x80,0,4,0
++	.long		0
++___
++}
++$code.=<<___;
+ .size	.gcm_ghash_p8,.-.gcm_ghash_p8
+ 
+ .asciz  "GHASH for PowerISA 2.07, CRYPTOGAMS by <appro\@openssl.org>"
+@@ -221,6 +655,8 @@ Loop:
+ ___
+ 
+ foreach (split("\n",$code)) {
++	s/\`([^\`]*)\`/eval $1/geo;
++
+ 	if ($flavour =~ /le$/o) {	# little-endian
+ 	    s/le\?//o		or
+ 	    s/be\?/#be#/o;
 diff --git a/crypto/modes/asm/ghashv8-armx.pl b/crypto/modes/asm/ghashv8-armx.pl
-index fe3a34d28e8c..5fcd0b9d032b 100644
+index fe3a34d..5fcd0b9 100644
 --- a/crypto/modes/asm/ghashv8-armx.pl
 +++ b/crypto/modes/asm/ghashv8-armx.pl
 @@ -1,4 +1,11 @@
@@ -63306,7 +69169,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/modes/build.info b/crypto/modes/build.info
-index 43282c4ee7b0..38195c44a565 100644
+index 43282c4..38195c4 100644
 --- a/crypto/modes/build.info
 +++ b/crypto/modes/build.info
 @@ -12,7 +12,7 @@ GENERATE[ghash-x86_64.s]=asm/ghash-x86_64.pl $(PERLASM_SCHEME)
@@ -63319,7 +69182,7 @@
  GENERATE[ghashp8-ppc.s]=asm/ghashp8-ppc.pl $(PERLASM_SCHEME)
  GENERATE[ghash-armv4.S]=asm/ghash-armv4.pl $(PERLASM_SCHEME)
 diff --git a/crypto/modes/cbc128.c b/crypto/modes/cbc128.c
-index bf2210c39e86..4c9bc85eab27 100644
+index bf2210c..4c9bc85 100644
 --- a/crypto/modes/cbc128.c
 +++ b/crypto/modes/cbc128.c
 @@ -1,51 +1,10 @@
@@ -63381,15 +69244,13 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/modes/ccm128.c b/crypto/modes/ccm128.c
-index ef99eb15d557..85ce84f10d80 100644
+index ef99eb1..85ce84f 100644
 --- a/crypto/modes/ccm128.c
 +++ b/crypto/modes/ccm128.c
 @@ -1,50 +1,10 @@
 -/* ====================================================================
 - * Copyright (c) 2011 The OpenSSL Project.  All rights reserved.
-+/*
-+ * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -63420,7 +69281,9 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
-- *
++/*
++ * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -63442,7 +69305,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/modes/cfb128.c b/crypto/modes/cfb128.c
-index 8d3af57b7752..e439567fe59f 100644
+index 8d3af57..e439567 100644
 --- a/crypto/modes/cfb128.c
 +++ b/crypto/modes/cfb128.c
 @@ -1,51 +1,10 @@
@@ -63504,7 +69367,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/modes/ctr128.c b/crypto/modes/ctr128.c
-index 5bdbbcf764ea..b7ffb73ab731 100644
+index 5bdbbcf..b7ffb73 100644
 --- a/crypto/modes/ctr128.c
 +++ b/crypto/modes/ctr128.c
 @@ -1,51 +1,10 @@
@@ -63566,7 +69429,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/modes/cts128.c b/crypto/modes/cts128.c
-index ed233d5d794e..77ec994b4f60 100644
+index ed233d5..77ec994 100644
 --- a/crypto/modes/cts128.c
 +++ b/crypto/modes/cts128.c
 @@ -1,8 +1,10 @@
@@ -63585,15 +69448,13 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/modes/gcm128.c b/crypto/modes/gcm128.c
-index 8a8b1102686a..df9f654764da 100644
+index 8a8b110..df9f654 100644
 --- a/crypto/modes/gcm128.c
 +++ b/crypto/modes/gcm128.c
 @@ -1,50 +1,10 @@
 -/* ====================================================================
 - * Copyright (c) 2010 The OpenSSL Project.  All rights reserved.
-+/*
-+ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -63624,7 +69485,9 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
-- *
++/*
++ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -63646,7 +69509,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/modes/modes_lcl.h b/crypto/modes/modes_lcl.h
-index 071b01465e93..7a1603bf9082 100644
+index 071b014..7a1603b 100644
 --- a/crypto/modes/modes_lcl.h
 +++ b/crypto/modes/modes_lcl.h
 @@ -1,8 +1,10 @@
@@ -63665,15 +69528,13 @@
  
  #include <openssl/modes.h>
 diff --git a/crypto/modes/ocb128.c b/crypto/modes/ocb128.c
-index c3daf7cd6eba..54a96b8e983f 100644
+index c3daf7c..54a96b8 100644
 --- a/crypto/modes/ocb128.c
 +++ b/crypto/modes/ocb128.c
 @@ -1,50 +1,10 @@
 -/* ====================================================================
 - * Copyright (c) 2014 The OpenSSL Project.  All rights reserved.
-+/*
-+ * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -63704,7 +69565,9 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
-- *
++/*
++ * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -63757,7 +69620,7 @@
              /* Checksum_i = Checksum_{i-1} xor P_i */
              ocb_block16_xor_misaligned(&ctx->checksum, inblock, &ctx->checksum);
 diff --git a/crypto/modes/ofb128.c b/crypto/modes/ofb128.c
-index 0870f08aed33..83092564c6b6 100644
+index 0870f08..8309256 100644
 --- a/crypto/modes/ofb128.c
 +++ b/crypto/modes/ofb128.c
 @@ -1,51 +1,10 @@
@@ -63819,7 +69682,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/modes/wrap128.c b/crypto/modes/wrap128.c
-index b9268444eab3..46809a0e742d 100644
+index b926844..46809a0 100644
 --- a/crypto/modes/wrap128.c
 +++ b/crypto/modes/wrap128.c
 @@ -1,55 +1,10 @@
@@ -63830,8 +69693,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2013 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -63862,7 +69724,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -63884,7 +69747,7 @@
  
  /**  Beware!
 diff --git a/crypto/modes/xts128.c b/crypto/modes/xts128.c
-index 55fa65447827..81b1eacd5920 100644
+index 55fa654..81b1eac 100644
 --- a/crypto/modes/xts128.c
 +++ b/crypto/modes/xts128.c
 @@ -1,50 +1,10 @@
@@ -63945,7 +69808,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/o_dir.c b/crypto/o_dir.c
-index b3fcb9173f86..89c8c5c565f8 100644
+index b3fcb91..89c8c5c 100644
 --- a/crypto/o_dir.c
 +++ b/crypto/o_dir.c
 @@ -1,59 +1,10 @@
@@ -64014,7 +69877,7 @@
  
  #include <errno.h>
 diff --git a/crypto/o_fips.c b/crypto/o_fips.c
-index 113914855998..bf6db65fedc0 100644
+index 1139148..bf6db65 100644
 --- a/crypto/o_fips.c
 +++ b/crypto/o_fips.c
 @@ -1,59 +1,10 @@
@@ -64082,8 +69945,117 @@
   */
  
  #include "internal/cryptlib.h"
+diff --git a/crypto/o_fopen.c b/crypto/o_fopen.c
+new file mode 100644
+index 0000000..0bdb53f
+--- /dev/null
++++ b/crypto/o_fopen.c
+@@ -0,0 +1,103 @@
++/*
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL license (the "License").  You may not use
++ * this file except in compliance with the License.  You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
++ */
++
++#include "internal/cryptlib.h"
++
++#if !defined(OPENSSL_NO_STDIO)
++
++# include <stdio.h>
++
++FILE *openssl_fopen(const char *filename, const char *mode)
++{
++    FILE *file = NULL;
++# if defined(_WIN32) && defined(CP_UTF8)
++    int sz, len_0 = (int)strlen(filename) + 1;
++    DWORD flags;
++
++    /*
++     * Basically there are three cases to cover: a) filename is
++     * pure ASCII string; b) actual UTF-8 encoded string and
++     * c) locale-ized string, i.e. one containing 8-bit
++     * characters that are meaningful in current system locale.
++     * If filename is pure ASCII or real UTF-8 encoded string,
++     * MultiByteToWideChar succeeds and _wfopen works. If
++     * filename is locale-ized string, chances are that
++     * MultiByteToWideChar fails reporting
++     * ERROR_NO_UNICODE_TRANSLATION, in which case we fall
++     * back to fopen...
++     */
++    if ((sz = MultiByteToWideChar(CP_UTF8, (flags = MB_ERR_INVALID_CHARS),
++                                  filename, len_0, NULL, 0)) > 0 ||
++        (GetLastError() == ERROR_INVALID_FLAGS &&
++         (sz = MultiByteToWideChar(CP_UTF8, (flags = 0),
++                                   filename, len_0, NULL, 0)) > 0)
++        ) {
++        WCHAR wmode[8];
++        WCHAR *wfilename = _alloca(sz * sizeof(WCHAR));
++
++        if (MultiByteToWideChar(CP_UTF8, flags,
++                                filename, len_0, wfilename, sz) &&
++            MultiByteToWideChar(CP_UTF8, 0, mode, strlen(mode) + 1,
++                                wmode, OSSL_NELEM(wmode)) &&
++            (file = _wfopen(wfilename, wmode)) == NULL &&
++            (errno == ENOENT || errno == EBADF)
++            ) {
++            /*
++             * UTF-8 decode succeeded, but no file, filename
++             * could still have been locale-ized...
++             */
++            file = fopen(filename, mode);
++        }
++    } else if (GetLastError() == ERROR_NO_UNICODE_TRANSLATION) {
++        file = fopen(filename, mode);
++    }
++# elif defined(__DJGPP__)
++    {
++        char *newname = NULL;
++
++        if (!HAS_LFN_SUPPORT(filename)) {
++            char *iterator;
++            char lastchar;
++
++            newname = OPENSSL_malloc(strlen(filename) + 1);
++            if (newname == NULL)
++                return NULL;
++
++            for(iterator = newname, lastchar = '\0';
++                *filename; filename++, iterator++) {
++                if (lastchar == '/' && filename[0] == '.'
++                    && filename[1] != '.' && filename[1] != '/') {
++                    /* Leading dots are not permitted in plain DOS. */
++                    *iterator = '_';
++                } else {
++                    *iterator = *filename;
++                }
++                lastchar = *filename;
++            }
++            *iterator = '\0';
++            filename = newname;
++        }
++        file = fopen(filename, mode);
++
++        OPENSSL_free(newname);
++    }
++# else
++    file = fopen(filename, mode);
++# endif
++    return file;
++}
++
++#else
++
++void *openssl_fopen(const char *filename, const char *mode)
++{
++    return NULL;
++}
++
++#endif
 diff --git a/crypto/o_init.c b/crypto/o_init.c
-index 128f70bd84da..2e0c126095f6 100644
+index 128f70b..2e0c126 100644
 --- a/crypto/o_init.c
 +++ b/crypto/o_init.c
 @@ -1,55 +1,10 @@
@@ -64148,7 +70120,7 @@
  
  #include <e_os.h>
 diff --git a/crypto/o_str.c b/crypto/o_str.c
-index 660226fcec5f..29c324f4746d 100644
+index 660226f..beabec0 100644
 --- a/crypto/o_str.c
 +++ b/crypto/o_str.c
 @@ -1,59 +1,10 @@
@@ -64266,8 +70238,22 @@
  int OPENSSL_memcmp(const void *v1, const void *v2, size_t n)
  {
      const unsigned char *c1 = v1, *c2 = v2;
-@@ -307,3 +215,31 @@ char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len)
+@@ -290,7 +198,12 @@ char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len)
+     const unsigned char *p;
+     int i;
  
+-    if ((tmp = OPENSSL_malloc(len * 3 + 1)) == NULL) {
++    if (len == 0)
++    {
++        return OPENSSL_zalloc(1);
++    }
++
++    if ((tmp = OPENSSL_malloc(len * 3)) == NULL) {
+         CRYPTOerr(CRYPTO_F_OPENSSL_BUF2HEXSTR, ERR_R_MALLOC_FAILURE);
+         return NULL;
+     }
+@@ -307,3 +220,31 @@ char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len)
+ 
      return tmp;
  }
 +
@@ -64299,7 +70285,7 @@
 +#endif
 +}
 diff --git a/crypto/o_time.c b/crypto/o_time.c
-index 75aa2e56a2a6..b73fe1fcb633 100644
+index 75aa2e5..b73fe1f 100644
 --- a/crypto/o_time.c
 +++ b/crypto/o_time.c
 @@ -1,63 +1,10 @@
@@ -64373,7 +70359,7 @@
  #include <openssl/e_os2.h>
 diff --git a/crypto/objects/Makefile.in b/crypto/objects/Makefile.in
 deleted file mode 100644
-index f6c9f0a4fc12..000000000000
+index f6c9f0a..0000000
 --- a/crypto/objects/Makefile.in
 +++ /dev/null
 @@ -1,58 +0,0 @@
@@ -64437,7 +70423,7 @@
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/objects/README b/crypto/objects/README
 new file mode 100644
-index 000000000000..cb1d216ce8a7
+index 0000000..cb1d216
 --- /dev/null
 +++ b/crypto/objects/README
 @@ -0,0 +1,44 @@
@@ -64486,7 +70472,7 @@
 +with ! and not matching the commands above.
 +
 diff --git a/crypto/objects/o_names.c b/crypto/objects/o_names.c
-index 572880648873..c655a908ddb8 100644
+index 5728806..c655a90 100644
 --- a/crypto/objects/o_names.c
 +++ b/crypto/objects/o_names.c
 @@ -1,3 +1,12 @@
@@ -64553,15 +70539,13 @@
  
  int OBJ_NAME_remove(const char *name, int type)
 diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c
-index 6baf2f05b030..46f98cb0ff12 100644
+index 6baf2f0..bb50f63 100644
 --- a/crypto/objects/obj_dat.c
 +++ b/crypto/objects/obj_dat.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -64609,7 +70593,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -64634,6 +70620,15 @@
          break;
      case ADDED_NID:
          ret = a->nid;
+@@ -247,7 +199,7 @@ int OBJ_add_object(const ASN1_OBJECT *obj)
+             ao[i]->type = i;
+             ao[i]->obj = o;
+             aop = lh_ADDED_OBJ_insert(added, ao[i]);
+-            /* memory leak, buit should not normally matter */
++            /* memory leak, but should not normally matter */
+             OPENSSL_free(aop);
+         }
+     }
 @@ -727,30 +679,36 @@ int OBJ_create_objects(BIO *in)
  
  int OBJ_create(const char *oid, const char *sn, const char *ln)
@@ -64658,6 +70653,9 @@
      }
 -    i = a2d_ASN1_OBJECT(buf, i, oid, -1);
 -    if (i == 0)
+-        goto err;
+-    op = (ASN1_OBJECT *)ASN1_OBJECT_create(OBJ_new_nid(1), buf, i, sn, ln);
+-    if (op == NULL)
 +
 +    /* Convert numerical OID string to an ASN1_OBJECT structure */
 +    tmpoid = OBJ_txt2obj(oid, 1);
@@ -64666,9 +70664,6 @@
 +    if (OBJ_obj2nid(tmpoid) != NID_undef) {
 +        OBJerr(OBJ_F_OBJ_CREATE, OBJ_R_OID_EXISTS);
          goto err;
--    op = (ASN1_OBJECT *)ASN1_OBJECT_create(OBJ_new_nid(1), buf, i, sn, ln);
--    if (op == NULL)
--        goto err;
 -    ok = OBJ_add_object(op);
 +    }
 +
@@ -64691,7 +70686,7 @@
  
  size_t OBJ_length(const ASN1_OBJECT *obj)
 diff --git a/crypto/objects/obj_dat.h b/crypto/objects/obj_dat.h
-index d852a55c5c2f..df03694974b9 100644
+index d852a55..df03694 100644
 --- a/crypto/objects/obj_dat.h
 +++ b/crypto/objects/obj_dat.h
 @@ -1,63 +1,12 @@
@@ -64767,7 +70762,7 @@
  
  #define NUM_NID 1058
 diff --git a/crypto/objects/obj_dat.pl b/crypto/objects/obj_dat.pl
-index 0bf1e4878f66..ba3eed68cc63 100644
+index 0bf1e48..ba3eed6 100644
 --- a/crypto/objects/obj_dat.pl
 +++ b/crypto/objects/obj_dat.pl
 @@ -1,7 +1,14 @@
@@ -64862,7 +70857,7 @@
  
  EOF
 diff --git a/crypto/objects/obj_err.c b/crypto/objects/obj_err.c
-index 396b6c26e5c3..2dd80be0e355 100644
+index 396b6c2..2dd80be 100644
 --- a/crypto/objects/obj_err.c
 +++ b/crypto/objects/obj_err.c
 @@ -1,61 +1,11 @@
@@ -64944,7 +70939,7 @@
      {0, NULL}
  };
 diff --git a/crypto/objects/obj_lcl.h b/crypto/objects/obj_lcl.h
-index c45108845926..a417f7c46ef6 100644
+index c451088..a417f7c 100644
 --- a/crypto/objects/obj_lcl.h
 +++ b/crypto/objects/obj_lcl.h
 @@ -1,4 +1,11 @@
@@ -64961,7 +70956,7 @@
  typedef struct name_funcs_st NAME_FUNCS;
  DEFINE_STACK_OF(NAME_FUNCS)
 diff --git a/crypto/objects/obj_lib.c b/crypto/objects/obj_lib.c
-index 3b1c55843984..33075e645174 100644
+index 3b1c558..33075e6 100644
 --- a/crypto/objects/obj_lib.c
 +++ b/crypto/objects/obj_lib.c
 @@ -1,58 +1,10 @@
@@ -65111,7 +71106,7 @@
  
  int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b)
 diff --git a/crypto/objects/obj_xref.c b/crypto/objects/obj_xref.c
-index 34d6448094b0..627f5bca2fb9 100644
+index 34d6448..627f5bc 100644
 --- a/crypto/objects/obj_xref.c
 +++ b/crypto/objects/obj_xref.c
 @@ -1,59 +1,10 @@
@@ -65180,7 +71175,7 @@
  
  #include <openssl/objects.h>
 diff --git a/crypto/objects/obj_xref.h b/crypto/objects/obj_xref.h
-index 7096ca544224..d09aa71f4e2d 100644
+index 7096ca5..d09aa71 100644
 --- a/crypto/objects/obj_xref.h
 +++ b/crypto/objects/obj_xref.h
 @@ -1,4 +1,15 @@
@@ -65202,7 +71197,7 @@
      int sign_id;
 diff --git a/crypto/objects/objects.README b/crypto/objects/objects.README
 deleted file mode 100644
-index cb1d216ce8a7..000000000000
+index cb1d216..0000000
 --- a/crypto/objects/objects.README
 +++ /dev/null
 @@ -1,44 +0,0 @@
@@ -65251,7 +71246,7 @@
 -with ! and not matching the commands above.
 -
 diff --git a/crypto/objects/objects.pl b/crypto/objects/objects.pl
-index 107647adbc40..3b40277a23e6 100644
+index 107647a..3b40277 100644
 --- a/crypto/objects/objects.pl
 +++ b/crypto/objects/objects.pl
 @@ -1,4 +1,10 @@
@@ -65276,9 +71271,7 @@
 -
 -/* Copyright (C) 1995-1997 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+ * WARNING: do not edit!
-+ * Generated by crypto/objects/objects.pl
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -65326,7 +71319,9 @@
 - * 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.
-- *
++ * WARNING: do not edit!
++ * Generated by crypto/objects/objects.pl
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -65340,7 +71335,7 @@
  
  #define SN_undef                        "UNDEF"
 diff --git a/crypto/objects/objxref.pl b/crypto/objects/objxref.pl
-index 7ebd74cdcc0b..53f9bd604c38 100644
+index 7ebd74c..53f9bd6 100644
 --- a/crypto/objects/objxref.pl
 +++ b/crypto/objects/objxref.pl
 @@ -1,4 +1,11 @@
@@ -65378,7 +71373,7 @@
      int sign_id;
 diff --git a/crypto/ocsp/Makefile.in b/crypto/ocsp/Makefile.in
 deleted file mode 100644
-index 0f8ae43065f7..000000000000
+index 0f8ae43..0000000
 --- a/crypto/ocsp/Makefile.in
 +++ /dev/null
 @@ -1,46 +0,0 @@
@@ -65429,7 +71424,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/ocsp/ocsp_asn.c b/crypto/ocsp/ocsp_asn.c
-index 3ee6f94dcad7..1e0b82797bdc 100644
+index 3ee6f94..1e0b827 100644
 --- a/crypto/ocsp/ocsp_asn.c
 +++ b/crypto/ocsp/ocsp_asn.c
 @@ -1,60 +1,12 @@
@@ -65488,9 +71483,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -65501,10 +71495,10 @@
  #include <openssl/asn1t.h>
  #include <openssl/ocsp.h>
 diff --git a/crypto/ocsp/ocsp_cl.c b/crypto/ocsp/ocsp_cl.c
-index e8eaaffa17f4..35f4b5803aad 100644
+index e8eaaff..195d87c 100644
 --- a/crypto/ocsp/ocsp_cl.c
 +++ b/crypto/ocsp/ocsp_cl.c
-@@ -1,66 +1,10 @@
+@@ -1,73 +1,16 @@
  /*
 - * Written by Tom Titchener <Tom_Titchener at groove.net> for the OpenSSL
 - * project.
@@ -65576,8 +71570,15 @@
   */
  
  #include <stdio.h>
+ #include <time.h>
+ #include "internal/cryptlib.h"
+ #include <openssl/objects.h>
+-#include <openssl/rand.h>
+ #include <openssl/x509.h>
+ #include <openssl/pem.h>
+ #include <openssl/x509v3.h>
 diff --git a/crypto/ocsp/ocsp_err.c b/crypto/ocsp/ocsp_err.c
-index 9043dd227412..59bcf85cd087 100644
+index 9043dd2..59bcf85 100644
 --- a/crypto/ocsp/ocsp_err.c
 +++ b/crypto/ocsp/ocsp_err.c
 @@ -1,61 +1,11 @@
@@ -65695,7 +71696,7 @@
      {ERR_REASON(OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND),
       "signer certificate not found"},
 diff --git a/crypto/ocsp/ocsp_ext.c b/crypto/ocsp/ocsp_ext.c
-index 854da8e5c075..a993899a4052 100644
+index 854da8e..a993899 100644
 --- a/crypto/ocsp/ocsp_ext.c
 +++ b/crypto/ocsp/ocsp_ext.c
 @@ -1,66 +1,10 @@
@@ -65788,7 +71789,7 @@
      return x;
  }
 diff --git a/crypto/ocsp/ocsp_ht.c b/crypto/ocsp/ocsp_ht.c
-index f69d4df3b7dd..680edfa5c222 100644
+index f69d4df..680edfa 100644
 --- a/crypto/ocsp/ocsp_ht.c
 +++ b/crypto/ocsp/ocsp_ht.c
 @@ -1,59 +1,10 @@
@@ -65857,7 +71858,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/ocsp/ocsp_lcl.h b/crypto/ocsp/ocsp_lcl.h
-index df4ff401244c..f93a268e09b0 100644
+index df4ff40..f93a268 100644
 --- a/crypto/ocsp/ocsp_lcl.h
 +++ b/crypto/ocsp/ocsp_lcl.h
 @@ -1,66 +1,10 @@
@@ -65933,10 +71934,10 @@
  
  /*-  CertID ::= SEQUENCE {
 diff --git a/crypto/ocsp/ocsp_lib.c b/crypto/ocsp/ocsp_lib.c
-index 88141901463e..ff04e466d05c 100644
+index 8814190..5ff2f31 100644
 --- a/crypto/ocsp/ocsp_lib.c
 +++ b/crypto/ocsp/ocsp_lib.c
-@@ -1,66 +1,10 @@
+@@ -1,72 +1,15 @@
  /*
 - * Written by Tom Titchener <Tom_Titchener at groove.net> for the OpenSSL
 - * project.
@@ -66008,8 +72009,14 @@
   */
  
  #include <stdio.h>
+ #include "internal/cryptlib.h"
+ #include <openssl/objects.h>
+-#include <openssl/rand.h>
+ #include <openssl/x509.h>
+ #include <openssl/pem.h>
+ #include <openssl/x509v3.h>
 diff --git a/crypto/ocsp/ocsp_prn.c b/crypto/ocsp/ocsp_prn.c
-index 8ac3d820add5..5605812ef74b 100644
+index 8ac3d82..5605812 100644
 --- a/crypto/ocsp/ocsp_prn.c
 +++ b/crypto/ocsp/ocsp_prn.c
 @@ -1,72 +1,17 @@
@@ -66142,10 +72149,10 @@
  
  int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *o, unsigned long flags)
 diff --git a/crypto/ocsp/ocsp_srv.c b/crypto/ocsp/ocsp_srv.c
-index e98c6491b2ac..e3ef17199f88 100644
+index e98c649..443161c 100644
 --- a/crypto/ocsp/ocsp_srv.c
 +++ b/crypto/ocsp/ocsp_srv.c
-@@ -1,59 +1,10 @@
+@@ -1,65 +1,15 @@
  /*
 - * Written by Dr Stephen N Henson (steve at openssl.org) for the OpenSSL project
 - * 2001.
@@ -66210,8 +72217,14 @@
   */
  
  #include <stdio.h>
+ #include "internal/cryptlib.h"
+ #include <openssl/objects.h>
+-#include <openssl/rand.h>
+ #include <openssl/x509.h>
+ #include <openssl/pem.h>
+ #include <openssl/x509v3.h>
 diff --git a/crypto/ocsp/ocsp_vfy.c b/crypto/ocsp/ocsp_vfy.c
-index 2b55401aea99..e2cfa6dda5b0 100644
+index 2b55401..e2cfa6d 100644
 --- a/crypto/ocsp/ocsp_vfy.c
 +++ b/crypto/ocsp/ocsp_vfy.c
 @@ -1,59 +1,10 @@
@@ -66288,7 +72301,7 @@
   err:
      ret = 0;
 diff --git a/crypto/ocsp/v3_ocsp.c b/crypto/ocsp/v3_ocsp.c
-index 142deac54e44..2d425a8951d6 100644
+index 142deac..2d425a8 100644
 --- a/crypto/ocsp/v3_ocsp.c
 +++ b/crypto/ocsp/v3_ocsp.c
 @@ -1,59 +1,10 @@
@@ -66357,7 +72370,7 @@
  
  # include <stdio.h>
 diff --git a/crypto/pariscid.pl b/crypto/pariscid.pl
-index bfc56fdc7fc0..f82e27ac4c34 100644
+index bfc56fd..f82e27a 100644
 --- a/crypto/pariscid.pl
 +++ b/crypto/pariscid.pl
 @@ -1,4 +1,11 @@
@@ -66413,7 +72426,7 @@
  my ($diff,$lastdiff)=("%r21","%r20");
 diff --git a/crypto/pem/Makefile.in b/crypto/pem/Makefile.in
 deleted file mode 100644
-index fab36638ba32..000000000000
+index fab3663..0000000
 --- a/crypto/pem/Makefile.in
 +++ /dev/null
 @@ -1,46 +0,0 @@
@@ -66465,7 +72478,7 @@
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/pem/message b/crypto/pem/message
 deleted file mode 100644
-index e8bf9d759296..000000000000
+index e8bf9d7..0000000
 --- a/crypto/pem/message
 +++ /dev/null
 @@ -1,16 +0,0 @@
@@ -66486,7 +72499,7 @@
 ------END PRIVACY-ENHANCED MESSAGE-----
 -
 diff --git a/crypto/pem/pem_all.c b/crypto/pem/pem_all.c
-index 5967b6eb72fd..0e7181311340 100644
+index 5967b6e..0e71813 100644
 --- a/crypto/pem/pem_all.c
 +++ b/crypto/pem/pem_all.c
 @@ -1,111 +1,10 @@
@@ -66608,7 +72621,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pem/pem_err.c b/crypto/pem/pem_err.c
-index 793a0a343dd7..7a42535b77b2 100644
+index 793a0a3..7a42535 100644
 --- a/crypto/pem/pem_err.c
 +++ b/crypto/pem/pem_err.c
 @@ -1,61 +1,11 @@
@@ -66717,7 +72730,7 @@
      {ERR_REASON(PEM_R_UNSUPPORTED_ENCRYPTION), "unsupported encryption"},
      {ERR_REASON(PEM_R_UNSUPPORTED_KEY_COMPONENTS),
 diff --git a/crypto/pem/pem_info.c b/crypto/pem/pem_info.c
-index 1b1cde4b09f9..dd493c8509d0 100644
+index 1b1cde4..dd493c8 100644
 --- a/crypto/pem/pem_info.c
 +++ b/crypto/pem/pem_info.c
 @@ -1,58 +1,10 @@
@@ -66786,15 +72799,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/pem/pem_lib.c b/crypto/pem/pem_lib.c
-index 5e7aa776d9b2..90893f195455 100644
+index 5e7aa77..8965fda 100644
 --- a/crypto/pem/pem_lib.c
 +++ b/crypto/pem/pem_lib.c
 @@ -1,62 +1,15 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -66842,7 +72853,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -67040,9 +73053,13 @@
      if ((header == NULL) || (*header == '\0') || (*header == '\n'))
 -        return (1);
 -    if (strncmp(header, "Proc-Type: ", 11) != 0) {
--        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_NOT_PROC_TYPE);
++        return 1;
++
++    if (strncmp(header, ProcType, sizeof(ProcType)-1) != 0) {
+         PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_NOT_PROC_TYPE);
 -        return (0);
--    }
++        return 0;
+     }
 -    header += 11;
 -    if (*header != '4')
 -        return (0);
@@ -67051,38 +73068,6 @@
 -        return (0);
 -    header++;
 -    if (strncmp(header, "ENCRYPTED", 9) != 0) {
--        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_NOT_ENCRYPTED);
--        return (0);
--    }
--    for (; (*header != '\n') && (*header != '\0'); header++) ;
--    if (*header == '\0') {
--        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_SHORT_HEADER);
--        return (0);
--    }
--    header++;
--    if (strncmp(header, "DEK-Info: ", 10) != 0) {
--        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_NOT_DEK_INFO);
--        return (0);
--    }
--    header += 10;
-+        return 1;
- 
--    dekinfostart = header;
--    for (;;) {
--        c = *header;
--#ifndef CHARSET_EBCDIC
--        if (!(((c >= 'A') && (c <= 'Z')) || (c == '-') ||
--              ((c >= '0') && (c <= '9'))))
--            break;
--#else
--        if (!(isupper(c) || (c == '-') || isdigit(c)))
--            break;
--#endif
--        header++;
-+    if (strncmp(header, ProcType, sizeof(ProcType)-1) != 0) {
-+        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_NOT_PROC_TYPE);
-+        return 0;
-     }
 +    header += sizeof(ProcType)-1;
 +    header += strspn(header, " \t");
 +
@@ -67093,32 +73078,52 @@
 +    /* We expect "ENCRYPTED" followed by optional white-space + line break */
 +    if (strncmp(header, ENCRYPTED, sizeof(ENCRYPTED)-1) != 0 ||
 +        strspn(header+sizeof(ENCRYPTED)-1, " \t\r\n") == 0) {
-+        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_NOT_ENCRYPTED);
+         PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_NOT_ENCRYPTED);
+-        return (0);
 +        return 0;
-+    }
+     }
+-    for (; (*header != '\n') && (*header != '\0'); header++) ;
+-    if (*header == '\0') {
 +    header += sizeof(ENCRYPTED)-1;
 +    header += strspn(header, " \t\r");
 +    if (*header++ != '\n') {
-+        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_SHORT_HEADER);
+         PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_SHORT_HEADER);
+-        return (0);
 +        return 0;
-+    }
+     }
+-    header++;
+-    if (strncmp(header, "DEK-Info: ", 10) != 0) {
 +
 +    /*-
 +     * https://tools.ietf.org/html/rfc1421#section-4.6.1.3
 +     * We expect "DEK-Info: algo[,hex-parameters]"
 +     */
 +    if (strncmp(header, DEKInfo, sizeof(DEKInfo)-1) != 0) {
-+        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_NOT_DEK_INFO);
+         PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_NOT_DEK_INFO);
+-        return (0);
 +        return 0;
-+    }
+     }
+-    header += 10;
 +    header += sizeof(DEKInfo)-1;
 +    header += strspn(header, " \t");
-+
+ 
 +    /*
 +     * DEK-INFO is a comma-separated combination of algorithm name and optional
 +     * parameters.
 +     */
-+    dekinfostart = header;
+     dekinfostart = header;
+-    for (;;) {
+-        c = *header;
+-#ifndef CHARSET_EBCDIC
+-        if (!(((c >= 'A') && (c <= 'Z')) || (c == '-') ||
+-              ((c >= '0') && (c <= '9'))))
+-            break;
+-#else
+-        if (!(isupper(c) || (c == '-') || isdigit(c)))
+-            break;
+-#endif
+-        header++;
+-    }
 +    header += strcspn(header, " \t,");
 +    c = *header;
      *header = '\0';
@@ -67131,7 +73136,7 @@
          PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_UNSUPPORTED_ENCRYPTION);
 -        return (0);
 +        return 0;
-+    }
+     }
 +    ivlen = EVP_CIPHER_iv_length(enc);
 +    if (ivlen > 0 && *header++ != ',') {
 +        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_MISSING_DEK_IV);
@@ -67139,14 +73144,13 @@
 +    } else if (ivlen == 0 && *header == ',') {
 +        PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO, PEM_R_UNEXPECTED_DEK_IV);
 +        return 0;
-     }
--    if (!load_iv(&header, cipher->iv, EVP_CIPHER_iv_length(enc)))
++    }
++
+     if (!load_iv(&header, cipher->iv, EVP_CIPHER_iv_length(enc)))
 -        return (0);
++        return 0;
  
 -    return (1);
-+    if (!load_iv(&header, cipher->iv, EVP_CIPHER_iv_length(enc)))
-+        return 0;
-+
 +    return 1;
  }
  
@@ -67167,8 +73171,18 @@
              PEMerr(PEM_F_LOAD_IV, PEM_R_BAD_IV_CHARS);
              return (0);
          }
+@@ -624,7 +618,8 @@ int PEM_write_bio(BIO *bp, const char *name, const char *header,
+     i = j = 0;
+     while (len > 0) {
+         n = (int)((len > (PEM_BUFSIZE * 5)) ? (PEM_BUFSIZE * 5) : len);
+-        EVP_EncodeUpdate(ctx, buf, &outl, &(data[j]), n);
++        if (!EVP_EncodeUpdate(ctx, buf, &outl, &(data[j]), n))
++            goto err;
+         if ((outl) && (BIO_write(bp, (char *)buf, outl) != outl))
+             goto err;
+         i += outl;
 diff --git a/crypto/pem/pem_oth.c b/crypto/pem/pem_oth.c
-index fbdff0aadf28..036c8a6fdb1d 100644
+index fbdff0a..cc7a8db 100644
 --- a/crypto/pem/pem_oth.c
 +++ b/crypto/pem/pem_oth.c
 @@ -1,58 +1,10 @@
@@ -67236,16 +73250,22 @@
   */
  
  #include <stdio.h>
+@@ -60,7 +12,6 @@
+ #include <openssl/buffer.h>
+ #include <openssl/objects.h>
+ #include <openssl/evp.h>
+-#include <openssl/rand.h>
+ #include <openssl/x509.h>
+ #include <openssl/pem.h>
+ 
 diff --git a/crypto/pem/pem_pk8.c b/crypto/pem/pem_pk8.c
-index f6f03634dbaa..1f6b640dbe79 100644
+index f6f0363..993c595 100644
 --- a/crypto/pem/pem_pk8.c
 +++ b/crypto/pem/pem_pk8.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -67293,7 +73313,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -67305,8 +73327,16 @@
   */
  
  #include <stdio.h>
+@@ -60,7 +12,6 @@
+ #include <openssl/buffer.h>
+ #include <openssl/objects.h>
+ #include <openssl/evp.h>
+-#include <openssl/rand.h>
+ #include <openssl/x509.h>
+ #include <openssl/pkcs12.h>
+ #include <openssl/pem.h>
 diff --git a/crypto/pem/pem_pkey.c b/crypto/pem/pem_pkey.c
-index ef0c0e45d8ca..f3a45e4aeb32 100644
+index ef0c0e4..6308622 100644
 --- a/crypto/pem/pem_pkey.c
 +++ b/crypto/pem/pem_pkey.c
 @@ -1,58 +1,10 @@
@@ -67374,7 +73404,15 @@
   */
  
  #include <stdio.h>
-@@ -143,11 +95,18 @@ int PEM_write_bio_PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
+@@ -60,7 +12,6 @@
+ #include <openssl/buffer.h>
+ #include <openssl/objects.h>
+ #include <openssl/evp.h>
+-#include <openssl/rand.h>
+ #include <openssl/x509.h>
+ #include <openssl/pkcs12.h>
+ #include <openssl/pem.h>
+@@ -143,11 +94,18 @@ int PEM_write_bio_PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
                               unsigned char *kstr, int klen,
                               pem_password_cb *cb, void *u)
  {
@@ -67396,10 +73434,10 @@
      return PEM_ASN1_write_bio((i2d_of_void *)i2d_PrivateKey,
                                pem_str, bp, x, enc, kstr, klen, cb, u);
 diff --git a/crypto/pem/pem_sign.c b/crypto/pem/pem_sign.c
-index fb8c9dd053be..0d8b62a6e26f 100644
+index fb8c9dd..12ad974 100644
 --- a/crypto/pem/pem_sign.c
 +++ b/crypto/pem/pem_sign.c
-@@ -1,58 +1,10 @@
+@@ -1,63 +1,14 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 +/*
@@ -67464,8 +73502,13 @@
   */
  
  #include <stdio.h>
+ #include "internal/cryptlib.h"
+-#include <openssl/rand.h>
+ #include <openssl/evp.h>
+ #include <openssl/objects.h>
+ #include <openssl/x509.h>
 diff --git a/crypto/pem/pem_x509.c b/crypto/pem/pem_x509.c
-index 26117b57bdb0..3a997564a23f 100644
+index 26117b5..3a99756 100644
 --- a/crypto/pem/pem_x509.c
 +++ b/crypto/pem/pem_x509.c
 @@ -1,59 +1,10 @@
@@ -67534,7 +73577,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pem/pem_xaux.c b/crypto/pem/pem_xaux.c
-index eb66fb62933e..6d7e1db21afe 100644
+index eb66fb6..6d7e1db 100644
 --- a/crypto/pem/pem_xaux.c
 +++ b/crypto/pem/pem_xaux.c
 @@ -1,59 +1,10 @@
@@ -67604,7 +73647,7 @@
  #include <stdio.h>
 diff --git a/crypto/pem/pkcs7.lis b/crypto/pem/pkcs7.lis
 deleted file mode 100644
-index be90c5d87f5b..000000000000
+index be90c5d..0000000
 --- a/crypto/pem/pkcs7.lis
 +++ /dev/null
 @@ -1,22 +0,0 @@
@@ -67631,7 +73674,7 @@
 - 00  2074:d=0 hl=2 l=  0 prim: univ: EOC               
 -00  2076:d=0 hl=2 l=  0 prim: univ: EOC               
 diff --git a/crypto/pem/pvkfmt.c b/crypto/pem/pvkfmt.c
-index 634cc5924d8b..4c07aee8f247 100644
+index 634cc59..bf512ec 100644
 --- a/crypto/pem/pvkfmt.c
 +++ b/crypto/pem/pvkfmt.c
 @@ -1,59 +1,10 @@
@@ -67739,7 +73782,54 @@
      RSA_free(rsa);
      EVP_PKEY_free(ret);
      return NULL;
-@@ -798,27 +757,30 @@ static int i2b_PVK(unsigned char **out, EVP_PKEY *pk, int enclevel,
+@@ -508,7 +467,8 @@ static int do_i2b_bio(BIO *out, EVP_PKEY *pk, int ispub)
+ static int check_bitlen_dsa(DSA *dsa, int ispub, unsigned int *pmagic)
+ {
+     int bitlen;
+-    BIGNUM *p = NULL, *q = NULL, *g = NULL, *pub_key = NULL, *priv_key = NULL;
++    const BIGNUM *p = NULL, *q = NULL, *g = NULL;
++    const BIGNUM *pub_key = NULL, *priv_key = NULL;
+ 
+     DSA_get0_pqg(dsa, &p, &q, &g);
+     DSA_get0_key(dsa, &pub_key, &priv_key);
+@@ -535,7 +495,7 @@ static int check_bitlen_dsa(DSA *dsa, int ispub, unsigned int *pmagic)
+ static int check_bitlen_rsa(RSA *rsa, int ispub, unsigned int *pmagic)
+ {
+     int nbyte, hnbyte, bitlen;
+-    BIGNUM *e;
++    const BIGNUM *e;
+ 
+     RSA_get0_key(rsa, &e, NULL, NULL);
+     if (BN_num_bits(e) > 32)
+@@ -547,7 +507,7 @@ static int check_bitlen_rsa(RSA *rsa, int ispub, unsigned int *pmagic)
+         *pmagic = MS_RSA1MAGIC;
+         return bitlen;
+     } else {
+-        BIGNUM *d, *p, *q, *iqmp, *dmp1, *dmq1;
++        const BIGNUM *d, *p, *q, *iqmp, *dmp1, *dmq1;
+ 
+         *pmagic = MS_RSA2MAGIC;
+ 
+@@ -575,7 +535,7 @@ static int check_bitlen_rsa(RSA *rsa, int ispub, unsigned int *pmagic)
+ static void write_rsa(unsigned char **out, RSA *rsa, int ispub)
+ {
+     int nbyte, hnbyte;
+-    BIGNUM *n, *d, *e, *p, *q, *iqmp, *dmp1, *dmq1;
++    const BIGNUM *n, *d, *e, *p, *q, *iqmp, *dmp1, *dmq1;
+ 
+     nbyte = RSA_size(rsa);
+     hnbyte = (RSA_bits(rsa) + 15) >> 4;
+@@ -597,7 +557,8 @@ static void write_rsa(unsigned char **out, RSA *rsa, int ispub)
+ static void write_dsa(unsigned char **out, DSA *dsa, int ispub)
+ {
+     int nbyte;
+-    BIGNUM *p = NULL, *q = NULL, *g = NULL, *pub_key = NULL, *priv_key = NULL;
++    const BIGNUM *p = NULL, *q = NULL, *g = NULL;
++    const BIGNUM *pub_key = NULL, *priv_key = NULL;
+ 
+     DSA_get0_pqg(dsa, &p, &q, &g);
+     DSA_get0_key(dsa, &pub_key, &priv_key);
+@@ -798,27 +759,30 @@ static int i2b_PVK(unsigned char **out, EVP_PKEY *pk, int enclevel,
                     pem_password_cb *cb, void *u)
  {
      int outlen = 24, pklen;
@@ -67776,7 +73866,7 @@
      write_ledword(&p, MS_PVKMAGIC);
      write_ledword(&p, 0);
      if (EVP_PKEY_id(pk) == EVP_PKEY_DSA)
-@@ -835,9 +797,7 @@ static int i2b_PVK(unsigned char **out, EVP_PKEY *pk, int enclevel,
+@@ -835,9 +799,7 @@ static int i2b_PVK(unsigned char **out, EVP_PKEY *pk, int enclevel,
          p += PVK_SALTLEN;
      }
      do_i2b(&p, pk, 0);
@@ -67787,7 +73877,7 @@
          char psbuf[PEM_BUFSIZE];
          unsigned char keybuf[20];
          int enctmplen, inlen;
-@@ -863,11 +823,18 @@ static int i2b_PVK(unsigned char **out, EVP_PKEY *pk, int enclevel,
+@@ -863,11 +825,18 @@ static int i2b_PVK(unsigned char **out, EVP_PKEY *pk, int enclevel,
          if (!EVP_DecryptFinal_ex(cctx, p + enctmplen, &enctmplen))
              goto error;
      }
@@ -67808,7 +73898,7 @@
  
 diff --git a/crypto/perlasm/README b/crypto/perlasm/README
 new file mode 100644
-index 000000000000..2c8435cbe37c
+index 0000000..2c8435c
 --- /dev/null
 +++ b/crypto/perlasm/README
 @@ -0,0 +1,124 @@
@@ -67937,13 +74027,11 @@
 +&cbc("des_ede3_cbc_encrypt","des_encrypt3","des_decrypt3",0,6,7,3,4,5);
 +
 diff --git a/crypto/perlasm/arm-xlate.pl b/crypto/perlasm/arm-xlate.pl
-index ecd3198c44db..c00f54af1bdd 100755
+index ecd3198..ca2f8b9 100755
 --- a/crypto/perlasm/arm-xlate.pl
 +++ b/crypto/perlasm/arm-xlate.pl
-@@ -1,6 +1,10 @@
+@@ -1,6 +1,12 @@
 -#!/usr/bin/env perl
--
--# ARM assembler distiller by <appro>.
 +#! /usr/bin/env perl
 +# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
 +#
@@ -67952,10 +74040,22 @@
 +# in the file LICENSE in the source distribution or at
 +# https://www.openssl.org/source/license.html
  
+-# ARM assembler distiller by <appro>.
++use strict;
+ 
  my $flavour = shift;
  my $output = shift;
+@@ -122,7 +128,7 @@ sub expand_line {
+     return $line;
+ }
+ 
+-while($line=<>) {
++while(my $line=<>) {
+ 
+     if ($line =~ m/^\s*(#|@|\/\/)/)	{ print $line; next; }
+ 
 diff --git a/crypto/perlasm/cbc.pl b/crypto/perlasm/cbc.pl
-index 24561e759aba..ad79b2407bee 100644
+index 24561e7..ad79b24 100644
 --- a/crypto/perlasm/cbc.pl
 +++ b/crypto/perlasm/cbc.pl
 @@ -1,4 +1,11 @@
@@ -67972,7 +74072,7 @@
  # void des_ncbc_encrypt(input, output, length, schedule, ivec, enc)
  # des_cblock (*input);
 diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl
-index bc79b4626c4d..2d46e24482ce 100755
+index bc79b46..2d46e24 100755
 --- a/crypto/perlasm/ppc-xlate.pl
 +++ b/crypto/perlasm/ppc-xlate.pl
 @@ -1,6 +1,10 @@
@@ -67991,7 +74091,7 @@
  my $output = shift;
 diff --git a/crypto/perlasm/readme b/crypto/perlasm/readme
 deleted file mode 100644
-index 2c8435cbe37c..000000000000
+index 2c8435c..0000000
 --- a/crypto/perlasm/readme
 +++ /dev/null
 @@ -1,124 +0,0 @@
@@ -68120,7 +74220,7 @@
 -&cbc("des_ede3_cbc_encrypt","des_encrypt3","des_decrypt3",0,6,7,3,4,5);
 -
 diff --git a/crypto/perlasm/sparcv9_modes.pl b/crypto/perlasm/sparcv9_modes.pl
-index 81e602671b38..47c2e53b994e 100644
+index 81e6026..47c2e53 100644
 --- a/crypto/perlasm/sparcv9_modes.pl
 +++ b/crypto/perlasm/sparcv9_modes.pl
 @@ -1,4 +1,11 @@
@@ -68137,7 +74237,7 @@
  # Specific modes implementations for SPARC Architecture 2011. There
  # is T4 dependency though, an ASI value that is not specified in the
 diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl
-index 80ab17fc254d..b96873b55c61 100755
+index 80ab17f..60b98d7 100755
 --- a/crypto/perlasm/x86_64-xlate.pl
 +++ b/crypto/perlasm/x86_64-xlate.pl
 @@ -1,4 +1,11 @@
@@ -68153,29 +74253,652 @@
  
  # Ascetic x86_64 AT&T to MASM/NASM assembler translator by <appro>.
  #
-@@ -286,7 +293,7 @@ my %globals;
- 	    (opcode->mnemonic() =~ /^v?mov([qd])$/)		&& ($sz=$1)  ||
- 	    (opcode->mnemonic() =~ /^v?pinsr([qdwb])$/)		&& ($sz=$1)  ||
- 	    (opcode->mnemonic() =~ /^vpbroadcast([qdwb])$/)	&& ($sz=$1)  ||
+@@ -58,6 +65,9 @@
+ # a. If function accepts more than 4 arguments *and* >4th argument
+ #    is declared as non 64-bit value, do clear its upper part.
+ 
++
++use strict;
++
+ my $flavour = shift;
+ my $output  = shift;
+ if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
+@@ -102,14 +112,15 @@ my %globals;
+ 
+ { package opcode;	# pick up opcodes
+     sub re {
+-	my	$self = shift;	# single instance in enough...
+-	local	*line = shift;
+-	undef	$ret;
++	my	($class, $line) = @_;
++	my	$self = {};
++	my	$ret;
+ 
+-	if ($line =~ /^([a-z][a-z0-9]*)/i) {
++	if ($$line =~ /^([a-z][a-z0-9]*)/i) {
++	    bless $self,$class;
+ 	    $self->{op} = $1;
+ 	    $ret = $self;
+-	    $line = substr($line, at +[0]); $line =~ s/^\s+//;
++	    $$line = substr($$line, at +[0]); $$line =~ s/^\s+//;
+ 
+ 	    undef $self->{sz};
+ 	    if ($self->{op} =~ /^(movz)x?([bw]).*/) {	# movz is pain...
+@@ -121,7 +132,7 @@ my %globals;
+ 		$self->{sz} = "";
+ 	    } elsif ($self->{op} =~ /^v/) { # VEX
+ 		$self->{sz} = "";
+-	    } elsif ($self->{op} =~ /mov[dq]/ && $line =~ /%xmm/) {
++	    } elsif ($self->{op} =~ /mov[dq]/ && $$line =~ /%xmm/) {
+ 		$self->{sz} = "";
+ 	    } elsif ($self->{op} =~ /([a-z]{3,})([qlwb])$/) {
+ 		$self->{op} = $1;
+@@ -131,8 +142,7 @@ my %globals;
+ 	$ret;
+     }
+     sub size {
+-	my $self = shift;
+-	my $sz   = shift;
++	my ($self, $sz) = @_;
+ 	$self->{sz} = $sz if (defined($sz) && !defined($self->{sz}));
+ 	$self->{sz};
+     }
+@@ -160,8 +170,8 @@ my %globals;
+ 	    if ($self->{op} eq "ret") {
+ 		$self->{op} = "";
+ 		if ($win64 && $current_function->{abi} eq "svr4") {
+-		    $self->{op} = "mov	rdi,QWORD${PTR}[8+rsp]\t;WIN64 epilogue\n\t".
+-				  "mov	rsi,QWORD${PTR}[16+rsp]\n\t";
++		    $self->{op} = "mov	rdi,QWORD$PTR\[8+rsp\]\t;WIN64 epilogue\n\t".
++				  "mov	rsi,QWORD$PTR\[16+rsp\]\n\t";
+ 	    	}
+ 		$self->{op} .= "DB\t0F3h,0C3h\t\t;repret";
+ 	    } elsif ($self->{op} =~ /^(pop|push)f/) {
+@@ -173,22 +183,22 @@ my %globals;
+ 	}
+     }
+     sub mnemonic {
+-	my $self=shift;
+-	my $op=shift;
++	my ($self, $op) = @_;
+ 	$self->{op}=$op if (defined($op));
+ 	$self->{op};
+     }
+ }
+ { package const;	# pick up constants, which start with $
+     sub re {
+-	my	$self = shift;	# single instance in enough...
+-	local	*line = shift;
+-	undef	$ret;
++	my	($class, $line) = @_;
++	my	$self = {};
++	my	$ret;
+ 
+-	if ($line =~ /^\$([^,]+)/) {
++	if ($$line =~ /^\$([^,]+)/) {
++	    bless $self, $class;
+ 	    $self->{value} = $1;
+ 	    $ret = $self;
+-	    $line = substr($line, at +[0]); $line =~ s/^\s+//;
++	    $$line = substr($$line, at +[0]); $$line =~ s/^\s+//;
+ 	}
+ 	$ret;
+     }
+@@ -200,6 +210,7 @@ my %globals;
+ 	    # Solaris /usr/ccs/bin/as can't handle multiplications
+ 	    # in $self->{value}
+ 	    my $value = $self->{value};
++	    no warnings;    # oct might complain about overflow, ignore here...
+ 	    $value =~ s/(?<![\w\$\.])(0x?[0-9a-f]+)/oct($1)/egi;
+ 	    if ($value =~ s/([0-9]+\s*[\*\/\%]\s*[0-9]+)/eval($1)/eg) {
+ 		$self->{value} = $value;
+@@ -213,32 +224,33 @@ my %globals;
+ }
+ { package ea;		# pick up effective addresses: expr(%reg,%reg,scale)
+     sub re {
+-	my	$self = shift;	# single instance in enough...
+-	local	*line = shift;
+-	undef	$ret;
++	my	($class, $line, $opcode) = @_;
++	my	$self = {};
++	my	$ret;
+ 
+-	# optional * ---vvv--- appears in indirect jmp/call
+-	if ($line =~ /^(\*?)([^\(,]*)\(([%\w,]+)\)/) {
++	# optional * ----vvv--- appears in indirect jmp/call
++	if ($$line =~ /^(\*?)([^\(,]*)\(([%\w,]+)\)/) {
++	    bless $self, $class;
+ 	    $self->{asterisk} = $1;
+ 	    $self->{label} = $2;
+ 	    ($self->{base},$self->{index},$self->{scale})=split(/,/,$3);
+ 	    $self->{scale} = 1 if (!defined($self->{scale}));
+ 	    $ret = $self;
+-	    $line = substr($line, at +[0]); $line =~ s/^\s+//;
++	    $$line = substr($$line, at +[0]); $$line =~ s/^\s+//;
+ 
+ 	    if ($win64 && $self->{label} =~ s/\@GOTPCREL//) {
+-		die if (opcode->mnemonic() ne "mov");
+-		opcode->mnemonic("lea");
++		die if ($opcode->mnemonic() ne "mov");
++		$opcode->mnemonic("lea");
+ 	    }
+ 	    $self->{base}  =~ s/^%//;
+ 	    $self->{index} =~ s/^%// if (defined($self->{index}));
++	    $self->{opcode} = $opcode;
+ 	}
+ 	$ret;
+     }
+     sub size {}
+     sub out {
+-    	my $self = shift;
+-	my $sz = shift;
++	my ($self, $sz) = @_;
+ 
+ 	$self->{label} =~ s/([_a-z][_a-z0-9]*)/$globals{$1} or $1/gei;
+ 	$self->{label} =~ s/\.L/$decor/g;
+@@ -273,7 +285,7 @@ my %globals;
+ 		sprintf "%s%s(%%%s)",	$self->{asterisk},$self->{label},$self->{base};
+ 	    }
+ 	} else {
+-	    %szmap = (	b=>"BYTE$PTR",  w=>"WORD$PTR",
++	    my %szmap = (	b=>"BYTE$PTR",  w=>"WORD$PTR",
+ 			l=>"DWORD$PTR", d=>"DWORD$PTR",
+ 	    		q=>"QWORD$PTR", o=>"OWORD$PTR",
+ 			x=>"XMMWORD$PTR", y=>"YMMWORD$PTR", z=>"ZMMWORD$PTR" );
+@@ -282,11 +294,12 @@ my %globals;
+ 	    $self->{label} =~ s/(?<![\w\$\.])0x([0-9a-f]+)/0$1h/ig;
+ 	    $self->{label} = "($self->{label})" if ($self->{label} =~ /[\*\+\-\/]/);
+ 
+-	    ($self->{asterisk})					&& ($sz="q") ||
+-	    (opcode->mnemonic() =~ /^v?mov([qd])$/)		&& ($sz=$1)  ||
+-	    (opcode->mnemonic() =~ /^v?pinsr([qdwb])$/)		&& ($sz=$1)  ||
+-	    (opcode->mnemonic() =~ /^vpbroadcast([qdwb])$/)	&& ($sz=$1)  ||
 -	    (opcode->mnemonic() =~ /^vinsert[fi]128$/)		&& ($sz="x");
-+	    (opcode->mnemonic() =~ /^v(?!perm)[a-z]+[fi]128$/)	&& ($sz="x");
++	    my $mnemonic = $self->{opcode}->mnemonic();
++	    ($self->{asterisk})				&& ($sz="q") ||
++	    ($mnemonic =~ /^v?mov([qd])$/)		&& ($sz=$1)  ||
++	    ($mnemonic =~ /^v?pinsr([qdwb])$/)		&& ($sz=$1)  ||
++	    ($mnemonic =~ /^vpbroadcast([qdwb])$/)	&& ($sz=$1)  ||
++	    ($mnemonic =~ /^v(?!perm)[a-z]+[fi]128$/)	&& ($sz="x");
  
  	    if (defined($self->{index})) {
  		sprintf "%s[%s%s*%d%s]",$szmap{$sz},
-@@ -607,7 +614,10 @@ my %globals;
+@@ -305,24 +318,24 @@ my %globals;
+ }
+ { package register;	# pick up registers, which start with %.
+     sub re {
+-	my	$class = shift;	# multiple instances...
++	my	($class, $line, $opcode) = @_;
+ 	my	$self = {};
+-	local	*line = shift;
+-	undef	$ret;
++	my	$ret;
+ 
+-	# optional * ---vvv--- appears in indirect jmp/call
+-	if ($line =~ /^(\*?)%(\w+)/) {
++	# optional * ----vvv--- appears in indirect jmp/call
++	if ($$line =~ /^(\*?)%(\w+)/) {
+ 	    bless $self,$class;
+ 	    $self->{asterisk} = $1;
+ 	    $self->{value} = $2;
++	    $opcode->size($self->size());
+ 	    $ret = $self;
+-	    $line = substr($line, at +[0]); $line =~ s/^\s+//;
++	    $$line = substr($$line, at +[0]); $$line =~ s/^\s+//;
+ 	}
+ 	$ret;
+     }
+     sub size {
+ 	my	$self = shift;
+-	undef	$ret;
++	my	$ret;
+ 
+ 	if    ($self->{value} =~ /^r[\d]+b$/i)	{ $ret="b"; }
+ 	elsif ($self->{value} =~ /^r[\d]+w$/i)	{ $ret="w"; }
+@@ -343,14 +356,15 @@ my %globals;
+ }
+ { package label;	# pick up labels, which end with :
+     sub re {
+-	my	$self = shift;	# single instance is enough...
+-	local	*line = shift;
+-	undef	$ret;
++	my	($class, $line) = @_;
++	my	$self = {};
++	my	$ret;
+ 
+-	if ($line =~ /(^[\.\w]+)\:/) {
++	if ($$line =~ /(^[\.\w]+)\:/) {
++	    bless $self,$class;
+ 	    $self->{value} = $1;
+ 	    $ret = $self;
+-	    $line = substr($line, at +[0]); $line =~ s/^\s+//;
++	    $$line = substr($$line, at +[0]); $$line =~ s/^\s+//;
+ 
+ 	    $self->{value} =~ s/^\.L/$decor/;
+ 	}
+@@ -380,14 +394,15 @@ my %globals;
+ 	    }
+ 	    $func;
+ 	} elsif ($self->{value} ne "$current_function->{name}") {
+-	    $self->{value} .= ":" if ($masm && $ret!~m/^\$/);
++	    # Make all labels in masm global.
++	    $self->{value} .= ":" if ($masm);
+ 	    $self->{value} . ":";
+ 	} elsif ($win64 && $current_function->{abi} eq "svr4") {
+ 	    my $func =	"$current_function->{name}" .
+ 			($nasm ? ":" : "\tPROC $current_function->{scope}") .
+ 			"\n";
+-	    $func .= "	mov	QWORD${PTR}[8+rsp],rdi\t;WIN64 prologue\n";
+-	    $func .= "	mov	QWORD${PTR}[16+rsp],rsi\n";
++	    $func .= "	mov	QWORD$PTR\[8+rsp\],rdi\t;WIN64 prologue\n";
++	    $func .= "	mov	QWORD$PTR\[16+rsp\],rsi\n";
+ 	    $func .= "	mov	rax,rsp\n";
+ 	    $func .= "${decor}SEH_begin_$current_function->{name}:";
+ 	    $func .= ":" if ($masm);
+@@ -398,8 +413,8 @@ my %globals;
+ 	    $func .= "	mov	rsi,rdx\n" if ($narg>1);
+ 	    $func .= "	mov	rdx,r8\n"  if ($narg>2);
+ 	    $func .= "	mov	rcx,r9\n"  if ($narg>3);
+-	    $func .= "	mov	r8,QWORD${PTR}[40+rsp]\n" if ($narg>4);
+-	    $func .= "	mov	r9,QWORD${PTR}[48+rsp]\n" if ($narg>5);
++	    $func .= "	mov	r8,QWORD$PTR\[40+rsp\]\n" if ($narg>4);
++	    $func .= "	mov	r9,QWORD$PTR\[48+rsp\]\n" if ($narg>5);
+ 	    $func .= "\n";
+ 	} else {
+ 	   "$current_function->{name}".
+@@ -409,24 +424,26 @@ my %globals;
+ }
+ { package expr;		# pick up expressioins
+     sub re {
+-	my	$self = shift;	# single instance is enough...
+-	local	*line = shift;
+-	undef	$ret;
++	my	($class, $line, $opcode) = @_;
++	my	$self = {};
++	my	$ret;
+ 
+-	if ($line =~ /(^[^,]+)/) {
++	if ($$line =~ /(^[^,]+)/) {
++	    bless $self,$class;
+ 	    $self->{value} = $1;
+ 	    $ret = $self;
+-	    $line = substr($line, at +[0]); $line =~ s/^\s+//;
++	    $$line = substr($$line, at +[0]); $$line =~ s/^\s+//;
+ 
+ 	    $self->{value} =~ s/\@PLT// if (!$elf);
+ 	    $self->{value} =~ s/([_a-z][_a-z0-9]*)/$globals{$1} or $1/gei;
+ 	    $self->{value} =~ s/\.L/$decor/g;
++	    $self->{opcode} = $opcode;
+ 	}
+ 	$ret;
+     }
+     sub out {
+ 	my $self = shift;
+-	if ($nasm && opcode->mnemonic()=~m/^j(?![re]cxz)/) {
++	if ($nasm && $self->{opcode}->mnemonic()=~m/^j(?![re]cxz)/) {
+ 	    "NEAR ".$self->{value};
+ 	} else {
+ 	    $self->{value};
+@@ -435,9 +452,9 @@ my %globals;
+ }
+ { package directive;	# pick up directives, which start with .
+     sub re {
+-	my	$self = shift;	# single instance is enough...
+-	local	*line = shift;
+-	undef	$ret;
++	my	($class, $line) = @_;
++	my	$self = {};
++	my	$ret;
+ 	my	$dir;
+ 	my	%opcode =	# lea 2f-1f(%rip),%dst; 1: nop; 2:
+ 		(	"%rax"=>0x01058d48,	"%rcx"=>0x010d8d48,
+@@ -449,25 +466,26 @@ my %globals;
+ 			"%r12"=>0x01258d4c,	"%r13"=>0x012d8d4c,
+ 			"%r14"=>0x01358d4c,	"%r15"=>0x013d8d4c	);
+ 
+-	if ($line =~ /^\s*(\.\w+)/) {
++	if ($$line =~ /^\s*(\.\w+)/) {
++	    bless $self,$class;
+ 	    $dir = $1;
+ 	    $ret = $self;
+ 	    undef $self->{value};
+-	    $line = substr($line, at +[0]); $line =~ s/^\s+//;
++	    $$line = substr($$line, at +[0]); $$line =~ s/^\s+//;
+ 
+ 	    SWITCH: for ($dir) {
+-		/\.picmeup/ && do { if ($line =~ /(%r[\w]+)/i) {
++		/\.picmeup/ && do { if ($$line =~ /(%r[\w]+)/i) {
+ 			    		$dir="\t.long";
+-					$line=sprintf "0x%x,0x90000000",$opcode{$1};
++					$$line=sprintf "0x%x,0x90000000",$opcode{$1};
  				    }
  				    last;
  				  };
+ 		/\.global|\.globl|\.extern/
+-			    && do { $globals{$line} = $prefix . $line;
+-				    $line = $globals{$line} if ($prefix);
++			    && do { $globals{$$line} = $prefix . $$line;
++				    $$line = $globals{$$line} if ($prefix);
+ 				    last;
+ 				  };
+-		/\.type/    && do { ($sym,$type,$narg) = split(',',$line);
++		/\.type/    && do { my ($sym,$type,$narg) = split(',',$$line);
+ 				    if ($type eq "\@function") {
+ 					undef $current_function;
+ 					$current_function->{name} = $sym;
+@@ -479,25 +497,25 @@ my %globals;
+ 					$current_function->{name} = $sym;
+ 					$current_function->{scope} = defined($globals{$sym})?"PUBLIC":"PRIVATE";
+ 				    }
+-				    $line =~ s/\@abi\-omnipotent/\@function/;
+-				    $line =~ s/\@function.*/\@function/;
++				    $$line =~ s/\@abi\-omnipotent/\@function/;
++				    $$line =~ s/\@function.*/\@function/;
+ 				    last;
+ 				  };
+-		/\.asciz/   && do { if ($line =~ /^"(.*)"$/) {
++		/\.asciz/   && do { if ($$line =~ /^"(.*)"$/) {
+ 					$dir  = ".byte";
+-					$line = join(",",unpack("C*",$1),0);
++					$$line = join(",",unpack("C*",$1),0);
+ 				    }
+ 				    last;
+ 				  };
+ 		/\.rva|\.long|\.quad/
+-			    && do { $line =~ s/([_a-z][_a-z0-9]*)/$globals{$1} or $1/gei;
+-				    $line =~ s/\.L/$decor/g;
++			    && do { $$line =~ s/([_a-z][_a-z0-9]*)/$globals{$1} or $1/gei;
++				    $$line =~ s/\.L/$decor/g;
+ 				    last;
+ 				  };
+ 	    }
+ 
+ 	    if ($gas) {
+-		$self->{value} = $dir . "\t" . $line;
++		$self->{value} = $dir . "\t" . $$line;
+ 
+ 		if ($dir =~ /\.extern/) {
+ 		    $self->{value} = ""; # swallow extern
+@@ -506,7 +524,7 @@ my %globals;
+ 		    $self->{value} = ".def\t" . ($globals{$1} or $1) . ";\t" .
+ 				(defined($globals{$1})?".scl 2;":".scl 3;") .
+ 				"\t.type 32;\t.endef"
+-				if ($win64 && $line =~ /([^,]+),\@function/);
++				if ($win64 && $$line =~ /([^,]+),\@function/);
+ 		} elsif (!$elf && $dir =~ /\.size/) {
+ 		    $self->{value} = "";
+ 		    if (defined($current_function)) {
+@@ -515,9 +533,9 @@ my %globals;
+ 			undef $current_function;
+ 		    }
+ 		} elsif (!$elf && $dir =~ /\.align/) {
+-		    $self->{value} = ".p2align\t" . (log($line)/log(2));
++		    $self->{value} = ".p2align\t" . (log($$line)/log(2));
+ 		} elsif ($dir eq ".section") {
+-		    $current_segment=$line;
++		    $current_segment=$$line;
+ 		    if (!$elf && $current_segment eq ".init") {
+ 			if	($flavour eq "macosx")	{ $self->{value} = ".mod_init_func"; }
+ 			elsif	($flavour eq "mingw64")	{ $self->{value} = ".section\t.ctors"; }
+@@ -525,13 +543,13 @@ my %globals;
+ 		} elsif ($dir =~ /\.(text|data)/) {
+ 		    $current_segment=".$1";
+ 		} elsif ($dir =~ /\.hidden/) {
+-		    if    ($flavour eq "macosx")  { $self->{value} = ".private_extern\t$prefix$line"; }
++		    if    ($flavour eq "macosx")  { $self->{value} = ".private_extern\t$prefix$$line"; }
+ 		    elsif ($flavour eq "mingw64") { $self->{value} = ""; }
+ 		} elsif ($dir =~ /\.comm/) {
+-		    $self->{value} = "$dir\t$prefix$line";
++		    $self->{value} = "$dir\t$prefix$$line";
+ 		    $self->{value} =~ s|,([0-9]+),([0-9]+)$|",$1,".log($2)/log(2)|e if ($flavour eq "macosx");
+ 		}
+-		$line = "";
++		$$line = "";
+ 		return $self;
+ 	    }
+ 
+@@ -562,38 +580,38 @@ my %globals;
+ 				    last;
+ 				  };
+ 		/\.section/ && do { my $v=undef;
+-				    $line =~ s/([^,]*).*/$1/;
+-				    $line = ".CRT\$XCU" if ($line eq ".init");
++				    $$line =~ s/([^,]*).*/$1/;
++				    $$line = ".CRT\$XCU" if ($$line eq ".init");
+ 				    if ($nasm) {
+-					$v="section	$line";
+-					if ($line=~/\.([px])data/) {
++					$v="section	$$line";
++					if ($$line=~/\.([px])data/) {
+ 					    $v.=" rdata align=";
+ 					    $v.=$1 eq "p"? 4 : 8;
+-					} elsif ($line=~/\.CRT\$/i) {
++					} elsif ($$line=~/\.CRT\$/i) {
+ 					    $v.=" rdata align=8";
+ 					}
+ 				    } else {
+ 					$v="$current_segment\tENDS\n" if ($current_segment);
+-					$v.="$line\tSEGMENT";
+-					if ($line=~/\.([px])data/) {
++					$v.="$$line\tSEGMENT";
++					if ($$line=~/\.([px])data/) {
+ 					    $v.=" READONLY";
+ 					    $v.=" ALIGN(".($1 eq "p" ? 4 : 8).")" if ($masm>=$masmref);
+-					} elsif ($line=~/\.CRT\$/i) {
++					} elsif ($$line=~/\.CRT\$/i) {
+ 					    $v.=" READONLY ";
+ 					    $v.=$masm>=$masmref ? "ALIGN(8)" : "DWORD";
+ 					}
+ 				    }
+-				    $current_segment = $line;
++				    $current_segment = $$line;
+ 				    $self->{value} = $v;
+ 				    last;
+ 				  };
+-		/\.extern/  && do { $self->{value}  = "EXTERN\t".$line;
++		/\.extern/  && do { $self->{value}  = "EXTERN\t".$$line;
+ 				    $self->{value} .= ":NEAR" if ($masm);
+ 				    last;
+ 				  };
+ 		/\.globl|.global/
+ 			    && do { $self->{value}  = $masm?"PUBLIC":"global";
+-				    $self->{value} .= "\t".$line;
++				    $self->{value} .= "\t".$$line;
+ 				    last;
+ 				  };
+ 		/\.size/    && do { if (defined($current_function)) {
+@@ -607,10 +625,13 @@ my %globals;
+ 				    }
+ 				    last;
+ 				  };
 -		/\.align/   && do { $self->{value} = "ALIGN\t".$line; last; };
 +		/\.align/   && do { my $max = ($masm && $masm>=$masmref) ? 256 : 4096;
-+				    $self->{value} = "ALIGN\t".($line>$max?$max:$line);
++				    $self->{value} = "ALIGN\t".($$line>$max?$max:$$line);
 +				    last;
 +				  };
  		/\.(value|long|rva|quad)/
  			    && do { my $sz  = substr($1,0,1);
- 				    my @arr = split(/,\s*/,$line);
+-				    my @arr = split(/,\s*/,$line);
++				    my @arr = split(/,\s*/,$$line);
+ 				    my $last = pop(@arr);
+ 				    my $conv = sub  {	my $var=shift;
+ 							$var=~s/^(0b[0-1]+)/oct($1)/eig;
+@@ -626,7 +647,7 @@ my %globals;
+ 				    $self->{value} .= &$conv($last);
+ 				    last;
+ 				  };
+-		/\.byte/    && do { my @str=split(/,\s*/,$line);
++		/\.byte/    && do { my @str=split(/,\s*/,$$line);
+ 				    map(s/(0b[0-1]+)/oct($1)/eig, at str);
+ 				    map(s/0x([0-9a-f]+)/0$1h/ig, at str) if ($masm);	
+ 				    while ($#str>15) {
+@@ -638,7 +659,7 @@ my %globals;
+ 						.join(",", at str) if (@str);
+ 				    last;
+ 				  };
+-		/\.comm/    && do { my @str=split(/,\s*/,$line);
++		/\.comm/    && do { my @str=split(/,\s*/,$$line);
+ 				    my $v=undef;
+ 				    if ($nasm) {
+ 					$v.="common	$prefix at str[0] @str[1]";
+@@ -652,7 +673,7 @@ my %globals;
+ 				    last;
+ 				  };
+ 	    }
+-	    $line = "";
++	    $$line = "";
+ 	}
+ 
+ 	$ret;
+@@ -664,15 +685,21 @@ my %globals;
+ }
+ 
+ sub rex {
+- local *opcode=shift;
++ my $opcode=shift;
+  my ($dst,$src,$rex)=@_;
+ 
+    $rex|=0x04 if($dst>=8);
+    $rex|=0x01 if($src>=8);
+-   push @opcode,($rex|0x40) if ($rex);
++   push @$opcode,($rex|0x40) if ($rex);
+ }
+ 
+-# older gas and ml64 don't handle SSE>2 instructions
++# Upon initial x86_64 introduction SSE>2 extensions were not introduced
++# yet. In order not to be bothered by tracing exact assembler versions,
++# but at the same time to provide a bare security minimum of AES-NI, we
++# hard-code some instructions. Extensions past AES-NI on the other hand
++# are traced by examining assembler version in individual perlasm
++# modules...
++
+ my %regrm = (	"%eax"=>0, "%ecx"=>1, "%edx"=>2, "%ebx"=>3,
+ 		"%esp"=>4, "%ebp"=>5, "%esi"=>6, "%edi"=>7	);
+ 
+@@ -701,9 +728,9 @@ my $movq = sub {	# elderly gas can't handle inter-register movq
+ my $pextrd = sub {
+     if (shift =~ /\$([0-9]+),\s*%xmm([0-9]+),\s*(%\w+)/) {
+       my @opcode=(0x66);
+-	$imm=$1;
+-	$src=$2;
+-	$dst=$3;
++	my $imm=$1;
++	my $src=$2;
++	my $dst=$3;
+ 	if ($dst =~ /%r([0-9]+)d/)	{ $dst = $1; }
+ 	elsif ($dst =~ /%e/)		{ $dst = $regrm{$dst}; }
+ 	rex(\@opcode,$src,$dst);
+@@ -719,9 +746,9 @@ my $pextrd = sub {
+ my $pinsrd = sub {
+     if (shift =~ /\$([0-9]+),\s*(%\w+),\s*%xmm([0-9]+)/) {
+       my @opcode=(0x66);
+-	$imm=$1;
+-	$src=$2;
+-	$dst=$3;
++	my $imm=$1;
++	my $src=$2;
++	my $dst=$3;
+ 	if ($src =~ /%r([0-9]+)/)	{ $src = $1; }
+ 	elsif ($src =~ /%e/)		{ $src = $regrm{$src}; }
+ 	rex(\@opcode,$dst,$src);
+@@ -800,14 +827,14 @@ my $rdseed = sub {
+ };
+ 
+ sub rxb {
+- local *opcode=shift;
++ my $opcode=shift;
+  my ($dst,$src1,$src2,$rxb)=@_;
+ 
+    $rxb|=0x7<<5;
+    $rxb&=~(0x04<<5) if($dst>=8);
+    $rxb&=~(0x01<<5) if($src1>=8);
+    $rxb&=~(0x02<<5) if($src2>=8);
+-   push @opcode,$rxb;
++   push @$opcode,$rxb;
+ }
+ 
+ my $vprotd = sub {
+@@ -838,6 +865,10 @@ my $vprotq = sub {
+     }
+ };
+ 
++my $endbranch = sub {
++    (0xf3,0x0f,0x1e,0xfa);
++};
++
+ if ($nasm) {
+     print <<___;
+ default	rel
+@@ -850,7 +881,7 @@ ___
+ OPTION	DOTNAME
+ ___
+ }
+-while(defined($line=<>)) {
++while(defined(my $line=<>)) {
+ 
+     $line =~ s|\R$||;           # Better chomp
+ 
+@@ -859,42 +890,38 @@ while(defined($line=<>)) {
+     $line =~ s|^\s+||;		# ... and skip white spaces in beginning
+     $line =~ s|\s+$||;		# ... and at the end
+ 
+-    undef $label;
+-    undef $opcode;
+-    undef @args;
+-
+-    if ($label=label->re(\$line))	{ print $label->out(); }
++    if (my $label=label->re(\$line))	{ print $label->out(); }
+ 
+-    if (directive->re(\$line)) {
+-	printf "%s",directive->out();
+-    } elsif ($opcode=opcode->re(\$line)) {
++    if (my $directive=directive->re(\$line)) {
++	printf "%s",$directive->out();
++    } elsif (my $opcode=opcode->re(\$line)) {
+ 	my $asm = eval("\$".$opcode->mnemonic());
+-	undef @bytes;
+ 	
+-	if ((ref($asm) eq 'CODE') && scalar(@bytes=&$asm($line))) {
++	if ((ref($asm) eq 'CODE') && scalar(my @bytes=&$asm($line))) {
+ 	    print $gas?".byte\t":"DB\t",join(',', at bytes),"\n";
+ 	    next;
+ 	}
+ 
++	my @args;
+ 	ARGUMENT: while (1) {
+-	my $arg;
++	    my $arg;
+ 
+-	if ($arg=register->re(\$line))	{ opcode->size($arg->size()); }
+-	elsif ($arg=const->re(\$line))	{ }
+-	elsif ($arg=ea->re(\$line))	{ }
+-	elsif ($arg=expr->re(\$line))	{ }
+-	else				{ last ARGUMENT; }
++	    ($arg=register->re(\$line, $opcode))||
++	    ($arg=const->re(\$line))		||
++	    ($arg=ea->re(\$line, $opcode))	||
++	    ($arg=expr->re(\$line, $opcode))	||
++	    last ARGUMENT;
+ 
+-	push @args,$arg;
++	    push @args,$arg;
+ 
+-	last ARGUMENT if ($line !~ /^,/);
++	    last ARGUMENT if ($line !~ /^,/);
+ 
+-	$line =~ s/^,\s*//;
++	    $line =~ s/^,\s*//;
+ 	} # ARGUMENT:
+ 
+ 	if ($#args>=0) {
+ 	    my $insn;
+-	    my $sz=opcode->size();
++	    my $sz=$opcode->size();
+ 
+ 	    if ($gas) {
+ 		$insn = $opcode->out($#args>=1?$args[$#args]->size():$sz);
 diff --git a/crypto/perlasm/x86asm.pl b/crypto/perlasm/x86asm.pl
-index cae156ae63ce..4590adee2fd8 100644
+index cae156a..1ff46c9 100644
 --- a/crypto/perlasm/x86asm.pl
 +++ b/crypto/perlasm/x86asm.pl
 @@ -1,4 +1,11 @@
@@ -68191,8 +74914,20 @@
  
  # require 'x86asm.pl';
  # &asm_init(<flavor>,"des-586.pl"[,$i386only]);
+@@ -165,6 +172,11 @@ sub ::vprotd
+     {	&::generic("vprotd", at _);	}
+ }
+ 
++sub ::endbranch
++{
++    &::data_byte(0xf3,0x0f,0x1e,0xfb);
++}
++
+ # label management
+ $lbdecor="L";		# local label decoration, set by package
+ $label="000";
 diff --git a/crypto/perlasm/x86gas.pl b/crypto/perlasm/x86gas.pl
-index 9ee6fa35fdec..2c8fce077939 100644
+index 9ee6fa3..2c8fce0 100644
 --- a/crypto/perlasm/x86gas.pl
 +++ b/crypto/perlasm/x86gas.pl
 @@ -1,4 +1,11 @@
@@ -68209,7 +74944,7 @@
  package x86gas;
  
 diff --git a/crypto/perlasm/x86masm.pl b/crypto/perlasm/x86masm.pl
-index 917d0f8b8e19..a0a354c8fc36 100644
+index 917d0f8..a0a354c 100644
 --- a/crypto/perlasm/x86masm.pl
 +++ b/crypto/perlasm/x86masm.pl
 @@ -1,4 +1,11 @@
@@ -68226,7 +74961,7 @@
  package x86masm;
  
 diff --git a/crypto/perlasm/x86nasm.pl b/crypto/perlasm/x86nasm.pl
-index 5d92f6092ac9..4b664a870b44 100644
+index 5d92f60..4b664a8 100644
 --- a/crypto/perlasm/x86nasm.pl
 +++ b/crypto/perlasm/x86nasm.pl
 @@ -1,4 +1,11 @@
@@ -68244,7 +74979,7 @@
  
 diff --git a/crypto/pkcs12/Makefile.in b/crypto/pkcs12/Makefile.in
 deleted file mode 100644
-index abca0e72bf80..000000000000
+index abca0e7..0000000
 --- a/crypto/pkcs12/Makefile.in
 +++ /dev/null
 @@ -1,49 +0,0 @@
@@ -68298,7 +75033,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/pkcs12/p12_add.c b/crypto/pkcs12/p12_add.c
-index b7dffc4eea86..8a5ad2068d17 100644
+index b7dffc4..8a5ad20 100644
 --- a/crypto/pkcs12/p12_add.c
 +++ b/crypto/pkcs12/p12_add.c
 @@ -1,59 +1,10 @@
@@ -68367,7 +75102,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_asn.c b/crypto/pkcs12/p12_asn.c
-index 2f9481ec721c..f2bfe32ebd6e 100644
+index 2f9481e..f2bfe32 100644
 --- a/crypto/pkcs12/p12_asn.c
 +++ b/crypto/pkcs12/p12_asn.c
 @@ -1,59 +1,10 @@
@@ -68436,7 +75171,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_attr.c b/crypto/pkcs12/p12_attr.c
-index 994f3868d01d..bf44c0aa23d9 100644
+index 994f386..bf44c0a 100644
 --- a/crypto/pkcs12/p12_attr.c
 +++ b/crypto/pkcs12/p12_attr.c
 @@ -1,59 +1,10 @@
@@ -68505,7 +75240,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_crpt.c b/crypto/pkcs12/p12_crpt.c
-index 666b5006a8a6..1fe140ad0a51 100644
+index 666b500..1fe140a 100644
 --- a/crypto/pkcs12/p12_crpt.c
 +++ b/crypto/pkcs12/p12_crpt.c
 @@ -1,59 +1,10 @@
@@ -68574,7 +75309,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_crt.c b/crypto/pkcs12/p12_crt.c
-index 1fd22c05605e..ca4dd539eb7c 100644
+index 1fd22c0..10cf8dd 100644
 --- a/crypto/pkcs12/p12_crt.c
 +++ b/crypto/pkcs12/p12_crt.c
 @@ -1,59 +1,10 @@
@@ -68642,8 +75377,35 @@
   */
  
  #include <stdio.h>
+@@ -77,7 +28,7 @@ static int copy_bag_attr(PKCS12_SAFEBAG *bag, EVP_PKEY *pkey, int nid)
+     return 1;
+ }
+ 
+-PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
++PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert,
+                       STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter,
+                       int mac_iter, int keytype)
+ {
+@@ -219,7 +170,7 @@ PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert)
+ 
+ PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags,
+                                EVP_PKEY *key, int key_usage, int iter,
+-                               int nid_key, char *pass)
++                               int nid_key, const char *pass)
+ {
+ 
+     PKCS12_SAFEBAG *bag = NULL;
+@@ -252,7 +203,7 @@ PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags,
+ }
+ 
+ int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags,
+-                    int nid_safe, int iter, char *pass)
++                    int nid_safe, int iter, const char *pass)
+ {
+     PKCS7 *p7 = NULL;
+     int free_safes = 0;
 diff --git a/crypto/pkcs12/p12_decr.c b/crypto/pkcs12/p12_decr.c
-index 2a89a4894eee..9ad17d7f8aec 100644
+index 2a89a48..9ad17d7 100644
 --- a/crypto/pkcs12/p12_decr.c
 +++ b/crypto/pkcs12/p12_decr.c
 @@ -1,59 +1,10 @@
@@ -68712,7 +75474,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_init.c b/crypto/pkcs12/p12_init.c
-index 9c82969b3874..a78e183c9559 100644
+index 9c82969..a78e183 100644
 --- a/crypto/pkcs12/p12_init.c
 +++ b/crypto/pkcs12/p12_init.c
 @@ -1,59 +1,10 @@
@@ -68781,7 +75543,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_key.c b/crypto/pkcs12/p12_key.c
-index 6a9a3254b141..4f1d29bb6d49 100644
+index 6a9a325..4f1d29b 100644
 --- a/crypto/pkcs12/p12_key.c
 +++ b/crypto/pkcs12/p12_key.c
 @@ -1,59 +1,10 @@
@@ -68861,7 +75623,7 @@
      Ai = OPENSSL_malloc(u);
      B = OPENSSL_malloc(v + 1);
 diff --git a/crypto/pkcs12/p12_kiss.c b/crypto/pkcs12/p12_kiss.c
-index ec59d83c8f1f..ea7e0c94ef2e 100644
+index ec59d83..ea7e0c9 100644
 --- a/crypto/pkcs12/p12_kiss.c
 +++ b/crypto/pkcs12/p12_kiss.c
 @@ -1,59 +1,10 @@
@@ -68930,7 +75692,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_lcl.h b/crypto/pkcs12/p12_lcl.h
-index 49dc90ce2141..89308751538b 100644
+index 49dc90c..8930875 100644
 --- a/crypto/pkcs12/p12_lcl.h
 +++ b/crypto/pkcs12/p12_lcl.h
 @@ -1,59 +1,10 @@
@@ -68999,7 +75761,7 @@
  
  struct PKCS12_MAC_DATA_st {
 diff --git a/crypto/pkcs12/p12_mutl.c b/crypto/pkcs12/p12_mutl.c
-index 0395358325ab..9bd672a17c4c 100644
+index 0395358..9bd672a 100644
 --- a/crypto/pkcs12/p12_mutl.c
 +++ b/crypto/pkcs12/p12_mutl.c
 @@ -1,59 +1,10 @@
@@ -69068,7 +75830,7 @@
  
  # include <stdio.h>
 diff --git a/crypto/pkcs12/p12_npas.c b/crypto/pkcs12/p12_npas.c
-index e23d0352c770..21bd77247644 100644
+index e23d035..21bd772 100644
 --- a/crypto/pkcs12/p12_npas.c
 +++ b/crypto/pkcs12/p12_npas.c
 @@ -1,59 +1,10 @@
@@ -69248,10 +76010,10 @@
      if (!ASN1_OCTET_STRING_set(macoct, mac, maclen))
 -        goto saferr;
 -    ASN1_OCTET_STRING_free(p12_data_tmp);
+-
+-    return 1;
 +        goto err;
  
--    return 1;
--
 - saferr:
 -    /* Restore old safe */
 -    ASN1_OCTET_STRING_free(p12->authsafes->d.data);
@@ -69304,7 +76066,7 @@
      X509_SIG_free(bag->value.shkeybag);
      bag->value.shkeybag = p8new;
 diff --git a/crypto/pkcs12/p12_p8d.c b/crypto/pkcs12/p12_p8d.c
-index 8980abe9b919..97577da26ecc 100644
+index 8980abe..97577da 100644
 --- a/crypto/pkcs12/p12_p8d.c
 +++ b/crypto/pkcs12/p12_p8d.c
 @@ -1,59 +1,10 @@
@@ -69373,7 +76135,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_p8e.c b/crypto/pkcs12/p12_p8e.c
-index b79ca6427213..86a07e1335e4 100644
+index b79ca64..86a07e1 100644
 --- a/crypto/pkcs12/p12_p8e.c
 +++ b/crypto/pkcs12/p12_p8e.c
 @@ -1,59 +1,10 @@
@@ -69442,7 +76204,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_sbag.c b/crypto/pkcs12/p12_sbag.c
-index ffdf22ded2ea..c8564b416822 100644
+index ffdf22d..c8564b4 100644
 --- a/crypto/pkcs12/p12_sbag.c
 +++ b/crypto/pkcs12/p12_sbag.c
 @@ -1,60 +1,10 @@
@@ -69512,7 +76274,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/p12_utl.c b/crypto/pkcs12/p12_utl.c
-index 817327fc9939..408c495e5001 100644
+index 817327f..408c495 100644
 --- a/crypto/pkcs12/p12_utl.c
 +++ b/crypto/pkcs12/p12_utl.c
 @@ -1,59 +1,10 @@
@@ -69581,7 +76343,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs12/pk12err.c b/crypto/pkcs12/pk12err.c
-index 0850da8b7fc1..36053f196c71 100644
+index 0850da8..36053f1 100644
 --- a/crypto/pkcs12/pk12err.c
 +++ b/crypto/pkcs12/pk12err.c
 @@ -1,61 +1,11 @@
@@ -69686,7 +76448,7 @@
      {ERR_REASON(PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR),
 diff --git a/crypto/pkcs7/Makefile.in b/crypto/pkcs7/Makefile.in
 deleted file mode 100644
-index b71d56289496..000000000000
+index b71d562..0000000
 --- a/crypto/pkcs7/Makefile.in
 +++ /dev/null
 @@ -1,50 +0,0 @@
@@ -69741,7 +76503,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/pkcs7/bio_pk7.c b/crypto/pkcs7/bio_pk7.c
-index 6014b12407b6..29feaa3544e3 100644
+index 6014b12..29feaa3 100644
 --- a/crypto/pkcs7/bio_pk7.c
 +++ b/crypto/pkcs7/bio_pk7.c
 @@ -1,55 +1,10 @@
@@ -69806,7 +76568,7 @@
  
  #include <openssl/asn1.h>
 diff --git a/crypto/pkcs7/pk7_asn1.c b/crypto/pkcs7/pk7_asn1.c
-index 485e676cff5e..315e1b8132c3 100644
+index 485e676..315e1b8 100644
 --- a/crypto/pkcs7/pk7_asn1.c
 +++ b/crypto/pkcs7/pk7_asn1.c
 @@ -1,59 +1,10 @@
@@ -69875,7 +76637,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs7/pk7_attr.c b/crypto/pkcs7/pk7_attr.c
-index 84c59aa5bf08..5f7167048ead 100644
+index 84c59aa..5f71670 100644
 --- a/crypto/pkcs7/pk7_attr.c
 +++ b/crypto/pkcs7/pk7_attr.c
 @@ -1,59 +1,10 @@
@@ -69944,10 +76706,10 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs7/pk7_dgst.c b/crypto/pkcs7/pk7_dgst.c
-index 4b1376eebedd..b0a6bd5e77b4 100644
+index 4b1376e..965fb37 100644
 --- a/crypto/pkcs7/pk7_dgst.c
 +++ b/crypto/pkcs7/pk7_dgst.c
-@@ -1,58 +1,10 @@
+@@ -1,64 +1,15 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 +/*
@@ -70012,8 +76774,14 @@
   */
  
  #include <stdio.h>
+ #include "internal/cryptlib.h"
+ #include <openssl/evp.h>
+-#include <openssl/rand.h>
+ #include <openssl/objects.h>
+ #include <openssl/x509.h>
+ #include <openssl/pkcs7.h>
 diff --git a/crypto/pkcs7/pk7_doit.c b/crypto/pkcs7/pk7_doit.c
-index 9d66fc400728..1333e4df4d2d 100644
+index 9d66fc4..2402241 100644
 --- a/crypto/pkcs7/pk7_doit.c
 +++ b/crypto/pkcs7/pk7_doit.c
 @@ -1,58 +1,10 @@
@@ -70089,11 +76857,21 @@
                      PKCS7err(PKCS7_F_PKCS7_DATAFINAL, ERR_R_EVP_LIB);
                      goto err;
                  }
+@@ -822,7 +775,8 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio)
+             goto err;
+         if (!EVP_DigestFinal_ex(mdc, md_data, &md_len))
+             goto err;
+-        ASN1_OCTET_STRING_set(p7->d.digest->digest, md_data, md_len);
++        if (!ASN1_OCTET_STRING_set(p7->d.digest->digest, md_data, md_len))
++            goto err;
+     }
+ 
+     if (!PKCS7_is_detached(p7)) {
 diff --git a/crypto/pkcs7/pk7_enc.c b/crypto/pkcs7/pk7_enc.c
-index cf478434fd15..6889a0487de9 100644
+index cf47843..3c59f9c 100644
 --- a/crypto/pkcs7/pk7_enc.c
 +++ b/crypto/pkcs7/pk7_enc.c
-@@ -1,58 +1,10 @@
+@@ -1,64 +1,15 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 +/*
@@ -70158,8 +76936,14 @@
   */
  
  #include <stdio.h>
+ #include "internal/cryptlib.h"
+ #include <openssl/evp.h>
+-#include <openssl/rand.h>
+ #include <openssl/objects.h>
+ #include <openssl/x509.h>
+ #include <openssl/pkcs7.h>
 diff --git a/crypto/pkcs7/pk7_lib.c b/crypto/pkcs7/pk7_lib.c
-index cdf73028a3bd..69c68cf5f3d5 100644
+index cdf7302..69c68cf 100644
 --- a/crypto/pkcs7/pk7_lib.c
 +++ b/crypto/pkcs7/pk7_lib.c
 @@ -1,58 +1,10 @@
@@ -70228,10 +77012,10 @@
  
  #include <stdio.h>
 diff --git a/crypto/pkcs7/pk7_mime.c b/crypto/pkcs7/pk7_mime.c
-index 19130eefc7ed..d44b3adae670 100644
+index 19130ee..97474cf 100644
 --- a/crypto/pkcs7/pk7_mime.c
 +++ b/crypto/pkcs7/pk7_mime.c
-@@ -1,55 +1,10 @@
+@@ -1,61 +1,15 @@
  /*
 - * Written by Dr Stephen N Henson (steve at openssl.org) for the OpenSSL
 - * project.
@@ -70292,8 +77076,14 @@
   */
  
  #include <stdio.h>
+ #include <ctype.h>
+ #include "internal/cryptlib.h"
+-#include <openssl/rand.h>
+ #include <openssl/x509.h>
+ #include <openssl/asn1.h>
+ 
 diff --git a/crypto/pkcs7/pk7_smime.c b/crypto/pkcs7/pk7_smime.c
-index 7c2d5c9895cd..44187230ef04 100644
+index 7c2d5c9..4418723 100644
 --- a/crypto/pkcs7/pk7_smime.c
 +++ b/crypto/pkcs7/pk7_smime.c
 @@ -1,59 +1,10 @@
@@ -70362,7 +77152,7 @@
  
  /* Simple PKCS#7 processing functions */
 diff --git a/crypto/pkcs7/pkcs7err.c b/crypto/pkcs7/pkcs7err.c
-index d897cfb54ce1..bcb479d5065e 100644
+index d897cfb..bcb479d 100644
 --- a/crypto/pkcs7/pkcs7err.c
 +++ b/crypto/pkcs7/pkcs7err.c
 @@ -1,61 +1,11 @@
@@ -70544,7 +77334,7 @@
      {0, NULL}
 diff --git a/crypto/poly1305/Makefile.in b/crypto/poly1305/Makefile.in
 deleted file mode 100644
-index 0601bf734afb..000000000000
+index 0601bf7..0000000
 --- a/crypto/poly1305/Makefile.in
 +++ /dev/null
 @@ -1,61 +0,0 @@
@@ -70610,7 +77400,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/poly1305/asm/poly1305-armv4.pl b/crypto/poly1305/asm/poly1305-armv4.pl
-index aa3f2280c648..fc899ced8671 100755
+index aa3f228..fc899ce 100755
 --- a/crypto/poly1305/asm/poly1305-armv4.pl
 +++ b/crypto/poly1305/asm/poly1305-armv4.pl
 @@ -1,4 +1,11 @@
@@ -70635,7 +77425,7 @@
  # Cortex-A8		6.25/+115%		2.36
  # Cortex-A9		5.10/+95%		2.55
  # Cortex-A15		3.85/+85%		1.25(**)
-@@ -523,6 +530,51 @@ $code.=<<___;
+@@ -523,6 +530,51 @@ poly1305_init_neon:
  	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  	@ lazy reduction as discussed in "NEON crypto" by D.J. Bernstein
  	@ and P. Schwabe
@@ -70687,7 +77477,7 @@
  
  	vshr.u64	$T0,$D3,#26
  	vmovn.i64	$D3#lo,$D3
-@@ -887,7 +939,8 @@ $code.=<<___;
+@@ -887,7 +939,8 @@ poly1305_blocks_neon:
  # endif
  
  	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ -70697,7 +77487,7 @@
  
  	vshr.u64	$T0,$D3,#26
  	vmovn.i64	$D3#lo,$D3
-@@ -915,19 +968,20 @@ $code.=<<___;
+@@ -915,19 +968,20 @@ poly1305_blocks_neon:
  	  vbic.i32	$H3,#0xfc000000
  	 vshrn.u64	$T1#lo,$D2,#26
  	 vmovn.i64	$D2#lo,$D2
@@ -70722,7 +77512,7 @@
  	 vadd.i32	$D4#lo,$D4#lo,$T1#lo	@ h3 -> h4
  	  vbic.i32	$H1,#0xfc000000
 diff --git a/crypto/poly1305/asm/poly1305-armv8.pl b/crypto/poly1305/asm/poly1305-armv8.pl
-index 2e1dae3df238..98a96b799fa5 100755
+index 2e1dae3..98a96b7 100755
 --- a/crypto/poly1305/asm/poly1305-armv8.pl
 +++ b/crypto/poly1305/asm/poly1305-armv8.pl
 @@ -1,4 +1,11 @@
@@ -70747,7 +77537,7 @@
  #
  # (*)	estimate based on resources availability is less than 1.0,
  #	i.e. measured result is worse than expected, presumably binary
-@@ -507,9 +514,11 @@ $code.=<<___;
+@@ -507,9 +514,11 @@ poly1305_blocks_neon:
  	fmov	$IN01_1,x6
  	add	x10,x10,x11,lsl#32	// bfi	x10,x11,#32,#32
  	add	x12,x12,x13,lsl#32	// bfi	x12,x13,#32,#32
@@ -70759,7 +77549,7 @@
  
  	b.ls	.Lskip_loop
  
-@@ -660,41 +669,43 @@ $code.=<<___;
+@@ -660,41 +669,43 @@ poly1305_blocks_neon:
  	 fmov	$IN01_2,x8
  	umlal	$ACC2,$IN01_4,${S3}[0]
  	 fmov	$IN01_3,x10
@@ -70815,7 +77605,7 @@
  	add	$H1,$H1,$T0.2s		// h0 -> h1
  	 add	$H4,$H4,$T1.2s		// h3 -> h4
  
-@@ -702,9 +713,7 @@ $code.=<<___;
+@@ -702,9 +713,7 @@ poly1305_blocks_neon:
  
  .Lskip_loop:
  	dup	$IN23_2,${IN23_2}[0]
@@ -70826,7 +77616,7 @@
  	////////////////////////////////////////////////////////////////
  	// multiply (inp[0:1]+hash) or inp[2:3] by r^2:r^1
 diff --git a/crypto/poly1305/asm/poly1305-c64xplus.pl b/crypto/poly1305/asm/poly1305-c64xplus.pl
-index a7cf47d5f05b..93fef37e605b 100755
+index a7cf47d..93fef37 100755
 --- a/crypto/poly1305/asm/poly1305-c64xplus.pl
 +++ b/crypto/poly1305/asm/poly1305-c64xplus.pl
 @@ -1,4 +1,11 @@
@@ -70844,7 +77634,7 @@
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/poly1305/asm/poly1305-mips.pl b/crypto/poly1305/asm/poly1305-mips.pl
 new file mode 100755
-index 000000000000..d2b3e90d93f0
+index 0000000..d2b3e90
 --- /dev/null
 +++ b/crypto/poly1305/asm/poly1305-mips.pl
 @@ -0,0 +1,425 @@
@@ -71274,7 +78064,7 @@
 +close STDOUT;
 +
 diff --git a/crypto/poly1305/asm/poly1305-ppc.pl b/crypto/poly1305/asm/poly1305-ppc.pl
-index 07da9d10b610..8a06c77c83a8 100755
+index 07da9d1..8a06c77 100755
 --- a/crypto/poly1305/asm/poly1305-ppc.pl
 +++ b/crypto/poly1305/asm/poly1305-ppc.pl
 @@ -1,4 +1,11 @@
@@ -71291,7 +78081,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/poly1305/asm/poly1305-ppcfp.pl b/crypto/poly1305/asm/poly1305-ppcfp.pl
-index c8636a46edf0..49f70a8c03d3 100755
+index c8636a4..49f70a8 100755
 --- a/crypto/poly1305/asm/poly1305-ppcfp.pl
 +++ b/crypto/poly1305/asm/poly1305-ppcfp.pl
 @@ -1,4 +1,11 @@
@@ -71308,7 +78098,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/poly1305/asm/poly1305-s390x.pl b/crypto/poly1305/asm/poly1305-s390x.pl
-index 141ba8d0bd50..82d757d9a1ca 100755
+index 141ba8d..82d757d 100755
 --- a/crypto/poly1305/asm/poly1305-s390x.pl
 +++ b/crypto/poly1305/asm/poly1305-s390x.pl
 @@ -1,4 +1,11 @@
@@ -71325,7 +78115,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/poly1305/asm/poly1305-sparcv9.pl b/crypto/poly1305/asm/poly1305-sparcv9.pl
-index 497e27097dbd..c22735a7b82a 100755
+index 497e270..c22735a 100755
 --- a/crypto/poly1305/asm/poly1305-sparcv9.pl
 +++ b/crypto/poly1305/asm/poly1305-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -71341,7 +78131,7 @@
  #
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
-@@ -74,8 +81,8 @@ SPARC_PIC_THUNK(%g1)
+@@ -74,8 +81,8 @@ poly1305_init:
  	SPARC_LOAD_ADDRESS(OPENSSL_sparcv9cap_P,%g1)
  	ld	[%g1],%g1
  
@@ -71352,7 +78142,7 @@
  	be	.Lpoly1305_init_fma
  	nop
  
-@@ -132,6 +139,7 @@ SPARC_PIC_THUNK(%g1)
+@@ -132,6 +139,7 @@ poly1305_init:
  .Lno_key:
  	ret
  	restore	%g0,%g0,%o0		! return 0
@@ -71360,7 +78150,7 @@
  .size	poly1305_init,.-poly1305_init
  
  .globl	poly1305_blocks
-@@ -264,6 +272,7 @@ SPARC_PIC_THUNK(%g1)
+@@ -264,6 +272,7 @@ poly1305_blocks:
  .Lno_data:
  	ret
  	restore
@@ -71368,7 +78158,7 @@
  .size	poly1305_blocks,.-poly1305_blocks
  ___
  ########################################################################
-@@ -354,6 +363,7 @@ $code.=<<___;
+@@ -354,6 +363,7 @@ poly1305_blocks_vis3:
  
  	ret
  	restore
@@ -71376,7 +78166,7 @@
  .size	poly1305_blocks_vis3,.-poly1305_blocks_vis3
  ___
  }
-@@ -426,6 +436,7 @@ $code.=<<___;
+@@ -426,6 +436,7 @@ poly1305_emit:
  
  	ret
  	restore
@@ -71384,7 +78174,7 @@
  .size	poly1305_emit,.-poly1305_emit
  ___
  
-@@ -591,6 +602,7 @@ $code.=<<___;
+@@ -591,6 +602,7 @@ poly1305_init_fma:
  .Lno_key_fma:
  	ret
  	restore	%g0,%g0,%o0			! return 0
@@ -71392,7 +78182,7 @@
  .size	poly1305_init_fma,.-poly1305_init_fma
  
  .align	32
-@@ -898,6 +910,7 @@ $code.=<<___;
+@@ -898,6 +910,7 @@ poly1305_blocks_fma:
  .Labort:
  	ret
  	restore
@@ -71400,7 +78190,7 @@
  .size	poly1305_blocks_fma,.-poly1305_blocks_fma
  ___
  {
-@@ -1004,6 +1017,7 @@ $code.=<<___;
+@@ -1004,6 +1017,7 @@ poly1305_emit_fma:
  
  	ret
  	restore
@@ -71409,7 +78199,7 @@
  ___
  }
 diff --git a/crypto/poly1305/asm/poly1305-x86.pl b/crypto/poly1305/asm/poly1305-x86.pl
-index 97d0a81bea43..ecc0ee62eaec 100755
+index 97d0a81..ecc0ee6 100755
 --- a/crypto/poly1305/asm/poly1305-x86.pl
 +++ b/crypto/poly1305/asm/poly1305-x86.pl
 @@ -1,4 +1,11 @@
@@ -71449,7 +78239,7 @@
  	&movdqa		($D2,$T1);
  	&psrlq		($T1,26);
 diff --git a/crypto/poly1305/asm/poly1305-x86_64.pl b/crypto/poly1305/asm/poly1305-x86_64.pl
-index 7d676119a25c..784ff4b75837 100755
+index 7d67611..784ff4b 100755
 --- a/crypto/poly1305/asm/poly1305-x86_64.pl
 +++ b/crypto/poly1305/asm/poly1305-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -71487,7 +78277,7 @@
  .type	poly1305_init,\@function,3
  .align	32
  poly1305_init:
-@@ -495,10 +506,10 @@ $code.=<<___;
+@@ -495,10 +506,10 @@ poly1305_blocks_avx:
  
  	################################# base 2^26 -> base 2^64
  	mov	$d1#d,$h0#d
@@ -71500,7 +78290,7 @@
  
  	shr	\$6,$d1
  	shl	\$52,$r1
-@@ -1383,10 +1394,10 @@ $code.=<<___;
+@@ -1383,10 +1394,10 @@ poly1305_blocks_avx2:
  
  	################################# base 2^26 -> base 2^64
  	mov	$d1#d,$h0#d
@@ -71523,7 +78313,7 @@
  .long	0x3ffffff,0,0x3ffffff,0,0x3ffffff,0,0x3ffffff,0
  .Lfive:
 diff --git a/crypto/poly1305/build.info b/crypto/poly1305/build.info
-index 389c7f6d3209..d575f5a63e1c 100644
+index 389c7f6..d575f5a 100644
 --- a/crypto/poly1305/build.info
 +++ b/crypto/poly1305/build.info
 @@ -12,6 +12,7 @@ GENERATE[poly1305-armv4.S]=asm/poly1305-armv4.pl $(PERLASM_SCHEME)
@@ -71535,7 +78325,7 @@
  BEGINRAW[Makefile(unix)]
  {- $builddir -}/poly1305-%.S:	{- $sourcedir -}/asm/poly1305-%.pl
 diff --git a/crypto/poly1305/poly1305.c b/crypto/poly1305/poly1305.c
-index 6bec8b30f885..55de19b7ed7e 100644
+index 6bec8b3..55de19b 100644
 --- a/crypto/poly1305/poly1305.c
 +++ b/crypto/poly1305/poly1305.c
 @@ -1,8 +1,10 @@
@@ -71656,7 +78446,7 @@
          stopwatch = OPENSSL_rdtsc();
          for (i=0;i<10000;i++) {
 diff --git a/crypto/poly1305/poly1305_ieee754.c b/crypto/poly1305/poly1305_ieee754.c
-index 7c02c1d52d0d..08a5b58c2a8d 100644
+index 7c02c1d..08a5b58 100644
 --- a/crypto/poly1305/poly1305_ieee754.c
 +++ b/crypto/poly1305/poly1305_ieee754.c
 @@ -1,8 +1,10 @@
@@ -71675,7 +78465,7 @@
  
  /*
 diff --git a/crypto/ppc_arch.h b/crypto/ppc_arch.h
-index a27fb728df6e..65cf96fc1fe8 100644
+index a27fb72..65cf96f 100644
 --- a/crypto/ppc_arch.h
 +++ b/crypto/ppc_arch.h
 @@ -1,5 +1,14 @@
@@ -71696,7 +78486,7 @@
  extern unsigned int OPENSSL_ppccap_P;
  
 diff --git a/crypto/ppccap.c b/crypto/ppccap.c
-index 2c98daf5b4df..712ee799d6df 100644
+index 2c98daf..712ee79 100644
 --- a/crypto/ppccap.c
 +++ b/crypto/ppccap.c
 @@ -1,3 +1,12 @@
@@ -71756,7 +78546,7 @@
              if (sizeof(size_t) == 4) {
                  /* In 32-bit case PPC_FPU64 is always fastest [if option] */
 diff --git a/crypto/ppccpuid.pl b/crypto/ppccpuid.pl
-index 9de1355b2f8f..9d1cada4dc4c 100755
+index 9de1355..9d1cada 100755
 --- a/crypto/ppccpuid.pl
 +++ b/crypto/ppccpuid.pl
 @@ -1,4 +1,11 @@
@@ -71772,7 +78562,7 @@
  
  $flavour = shift;
  
-@@ -170,6 +177,32 @@ Lot:	andi.	r5,r3,3
+@@ -170,6 +177,32 @@ Laligned:
  	.byte	0,12,0x14,0,0,0,2,0
  	.long	0
  .size	.OPENSSL_cleanse,.-.OPENSSL_cleanse
@@ -71807,7 +78597,7 @@
  my ($out,$cnt,$max)=("r3","r4","r5");
 diff --git a/crypto/rand/Makefile.in b/crypto/rand/Makefile.in
 deleted file mode 100644
-index 5442402432ca..000000000000
+index 5442402..0000000
 --- a/crypto/rand/Makefile.in
 +++ /dev/null
 @@ -1,45 +0,0 @@
@@ -71857,7 +78647,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/rand/md_rand.c b/crypto/rand/md_rand.c
-index e9574b08b897..137851f596d8 100644
+index e9574b0..137851f 100644
 --- a/crypto/rand/md_rand.c
 +++ b/crypto/rand/md_rand.c
 @@ -1,111 +1,10 @@
@@ -72007,7 +78797,7 @@
      long md_c[2];
      unsigned char local_md[MD_DIGEST_LENGTH];
 diff --git a/crypto/rand/rand_egd.c b/crypto/rand/rand_egd.c
-index 47a575235a18..f4bfd8696c15 100644
+index 47a5752..f4bfd86 100644
 --- a/crypto/rand/rand_egd.c
 +++ b/crypto/rand/rand_egd.c
 @@ -1,56 +1,10 @@
@@ -72074,7 +78864,7 @@
  
  #include <openssl/opensslconf.h>
 diff --git a/crypto/rand/rand_err.c b/crypto/rand/rand_err.c
-index d01393add1af..c58e7ee4fbfe 100644
+index d01393a..c58e7ee 100644
 --- a/crypto/rand/rand_err.c
 +++ b/crypto/rand/rand_err.c
 @@ -1,61 +1,11 @@
@@ -72173,7 +78963,7 @@
  };
  
 diff --git a/crypto/rand/rand_lcl.h b/crypto/rand/rand_lcl.h
-index daa48dd9f4ee..d98c90e2ac39 100644
+index daa48dd..d98c90e 100644
 --- a/crypto/rand/rand_lcl.h
 +++ b/crypto/rand/rand_lcl.h
 @@ -1,111 +1,10 @@
@@ -72295,7 +79085,7 @@
  
  #ifndef HEADER_RAND_LCL_H
 diff --git a/crypto/rand/rand_lib.c b/crypto/rand/rand_lib.c
-index 98711135912f..238712671ba3 100644
+index 9871113..2387126 100644
 --- a/crypto/rand/rand_lib.c
 +++ b/crypto/rand/rand_lib.c
 @@ -1,58 +1,10 @@
@@ -72364,7 +79154,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c
-index 1aff4440fd6e..e231ecdb8287 100644
+index 1aff444..e231ecd 100644
 --- a/crypto/rand/rand_unix.c
 +++ b/crypto/rand/rand_unix.c
 @@ -1,112 +1,12 @@
@@ -72488,7 +79278,7 @@
  
  #define USE_SOCKETS
 diff --git a/crypto/rand/rand_vms.c b/crypto/rand/rand_vms.c
-index 5919f48c1757..ae6f17d91fc8 100644
+index 5919f48..ae6f17d 100644
 --- a/crypto/rand/rand_vms.c
 +++ b/crypto/rand/rand_vms.c
 @@ -1,59 +1,10 @@
@@ -72557,7 +79347,7 @@
  
  #include <openssl/rand.h>
 diff --git a/crypto/rand/rand_win.c b/crypto/rand/rand_win.c
-index bf85d37aeca4..c5d0aa155a6c 100644
+index bf85d37..c5d0aa1 100644
 --- a/crypto/rand/rand_win.c
 +++ b/crypto/rand/rand_win.c
 @@ -1,111 +1,10 @@
@@ -72949,8 +79739,16 @@
 -            }
 -
 -            FreeLibrary(user);
--        }
--
++# else
++    /* poll the CryptoAPI PRNG */
++    /* The CryptoAPI returns sizeof(buf) bytes of randomness */
++    if (CryptAcquireContextW(&hProvider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
++        if (CryptGenRandom(hProvider, (DWORD)sizeof(buf), buf) != 0) {
++            RAND_add(buf, sizeof(buf), sizeof(buf));
+         }
++        CryptReleaseContext(hProvider, 0);
++    }
+ 
 -        /*-
 -         * Toolhelp32 snapshot: enumerate processes, threads, modules and heap
 -         * http://msdn.microsoft.com/library/psdk/winbase/toolhelp_5pfd.htm
@@ -73138,24 +79936,14 @@
 -            }
 -
 -            FreeLibrary(kernel);
-+# else
-+    /* poll the CryptoAPI PRNG */
-+    /* The CryptoAPI returns sizeof(buf) bytes of randomness */
-+    if (CryptAcquireContextW(&hProvider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
++    /* poll the Pentium PRG with CryptoAPI */
++    if (CryptAcquireContextW(&hProvider, NULL, INTEL_DEF_PROV, PROV_INTEL_SEC, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
 +        if (CryptGenRandom(hProvider, (DWORD)sizeof(buf), buf) != 0) {
 +            RAND_add(buf, sizeof(buf), sizeof(buf));
          }
 +        CryptReleaseContext(hProvider, 0);
      }
 -# endif                         /* !OPENSSL_SYS_WINCE */
-+
-+    /* poll the Pentium PRG with CryptoAPI */
-+    if (CryptAcquireContextW(&hProvider, NULL, INTEL_DEF_PROV, PROV_INTEL_SEC, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
-+        if (CryptGenRandom(hProvider, (DWORD)sizeof(buf), buf) != 0) {
-+            RAND_add(buf, sizeof(buf), sizeof(buf));
-+        }
-+        CryptReleaseContext(hProvider, 0);
-+    }
 +# endif
  
      /* timer data */
@@ -73309,15 +80097,13 @@
 -
  #endif
 diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c
-index 3ee6bf5a162e..49f5405dbcbc 100644
+index 3ee6bf5..7aeb871 100644
 --- a/crypto/rand/randfile.c
 +++ b/crypto/rand/randfile.c
-@@ -1,67 +1,14 @@
+@@ -1,66 +1,13 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -73365,7 +80151,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -73376,16 +80164,16 @@
 + * https://www.openssl.org/source/license.html
   */
  
- #include "e_os.h"
- 
+-#include "e_os.h"
+-
 -/* We need to define this to get macros like S_IFBLK and S_IFCHR */
 -#if !defined(OPENSSL_SYS_VXWORKS)
 -# define _XOPEN_SOURCE 500
 -#endif
--
++#include "internal/cryptlib.h"
+ 
  #include <errno.h>
  #include <stdio.h>
- #include <stdlib.h>
 @@ -80,6 +27,29 @@
  #ifndef OPENSSL_NO_POSIX_IO
  # include <sys/stat.h>
@@ -73416,12 +80204,19 @@
  #endif
  
  #ifdef _WIN32
-@@ -95,12 +65,45 @@
+@@ -87,6 +57,8 @@
+ # define chmod   _chmod
+ # define open    _open
+ # define fdopen  _fdopen
++# define fstat   _fstat
++# define fileno  _fileno
+ #endif
  
+ #undef BUFSIZE
+@@ -95,12 +67,39 @@
+ 
  #ifdef OPENSSL_SYS_VMS
  /*
-- * This declaration is a nasty hack to get around vms' extension to fopen for
-- * passing in sharing options being disabled by our /STANDARD=ANSI89
 + * Misc hacks needed for specific cases.
 + *
 + * __FILE_ptr32 is a type provided by DEC C headers (types.h specifically)
@@ -73429,18 +80224,12 @@
 + * stdio function return this type (a study of stdio.h proves it).
 + * Additionally, we create a similar char pointer type for the sake of
 + * vms_setbuf below.
-  */
--static FILE *(*const vms_fopen)(const char *, const char *, ...) =
--    (FILE *(*)(const char *, const char *, ...))fopen;
++ */
 +# if __INITIAL_POINTER_SIZE == 64
 +#  pragma pointer_size save
 +#  pragma pointer_size 32
-+# endif
 +typedef char *char_ptr32;
-+# if __INITIAL_POINTER_SIZE == 64
 +#  pragma pointer_size restore
-+# endif
-+
 +/*
 + * On VMS, setbuf() will only take 32-bit pointers, and a compilation
 + * with /POINTER_SIZE=64 will give off a MAYLOSEDATA2 warning here.
@@ -73449,37 +80238,67 @@
 + * As for the buffer parameter, we only use NULL here, so that passes as
 + * well...
 + */
-+static void vms_setbuf(FILE *fp, char *buf)
-+{
-+    setbuf((__FILE_ptr32)fp, (char_ptr32)buf);
-+}
++#  define setbuf(fp,buf) (setbuf)((__FILE_ptr32)(fp), (char_ptr32)(buf))
++# endif
++
 +/*
-+ * This declaration is a nasty hack to get around vms' extension to fopen for
+  * This declaration is a nasty hack to get around vms' extension to fopen for
+- * passing in sharing options being disabled by our /STANDARD=ANSI89
 + * passing in sharing options being disabled by /STANDARD=ANSI89
-+ */
+  */
+-static FILE *(*const vms_fopen)(const char *, const char *, ...) =
+-    (FILE *(*)(const char *, const char *, ...))fopen;
 +static __FILE_ptr32 (*const vms_fopen)(const char *, const char *, ...) =
-+    (__FILE_ptr32 (*)(const char *, const char *, ...))fopen;
++      (__FILE_ptr32 (*)(const char *, const char *, ...))fopen;
  # define VMS_OPEN_ATTRS "shr=get,put,upd,del","ctx=bin,stm","rfm=stm","rat=none","mrs=0"
 +
-+# define fopen(fname,mode) vms_fopen((fname), (mode), VMS_OPEN_ATTRS)
-+# define setbuf(fp,buf) vms_setbuf((fp), (buf))
++# define openssl_fopen(fname,mode) vms_fopen((fname), (mode), VMS_OPEN_ATTRS)
  #endif
  
  #define RFILE ".rnd"
-@@ -142,22 +145,18 @@ int RAND_load_file(const char *file, long bytes)
-     if (bytes == 0)
-         return (ret);
+@@ -122,10 +121,17 @@ int RAND_load_file(const char *file, long bytes)
+     struct stat sb;
+ #endif
+     int i, ret = 0, n;
+-    FILE *in;
++    FILE *in = NULL;
  
+     if (file == NULL)
+-        return (0);
++        return 0;
++
++    if (bytes == 0)
++        return ret;
++
++    in = openssl_fopen(file, "rb");
++    if (in == NULL)
++        goto err;
+ 
+ #ifndef OPENSSL_NO_POSIX_IO
+     /*
+@@ -135,30 +141,21 @@ int RAND_load_file(const char *file, long bytes)
+      * applications such as Valgrind.
+      */
+     memset(&sb, 0, sizeof(sb));
+-    if (stat(file, &sb) < 0)
+-        return (0);
++    if (fstat(fileno(in), &sb) < 0)
++        goto err;
+     RAND_add(&sb, sizeof(sb), 0.0);
+-#endif
+-    if (bytes == 0)
+-        return (ret);
+ 
 -#ifdef OPENSSL_SYS_VMS
 -    in = vms_fopen(file, "rb", VMS_OPEN_ATTRS);
 -#else
-     in = fopen(file, "rb");
+-    in = fopen(file, "rb");
 -#endif
-     if (in == NULL)
-         goto err;
+-    if (in == NULL)
+-        goto err;
 -#if defined(S_IFBLK) && defined(S_IFCHR) && !defined(OPENSSL_NO_POSIX_IO)
 -    if (sb.st_mode & (S_IFBLK | S_IFCHR)) {
-+#if defined(S_ISBLK) && defined(S_ISCHR) && !defined(OPENSSL_NO_POSIX_IO)
++# if defined(S_ISBLK) && defined(S_ISCHR)
 +    if (S_ISBLK(sb.st_mode) || S_ISCHR(sb.st_mode)) {
          /*
           * this file is a device. we don't want read an infinite number of
@@ -73490,9 +80309,59 @@
 -        setbuf(stdin, NULL); /* don't do buffered reads */
 +        setbuf(in, NULL); /* don't do buffered reads */
      }
++# endif
  #endif
      for (;;) {
-@@ -242,13 +241,10 @@ int RAND_write_file(const char *file)
+         if (bytes > 0)
+@@ -177,10 +174,11 @@ int RAND_load_file(const char *file, long bytes)
+                 break;
+         }
+     }
+-    fclose(in);
+     OPENSSL_cleanse(buf, BUFSIZE);
+  err:
+-    return (ret);
++    if (in != NULL)
++        fclose(in);
++    return ret;
+ }
+ 
+ int RAND_write_file(const char *file)
+@@ -192,9 +190,15 @@ int RAND_write_file(const char *file)
+ #ifndef OPENSSL_NO_POSIX_IO
+     struct stat sb;
+ 
++# if defined(S_ISBLK) && defined(S_ISCHR)
++# ifdef _WIN32
++    /*
++     * Check for |file| being a driver as "ASCII-safe" on Windows,
++     * because driver paths are always ASCII.
++     */
++# endif
+     i = stat(file, &sb);
+     if (i != -1) {
+-# if defined(S_ISBLK) && defined(S_ISCHR)
+         if (S_ISBLK(sb.st_mode) || S_ISCHR(sb.st_mode)) {
+             /*
+              * this file is a device. we don't write back to it. we
+@@ -202,13 +206,14 @@ int RAND_write_file(const char *file)
+              * device. Otherwise attempting to write to and chmod the device
+              * causes problems.
+              */
+-            return (1);
++            return 1;
+         }
+ # endif
+     }
+ #endif
+ 
+-#if defined(O_CREAT) && !defined(OPENSSL_NO_POSIX_IO) && !defined(OPENSSL_SYS_VMS)
++#if defined(O_CREAT) && !defined(OPENSSL_NO_POSIX_IO) && \
++    !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS)
+     {
+ # ifndef O_BINARY
+ #  define O_BINARY 0
+@@ -242,14 +247,11 @@ int RAND_write_file(const char *file)
       * rand file in a concurrent use situation.
       */
  
@@ -73500,17 +80369,114 @@
 -    if (out == NULL)
 -        out = vms_fopen(file, "wb", VMS_OPEN_ATTRS);
 -#else
-+    out = fopen(file, "rb+");
-+#endif
+-    if (out == NULL)
+-        out = fopen(file, "wb");
++    out = openssl_fopen(file, "rb+");
+ #endif
      if (out == NULL)
-         out = fopen(file, "wb");
--#endif
-     if (out == NULL)
++        out = openssl_fopen(file, "wb");
++    if (out == NULL)
          goto err;
  
+ #if !defined(NO_CHMOD) && !defined(OPENSSL_NO_POSIX_IO)
+@@ -280,31 +282,68 @@ int RAND_write_file(const char *file)
+ const char *RAND_file_name(char *buf, size_t size)
+ {
+     char *s = NULL;
++    int use_randfile = 1;
+ #ifdef __OpenBSD__
+     struct stat sb;
+ #endif
+ 
+-    if (OPENSSL_issetugid() == 0)
++#if defined(_WIN32) && defined(CP_UTF8)
++    DWORD len;
++    WCHAR *var, *val;
++
++    if ((var = L"RANDFILE",
++         len = GetEnvironmentVariableW(var, NULL, 0)) == 0
++        && (var = L"HOME", use_randfile = 0,
++            len = GetEnvironmentVariableW(var, NULL, 0)) == 0
++        && (var = L"USERPROFILE",
++            len = GetEnvironmentVariableW(var, NULL, 0)) == 0) {
++        var = L"SYSTEMROOT",
++        len = GetEnvironmentVariableW(var, NULL, 0);
++    }
++
++    if (len != 0) {
++        int sz;
++
++        val = _alloca(len * sizeof(WCHAR));
++
++        if (GetEnvironmentVariableW(var, val, len) < len
++            && (sz = WideCharToMultiByte(CP_UTF8, 0, val, -1, NULL, 0,
++                                         NULL, NULL)) != 0) {
++            s = _alloca(sz);
++            if (WideCharToMultiByte(CP_UTF8, 0, val, -1, s, sz,
++                                    NULL, NULL) == 0)
++                s = NULL;
++        }
++    }
++#else
++    if (OPENSSL_issetugid() == 0) {
+         s = getenv("RANDFILE");
+-    if (s != NULL && *s && strlen(s) + 1 < size) {
+-        if (OPENSSL_strlcpy(buf, s, size) >= size)
+-            return NULL;
+     } else {
++        use_randfile = 0;
+         if (OPENSSL_issetugid() == 0)
+             s = getenv("HOME");
++    }
++#endif
+ #ifdef DEFAULT_HOME
+-        if (s == NULL) {
+-            s = DEFAULT_HOME;
+-        }
++    if (!use_randfile && s == NULL) {
++        s = DEFAULT_HOME;
++    }
+ #endif
+-        if (s && *s && strlen(s) + strlen(RFILE) + 2 < size) {
++    if (s != NULL && *s) {
++        size_t len = strlen(s);
++
++        if (use_randfile && len + 1 < size) {
++            if (OPENSSL_strlcpy(buf, s, size) >= size)
++                return NULL;
++        } else if (len + strlen(RFILE) + 2 < size) {
+             OPENSSL_strlcpy(buf, s, size);
+ #ifndef OPENSSL_SYS_VMS
+             OPENSSL_strlcat(buf, "/", size);
+ #endif
+             OPENSSL_strlcat(buf, RFILE, size);
+-        } else
+-            buf[0] = '\0';      /* no file name */
++        }
++    } else {
++        buf[0] = '\0';      /* no file name */
+     }
+ 
+ #ifdef __OpenBSD__
+@@ -318,12 +357,12 @@ const char *RAND_file_name(char *buf, size_t size)
+ 
+     if (!buf[0])
+         if (OPENSSL_strlcpy(buf, "/dev/arandom", size) >= size) {
+-            return (NULL);
++            return NULL;
+         }
+     if (stat(buf, &sb) == -1)
+         if (OPENSSL_strlcpy(buf, "/dev/arandom", size) >= size) {
+-            return (NULL);
++            return NULL;
+         }
+ #endif
+-    return (buf);
++    return buf;
+ }
 diff --git a/crypto/rc2/Makefile.in b/crypto/rc2/Makefile.in
 deleted file mode 100644
-index 1a09360c38d4..000000000000
+index 1a09360..0000000
 --- a/crypto/rc2/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -73558,7 +80524,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/rc2/rc2_cbc.c b/crypto/rc2/rc2_cbc.c
-index b574c96c124a..2b59353b1154 100644
+index b574c96..2b59353 100644
 --- a/crypto/rc2/rc2_cbc.c
 +++ b/crypto/rc2/rc2_cbc.c
 @@ -1,58 +1,10 @@
@@ -73627,7 +80593,7 @@
  
  #include <openssl/rc2.h>
 diff --git a/crypto/rc2/rc2_ecb.c b/crypto/rc2/rc2_ecb.c
-index 047c0fc04da1..b87931f2a6c4 100644
+index 047c0fc..b87931f 100644
 --- a/crypto/rc2/rc2_ecb.c
 +++ b/crypto/rc2/rc2_ecb.c
 @@ -1,58 +1,10 @@
@@ -73696,7 +80662,7 @@
  
  #include <openssl/rc2.h>
 diff --git a/crypto/rc2/rc2_locl.h b/crypto/rc2/rc2_locl.h
-index ba1880c52fe2..a9a57d6126c5 100644
+index ba1880c..a9a57d6 100644
 --- a/crypto/rc2/rc2_locl.h
 +++ b/crypto/rc2/rc2_locl.h
 @@ -1,58 +1,10 @@
@@ -73765,15 +80731,13 @@
  
  #undef c2l
 diff --git a/crypto/rc2/rc2_skey.c b/crypto/rc2/rc2_skey.c
-index 52a371030dc9..55d8ba37155c 100644
+index 52a3710..55d8ba3 100644
 --- a/crypto/rc2/rc2_skey.c
 +++ b/crypto/rc2/rc2_skey.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -73821,7 +80785,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -73834,15 +80800,13 @@
  
  #include <openssl/rc2.h>
 diff --git a/crypto/rc2/rc2cfb64.c b/crypto/rc2/rc2cfb64.c
-index bb3df006558e..e11093db9e21 100644
+index bb3df00..e11093d 100644
 --- a/crypto/rc2/rc2cfb64.c
 +++ b/crypto/rc2/rc2cfb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -73890,7 +80854,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -73903,15 +80869,13 @@
  
  #include <openssl/rc2.h>
 diff --git a/crypto/rc2/rc2ofb64.c b/crypto/rc2/rc2ofb64.c
-index aec7ba303a58..d610278a9bdc 100644
+index aec7ba3..d610278 100644
 --- a/crypto/rc2/rc2ofb64.c
 +++ b/crypto/rc2/rc2ofb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -73959,7 +80923,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -73973,7 +80939,7 @@
  #include <openssl/rc2.h>
 diff --git a/crypto/rc2/rrc2.doc b/crypto/rc2/rrc2.doc
 deleted file mode 100644
-index f93ee003d2f8..000000000000
+index f93ee00..0000000
 --- a/crypto/rc2/rrc2.doc
 +++ /dev/null
 @@ -1,219 +0,0 @@
@@ -74197,7 +81163,7 @@
 -
 -
 diff --git a/crypto/rc2/tab.c b/crypto/rc2/tab.c
-index 0534e37506c8..bc95dc4040f1 100644
+index 0534e37..bc95dc4 100644
 --- a/crypto/rc2/tab.c
 +++ b/crypto/rc2/tab.c
 @@ -1,3 +1,12 @@
@@ -74215,7 +81181,7 @@
  unsigned char ebits_to_num[256] = {
 diff --git a/crypto/rc2/version b/crypto/rc2/version
 deleted file mode 100644
-index 9db89544d8fa..000000000000
+index 9db8954..0000000
 --- a/crypto/rc2/version
 +++ /dev/null
 @@ -1,22 +0,0 @@
@@ -74243,7 +81209,7 @@
 -
 diff --git a/crypto/rc4/Makefile.in b/crypto/rc4/Makefile.in
 deleted file mode 100644
-index 816ec2fb83d1..000000000000
+index 816ec2f..0000000
 --- a/crypto/rc4/Makefile.in
 +++ /dev/null
 @@ -1,71 +0,0 @@
@@ -74319,7 +81285,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/rc4/asm/rc4-586.pl b/crypto/rc4/asm/rc4-586.pl
-index a517adb735fd..936177778d45 100644
+index a517adb..9361777 100644
 --- a/crypto/rc4/asm/rc4-586.pl
 +++ b/crypto/rc4/asm/rc4-586.pl
 @@ -1,4 +1,11 @@
@@ -74336,7 +81302,7 @@
  # ====================================================================
  # [Re]written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/rc4/asm/rc4-c64xplus.pl b/crypto/rc4/asm/rc4-c64xplus.pl
-index 6e5fe0549d87..daed75c750c2 100644
+index 6e5fe05..daed75c 100644
 --- a/crypto/rc4/asm/rc4-c64xplus.pl
 +++ b/crypto/rc4/asm/rc4-c64xplus.pl
 @@ -1,4 +1,11 @@
@@ -74353,7 +81319,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/rc4/asm/rc4-ia64.pl b/crypto/rc4/asm/rc4-ia64.pl
-index b83e53a60501..5e8f5f55b240 100644
+index b83e53a..5e8f5f5 100644
 --- a/crypto/rc4/asm/rc4-ia64.pl
 +++ b/crypto/rc4/asm/rc4-ia64.pl
 @@ -1,4 +1,11 @@
@@ -74370,7 +81336,7 @@
  # ====================================================================
  # Written by David Mosberger <David.Mosberger at acm.org> based on the
 diff --git a/crypto/rc4/asm/rc4-md5-x86_64.pl b/crypto/rc4/asm/rc4-md5-x86_64.pl
-index a92fe92269fd..890161bac52d 100644
+index a92fe92..890161b 100644
 --- a/crypto/rc4/asm/rc4-md5-x86_64.pl
 +++ b/crypto/rc4/asm/rc4-md5-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -74396,7 +81362,7 @@
  
  my ($dat,$in0,$out,$ctx,$inp,$len, $func,$nargs);
 diff --git a/crypto/rc4/asm/rc4-parisc.pl b/crypto/rc4/asm/rc4-parisc.pl
-index bc366ecb60fb..006b6b01af7d 100644
+index bc366ec..006b6b0 100644
 --- a/crypto/rc4/asm/rc4-parisc.pl
 +++ b/crypto/rc4/asm/rc4-parisc.pl
 @@ -1,4 +1,11 @@
@@ -74413,7 +81379,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/rc4/asm/rc4-s390x.pl b/crypto/rc4/asm/rc4-s390x.pl
-index fa6a23e1daf9..5589503aa244 100644
+index fa6a23e..5589503 100644
 --- a/crypto/rc4/asm/rc4-s390x.pl
 +++ b/crypto/rc4/asm/rc4-s390x.pl
 @@ -1,4 +1,11 @@
@@ -74430,7 +81396,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/rc4/asm/rc4-x86_64.pl b/crypto/rc4/asm/rc4-x86_64.pl
-index 46751064ea0f..5ae0c6dd4990 100755
+index 4675106..5ae0c6d 100755
 --- a/crypto/rc4/asm/rc4-x86_64.pl
 +++ b/crypto/rc4/asm/rc4-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -74456,7 +81422,7 @@
  
  $dat="%rdi";	    # arg1
 diff --git a/crypto/rc4/rc4_enc.c b/crypto/rc4/rc4_enc.c
-index e7397b43c772..be11bade7bc0 100644
+index e7397b4..be11bad 100644
 --- a/crypto/rc4/rc4_enc.c
 +++ b/crypto/rc4/rc4_enc.c
 @@ -1,58 +1,10 @@
@@ -74525,7 +81491,7 @@
  
  #include <openssl/rc4.h>
 diff --git a/crypto/rc4/rc4_locl.h b/crypto/rc4/rc4_locl.h
-index 3ab25705ccd3..4380addbccb2 100644
+index 3ab2570..4380add 100644
 --- a/crypto/rc4/rc4_locl.h
 +++ b/crypto/rc4/rc4_locl.h
 @@ -1,3 +1,12 @@
@@ -74542,7 +81508,7 @@
  # define HEADER_RC4_LOCL_H
  
 diff --git a/crypto/rc4/rc4_skey.c b/crypto/rc4/rc4_skey.c
-index 9931a61008b0..16f81a4d3e92 100644
+index 9931a61..16f81a4 100644
 --- a/crypto/rc4/rc4_skey.c
 +++ b/crypto/rc4/rc4_skey.c
 @@ -1,58 +1,10 @@
@@ -74612,7 +81578,7 @@
  #include <openssl/rc4.h>
 diff --git a/crypto/rc5/Makefile.in b/crypto/rc5/Makefile.in
 deleted file mode 100644
-index 554d0eff8b41..000000000000
+index 554d0ef..0000000
 --- a/crypto/rc5/Makefile.in
 +++ /dev/null
 @@ -1,51 +0,0 @@
@@ -74668,7 +81634,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/rc5/asm/rc5-586.pl b/crypto/rc5/asm/rc5-586.pl
-index a0d85f2ba953..e3e1c6424295 100644
+index a0d85f2..e3e1c64 100644
 --- a/crypto/rc5/asm/rc5-586.pl
 +++ b/crypto/rc5/asm/rc5-586.pl
 @@ -1,4 +1,11 @@
@@ -74685,7 +81651,7 @@
  $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
  push(@INC,"${dir}","${dir}../../perlasm");
 diff --git a/crypto/rc5/rc5_ecb.c b/crypto/rc5/rc5_ecb.c
-index b762b1e36727..c32f38e473e8 100644
+index b762b1e..c32f38e 100644
 --- a/crypto/rc5/rc5_ecb.c
 +++ b/crypto/rc5/rc5_ecb.c
 @@ -1,58 +1,10 @@
@@ -74754,7 +81720,7 @@
  
  #include <openssl/rc5.h>
 diff --git a/crypto/rc5/rc5_enc.c b/crypto/rc5/rc5_enc.c
-index 8bcbad9c5efc..58631dee20d2 100644
+index 8bcbad9..58631de 100644
 --- a/crypto/rc5/rc5_enc.c
 +++ b/crypto/rc5/rc5_enc.c
 @@ -1,58 +1,10 @@
@@ -74823,7 +81789,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/rc5/rc5_locl.h b/crypto/rc5/rc5_locl.h
-index 6b34f923a662..33a709b4537e 100644
+index 6b34f92..33a709b 100644
 --- a/crypto/rc5/rc5_locl.h
 +++ b/crypto/rc5/rc5_locl.h
 @@ -1,58 +1,10 @@
@@ -74892,7 +81858,7 @@
  
  #include <stdlib.h>
 diff --git a/crypto/rc5/rc5_skey.c b/crypto/rc5/rc5_skey.c
-index bfbb419e09b3..943a7849bb89 100644
+index bfbb419..943a784 100644
 --- a/crypto/rc5/rc5_skey.c
 +++ b/crypto/rc5/rc5_skey.c
 @@ -1,58 +1,10 @@
@@ -74961,15 +81927,13 @@
  
  #include <openssl/rc5.h>
 diff --git a/crypto/rc5/rc5cfb64.c b/crypto/rc5/rc5cfb64.c
-index 70d8d23661d7..9a8aa6b244c9 100644
+index 70d8d23..9a8aa6b 100644
 --- a/crypto/rc5/rc5cfb64.c
 +++ b/crypto/rc5/rc5cfb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -75017,7 +81981,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -75030,15 +81996,13 @@
  
  #include <openssl/rc5.h>
 diff --git a/crypto/rc5/rc5ofb64.c b/crypto/rc5/rc5ofb64.c
-index 81c2005dcbd8..3a41d773cb6e 100644
+index 81c2005..3a41d77 100644
 --- a/crypto/rc5/rc5ofb64.c
 +++ b/crypto/rc5/rc5ofb64.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -75086,7 +82050,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -75100,7 +82066,7 @@
  #include <openssl/rc5.h>
 diff --git a/crypto/rc5/rc5s.cpp b/crypto/rc5/rc5s.cpp
 deleted file mode 100644
-index 1c5518bc8045..000000000000
+index 1c5518b..0000000
 --- a/crypto/rc5/rc5s.cpp
 +++ /dev/null
 @@ -1,70 +0,0 @@
@@ -75176,7 +82142,7 @@
 -
 diff --git a/crypto/ripemd/Makefile.in b/crypto/ripemd/Makefile.in
 deleted file mode 100644
-index 4a870499b9fe..000000000000
+index 4a87049..0000000
 --- a/crypto/ripemd/Makefile.in
 +++ /dev/null
 @@ -1,51 +0,0 @@
@@ -75232,7 +82198,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/ripemd/asm/rmd-586.pl b/crypto/ripemd/asm/rmd-586.pl
-index fd32a73606e5..544c496f0783 100644
+index fd32a73..544c496 100644
 --- a/crypto/ripemd/asm/rmd-586.pl
 +++ b/crypto/ripemd/asm/rmd-586.pl
 @@ -1,4 +1,11 @@
@@ -75249,7 +82215,7 @@
  # Normal is the
  # ripemd160_block_asm_data_order(RIPEMD160_CTX *c, ULONG *X,int blocks);
 diff --git a/crypto/ripemd/rmd_dgst.c b/crypto/ripemd/rmd_dgst.c
-index fc50d5c8b3e8..a1670c7fbd83 100644
+index fc50d5c..a1670c7 100644
 --- a/crypto/ripemd/rmd_dgst.c
 +++ b/crypto/ripemd/rmd_dgst.c
 @@ -1,58 +1,10 @@
@@ -75318,15 +82284,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/ripemd/rmd_locl.h b/crypto/ripemd/rmd_locl.h
-index c08178c0eb0f..9c5ba15130e6 100644
+index c08178c..9c5ba15 100644
 --- a/crypto/ripemd/rmd_locl.h
 +++ b/crypto/ripemd/rmd_locl.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -75374,7 +82338,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -75396,7 +82362,7 @@
  # endif
  #endif
 diff --git a/crypto/ripemd/rmd_one.c b/crypto/ripemd/rmd_one.c
-index 31f052c786ae..c3193bd72380 100644
+index 31f052c..c3193bd 100644
 --- a/crypto/ripemd/rmd_one.c
 +++ b/crypto/ripemd/rmd_one.c
 @@ -1,58 +1,10 @@
@@ -75465,7 +82431,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/ripemd/rmdconst.h b/crypto/ripemd/rmdconst.h
-index f8d8723b1073..b81013239bbe 100644
+index f8d8723..b810132 100644
 --- a/crypto/ripemd/rmdconst.h
 +++ b/crypto/ripemd/rmdconst.h
 @@ -1,59 +1,12 @@
@@ -75537,7 +82503,7 @@
  #define KL2 0x6ED9EBA1L
 diff --git a/crypto/rsa/Makefile.in b/crypto/rsa/Makefile.in
 deleted file mode 100644
-index 199d887bdfc1..000000000000
+index 199d887..0000000
 --- a/crypto/rsa/Makefile.in
 +++ /dev/null
 @@ -1,49 +0,0 @@
@@ -75591,7 +82557,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/rsa/rsa_ameth.c b/crypto/rsa/rsa_ameth.c
-index 4ff2665d60f9..d55cf330b9a2 100644
+index 4ff2665..d55cf33 100644
 --- a/crypto/rsa/rsa_ameth.c
 +++ b/crypto/rsa/rsa_ameth.c
 @@ -1,59 +1,10 @@
@@ -75682,7 +82648,7 @@
       EVP_PKEY_RSA,
       EVP_PKEY_RSA,
 diff --git a/crypto/rsa/rsa_asn1.c b/crypto/rsa/rsa_asn1.c
-index da8b2406dd4b..20f8ebfa8a5a 100644
+index da8b240..20f8ebf 100644
 --- a/crypto/rsa/rsa_asn1.c
 +++ b/crypto/rsa/rsa_asn1.c
 @@ -1,59 +1,10 @@
@@ -75751,7 +82717,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/rsa/rsa_chk.c b/crypto/rsa/rsa_chk.c
-index f78050876c77..0adf169aee59 100644
+index f780508..0adf169 100644
 --- a/crypto/rsa/rsa_chk.c
 +++ b/crypto/rsa/rsa_chk.c
 @@ -1,50 +1,10 @@
@@ -75812,7 +82778,7 @@
  
  #include <openssl/bn.h>
 diff --git a/crypto/rsa/rsa_crpt.c b/crypto/rsa/rsa_crpt.c
-index 6cc3c70ec3ef..9cd733b2c338 100644
+index 6cc3c70..9cd733b 100644
 --- a/crypto/rsa/rsa_crpt.c
 +++ b/crypto/rsa/rsa_crpt.c
 @@ -1,58 +1,10 @@
@@ -75913,7 +82879,7 @@
      if (ret == NULL) {
          RSAerr(RSA_F_RSA_SETUP_BLINDING, ERR_R_BN_LIB);
 diff --git a/crypto/rsa/rsa_depr.c b/crypto/rsa/rsa_depr.c
-index 18e406594a76..21e0562525d0 100644
+index 18e4065..21e0562 100644
 --- a/crypto/rsa/rsa_depr.c
 +++ b/crypto/rsa/rsa_depr.c
 @@ -1,55 +1,10 @@
@@ -75979,7 +82945,7 @@
  
  /*
 diff --git a/crypto/rsa/rsa_err.c b/crypto/rsa/rsa_err.c
-index 811fcfe85995..a92ea5d026d1 100644
+index 811fcfe..a92ea5d 100644
 --- a/crypto/rsa/rsa_err.c
 +++ b/crypto/rsa/rsa_err.c
 @@ -1,61 +1,11 @@
@@ -76151,15 +83117,13 @@
       "unsupported encryption type"},
      {ERR_REASON(RSA_R_UNSUPPORTED_LABEL_SOURCE), "unsupported label source"},
 diff --git a/crypto/rsa/rsa_gen.c b/crypto/rsa/rsa_gen.c
-index c4562589e10c..5c6b6192e6ac 100644
+index c456258..5c6b619 100644
 --- a/crypto/rsa/rsa_gen.c
 +++ b/crypto/rsa/rsa_gen.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -76207,7 +83171,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -76309,7 +83275,7 @@
  
      ok = 1;
 diff --git a/crypto/rsa/rsa_lib.c b/crypto/rsa/rsa_lib.c
-index 7ee575d66397..4f93cbcc4301 100644
+index 7ee575d..9ba86d8 100644
 --- a/crypto/rsa/rsa_lib.c
 +++ b/crypto/rsa/rsa_lib.c
 @@ -1,58 +1,10 @@
@@ -76377,8 +83343,16 @@
   */
  
  #include <stdio.h>
-@@ -118,21 +70,28 @@ int RSA_set_method(RSA *rsa, const RSA_METHOD *meth)
+@@ -60,7 +12,6 @@
+ #include "internal/cryptlib.h"
+ #include <openssl/lhash.h>
+ #include "internal/bn_int.h"
+-#include <openssl/rand.h>
+ #include <openssl/engine.h>
+ #include "rsa_locl.h"
  
+@@ -118,21 +69,28 @@ int RSA_set_method(RSA *rsa, const RSA_METHOD *meth)
+ 
  RSA *RSA_new_method(ENGINE *engine)
  {
 -    RSA *ret;
@@ -76410,7 +83384,7 @@
          }
          ret->engine = engine;
      } else
-@@ -141,39 +100,26 @@ RSA *RSA_new_method(ENGINE *engine)
+@@ -141,39 +99,26 @@ RSA *RSA_new_method(ENGINE *engine)
          ret->meth = ENGINE_get_RSA(ret->engine);
          if (ret->meth == NULL) {
              RSAerr(RSA_F_RSA_NEW_METHOD, ERR_R_ENGINE_LIB);
@@ -76458,21 +83432,18 @@
  }
  
  void RSA_free(RSA *r)
-@@ -286,44 +232,79 @@ int RSA_security_bits(const RSA *rsa)
+@@ -286,49 +231,79 @@ int RSA_security_bits(const RSA *rsa)
  
  int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
  {
 -    /* d is the private component and may be NULL */
 -    if (n == NULL || e == NULL)
-+    /* If the fields in r are NULL, the corresponding input
++    /* If the fields n and e in r are NULL, the corresponding input
 +     * parameters MUST be non-NULL for n and e.  d may be
 +     * left NULL (in case only the public key is used).
-+     *
-+     * It is an error to give the results from get0 on r
-+     * as input parameters.
 +     */
-+    if (n == r->n || e == r->e
-+        || (r->d != NULL && d == r->d))
++    if ((r->n == NULL && n == NULL)
++        || (r->e == NULL && e == NULL))
          return 0;
  
 -    BN_free(r->n);
@@ -76500,13 +83471,11 @@
  int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q)
  {
 -    if (p == NULL || q == NULL)
-+    /* If the fields in r are NULL, the corresponding input
++    /* If the fields p and q in r are NULL, the corresponding input
 +     * parameters MUST be non-NULL.
-+     *
-+     * It is an error to give the results from get0 on r
-+     * as input parameters.
 +     */
-+    if (p == r->p || q == r->q)
++    if ((r->p == NULL && p == NULL)
++        || (r->q == NULL && q == NULL))
          return 0;
  
 -    BN_free(r->p);
@@ -76528,13 +83497,12 @@
  int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
  {
 -    if (dmp1 == NULL || dmq1 == NULL || iqmp == NULL)
-+    /* If the fields in r are NULL, the corresponding input
++    /* If the fields dmp1, dmq1 and iqmp in r are NULL, the corresponding input
 +     * parameters MUST be non-NULL.
-+     *
-+     * It is an error to give the results from get0 on r
-+     * as input parameters.
 +     */
-+    if (dmp1 == r->dmp1 || dmq1 == r->dmq1 || iqmp == r->iqmp)
++    if ((r->dmp1 == NULL && dmp1 == NULL)
++        || (r->dmq1 == NULL && dmq1 == NULL)
++        || (r->iqmp == NULL && iqmp == NULL))
          return 0;
  
 -    BN_free(r->dmp1);
@@ -76558,8 +83526,34 @@
  
      return 1;
  }
+ 
+-void RSA_get0_key(const RSA *r, BIGNUM **n, BIGNUM **e, BIGNUM **d)
++void RSA_get0_key(const RSA *r,
++                  const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
+ {
+     if (n != NULL)
+         *n = r->n;
+@@ -338,7 +313,7 @@ void RSA_get0_key(const RSA *r, BIGNUM **n, BIGNUM **e, BIGNUM **d)
+         *d = r->d;
+ }
+ 
+-void RSA_get0_factors(const RSA *r, BIGNUM **p, BIGNUM **q)
++void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
+ {
+     if (p != NULL)
+         *p = r->p;
+@@ -347,7 +322,8 @@ void RSA_get0_factors(const RSA *r, BIGNUM **p, BIGNUM **q)
+ }
+ 
+ void RSA_get0_crt_params(const RSA *r,
+-                         BIGNUM **dmp1, BIGNUM **dmq1, BIGNUM **iqmp)
++                         const BIGNUM **dmp1, const BIGNUM **dmq1,
++                         const BIGNUM **iqmp)
+ {
+     if (dmp1 != NULL)
+         *dmp1 = r->dmp1;
 diff --git a/crypto/rsa/rsa_locl.h b/crypto/rsa/rsa_locl.h
-index 598fcb746bbe..5d16aa6f4372 100644
+index 598fcb7..5d16aa6 100644
 --- a/crypto/rsa/rsa_locl.h
 +++ b/crypto/rsa/rsa_locl.h
 @@ -1,11 +1,10 @@
@@ -76578,7 +83572,7 @@
  
  #include <openssl/rsa.h>
 diff --git a/crypto/rsa/rsa_meth.c b/crypto/rsa/rsa_meth.c
-index 6c7679dc1a9b..ef0dc9751f24 100644
+index 6c7679d..ef0dc97 100644
 --- a/crypto/rsa/rsa_meth.c
 +++ b/crypto/rsa/rsa_meth.c
 @@ -1,15 +1,15 @@
@@ -76639,29 +83633,28 @@
  
  int RSA_meth_set1_name(RSA_METHOD *meth, const char *name)
  {
--    OPENSSL_free(meth->name);
--    meth->name = OPENSSL_strdup(name);
 +    char *tmpname;
- 
--    return meth->name != NULL;
++
 +    tmpname = OPENSSL_strdup(name);
 +    if (tmpname == NULL) {
 +        RSAerr(RSA_F_RSA_METH_SET1_NAME, ERR_R_MALLOC_FAILURE);
 +        return 0;
 +    }
 +
-+    OPENSSL_free(meth->name);
+     OPENSSL_free(meth->name);
+-    meth->name = OPENSSL_strdup(name);
 +    meth->name = tmpname;
-+
+ 
+-    return meth->name != NULL;
 +    return 1;
  }
  
  int RSA_meth_get_flags(RSA_METHOD *meth)
 diff --git a/crypto/rsa/rsa_none.c b/crypto/rsa/rsa_none.c
-index c426bd33918b..006d3bd617ae 100644
+index c426bd3..b78756d 100644
 --- a/crypto/rsa/rsa_none.c
 +++ b/crypto/rsa/rsa_none.c
-@@ -1,58 +1,10 @@
+@@ -1,64 +1,15 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 +/*
@@ -76726,11 +83719,17 @@
   */
  
  #include "internal/cryptlib.h"
+ #include <openssl/bn.h>
+ #include <openssl/rsa.h>
+-#include <openssl/rand.h>
+ 
+ int RSA_padding_add_none(unsigned char *to, int tlen,
+                          const unsigned char *from, int flen)
 diff --git a/crypto/rsa/rsa_null.c b/crypto/rsa/rsa_null.c
-index 9f739f745def..7f15955aa45a 100644
+index 9f739f7..d339494 100644
 --- a/crypto/rsa/rsa_null.c
 +++ b/crypto/rsa/rsa_null.c
-@@ -1,59 +1,10 @@
+@@ -1,65 +1,15 @@
  /*
 - * Written by Dr Stephen N Henson (steve at openssl.org) for the OpenSSL project
 - * 1999.
@@ -76795,8 +83794,14 @@
   */
  
  #include <stdio.h>
+ #include "internal/cryptlib.h"
+ #include <openssl/bn.h>
+-#include <openssl/rand.h>
+ #include "rsa_locl.h"
+ 
+ /*
 diff --git a/crypto/rsa/rsa_oaep.c b/crypto/rsa/rsa_oaep.c
-index 27a6e78823fe..c459b91ed233 100644
+index 27a6e78..c459b91 100644
 --- a/crypto/rsa/rsa_oaep.c
 +++ b/crypto/rsa/rsa_oaep.c
 @@ -1,6 +1,10 @@
@@ -76813,10 +83818,10 @@
  
  /* EME-OAEP as defined in RFC 2437 (PKCS #1 v2.0) */
 diff --git a/crypto/rsa/rsa_ossl.c b/crypto/rsa/rsa_ossl.c
-index 5c3c0bf95ecc..d8af92dc6ce1 100644
+index 5c3c0bf..7826066 100644
 --- a/crypto/rsa/rsa_ossl.c
 +++ b/crypto/rsa/rsa_ossl.c
-@@ -1,111 +1,10 @@
+@@ -1,116 +1,14 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 - *
@@ -76934,7 +83939,12 @@
   */
  
  #include "internal/cryptlib.h"
-@@ -401,33 +300,27 @@ static int rsa_ossl_private_encrypt(int flen, const unsigned char *from,
+ #include "internal/bn_int.h"
+-#include <openssl/rand.h>
+ #include "rsa_locl.h"
+ 
+ #ifndef RSA_NULL
+@@ -401,33 +299,27 @@ static int rsa_ossl_private_encrypt(int flen, const unsigned char *from,
          if (!rsa->meth->rsa_mod_exp(ret, f, rsa, ctx))
              goto err;
      } else {
@@ -76977,7 +83987,7 @@
      }
  
      if (blinding)
-@@ -535,32 +428,26 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
+@@ -535,32 +427,26 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
          if (!rsa->meth->rsa_mod_exp(ret, f, rsa, ctx))
              goto err;
      } else {
@@ -77019,7 +84029,7 @@
      }
  
      if (blinding)
-@@ -709,46 +596,35 @@ static int rsa_ossl_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
+@@ -709,46 +595,35 @@ static int rsa_ossl_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
      vrfy = BN_CTX_get(ctx);
  
      {
@@ -77079,7 +84089,7 @@
      }
  
      if (rsa->flags & RSA_FLAG_CACHE_PUBLIC)
-@@ -758,72 +634,58 @@ static int rsa_ossl_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
+@@ -758,72 +633,58 @@ static int rsa_ossl_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
  
      /* compute I mod q */
      {
@@ -77117,27 +84127,24 @@
 -                BN_with_flags(dmq1, rsa->dmq1, BN_FLG_CONSTTIME);
 -            } else {
 -                dmq1 = rsa->dmq1;
--            }
--            if (!rsa->meth->bn_mod_exp(m1, r1, dmq1, rsa->q, ctx,
--                rsa->_method_mod_q)) {
--                BN_free(local_c);
--                BN_free(local_dmq1);
 +            BIGNUM *dmq1 = BN_new();
 +            if (dmq1 == NULL) {
 +                BN_free(c);
-                 goto err;
++                goto err;
              }
--            /* We MUST free local_dmq1 before any further use of rsa->dmq1 */
--            BN_free(local_dmq1);
 +            BN_with_flags(dmq1, rsa->dmq1, BN_FLG_CONSTTIME);
 +
 +            /* compute r1^dmq1 mod q */
-+            if (!rsa->meth->bn_mod_exp(m1, r1, dmq1, rsa->q, ctx,
-+                rsa->_method_mod_q)) {
+             if (!rsa->meth->bn_mod_exp(m1, r1, dmq1, rsa->q, ctx,
+                 rsa->_method_mod_q)) {
+-                BN_free(local_c);
+-                BN_free(local_dmq1);
 +                BN_free(c);
 +                BN_free(dmq1);
-+                goto err;
-+            }
+                 goto err;
+             }
+-            /* We MUST free local_dmq1 before any further use of rsa->dmq1 */
+-            BN_free(local_dmq1);
 +            /* We MUST free dmq1 before any further use of rsa->dmq1 */
 +            BN_free(dmq1);
          }
@@ -77183,7 +84190,7 @@
      }
  
      if (!BN_sub(r0, r0, m1))
-@@ -840,22 +702,17 @@ static int rsa_ossl_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
+@@ -840,22 +701,17 @@ static int rsa_ossl_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
          goto err;
  
      {
@@ -77214,7 +84221,7 @@
      }
  
      /*
-@@ -897,24 +754,18 @@ static int rsa_ossl_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
+@@ -897,24 +753,18 @@ static int rsa_ossl_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
               * return that instead.
               */
  
@@ -77247,7 +84254,7 @@
      }
      ret = 1;
 diff --git a/crypto/rsa/rsa_pk1.c b/crypto/rsa/rsa_pk1.c
-index 68d251bc0f4c..bac7c26a1738 100644
+index 68d251b..bac7c26 100644
 --- a/crypto/rsa/rsa_pk1.c
 +++ b/crypto/rsa/rsa_pk1.c
 @@ -1,58 +1,10 @@
@@ -77316,7 +84323,7 @@
  
  #include "internal/constant_time_locl.h"
 diff --git a/crypto/rsa/rsa_pmeth.c b/crypto/rsa/rsa_pmeth.c
-index b128d736f732..767c4e7247da 100644
+index b128d73..767c4e7 100644
 --- a/crypto/rsa/rsa_pmeth.c
 +++ b/crypto/rsa/rsa_pmeth.c
 @@ -1,59 +1,10 @@
@@ -77385,7 +84392,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/rsa/rsa_prn.c b/crypto/rsa/rsa_prn.c
-index f9e2572f8ce4..5e6c599e46d5 100644
+index f9e2572..5e6c599 100644
 --- a/crypto/rsa/rsa_prn.c
 +++ b/crypto/rsa/rsa_prn.c
 @@ -1,59 +1,10 @@
@@ -77454,7 +84461,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/rsa/rsa_pss.c b/crypto/rsa/rsa_pss.c
-index abd915d1d3e4..0ec63b2ec7e7 100644
+index abd915d..0ec63b2 100644
 --- a/crypto/rsa/rsa_pss.c
 +++ b/crypto/rsa/rsa_pss.c
 @@ -1,59 +1,10 @@
@@ -77523,7 +84530,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/rsa/rsa_saos.c b/crypto/rsa/rsa_saos.c
-index 18bf6c984c80..9e5fff450b84 100644
+index 18bf6c9..9e5fff4 100644
 --- a/crypto/rsa/rsa_saos.c
 +++ b/crypto/rsa/rsa_saos.c
 @@ -1,58 +1,10 @@
@@ -77592,15 +84599,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/rsa/rsa_sign.c b/crypto/rsa/rsa_sign.c
-index 439d699f789d..8946e19c1740 100644
+index 439d699..8946e19 100644
 --- a/crypto/rsa/rsa_sign.c
 +++ b/crypto/rsa/rsa_sign.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -77648,7 +84653,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -77661,7 +84668,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/rsa/rsa_ssl.c b/crypto/rsa/rsa_ssl.c
-index 2762ad0ce723..9ef6b80ea8ff 100644
+index 2762ad0..9ef6b80 100644
 --- a/crypto/rsa/rsa_ssl.c
 +++ b/crypto/rsa/rsa_ssl.c
 @@ -1,58 +1,10 @@
@@ -77730,10 +84737,10 @@
  
  #include <stdio.h>
 diff --git a/crypto/rsa/rsa_x931.c b/crypto/rsa/rsa_x931.c
-index d8837a16cbe8..428a1e725300 100644
+index d8837a1..b9301f3 100644
 --- a/crypto/rsa/rsa_x931.c
 +++ b/crypto/rsa/rsa_x931.c
-@@ -1,59 +1,10 @@
+@@ -1,66 +1,16 @@
  /*
 - * Written by Dr Stephen N Henson (steve at openssl.org) for the OpenSSL project
 - * 2005.
@@ -77798,8 +84805,15 @@
   */
  
  #include <stdio.h>
+ #include "internal/cryptlib.h"
+ #include <openssl/bn.h>
+ #include <openssl/rsa.h>
+-#include <openssl/rand.h>
+ #include <openssl/objects.h>
+ 
+ int RSA_padding_add_X931(unsigned char *to, int tlen,
 diff --git a/crypto/rsa/rsa_x931g.c b/crypto/rsa/rsa_x931g.c
-index 1e164e86e145..9dd993fbc0b6 100644
+index 1e164e8..9dd993f 100644
 --- a/crypto/rsa/rsa_x931g.c
 +++ b/crypto/rsa/rsa_x931g.c
 @@ -1,58 +1,10 @@
@@ -77868,7 +84882,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/s390xcap.c b/crypto/s390xcap.c
-index 47d6b6ff511c..675f2ecb9231 100644
+index 47d6b6f..675f2ec 100644
 --- a/crypto/s390xcap.c
 +++ b/crypto/s390xcap.c
 @@ -1,3 +1,12 @@
@@ -77885,7 +84899,7 @@
  #include <stdlib.h>
  #include <string.h>
 diff --git a/crypto/s390xcpuid.S b/crypto/s390xcpuid.S
-index 3402a2404bf1..8859e9e64a91 100644
+index 3402a24..8859e9e 100644
 --- a/crypto/s390xcpuid.S
 +++ b/crypto/s390xcpuid.S
 @@ -1,18 +1,56 @@
@@ -77950,7 +84964,7 @@
  	br	%r14
  .size	OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
  
-@@ -93,6 +131,33 @@
+@@ -93,6 +131,33 @@ OPENSSL_cleanse:
  	br	%r14
  .size	OPENSSL_cleanse,.-OPENSSL_cleanse
  
@@ -77984,7 +84998,7 @@
  .globl	OPENSSL_instrument_bus
  .type	OPENSSL_instrument_bus, at function
  .align	16
-@@ -112,4 +177,4 @@
+@@ -112,4 +177,4 @@ OPENSSL_instrument_bus2:
  .section	.init
  	brasl	%r14,OPENSSL_cpuid_setup
  
@@ -77992,7 +85006,7 @@
 +.comm	OPENSSL_s390xcap_P,80,8
 diff --git a/crypto/seed/Makefile.in b/crypto/seed/Makefile.in
 deleted file mode 100644
-index 2ae714d03240..000000000000
+index 2ae714d..0000000
 --- a/crypto/seed/Makefile.in
 +++ /dev/null
 @@ -1,44 +0,0 @@
@@ -78041,7 +85055,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/seed/seed.c b/crypto/seed/seed.c
-index 47ec9bc7c7c9..c1e928516280 100644
+index 47ec9bc..c1e9285 100644
 --- a/crypto/seed/seed.c
 +++ b/crypto/seed/seed.c
 @@ -1,4 +1,13 @@
@@ -78059,7 +85073,7 @@
   *
   * Redistribution and use in source and binary forms, with or without
 diff --git a/crypto/seed/seed_cbc.c b/crypto/seed/seed_cbc.c
-index 470116c5056c..c9a4fe217b9b 100644
+index 470116c..c9a4fe2 100644
 --- a/crypto/seed/seed_cbc.c
 +++ b/crypto/seed/seed_cbc.c
 @@ -1,51 +1,10 @@
@@ -78121,7 +85135,7 @@
  
  #include <openssl/seed.h>
 diff --git a/crypto/seed/seed_cfb.c b/crypto/seed/seed_cfb.c
-index 6c81a7451485..2aee1ffe39a6 100644
+index 6c81a74..2aee1ff 100644
 --- a/crypto/seed/seed_cfb.c
 +++ b/crypto/seed/seed_cfb.c
 @@ -1,107 +1,10 @@
@@ -78239,7 +85253,7 @@
  
  #include <openssl/seed.h>
 diff --git a/crypto/seed/seed_ecb.c b/crypto/seed/seed_ecb.c
-index 51d8f8464fc1..b6e301ccdaac 100644
+index 51d8f84..b6e301c 100644
 --- a/crypto/seed/seed_ecb.c
 +++ b/crypto/seed/seed_ecb.c
 @@ -1,51 +1,10 @@
@@ -78301,7 +85315,7 @@
  
  #include <openssl/seed.h>
 diff --git a/crypto/seed/seed_locl.h b/crypto/seed/seed_locl.h
-index 1c00d294b50b..d4a03fc4aa85 100644
+index 1c00d29..d4a03fc 100644
 --- a/crypto/seed/seed_locl.h
 +++ b/crypto/seed/seed_locl.h
 @@ -1,4 +1,13 @@
@@ -78319,7 +85333,7 @@
   *
   * Redistribution and use in source and binary forms, with or without
 diff --git a/crypto/seed/seed_ofb.c b/crypto/seed/seed_ofb.c
-index 873e6670c96b..b45554058501 100644
+index 873e667..b455540 100644
 --- a/crypto/seed/seed_ofb.c
 +++ b/crypto/seed/seed_ofb.c
 @@ -1,107 +1,10 @@
@@ -78438,7 +85452,7 @@
  #include <openssl/seed.h>
 diff --git a/crypto/sha/Makefile.in b/crypto/sha/Makefile.in
 deleted file mode 100644
-index 8f24feaf9720..000000000000
+index 8f24fea..0000000
 --- a/crypto/sha/Makefile.in
 +++ /dev/null
 @@ -1,106 +0,0 @@
@@ -78550,13 +85564,13 @@
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/sha/asm/README b/crypto/sha/asm/README
 deleted file mode 100644
-index b7e755765fcc..000000000000
+index b7e7557..0000000
 --- a/crypto/sha/asm/README
 +++ /dev/null
 @@ -1 +0,0 @@
 -C2.pl works
 diff --git a/crypto/sha/asm/sha1-586.pl b/crypto/sha/asm/sha1-586.pl
-index cd71d1ca6444..0efed70a3ed9 100644
+index cd71d1c..0efed70 100644
 --- a/crypto/sha/asm/sha1-586.pl
 +++ b/crypto/sha/asm/sha1-586.pl
 @@ -1,4 +1,11 @@
@@ -78573,7 +85587,7 @@
  # ====================================================================
  # [Re]written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-alpha.pl b/crypto/sha/asm/sha1-alpha.pl
-index 6c4b9251fd4e..4124958f7816 100644
+index 6c4b925..4124958 100644
 --- a/crypto/sha/asm/sha1-alpha.pl
 +++ b/crypto/sha/asm/sha1-alpha.pl
 @@ -1,4 +1,11 @@
@@ -78598,7 +85612,7 @@
  print $code;
  close STDOUT;
 diff --git a/crypto/sha/asm/sha1-armv4-large.pl b/crypto/sha/asm/sha1-armv4-large.pl
-index 6fd23031c9b7..7ff5bfbba6cb 100644
+index 6fd2303..7ff5bfb 100644
 --- a/crypto/sha/asm/sha1-armv4-large.pl
 +++ b/crypto/sha/asm/sha1-armv4-large.pl
 @@ -1,4 +1,11 @@
@@ -78615,7 +85629,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-armv8.pl b/crypto/sha/asm/sha1-armv8.pl
-index 5ef9dc2551af..39609a45bd45 100644
+index 5ef9dc2..39609a4 100644
 --- a/crypto/sha/asm/sha1-armv8.pl
 +++ b/crypto/sha/asm/sha1-armv8.pl
 @@ -1,4 +1,11 @@
@@ -78632,7 +85646,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-c64xplus.pl b/crypto/sha/asm/sha1-c64xplus.pl
-index ad8b17211f2a..4db2bcb06b31 100644
+index ad8b172..4db2bcb 100644
 --- a/crypto/sha/asm/sha1-c64xplus.pl
 +++ b/crypto/sha/asm/sha1-c64xplus.pl
 @@ -1,4 +1,11 @@
@@ -78649,7 +85663,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-ia64.pl b/crypto/sha/asm/sha1-ia64.pl
-index a9d2b7c71dca..dec21f92d582 100644
+index a9d2b7c..dec21f9 100644
 --- a/crypto/sha/asm/sha1-ia64.pl
 +++ b/crypto/sha/asm/sha1-ia64.pl
 @@ -1,4 +1,11 @@
@@ -78666,7 +85680,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-mb-x86_64.pl b/crypto/sha/asm/sha1-mb-x86_64.pl
-index 9de3f156d434..51c73c05ace7 100644
+index 9de3f15..51c73c0 100644
 --- a/crypto/sha/asm/sha1-mb-x86_64.pl
 +++ b/crypto/sha/asm/sha1-mb-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -78692,7 +85706,7 @@
  
  # void sha1_multi_block (
 diff --git a/crypto/sha/asm/sha1-mips.pl b/crypto/sha/asm/sha1-mips.pl
-index 26db5cdad8d8..882f9731cf0d 100644
+index 26db5cd..882f973 100644
 --- a/crypto/sha/asm/sha1-mips.pl
 +++ b/crypto/sha/asm/sha1-mips.pl
 @@ -1,4 +1,11 @@
@@ -78718,7 +85732,7 @@
  $code=<<___;
  #ifdef OPENSSL_FIPSCANISTER
 diff --git a/crypto/sha/asm/sha1-parisc.pl b/crypto/sha/asm/sha1-parisc.pl
-index 6e5a328a6f1f..a85d126ff060 100644
+index 6e5a328..a85d126 100644
 --- a/crypto/sha/asm/sha1-parisc.pl
 +++ b/crypto/sha/asm/sha1-parisc.pl
 @@ -1,4 +1,11 @@
@@ -78735,7 +85749,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-ppc.pl b/crypto/sha/asm/sha1-ppc.pl
-index ab655021ccd6..7a66e0353ee1 100755
+index ab65502..7a66e03 100755
 --- a/crypto/sha/asm/sha1-ppc.pl
 +++ b/crypto/sha/asm/sha1-ppc.pl
 @@ -1,4 +1,11 @@
@@ -78752,7 +85766,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-s390x.pl b/crypto/sha/asm/sha1-s390x.pl
-index a62cc31892e2..b19606c5c514 100644
+index a62cc31..b19606c 100644
 --- a/crypto/sha/asm/sha1-s390x.pl
 +++ b/crypto/sha/asm/sha1-s390x.pl
 @@ -1,4 +1,11 @@
@@ -78790,7 +85804,7 @@
  
  $code =~ s/\`([^\`]*)\`/eval $1/gem;
 diff --git a/crypto/sha/asm/sha1-sparcv9.pl b/crypto/sha/asm/sha1-sparcv9.pl
-index 9f20725363f1..7437ff4f05fa 100644
+index 9f20725..7437ff4 100644
 --- a/crypto/sha/asm/sha1-sparcv9.pl
 +++ b/crypto/sha/asm/sha1-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -78807,7 +85821,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-sparcv9a.pl b/crypto/sha/asm/sha1-sparcv9a.pl
-index e81a4dcb0534..f9ed5630e828 100644
+index e81a4dc..f9ed563 100644
 --- a/crypto/sha/asm/sha1-sparcv9a.pl
 +++ b/crypto/sha/asm/sha1-sparcv9a.pl
 @@ -1,4 +1,11 @@
@@ -78824,7 +85838,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-thumb.pl b/crypto/sha/asm/sha1-thumb.pl
-index 7c9ea9b0296c..661fd9f9ff27 100644
+index 7c9ea9b..661fd9f 100644
 --- a/crypto/sha/asm/sha1-thumb.pl
 +++ b/crypto/sha/asm/sha1-thumb.pl
 @@ -1,4 +1,11 @@
@@ -78841,7 +85855,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/sha/asm/sha1-x86_64.pl b/crypto/sha/asm/sha1-x86_64.pl
-index 882788654288..e8f61ab82021 100755
+index 8827886..e8f61ab 100755
 --- a/crypto/sha/asm/sha1-x86_64.pl
 +++ b/crypto/sha/asm/sha1-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -78867,7 +85881,7 @@
  
  $ctx="%rdi";	# 1st arg
 diff --git a/crypto/sha/asm/sha256-586.pl b/crypto/sha/asm/sha256-586.pl
-index 55d833a8bbf8..6af1d84beb2b 100644
+index 55d833a..6af1d84 100644
 --- a/crypto/sha/asm/sha256-586.pl
 +++ b/crypto/sha/asm/sha256-586.pl
 @@ -1,4 +1,11 @@
@@ -78884,7 +85898,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha256-armv4.pl b/crypto/sha/asm/sha256-armv4.pl
-index 621bcdb6284c..55d30cba3a21 100644
+index 621bcdb..55d30cb 100644
 --- a/crypto/sha/asm/sha256-armv4.pl
 +++ b/crypto/sha/asm/sha256-armv4.pl
 @@ -1,4 +1,11 @@
@@ -78901,7 +85915,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha256-c64xplus.pl b/crypto/sha/asm/sha256-c64xplus.pl
-index 2f775ac0050c..3ab7d9b68946 100644
+index 2f775ac..3ab7d9b 100644
 --- a/crypto/sha/asm/sha256-c64xplus.pl
 +++ b/crypto/sha/asm/sha256-c64xplus.pl
 @@ -1,4 +1,11 @@
@@ -78918,7 +85932,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha256-mb-x86_64.pl b/crypto/sha/asm/sha256-mb-x86_64.pl
-index 65df8e633351..fbcd29f2e891 100644
+index 65df8e6..fbcd29f 100644
 --- a/crypto/sha/asm/sha256-mb-x86_64.pl
 +++ b/crypto/sha/asm/sha256-mb-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -78944,7 +85958,7 @@
  
  # void sha256_multi_block (
 diff --git a/crypto/sha/asm/sha512-586.pl b/crypto/sha/asm/sha512-586.pl
-index d0f9101092b8..0887e061489a 100644
+index d0f9101..0887e06 100644
 --- a/crypto/sha/asm/sha512-586.pl
 +++ b/crypto/sha/asm/sha512-586.pl
 @@ -1,4 +1,11 @@
@@ -78961,7 +85975,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha512-armv4.pl b/crypto/sha/asm/sha512-armv4.pl
-index 0840a8d8147a..22b5a9d0b132 100644
+index 0840a8d..22b5a9d 100644
 --- a/crypto/sha/asm/sha512-armv4.pl
 +++ b/crypto/sha/asm/sha512-armv4.pl
 @@ -1,4 +1,11 @@
@@ -78978,7 +85992,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha512-armv8.pl b/crypto/sha/asm/sha512-armv8.pl
-index 7d69f0f4958d..ef517df64bf3 100644
+index 7d69f0f..ef517df 100644
 --- a/crypto/sha/asm/sha512-armv8.pl
 +++ b/crypto/sha/asm/sha512-armv8.pl
 @@ -1,4 +1,11 @@
@@ -78995,7 +86009,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha512-c64xplus.pl b/crypto/sha/asm/sha512-c64xplus.pl
-index 71a1e80bbb13..9ebfc92e23ae 100644
+index 71a1e80..9ebfc92 100644
 --- a/crypto/sha/asm/sha512-c64xplus.pl
 +++ b/crypto/sha/asm/sha512-c64xplus.pl
 @@ -1,4 +1,11 @@
@@ -79012,7 +86026,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha512-ia64.pl b/crypto/sha/asm/sha512-ia64.pl
-index 4f472d12b88a..356a46aced78 100755
+index 4f472d1..356a46a 100755
 --- a/crypto/sha/asm/sha512-ia64.pl
 +++ b/crypto/sha/asm/sha512-ia64.pl
 @@ -1,4 +1,11 @@
@@ -79029,7 +86043,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha512-mips.pl b/crypto/sha/asm/sha512-mips.pl
-index 79429ab749a0..5c2d23faaf63 100644
+index 79429ab..5c2d23f 100644
 --- a/crypto/sha/asm/sha512-mips.pl
 +++ b/crypto/sha/asm/sha512-mips.pl
 @@ -1,4 +1,11 @@
@@ -79080,7 +86094,7 @@
  	$LD	$A,0*$SZ($ctx)		# load context
  	$LD	$B,1*$SZ($ctx)
 diff --git a/crypto/sha/asm/sha512-parisc.pl b/crypto/sha/asm/sha512-parisc.pl
-index 6cad72e25573..fcb6157902c3 100755
+index 6cad72e..fcb6157 100755
 --- a/crypto/sha/asm/sha512-parisc.pl
 +++ b/crypto/sha/asm/sha512-parisc.pl
 @@ -1,4 +1,11 @@
@@ -79097,7 +86111,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/sha/asm/sha512-ppc.pl b/crypto/sha/asm/sha512-ppc.pl
-index 17fdc6e8e5a9..fe95b0150907 100755
+index 17fdc6e..fe95b01 100755
 --- a/crypto/sha/asm/sha512-ppc.pl
 +++ b/crypto/sha/asm/sha512-ppc.pl
 @@ -1,4 +1,11 @@
@@ -79114,7 +86128,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/asm/sha512-s390x.pl b/crypto/sha/asm/sha512-s390x.pl
-index 7780627131e9..582d393cefb5 100644
+index 7780627..582d393 100644
 --- a/crypto/sha/asm/sha512-s390x.pl
 +++ b/crypto/sha/asm/sha512-s390x.pl
 @@ -1,4 +1,11 @@
@@ -79152,7 +86166,7 @@
  
  $code =~ s/\`([^\`]*)\`/eval $1/gem;
 diff --git a/crypto/sha/asm/sha512-sparcv9.pl b/crypto/sha/asm/sha512-sparcv9.pl
-index 866a7b0999aa..4a1ce5fe3e4e 100644
+index 866a7b0..4a1ce5f 100644
 --- a/crypto/sha/asm/sha512-sparcv9.pl
 +++ b/crypto/sha/asm/sha512-sparcv9.pl
 @@ -1,4 +1,11 @@
@@ -79169,7 +86183,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/sha/asm/sha512-x86_64.pl b/crypto/sha/asm/sha512-x86_64.pl
-index a62acd248f3a..3dbb23ae1166 100755
+index a62acd2..3dbb23a 100755
 --- a/crypto/sha/asm/sha512-x86_64.pl
 +++ b/crypto/sha/asm/sha512-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -79195,7 +86209,7 @@
  
  if ($output =~ /512/) {
 diff --git a/crypto/sha/asm/sha512p8-ppc.pl b/crypto/sha/asm/sha512p8-ppc.pl
-index 47189502c6cc..4d3d3b2f8c98 100755
+index 4718950..4d3d3b2 100755
 --- a/crypto/sha/asm/sha512p8-ppc.pl
 +++ b/crypto/sha/asm/sha512p8-ppc.pl
 @@ -1,4 +1,11 @@
@@ -79212,7 +86226,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/crypto/sha/build.info b/crypto/sha/build.info
-index 7aa3a9187257..5843e508941d 100644
+index 7aa3a91..5843e50 100644
 --- a/crypto/sha/build.info
 +++ b/crypto/sha/build.info
 @@ -13,7 +13,7 @@ GENERATE[sha1-ia64.s]=asm/sha1-ia64.pl $(CFLAGS) $(LIB_CFLAGS)
@@ -79225,7 +86239,7 @@
  GENERATE[sha1-x86_64.s]=asm/sha1-x86_64.pl $(PERLASM_SCHEME)
  GENERATE[sha1-mb-x86_64.s]=asm/sha1-mb-x86_64.pl $(PERLASM_SCHEME)
 diff --git a/crypto/sha/sha1_one.c b/crypto/sha/sha1_one.c
-index 32ec6f184c3a..273ab08dc18f 100644
+index 32ec6f1..273ab08 100644
 --- a/crypto/sha/sha1_one.c
 +++ b/crypto/sha/sha1_one.c
 @@ -1,58 +1,10 @@
@@ -79294,7 +86308,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/sha/sha1dgst.c b/crypto/sha/sha1dgst.c
-index fb8e86619196..819370e61540 100644
+index fb8e866..819370e 100644
 --- a/crypto/sha/sha1dgst.c
 +++ b/crypto/sha/sha1dgst.c
 @@ -1,58 +1,10 @@
@@ -79363,7 +86377,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/sha/sha256.c b/crypto/sha/sha256.c
-index 53b605412231..5e7ba439f981 100644
+index 53b6054..5e7ba43 100644
 --- a/crypto/sha/sha256.c
 +++ b/crypto/sha/sha256.c
 @@ -1,8 +1,12 @@
@@ -79384,7 +86398,7 @@
  
  #include <stdlib.h>
 diff --git a/crypto/sha/sha512.c b/crypto/sha/sha512.c
-index 2c8954f1c337..d24d103431dc 100644
+index 2c8954f..d24d103 100644
 --- a/crypto/sha/sha512.c
 +++ b/crypto/sha/sha512.c
 @@ -1,8 +1,12 @@
@@ -79405,15 +86419,13 @@
  /*-
   * IMPLEMENTATION NOTES.
 diff --git a/crypto/sha/sha_locl.h b/crypto/sha/sha_locl.h
-index 649cdeda0905..918278a83f35 100644
+index 649cded..918278a 100644
 --- a/crypto/sha/sha_locl.h
 +++ b/crypto/sha/sha_locl.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -79461,7 +86473,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -79474,7 +86488,7 @@
  
  #include <stdlib.h>
 diff --git a/crypto/sparc_arch.h b/crypto/sparc_arch.h
-index e30d322a4ae2..99eafb331352 100644
+index e30d322..99eafb3 100644
 --- a/crypto/sparc_arch.h
 +++ b/crypto/sparc_arch.h
 @@ -1,3 +1,12 @@
@@ -79519,7 +86533,7 @@
  # if defined(OPENSSL_PIC) && !defined(__PIC__)
  #  define __PIC__
 diff --git a/crypto/sparccpuid.S b/crypto/sparccpuid.S
-index 72c7adfc74cb..4c394fa00d9e 100644
+index 72c7adf..4c394fa 100644
 --- a/crypto/sparccpuid.S
 +++ b/crypto/sparccpuid.S
 @@ -1,3 +1,10 @@
@@ -79533,7 +86547,7 @@
  #ifdef OPENSSL_FIPSCANISTER
  #include <openssl/fipssyms.h>
  #endif
-@@ -349,6 +356,14 @@
+@@ -349,6 +356,14 @@ _sparcv9_random:
  .type	_sparcv9_random,#function
  .size	_sparcv9_random,.-_sparcv9_vis3_probe
  
@@ -79548,7 +86562,7 @@
  .global	OPENSSL_cleanse
  .align	32
  OPENSSL_cleanse:
-@@ -432,6 +447,40 @@
+@@ -432,6 +447,40 @@ OPENSSL_cleanse:
  .type	OPENSSL_cleanse,#function
  .size	OPENSSL_cleanse,.-OPENSSL_cleanse
  
@@ -79590,7 +86604,7 @@
  .align	8
  _sparcv9_vis1_instrument_bus:
 diff --git a/crypto/sparcv9cap.c b/crypto/sparcv9cap.c
-index 2058640377b2..92841ce76a3a 100644
+index 2058640..92841ce 100644
 --- a/crypto/sparcv9cap.c
 +++ b/crypto/sparcv9cap.c
 @@ -1,3 +1,12 @@
@@ -79672,7 +86686,7 @@
       * VIS3 flag, because it goes to uninterruptable endless
 diff --git a/crypto/srp/Makefile.in b/crypto/srp/Makefile.in
 deleted file mode 100644
-index 78e9a4f8733c..000000000000
+index 78e9a4f..0000000
 --- a/crypto/srp/Makefile.in
 +++ /dev/null
 @@ -1,39 +0,0 @@
@@ -79716,7 +86730,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/srp/srp_lib.c b/crypto/srp/srp_lib.c
-index aefc4909c0f5..766a0a23bedd 100644
+index aefc490..0667174 100644
 --- a/crypto/srp/srp_lib.c
 +++ b/crypto/srp/srp_lib.c
 @@ -1,61 +1,12 @@
@@ -79776,9 +86790,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -79788,6 +86801,35 @@
  #ifndef OPENSSL_NO_SRP
  # include "internal/cryptlib.h"
  # include <openssl/sha.h>
+@@ -63,7 +14,7 @@
+ # include <openssl/evp.h>
+ # include "internal/bn_srp.h"
+ 
+-static BIGNUM *srp_Calc_k(BIGNUM *N, BIGNUM *g)
++static BIGNUM *srp_Calc_k(const BIGNUM *N, const BIGNUM *g)
+ {
+     /* k = SHA1(N | PAD(g)) -- tls-srp draft 8 */
+ 
+@@ -101,7 +52,7 @@ static BIGNUM *srp_Calc_k(BIGNUM *N, BIGNUM *g)
+     return res;
+ }
+ 
+-BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N)
++BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N)
+ {
+     /* k = SHA1(PAD(A) || PAD(B) ) -- tls-srp draft 8 */
+ 
+@@ -144,8 +95,8 @@ BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N)
+     return u;
+ }
+ 
+-BIGNUM *SRP_Calc_server_key(BIGNUM *A, BIGNUM *v, BIGNUM *u, BIGNUM *b,
+-                            BIGNUM *N)
++BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u,
++                            const BIGNUM *b, const BIGNUM *N)
+ {
+     BIGNUM *tmp = NULL, *S = NULL;
+     BN_CTX *bn_ctx;
 @@ -153,8 +104,7 @@ BIGNUM *SRP_Calc_server_key(BIGNUM *A, BIGNUM *v, BIGNUM *u, BIGNUM *b,
      if (u == NULL || A == NULL || v == NULL || b == NULL || N == NULL)
          return NULL;
@@ -79798,7 +86840,7 @@
          goto err;
  
      /* S = (A*v**u) ** b */
-@@ -163,8 +113,12 @@ BIGNUM *SRP_Calc_server_key(BIGNUM *A, BIGNUM *v, BIGNUM *u, BIGNUM *b,
+@@ -163,15 +113,20 @@ BIGNUM *SRP_Calc_server_key(BIGNUM *A, BIGNUM *v, BIGNUM *u, BIGNUM *b,
          goto err;
      if (!BN_mod_mul(tmp, A, tmp, N, bn_ctx))
          goto err;
@@ -79813,8 +86855,46 @@
   err:
      BN_CTX_free(bn_ctx);
      BN_clear_free(tmp);
-@@ -265,8 +219,7 @@ BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x,
+     return S;
+ }
  
+-BIGNUM *SRP_Calc_B(BIGNUM *b, BIGNUM *N, BIGNUM *g, BIGNUM *v)
++BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g,
++                   const BIGNUM *v)
+ {
+     BIGNUM *kv = NULL, *gb = NULL;
+     BIGNUM *B = NULL, *k = NULL;
+@@ -202,7 +157,7 @@ BIGNUM *SRP_Calc_B(BIGNUM *b, BIGNUM *N, BIGNUM *g, BIGNUM *v)
+     return B;
+ }
+ 
+-BIGNUM *SRP_Calc_x(BIGNUM *s, const char *user, const char *pass)
++BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass)
+ {
+     unsigned char dig[SHA_DIGEST_LENGTH];
+     EVP_MD_CTX *ctxt;
+@@ -237,7 +192,7 @@ BIGNUM *SRP_Calc_x(BIGNUM *s, const char *user, const char *pass)
+     return res;
+ }
+ 
+-BIGNUM *SRP_Calc_A(BIGNUM *a, BIGNUM *N, BIGNUM *g)
++BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g)
+ {
+     BN_CTX *bn_ctx;
+     BIGNUM *A = NULL;
+@@ -253,8 +208,8 @@ BIGNUM *SRP_Calc_A(BIGNUM *a, BIGNUM *N, BIGNUM *g)
+     return A;
+ }
+ 
+-BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x,
+-                            BIGNUM *a, BIGNUM *u)
++BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g,
++                            const BIGNUM *x, const BIGNUM *a, const BIGNUM *u)
+ {
+     BIGNUM *tmp = NULL, *tmp2 = NULL, *tmp3 = NULL, *k = NULL, *K = NULL;
+     BN_CTX *bn_ctx;
+@@ -265,8 +220,7 @@ BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x,
+ 
      if ((tmp = BN_new()) == NULL ||
          (tmp2 = BN_new()) == NULL ||
 -        (tmp3 = BN_new()) == NULL ||
@@ -79823,7 +86903,7 @@
          goto err;
  
      if (!BN_mod_exp(tmp, g, x, N, bn_ctx))
-@@ -277,12 +230,15 @@ BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x,
+@@ -277,12 +231,15 @@ BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x,
          goto err;
      if (!BN_mod_sub(tmp, B, tmp2, N, bn_ctx))
          goto err;
@@ -79843,8 +86923,55 @@
  
   err:
      BN_CTX_free(bn_ctx);
+@@ -293,7 +250,7 @@ BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x,
+     return K;
+ }
+ 
+-int SRP_Verify_B_mod_N(BIGNUM *B, BIGNUM *N)
++int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N)
+ {
+     BIGNUM *r;
+     BN_CTX *bn_ctx;
+@@ -314,20 +271,20 @@ int SRP_Verify_B_mod_N(BIGNUM *B, BIGNUM *N)
+     return ret;
+ }
+ 
+-int SRP_Verify_A_mod_N(BIGNUM *A, BIGNUM *N)
++int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N)
+ {
+     /* Checks if A % N == 0 */
+     return SRP_Verify_B_mod_N(A, N);
+ }
+ 
+ static SRP_gN knowngN[] = {
+-    {"8192", (BIGNUM *)&bn_generator_19, (BIGNUM *)&bn_group_8192},
+-    {"6144", (BIGNUM *)&bn_generator_5, (BIGNUM *)&bn_group_6144},
+-    {"4096", (BIGNUM *)&bn_generator_5, (BIGNUM *)&bn_group_4096},
+-    {"3072", (BIGNUM *)&bn_generator_5, (BIGNUM *)&bn_group_3072},
+-    {"2048", (BIGNUM *)&bn_generator_2, (BIGNUM *)&bn_group_2048},
+-    {"1536", (BIGNUM *)&bn_generator_2, (BIGNUM *)&bn_group_1536},
+-    {"1024", (BIGNUM *)&bn_generator_2, (BIGNUM *)&bn_group_1024},
++    {"8192", &bn_generator_19, &bn_group_8192},
++    {"6144", &bn_generator_5, &bn_group_6144},
++    {"4096", &bn_generator_5, &bn_group_4096},
++    {"3072", &bn_generator_5, &bn_group_3072},
++    {"2048", &bn_generator_2, &bn_group_2048},
++    {"1536", &bn_generator_2, &bn_group_1536},
++    {"1024", &bn_generator_2, &bn_group_1024},
+ };
+ 
+ # define KNOWN_GN_NUMBER sizeof(knowngN) / sizeof(SRP_gN)
+@@ -336,7 +293,7 @@ static SRP_gN knowngN[] = {
+  * Check if G and N are known parameters. The values have been generated
+  * from the ietf-tls-srp draft version 8
+  */
+-char *SRP_check_known_gN_param(BIGNUM *g, BIGNUM *N)
++char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N)
+ {
+     size_t i;
+     if ((g == NULL) || (N == NULL))
 diff --git a/crypto/srp/srp_vfy.c b/crypto/srp/srp_vfy.c
-index 78db60888efb..11b9a4b58c63 100644
+index 78db608..f99fa1b 100644
 --- a/crypto/srp/srp_vfy.c
 +++ b/crypto/srp/srp_vfy.c
 @@ -1,61 +1,12 @@
@@ -79904,9 +87031,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -79925,9 +87051,47 @@
              }
          }
      }
+@@ -574,7 +525,8 @@ char *SRP_create_verifier(const char *user, const char *pass, char **salt,
+ {
+     int len;
+     char *result = NULL, *vf = NULL;
+-    BIGNUM *N_bn = NULL, *g_bn = NULL, *s = NULL, *v = NULL;
++    const BIGNUM *N_bn = NULL, *g_bn = NULL;
++    BIGNUM *N_bn_alloc = NULL, *g_bn_alloc = NULL, *s = NULL, *v = NULL;
+     unsigned char tmp[MAX_LEN];
+     unsigned char tmp2[MAX_LEN];
+     char *defgNid = NULL;
+@@ -587,10 +539,12 @@ char *SRP_create_verifier(const char *user, const char *pass, char **salt,
+     if (N) {
+         if ((len = t_fromb64(tmp, N)) == 0)
+             goto err;
+-        N_bn = BN_bin2bn(tmp, len, NULL);
++        N_bn_alloc = BN_bin2bn(tmp, len, NULL);
++        N_bn = N_bn_alloc;
+         if ((len = t_fromb64(tmp, g)) == 0)
+             goto err;
+-        g_bn = BN_bin2bn(tmp, len, NULL);
++        g_bn_alloc = BN_bin2bn(tmp, len, NULL);
++        g_bn = g_bn_alloc;
+         defgNid = "*";
+     } else {
+         SRP_gN *gN = SRP_get_gN_by_id(g, NULL);
+@@ -636,10 +590,8 @@ char *SRP_create_verifier(const char *user, const char *pass, char **salt,
+     result = defgNid;
+ 
+  err:
+-    if (N) {
+-        BN_free(N_bn);
+-        BN_free(g_bn);
+-    }
++    BN_free(N_bn_alloc);
++    BN_free(g_bn_alloc);
+     OPENSSL_clear_free(vf, vfsize);
+     BN_clear_free(s);
+     BN_clear_free(v);
 diff --git a/crypto/stack/Makefile.in b/crypto/stack/Makefile.in
 deleted file mode 100644
-index e127585f8483..000000000000
+index e127585..0000000
 --- a/crypto/stack/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -79975,7 +87139,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/stack/stack.c b/crypto/stack/stack.c
-index d486f335b2eb..0076db139d78 100644
+index d486f33..0076db1 100644
 --- a/crypto/stack/stack.c
 +++ b/crypto/stack/stack.c
 @@ -1,59 +1,12 @@
@@ -80330,7 +87494,7 @@
      return st->sorted;
  }
 diff --git a/crypto/threads_none.c b/crypto/threads_none.c
-index 4e3b7a52e8cf..72bf25b0d5ff 100644
+index 4e3b7a5..72bf25b 100644
 --- a/crypto/threads_none.c
 +++ b/crypto/threads_none.c
 @@ -1,54 +1,13 @@
@@ -80395,7 +87559,7 @@
  #if !defined(OPENSSL_THREADS) || defined(CRYPTO_TDEBUG)
  
 diff --git a/crypto/threads_pthread.c b/crypto/threads_pthread.c
-index edca77c0b972..6f5e812d97ac 100644
+index edca77c..6f5e812 100644
 --- a/crypto/threads_pthread.c
 +++ b/crypto/threads_pthread.c
 @@ -1,54 +1,13 @@
@@ -80460,7 +87624,7 @@
  #if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) && !defined(OPENSSL_SYS_WINDOWS)
  
 diff --git a/crypto/threads_win.c b/crypto/threads_win.c
-index 63647a39a673..545b9beb873c 100644
+index 63647a3..545b9be 100644
 --- a/crypto/threads_win.c
 +++ b/crypto/threads_win.c
 @@ -1,54 +1,13 @@
@@ -80571,7 +87735,7 @@
      *key = TlsAlloc();
 diff --git a/crypto/ts/Makefile.in b/crypto/ts/Makefile.in
 deleted file mode 100644
-index 64156b561e44..000000000000
+index 64156b5..0000000
 --- a/crypto/ts/Makefile.in
 +++ /dev/null
 @@ -1,53 +0,0 @@
@@ -80629,7 +87793,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/ts/ts_asn1.c b/crypto/ts/ts_asn1.c
-index 5d0c59869c9c..e60675ab7208 100644
+index 5d0c598..e60675a 100644
 --- a/crypto/ts/ts_asn1.c
 +++ b/crypto/ts/ts_asn1.c
 @@ -1,58 +1,10 @@
@@ -80697,7 +87861,7 @@
  
  #include <openssl/ts.h>
 diff --git a/crypto/ts/ts_conf.c b/crypto/ts/ts_conf.c
-index e61069141634..f5f3934dfd48 100644
+index e610691..f5f3934 100644
 --- a/crypto/ts/ts_conf.c
 +++ b/crypto/ts/ts_conf.c
 @@ -1,59 +1,10 @@
@@ -80766,7 +87930,7 @@
  
  #include <string.h>
 diff --git a/crypto/ts/ts_err.c b/crypto/ts/ts_err.c
-index b1dd8a1c2cc9..08217f71b31d 100644
+index b1dd8a1..08217f7 100644
 --- a/crypto/ts/ts_err.c
 +++ b/crypto/ts/ts_err.c
 @@ -1,61 +1,11 @@
@@ -80863,7 +88027,7 @@
      {ERR_REASON(TS_R_ESS_ADD_SIGNING_CERT_ERROR),
       "ess add signing cert error"},
 diff --git a/crypto/ts/ts_lcl.h b/crypto/ts/ts_lcl.h
-index e3f915c79536..d0c3cf816e00 100644
+index e3f915c..d0c3cf8 100644
 --- a/crypto/ts/ts_lcl.h
 +++ b/crypto/ts/ts_lcl.h
 @@ -1,58 +1,12 @@
@@ -80941,7 +88105,7 @@
   * IssuerSerial ::= SEQUENCE {
   *         issuer                   GeneralNames,
 diff --git a/crypto/ts/ts_lib.c b/crypto/ts/ts_lib.c
-index 087334bcbd49..bde1bd75e47e 100644
+index 087334b..bde1bd7 100644
 --- a/crypto/ts/ts_lib.c
 +++ b/crypto/ts/ts_lib.c
 @@ -1,59 +1,10 @@
@@ -81010,7 +88174,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/ts/ts_req_print.c b/crypto/ts/ts_req_print.c
-index 791715cce86d..0dedf47d924b 100644
+index 791715c..0dedf47 100644
 --- a/crypto/ts/ts_req_print.c
 +++ b/crypto/ts/ts_req_print.c
 @@ -1,59 +1,10 @@
@@ -81079,7 +88243,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/ts/ts_req_utils.c b/crypto/ts/ts_req_utils.c
-index 5e1114ab9d3c..a37cf84633e5 100644
+index 5e1114a..a37cf84 100644
 --- a/crypto/ts/ts_req_utils.c
 +++ b/crypto/ts/ts_req_utils.c
 @@ -1,59 +1,10 @@
@@ -81148,7 +88312,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/ts/ts_rsp_print.c b/crypto/ts/ts_rsp_print.c
-index 643bf4ac0a98..6eb0ec8d7504 100644
+index 643bf4a..6eb0ec8 100644
 --- a/crypto/ts/ts_rsp_print.c
 +++ b/crypto/ts/ts_rsp_print.c
 @@ -1,59 +1,10 @@
@@ -81217,7 +88381,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/ts/ts_rsp_sign.c b/crypto/ts/ts_rsp_sign.c
-index 0ad6f100d6db..a4acc9e8376d 100644
+index 0ad6f10..8619cb5 100644
 --- a/crypto/ts/ts_rsp_sign.c
 +++ b/crypto/ts/ts_rsp_sign.c
 @@ -1,59 +1,10 @@
@@ -81285,8 +88449,35 @@
   */
  
  #include "internal/cryptlib.h"
+@@ -272,7 +223,7 @@ int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md)
+     if (ctx->mds == NULL
+         && (ctx->mds = sk_EVP_MD_new_null()) == NULL)
+         goto err;
+-    if (!sk_EVP_MD_push(ctx->mds, (EVP_MD *)md))
++    if (!sk_EVP_MD_push(ctx->mds, md))
+         goto err;
+ 
+     return 1;
+@@ -495,7 +446,7 @@ static int ts_RESP_check_request(TS_RESP_CTX *ctx)
+     X509_ALGOR *md_alg;
+     int md_alg_id;
+     const ASN1_OCTET_STRING *digest;
+-    EVP_MD *md = NULL;
++    const EVP_MD *md = NULL;
+     int i;
+ 
+     if (TS_REQ_get_version(request) != 1) {
+@@ -509,7 +460,7 @@ static int ts_RESP_check_request(TS_RESP_CTX *ctx)
+     md_alg = msg_imprint->hash_algo;
+     md_alg_id = OBJ_obj2nid(md_alg->algorithm);
+     for (i = 0; !md && i < sk_EVP_MD_num(ctx->mds); ++i) {
+-        EVP_MD *current_md = sk_EVP_MD_value(ctx->mds, i);
++        const EVP_MD *current_md = sk_EVP_MD_value(ctx->mds, i);
+         if (md_alg_id == EVP_MD_type(current_md))
+             md = current_md;
+     }
 diff --git a/crypto/ts/ts_rsp_utils.c b/crypto/ts/ts_rsp_utils.c
-index 5d0c51a0b141..3747b5c9da49 100644
+index 5d0c51a..3747b5c 100644
 --- a/crypto/ts/ts_rsp_utils.c
 +++ b/crypto/ts/ts_rsp_utils.c
 @@ -1,59 +1,10 @@
@@ -81355,7 +88546,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/ts/ts_rsp_verify.c b/crypto/ts/ts_rsp_verify.c
-index 89b86e1dd322..21da8aaa9e8f 100644
+index 89b86e1..21da8aa 100644
 --- a/crypto/ts/ts_rsp_verify.c
 +++ b/crypto/ts/ts_rsp_verify.c
 @@ -1,59 +1,10 @@
@@ -81428,14 +88619,14 @@
      unsigned imprint_len = 0;
      int ret = 0;
 +    int flags = ctx->flags;
- 
--    if ((ctx->flags & TS_VFY_SIGNATURE)
++
 +    /* Some options require us to also check the signature */
 +    if (((flags & TS_VFY_SIGNER) && tsa_name != NULL)
 +            || (flags & TS_VFY_TSA_NAME)) {
 +        flags |= TS_VFY_SIGNATURE;
 +    }
-+
+ 
+-    if ((ctx->flags & TS_VFY_SIGNATURE)
 +    if ((flags & TS_VFY_SIGNATURE)
          && !TS_RESP_verify_signature(token, ctx->certs, ctx->store, &signer))
          goto err;
@@ -81476,7 +88667,7 @@
          TSerr(TS_F_INT_TS_RESP_VERIFY_TOKEN, TS_R_TSA_UNTRUSTED);
          goto err;
 diff --git a/crypto/ts/ts_verify_ctx.c b/crypto/ts/ts_verify_ctx.c
-index b650a00bb606..141385d79f6b 100644
+index b650a00..141385d 100644
 --- a/crypto/ts/ts_verify_ctx.c
 +++ b/crypto/ts/ts_verify_ctx.c
 @@ -1,59 +1,10 @@
@@ -81546,7 +88737,7 @@
  #include "internal/cryptlib.h"
 diff --git a/crypto/txt_db/Makefile.in b/crypto/txt_db/Makefile.in
 deleted file mode 100644
-index 905ab41ab4a0..000000000000
+index 905ab41..0000000
 --- a/crypto/txt_db/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -81594,7 +88785,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/txt_db/txt_db.c b/crypto/txt_db/txt_db.c
-index 219031e507db..14322309a7a1 100644
+index 219031e..1432230 100644
 --- a/crypto/txt_db/txt_db.c
 +++ b/crypto/txt_db/txt_db.c
 @@ -1,58 +1,10 @@
@@ -81682,7 +88873,7 @@
      }
 diff --git a/crypto/ui/Makefile.in b/crypto/ui/Makefile.in
 deleted file mode 100644
-index 665cd2ee4920..000000000000
+index 665cd2e..0000000
 --- a/crypto/ui/Makefile.in
 +++ /dev/null
 @@ -1,43 +0,0 @@
@@ -81730,7 +88921,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/ui/ui_err.c b/crypto/ui/ui_err.c
-index b43356e126a4..03cd2bc554e7 100644
+index b43356e..03cd2bc 100644
 --- a/crypto/ui/ui_err.c
 +++ b/crypto/ui/ui_err.c
 @@ -1,61 +1,11 @@
@@ -81812,7 +89003,7 @@
      {ERR_FUNC(UI_F_UI_DUP_ERROR_STRING), "UI_dup_error_string"},
      {ERR_FUNC(UI_F_UI_DUP_INFO_STRING), "UI_dup_info_string"},
 diff --git a/crypto/ui/ui_lib.c b/crypto/ui/ui_lib.c
-index 7b08107f7a46..1213892ad554 100644
+index 7b08107..2940b2f 100644
 --- a/crypto/ui/ui_lib.c
 +++ b/crypto/ui/ui_lib.c
 @@ -1,59 +1,10 @@
@@ -81892,7 +89083,12 @@
      return ret;
  }
  
-@@ -582,8 +536,14 @@ UI_METHOD *UI_create_method(char *name)
+@@ -578,12 +532,18 @@ const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth)
+     return ui->meth;
+ }
+ 
+-UI_METHOD *UI_create_method(char *name)
++UI_METHOD *UI_create_method(const char *name)
  {
      UI_METHOD *ui_method = OPENSSL_zalloc(sizeof(*ui_method));
  
@@ -81909,7 +89105,7 @@
  }
  
 diff --git a/crypto/ui/ui_locl.h b/crypto/ui/ui_locl.h
-index abbdd1c0b5bb..2953739b76ff 100644
+index abbdd1c..2953739 100644
 --- a/crypto/ui/ui_locl.h
 +++ b/crypto/ui/ui_locl.h
 @@ -1,59 +1,10 @@
@@ -81978,7 +89174,7 @@
  
  #ifndef HEADER_UI_LOCL_H
 diff --git a/crypto/ui/ui_openssl.c b/crypto/ui/ui_openssl.c
-index 7fc3e17fb09e..929f7cb4c7eb 100644
+index 7fc3e17..929f7cb 100644
 --- a/crypto/ui/ui_openssl.c
 +++ b/crypto/ui/ui_openssl.c
 @@ -1,118 +1,10 @@
@@ -81988,8 +89184,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2001 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -82093,7 +89288,8 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++ * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -82106,7 +89302,7 @@
  
  #include <openssl/e_os2.h>
 diff --git a/crypto/ui/ui_util.c b/crypto/ui/ui_util.c
-index f04ee7c1f4f8..3b51db92cdd8 100644
+index f04ee7c..3b51db9 100644
 --- a/crypto/ui/ui_util.c
 +++ b/crypto/ui/ui_util.c
 @@ -1,55 +1,10 @@
@@ -82172,7 +89368,7 @@
  
  #include <string.h>
 diff --git a/crypto/uid.c b/crypto/uid.c
-index 2093947cfc27..12df8a4e87c0 100644
+index 2093947..12df8a4 100644
 --- a/crypto/uid.c
 +++ b/crypto/uid.c
 @@ -1,55 +1,10 @@
@@ -82238,7 +89434,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/crypto/vms_rms.h b/crypto/vms_rms.h
-index 09c280e87b99..3b994a0aba2c 100644
+index 09c280e..3b994a0 100644
 --- a/crypto/vms_rms.h
 +++ b/crypto/vms_rms.h
 @@ -1,3 +1,11 @@
@@ -82255,7 +89451,7 @@
  
 diff --git a/crypto/whrlpool/Makefile.in b/crypto/whrlpool/Makefile.in
 deleted file mode 100644
-index e6c64b77c551..000000000000
+index e6c64b7..0000000
 --- a/crypto/whrlpool/Makefile.in
 +++ /dev/null
 @@ -1,56 +0,0 @@
@@ -82316,7 +89512,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/whrlpool/asm/wp-mmx.pl b/crypto/whrlpool/asm/wp-mmx.pl
-index a71a29f522ac..f63945c8b90b 100644
+index a71a29f..f63945c 100644
 --- a/crypto/whrlpool/asm/wp-mmx.pl
 +++ b/crypto/whrlpool/asm/wp-mmx.pl
 @@ -1,4 +1,11 @@
@@ -82333,7 +89529,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
 diff --git a/crypto/whrlpool/asm/wp-x86_64.pl b/crypto/whrlpool/asm/wp-x86_64.pl
-index 5a3bdbcf20d1..c0b21d13ed49 100644
+index 5a3bdbc..c0b21d1 100644
 --- a/crypto/whrlpool/asm/wp-x86_64.pl
 +++ b/crypto/whrlpool/asm/wp-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -82359,7 +89555,7 @@
  
  sub L() { $code.=".byte	".join(',', at _)."\n"; }
 diff --git a/crypto/whrlpool/wp_block.c b/crypto/whrlpool/wp_block.c
-index dc652e87fed3..b29f037bf73e 100644
+index dc652e8..b29f037 100644
 --- a/crypto/whrlpool/wp_block.c
 +++ b/crypto/whrlpool/wp_block.c
 @@ -1,3 +1,12 @@
@@ -82376,7 +89572,7 @@
   * The Whirlpool hashing function.
   *
 diff --git a/crypto/whrlpool/wp_dgst.c b/crypto/whrlpool/wp_dgst.c
-index eeb420c02ff5..d852db6554e8 100644
+index eeb420c..d852db6 100644
 --- a/crypto/whrlpool/wp_dgst.c
 +++ b/crypto/whrlpool/wp_dgst.c
 @@ -1,3 +1,12 @@
@@ -82393,7 +89589,7 @@
   * The Whirlpool hashing function.
   *
 diff --git a/crypto/whrlpool/wp_locl.h b/crypto/whrlpool/wp_locl.h
-index 6e7b549e1e85..3a81cfd58c1a 100644
+index 6e7b549..3a81cfd 100644
 --- a/crypto/whrlpool/wp_locl.h
 +++ b/crypto/whrlpool/wp_locl.h
 @@ -1,3 +1,12 @@
@@ -82411,7 +89607,7 @@
  void whirlpool_block(WHIRLPOOL_CTX *, const void *, size_t);
 diff --git a/crypto/x509/Makefile.in b/crypto/x509/Makefile.in
 deleted file mode 100644
-index 8b11dc436d93..000000000000
+index 8b11dc4..0000000
 --- a/crypto/x509/Makefile.in
 +++ /dev/null
 @@ -1,57 +0,0 @@
@@ -82473,7 +89669,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c
-index 55241175b5bb..5473cb178afa 100644
+index 5524117..5473cb1 100644
 --- a/crypto/x509/by_dir.c
 +++ b/crypto/x509/by_dir.c
 @@ -1,58 +1,10 @@
@@ -82550,7 +89746,7 @@
  #include "x509_lcl.h"
  
 diff --git a/crypto/x509/by_file.c b/crypto/x509/by_file.c
-index eea7a7ee41c3..4376bed83452 100644
+index eea7a7e..4376bed 100644
 --- a/crypto/x509/by_file.c
 +++ b/crypto/x509/by_file.c
 @@ -1,58 +1,10 @@
@@ -82619,7 +89815,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/t_crl.c b/crypto/x509/t_crl.c
-index d4d916ed9992..9b6b5a5147ab 100644
+index d4d916e..9b6b5a5 100644
 --- a/crypto/x509/t_crl.c
 +++ b/crypto/x509/t_crl.c
 @@ -1,59 +1,10 @@
@@ -82688,7 +89884,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/t_req.c b/crypto/x509/t_req.c
-index afe59c4e9c2f..0d0447bd2b07 100644
+index afe59c4..0d0447b 100644
 --- a/crypto/x509/t_req.c
 +++ b/crypto/x509/t_req.c
 @@ -1,58 +1,10 @@
@@ -82765,7 +89961,7 @@
                      if (BIO_write(bp, (char *)bs->data, bs->length)
                          != bs->length)
 diff --git a/crypto/x509/t_x509.c b/crypto/x509/t_x509.c
-index 996a755ae3de..5fbe76768ee2 100644
+index 996a755..5fbe767 100644
 --- a/crypto/x509/t_x509.c
 +++ b/crypto/x509/t_x509.c
 @@ -1,58 +1,10 @@
@@ -82834,7 +90030,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x509_att.c b/crypto/x509/x509_att.c
-index fb04cdcf68d0..1fda58e90f90 100644
+index fb04cdc..1fda58e 100644
 --- a/crypto/x509/x509_att.c
 +++ b/crypto/x509/x509_att.c
 @@ -1,58 +1,10 @@
@@ -82948,15 +90144,13 @@
  }
  
 diff --git a/crypto/x509/x509_cmp.c b/crypto/x509/x509_cmp.c
-index d3b2c199b973..63cef40e4089 100644
+index d3b2c19..63cef40 100644
 --- a/crypto/x509/x509_cmp.c
 +++ b/crypto/x509/x509_cmp.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -83004,7 +90198,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -83031,7 +90227,7 @@
                        a->cert_info.enc.len);
      }
 diff --git a/crypto/x509/x509_d2.c b/crypto/x509/x509_d2.c
-index d8337337eaa3..cb03dbfa6c8b 100644
+index d833733..cb03dbf 100644
 --- a/crypto/x509/x509_d2.c
 +++ b/crypto/x509/x509_d2.c
 @@ -1,58 +1,10 @@
@@ -83100,7 +90296,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x509_def.c b/crypto/x509/x509_def.c
-index 0633caea7992..d11358e34fe2 100644
+index 0633cae..d11358e 100644
 --- a/crypto/x509/x509_def.c
 +++ b/crypto/x509/x509_def.c
 @@ -1,58 +1,10 @@
@@ -83169,7 +90365,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x509_err.c b/crypto/x509/x509_err.c
-index d140d5230d76..dbebbaa479ff 100644
+index d140d52..13f5a24 100644
 --- a/crypto/x509/x509_err.c
 +++ b/crypto/x509/x509_err.c
 @@ -1,61 +1,11 @@
@@ -83241,7 +90437,15 @@
   */
  
  #include <stdio.h>
-@@ -109,6 +59,7 @@ static ERR_STRING_DATA X509_str_functs[] = {
+@@ -72,6 +22,7 @@ static ERR_STRING_DATA X509_str_functs[] = {
+     {ERR_FUNC(X509_F_ADD_CERT_DIR), "add_cert_dir"},
+     {ERR_FUNC(X509_F_BUILD_CHAIN), "build_chain"},
+     {ERR_FUNC(X509_F_BY_FILE_CTRL), "by_file_ctrl"},
++    {ERR_FUNC(X509_F_CHECK_NAME_CONSTRAINTS), "check_name_constraints"},
+     {ERR_FUNC(X509_F_CHECK_POLICY), "check_policy"},
+     {ERR_FUNC(X509_F_DANE_I2D), "dane_i2d"},
+     {ERR_FUNC(X509_F_DIR_CTRL), "dir_ctrl"},
+@@ -109,6 +60,7 @@ static ERR_STRING_DATA X509_str_functs[] = {
       "X509_NAME_ENTRY_set_object"},
      {ERR_FUNC(X509_F_X509_NAME_ONELINE), "X509_NAME_oneline"},
      {ERR_FUNC(X509_F_X509_NAME_PRINT), "X509_NAME_print"},
@@ -83249,7 +90453,7 @@
      {ERR_FUNC(X509_F_X509_PRINT_EX_FP), "X509_print_ex_fp"},
      {ERR_FUNC(X509_F_X509_PUBKEY_DECODE), "x509_pubkey_decode"},
      {ERR_FUNC(X509_F_X509_PUBKEY_GET0), "X509_PUBKEY_get0"},
-@@ -126,8 +77,6 @@ static ERR_STRING_DATA X509_str_functs[] = {
+@@ -126,8 +78,6 @@ static ERR_STRING_DATA X509_str_functs[] = {
      {ERR_FUNC(X509_F_X509_STORE_CTX_NEW), "X509_STORE_CTX_new"},
      {ERR_FUNC(X509_F_X509_STORE_CTX_PURPOSE_INHERIT),
       "X509_STORE_CTX_purpose_inherit"},
@@ -83258,7 +90462,7 @@
      {ERR_FUNC(X509_F_X509_TO_X509_REQ), "X509_to_X509_REQ"},
      {ERR_FUNC(X509_F_X509_TRUST_ADD), "X509_TRUST_add"},
      {ERR_FUNC(X509_F_X509_TRUST_SET), "X509_TRUST_set"},
-@@ -145,7 +94,6 @@ static ERR_STRING_DATA X509_str_reasons[] = {
+@@ -145,7 +95,6 @@ static ERR_STRING_DATA X509_str_reasons[] = {
       "cert already in hash table"},
      {ERR_REASON(X509_R_CRL_ALREADY_DELTA), "crl already delta"},
      {ERR_REASON(X509_R_CRL_VERIFY_FAILURE), "crl verify failure"},
@@ -83266,7 +90470,7 @@
      {ERR_REASON(X509_R_IDP_MISMATCH), "idp mismatch"},
      {ERR_REASON(X509_R_INVALID_DIRECTORY), "invalid directory"},
      {ERR_REASON(X509_R_INVALID_FIELD_NAME), "invalid field name"},
-@@ -156,6 +104,7 @@ static ERR_STRING_DATA X509_str_reasons[] = {
+@@ -156,6 +105,7 @@ static ERR_STRING_DATA X509_str_reasons[] = {
      {ERR_REASON(X509_R_LOADING_CERT_DIR), "loading cert dir"},
      {ERR_REASON(X509_R_LOADING_DEFAULTS), "loading defaults"},
      {ERR_REASON(X509_R_METHOD_NOT_SUPPORTED), "method not supported"},
@@ -83275,7 +90479,7 @@
      {ERR_REASON(X509_R_NO_CERT_SET_FOR_US_TO_VERIFY),
       "no cert set for us to verify"},
 diff --git a/crypto/x509/x509_ext.c b/crypto/x509/x509_ext.c
-index 9691d2dce35a..b01ad127b644 100644
+index 9691d2d..b01ad12 100644
 --- a/crypto/x509/x509_ext.c
 +++ b/crypto/x509/x509_ext.c
 @@ -1,58 +1,10 @@
@@ -83344,7 +90548,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x509_lcl.h b/crypto/x509/x509_lcl.h
-index db98a105aa93..340bb60b9841 100644
+index db98a10..340bb60 100644
 --- a/crypto/x509/x509_lcl.h
 +++ b/crypto/x509/x509_lcl.h
 @@ -1,59 +1,10 @@
@@ -83413,7 +90617,7 @@
  
  /*
 diff --git a/crypto/x509/x509_lu.c b/crypto/x509/x509_lu.c
-index b82296620309..0b5b5b9ed76c 100644
+index b822966..0b5b5b9 100644
 --- a/crypto/x509/x509_lu.c
 +++ b/crypto/x509/x509_lu.c
 @@ -1,58 +1,10 @@
@@ -83820,7 +91024,7 @@
  {
      return ctx->ctx;
 diff --git a/crypto/x509/x509_obj.c b/crypto/x509/x509_obj.c
-index 8b4d4362ba09..ccec20d66085 100644
+index 8b4d436..ccec20d 100644
 --- a/crypto/x509/x509_obj.c
 +++ b/crypto/x509/x509_obj.c
 @@ -1,58 +1,10 @@
@@ -83964,7 +91168,7 @@
      return (NULL);
  }
 diff --git a/crypto/x509/x509_r2x.c b/crypto/x509/x509_r2x.c
-index d082636de411..3d72787d3164 100644
+index d082636..3d72787 100644
 --- a/crypto/x509/x509_r2x.c
 +++ b/crypto/x509/x509_r2x.c
 @@ -1,58 +1,10 @@
@@ -84033,15 +91237,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x509_req.c b/crypto/x509/x509_req.c
-index 2b2cbcee1737..35743225a8f9 100644
+index 2b2cbce..3574322 100644
 --- a/crypto/x509/x509_req.c
 +++ b/crypto/x509/x509_req.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -84089,7 +91291,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -84102,7 +91306,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x509_set.c b/crypto/x509/x509_set.c
-index 360ead87d3ff..6addfbe72e2e 100644
+index 360ead8..6addfbe 100644
 --- a/crypto/x509/x509_set.c
 +++ b/crypto/x509/x509_set.c
 @@ -1,58 +1,10 @@
@@ -84190,7 +91394,7 @@
  
  long X509_get_version(X509 *x)
 diff --git a/crypto/x509/x509_trs.c b/crypto/x509/x509_trs.c
-index 4c5281a718c3..d736418cbe64 100644
+index 4c5281a..a9bb88d 100644
 --- a/crypto/x509/x509_trs.c
 +++ b/crypto/x509/x509_trs.c
 @@ -1,59 +1,10 @@
@@ -84258,6 +91462,15 @@
   */
  
  #include <stdio.h>
+@@ -169,7 +120,7 @@ int X509_TRUST_set(int *t, int trust)
+ }
+ 
+ int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int),
+-                   char *name, int arg1, void *arg2)
++                   const char *name, int arg1, void *arg2)
+ {
+     int idx;
+     X509_TRUST *trtmp;
 @@ -197,7 +148,7 @@ int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int),
      /* dup supplied name */
      if ((trtmp->name = OPENSSL_strdup(name)) == NULL) {
@@ -84290,8 +91503,36 @@
  }
  
  static void trtable_free(X509_TRUST *p)
+@@ -237,24 +194,21 @@ static void trtable_free(X509_TRUST *p)
+ 
+ void X509_TRUST_cleanup(void)
+ {
+-    unsigned int i;
+-    for (i = 0; i < X509_TRUST_COUNT; i++)
+-        trtable_free(trstandard + i);
+     sk_X509_TRUST_pop_free(trtable, trtable_free);
+     trtable = NULL;
+ }
+ 
+-int X509_TRUST_get_flags(X509_TRUST *xp)
++int X509_TRUST_get_flags(const X509_TRUST *xp)
+ {
+     return xp->flags;
+ }
+ 
+-char *X509_TRUST_get0_name(X509_TRUST *xp)
++char *X509_TRUST_get0_name(const X509_TRUST *xp)
+ {
+     return xp->name;
+ }
+ 
+-int X509_TRUST_get_trust(X509_TRUST *xp)
++int X509_TRUST_get_trust(const X509_TRUST *xp)
+ {
+     return xp->trust;
+ }
 diff --git a/crypto/x509/x509_txt.c b/crypto/x509/x509_txt.c
-index 8a9a7f04449a..ae54de1c3107 100644
+index 8a9a7f0..66e5fcd 100644
 --- a/crypto/x509/x509_txt.c
 +++ b/crypto/x509/x509_txt.c
 @@ -1,58 +1,10 @@
@@ -84359,7 +91600,7 @@
   */
  
  #include <stdio.h>
-@@ -209,6 +161,12 @@ const char *X509_verify_cert_error_string(long n)
+@@ -209,6 +161,14 @@ const char *X509_verify_cert_error_string(long n)
          return ("CA certificate key too weak");
      case X509_V_ERR_CA_MD_TOO_WEAK:
          return ("CA signature digest algorithm too weak");
@@ -84369,11 +91610,13 @@
 +        return ("Issuer certificate lookup error");
 +    case X509_V_ERR_NO_VALID_SCTS:
 +        return ("Certificate Transparency required, but no valid SCTs found");
++    case X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION:
++        return ("proxy subject name violation");
  
      default:
          /* Printing an error number into a static buffer is not thread-safe */
 diff --git a/crypto/x509/x509_v3.c b/crypto/x509/x509_v3.c
-index f3fe30575733..ce69d19d0faa 100644
+index f3fe305..ce69d19 100644
 --- a/crypto/x509/x509_v3.c
 +++ b/crypto/x509/x509_v3.c
 @@ -1,58 +1,10 @@
@@ -84451,15 +91694,13 @@
  
  int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit)
 diff --git a/crypto/x509/x509_vfy.c b/crypto/x509/x509_vfy.c
-index efa6bcaa67a4..a5e77896f8fb 100644
+index efa6bca..1592084 100644
 --- a/crypto/x509/x509_vfy.c
 +++ b/crypto/x509/x509_vfy.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -84507,7 +91748,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -84551,31 +91794,139 @@
          !verify_cb_cert(ctx, ctx->cert, 0, X509_V_ERR_EE_KEY_TOO_SMALL))
          return 0;
  
--    /*
++    if (DANETLS_ENABLED(dane))
++        ret = dane_verify(ctx);
++    else
++        ret = verify_chain(ctx);
++
+     /*
 -     * If dane->trecs is an empty stack, we'll fail, since the user enabled
 -     * DANE.  If none of the TLSA records were usable, and it makes sense to
 -     * keep going with an unauthenticated handshake, they can handle that in
 -     * the verify callback, or not set SSL_VERIFY_PEER.
--     */
-     if (DANETLS_ENABLED(dane))
--        return dane_verify(ctx);
--    return verify_chain(ctx);
-+        ret = dane_verify(ctx);
-+    else
-+        ret = verify_chain(ctx);
-+
-+    /*
 +     * Safety-net.  If we are returning an error, we must also set ctx->error,
 +     * so that the chain is not considered verified should the error be ignored
 +     * (e.g. TLS with SSL_VERIFY_NONE).
-+     */
+      */
+-    if (DANETLS_ENABLED(dane))
+-        return dane_verify(ctx);
+-    return verify_chain(ctx);
 +    if (ret <= 0 && ctx->error == X509_V_OK)
 +        ctx->error = X509_V_ERR_UNSPECIFIED;
 +    return ret;
  }
  
  /*
-@@ -610,8 +570,16 @@ static int check_name_constraints(X509_STORE_CTX *ctx)
+@@ -573,10 +533,24 @@ static int check_chain_extensions(X509_STORE_CTX *ctx)
+          * the next certificate must be a CA certificate.
+          */
+         if (x->ex_flags & EXFLAG_PROXY) {
+-            if (x->ex_pcpathlen != -1 && i > x->ex_pcpathlen) {
+-                if (!verify_cb_cert(ctx, x, i,
+-                                    X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED))
+-                    return 0;
++            /*
++             * RFC3820, 4.1.3 (b)(1) stipulates that if pCPathLengthConstraint
++             * is less than max_path_length, the former should be copied to
++             * the latter, and 4.1.4 (a) stipulates that max_path_length
++             * should be verified to be larger than zero and decrement it.
++             *
++             * Because we're checking the certs in the reverse order, we start
++             * with verifying that proxy_path_length isn't larger than pcPLC,
++             * and copy the latter to the former if it is, and finally,
++             * increment proxy_path_length.
++             */
++            if (x->ex_pcpathlen != -1) {
++                if (proxy_path_length > x->ex_pcpathlen) {
++                    if (!verify_cb_cert(ctx, x, i,
++                                        X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED))
++                        return 0;
++                }
++                proxy_path_length = x->ex_pcpathlen;
+             }
+             proxy_path_length++;
+             must_be_ca = 0;
+@@ -598,6 +572,79 @@ static int check_name_constraints(X509_STORE_CTX *ctx)
+         /* Ignore self issued certs unless last in chain */
+         if (i && (x->ex_flags & EXFLAG_SI))
+             continue;
++
++        /*
++         * Proxy certificates policy has an extra constraint, where the
++         * certificate subject MUST be the issuer with a single CN entry
++         * added.
++         * (RFC 3820: 3.4, 4.1.3 (a)(4))
++         */
++        if (x->ex_flags & EXFLAG_PROXY) {
++            X509_NAME *tmpsubject = X509_get_subject_name(x);
++            X509_NAME *tmpissuer = X509_get_issuer_name(x);
++            X509_NAME_ENTRY *tmpentry = NULL;
++            int last_object_nid = 0;
++            int err = X509_V_OK;
++            int last_object_loc = X509_NAME_entry_count(tmpsubject) - 1;
++
++            /* Check that there are at least two RDNs */
++            if (last_object_loc < 1) {
++                err = X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION;
++                goto proxy_name_done;
++            }
++
++            /*
++             * Check that there is exactly one more RDN in subject as
++             * there is in issuer.
++             */
++            if (X509_NAME_entry_count(tmpsubject)
++                != X509_NAME_entry_count(tmpissuer) + 1) {
++                err = X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION;
++                goto proxy_name_done;
++            }
++
++            /*
++             * Check that the last subject component isn't part of a
++             * multivalued RDN
++             */
++            if (X509_NAME_ENTRY_set(X509_NAME_get_entry(tmpsubject,
++                                                        last_object_loc))
++                == X509_NAME_ENTRY_set(X509_NAME_get_entry(tmpsubject,
++                                                           last_object_loc - 1))) {
++                err = X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION;
++                goto proxy_name_done;
++            }
++
++            /*
++             * Check that the last subject RDN is a commonName, and that
++             * all the previous RDNs match the issuer exactly
++             */
++            tmpsubject = X509_NAME_dup(tmpsubject);
++            if (tmpsubject == NULL) {
++                X509err(X509_F_CHECK_NAME_CONSTRAINTS, ERR_R_MALLOC_FAILURE);
++                ctx->error = X509_V_ERR_OUT_OF_MEM;
++                return 0;
++            }
++
++            tmpentry =
++                X509_NAME_delete_entry(tmpsubject, last_object_loc);
++            last_object_nid =
++                OBJ_obj2nid(X509_NAME_ENTRY_get_object(tmpentry));
++
++            if (last_object_nid != NID_commonName
++                || X509_NAME_cmp(tmpsubject, tmpissuer) != 0) {
++                err = X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION;
++            }
++
++            X509_NAME_ENTRY_free(tmpentry);
++            X509_NAME_free(tmpsubject);
++
++         proxy_name_done:
++            if (err != X509_V_OK
++                && !verify_cb_cert(ctx, x, i, err))
++                return 0;
++        }
++
+         /*
+          * Check against constraints for all certificates higher in chain
+          * including trust anchor. Trust anchor not strictly speaking needed
+@@ -610,8 +657,16 @@ static int check_name_constraints(X509_STORE_CTX *ctx)
              if (nc) {
                  int rv = NAME_CONSTRAINTS_check(x, nc);
  
@@ -84593,7 +91944,7 @@
              }
          }
      }
-@@ -1505,6 +1473,7 @@ static int check_policy(X509_STORE_CTX *ctx)
+@@ -1505,6 +1560,7 @@ static int check_policy(X509_STORE_CTX *ctx)
       */
      if (ctx->bare_ta_signed && !sk_X509_push(ctx->chain, NULL)) {
          X509err(X509_F_CHECK_POLICY, ERR_R_MALLOC_FAILURE);
@@ -84601,7 +91952,7 @@
          return 0;
      }
      ret = X509_policy_check(&ctx->tree, &ctx->explicit_policy, ctx->chain,
-@@ -1514,6 +1483,7 @@ static int check_policy(X509_STORE_CTX *ctx)
+@@ -1514,6 +1570,7 @@ static int check_policy(X509_STORE_CTX *ctx)
  
      if (ret == X509_PCY_TREE_INTERNAL) {
          X509err(X509_F_CHECK_POLICY, ERR_R_MALLOC_FAILURE);
@@ -84609,7 +91960,7 @@
          return 0;
      }
      /* Invalid or inconsistent extensions */
-@@ -1544,7 +1514,12 @@ static int check_policy(X509_STORE_CTX *ctx)
+@@ -1544,7 +1601,12 @@ static int check_policy(X509_STORE_CTX *ctx)
  
      if (ctx->param->flags & X509_V_FLAG_NOTIFY_POLICY) {
          ctx->current_cert = NULL;
@@ -84623,7 +91974,7 @@
          if (!ctx->verify_cb(2, ctx))
              return 0;
      }
-@@ -1989,11 +1964,21 @@ int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx)
+@@ -1989,11 +2051,21 @@ int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx)
      return ctx->error_depth;
  }
  
@@ -84645,7 +91996,7 @@
  STACK_OF(X509) *X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx)
  {
      return ctx->chain;
-@@ -2161,11 +2146,10 @@ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
+@@ -2161,11 +2233,10 @@ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
      /* Zero ex_data to make sure we're cleanup-safe */
      memset(&ctx->ex_data, 0, sizeof(ctx->ex_data));
  
@@ -84660,7 +92011,7 @@
          ctx->cleanup = 0;
  
      if (store && store->check_issued)
-@@ -2211,12 +2195,12 @@ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
+@@ -2211,12 +2282,12 @@ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
      if (store && store->lookup_certs)
          ctx->lookup_certs = store->lookup_certs;
      else
@@ -84675,7 +92026,7 @@
  
      ctx->check_policy = check_policy;
  
-@@ -2549,9 +2533,9 @@ static int dane_match(X509_STORE_CTX *ctx, X509 *cert, int depth)
+@@ -2549,9 +2620,9 @@ static int dane_match(X509_STORE_CTX *ctx, X509 *cert, int depth)
              cmplen = i2dlen;
  
              if (md != NULL) {
@@ -84688,7 +92039,7 @@
                      break;
                  }
              }
-@@ -2781,15 +2765,31 @@ static int build_chain(X509_STORE_CTX *ctx)
+@@ -2781,15 +2852,31 @@ static int build_chain(X509_STORE_CTX *ctx)
       */
      if (ctx->untrusted && (sktmp = sk_X509_dup(ctx->untrusted)) == NULL) {
          X509err(X509_F_BUILD_CHAIN, ERR_R_MALLOC_FAILURE);
@@ -84721,7 +92072,7 @@
                  return 0;
              }
          }
-@@ -2853,6 +2853,7 @@ static int build_chain(X509_STORE_CTX *ctx)
+@@ -2853,6 +2940,7 @@ static int build_chain(X509_STORE_CTX *ctx)
  
              if (ok < 0) {
                  trust = X509_TRUST_REJECTED;
@@ -84729,7 +92080,7 @@
                  search = 0;
                  continue;
              }
-@@ -2899,6 +2900,7 @@ static int build_chain(X509_STORE_CTX *ctx)
+@@ -2899,6 +2987,7 @@ static int build_chain(X509_STORE_CTX *ctx)
                          X509_free(xtmp);
                          X509err(X509_F_BUILD_CHAIN, ERR_R_MALLOC_FAILURE);
                          trust = X509_TRUST_REJECTED;
@@ -84737,7 +92088,7 @@
                          search = 0;
                          continue;
                      }
-@@ -2995,6 +2997,7 @@ static int build_chain(X509_STORE_CTX *ctx)
+@@ -2995,6 +3084,7 @@ static int build_chain(X509_STORE_CTX *ctx)
              if (!sk_X509_push(ctx->chain, xtmp)) {
                  X509err(X509_F_BUILD_CHAIN, ERR_R_MALLOC_FAILURE);
                  trust = X509_TRUST_REJECTED;
@@ -84746,7 +92097,7 @@
                  continue;
              }
 diff --git a/crypto/x509/x509_vpm.c b/crypto/x509/x509_vpm.c
-index 4a0bed021c46..05c785217aa7 100644
+index 4a0bed0..05c7852 100644
 --- a/crypto/x509/x509_vpm.c
 +++ b/crypto/x509/x509_vpm.c
 @@ -1,59 +1,10 @@
@@ -84849,7 +92200,7 @@
      return 1;
  }
 diff --git a/crypto/x509/x509cset.c b/crypto/x509/x509cset.c
-index ab5f192a15d7..43ff668b719f 100644
+index ab5f192..43ff668 100644
 --- a/crypto/x509/x509cset.c
 +++ b/crypto/x509/x509cset.c
 @@ -1,59 +1,10 @@
@@ -84937,15 +92288,13 @@
  
  long X509_CRL_get_version(X509_CRL *crl)
 diff --git a/crypto/x509/x509name.c b/crypto/x509/x509name.c
-index 2a5e1ce064e8..6cd22b4aa799 100644
+index 2a5e1ce..6cd22b4 100644
 --- a/crypto/x509/x509name.c
 +++ b/crypto/x509/x509name.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -84993,7 +92342,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -85006,7 +92357,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x509rset.c b/crypto/x509/x509rset.c
-index e8afcacd4a1a..6dee297a1913 100644
+index e8afcac..6dee297 100644
 --- a/crypto/x509/x509rset.c
 +++ b/crypto/x509/x509rset.c
 @@ -1,58 +1,10 @@
@@ -85075,7 +92426,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x509spki.c b/crypto/x509/x509spki.c
-index 6efcb96a7b76..b142485dbbd2 100644
+index 6efcb96..b142485 100644
 --- a/crypto/x509/x509spki.c
 +++ b/crypto/x509/x509spki.c
 @@ -1,59 +1,10 @@
@@ -85144,7 +92495,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x509type.c b/crypto/x509/x509type.c
-index 870b47f8515d..9acab0440194 100644
+index 870b47f..9acab04 100644
 --- a/crypto/x509/x509type.c
 +++ b/crypto/x509/x509type.c
 @@ -1,58 +1,10 @@
@@ -85213,7 +92564,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x_all.c b/crypto/x509/x_all.c
-index 0f28c58f2b19..d9f42edaab14 100644
+index 0f28c58..d9f42ed 100644
 --- a/crypto/x509/x_all.c
 +++ b/crypto/x509/x_all.c
 @@ -1,58 +1,10 @@
@@ -85282,7 +92633,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x_attrib.c b/crypto/x509/x_attrib.c
-index 7ee99cafcf82..35f4aeef2a9d 100644
+index 7ee99ca..35f4aee 100644
 --- a/crypto/x509/x_attrib.c
 +++ b/crypto/x509/x_attrib.c
 @@ -1,58 +1,10 @@
@@ -85351,15 +92702,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x_crl.c b/crypto/x509/x_crl.c
-index 0be84057ab8e..f4bcea56d1ee 100644
+index 0be8405..f4bcea5 100644
 --- a/crypto/x509/x_crl.c
 +++ b/crypto/x509/x_crl.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -85407,7 +92756,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -85420,7 +92771,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x_exten.c b/crypto/x509/x_exten.c
-index 3b4dd861656c..f10f4a4d8769 100644
+index 3b4dd86..f10f4a4 100644
 --- a/crypto/x509/x_exten.c
 +++ b/crypto/x509/x_exten.c
 @@ -1,59 +1,10 @@
@@ -85489,15 +92840,13 @@
  
  #include <stddef.h>
 diff --git a/crypto/x509/x_name.c b/crypto/x509/x_name.c
-index 5e6abebbea67..f0b35fb4fadc 100644
+index 5e6abeb..d5b12f1 100644
 --- a/crypto/x509/x_name.c
 +++ b/crypto/x509/x_name.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -85545,7 +92894,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -85589,7 +92940,16 @@
  
      OPENSSL_free(a->canon_enc);
      a->canon_enc = NULL;
-@@ -370,7 +331,10 @@ static int x509_name_canon(X509_NAME *a)
+@@ -361,6 +322,8 @@ static int x509_name_canon(X509_NAME *a)
+         if (tmpentry == NULL)
+             goto err;
+         tmpentry->object = OBJ_dup(entry->object);
++        if (tmpentry->object == NULL)
++            goto err;
+         if (!asn1_string_canon(tmpentry->value, entry->value))
+             goto err;
+         if (!sk_X509_NAME_ENTRY_push(entries, tmpentry))
+@@ -370,7 +333,10 @@ static int x509_name_canon(X509_NAME *a)
  
      /* Finally generate encoding */
  
@@ -85601,16 +92961,27 @@
  
      p = OPENSSL_malloc(a->canon_enclen);
  
+@@ -432,10 +398,10 @@ static int asn1_string_canon(ASN1_STRING *out, ASN1_STRING *in)
+         len--;
+     }
+ 
+-    to = from + len - 1;
++    to = from + len;
+ 
+     /* Ignore trailing spaces */
+-    while ((len > 0) && !(*to & 0x80) && isspace(*to)) {
++    while ((len > 0) && !(to[-1] & 0x80) && isspace(to[-1])) {
+         to--;
+         len--;
+     }
 diff --git a/crypto/x509/x_pubkey.c b/crypto/x509/x_pubkey.c
-index 485d768dc45e..cc692834d1fa 100644
+index 485d768..cc69283 100644
 --- a/crypto/x509/x_pubkey.c
 +++ b/crypto/x509/x_pubkey.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -85658,7 +93029,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -85671,7 +93044,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x_req.c b/crypto/x509/x_req.c
-index 2fdf0150038f..c2da95a73ecf 100644
+index 2fdf015..c2da95a 100644
 --- a/crypto/x509/x_req.c
 +++ b/crypto/x509/x_req.c
 @@ -1,58 +1,10 @@
@@ -85740,15 +93113,13 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509/x_x509.c b/crypto/x509/x_x509.c
-index 34639555baae..9445430b47a2 100644
+index 3463955..9445430 100644
 --- a/crypto/x509/x_x509.c
 +++ b/crypto/x509/x_x509.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -85796,7 +93167,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -85895,7 +93268,7 @@
  }
  
 diff --git a/crypto/x509/x_x509a.c b/crypto/x509/x_x509a.c
-index a274ec98d9f4..2efa214cb200 100644
+index a274ec9..2efa214 100644
 --- a/crypto/x509/x_x509a.c
 +++ b/crypto/x509/x_x509a.c
 @@ -1,59 +1,10 @@
@@ -85965,7 +93338,7 @@
  #include <stdio.h>
 diff --git a/crypto/x509v3/Makefile.in b/crypto/x509v3/Makefile.in
 deleted file mode 100644
-index 5598ddbeafe9..000000000000
+index 5598ddb..0000000
 --- a/crypto/x509v3/Makefile.in
 +++ /dev/null
 @@ -1,53 +0,0 @@
@@ -86023,10 +93396,10 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/crypto/x509v3/ext_dat.h b/crypto/x509v3/ext_dat.h
-index 4e213f3884eb..332cb874742d 100644
+index 4e213f3..c9ede96 100644
 --- a/crypto/x509v3/ext_dat.h
 +++ b/crypto/x509v3/ext_dat.h
-@@ -1,59 +1,10 @@
+@@ -1,66 +1,17 @@
  /*
 - * Written by Dr Stephen N Henson (steve at openssl.org) for the OpenSSL project
 - * 1999.
@@ -86091,8 +93464,23 @@
   */
  
  int name_cmp(const char *name, const char *cmp);
+ 
+ extern const X509V3_EXT_METHOD v3_bcons, v3_nscert, v3_key_usage, v3_ext_ku;
+ extern const X509V3_EXT_METHOD v3_pkey_usage_period, v3_sxnet, v3_info, v3_sinfo;
+-extern const X509V3_EXT_METHOD v3_ns_ia5_list[], v3_alt[], v3_skey_id, v3_akey_id;
++extern const X509V3_EXT_METHOD v3_ns_ia5_list[8], v3_alt[3], v3_skey_id, v3_akey_id;
+ extern const X509V3_EXT_METHOD v3_crl_num, v3_crl_reason, v3_crl_invdate;
+ extern const X509V3_EXT_METHOD v3_delta_crl, v3_cpols, v3_crld, v3_freshest_crl;
+ extern const X509V3_EXT_METHOD v3_ocsp_nonce, v3_ocsp_accresp, v3_ocsp_acutoff;
+@@ -69,5 +20,5 @@ extern const X509V3_EXT_METHOD v3_crl_hold, v3_pci;
+ extern const X509V3_EXT_METHOD v3_policy_mappings, v3_policy_constraints;
+ extern const X509V3_EXT_METHOD v3_name_constraints, v3_inhibit_anyp, v3_idp;
+ extern const X509V3_EXT_METHOD v3_addr, v3_asid;
+-extern const X509V3_EXT_METHOD v3_ct_scts[];
++extern const X509V3_EXT_METHOD v3_ct_scts[3];
+ extern const X509V3_EXT_METHOD v3_tls_feature;
 diff --git a/crypto/x509v3/pcy_cache.c b/crypto/x509v3/pcy_cache.c
-index bdce5a83bbd5..a9ee30a8d913 100644
+index bdce5a8..a9ee30a 100644
 --- a/crypto/x509v3/pcy_cache.c
 +++ b/crypto/x509v3/pcy_cache.c
 @@ -1,59 +1,10 @@
@@ -86171,7 +93559,7 @@
      if (cache == NULL)
          return 0;
 diff --git a/crypto/x509v3/pcy_data.c b/crypto/x509v3/pcy_data.c
-index 03631d7a1035..6cc74deb4675 100644
+index 03631d7..cf1d635 100644
 --- a/crypto/x509v3/pcy_data.c
 +++ b/crypto/x509v3/pcy_data.c
 @@ -1,59 +1,10 @@
@@ -86239,8 +93627,20 @@
   */
  
  #include "internal/cryptlib.h"
+@@ -77,9 +28,9 @@ void policy_data_free(X509_POLICY_DATA *data)
+ }
+ 
+ /*
+- * Create a data based on an existing policy. If 'id' is NULL use the oid in
++ * Create a data based on an existing policy. If 'id' is NULL use the OID in
+  * the policy, otherwise use 'id'. This behaviour covers the two types of
+- * data in RFC3280: data with from a CertificatePolcies extension and
++ * data in RFC3280: data with from a CertificatePolicies extension and
+  * additional data with just the qualifiers of anyPolicy and ID from another
+  * source.
+  */
 diff --git a/crypto/x509v3/pcy_int.h b/crypto/x509v3/pcy_int.h
-index 809dc5e43692..5daf78de4585 100644
+index 809dc5e..5daf78d 100644
 --- a/crypto/x509v3/pcy_int.h
 +++ b/crypto/x509v3/pcy_int.h
 @@ -1,59 +1,10 @@
@@ -86318,7 +93718,7 @@
      STACK_OF(X509_POLICY_NODE) *user_policies;
      unsigned int flags;
 diff --git a/crypto/x509v3/pcy_lib.c b/crypto/x509v3/pcy_lib.c
-index f3ec70db8a54..67f7eafc6e8d 100644
+index f3ec70d..67f7eaf 100644
 --- a/crypto/x509v3/pcy_lib.c
 +++ b/crypto/x509v3/pcy_lib.c
 @@ -1,59 +1,10 @@
@@ -86387,7 +93787,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/x509v3/pcy_map.c b/crypto/x509v3/pcy_map.c
-index 415e5ddf25fb..ab9dd21b7d93 100644
+index 415e5dd..ab9dd21 100644
 --- a/crypto/x509v3/pcy_map.c
 +++ b/crypto/x509v3/pcy_map.c
 @@ -1,59 +1,10 @@
@@ -86456,7 +93856,7 @@
  
  #include "internal/cryptlib.h"
 diff --git a/crypto/x509v3/pcy_node.c b/crypto/x509v3/pcy_node.c
-index 581c246b7480..80443bff913e 100644
+index 581c246..80443bf 100644
 --- a/crypto/x509v3/pcy_node.c
 +++ b/crypto/x509v3/pcy_node.c
 @@ -1,59 +1,10 @@
@@ -86525,7 +93925,7 @@
  
  #include <openssl/asn1.h>
 diff --git a/crypto/x509v3/pcy_tree.c b/crypto/x509v3/pcy_tree.c
-index b3995d64e524..8c13c53fc7fd 100644
+index b3995d6..df50d80 100644
 --- a/crypto/x509v3/pcy_tree.c
 +++ b/crypto/x509v3/pcy_tree.c
 @@ -1,59 +1,10 @@
@@ -86593,8 +93993,17 @@
   */
  
  #include "internal/cryptlib.h"
+@@ -167,7 +118,7 @@ static int tree_init(X509_POLICY_TREE **ptree, STACK_OF(X509) *certs,
+         X509_check_purpose(x, -1, 0);
+ 
+         /* If cache is NULL, likely ENOMEM: return immediately */
+-        if ((cache = policy_cache_set(x)) == NULL)
++        if (policy_cache_set(x) == NULL)
+             return X509_PCY_TREE_INTERNAL;
+     }
+ 
 diff --git a/crypto/x509v3/tabtest.c b/crypto/x509v3/tabtest.c
-index 4a3d1033e607..a33a63a79584 100644
+index 4a3d103..a33a63a 100644
 --- a/crypto/x509v3/tabtest.c
 +++ b/crypto/x509v3/tabtest.c
 @@ -1,59 +1,10 @@
@@ -86663,7 +94072,7 @@
  
  /*
 diff --git a/crypto/x509v3/v3_addr.c b/crypto/x509v3/v3_addr.c
-index 49d0d4d3929c..be8ca5dcbb5a 100644
+index 49d0d4d..be8ca5d 100644
 --- a/crypto/x509v3/v3_addr.c
 +++ b/crypto/x509v3/v3_addr.c
 @@ -1,58 +1,10 @@
@@ -86673,8 +94082,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2006 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -86696,7 +94104,8 @@
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
 - *    licensing at OpenSSL.org.
-- *
++ * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 5. Products derived from this software may not be called "OpenSSL"
 - *    nor may "OpenSSL" appear in their names without prior written
 - *    permission of the OpenSSL Project.
@@ -86761,7 +94170,7 @@
          goto done;
      }
 diff --git a/crypto/x509v3/v3_akey.c b/crypto/x509v3/v3_akey.c
-index edf63961c100..d9f770433cfb 100644
+index edf6396..d9f7704 100644
 --- a/crypto/x509v3/v3_akey.c
 +++ b/crypto/x509v3/v3_akey.c
 @@ -1,59 +1,10 @@
@@ -86847,7 +94256,7 @@
      ASN1_INTEGER_free(serial);
      ASN1_OCTET_STRING_free(ikeyid);
 diff --git a/crypto/x509v3/v3_akeya.c b/crypto/x509v3/v3_akeya.c
-index cc0c1edf4017..d6dd6bcb9b96 100644
+index cc0c1ed..d6dd6bc 100644
 --- a/crypto/x509v3/v3_akeya.c
 +++ b/crypto/x509v3/v3_akeya.c
 @@ -1,59 +1,10 @@
@@ -86916,7 +94325,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_alt.c b/crypto/x509v3/v3_alt.c
-index 4b143f95c83f..05dfe36a33c1 100644
+index 4b143f9..34b950e 100644
 --- a/crypto/x509v3/v3_alt.c
 +++ b/crypto/x509v3/v3_alt.c
 @@ -1,59 +1,10 @@
@@ -86984,8 +94393,49 @@
   */
  
  #include <stdio.h>
+@@ -70,10 +21,10 @@ static GENERAL_NAMES *v2i_issuer_alt(X509V3_EXT_METHOD *method,
+                                      STACK_OF(CONF_VALUE) *nval);
+ static int copy_email(X509V3_CTX *ctx, GENERAL_NAMES *gens, int move_p);
+ static int copy_issuer(X509V3_CTX *ctx, GENERAL_NAMES *gens);
+-static int do_othername(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx);
+-static int do_dirname(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx);
++static int do_othername(GENERAL_NAME *gen, const char *value, X509V3_CTX *ctx);
++static int do_dirname(GENERAL_NAME *gen, const char *value, X509V3_CTX *ctx);
+ 
+-const X509V3_EXT_METHOD v3_alt[] = {
++const X509V3_EXT_METHOD v3_alt[3] = {
+     {NID_subject_alt_name, 0, ASN1_ITEM_ref(GENERAL_NAMES),
+      0, 0, 0, 0,
+      0, 0,
+@@ -431,7 +382,7 @@ GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method,
+ 
+ GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out,
+                                const X509V3_EXT_METHOD *method,
+-                               X509V3_CTX *ctx, int gen_type, char *value,
++                               X509V3_CTX *ctx, int gen_type, const char *value,
+                                int is_nc)
+ {
+     char is_string = 0;
+@@ -560,7 +511,7 @@ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
+ 
+ }
+ 
+-static int do_othername(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx)
++static int do_othername(GENERAL_NAME *gen, const char *value, X509V3_CTX *ctx)
+ {
+     char *objtmp = NULL, *p;
+     int objlen;
+@@ -587,7 +538,7 @@ static int do_othername(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx)
+     return 1;
+ }
+ 
+-static int do_dirname(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx)
++static int do_dirname(GENERAL_NAME *gen, const char *value, X509V3_CTX *ctx)
+ {
+     int ret = 0;
+     STACK_OF(CONF_VALUE) *sk = NULL;
 diff --git a/crypto/x509v3/v3_asid.c b/crypto/x509v3/v3_asid.c
-index 73cbbd1b93e9..af4fcf4cd5c1 100644
+index 73cbbd1..af4fcf4 100644
 --- a/crypto/x509v3/v3_asid.c
 +++ b/crypto/x509v3/v3_asid.c
 @@ -1,58 +1,10 @@
@@ -86995,8 +94445,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2006 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -87041,7 +94490,8 @@
 - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 - * OF THE POSSIBILITY OF SUCH DAMAGE.
 - * ====================================================================
-- *
++ * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
@@ -87053,7 +94503,7 @@
  
  /*
 diff --git a/crypto/x509v3/v3_bcons.c b/crypto/x509v3/v3_bcons.c
-index 3c2f88a62156..3bbf15550d32 100644
+index 3c2f88a..3bbf155 100644
 --- a/crypto/x509v3/v3_bcons.c
 +++ b/crypto/x509v3/v3_bcons.c
 @@ -1,59 +1,10 @@
@@ -87122,7 +94572,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_bitst.c b/crypto/x509v3/v3_bitst.c
-index a0db610b29ea..4802116ba0d4 100644
+index a0db610..4802116 100644
 --- a/crypto/x509v3/v3_bitst.c
 +++ b/crypto/x509v3/v3_bitst.c
 @@ -1,59 +1,10 @@
@@ -87191,7 +94641,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_conf.c b/crypto/x509v3/v3_conf.c
-index c7d268247da8..4e118c10ab56 100644
+index c7d2682..1bed5f3 100644
 --- a/crypto/x509v3/v3_conf.c
 +++ b/crypto/x509v3/v3_conf.c
 @@ -1,60 +1,12 @@
@@ -87250,9 +94700,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -87408,6 +94857,24 @@
                               X509_REQ *req)
  {
      STACK_OF(X509_EXTENSION) *extlist = NULL, **sk = NULL;
+@@ -409,7 +363,7 @@ int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section,
+ 
+ /* Config database functions */
+ 
+-char *X509V3_get_string(X509V3_CTX *ctx, char *name, char *section)
++char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section)
+ {
+     if (!ctx->db || !ctx->db_meth || !ctx->db_meth->get_string) {
+         X509V3err(X509V3_F_X509V3_GET_STRING, X509V3_R_OPERATION_NOT_DEFINED);
+@@ -420,7 +374,7 @@ char *X509V3_get_string(X509V3_CTX *ctx, char *name, char *section)
+     return NULL;
+ }
+ 
+-STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, char *section)
++STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section)
+ {
+     if (!ctx->db || !ctx->db_meth || !ctx->db_meth->get_section) {
+         X509V3err(X509V3_F_X509V3_GET_SECTION,
 @@ -448,12 +402,12 @@ void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section)
          ctx->db_meth->free_section(ctx->db, section);
  }
@@ -87483,7 +94950,7 @@
      CONF ctmp;
      CONF_set_nconf(&ctmp, conf);
 diff --git a/crypto/x509v3/v3_cpols.c b/crypto/x509v3/v3_cpols.c
-index b4dd3ad9feb1..81d0d996a93c 100644
+index b4dd3ad..a697338 100644
 --- a/crypto/x509v3/v3_cpols.c
 +++ b/crypto/x509v3/v3_cpols.c
 @@ -1,59 +1,10 @@
@@ -87551,6 +95018,24 @@
   */
  
  #include <stdio.h>
+@@ -71,7 +22,7 @@
+ static int i2r_certpol(X509V3_EXT_METHOD *method, STACK_OF(POLICYINFO) *pol,
+                        BIO *out, int indent);
+ static STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method,
+-                                         X509V3_CTX *ctx, char *value);
++                                         X509V3_CTX *ctx, const char *value);
+ static void print_qualifiers(BIO *out, STACK_OF(POLICYQUALINFO) *quals,
+                              int indent);
+ static void print_notice(BIO *out, USERNOTICE *notice, int indent);
+@@ -133,7 +84,7 @@ ASN1_SEQUENCE(NOTICEREF) = {
+ IMPLEMENT_ASN1_FUNCTIONS(NOTICEREF)
+ 
+ static STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method,
+-                                         X509V3_CTX *ctx, char *value)
++                                         X509V3_CTX *ctx, const char *value)
+ {
+     STACK_OF(POLICYINFO) *pols = NULL;
+     char *pstr;
 @@ -188,6 +139,7 @@ static STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method,
              pol = POLICYINFO_new();
              if (pol == NULL) {
@@ -87568,7 +95053,7 @@
              }
              ret = nref_nos(nref->noticenos, nos);
 diff --git a/crypto/x509v3/v3_crld.c b/crypto/x509v3/v3_crld.c
-index d9442a2a526c..c4c77f185109 100644
+index d9442a2..c4c77f1 100644
 --- a/crypto/x509v3/v3_crld.c
 +++ b/crypto/x509v3/v3_crld.c
 @@ -1,59 +1,10 @@
@@ -87651,7 +95136,7 @@
          bnam = sk_CONF_VALUE_value(rsk, i)->name;
          if (*preas == NULL) {
 diff --git a/crypto/x509v3/v3_enum.c b/crypto/x509v3/v3_enum.c
-index 26ef657fe6c6..03daef9947e8 100644
+index 26ef657..03daef9 100644
 --- a/crypto/x509v3/v3_enum.c
 +++ b/crypto/x509v3/v3_enum.c
 @@ -1,59 +1,10 @@
@@ -87720,7 +95205,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_extku.c b/crypto/x509v3/v3_extku.c
-index 354b828470d3..bae755e3f2c9 100644
+index 354b828..bae755e 100644
 --- a/crypto/x509v3/v3_extku.c
 +++ b/crypto/x509v3/v3_extku.c
 @@ -1,59 +1,10 @@
@@ -87789,7 +95274,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_genn.c b/crypto/x509v3/v3_genn.c
-index d225d0d5a480..8d1199748c86 100644
+index d225d0d..8d11997 100644
 --- a/crypto/x509v3/v3_genn.c
 +++ b/crypto/x509v3/v3_genn.c
 @@ -1,59 +1,10 @@
@@ -87858,7 +95343,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_ia5.c b/crypto/x509v3/v3_ia5.c
-index 073a2bbc6e5b..5e230df7d00b 100644
+index 073a2bb..c1170d4 100644
 --- a/crypto/x509v3/v3_ia5.c
 +++ b/crypto/x509v3/v3_ia5.c
 @@ -1,59 +1,10 @@
@@ -87926,6 +95411,15 @@
   */
  
  #include <stdio.h>
+@@ -63,7 +14,7 @@
+ #include <openssl/x509v3.h>
+ #include "ext_dat.h"
+ 
+-const X509V3_EXT_METHOD v3_ns_ia5_list[] = {
++const X509V3_EXT_METHOD v3_ns_ia5_list[8] = {
+     EXT_IA5STRING(NID_netscape_base_url),
+     EXT_IA5STRING(NID_netscape_revocation_url),
+     EXT_IA5STRING(NID_netscape_ca_revocation_url),
 @@ -90,7 +41,7 @@ char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5)
  }
  
@@ -87949,7 +95443,7 @@
  #ifdef CHARSET_EBCDIC
      ebcdic2ascii(ia5->data, ia5->data, ia5->length);
 diff --git a/crypto/x509v3/v3_info.c b/crypto/x509v3/v3_info.c
-index 16e25fa1028a..bec8c425b053 100644
+index 16e25fa..bec8c42 100644
 --- a/crypto/x509v3/v3_info.c
 +++ b/crypto/x509v3/v3_info.c
 @@ -1,59 +1,10 @@
@@ -88018,7 +95512,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_int.c b/crypto/x509v3/v3_int.c
-index fc4dd927f04c..a644c3362380 100644
+index fc4dd92..690c90e 100644
 --- a/crypto/x509v3/v3_int.c
 +++ b/crypto/x509v3/v3_int.c
 @@ -1,59 +1,10 @@
@@ -88086,8 +95580,17 @@
   */
  
  #include <stdio.h>
+@@ -78,7 +29,7 @@ const X509V3_EXT_METHOD v3_delta_crl = {
+ };
+ 
+ static void *s2i_asn1_int(X509V3_EXT_METHOD *meth, X509V3_CTX *ctx,
+-                          char *value)
++                          const char *value)
+ {
+     return s2i_ASN1_INTEGER(meth, value);
+ }
 diff --git a/crypto/x509v3/v3_lib.c b/crypto/x509v3/v3_lib.c
-index a82050f3c24d..20b7d96e355c 100644
+index a82050f..20b7d96 100644
 --- a/crypto/x509v3/v3_lib.c
 +++ b/crypto/x509v3/v3_lib.c
 @@ -1,60 +1,12 @@
@@ -88146,9 +95649,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -88159,7 +95661,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_ncons.c b/crypto/x509v3/v3_ncons.c
-index 31e37a0fe86b..e6775ebaf912 100644
+index 31e37a0..413d9e9 100644
 --- a/crypto/x509v3/v3_ncons.c
 +++ b/crypto/x509v3/v3_ncons.c
 @@ -1,59 +1,10 @@
@@ -88227,8 +95729,26 @@
   */
  
  #include <stdio.h>
+@@ -72,7 +23,7 @@ static int i2r_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, void *a,
+                                 BIO *bp, int ind);
+ static int do_i2r_name_constraints(const X509V3_EXT_METHOD *method,
+                                    STACK_OF(GENERAL_SUBTREE) *trees, BIO *bp,
+-                                   int ind, char *name);
++                                   int ind, const char *name);
+ static int print_nc_ipadd(BIO *bp, ASN1_OCTET_STRING *ip);
+ 
+ static int nc_match(GENERAL_NAME *gen, NAME_CONSTRAINTS *nc);
+@@ -171,7 +122,7 @@ static int i2r_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, void *a,
+ 
+ static int do_i2r_name_constraints(const X509V3_EXT_METHOD *method,
+                                    STACK_OF(GENERAL_SUBTREE) *trees,
+-                                   BIO *bp, int ind, char *name)
++                                   BIO *bp, int ind, const char *name)
+ {
+     GENERAL_SUBTREE *tree;
+     int i;
 diff --git a/crypto/x509v3/v3_pci.c b/crypto/x509v3/v3_pci.c
-index cadedef62969..2c05edb828fc 100644
+index cadedef..2c05edb 100644
 --- a/crypto/x509v3/v3_pci.c
 +++ b/crypto/x509v3/v3_pci.c
 @@ -1,7 +1,12 @@
@@ -88247,7 +95767,7 @@
   * (Royal Institute of Technology, Stockholm, Sweden).
   * All rights reserved.
 diff --git a/crypto/x509v3/v3_pcia.c b/crypto/x509v3/v3_pcia.c
-index 99bf32504019..e6f7a91794a5 100644
+index 99bf325..e6f7a91 100644
 --- a/crypto/x509v3/v3_pcia.c
 +++ b/crypto/x509v3/v3_pcia.c
 @@ -1,7 +1,12 @@
@@ -88266,7 +95786,7 @@
   * (Royal Institute of Technology, Stockholm, Sweden).
   * All rights reserved.
 diff --git a/crypto/x509v3/v3_pcons.c b/crypto/x509v3/v3_pcons.c
-index 89960cafe15f..24f7ff49e57c 100644
+index 89960ca..24f7ff4 100644
 --- a/crypto/x509v3/v3_pcons.c
 +++ b/crypto/x509v3/v3_pcons.c
 @@ -1,59 +1,10 @@
@@ -88335,7 +95855,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_pku.c b/crypto/x509v3/v3_pku.c
-index 9f0c5da7425b..ed82bca8ba52 100644
+index 9f0c5da..ed82bca 100644
 --- a/crypto/x509v3/v3_pku.c
 +++ b/crypto/x509v3/v3_pku.c
 @@ -1,59 +1,10 @@
@@ -88404,7 +95924,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_pmaps.c b/crypto/x509v3/v3_pmaps.c
-index 1e7324bb847b..73f4ec246701 100644
+index 1e7324b..73f4ec2 100644
 --- a/crypto/x509v3/v3_pmaps.c
 +++ b/crypto/x509v3/v3_pmaps.c
 @@ -1,59 +1,10 @@
@@ -88526,7 +96046,7 @@
 +    return NULL;
  }
 diff --git a/crypto/x509v3/v3_prn.c b/crypto/x509v3/v3_prn.c
-index 457bd95bf71e..86666363a106 100644
+index 457bd95..8666636 100644
 --- a/crypto/x509v3/v3_prn.c
 +++ b/crypto/x509v3/v3_prn.c
 @@ -1,60 +1,12 @@
@@ -88585,9 +96105,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -88598,7 +96117,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_purp.c b/crypto/x509v3/v3_purp.c
-index ae82fd181cd0..92a8b1d86a79 100644
+index ae82fd1..fff0994 100644
 --- a/crypto/x509v3/v3_purp.c
 +++ b/crypto/x509v3/v3_purp.c
 @@ -1,59 +1,10 @@
@@ -88666,6 +96185,24 @@
   */
  
  #include <stdio.h>
+@@ -168,7 +119,7 @@ X509_PURPOSE *X509_PURPOSE_get0(int idx)
+     return sk_X509_PURPOSE_value(xptable, idx - X509_PURPOSE_COUNT);
+ }
+ 
+-int X509_PURPOSE_get_by_sname(char *sname)
++int X509_PURPOSE_get_by_sname(const char *sname)
+ {
+     int i;
+     X509_PURPOSE *xptmp;
+@@ -197,7 +148,7 @@ int X509_PURPOSE_get_by_id(int purpose)
+ 
+ int X509_PURPOSE_add(int id, int trust, int flags,
+                      int (*ck) (const X509_PURPOSE *, const X509 *, int),
+-                     char *name, char *sname, void *arg)
++                     const char *name, const char *sname, void *arg)
+ {
+     int idx;
+     X509_PURPOSE *ptmp;
 @@ -229,7 +180,7 @@ int X509_PURPOSE_add(int id, int trust, int flags,
      ptmp->sname = OPENSSL_strdup(sname);
      if (!ptmp->name || !ptmp->sname) {
@@ -88699,7 +96236,41 @@
  }
  
  static void xptable_free(X509_PURPOSE *p)
-@@ -880,3 +838,12 @@ const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x)
+@@ -271,29 +229,26 @@ static void xptable_free(X509_PURPOSE *p)
+ 
+ void X509_PURPOSE_cleanup(void)
+ {
+-    unsigned int i;
+     sk_X509_PURPOSE_pop_free(xptable, xptable_free);
+-    for (i = 0; i < X509_PURPOSE_COUNT; i++)
+-        xptable_free(xstandard + i);
+     xptable = NULL;
+ }
+ 
+-int X509_PURPOSE_get_id(X509_PURPOSE *xp)
++int X509_PURPOSE_get_id(const X509_PURPOSE *xp)
+ {
+     return xp->purpose;
+ }
+ 
+-char *X509_PURPOSE_get0_name(X509_PURPOSE *xp)
++char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp)
+ {
+     return xp->name;
+ }
+ 
+-char *X509_PURPOSE_get0_sname(X509_PURPOSE *xp)
++char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp)
+ {
+     return xp->sname;
+ }
+ 
+-int X509_PURPOSE_get_trust(X509_PURPOSE *xp)
++int X509_PURPOSE_get_trust(const X509_PURPOSE *xp)
+ {
+     return xp->trust;
+ }
+@@ -880,3 +835,12 @@ const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x)
      X509_check_purpose(x, -1, -1);
      return x->skid;
  }
@@ -88713,7 +96284,7 @@
 +    return x->ex_pathlen;
 +}
 diff --git a/crypto/x509v3/v3_skey.c b/crypto/x509v3/v3_skey.c
-index e633cd821767..4838b9b3fee2 100644
+index e633cd8..4838b9b 100644
 --- a/crypto/x509v3/v3_skey.c
 +++ b/crypto/x509v3/v3_skey.c
 @@ -1,59 +1,10 @@
@@ -88782,7 +96353,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_sxnet.c b/crypto/x509v3/v3_sxnet.c
-index 0f8ac5e72e37..5338466b88a5 100644
+index 0f8ac5e..5338466 100644
 --- a/crypto/x509v3/v3_sxnet.c
 +++ b/crypto/x509v3/v3_sxnet.c
 @@ -1,59 +1,10 @@
@@ -88851,7 +96422,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3_tlsf.c b/crypto/x509v3/v3_tlsf.c
-index 286db1d1f95b..fec67243f8d3 100644
+index 286db1d..fec6724 100644
 --- a/crypto/x509v3/v3_tlsf.c
 +++ b/crypto/x509v3/v3_tlsf.c
 @@ -1,58 +1,10 @@
@@ -88928,7 +96499,7 @@
          if (j < OSSL_NELEM(tls_feature_tbl))
              tlsextid = tls_feature_tbl[j].num;
 diff --git a/crypto/x509v3/v3_utl.c b/crypto/x509v3/v3_utl.c
-index ae9645d6873a..ad83de00acef 100644
+index ae9645d..f3c288f 100644
 --- a/crypto/x509v3/v3_utl.c
 +++ b/crypto/x509v3/v3_utl.c
 @@ -1,60 +1,12 @@
@@ -88987,9 +96558,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -88999,6 +96569,15 @@
  /* X509 v3 extension utilities */
  
  #include <stdio.h>
+@@ -134,7 +86,7 @@ int X509V3_add_value_bool(const char *name, int asn1_bool,
+     return X509V3_add_value(name, "FALSE", extlist);
+ }
+ 
+-int X509V3_add_value_bool_nf(char *name, int asn1_bool,
++int X509V3_add_value_bool_nf(const char *name, int asn1_bool,
+                              STACK_OF(CONF_VALUE) **extlist)
+ {
+     if (asn1_bool)
 @@ -170,7 +122,7 @@ char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *method, ASN1_INTEGER *a)
      return strtmp;
  }
@@ -89034,7 +96613,7 @@
      out[0] = num >> 8;
      out[1] = num & 0xff;
 diff --git a/crypto/x509v3/v3conf.c b/crypto/x509v3/v3conf.c
-index 95a24a590490..966ab90bc412 100644
+index 95a24a5..966ab90 100644
 --- a/crypto/x509v3/v3conf.c
 +++ b/crypto/x509v3/v3conf.c
 @@ -1,59 +1,10 @@
@@ -89103,7 +96682,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x509v3/v3err.c b/crypto/x509v3/v3err.c
-index e399b294b8f1..1f838bc018d1 100644
+index e399b29..1f838bc 100644
 --- a/crypto/x509v3/v3err.c
 +++ b/crypto/x509v3/v3err.c
 @@ -1,61 +1,11 @@
@@ -89236,7 +96815,7 @@
       "policy when proxy language requires no policy"},
      {ERR_REASON(X509V3_R_SECTION_NOT_FOUND), "section not found"},
 diff --git a/crypto/x509v3/v3prin.c b/crypto/x509v3/v3prin.c
-index 2c8902ee155d..7431a4ea61e3 100644
+index 2c8902e..7431a4e 100644
 --- a/crypto/x509v3/v3prin.c
 +++ b/crypto/x509v3/v3prin.c
 @@ -1,59 +1,10 @@
@@ -89305,7 +96884,7 @@
  
  #include <stdio.h>
 diff --git a/crypto/x86_64cpuid.pl b/crypto/x86_64cpuid.pl
-index db5aa4aa361d..285ad1ba7dba 100644
+index db5aa4a..285ad1b 100644
 --- a/crypto/x86_64cpuid.pl
 +++ b/crypto/x86_64cpuid.pl
 @@ -1,4 +1,11 @@
@@ -89330,7 +96909,7 @@
  *STDOUT=*OUT;
  
  ($arg1,$arg2,$arg3,$arg4)=$win64?("%rcx","%rdx","%r8", "%r9") :	# Win64 order
-@@ -217,6 +224,28 @@ print<<___;
+@@ -217,6 +224,28 @@ OPENSSL_cleanse:
  	jne	.Little
  	ret
  .size	OPENSSL_cleanse,.-OPENSSL_cleanse
@@ -89360,7 +96939,7 @@
  
  print<<___ if (!$win64);
 diff --git a/crypto/x86cpuid.pl b/crypto/x86cpuid.pl
-index 48c4cf204b73..99ffa1d2fbbd 100644
+index 48c4cf2..99ffa1d 100644
 --- a/crypto/x86cpuid.pl
 +++ b/crypto/x86cpuid.pl
 @@ -1,4 +1,10 @@
@@ -89409,7 +96988,7 @@
  my $lastdiff = "ebx";
 diff --git a/demos/bio/Makefile.in b/demos/bio/Makefile.in
 deleted file mode 100644
-index 04c5dc7e4e35..000000000000
+index 04c5dc7..0000000
 --- a/demos/bio/Makefile.in
 +++ /dev/null
 @@ -1,23 +0,0 @@
@@ -89437,7 +97016,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/demos/bio/client-arg.c b/demos/bio/client-arg.c
-index 630b16677959..9e136e563d0b 100644
+index 630b166..9e136e5 100644
 --- a/demos/bio/client-arg.c
 +++ b/demos/bio/client-arg.c
 @@ -1,3 +1,12 @@
@@ -89454,7 +97033,7 @@
  #include <openssl/err.h>
  #include <openssl/ssl.h>
 diff --git a/demos/bio/client-conf.c b/demos/bio/client-conf.c
-index 4e4d4bc8df24..66b5cac47ce5 100644
+index 4e4d4bc..66b5cac 100644
 --- a/demos/bio/client-conf.c
 +++ b/demos/bio/client-conf.c
 @@ -1,3 +1,12 @@
@@ -89471,7 +97050,7 @@
  #include <openssl/err.h>
  #include <openssl/ssl.h>
 diff --git a/demos/bio/saccept.c b/demos/bio/saccept.c
-index 240132cef911..106a089dafa7 100644
+index 240132c..106a089 100644
 --- a/demos/bio/saccept.c
 +++ b/demos/bio/saccept.c
 @@ -1,3 +1,12 @@
@@ -89488,7 +97067,7 @@
   * A minimal program to serve an SSL connection.
   * It uses blocking.
 diff --git a/demos/bio/sconnect.c b/demos/bio/sconnect.c
-index 16dba40ff573..284bc3094426 100644
+index 16dba40..284bc30 100644
 --- a/demos/bio/sconnect.c
 +++ b/demos/bio/sconnect.c
 @@ -1,3 +1,12 @@
@@ -89505,7 +97084,7 @@
   * A minimal program to do SSL to a passed host and port.
   * It is actually using non-blocking IO but in a very simple manner
 diff --git a/demos/bio/server-arg.c b/demos/bio/server-arg.c
-index b2a43a93876b..4e9b7bdcb08d 100644
+index b2a43a9..4e9b7bd 100644
 --- a/demos/bio/server-arg.c
 +++ b/demos/bio/server-arg.c
 @@ -1,4 +1,13 @@
@@ -89523,7 +97102,7 @@
   * SSL_CONF API with the command line. cc -I../../include server-arg.c
   * -L../.. -lssl -lcrypto -ldl
 diff --git a/demos/bio/server-cmod.c b/demos/bio/server-cmod.c
-index 51291da4b885..77b456a459ea 100644
+index 51291da..77b456a 100644
 --- a/demos/bio/server-cmod.c
 +++ b/demos/bio/server-cmod.c
 @@ -1,4 +1,13 @@
@@ -89541,7 +97120,7 @@
   * set most server parameters.
   */
 diff --git a/demos/bio/server-conf.c b/demos/bio/server-conf.c
-index db624ba1fbaa..32abefdf1d2c 100644
+index db624ba..32abefd 100644
 --- a/demos/bio/server-conf.c
 +++ b/demos/bio/server-conf.c
 @@ -1,4 +1,13 @@
@@ -89559,7 +97138,7 @@
   * the SSL_CONF API with a configuration file. cc -I../../include saccept.c
   * -L../.. -lssl -lcrypto -ldl
 diff --git a/demos/cms/cms_comp.c b/demos/cms/cms_comp.c
-index f902d20e6d1a..0d548f93ca8c 100644
+index f902d20..0d548f9 100644
 --- a/demos/cms/cms_comp.c
 +++ b/demos/cms/cms_comp.c
 @@ -1,3 +1,12 @@
@@ -89576,7 +97155,7 @@
  #include <openssl/pem.h>
  #include <openssl/cms.h>
 diff --git a/demos/cms/cms_ddec.c b/demos/cms/cms_ddec.c
-index 3b23e8d30b5c..8f2e9aecb21f 100644
+index 3b23e8d..8f2e9ae 100644
 --- a/demos/cms/cms_ddec.c
 +++ b/demos/cms/cms_ddec.c
 @@ -1,4 +1,13 @@
@@ -89594,7 +97173,7 @@
   * arise this is an example....
   */
 diff --git a/demos/cms/cms_dec.c b/demos/cms/cms_dec.c
-index 22181c25ffd9..4f9428b4e71a 100644
+index 22181c2..4f9428b 100644
 --- a/demos/cms/cms_dec.c
 +++ b/demos/cms/cms_dec.c
 @@ -1,3 +1,12 @@
@@ -89611,7 +97190,7 @@
  #include <openssl/pem.h>
  #include <openssl/cms.h>
 diff --git a/demos/cms/cms_denc.c b/demos/cms/cms_denc.c
-index 8aa82aa808d0..adba69b96dbd 100644
+index 8aa82aa..adba69b 100644
 --- a/demos/cms/cms_denc.c
 +++ b/demos/cms/cms_denc.c
 @@ -1,4 +1,13 @@
@@ -89629,7 +97208,7 @@
   * arise this is an example....
   */
 diff --git a/demos/cms/cms_enc.c b/demos/cms/cms_enc.c
-index f4ba5428eeed..4d17d720c63b 100644
+index f4ba542..4d17d72 100644
 --- a/demos/cms/cms_enc.c
 +++ b/demos/cms/cms_enc.c
 @@ -1,3 +1,12 @@
@@ -89646,7 +97225,7 @@
  #include <openssl/pem.h>
  #include <openssl/cms.h>
 diff --git a/demos/cms/cms_sign.c b/demos/cms/cms_sign.c
-index 8b5a64d95715..15bd5b8dd950 100644
+index 8b5a64d..15bd5b8 100644
 --- a/demos/cms/cms_sign.c
 +++ b/demos/cms/cms_sign.c
 @@ -1,3 +1,12 @@
@@ -89663,7 +97242,7 @@
  #include <openssl/pem.h>
  #include <openssl/cms.h>
 diff --git a/demos/cms/cms_sign2.c b/demos/cms/cms_sign2.c
-index 9fdd0353bfc9..14ebf2777520 100644
+index 9fdd035..14ebf27 100644
 --- a/demos/cms/cms_sign2.c
 +++ b/demos/cms/cms_sign2.c
 @@ -1,3 +1,12 @@
@@ -89680,7 +97259,7 @@
  #include <openssl/pem.h>
  #include <openssl/cms.h>
 diff --git a/demos/cms/cms_uncomp.c b/demos/cms/cms_uncomp.c
-index 2c10b8120ea3..3e3b4c4c6e95 100644
+index 2c10b81..3e3b4c4 100644
 --- a/demos/cms/cms_uncomp.c
 +++ b/demos/cms/cms_uncomp.c
 @@ -1,3 +1,12 @@
@@ -89697,7 +97276,7 @@
  #include <openssl/pem.h>
  #include <openssl/cms.h>
 diff --git a/demos/cms/cms_ver.c b/demos/cms/cms_ver.c
-index c6e83c054a42..43c10e2513c8 100644
+index c6e83c0..43c10e2 100644
 --- a/demos/cms/cms_ver.c
 +++ b/demos/cms/cms_ver.c
 @@ -1,3 +1,12 @@
@@ -89714,7 +97293,7 @@
  #include <openssl/pem.h>
  #include <openssl/cms.h>
 diff --git a/demos/evp/aesccm.c b/demos/evp/aesccm.c
-index e0240e58698c..cc4d0b5ee99a 100644
+index e0240e5..cc4d0b5 100644
 --- a/demos/evp/aesccm.c
 +++ b/demos/evp/aesccm.c
 @@ -1,4 +1,13 @@
@@ -89732,7 +97311,7 @@
   * self test but uses the application level EVP APIs.
   */
 diff --git a/demos/evp/aesgcm.c b/demos/evp/aesgcm.c
-index 72028a04a063..17b0ef47484f 100644
+index 72028a0..17b0ef4 100644
 --- a/demos/evp/aesgcm.c
 +++ b/demos/evp/aesgcm.c
 @@ -1,4 +1,13 @@
@@ -89750,7 +97329,7 @@
   * self test but uses the application level EVP APIs.
   */
 diff --git a/demos/pkcs12/pkread.c b/demos/pkcs12/pkread.c
-index 373981469d10..3b87d7a4ae23 100644
+index 3739814..3b87d7a 100644
 --- a/demos/pkcs12/pkread.c
 +++ b/demos/pkcs12/pkread.c
 @@ -1,3 +1,11 @@
@@ -89766,7 +97345,7 @@
  #include <stdio.h>
  #include <stdlib.h>
 diff --git a/demos/pkcs12/pkwrite.c b/demos/pkcs12/pkwrite.c
-index d04a22b8eb39..e14cf8327d62 100644
+index d04a22b..e14cf83 100644
 --- a/demos/pkcs12/pkwrite.c
 +++ b/demos/pkcs12/pkwrite.c
 @@ -1,3 +1,11 @@
@@ -89782,7 +97361,7 @@
  #include <stdio.h>
  #include <stdlib.h>
 diff --git a/demos/smime/smdec.c b/demos/smime/smdec.c
-index f1a987a34e25..c4d1b090d972 100644
+index f1a987a..c4d1b09 100644
 --- a/demos/smime/smdec.c
 +++ b/demos/smime/smdec.c
 @@ -1,3 +1,12 @@
@@ -89799,7 +97378,7 @@
  #include <openssl/pem.h>
  #include <openssl/pkcs7.h>
 diff --git a/demos/smime/smenc.c b/demos/smime/smenc.c
-index 79fe2d0e1073..5d36e9a49794 100644
+index 79fe2d0..5d36e9a 100644
 --- a/demos/smime/smenc.c
 +++ b/demos/smime/smenc.c
 @@ -1,3 +1,12 @@
@@ -89816,7 +97395,7 @@
  #include <openssl/pem.h>
  #include <openssl/pkcs7.h>
 diff --git a/demos/smime/smsign.c b/demos/smime/smsign.c
-index 8505e7140b74..ba0adb3974be 100644
+index 8505e71..ba0adb3 100644
 --- a/demos/smime/smsign.c
 +++ b/demos/smime/smsign.c
 @@ -1,3 +1,12 @@
@@ -89833,7 +97412,7 @@
  #include <openssl/pem.h>
  #include <openssl/pkcs7.h>
 diff --git a/demos/smime/smsign2.c b/demos/smime/smsign2.c
-index 415ecf395f85..2b7f45b294a2 100644
+index 415ecf3..2b7f45b 100644
 --- a/demos/smime/smsign2.c
 +++ b/demos/smime/smsign2.c
 @@ -1,3 +1,12 @@
@@ -89850,7 +97429,7 @@
  #include <openssl/pem.h>
  #include <openssl/pkcs7.h>
 diff --git a/demos/smime/smver.c b/demos/smime/smver.c
-index 13ba18b9b924..75411c40d015 100644
+index 13ba18b..75411c4 100644
 --- a/demos/smime/smver.c
 +++ b/demos/smime/smver.c
 @@ -1,3 +1,12 @@
@@ -89867,7 +97446,7 @@
  #include <openssl/pem.h>
  #include <openssl/pkcs7.h>
 diff --git a/doc/apps/CA.pl.pod b/doc/apps/CA.pl.pod
-index 35a40aae9d81..ed30d6a2d1b5 100644
+index 35a40aa..ed30d6a 100644
 --- a/doc/apps/CA.pl.pod
 +++ b/doc/apps/CA.pl.pod
 @@ -1,4 +1,3 @@
@@ -89893,7 +97472,7 @@
  
  Sign the request:
  
-@@ -169,7 +168,7 @@ directly (for example Win32) and the default configuration file location may
+@@ -169,7 +168,7 @@ be wrong. In this case the command:
  
   perl -S CA.pl
  
@@ -89917,7 +97496,7 @@
 +
  =cut
 diff --git a/doc/apps/asn1parse.pod b/doc/apps/asn1parse.pod
-index fdaae40d8b29..10a5aba51d8d 100644
+index fdaae40..10a5aba 100644
 --- a/doc/apps/asn1parse.pod
 +++ b/doc/apps/asn1parse.pod
 @@ -92,7 +92,7 @@ L<ASN1_generate_nconf(3)> format. If B<file> only is
@@ -90015,7 +97594,7 @@
 +
  =cut
 diff --git a/doc/apps/ca.pod b/doc/apps/ca.pod
-index cd7cad742895..9bf123919092 100644
+index cd7cad7..9bf1239 100644
 --- a/doc/apps/ca.pod
 +++ b/doc/apps/ca.pod
 @@ -1,4 +1,3 @@
@@ -90095,7 +97674,7 @@
  It is however possible to create SPKACs using the B<spkac> utility.
  
  The file should contain the variable SPKAC set to the value of
-@@ -581,18 +580,18 @@ Generate a CRL
+@@ -581,18 +580,18 @@ A sample configuration file with the relevant sections for B<ca>:
  
   [ ca ]
   default_ca      = CA_default            # The default ca section
@@ -90118,7 +97697,7 @@
   default_days   = 365                   # how long to certify for
   default_crl_days= 30                   # how long before next CRL
   default_md     = md5                   # md to use
-@@ -600,9 +599,9 @@ Generate a CRL
+@@ -600,9 +599,9 @@ A sample configuration file with the relevant sections for B<ca>:
   policy         = policy_any            # default policy
   email_in_dn    = no                    # Don't add the email into cert DN
  
@@ -90172,7 +97751,7 @@
  
  =cut
 diff --git a/doc/apps/ciphers.pod b/doc/apps/ciphers.pod
-index 9788fa31f0e4..c39207765398 100644
+index 9788fa3..c392077 100644
 --- a/doc/apps/ciphers.pod
 +++ b/doc/apps/ciphers.pod
 @@ -2,7 +2,7 @@
@@ -90296,7 +97875,7 @@
 +
  =cut
 diff --git a/doc/apps/cms.pod b/doc/apps/cms.pod
-index 42c351489cd4..4a2b604a8344 100644
+index 42c3514..4a2b604 100644
 --- a/doc/apps/cms.pod
 +++ b/doc/apps/cms.pod
 @@ -47,6 +47,7 @@ B<openssl> B<cms>
@@ -90447,7 +98026,7 @@
  
  Verify a message and extract the signer's certificate if successful:
  
-@@ -622,15 +629,15 @@ Create a signed message, include some additional certificates and
+@@ -622,15 +629,15 @@ Verify a message and extract the signer's certificate if successful:
  Send encrypted mail using triple DES:
  
   openssl cms -encrypt -in in.txt -from steve at openssl.org \
@@ -90468,7 +98047,7 @@
  
  Note: the encryption command does not include the B<-text> option because the
  message being encrypted already has MIME headers.
-@@ -647,7 +654,7 @@ signature by line wrapping the base64 encoded structure and surrounding
+@@ -647,7 +654,7 @@ it with:
   -----BEGIN PKCS7-----
   -----END PKCS7-----
  
@@ -90477,7 +98056,7 @@
  
   openssl cms -verify -inform PEM -in signature.pem -content content.txt
  
-@@ -666,17 +673,17 @@ alternatively you can base64 decode the signature and use
+@@ -666,17 +673,17 @@ Add a signer to an existing message:
  Sign mail using RSA-PSS:
  
   openssl cms -sign -in message.txt -text -out mail.msg \
@@ -90521,7 +98100,7 @@
 +
  =cut
 diff --git a/doc/apps/config.pod b/doc/apps/config.pod
-index 665a1bbbb010..a9cde8952a7d 100644
+index 665a1bb..a9cde89 100644
 --- a/doc/apps/config.pod
 +++ b/doc/apps/config.pod
 @@ -1,4 +1,3 @@
@@ -90564,7 +98143,7 @@
   some_new_oid = 1.2.3.4
   some_other_oid = 1.2.3.5
  
-@@ -111,7 +110,7 @@ It is also possible to set the value to the long name followed
+@@ -111,7 +110,7 @@ by a comma and the numerical OID form. For example:
  
   shortName = some object long name, 1.2.3.4
  
@@ -90573,7 +98152,7 @@
  
  This ENGINE configuration module has the name B<engines>. The value of this
  variable points to a section containing further ENGINE configuration
-@@ -141,7 +140,7 @@ currently supported commands are listed below.
+@@ -141,7 +140,7 @@ For example:
   [bar_section]
   ... "bar" ENGINE specific commands ...
  
@@ -90591,7 +98170,7 @@
  argument to the ctrl command. If the value is the string B<EMPTY> then no
  value is sent to the command.
  
-@@ -190,7 +189,7 @@ value is sent to the command.
+@@ -190,7 +189,7 @@ For example:
   # Supply all default algorithms
   default_algorithms = ALL
  
@@ -90600,7 +98179,7 @@
  
  This modules has the name B<alg_section> which points to a section containing
  algorithm commands.
-@@ -208,7 +207,7 @@ not FIPS capable then an error occurs.
+@@ -208,7 +207,7 @@ For example:
  
   fips_mode = on
  
@@ -90642,7 +98221,7 @@
 +
  =cut
 diff --git a/doc/apps/crl.pod b/doc/apps/crl.pod
-index 2deecfec6619..0edff8d0f2ca 100644
+index 2deecfe..0edff8d 100644
 --- a/doc/apps/crl.pod
 +++ b/doc/apps/crl.pod
 @@ -42,7 +42,7 @@ the DER form with header and footer lines.
@@ -90669,7 +98248,7 @@
 +
  =cut
 diff --git a/doc/apps/crl2pkcs7.pod b/doc/apps/crl2pkcs7.pod
-index bc6441267853..4056543cf639 100644
+index bc64412..4056543 100644
 --- a/doc/apps/crl2pkcs7.pod
 +++ b/doc/apps/crl2pkcs7.pod
 @@ -2,7 +2,7 @@
@@ -90681,7 +98260,7 @@
  
  =head1 SYNOPSIS
  
-@@ -74,8 +74,8 @@ included in the output file and a CRL is not read from the input file.
+@@ -74,8 +74,8 @@ Create a PKCS#7 structure from a certificate and CRL:
  Creates a PKCS#7 structure in DER format with no CRL from several
  different certificates:
  
@@ -90707,7 +98286,7 @@
 +
  =cut
 diff --git a/doc/apps/dgst.pod b/doc/apps/dgst.pod
-index fc256b2d2986..3f1b02ca5154 100644
+index fc256b2..3f1b02c 100644
 --- a/doc/apps/dgst.pod
 +++ b/doc/apps/dgst.pod
 @@ -156,7 +156,7 @@ a file or files containing random data used to seed the random number
@@ -90739,7 +98318,7 @@
  
  =cut
 diff --git a/doc/apps/dhparam.pod b/doc/apps/dhparam.pod
-index 3557deed814d..addd88a54080 100644
+index 3557dee..addd88a 100644
 --- a/doc/apps/dhparam.pod
 +++ b/doc/apps/dhparam.pod
 @@ -44,7 +44,7 @@ additional header and footer lines.
@@ -90785,7 +98364,7 @@
 +
  =cut
 diff --git a/doc/apps/dsa.pod b/doc/apps/dsa.pod
-index 2d370ec5ed71..caa06966e502 100644
+index 2d370ec..caa0696 100644
 --- a/doc/apps/dsa.pod
 +++ b/doc/apps/dsa.pod
 @@ -59,7 +59,7 @@ PKCS#8 format is also accepted.
@@ -90797,7 +98376,7 @@
  B<-inform> option.
  
  =item B<-in filename>
-@@ -149,7 +149,7 @@ for all available algorithms.
+@@ -149,7 +149,7 @@ To encrypt a private key using triple DES:
  
   openssl dsa -in key.pem -des3 -out keyout.pem
  
@@ -90806,7 +98385,7 @@
  
   openssl dsa -in key.pem -outform DER -out keyout.der
  
-@@ -166,4 +166,13 @@ To convert a private key from PEM to DER format:
+@@ -166,4 +166,13 @@ To just output the public part of a private key:
  L<dsaparam(1)>, L<gendsa(1)>, L<rsa(1)>,
  L<genrsa(1)>
  
@@ -90821,7 +98400,7 @@
 +
  =cut
 diff --git a/doc/apps/dsaparam.pod b/doc/apps/dsaparam.pod
-index f8eff94a063e..08ad47faa65c 100644
+index f8eff94..08ad47f 100644
 --- a/doc/apps/dsaparam.pod
 +++ b/doc/apps/dsaparam.pod
 @@ -41,7 +41,7 @@ of the B<DER> format base64 encoded with additional header and footer lines.
@@ -90848,7 +98427,7 @@
 +
  =cut
 diff --git a/doc/apps/ec.pod b/doc/apps/ec.pod
-index befb93c6ec09..10c5e859aac9 100644
+index befb93c..10c5e85 100644
 --- a/doc/apps/ec.pod
 +++ b/doc/apps/ec.pod
 @@ -31,7 +31,7 @@ B<openssl> B<ec>
@@ -90887,7 +98466,7 @@
  EC parameters structures). The default value is B<named_curve>.
  B<Note> the B<implicitlyCA> alternative ,as specified in RFC 3279,
  is currently not implemented in OpenSSL.
-@@ -170,7 +170,7 @@ for all available algorithms.
+@@ -170,7 +170,7 @@ To encrypt a private key using triple DES:
  
   openssl ec -in key.pem -des3 -out keyout.pem
  
@@ -90896,7 +98475,7 @@
  
   openssl ec -in key.pem -outform DER -out keyout.der
  
-@@ -194,4 +194,13 @@ To convert a private key from PEM to DER format:
+@@ -194,4 +194,13 @@ To change the point conversion form to B<compressed>:
  
  L<ecparam(1)>, L<dsa(1)>, L<rsa(1)>
  
@@ -90911,7 +98490,7 @@
 +
  =cut
 diff --git a/doc/apps/ecparam.pod b/doc/apps/ecparam.pod
-index c5500b21fdfd..e55322c9b5e7 100644
+index c5500b2..e55322c 100644
 --- a/doc/apps/ecparam.pod
 +++ b/doc/apps/ecparam.pod
 @@ -41,12 +41,12 @@ Print out a usage message.
@@ -90938,7 +98517,7 @@
  EC parameters structures). The default value is B<named_curve>.
  B<Note> the B<implicitlyCA> alternative ,as specified in RFC 3279,
  is currently not implemented in OpenSSL.
-@@ -141,7 +141,7 @@ for all available algorithms.
+@@ -141,7 +141,7 @@ PEM format EC parameters use the header and footer lines:
   -----END EC PARAMETERS-----
  
  OpenSSL is currently not able to generate new groups and therefore
@@ -90947,7 +98526,7 @@
  
  =head1 EXAMPLES
  
-@@ -173,4 +173,13 @@ B<ecparam> can only create EC parameters from known (named) curves.
+@@ -173,4 +173,13 @@ To print out the EC parameters to standard output:
  
  L<ec(1)>, L<dsaparam(1)>
  
@@ -90962,10 +98541,29 @@
 +
  =cut
 diff --git a/doc/apps/enc.pod b/doc/apps/enc.pod
-index 62e1383277e5..d79099218949 100644
+index 62e1383..b3bf82a 100644
 --- a/doc/apps/enc.pod
 +++ b/doc/apps/enc.pod
-@@ -257,7 +257,7 @@ authentication tag.
+@@ -8,6 +8,7 @@ enc - symmetric cipher routines
+ 
+ B<openssl enc -ciphername>
+ [B<-help>]
++[B<-ciphers>]
+ [B<-in filename>]
+ [B<-out filename>]
+ [B<-pass arg>]
+@@ -47,6 +48,10 @@ either by itself or in addition to the encryption or decryption.
+ 
+ Print out a usage message.
+ 
++=item B<-ciphers>
++
++List all supported ciphers.
++
+ =item B<-in filename>
+ 
+ the input filename, standard input by default.
+@@ -257,7 +262,7 @@ authentication tag.
   desx               DESX algorithm.
  
   gost89             GOST 28147-89 in CFB mode (provided by ccgost engine)
@@ -90974,7 +98572,7 @@
  
   idea-cbc           IDEA algorithm in CBC mode
   idea               same as idea-cbc
-@@ -283,13 +283,13 @@ authentication tag.
+@@ -283,13 +288,13 @@ authentication tag.
   rc5-ecb            RC5 cipher in ECB mode
   rc5-ofb            RC5 cipher in OFB mode
  
@@ -90995,7 +98593,7 @@
  
  =head1 EXAMPLES
  
-@@ -299,11 +299,11 @@ authentication tag.
+@@ -299,11 +304,11 @@ Just base64 encode a binary file:
  
  Decode the same file
  
@@ -91009,7 +98607,7 @@
  
  Decrypt a file using a supplied password:
  
-@@ -336,4 +336,13 @@ certain parameters. So if, for example, you want to use RC2 with a
+@@ -336,4 +341,13 @@ certain parameters. So if, for example, you want to use RC2 with a
  
  The default digest was changed from MD5 to SHA256 in Openssl 1.1.
  
@@ -91024,7 +98622,7 @@
 +
  =cut
 diff --git a/doc/apps/engine.pod b/doc/apps/engine.pod
-index 467d1953ef43..674ab565d238 100644
+index 467d195..674ab56 100644
 --- a/doc/apps/engine.pod
 +++ b/doc/apps/engine.pod
 @@ -1,4 +1,3 @@
@@ -91049,7 +98647,7 @@
  =item B<-post> I<command>
  
  Command-line configuration of engines.
-@@ -92,4 +92,13 @@ See the example below.
+@@ -92,4 +92,13 @@ To list the capabilities of the I<rsax> engine:
    [RSA]
   (dynamic) Dynamic engine loading support
  
@@ -91064,7 +98662,7 @@
 +
  =cut
 diff --git a/doc/apps/errstr.pod b/doc/apps/errstr.pod
-index 7d1fee47cbb2..5ec7b2e39507 100644
+index 7d1fee4..5ec7b2e 100644
 --- a/doc/apps/errstr.pod
 +++ b/doc/apps/errstr.pod
 @@ -11,10 +11,14 @@ B<openssl errstr error_code>
@@ -91083,7 +98681,7 @@
  =head1 EXAMPLE
  
  The error code:
-@@ -22,7 +26,7 @@ second colon.
+@@ -22,7 +26,7 @@ The error code:
   27594:error:2006D080:lib(32):func(109):reason(128):bss_file.c:107:
  
  can be displayed with:
@@ -91092,7 +98690,7 @@
   openssl errstr 2006D080
  
  to produce the error message:
-@@ -33,4 +37,13 @@ second colon.
+@@ -33,4 +37,13 @@ to produce the error message:
  
  L<err(3)>
  
@@ -91107,7 +98705,7 @@
 +
  =cut
 diff --git a/doc/apps/gendsa.pod b/doc/apps/gendsa.pod
-index f4fef8d5a05a..4fd17147927a 100644
+index f4fef8d..4fd1714 100644
 --- a/doc/apps/gendsa.pod
 +++ b/doc/apps/gendsa.pod
 @@ -79,4 +79,13 @@ much quicker that RSA key generation for example.
@@ -91125,7 +98723,7 @@
 +
  =cut
 diff --git a/doc/apps/genpkey.pod b/doc/apps/genpkey.pod
-index 1bb8c6036a6b..8a789463cd1a 100644
+index 1bb8c60..8a78946 100644
 --- a/doc/apps/genpkey.pod
 +++ b/doc/apps/genpkey.pod
 @@ -73,14 +73,14 @@ implementation. See B<KEY GENERATION OPTIONS> below for more details.
@@ -91145,7 +98743,7 @@
  are mutually exclusive.
  
  =item B<-text>
-@@ -213,12 +213,12 @@ can be used.
+@@ -213,12 +213,12 @@ Encrypt output private key using 128 bit AES and the passphrase "hello":
  Generate a 2048 bit RSA key using 3 as the public exponent:
  
   openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:2048 \
@@ -91160,7 +98758,7 @@
  
  Generate DSA key from parameters:
  
-@@ -227,7 +227,7 @@ can be used.
+@@ -227,7 +227,7 @@ Generate DSA key from parameters:
  Generate 1024 bit DH parameters:
  
   openssl genpkey -genparam -algorithm DH -out dhp.pem \
@@ -91169,7 +98767,7 @@
  
  Output RFC5114 2048 bit DH parameters with 224 bit subgroup:
  
-@@ -240,8 +240,8 @@ can be used.
+@@ -240,8 +240,8 @@ Generate DH key from parameters:
  Generate EC parameters:
  
   openssl genpkey -genparam -algorithm EC -out ecp.pem \
@@ -91180,7 +98778,7 @@
  
  Generate EC key from parameters:
  
-@@ -250,13 +250,21 @@ can be used.
+@@ -250,13 +250,21 @@ Generate EC key from parameters:
  Generate EC key directly:
  
   openssl genpkey -algorithm EC -out eckey.pem \
@@ -91196,9 +98794,9 @@
  
 -=cut
 +=head1 COPYRIGHT
++
++Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
  
-+Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
@@ -91206,7 +98804,7 @@
 +
 +=cut
 diff --git a/doc/apps/genrsa.pod b/doc/apps/genrsa.pod
-index 37ced0dee62e..38e83f726194 100644
+index 37ced0d..38e83f7 100644
 --- a/doc/apps/genrsa.pod
 +++ b/doc/apps/genrsa.pod
 @@ -103,5 +103,13 @@ be much larger (typically 1024 bits).
@@ -91215,9 +98813,9 @@
  
 -=cut
 +=head1 COPYRIGHT
++
++Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
  
-+Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
@@ -91225,7 +98823,7 @@
 +
 +=cut
 diff --git a/doc/apps/nseq.pod b/doc/apps/nseq.pod
-index 198e7f49d30e..4765aecea843 100644
+index 198e7f4..4765aec 100644
 --- a/doc/apps/nseq.pod
 +++ b/doc/apps/nseq.pod
 @@ -2,7 +2,7 @@
@@ -91252,7 +98850,7 @@
 +
  =cut
 diff --git a/doc/apps/ocsp.pod b/doc/apps/ocsp.pod
-index c796fd5966d8..75273a9b2574 100644
+index c796fd5..75273a9 100644
 --- a/doc/apps/ocsp.pod
 +++ b/doc/apps/ocsp.pod
 @@ -42,6 +42,7 @@ B<openssl> B<ocsp>
@@ -91296,6 +98894,11 @@
 -responder and clients clocks may not be precisely synchronised and so such a check
 -may fail. To avoid this the B<-validity_period> option can be used to specify an
 -acceptable error range in seconds, the default value is 5 minutes.
+-
+-If the B<notAfter> time is omitted from a response then this means that new status
+-information is immediately available. In this case the age of the B<notBefore> field
+-is checked to see it is not older than B<age> seconds old. By default this additional
+-check is not performed.
 +in an OCSP response. Each certificate status response includes a B<notBefore>
 +time and an optional B<notAfter> time. The current time should fall between
 +these two values, but the interval between the two times may be only a few
@@ -91303,11 +98906,7 @@
 +synchronised and so such a check may fail. To avoid this the
 +B<-validity_period> option can be used to specify an acceptable error range in
 +seconds, the default value is 5 minutes.
- 
--If the B<notAfter> time is omitted from a response then this means that new status
--information is immediately available. In this case the age of the B<notBefore> field
--is checked to see it is not older than B<age> seconds old. By default this additional
--check is not performed.
++
 +If the B<notAfter> time is omitted from a response then this means that new
 +status information is immediately available. In this case the age of the
 +B<notBefore> field is checked to see it is not older than B<age> seconds old.
@@ -91348,7 +98947,7 @@
  
  =back
  
-@@ -411,7 +418,7 @@ script using the B<reqin> and B<respout> options.
+@@ -411,7 +418,7 @@ Create an OCSP request and write it to a file:
  
   openssl ocsp -issuer issuer.pem -cert c1.pem -cert c2.pem -reqout req.der
  
@@ -91381,7 +98980,7 @@
 +
  =cut
 diff --git a/doc/apps/openssl.pod b/doc/apps/openssl.pod
-index 717550d9cf8d..8299d2a26a10 100644
+index 717550d..3014bb3 100644
 --- a/doc/apps/openssl.pod
 +++ b/doc/apps/openssl.pod
 @@ -1,4 +1,3 @@
@@ -91398,6 +98997,15 @@
  
  =over 10
  
+@@ -157,7 +156,7 @@ Generation of RSA Private Key. Superseded by L<B<genpkey>|genpkey(1)>.
+ 
+ =item L<B<nseq>|nseq(1)>
+ 
+-Create or examine a netscape certificate sequence
++Create or examine a Netscape certificate sequence
+ 
+ =item L<B<ocsp>|ocsp(1)>
+ 
 @@ -259,7 +258,7 @@ X.509 Certificate Data Management.
  
  =back
@@ -91455,7 +99063,7 @@
 +
  =cut
 diff --git a/doc/apps/passwd.pod b/doc/apps/passwd.pod
-index b784f6ccee1f..87dd8d868c52 100644
+index b784f6c..87dd8d8 100644
 --- a/doc/apps/passwd.pod
 +++ b/doc/apps/passwd.pod
 @@ -84,4 +84,13 @@ B<openssl passwd -1 -salt xxxxxxxx password> prints B<$1$xxxxxxxx$UYCIxa628.9qXj
@@ -91473,7 +99081,7 @@
 +
  =cut
 diff --git a/doc/apps/pkcs12.pod b/doc/apps/pkcs12.pod
-index d38484bf86f9..2f2c4d143d71 100644
+index d38484b..2f2c4d1 100644
 --- a/doc/apps/pkcs12.pod
 +++ b/doc/apps/pkcs12.pod
 @@ -1,4 +1,3 @@
@@ -91481,7 +99089,7 @@
  =pod
  
  =head1 NAME
-@@ -337,7 +336,7 @@ description of all algorithms is contained in the B<pkcs8> manual page.
+@@ -337,7 +336,7 @@ Output only client certificates to a file:
   openssl pkcs12 -in file.p12 -clcerts -out file.pem
  
  Don't encrypt the private key:
@@ -91490,7 +99098,7 @@
   openssl pkcs12 -in file.p12 -out file.pem -nodes
  
  Print some info about a PKCS#12 file:
-@@ -357,3 +356,13 @@ description of all algorithms is contained in the B<pkcs8> manual page.
+@@ -357,3 +356,13 @@ Include some extra certificates:
  
  L<pkcs8(1)>
  
@@ -91505,7 +99113,7 @@
 +
 +=cut
 diff --git a/doc/apps/pkcs7.pod b/doc/apps/pkcs7.pod
-index 6cb015cded3c..8c3c11f88b9b 100644
+index 6cb015c..8c3c11f 100644
 --- a/doc/apps/pkcs7.pod
 +++ b/doc/apps/pkcs7.pod
 @@ -37,7 +37,7 @@ the DER form with header and footer lines.
@@ -91517,7 +99125,7 @@
  B<-inform> option.
  
  =item B<-in filename>
-@@ -100,11 +100,20 @@ for all available algorithms.
+@@ -100,11 +100,20 @@ For compatibility with some CAs it will also accept:
  
  There is no option to print out all the fields of a PKCS#7 file.
  
@@ -91540,7 +99148,7 @@
 +
  =cut
 diff --git a/doc/apps/pkcs8.pod b/doc/apps/pkcs8.pod
-index 8d28a123a167..cd6db02a59ac 100644
+index 8d28a12..cd6db02 100644
 --- a/doc/apps/pkcs8.pod
 +++ b/doc/apps/pkcs8.pod
 @@ -18,6 +18,7 @@ B<openssl> B<pkcs8>
@@ -91710,18 +99318,18 @@
  
  Convert a private key to PKCS#8 using a PKCS#12 compatible algorithm
  (3DES):
-@@ -225,14 +253,14 @@ Convert a private key to PKCS#8 using a PKCS#12 compatible algorithm
+@@ -225,14 +253,14 @@ Read a DER unencrypted PKCS#8 format private key:
  
   openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem
  
 -Convert a private key from any PKCS#8 format to traditional format:
 +Convert a private key from any PKCS#8 encrypted format to traditional format:
++
++ openssl pkcs8 -in pk8.pem -traditional -out key.pem
  
 - openssl pkcs8 -in pk8.pem -out key.pem
 - 
 -Convert a private key to PKCS#8 format, encrypting with AES-256 and with 
-+ openssl pkcs8 -in pk8.pem -traditional -out key.pem
-+
 +Convert a private key to PKCS#8 format, encrypting with AES-256 and with
  one million iterations of the password:
  
@@ -91759,7 +99367,7 @@
 +
  =cut
 diff --git a/doc/apps/pkey.pod b/doc/apps/pkey.pod
-index 5808390dc547..dc736a3370df 100644
+index 5808390..dc736a3 100644
 --- a/doc/apps/pkey.pod
 +++ b/doc/apps/pkey.pod
 @@ -1,4 +1,3 @@
@@ -91806,7 +99414,7 @@
  
  =item B<-text_pub>
  
-@@ -116,7 +122,7 @@ for all available algorithms.
+@@ -116,7 +122,7 @@ To encrypt a private key using triple DES:
  
   openssl pkey -in key.pem -des3 -out keyout.pem
  
@@ -91815,7 +99423,7 @@
  
   openssl pkey -in key.pem -outform DER -out keyout.der
  
-@@ -135,6 +141,15 @@ To convert a private key from PEM to DER format:
+@@ -135,6 +141,15 @@ To just output the public part of a private key:
  =head1 SEE ALSO
  
  L<genpkey(1)>, L<rsa(1)>, L<pkcs8(1)>,
@@ -91833,7 +99441,7 @@
  
  =cut
 diff --git a/doc/apps/pkeyparam.pod b/doc/apps/pkeyparam.pod
-index c3c6dbbed0b6..6a8c4a806bb5 100644
+index c3c6dbb..6a8c4a8 100644
 --- a/doc/apps/pkeyparam.pod
 +++ b/doc/apps/pkeyparam.pod
 @@ -1,4 +1,3 @@
@@ -91868,7 +99476,7 @@
  
  =cut
 diff --git a/doc/apps/pkeyutl.pod b/doc/apps/pkeyutl.pod
-index fed683f5c8e6..91eeda548872 100644
+index fed683f..91eeda5 100644
 --- a/doc/apps/pkeyutl.pod
 +++ b/doc/apps/pkeyutl.pod
 @@ -84,11 +84,11 @@ the peer key format PEM, DER or ENGINE. Default is PEM.
@@ -91903,7 +99511,7 @@
  signed or verified directly instead of using a B<DigestInfo> structure. If a
  digest is set then the a B<DigestInfo> structure is used and its the length
  must correspond to the digest type.
-@@ -273,3 +273,14 @@ Hexdump 48 bytes of TLS1 PRF using digest B<SHA256> and shared secret and
+@@ -273,3 +273,14 @@ seed consisting of the single byte 0xFF:
  L<genpkey(1)>, L<pkey(1)>, L<rsautl(1)>
  L<dgst(1)>, L<rsa(1)>, L<genrsa(1)>,
  L<EVP_PKEY_HKDF(3)>, L<EVP_PKEY_TLS1_PRF(3)>
@@ -91919,7 +99527,7 @@
 +
 +=cut
 diff --git a/doc/apps/rand.pod b/doc/apps/rand.pod
-index 444dcbb22f89..0faf6872a271 100644
+index 444dcbb..0faf687 100644
 --- a/doc/apps/rand.pod
 +++ b/doc/apps/rand.pod
 @@ -57,4 +57,13 @@ Show the output as a hex string.
@@ -91937,7 +99545,7 @@
 +
  =cut
 diff --git a/doc/apps/rehash.pod b/doc/apps/rehash.pod
-index 7ec6511520fc..62e39cf9e22d 100644
+index 7ec6511..62e39cf 100644
 --- a/doc/apps/rehash.pod
 +++ b/doc/apps/rehash.pod
 @@ -125,3 +125,14 @@ Ignored if directories are listed on the command line.
@@ -91956,7 +99564,7 @@
 +
 +=cut
 diff --git a/doc/apps/req.pod b/doc/apps/req.pod
-index 8353e9ad49a4..a891c3eeef76 100644
+index 8353e9a..299d092 100644
 --- a/doc/apps/req.pod
 +++ b/doc/apps/req.pod
 @@ -1,9 +1,8 @@
@@ -92024,7 +99632,7 @@
  L<x509v3_config(5)> manual page for details of the
  extension section format.
  
-@@ -499,8 +498,8 @@ will be treated as though they were a DirectoryString.
+@@ -499,8 +498,8 @@ Generate a self signed root certificate:
  
  Example of a file pointed to by the B<oid_file> option:
  
@@ -92035,7 +99643,7 @@
  
  Example of a section pointed to by B<oid_section> making use of variable
  expansion:
-@@ -511,34 +510,34 @@ Example of a section pointed to by B<oid_section> making use of variable
+@@ -511,65 +510,65 @@ expansion:
  Sample configuration file prompting for field values:
  
   [ req ]
@@ -92088,7 +99696,11 @@
  
   [ v3_ca ]
  
-@@ -549,27 +548,27 @@ Example of a section pointed to by B<oid_section> making use of variable
+  subjectKeyIdentifier=hash
+  authorityKeyIdentifier=keyid:always,issuer:always
+- basicConstraints = CA:true
++ basicConstraints = critical, CA:true
+ 
  Sample configuration containing all field values:
  
  
@@ -92167,7 +99779,7 @@
  
  =cut
 diff --git a/doc/apps/rsa.pod b/doc/apps/rsa.pod
-index dbb3df56a32b..c3178ab39845 100644
+index dbb3df5..c3178ab 100644
 --- a/doc/apps/rsa.pod
 +++ b/doc/apps/rsa.pod
 @@ -1,4 +1,3 @@
@@ -92193,7 +99805,7 @@
  
  =item B<-noout>
  
-@@ -176,7 +175,7 @@ to the B<rsa> utility with the B<-inform NET> option.
+@@ -176,7 +175,7 @@ To encrypt a private key using triple DES:
  
   openssl rsa -in key.pem -des3 -out keyout.pem
  
@@ -92220,7 +99832,7 @@
  
  =cut
 diff --git a/doc/apps/rsautl.pod b/doc/apps/rsautl.pod
-index 357b722431c1..325c6911d6e8 100644
+index 357b722..325c691 100644
 --- a/doc/apps/rsautl.pod
 +++ b/doc/apps/rsautl.pod
 @@ -61,7 +61,7 @@ the input file is an RSA public key.
@@ -92232,7 +99844,7 @@
  
  =item B<-sign>
  
-@@ -136,24 +136,24 @@ utility in conjunction with B<asn1parse>. Consider the self signed
+@@ -136,24 +136,24 @@ example in certs/pca-cert.pem . Running B<asn1parse> as follows yields:
  
   openssl asn1parse -in pca-cert.pem
  
@@ -92268,7 +99880,7 @@
  
  
  The final BIT STRING contains the actual signature. It can be extracted with:
-@@ -161,18 +161,18 @@ utility in conjunction with B<asn1parse>. Consider the self signed
+@@ -161,18 +161,18 @@ The final BIT STRING contains the actual signature. It can be extracted with:
   openssl asn1parse -in pca-cert.pem -out sig -noout -strparse 614
  
  The certificate public key can be extracted with:
@@ -92308,7 +99920,7 @@
 +
 +=cut
 diff --git a/doc/apps/s_client.pod b/doc/apps/s_client.pod
-index e06af14ec95f..f5e3b63ccf34 100644
+index e06af14..77668ea 100644
 --- a/doc/apps/s_client.pod
 +++ b/doc/apps/s_client.pod
 @@ -1,4 +1,3 @@
@@ -92324,7 +99936,7 @@
  [B<-partial_chain>]
  [B<-policy arg>]
  [B<-policy_check>]
-@@ -227,7 +227,7 @@ data, with the last of these encoded in hexadecimal.  Optional
+@@ -227,7 +227,7 @@ whitespace is ignored in the associated data field.  For example:
  
  =item B<-attime>, B<-check_ss_sig>, B<-crl_check>, B<-crl_check_all>,
  B<-explicit_policy>, B<-extended_crl>, B<-ignore_critical>, B<-inhibit_any>,
@@ -92333,6 +99945,15 @@
  B<-policy_check>, B<-policy_print>, B<-purpose>, B<-suiteB_128>,
  B<-suiteB_128_only>, B<-suiteB_192>, B<-trusted_first>, B<-use_deltas>,
  B<-auth_level>, B<-verify_depth>, B<-verify_email>, B<-verify_hostname>,
+@@ -355,7 +355,7 @@ L<SSL_CTX_set_split_send_fragment(3)> for further information.
+ 
+ The maximum number of encrypt/decrypt pipelines to be used. This will only have
+ an effect if an engine has been loaded that supports pipelining (e.g. the dasync
+-engine) and a suiteable ciphersuite has been negotiated. The default value is 1.
++engine) and a suitable ciphersuite has been negotiated. The default value is 1.
+ See L<SSL_CTX_set_max_pipelines(3)> for further information.
+ 
+ =item B<-read_buf int>
 @@ -415,7 +415,7 @@ print out a hex dump of any TLS extensions received from the server.
  
  =item B<-no_ticket>
@@ -92366,7 +99987,7 @@
 +
  =cut
 diff --git a/doc/apps/s_server.pod b/doc/apps/s_server.pod
-index 08554f453046..8e0ff78e691e 100644
+index 08554f4..8e0ff78 100644
 --- a/doc/apps/s_server.pod
 +++ b/doc/apps/s_server.pod
 @@ -1,4 +1,3 @@
@@ -92424,7 +100045,7 @@
 +
  =cut
 diff --git a/doc/apps/s_time.pod b/doc/apps/s_time.pod
-index b9a7dd907829..acadd30025dc 100644
+index b9a7dd9..acadd30 100644
 --- a/doc/apps/s_time.pod
 +++ b/doc/apps/s_time.pod
 @@ -1,4 +1,3 @@
@@ -92447,7 +100068,7 @@
 +
  =cut
 diff --git a/doc/apps/sess_id.pod b/doc/apps/sess_id.pod
-index 1407dfab7d9b..b098528bb8aa 100644
+index 1407dfa..b098528 100644
 --- a/doc/apps/sess_id.pod
 +++ b/doc/apps/sess_id.pod
 @@ -1,4 +1,3 @@
@@ -92488,7 +100109,7 @@
 +
  =cut
 diff --git a/doc/apps/smime.pod b/doc/apps/smime.pod
-index e6323ad0b026..05cefea7e20f 100644
+index e6323ad..05cefea 100644
 --- a/doc/apps/smime.pod
 +++ b/doc/apps/smime.pod
 @@ -14,6 +14,8 @@ B<openssl> B<smime>
@@ -92575,7 +100196,7 @@
  
  Verify a message and extract the signer's certificate if successful:
  
-@@ -422,15 +429,15 @@ Create a signed message, include some additional certificates and
+@@ -422,15 +429,15 @@ Verify a message and extract the signer's certificate if successful:
  Send encrypted mail using triple DES:
  
   openssl smime -encrypt -in in.txt -from steve at openssl.org \
@@ -92596,7 +100217,7 @@
  
  Note: the encryption command does not include the B<-text> option because the
  message being encrypted already has MIME headers.
-@@ -447,7 +454,7 @@ signature by line wrapping the base64 encoded structure and surrounding
+@@ -447,7 +454,7 @@ it with:
   -----BEGIN PKCS7-----
   -----END PKCS7-----
  
@@ -92620,7 +100241,7 @@
 +
  =cut
 diff --git a/doc/apps/speed.pod b/doc/apps/speed.pod
-index 7f28382bafb7..ab2c7d76acff 100644
+index 7f28382..ab2c7d7 100644
 --- a/doc/apps/speed.pod
 +++ b/doc/apps/speed.pod
 @@ -77,4 +77,13 @@ the above are tested.
@@ -92638,7 +100259,7 @@
 +
  =cut
 diff --git a/doc/apps/spkac.pod b/doc/apps/spkac.pod
-index f5ce8a6afe5c..35c6a128d852 100644
+index f5ce8a6..35c6a12 100644
 --- a/doc/apps/spkac.pod
 +++ b/doc/apps/spkac.pod
 @@ -135,4 +135,13 @@ to be used in a "replay attack".
@@ -92656,7 +100277,7 @@
 +
  =cut
 diff --git a/doc/apps/ts.pod b/doc/apps/ts.pod
-index e64e5fcf34c5..02b2adaa2f58 100644
+index e64e5fc..02b2ada 100644
 --- a/doc/apps/ts.pod
 +++ b/doc/apps/ts.pod
 @@ -522,13 +522,13 @@ To create a time stamp request for design1.txt with SHA-1
@@ -92693,7 +100314,7 @@
  
  If you want to use the settings in the config file you could just write:
  
-@@ -589,20 +589,20 @@ To add 'granted' status info to a time stamp token thereby creating a
+@@ -589,20 +589,20 @@ valid response:
  To verify a time stamp reply against a request:
  
    openssl ts -verify -queryfile design1.tsq -in design1.tsr \
@@ -92741,7 +100362,7 @@
 +
  =cut
 diff --git a/doc/apps/tsget.pod b/doc/apps/tsget.pod
-index 34187eb7ef5f..cf7817a0e765 100644
+index 34187eb..cf7817a 100644
 --- a/doc/apps/tsget.pod
 +++ b/doc/apps/tsget.pod
 @@ -33,15 +33,15 @@ line.
@@ -92835,7 +100456,7 @@
 +
  =cut
 diff --git a/doc/apps/verify.pod b/doc/apps/verify.pod
-index 96d6be4a4db9..051cd624f1f6 100644
+index 96d6be4..0fd1799 100644
 --- a/doc/apps/verify.pod
 +++ b/doc/apps/verify.pod
 @@ -2,7 +2,7 @@
@@ -92847,7 +100468,15 @@
  
  =head1 SYNOPSIS
  
-@@ -24,6 +24,7 @@ B<openssl> B<verify>
+@@ -12,6 +12,7 @@ B<openssl> B<verify>
+ [B<-CApath directory>]
+ [B<-no-CAfile>]
+ [B<-no-CApath>]
++[B<-allow_proxy_certs>]
+ [B<-attime timestamp>]
+ [B<-check_ss_sig>]
+ [B<-CRLfile file>]
+@@ -24,6 +25,7 @@ B<openssl> B<verify>
  [B<-ignore_critical>]
  [B<-inhibit_any>]
  [B<-inhibit_map>]
@@ -92855,8 +100484,19 @@
  [B<-partial_chain>]
  [B<-policy arg>]
  [B<-policy_check>]
-@@ -145,6 +146,12 @@ Set policy variable inhibit-any-policy (see RFC5280).
+@@ -82,6 +84,10 @@ Do not load the trusted CA certificates from the default file location
  
+ Do not load the trusted CA certificates from the default directory location
+ 
++=item B<-allow_proxy_certs>
++
++Allow the verification of proxy certificates
++
+ =item B<-attime timestamp>
+ 
+ Perform validation checks using time specified by B<timestamp> and not
+@@ -145,6 +151,12 @@ Set policy variable inhibit-any-policy (see RFC5280).
+ 
  Set policy variable inhibit-policy-mapping (see RFC5280).
  
 +=item B<-no_check_time>
@@ -92868,7 +100508,7 @@
  =item B<-partial_chain>
  
  Allow verification to succeed even if a I<complete> chain cannot be built to a
-@@ -203,14 +210,14 @@ effect.
+@@ -203,14 +215,14 @@ effect.
  A B<file> of additional untrusted certificates (intermediate issuer CAs) used
  to construct a certificate chain from the subject certificate to a trust-anchor.
  The B<file> should contain one or more certificates in PEM format.
@@ -92885,7 +100525,7 @@
  With this option, no additional (e.g., default) certificate lists are
  consulted.
  That is, the only trust-anchors are those listed in B<file>.
-@@ -333,7 +340,7 @@ CA.
+@@ -333,7 +345,7 @@ CA.
  
  The process of 'looking up the issuers certificate' itself involves a number of
  steps.
@@ -92894,7 +100534,7 @@
  certificate are subject to further tests.
  The relevant authority key identifier components of the current certificate (if
  present) must match the subject key identifier (if present) and issuer and
-@@ -381,287 +388,287 @@ problem was detected starting with zero for the certificate being verified itsel
+@@ -381,287 +393,292 @@ problem was detected starting with zero for the certificate being verified itsel
  then 1 for the CA that signed the certificate and so on. Finally a text version
  of the error number is presented.
  
@@ -93090,230 +100730,232 @@
  
 -=item B<29 X509_V_ERR_SUBJECT_ISSUER_MISMATCH: subject issuer mismatch>
 +=item B<X509_V_ERR_SUBJECT_ISSUER_MISMATCH>
-+
+ 
+-Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
 +not used as of OpenSSL 1.1.0 as a result of the deprecation of the
-+B<-issuer_checks> option.
-+
+ B<-issuer_checks> option.
+ 
+-=item B<30 X509_V_ERR_AKID_SKID_MISMATCH: authority and subject key identifier mismatch>
 +=item B<X509_V_ERR_AKID_SKID_MISMATCH>
  
  Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
  B<-issuer_checks> option.
  
--=item B<30 X509_V_ERR_AKID_SKID_MISMATCH: authority and subject key identifier mismatch>
+-=item B<31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH: authority and issuer serial number mismatch>
 +=item B<X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH>
  
  Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
  B<-issuer_checks> option.
  
--=item B<31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH: authority and issuer serial number mismatch>
+-=item B<32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN: key usage does not include certificate signing>
 +=item B<X509_V_ERR_KEYUSAGE_NO_CERTSIGN>
  
  Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
  B<-issuer_checks> option.
  
--=item B<32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN: key usage does not include certificate signing>
+-=item B<33 X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER: unable to get CRL issuer certificate>
 +=item B<X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER>
- 
--Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
--B<-issuer_checks> option.
++
 +Unable to get CRL issuer certificate.
  
--=item B<33 X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER: unable to get CRL issuer certificate>
+-TBA
 +=item B<X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION>
  
--TBA
+-=item B<34 X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION: unhandled critical extension>
 +Unhandled critical extension.
  
--=item B<34 X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION: unhandled critical extension>
+-TBA
 +=item B<X509_V_ERR_KEYUSAGE_NO_CRL_SIGN>
  
--TBA
+-=item B<35 X509_V_ERR_KEYUSAGE_NO_CRL_SIGN: key usage does not include CRL signing>
 +Key usage does not include CRL signing.
  
--=item B<35 X509_V_ERR_KEYUSAGE_NO_CRL_SIGN: key usage does not include CRL signing>
+-TBA
 +=item B<X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION>
  
--TBA
+-=item B<36 X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION: unhandled critical CRL extension>
 +Unhandled critical CRL extension.
  
--=item B<36 X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION: unhandled critical CRL extension>
+-TBA
 +=item B<X509_V_ERR_INVALID_NON_CA>
  
--TBA
+-=item B<37 X509_V_ERR_INVALID_NON_CA: invalid non-CA certificate has CA markings>
 +Invalid non-CA certificate has CA markings.
  
--=item B<37 X509_V_ERR_INVALID_NON_CA: invalid non-CA certificate has CA markings>
+-TBA
 +=item B<X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED>
  
--TBA
+-=item B<38 X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED: proxy path length constraint exceeded>
 +Proxy path length constraint exceeded.
  
--=item B<38 X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED: proxy path length constraint exceeded>
-+=item B<X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE>
- 
 -TBA
-+Key usage does not include digital signature.
++=item B<X509_V_ERR_PROXY_SUBJECT_INVALID>
  
 -=item B<39 X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE: key usage does not include digital signature>
-+=item B<X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED>
++Proxy certificate subject is invalid.  It MUST be the same as the issuer
++with a single CN component added.
  
 -TBA
-+Proxy certificates not allowed, please set the appropriate flag.
++=item B<X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE>
  
 -=item B<40 X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED: proxy certificates not allowed, please set the appropriate flag>
-+=item B<X509_V_ERR_INVALID_EXTENSION>
++Key usage does not include digital signature.
  
 -TBA
-+Invalid or inconsistent certificate extension.
++=item B<X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED>
  
 -=item B<41 X509_V_ERR_INVALID_EXTENSION: invalid or inconsistent certificate extension>
-+=item B<X509_V_ERR_INVALID_POLICY_EXTENSION>
++Proxy certificates not allowed, please use B<-allow_proxy_certs>.
  
 -TBA
-+Invalid or inconsistent certificate policy extension.
++=item B<X509_V_ERR_INVALID_EXTENSION>
  
 -=item B<42 X509_V_ERR_INVALID_POLICY_EXTENSION: invalid or inconsistent certificate policy extension>
-+=item B<X509_V_ERR_NO_EXPLICIT_POLICY>
++Invalid or inconsistent certificate extension.
  
 -TBA
-+No explicit policy.
++=item B<X509_V_ERR_INVALID_POLICY_EXTENSION>
  
 -=item B<43 X509_V_ERR_NO_EXPLICIT_POLICY: no explicit policy>
-+=item B<X509_V_ERR_DIFFERENT_CRL_SCOPE>
++Invalid or inconsistent certificate policy extension.
  
 -TBA
-+Different CRL scope.
++=item B<X509_V_ERR_NO_EXPLICIT_POLICY>
  
 -=item B<44 X509_V_ERR_DIFFERENT_CRL_SCOPE: Different CRL scope>
-+=item B<X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE>
++No explicit policy.
  
 -TBA
-+Unsupported extension feature.
++=item B<X509_V_ERR_DIFFERENT_CRL_SCOPE>
  
 -=item B<45 X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE: Unsupported extension feature>
-+=item B<X509_V_ERR_UNNESTED_RESOURCE>
++Different CRL scope.
  
 -TBA
-+RFC 3779 resource not subset of parent's resources.
++=item B<X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE>
  
 -=item B<46 X509_V_ERR_UNNESTED_RESOURCE: RFC 3779 resource not subset of parent's resources>
-+=item B<X509_V_ERR_PERMITTED_VIOLATION>
++Unsupported extension feature.
  
 -TBA
-+Permitted subtree violation.
++=item B<X509_V_ERR_UNNESTED_RESOURCE>
  
 -=item B<47 X509_V_ERR_PERMITTED_VIOLATION: permitted subtree violation>
-+=item B<X509_V_ERR_EXCLUDED_VIOLATION>
++RFC 3779 resource not subset of parent's resources.
  
 -TBA
-+Excluded subtree violation.
++=item B<X509_V_ERR_PERMITTED_VIOLATION>
  
 -=item B<48 X509_V_ERR_EXCLUDED_VIOLATION: excluded subtree violation>
-+=item B<X509_V_ERR_SUBTREE_MINMAX>
++Permitted subtree violation.
  
 -TBA
-+Name constraints minimum and maximum not supported.
++=item B<X509_V_ERR_EXCLUDED_VIOLATION>
  
 -=item B<49 X509_V_ERR_SUBTREE_MINMAX: name constraints minimum and maximum not supported>
-+=item B<X509_V_ERR_APPLICATION_VERIFICATION>
++Excluded subtree violation.
  
 -TBA
-+Application verification failure. Unused.
++=item B<X509_V_ERR_SUBTREE_MINMAX>
  
 -=item B<50 X509_V_ERR_APPLICATION_VERIFICATION: application verification failure>
-+=item B<X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE>
++Name constraints minimum and maximum not supported.
  
 -an application specific error. Unused.
-+Unsupported name constraint type.
++=item B<X509_V_ERR_APPLICATION_VERIFICATION>
  
 -=item B<51 X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE: unsupported name constraint type>
-+=item B<X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX>
++Application verification failure. Unused.
  
 -TBA
-+Unsupported or invalid name constraint syntax.
++=item B<X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE>
  
 -=item B<52 X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX: unsupported or invalid name constraint syntax>
-+=item B<X509_V_ERR_UNSUPPORTED_NAME_SYNTAX>
++Unsupported name constraint type.
  
 -TBA
-+Unsupported or invalid name syntax.
++=item B<X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX>
  
 -=item B<53 X509_V_ERR_UNSUPPORTED_NAME_SYNTAX: unsupported or invalid name syntax>
-+=item B<X509_V_ERR_CRL_PATH_VALIDATION_ERROR>
++Unsupported or invalid name constraint syntax.
  
 -TBA
-+CRL path validation error.
++=item B<X509_V_ERR_UNSUPPORTED_NAME_SYNTAX>
  
 -=item B<54 X509_V_ERR_CRL_PATH_VALIDATION_ERROR: CRL path validation error>
-+=item B<X509_V_ERR_PATH_LOOP>
++Unsupported or invalid name syntax.
  
 -TBA
-+Path loop.
++=item B<X509_V_ERR_CRL_PATH_VALIDATION_ERROR>
  
 -=item B<55 X509_V_ERR_PATH_LOOP: Path Loop>
-+=item B<X509_V_ERR_SUITE_B_INVALID_VERSION>
++CRL path validation error.
  
 -TBA
-+Suite B: certificate version invalid.
++=item B<X509_V_ERR_PATH_LOOP>
  
 -=item B<56 X509_V_ERR_SUITE_B_INVALID_VERSION: Suite B: certificate version invalid>
-+=item B<X509_V_ERR_SUITE_B_INVALID_ALGORITHM>
++Path loop.
  
 -TBA
-+Suite B: invalid public key algorithm.
++=item B<X509_V_ERR_SUITE_B_INVALID_VERSION>
  
 -=item B<57 X509_V_ERR_SUITE_B_INVALID_ALGORITHM: Suite B: invalid public key algorithm>
-+=item B<X509_V_ERR_SUITE_B_INVALID_CURVE>
++Suite B: certificate version invalid.
  
 -TBA
-+Suite B: invalid ECC curve.
++=item B<X509_V_ERR_SUITE_B_INVALID_ALGORITHM>
  
 -=item B<58 X509_V_ERR_SUITE_B_INVALID_CURVE: Suite B: invalid ECC curve>
-+=item B<X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM>
++Suite B: invalid public key algorithm.
  
 -TBA
-+Suite B: invalid signature algorithm.
++=item B<X509_V_ERR_SUITE_B_INVALID_CURVE>
  
 -=item B<59 X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM: Suite B: invalid signature algorithm>
-+=item B<X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED>
++Suite B: invalid ECC curve.
  
 -TBA
-+Suite B: curve not allowed for this LOS.
++=item B<X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM>
  
 -=item B<60 X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED: Suite B: curve not allowed for this LOS>
-+=item B<X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256>
++Suite B: invalid signature algorithm.
  
 -TBA
-+Suite B: cannot sign P-384 with P-256.
++=item B<X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED>
  
 -=item B<61 X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256: Suite B: cannot sign P-384 with P-256>
-+=item B<X509_V_ERR_HOSTNAME_MISMATCH>
++Suite B: curve not allowed for this LOS.
  
 -TBA
-+Hostname mismatch.
++=item B<X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256>
  
 -=item B<62 X509_V_ERR_HOSTNAME_MISMATCH: Hostname mismatch>
-+=item B<X509_V_ERR_EMAIL_MISMATCH>
++Suite B: cannot sign P-384 with P-256.
  
 -TBA
-+Email address mismatch.
++=item B<X509_V_ERR_HOSTNAME_MISMATCH>
  
 -=item B<63 X509_V_ERR_EMAIL_MISMATCH: Email address mismatch>
-+=item B<X509_V_ERR_IP_ADDRESS_MISMATCH>
++Hostname mismatch.
  
 -TBA
-+IP address mismatch.
++=item B<X509_V_ERR_EMAIL_MISMATCH>
  
 -=item B<64 X509_V_ERR_IP_ADDRESS_MISMATCH: IP address mismatch>
--
++Email address mismatch.
+ 
 -TBA
--
++=item B<X509_V_ERR_IP_ADDRESS_MISMATCH>
+ 
 -=item B<65 X509_V_ERR_DANE_NO_MATCH: No matching DANE TLSA records>
++IP address mismatch.
++
 +=item B<X509_V_ERR_DANE_NO_MATCH>
  
  DANE TLSA authentication is enabled, but no TLSA records matched the
  certificate chain.
-@@ -682,7 +689,7 @@ mishandled them.
+@@ -682,7 +699,7 @@ mishandled them.
  
  Previous versions of this documentation swapped the meaning of the
  B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT> and
@@ -93322,15 +100964,15 @@
  
  =head1 SEE ALSO
  
-@@ -695,5 +702,13 @@ The B<-show_chain> option was first added to OpenSSL 1.1.0.
+@@ -695,5 +712,13 @@ The B<-show_chain> option was first added to OpenSSL 1.1.0.
  The B<-issuer_checks> option is deprecated as of OpenSSL 1.1.0 and
  is silently ignored.
  
 -=cut
 +=head1 COPYRIGHT
++
++Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
  
-+Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
@@ -93338,7 +100980,7 @@
 +
 +=cut
 diff --git a/doc/apps/version.pod b/doc/apps/version.pod
-index 01f6d2a0265f..a97ed20445cc 100644
+index 01f6d2a..a97ed20 100644
 --- a/doc/apps/version.pod
 +++ b/doc/apps/version.pod
 @@ -68,4 +68,13 @@ ENGINESDIR setting.
@@ -93356,7 +100998,7 @@
 +
  =cut
 diff --git a/doc/apps/x509.pod b/doc/apps/x509.pod
-index 2dc225bc090f..cddfc8ce4acf 100644
+index 2dc225b..cddfc8c 100644
 --- a/doc/apps/x509.pod
 +++ b/doc/apps/x509.pod
 @@ -1,4 +1,3 @@
@@ -93554,10 +101196,10 @@
  
  =cut
 diff --git a/doc/apps/x509v3_config.pod b/doc/apps/x509v3_config.pod
-index 72eec511a256..6e90b350b60f 100644
+index 72eec51..edfd76e 100644
 --- a/doc/apps/x509v3_config.pod
 +++ b/doc/apps/x509v3_config.pod
-@@ -104,23 +104,23 @@ and decipherOnly.
+@@ -104,23 +104,23 @@ Examples:
  This extensions consists of a list of usages indicating purposes for which
  the certificate public key can be used for,
  
@@ -93587,7 +101229,7 @@
 + emailProtection        E-mail Protection (S/MIME).
 + timeStamping           Trusted Timestamping
 + OCSPSigning            OCSP Signing
-+ ipsecIKE               ipsec Internet Key Exchnage
++ ipsecIKE               ipsec Internet Key Exchange
 + msCodeInd              Microsoft Individual Code Signing (authenticode)
 + msCodeCom              Microsoft Commercial Code Signing (authenticode)
 + msCTLSign              Microsoft Trust List Signing
@@ -93595,7 +101237,7 @@
  
  Examples:
  
-@@ -224,7 +224,7 @@ certain values are meaningful, for example OCSP and caIssuers.
+@@ -224,7 +224,7 @@ Example:
   authorityInfoAccess = caIssuers;URI:http://my.ca/ca.html
  
  
@@ -93604,7 +101246,7 @@
  
  This is a multi-valued extension whose options can be either in name:value pair
  using the same form as subject alternative name or a single value representing
-@@ -529,5 +529,13 @@ Due to the behaviour of the OpenSSL B<conf> library the same field name
+@@ -529,5 +529,13 @@ will only recognize the last value. This can be worked around by using the form:
  L<req(1)>, L<ca(1)>, L<x509(1)>,
  L<ASN1_generate_nconf(3)>
  
@@ -93619,7 +101261,7 @@
  
  =cut
 diff --git a/doc/crypto/ASN1_INTEGER_get_int64.pod b/doc/crypto/ASN1_INTEGER_get_int64.pod
-index fb1076658e7a..24e0f3800355 100644
+index fb10766..24e0f38 100644
 --- a/doc/crypto/ASN1_INTEGER_get_int64.pod
 +++ b/doc/crypto/ASN1_INTEGER_get_int64.pod
 @@ -2,6 +2,7 @@
@@ -93645,7 +101287,7 @@
 +
  =cut
 diff --git a/doc/crypto/ASN1_OBJECT_new.pod b/doc/crypto/ASN1_OBJECT_new.pod
-index cc9cf43cad32..4c018efffd56 100644
+index cc9cf43..4c018ef 100644
 --- a/doc/crypto/ASN1_OBJECT_new.pod
 +++ b/doc/crypto/ASN1_OBJECT_new.pod
 @@ -39,4 +39,13 @@ ASN1_OBJECT_free() returns no value.
@@ -93663,9 +101305,27 @@
 +
  =cut
 diff --git a/doc/crypto/ASN1_STRING_length.pod b/doc/crypto/ASN1_STRING_length.pod
-index 4c9ad0a31c1b..1675169566f0 100644
+index 4c9ad0a..a51d984 100644
 --- a/doc/crypto/ASN1_STRING_length.pod
 +++ b/doc/crypto/ASN1_STRING_length.pod
+@@ -3,7 +3,7 @@
+ =head1 NAME
+ 
+ ASN1_STRING_dup, ASN1_STRING_cmp, ASN1_STRING_set, ASN1_STRING_length,
+-ASN1_STRING_length_set, ASN1_STRING_type, ASN1_STRING_data, ASN1_STRING_to_UTF8 -
++ASN1_STRING_type, ASN1_STRING_data, ASN1_STRING_to_UTF8 -
+ ASN1_STRING utility functions
+ 
+ =head1 SYNOPSIS
+@@ -53,7 +53,7 @@ should be freed using OPENSSL_free().
+ =head1 NOTES
+ 
+ Almost all ASN1 types in OpenSSL are represented as an B<ASN1_STRING>
+-structure. Other types such as B<ASN1_OCTET_STRING> are simply typedefed
++structure. Other types such as B<ASN1_OCTET_STRING> are simply typedef'ed
+ to B<ASN1_STRING> and the functions call the B<ASN1_STRING> equivalents.
+ B<ASN1_STRING> is also used for some B<CHOICE> types which consist
+ entirely of primitive string types such as B<DirectoryString> and
 @@ -72,12 +72,17 @@ character in big endian format, UTF8String will be in UTF8 format.
  Similar care should be take to ensure the data is in the correct format
  when calling ASN1_STRING_set().
@@ -93688,7 +101348,7 @@
  
  =cut
 diff --git a/doc/crypto/ASN1_STRING_new.pod b/doc/crypto/ASN1_STRING_new.pod
-index 76e983a8208c..7bd2fc19210b 100644
+index 76e983a..7bd2fc1 100644
 --- a/doc/crypto/ASN1_STRING_new.pod
 +++ b/doc/crypto/ASN1_STRING_new.pod
 @@ -40,8 +40,13 @@ ASN1_STRING_free() does not return a value.
@@ -93708,7 +101368,7 @@
  
  =cut
 diff --git a/doc/crypto/ASN1_STRING_print_ex.pod b/doc/crypto/ASN1_STRING_print_ex.pod
-index 2be7f7caa277..1d5b4fcca177 100644
+index 2be7f7c..1d5b4fc 100644
 --- a/doc/crypto/ASN1_STRING_print_ex.pod
 +++ b/doc/crypto/ASN1_STRING_print_ex.pod
 @@ -2,7 +2,7 @@
@@ -93738,7 +101398,7 @@
  B<ASN1_STRFLGS_DUMP_DER> is set then the complete encoding is dumped
  instead (including tag and length octets).
  
-@@ -89,8 +89,13 @@ B<ASN1_STRFLGS_RFC2253> includes all the flags required by RFC2253. It is
+@@ -89,8 +89,13 @@ equivalent to:
  L<X509_NAME_print_ex(3)>,
  L<ASN1_tag2str(3)>
  
@@ -93755,7 +101415,7 @@
  
  =cut
 diff --git a/doc/crypto/ASN1_TIME_set.pod b/doc/crypto/ASN1_TIME_set.pod
-index d6332653ec73..457b7218d4cc 100644
+index d633265..457b721 100644
 --- a/doc/crypto/ASN1_TIME_set.pod
 +++ b/doc/crypto/ASN1_TIME_set.pod
 @@ -3,7 +3,7 @@
@@ -93767,7 +101427,7 @@
  
  =head1 SYNOPSIS
  
-@@ -100,7 +100,7 @@ anyway.
+@@ -100,7 +100,7 @@ Determine if one time is later or sooner than the current time:
   int day, sec;
  
   if (!ASN1_TIME_diff(&day, &sec, NULL, to))
@@ -93791,7 +101451,7 @@
 +
  =cut
 diff --git a/doc/crypto/ASN1_TYPE_get.pod b/doc/crypto/ASN1_TYPE_get.pod
-index 3fc9d2abba37..d4233039e88e 100644
+index 3fc9d2a..d423303 100644
 --- a/doc/crypto/ASN1_TYPE_get.pod
 +++ b/doc/crypto/ASN1_TYPE_get.pod
 @@ -88,4 +88,13 @@ NULL on failure.
@@ -93809,7 +101469,7 @@
 +
  =cut
 diff --git a/doc/crypto/ASN1_generate_nconf.pod b/doc/crypto/ASN1_generate_nconf.pod
-index a95b2c8bbbc7..92f624fa24d3 100644
+index a95b2c8..92f624f 100644
 --- a/doc/crypto/ASN1_generate_nconf.pod
 +++ b/doc/crypto/ASN1_generate_nconf.pod
 @@ -8,8 +8,8 @@ ASN1_generate_nconf, ASN1_generate_v3 - ASN1 generation functions
@@ -93880,7 +101540,7 @@
 +
  =cut
 diff --git a/doc/crypto/ASYNC_WAIT_CTX_new.pod b/doc/crypto/ASYNC_WAIT_CTX_new.pod
-index c4e4d0e38d51..364cbb4e3031 100644
+index c4e4d0e..364cbb4 100644
 --- a/doc/crypto/ASYNC_WAIT_CTX_new.pod
 +++ b/doc/crypto/ASYNC_WAIT_CTX_new.pod
 @@ -53,7 +53,7 @@ ASYNC_WAIT_CTX_get_all_fds() with a NULL B<fd> value will return no file
@@ -93907,9 +101567,19 @@
 +
  =cut
 diff --git a/doc/crypto/ASYNC_start_job.pod b/doc/crypto/ASYNC_start_job.pod
-index 0e6507b195e7..b5139a34a999 100644
+index 0e6507b..20bc1ad 100644
 --- a/doc/crypto/ASYNC_start_job.pod
 +++ b/doc/crypto/ASYNC_start_job.pod
+@@ -2,8 +2,8 @@
+ 
+ =head1 NAME
+ 
++ASYNC_get_wait_ctx,
+ ASYNC_init_thread, ASYNC_cleanup_thread, ASYNC_start_job, ASYNC_pause_job,
+-ASYNC_in_job, ASYNC_get_wait_fd, ASYNC_set_wait_fd, ASYNC_clear_wait_fd,
+ ASYNC_get_current_job, ASYNC_block_pause, ASYNC_unblock_pause, ASYNC_is_capable
+ - asynchronous job management functions
+ 
 @@ -111,7 +111,7 @@ for the B<job>. ASYNC_WAIT_CTXs can have a "wait" file descriptor associated
  with them. Applications can wait for the file descriptor to be ready for "read"
  using a system function call such as select or poll (being ready for "read"
@@ -93919,7 +101589,7 @@
  attempting to restart it to see if it is ready to continue.
  
  An example of typical usage might be an async capable engine. User code would
-@@ -267,7 +267,7 @@ otherwise.
+@@ -267,7 +267,7 @@ The following example demonstrates how to use most of the core async APIs:
  
           /* Wait for the job to be woken */
           printf("Waiting for the job to be woken up\n");
@@ -93944,7 +101614,7 @@
  =cut
 diff --git a/doc/crypto/BF_encrypt.pod b/doc/crypto/BF_encrypt.pod
 new file mode 100644
-index 000000000000..6d8cf1fdb438
+index 0000000..6d8cf1f
 --- /dev/null
 +++ b/doc/crypto/BF_encrypt.pod
 @@ -0,0 +1,117 @@
@@ -94066,7 +101736,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_ADDR.pod b/doc/crypto/BIO_ADDR.pod
-index a3c9b5cfaf46..4b169e8a89c4 100644
+index a3c9b5c..4b169e8 100644
 --- a/doc/crypto/BIO_ADDR.pod
 +++ b/doc/crypto/BIO_ADDR.pod
 @@ -112,3 +112,14 @@ information they should return isn't available.
@@ -94085,7 +101755,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_ADDRINFO.pod b/doc/crypto/BIO_ADDRINFO.pod
-index 42a26e19fd6d..9ebf99a81464 100644
+index 42a26e1..9ebf99a 100644
 --- a/doc/crypto/BIO_ADDRINFO.pod
 +++ b/doc/crypto/BIO_ADDRINFO.pod
 @@ -2,9 +2,10 @@
@@ -94124,7 +101794,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_connect.pod b/doc/crypto/BIO_connect.pod
-index 4c908fba457e..5194033feb89 100644
+index 4c908fb..5194033 100644
 --- a/doc/crypto/BIO_connect.pod
 +++ b/doc/crypto/BIO_connect.pod
 @@ -99,3 +99,14 @@ BIO_get_accept_socket() and BIO_accept() are deprecated since OpenSSL
@@ -94143,7 +101813,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_ctrl.pod b/doc/crypto/BIO_ctrl.pod
-index 722e8b8f46c9..d6d0df1c5a1c 100644
+index 722e8b8..d6d0df1 100644
 --- a/doc/crypto/BIO_ctrl.pod
 +++ b/doc/crypto/BIO_ctrl.pod
 @@ -13,7 +13,7 @@ BIO_get_info_callback, BIO_set_info_callback - BIO control operations
@@ -94184,7 +101854,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_f_base64.pod b/doc/crypto/BIO_f_base64.pod
-index c25ac51124f0..19df1dd63814 100644
+index c25ac51..19df1dd 100644
 --- a/doc/crypto/BIO_f_base64.pod
 +++ b/doc/crypto/BIO_f_base64.pod
 @@ -4,12 +4,14 @@
@@ -94212,7 +101882,7 @@
  
  BIO_flush() on a base64 BIO that is being written through is
  used to signal that no more data is to be encoded: this is used
-@@ -63,8 +65,8 @@ Read Base64 encoded data from standard input and write the decoded
+@@ -63,8 +65,8 @@ data to standard output:
   bio = BIO_new_fp(stdin, BIO_NOCLOSE);
   bio_out = BIO_new_fp(stdout, BIO_NOCLOSE);
   BIO_push(b64, bio);
@@ -94229,21 +101899,33 @@
  
 -=head1 SEE ALSO
 +=head1 COPYRIGHT
- 
--TBA
++
 +Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
 +
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
-+
+ 
+-TBA
 +=cut
 diff --git a/doc/crypto/BIO_f_buffer.pod b/doc/crypto/BIO_f_buffer.pod
-index edaa3513df26..68811c3c930f 100644
+index edaa351..286a39c 100644
 --- a/doc/crypto/BIO_f_buffer.pod
 +++ b/doc/crypto/BIO_f_buffer.pod
-@@ -71,3 +71,14 @@ L<BIO_reset(3)>,
+@@ -2,6 +2,11 @@
+ 
+ =head1 NAME
+ 
++BIO_get_buffer_num_lines,
++BIO_set_read_buffer_size,
++BIO_set_write_buffer_size,
++BIO_set_buffer_size,
++BIO_set_buffer_read_data,
+ BIO_f_buffer - buffering BIO
+ 
+ =head1 SYNOPSIS
+@@ -71,3 +76,14 @@ L<BIO_reset(3)>,
  L<BIO_flush(3)>,
  L<BIO_pop(3)>,
  L<BIO_ctrl(3)>.
@@ -94259,7 +101941,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_f_cipher.pod b/doc/crypto/BIO_f_cipher.pod
-index 947d1523e31a..87ab3ccc9dfa 100644
+index 947d152..87ab3cc 100644
 --- a/doc/crypto/BIO_f_cipher.pod
 +++ b/doc/crypto/BIO_f_cipher.pod
 @@ -4,14 +4,16 @@
@@ -94310,7 +101992,7 @@
 -TBA
 +=cut
 diff --git a/doc/crypto/BIO_f_md.pod b/doc/crypto/BIO_f_md.pod
-index b0fe0143bdd4..b2c1433d25b3 100644
+index b0fe014..b2c1433 100644
 --- a/doc/crypto/BIO_f_md.pod
 +++ b/doc/crypto/BIO_f_md.pod
 @@ -4,15 +4,17 @@
@@ -94335,7 +102017,7 @@
  
  =head1 DESCRIPTION
  
-@@ -103,7 +105,7 @@ checking has been omitted for clarity.
+@@ -103,7 +105,7 @@ The next example digests data by reading through a chain instead:
   BIO_set_md(mdtmp, EVP_md5());
   bio = BIO_push(mdtmp, bio);
   do {
@@ -94376,10 +102058,10 @@
  
 -=head1 SEE ALSO
 +=head1 COPYRIGHT
++
++Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
  
 -TBA
-+Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
@@ -94387,7 +102069,7 @@
  
  =cut
 diff --git a/doc/crypto/BIO_f_null.pod b/doc/crypto/BIO_f_null.pod
-index 6ee84915e102..c4e4c667c1d4 100644
+index 6ee8491..c4e4c66 100644
 --- a/doc/crypto/BIO_f_null.pod
 +++ b/doc/crypto/BIO_f_null.pod
 @@ -8,7 +8,7 @@ BIO_f_null - null filter
@@ -94416,10 +102098,18 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_f_ssl.pod b/doc/crypto/BIO_f_ssl.pod
-index 46eecd11e22d..4c9da6a2cadf 100644
+index 46eecd1..4007130 100644
 --- a/doc/crypto/BIO_f_ssl.pod
 +++ b/doc/crypto/BIO_f_ssl.pod
-@@ -7,6 +7,8 @@ BIO_get_num_renegotiates, BIO_set_ssl_renegotiate_timeout, BIO_new_ssl,
+@@ -2,11 +2,15 @@
+ 
+ =head1 NAME
+ 
+-BIO_f_ssl, BIO_set_ssl, BIO_get_ssl, BIO_set_ssl_mode, BIO_set_ssl_renegotiate_bytes,
++BIO_do_handshake,
++BIO_f_ssl, BIO_set_ssl, BIO_get_ssl, BIO_set_ssl_mode,
++BIO_set_ssl_renegotiate_bytes,
+ BIO_get_num_renegotiates, BIO_set_ssl_renegotiate_timeout, BIO_new_ssl,
  BIO_new_ssl_connect, BIO_new_buffer_ssl_connect, BIO_ssl_copy_session_id,
  BIO_ssl_shutdown - SSL BIO
  
@@ -94428,7 +102118,7 @@
  =head1 SYNOPSIS
  
   #include <openssl/bio.h>
-@@ -14,15 +16,15 @@ BIO_ssl_shutdown - SSL BIO
+@@ -14,15 +18,15 @@ BIO_ssl_shutdown - SSL BIO
  
   const BIO_METHOD *BIO_f_ssl(void);
  
@@ -94450,7 +102140,7 @@
  
   BIO *BIO_new_ssl(SSL_CTX *ctx,int client);
   BIO *BIO_new_ssl_connect(SSL_CTX *ctx);
-@@ -30,13 +32,13 @@ BIO_ssl_shutdown - SSL BIO
+@@ -30,13 +34,13 @@ BIO_ssl_shutdown - SSL BIO
   int BIO_ssl_copy_session_id(BIO *to,BIO *from);
   void BIO_ssl_shutdown(BIO *bio);
  
@@ -94466,7 +102156,7 @@
  
  I/O performed on an SSL BIO communicates using the SSL protocol with
  the SSLs read and write BIOs. If an SSL connection is not established
-@@ -63,7 +65,7 @@ BIO_set_ssl_mode() sets the SSL BIO mode to B<client>. If B<client>
+@@ -63,7 +67,7 @@ BIO_set_ssl_mode() sets the SSL BIO mode to B<client>. If B<client>
  is 1 client mode is set. If B<client> is 0 server mode is set.
  
  BIO_set_ssl_renegotiate_bytes() sets the renegotiate byte count
@@ -94475,7 +102165,7 @@
  the SSL session is automatically renegotiated. B<num> must be at
  least 512 bytes.
  
-@@ -84,7 +86,7 @@ BIO_new_buffer_ssl_connect() creates a new BIO chain consisting
+@@ -84,7 +88,7 @@ BIO_new_buffer_ssl_connect() creates a new BIO chain consisting
  of a buffering BIO, an SSL BIO (using B<ctx>) and a connect
  BIO.
  
@@ -94484,7 +102174,7 @@
  BIO chains B<from> and B<to>. It does this by locating the
  SSL BIOs in each chain and calling SSL_copy_session_id() on
  the internal SSL pointer.
-@@ -124,10 +126,6 @@ Applications do not have to call BIO_do_handshake() but may wish
+@@ -124,10 +128,6 @@ Applications do not have to call BIO_do_handshake() but may wish
  to do so to separate the handshake process from other I/O
  processing.
  
@@ -94495,7 +102185,7 @@
  =head1 EXAMPLE
  
  This SSL/TLS client example, attempts to retrieve a page from an
-@@ -140,54 +138,48 @@ unencrypted example in L<BIO_s_connect(3)>.
+@@ -140,54 +140,48 @@ unencrypted example in L<BIO_s_connect(3)>.
   SSL_CTX *ctx;
   SSL *ssl;
  
@@ -94543,19 +102233,18 @@
 +     fprintf(stderr, "Error connecting to server\n");
 +     ERR_print_errors_fp(stderr);
 +     exit(1);
-+ }
+  }
+-
+- if(BIO_do_handshake(sbio) <= 0) {
+-	fprintf(stderr, "Error establishing SSL connection\n");
+-	ERR_print_errors_fp(stderr);
+-	/* whatever ... */
 + if (BIO_do_handshake(sbio) <= 0) {
 +        fprintf(stderr, "Error establishing SSL connection\n");
 +        ERR_print_errors_fp(stderr);
 +        exit(1);
   }
  
-- if(BIO_do_handshake(sbio) <= 0) {
--	fprintf(stderr, "Error establishing SSL connection\n");
--	ERR_print_errors_fp(stderr);
--	/* whatever ... */
-- }
--
 - /* Could examine ssl here to get connection info */
 + /* XXX Could examine ssl here to get connection info */
  
@@ -94572,7 +102261,7 @@
   }
   BIO_free_all(sbio);
   BIO_free(out);
-@@ -203,102 +195,83 @@ a client and also echoes the request to standard output.
+@@ -203,102 +197,83 @@ a client and also echoes the request to standard output.
   SSL_CTX *ctx;
   SSL *ssl;
  
@@ -94715,45 +102404,51 @@
   BIO_free_all(sbio);
  
  =head1 BUGS
-@@ -310,6 +283,13 @@ explicitly being popped (e.g. a pop higher up the chain). Applications which
+@@ -310,6 +285,13 @@ explicitly being popped (e.g. a pop higher up the chain). Applications which
  included workarounds for this bug (e.g. freeing BIOs more than once) should
  be modified to handle this fix or they may free up an already freed BIO.
  
 -=head1 SEE ALSO
 +=head1 COPYRIGHT
- 
--TBA
++
 +Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
 +
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
-+
+ 
+-TBA
 +=cut
 diff --git a/doc/crypto/BIO_find_type.pod b/doc/crypto/BIO_find_type.pod
-index 6e65668b4c45..c5029837b01a 100644
+index 6e65668..f03071a 100644
 --- a/doc/crypto/BIO_find_type.pod
 +++ b/doc/crypto/BIO_find_type.pod
-@@ -8,35 +8,35 @@ BIO_find_type, BIO_next, BIO_method_type - BIO chain traversal
+@@ -2,41 +2,47 @@
  
+ =head1 NAME
+ 
++BIO_TYPE_NONE, BIO_TYPE_MEM, BIO_TYPE_FILE, BIO_TYPE_FD, BIO_TYPE_SOCKET,
++BIO_TYPE_NULL, BIO_TYPE_SSL, BIO_TYPE_MD, BIO_TYPE_BUFFER, BIO_TYPE_CIPHER,
++BIO_TYPE_BASE64, BIO_TYPE_CONNECT, BIO_TYPE_ACCEPT, BIO_TYPE_PROXY_CLIENT,
++BIO_TYPE_PROXY_SERVER, BIO_TYPE_NBIO_TEST, BIO_TYPE_NULL_FILTER,
++BIO_TYPE_BER, BIO_TYPE_BIO, BIO_TYPE_DESCRIPTOR, BIO_TYPE_FILTER,
++BIO_TYPE_SOURCE_SINK,
+ BIO_find_type, BIO_next, BIO_method_type - BIO chain traversal
+ 
+ =head1 SYNOPSIS
+ 
   #include <openssl/bio.h>
  
 - BIO *	BIO_find_type(BIO *b,int bio_type);
 - BIO *	BIO_next(BIO *b);
-+ BIO *  BIO_find_type(BIO *b,int bio_type);
-+ BIO *  BIO_next(BIO *b);
- 
+-
 - #define BIO_method_type(b)		((b)->method->type)
-+ #define BIO_method_type(b)             ((b)->method->type)
- 
+-
 - #define BIO_TYPE_NONE		0
 - #define BIO_TYPE_MEM		(1|0x0400)
 - #define BIO_TYPE_FILE		(2|0x0400)
-+ #define BIO_TYPE_NONE          0
-+ #define BIO_TYPE_MEM           (1|0x0400)
-+ #define BIO_TYPE_FILE          (2|0x0400)
- 
+-
 - #define BIO_TYPE_FD		(4|0x0400|0x0100)
 - #define BIO_TYPE_SOCKET		(5|0x0400|0x0100)
 - #define BIO_TYPE_NULL		(6|0x0400)
@@ -94770,6 +102465,19 @@
 - #define BIO_TYPE_NULL_FILTER	(17|0x0200)
 - #define BIO_TYPE_BER		(18|0x0200)
 - #define BIO_TYPE_BIO		(19|0x0400)
+-
+- #define BIO_TYPE_DESCRIPTOR	0x0100
+- #define BIO_TYPE_FILTER		0x0200
+- #define BIO_TYPE_SOURCE_SINK	0x0400
++ BIO *  BIO_find_type(BIO *b,int bio_type);
++ BIO *  BIO_next(BIO *b);
++
++ #define BIO_method_type(b)             ((b)->method->type)
++
++ #define BIO_TYPE_NONE          0
++ #define BIO_TYPE_MEM           (1|0x0400)
++ #define BIO_TYPE_FILE          (2|0x0400)
++
 + #define BIO_TYPE_FD            (4|0x0400|0x0100)
 + #define BIO_TYPE_SOCKET                (5|0x0400|0x0100)
 + #define BIO_TYPE_NULL          (6|0x0400)
@@ -94786,17 +102494,14 @@
 + #define BIO_TYPE_NULL_FILTER   (17|0x0200)
 + #define BIO_TYPE_BER           (18|0x0200)
 + #define BIO_TYPE_BIO           (19|0x0400)
- 
-- #define BIO_TYPE_DESCRIPTOR	0x0100
-- #define BIO_TYPE_FILTER		0x0200
-- #define BIO_TYPE_SOURCE_SINK	0x0400
++
 + #define BIO_TYPE_DESCRIPTOR    0x0100
 + #define BIO_TYPE_FILTER                0x0200
 + #define BIO_TYPE_SOURCE_SINK   0x0400
  
  =head1 DESCRIPTION
  
-@@ -68,18 +68,25 @@ BIO_method_type() returns the type of the BIO B<b>.
+@@ -68,18 +74,25 @@ BIO_method_type() returns the type of the BIO B<b>.
  Traverse a chain looking for digest BIOs:
  
   BIO *btmp;
@@ -94831,7 +102536,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_get_data.pod b/doc/crypto/BIO_get_data.pod
-index 73f8ea56e5df..14f21fa720e1 100644
+index 73f8ea5..14f21fa 100644
 --- a/doc/crypto/BIO_get_data.pod
 +++ b/doc/crypto/BIO_get_data.pod
 @@ -53,4 +53,13 @@ L<bio>, L<BIO_meth_new>
@@ -94849,24 +102554,59 @@
 +
  =cut
 diff --git a/doc/crypto/BIO_get_ex_new_index.pod b/doc/crypto/BIO_get_ex_new_index.pod
-index 4824b5d9a0c7..21e5bb76abab 100644
+index 4824b5d..3e24f10 100644
 --- a/doc/crypto/BIO_get_ex_new_index.pod
 +++ b/doc/crypto/BIO_get_ex_new_index.pod
-@@ -23,9 +23,9 @@ The synopsis below is for the X509 structure, but is the same for all
+@@ -15,31 +15,50 @@ ECDSA_get_ex_new_index, ECDSA_set_ex_data, ECDSA_get_ex_data,
+ RSA_get_ex_new_index, RSA_set_ex_data, RSA_get_ex_data
+ - application-specific data
+ 
+-=head1 SYNOPSIS
++=for comment generic
+ 
+-The synopsis below is for the X509 structure, but is the same for all
+-crypto structures:
++=head1 SYNOPSIS
+ 
   #include <openssl/x509.h>
  
-  int X509_get_ex_new_index(long argl, void *argp,
+- int X509_get_ex_new_index(long argl, void *argp,
 -		CRYPTO_EX_new *new_func,
 -		CRYPTO_EX_dup *dup_func,
 -		CRYPTO_EX_free *free_func);
++ int TYPE_get_ex_new_index(long argl, void *argp,
 +                CRYPTO_EX_new *new_func,
 +                CRYPTO_EX_dup *dup_func,
 +                CRYPTO_EX_free *free_func);
  
-  int X509_set_ex_data(X509 *d, int idx, void *arg);
+- int X509_set_ex_data(X509 *d, int idx, void *arg);
++ int TYPE_set_ex_data(TYPE *d, int idx, void *arg);
  
-@@ -42,4 +42,13 @@ For details, see L<CRYPTO_get_ex_new_index(3)>.
+- void *X509_get_ex_data(X509 *d, int idx);
++ void *TYPE_get_ex_data(TYPE *d, int idx);
  
+ =head1 DESCRIPTION
+ 
+-These functions handle application-specific data for OpenSSL crypto
++In the description here, I<TYPE> is used a placeholder
++for any of the OpenSSL datatypes listed in
++L<CRYPTO_get_ex_new_index(3)>.
++
++These functions handle application-specific data for OpenSSL data
+ structures.
+ 
+-For details, see L<CRYPTO_get_ex_new_index(3)>.
++TYPE_get_new_ex_index() is a macro that calls CRYPTO_get_ex_new_index()
++with the correct B<index> value.
++
++TYPE_set_ex_data() is a function that calls CRYPTO_set_ex_data() with
++an offset into the opaque exdata part of the TYPE object.
++
++TYPE_get_ex_data() is a function that calls CRYPTO_get_ex_data() with an
++an offset into the opaque exdata part of the TYPE object.
+ 
+ =head1 SEE ALSO
+ 
  L<CRYPTO_get_ex_new_index(3)>.
  
 +=head1 COPYRIGHT
@@ -94880,7 +102620,7 @@
 +
  =cut
 diff --git a/doc/crypto/BIO_meth_new.pod b/doc/crypto/BIO_meth_new.pod
-index de6ce6628ed5..2c2db6f57802 100644
+index de6ce66..2c2db6f 100644
 --- a/doc/crypto/BIO_meth_new.pod
 +++ b/doc/crypto/BIO_meth_new.pod
 @@ -75,7 +75,7 @@ called in response to the application calling BIO_puts(). The parameters for
@@ -94916,7 +102656,7 @@
 +
  =cut
 diff --git a/doc/crypto/BIO_new.pod b/doc/crypto/BIO_new.pod
-index 4c9299bb3c1a..8e42e650a21e 100644
+index 4c9299b..8e42e65 100644
 --- a/doc/crypto/BIO_new.pod
 +++ b/doc/crypto/BIO_new.pod
 @@ -8,12 +8,12 @@ BIO_new, BIO_set, BIO_up_ref, BIO_free, BIO_vfree, BIO_free_all - BIO allocation
@@ -94966,18 +102706,18 @@
  
 -=head1 SEE ALSO
 +=head1 COPYRIGHT
- 
--TBA
++
 +Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
 +
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
-+
+ 
+-TBA
 +=cut
 diff --git a/doc/crypto/BIO_new_CMS.pod b/doc/crypto/BIO_new_CMS.pod
-index 0069b8d7f0cf..b06c224f7180 100644
+index 0069b8d..b06c224 100644
 --- a/doc/crypto/BIO_new_CMS.pod
 +++ b/doc/crypto/BIO_new_CMS.pod
 @@ -2,7 +2,7 @@
@@ -95004,7 +102744,7 @@
 +
  =cut
 diff --git a/doc/crypto/BIO_parse_hostserv.pod b/doc/crypto/BIO_parse_hostserv.pod
-index df73ea72c767..4ee4f46a8460 100644
+index df73ea7..4ee4f46 100644
 --- a/doc/crypto/BIO_parse_hostserv.pod
 +++ b/doc/crypto/BIO_parse_hostserv.pod
 @@ -42,26 +42,32 @@ The service part can  be a service name or its port number.
@@ -95049,7 +102789,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_push.pod b/doc/crypto/BIO_push.pod
-index 1523e5b6958b..cb19c0b3bab3 100644
+index 1523e5b..cb19c0b 100644
 --- a/doc/crypto/BIO_push.pod
 +++ b/doc/crypto/BIO_push.pod
 @@ -2,7 +2,7 @@
@@ -95076,7 +102816,7 @@
 +
  =cut
 diff --git a/doc/crypto/BIO_read.pod b/doc/crypto/BIO_read.pod
-index 90b1c7520ffe..45871c1be975 100644
+index 90b1c75..45871c1 100644
 --- a/doc/crypto/BIO_read.pod
 +++ b/doc/crypto/BIO_read.pod
 @@ -8,10 +8,10 @@ BIO_read, BIO_write, BIO_gets, BIO_puts - BIO I/O functions
@@ -95110,10 +102850,18 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_s_accept.pod b/doc/crypto/BIO_s_accept.pod
-index 88877e4d272b..ad7bfaac4b08 100644
+index 88877e4..a9259ab 100644
 --- a/doc/crypto/BIO_s_accept.pod
 +++ b/doc/crypto/BIO_s_accept.pod
-@@ -23,9 +23,9 @@ BIO_get_bind_mode, BIO_do_accept - accept BIO
+@@ -2,6 +2,7 @@
+ 
+ =head1 NAME
+ 
++BIO_BIND_NORMAL, BIO_BIND_REUSEADDR_IF_UNUSED, BIO_BIND_REUSEADDR,
+ BIO_s_accept, BIO_set_accept_port, BIO_get_accept_port, BIO_new_accept,
+ BIO_set_nbio_accept, BIO_set_accept_bios, BIO_set_bind_mode,
+ BIO_get_bind_mode, BIO_do_accept - accept BIO
+@@ -23,9 +24,9 @@ BIO_get_bind_mode, BIO_do_accept - accept BIO
   long BIO_set_bind_mode(BIO *b, long mode);
   long BIO_get_bind_mode(BIO *b);
  
@@ -95126,7 +102874,7 @@
  
   int BIO_do_accept(BIO *b);
  
-@@ -75,7 +75,7 @@ BIO_set_nbio_accept() sets the accept socket to blocking mode
+@@ -75,7 +76,7 @@ BIO_set_nbio_accept() sets the accept socket to blocking mode
  
  BIO_set_accept_bios() can be used to set a chain of BIOs which
  will be duplicated and prepended to the chain when an incoming
@@ -95135,7 +102883,7 @@
  buffering or SSL BIO is required for each connection. The
  chain of BIOs must not be freed after this call, they will
  be automatically freed when the accept BIO is freed.
-@@ -161,33 +161,35 @@ down each and finally closes both down.
+@@ -161,33 +162,35 @@ down each and finally closes both down.
  
   BIO *abio, *cbio, *cbio2;
  
@@ -95185,7 +102933,7 @@
   /* Close accept BIO to refuse further connections */
   cbio2 = BIO_pop(abio);
   BIO_free(abio);
-@@ -195,10 +197,18 @@ down each and finally closes both down.
+@@ -195,10 +198,18 @@ down each and finally closes both down.
   fprintf(stderr, "Sent out data on connection 2\n");
  
   BIO_puts(cbio, "Connection 1: Second connection established\n");
@@ -95196,18 +102944,18 @@
  
 -=head1 SEE ALSO
 +=head1 COPYRIGHT
- 
--TBA
++
 +Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
 +
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
-+
+ 
+-TBA
 +=cut
 diff --git a/doc/crypto/BIO_s_bio.pod b/doc/crypto/BIO_s_bio.pod
-index 438b5dd8f3a5..fb661979d8eb 100644
+index 438b5dd..fb66197 100644
 --- a/doc/crypto/BIO_s_bio.pod
 +++ b/doc/crypto/BIO_s_bio.pod
 @@ -2,7 +2,7 @@
@@ -95262,10 +103010,23 @@
 +
  =cut
 diff --git a/doc/crypto/BIO_s_connect.pod b/doc/crypto/BIO_s_connect.pod
-index 4c246e0be3e7..d97d5899a521 100644
+index 4c246e0..29192a6 100644
 --- a/doc/crypto/BIO_s_connect.pod
 +++ b/doc/crypto/BIO_s_connect.pod
-@@ -81,7 +81,7 @@ This return value is an internal pointer which should not be modified.
+@@ -2,9 +2,10 @@
+ 
+ =head1 NAME
+ 
++BIO_set_conn_address, BIO_get_conn_address,
+ BIO_s_connect, BIO_new_connect, BIO_set_conn_hostname, BIO_set_conn_port,
+-BIO_set_conn_ip, BIO_set_conn_int_port, BIO_get_conn_hostname,
+-BIO_get_conn_port, BIO_get_conn_ip, BIO_get_conn_int_port,
++BIO_get_conn_hostname,
++BIO_get_conn_port,
+ BIO_set_nbio, BIO_do_connect - connect BIO
+ 
+ =head1 SYNOPSIS
+@@ -81,7 +82,7 @@ This return value is an internal pointer which should not be modified.
  BIO_set_nbio() sets the non blocking I/O flag to B<n>. If B<n> is
  zero then blocking I/O is set. If B<n> is 1 then non blocking I/O
  is set. Blocking I/O is the default. The call to BIO_set_nbio()
@@ -95274,7 +103035,7 @@
  non blocking I/O is set during the connect process.
  
  BIO_new_connect() combines BIO_new() and BIO_set_conn_hostname() into
-@@ -167,16 +167,17 @@ to retrieve a page and copy the result to standard output.
+@@ -167,16 +168,17 @@ to retrieve a page and copy the result to standard output.
  
   cbio = BIO_new_connect("localhost:http");
   out = BIO_new_fp(stdout, BIO_NOCLOSE);
@@ -95301,7 +103062,7 @@
   }
   BIO_free(cbio);
   BIO_free(out);
-@@ -185,3 +186,14 @@ to retrieve a page and copy the result to standard output.
+@@ -185,3 +187,14 @@ to retrieve a page and copy the result to standard output.
  =head1 SEE ALSO
  
  L<BIO_ADDR(3)>
@@ -95317,7 +103078,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_s_fd.pod b/doc/crypto/BIO_s_fd.pod
-index e9ebdbf062b0..8002ad7754f3 100644
+index e9ebdbf..8002ad7 100644
 --- a/doc/crypto/BIO_s_fd.pod
 +++ b/doc/crypto/BIO_s_fd.pod
 @@ -8,10 +8,10 @@ BIO_s_fd, BIO_set_fd, BIO_get_fd, BIO_new_fd - file descriptor BIO
@@ -95359,7 +103120,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_s_file.pod b/doc/crypto/BIO_s_file.pod
-index 5ba0d34dd4d4..5eb564d8eb50 100644
+index 5ba0d34..5eb564d 100644
 --- a/doc/crypto/BIO_s_file.pod
 +++ b/doc/crypto/BIO_s_file.pod
 @@ -10,7 +10,7 @@ BIO_rw_filename - FILE bio
@@ -95387,11 +103148,19 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_s_mem.pod b/doc/crypto/BIO_s_mem.pod
-index 84abb29823ca..56d10bd8dd08 100644
+index 84abb29..afde930 100644
 --- a/doc/crypto/BIO_s_mem.pod
 +++ b/doc/crypto/BIO_s_mem.pod
-@@ -9,8 +9,8 @@ BIO_get_mem_ptr, BIO_new_mem_buf - memory BIO
+@@ -2,6 +2,7 @@
  
+ =head1 NAME
+ 
++BIO_s_secmem,
+ BIO_s_mem, BIO_set_mem_eof_return, BIO_get_mem_data, BIO_set_mem_buf,
+ BIO_get_mem_ptr, BIO_new_mem_buf - memory BIO
+ 
+@@ -9,8 +10,8 @@ BIO_get_mem_ptr, BIO_new_mem_buf - memory BIO
+ 
   #include <openssl/bio.h>
  
 - const BIO_METHOD *	BIO_s_mem(void);
@@ -95401,7 +103170,7 @@
  
   BIO_set_mem_eof_return(BIO *b,int v)
   long BIO_get_mem_data(BIO *b, char **pp)
-@@ -21,7 +21,7 @@ BIO_get_mem_ptr, BIO_new_mem_buf - memory BIO
+@@ -21,7 +22,7 @@ BIO_get_mem_ptr, BIO_new_mem_buf - memory BIO
  
  =head1 DESCRIPTION
  
@@ -95410,7 +103179,7 @@
  
  A memory BIO is a source/sink BIO which uses memory for its I/O. Data
  written to a memory BIO is stored in a BUF_MEM structure which is extended
-@@ -41,7 +41,7 @@ BUF_MEM structure is also freed.
+@@ -41,7 +42,7 @@ BUF_MEM structure is also freed.
  
  Calling BIO_reset() on a read write memory BIO clears any data in it if the
  flag BIO_FLAGS_NONCLEAR_RST is not set. On a read only BIO or if the flag
@@ -95419,7 +103188,7 @@
  the data can be read again.
  
  BIO_eof() is true if no data is in the BIO.
-@@ -96,7 +96,7 @@ There should be an option to set the maximum size of a memory BIO.
+@@ -96,7 +97,7 @@ There should be an option to set the maximum size of a memory BIO.
  Create a memory BIO and write some data to it:
  
   BIO *mem = BIO_new(BIO_s_mem());
@@ -95428,7 +103197,7 @@
  
  Create a read only memory BIO:
  
-@@ -110,8 +110,14 @@ There should be an option to set the maximum size of a memory BIO.
+@@ -110,8 +111,14 @@ Extract the BUF_MEM structure from a memory BIO and then free up the BIO:
   BIO_get_mem_ptr(mem, &bptr);
   BIO_set_close(mem, BIO_NOCLOSE); /* So BIO_free() leaves BUF_MEM alone */
   BIO_free(mem);
@@ -95447,7 +103216,7 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_s_null.pod b/doc/crypto/BIO_s_null.pod
-index 00905ecbea63..5a1d84dd2cfb 100644
+index 00905ec..5a1d84d 100644
 --- a/doc/crypto/BIO_s_null.pod
 +++ b/doc/crypto/BIO_s_null.pod
 @@ -8,7 +8,7 @@ BIO_s_null - null data sink
@@ -95476,27 +103245,64 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_s_socket.pod b/doc/crypto/BIO_s_socket.pod
-index 13efb50edcc4..88aaa88c496e 100644
+index 13efb50..ad0574a 100644
 --- a/doc/crypto/BIO_s_socket.pod
 +++ b/doc/crypto/BIO_s_socket.pod
-@@ -58,6 +58,13 @@ initialized.
+@@ -10,9 +10,6 @@ BIO_s_socket, BIO_new_socket - socket BIO
+ 
+  const BIO_METHOD *BIO_s_socket(void);
+ 
+- long BIO_set_fd(BIO *b, int fd, long close_flag);
+- long BIO_get_fd(BIO *b, int *c);
+-
+  BIO *BIO_new_socket(int sock, int close_flag);
+ 
+ =head1 DESCRIPTION
+@@ -26,12 +23,6 @@ BIO_puts() is supported but BIO_gets() is not.
+ If the close flag is set then the socket is shut down and closed
+ when the BIO is freed.
+ 
+-BIO_set_fd() sets the socket of BIO B<b> to B<fd> and the close
+-flag to B<close_flag>.
+-
+-BIO_get_fd() places the socket in B<c> if it is not NULL, it also
+-returns the socket. If B<c> is not NULL it should be of type (int *).
+-
+ BIO_new_socket() returns a socket BIO using B<sock> and B<close_flag>.
+ 
+ =head1 NOTES
+@@ -44,20 +35,20 @@ platforms sockets are not file descriptors and use distinct I/O routines,
+ Windows is one such platform. Any code mixing the two will not work on
+ all platforms.
+ 
+-BIO_set_fd() and BIO_get_fd() are macros.
+-
+ =head1 RETURN VALUES
+ 
+ BIO_s_socket() returns the socket BIO method.
+ 
+-BIO_set_fd() always returns 1.
+-
+-BIO_get_fd() returns the socket or -1 if the BIO has not been
+-initialized.
+-
  BIO_new_socket() returns the newly allocated BIO or NULL is an error
  occurred.
  
 -=head1 SEE ALSO
 +=head1 COPYRIGHT
- 
--TBA
++
 +Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
 +
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
-+
+ 
+-TBA
 +=cut
 diff --git a/doc/crypto/BIO_set_callback.pod b/doc/crypto/BIO_set_callback.pod
-index 47595562457b..219a6dd3ebda 100644
+index 4759556..219a6dd 100644
 --- a/doc/crypto/BIO_set_callback.pod
 +++ b/doc/crypto/BIO_set_callback.pod
 @@ -9,16 +9,16 @@ BIO_debug_callback - BIO callback functions
@@ -95539,19 +103345,21 @@
 +
 +=cut
 diff --git a/doc/crypto/BIO_should_retry.pod b/doc/crypto/BIO_should_retry.pod
-index f5b47b37b4b8..fc728ff9f27e 100644
+index f5b47b3..2a6485a 100644
 --- a/doc/crypto/BIO_should_retry.pod
 +++ b/doc/crypto/BIO_should_retry.pod
-@@ -2,7 +2,7 @@
+@@ -2,7 +2,9 @@
  
  =head1 NAME
  
 -BIO_should_retry, BIO_should_read, BIO_should_write,
++BIO_FLAGS_READ, BIO_FLAGS_WRITE, BIO_FLAGS_IO_SPECIAL, BIO_FLAGS_RWS,
++BIO_FLAGS_SHOULD_RETRY,
 +BIO_should_read, BIO_should_write,
  BIO_should_io_special, BIO_retry_type, BIO_should_retry,
  BIO_get_retry_BIO, BIO_get_retry_reason, BIO_set_retry_reason - BIO retry
  functions
-@@ -11,17 +11,17 @@ functions
+@@ -11,17 +13,17 @@ functions
  
   #include <openssl/bio.h>
  
@@ -95578,7 +103386,7 @@
  
   BIO *BIO_get_retry_BIO(BIO *bio, int *reason);
   int BIO_get_retry_reason(BIO *bio);
-@@ -53,7 +53,7 @@ B<BIO_FLAGS_IO_SPECIAL> though current BIO types will only set one of
+@@ -53,7 +55,7 @@ B<BIO_FLAGS_IO_SPECIAL> though current BIO types will only set one of
  these.
  
  BIO_get_retry_BIO() determines the precise reason for the special
@@ -95587,7 +103395,7 @@
  B<reason> is not NULL it contains the reason code. The meaning of
  the reason code and the action that should be taken depends on
  the type of BIO that resulted in this condition.
-@@ -99,7 +99,7 @@ available and then retry the BIO operation. By combining the retry
+@@ -99,7 +101,7 @@ available and then retry the BIO operation. By combining the retry
  conditions of several non blocking BIOs in a single select() call
  it is possible to service several BIOs in a single thread, though
  the performance may be poor if SSL BIOs are present because long delays
@@ -95596,7 +103404,7 @@
  
  It is possible for a BIO to block indefinitely if the underlying I/O
  structure cannot process or return any data. This depends on the behaviour of
-@@ -123,4 +123,13 @@ L<bio>
+@@ -123,4 +125,13 @@ L<bio>
  The BIO_get_retry_reason() and BIO_set_retry_reason() functions were added in
  OpenSSL version 1.1.0.
  
@@ -95611,7 +103419,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_BLINDING_new.pod b/doc/crypto/BN_BLINDING_new.pod
-index f539ae6c0297..754bcf3c3abe 100644
+index f539ae6..754bcf3 100644
 --- a/doc/crypto/BN_BLINDING_new.pod
 +++ b/doc/crypto/BN_BLINDING_new.pod
 @@ -2,26 +2,26 @@
@@ -95686,9 +103494,18 @@
 +
  =cut
 diff --git a/doc/crypto/BN_CTX_new.pod b/doc/crypto/BN_CTX_new.pod
-index df432c77cbcd..f2edd49a9770 100644
+index df432c7..ca54590 100644
 --- a/doc/crypto/BN_CTX_new.pod
 +++ b/doc/crypto/BN_CTX_new.pod
+@@ -2,7 +2,7 @@
+ 
+ =head1 NAME
+ 
+-BN_CTX_new, BN_CTX_secure_new, BN_CTX_init, BN_CTX_free - allocate and free BN_CTX structures
++BN_CTX_new, BN_CTX_secure_new, BN_CTX_free - allocate and free BN_CTX structures
+ 
+ =head1 SYNOPSIS
+ 
 @@ -64,4 +64,13 @@ L<BN_CTX_start(3)>
  
  BN_CTX_init() was removed in OpenSSL 1.1.0.
@@ -95704,7 +103521,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_CTX_start.pod b/doc/crypto/BN_CTX_start.pod
-index 2e23be27a7af..372da506d9d3 100644
+index 2e23be2..372da50 100644
 --- a/doc/crypto/BN_CTX_start.pod
 +++ b/doc/crypto/BN_CTX_start.pod
 @@ -45,4 +45,13 @@ can be obtained by L<ERR_get_error(3)>.
@@ -95722,7 +103539,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_add.pod b/doc/crypto/BN_add.pod
-index 3ad227458da8..72cc09f67aea 100644
+index 3ad2274..72cc09f 100644
 --- a/doc/crypto/BN_add.pod
 +++ b/doc/crypto/BN_add.pod
 @@ -115,4 +115,13 @@ The error codes can be obtained by L<ERR_get_error(3)>.
@@ -95740,7 +103557,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_add_word.pod b/doc/crypto/BN_add_word.pod
-index 1bbe31b0ceb0..35bdcf45c6eb 100644
+index 1bbe31b..35bdcf4 100644
 --- a/doc/crypto/BN_add_word.pod
 +++ b/doc/crypto/BN_add_word.pod
 @@ -49,4 +49,13 @@ B<(BN_ULONG)-1> if an error occurred.
@@ -95758,10 +103575,18 @@
 +
  =cut
 diff --git a/doc/crypto/BN_bn2bin.pod b/doc/crypto/BN_bn2bin.pod
-index cbd5d340e1a3..8098fd9df586 100644
+index cbd5d34..14b152e 100644
 --- a/doc/crypto/BN_bn2bin.pod
 +++ b/doc/crypto/BN_bn2bin.pod
-@@ -51,11 +51,12 @@ hexadecimal and decimal encoding of B<a> respectively. For negative
+@@ -2,6 +2,7 @@
+ 
+ =head1 NAME
+ 
++BN_bn2binpad,
+ BN_bn2bin, BN_bin2bn, BN_bn2lebinpad, BN_lebin2bn, BN_bn2hex, BN_bn2dec,
+ BN_hex2bn, BN_dec2bn, BN_print, BN_print_fp, BN_bn2mpi,
+ BN_mpi2bn - format conversions
+@@ -51,11 +52,12 @@ hexadecimal and decimal encoding of B<a> respectively. For negative
  numbers, the string is prefaced with a leading '-'. The string must be
  freed later using OPENSSL_free().
  
@@ -95770,7 +103595,7 @@
 -B<BIGNUM> is created. If B<bn> is NULL, it only computes the number's
 -length in hexadecimal digits. If the string starts with '-', the
 -number is negative. BN_dec2bn() is the same using the decimal system.
-+BN_hex2bn()takes as many characters as possible from the string B<str>,
++BN_hex2bn() takes as many characters as possible from the string B<str>,
 +including the leading character '-' which means negative, to form a valid
 +hexadecimal number representation and converts them to a B<BIGNUM> and
 +stores it in **B<bn>. If *B<bn> is NULL, a new B<BIGNUM> is created. If
@@ -95779,7 +103604,7 @@
  
  BN_print() and BN_print_fp() write the hexadecimal encoding of B<a>,
  with a leading '-' for negative numbers, to the B<BIO> or B<FILE>
-@@ -84,8 +85,9 @@ BN_bn2binpad() returns the number of bytes written or -1 if the supplied
+@@ -84,8 +86,9 @@ BN_bn2binpad() returns the number of bytes written or -1 if the supplied
  buffer is too small.
  
  BN_bn2hex() and BN_bn2dec() return a null-terminated string, or NULL
@@ -95791,7 +103616,7 @@
  
  BN_print_fp() and BN_print() return 1 on success, 0 on write errors.
  
-@@ -100,4 +102,13 @@ L<bn(3)>, L<ERR_get_error(3)>, L<BN_zero(3)>,
+@@ -100,4 +103,13 @@ L<bn(3)>, L<ERR_get_error(3)>, L<BN_zero(3)>,
  L<ASN1_INTEGER_to_BN(3)>,
  L<BN_num_bytes(3)>
  
@@ -95806,7 +103631,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_cmp.pod b/doc/crypto/BN_cmp.pod
-index 6c3331476646..ec005718a1c4 100644
+index 6c33314..ec00571 100644
 --- a/doc/crypto/BN_cmp.pod
 +++ b/doc/crypto/BN_cmp.pod
 @@ -39,4 +39,13 @@ the condition is true, 0 otherwise.
@@ -95824,7 +103649,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_copy.pod b/doc/crypto/BN_copy.pod
-index 0a00884ff051..b044b98a0bbd 100644
+index 0a00884..b044b98 100644
 --- a/doc/crypto/BN_copy.pod
 +++ b/doc/crypto/BN_copy.pod
 @@ -57,4 +57,13 @@ by L<ERR_get_error(3)>.
@@ -95842,10 +103667,10 @@
 +
  =cut
 diff --git a/doc/crypto/BN_generate_prime.pod b/doc/crypto/BN_generate_prime.pod
-index 8ea3d0bf3cff..2757448c6a70 100644
+index 8ea3d0b..2757448 100644
 --- a/doc/crypto/BN_generate_prime.pod
 +++ b/doc/crypto/BN_generate_prime.pod
-@@ -39,7 +39,7 @@ for primality
+@@ -39,7 +39,7 @@ Deprecated:
   BIGNUM *BN_generate_prime(BIGNUM *ret, int num, int safe, BIGNUM *add,
       BIGNUM *rem, void (*callback)(int, int, void *), void *cb_arg);
  
@@ -95869,7 +103694,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_mod_inverse.pod b/doc/crypto/BN_mod_inverse.pod
-index e54bccf5fe65..b4792add8273 100644
+index e54bccf..b4792ad 100644
 --- a/doc/crypto/BN_mod_inverse.pod
 +++ b/doc/crypto/BN_mod_inverse.pod
 @@ -29,4 +29,13 @@ NULL on error. The error codes can be obtained by L<ERR_get_error(3)>.
@@ -95887,11 +103712,47 @@
 +
  =cut
 diff --git a/doc/crypto/BN_mod_mul_montgomery.pod b/doc/crypto/BN_mod_mul_montgomery.pod
-index b4a09a26d864..152185f6f24b 100644
+index b4a09a2..bf1ef34 100644
 --- a/doc/crypto/BN_mod_mul_montgomery.pod
 +++ b/doc/crypto/BN_mod_mul_montgomery.pod
-@@ -98,4 +98,13 @@ L<BN_CTX_new(3)>
+@@ -2,7 +2,7 @@
  
+ =head1 NAME
+ 
+-BN_mod_mul_montgomery, BN_MONT_CTX_new, BN_MONT_CTX_init,
++BN_mod_mul_montgomery, BN_MONT_CTX_new,
+ BN_MONT_CTX_free, BN_MONT_CTX_set, BN_MONT_CTX_copy,
+ BN_from_montgomery, BN_to_montgomery - Montgomery multiplication
+ 
+@@ -69,26 +69,6 @@ The error codes can be obtained by L<ERR_get_error(3)>.
+ The inputs must be reduced modulo B<m>, otherwise the result will be
+ outside the expected range.
+ 
+-=head1 REMOVED FUNCTIONALITY
+-
+- void BN_MONT_CTX_init(BN_MONT_CTX *c);
+-
+-BN_MONT_CTX_init() is no longer available as of OpenSSL 1.1.0. It was used to
+-initialize an existing uninitialized B<BN_MONT_CTX>. Typically this would be
+-done as follows:
+-
+- BN_MONT_CTX ctx;
+- BN_MONT_CTX_init(&ctx);
+-
+-Instead applications should create a BN_MONT_CTX structure using
+-BN_MONT_CTX_new:
+-
+- BN_MONT_CTX *ctx;
+- ctx = BN_MONT_CTX_new();
+- if(!ctx) /* handle error */
+- ...
+- BN_MONT_CTX_free(ctx);
+-
+ =head1 SEE ALSO
+ 
+ L<bn(3)>, L<ERR_get_error(3)>, L<BN_add(3)>,
+@@ -98,4 +78,13 @@ L<BN_CTX_new(3)>
+ 
  BN_MONT_CTX_init() was removed in OpenSSL 1.1.0
  
 +=head1 COPYRIGHT
@@ -95905,13 +103766,66 @@
 +
  =cut
 diff --git a/doc/crypto/BN_mod_mul_reciprocal.pod b/doc/crypto/BN_mod_mul_reciprocal.pod
-index f03feb2d9635..86fb4863859a 100644
+index f03feb2..23832b3 100644
 --- a/doc/crypto/BN_mod_mul_reciprocal.pod
 +++ b/doc/crypto/BN_mod_mul_reciprocal.pod
-@@ -85,4 +85,13 @@ L<BN_CTX_new(3)>
+@@ -2,7 +2,7 @@
  
- BN_RECP_CTX_init was removed in OpenSSL 1.1.0
+ =head1 NAME
  
+-BN_mod_mul_reciprocal,  BN_div_recp, BN_RECP_CTX_new, BN_RECP_CTX_init,
++BN_mod_mul_reciprocal,  BN_div_recp, BN_RECP_CTX_new,
+ BN_RECP_CTX_free, BN_RECP_CTX_set - modular multiplication using
+ reciprocal
+ 
+@@ -30,7 +30,6 @@ using B<recp>=1/B<m>, which is set as described below.  B<ctx> is a
+ previously allocated B<BN_CTX> used for temporary variables.
+ 
+ BN_RECP_CTX_new() allocates and initializes a B<BN_RECP> structure.
+-BN_RECP_CTX_init() initializes an existing uninitialized B<BN_RECP>.
+ 
+ BN_RECP_CTX_free() frees the components of the B<BN_RECP>, and, if it
+ was created by BN_RECP_CTX_new(), also the structure itself.
+@@ -51,31 +50,11 @@ The B<BN_RECP_CTX> structure cannot be shared between threads.
+ BN_RECP_CTX_new() returns the newly allocated B<BN_RECP_CTX>, and NULL
+ on error.
+ 
+-BN_RECP_CTX_init() and BN_RECP_CTX_free() have no return values.
++BN_RECP_CTX_free() has no return value.
+ 
+ For the other functions, 1 is returned for success, 0 on error.
+ The error codes can be obtained by L<ERR_get_error(3)>.
+ 
+-=head1 REMOVED FUNCTIONALITY
+-
+- void BN_RECP_CTX_init(BN_RECP_CTX *recp);
+-
+-BN_RECP_CTX_init() is no longer available as of OpenSSL 1.1.0. It was used to
+-initialize an existing uninitialized B<BN_RECP_CTX>. Typically this would be
+-done as follows:
+-
+- BN_RECP_CTX ctx;
+- BN_RECP_CTX_init(&ctx);
+-
+-Applications should replace use of BN_RECP_CTX_init with BN_RECP_CTX_new
+-instead:
+-
+- BN_RECP_CTX *ctx;
+- ctx = BN_RECP_CTX_new();
+- if(!ctx) /* Handle error */
+- ...
+- BN_RECP_CTX_free(ctx);
+-
+ =head1 SEE ALSO
+ 
+ L<bn(3)>, L<ERR_get_error(3)>, L<BN_add(3)>,
+@@ -83,6 +62,15 @@ L<BN_CTX_new(3)>
+ 
+ =head1 HISTORY
+ 
+-BN_RECP_CTX_init was removed in OpenSSL 1.1.0
++BN_RECP_CTX_init() was removed in OpenSSL 1.1.0
++
 +=head1 COPYRIGHT
 +
 +Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
@@ -95920,10 +103834,10 @@
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
-+
+ 
  =cut
 diff --git a/doc/crypto/BN_new.pod b/doc/crypto/BN_new.pod
-index 22596dcbb367..ab7c4e5ae463 100644
+index 22596dc..ab7c4e5 100644
 --- a/doc/crypto/BN_new.pod
 +++ b/doc/crypto/BN_new.pod
 @@ -45,4 +45,13 @@ L<bn(3)>, L<ERR_get_error(3)>
@@ -95941,7 +103855,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_num_bytes.pod b/doc/crypto/BN_num_bytes.pod
-index 30ee3e54c781..4680cf7a71e4 100644
+index 30ee3e5..4680cf7 100644
 --- a/doc/crypto/BN_num_bytes.pod
 +++ b/doc/crypto/BN_num_bytes.pod
 @@ -49,4 +49,13 @@ more probability).
@@ -95959,7 +103873,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_rand.pod b/doc/crypto/BN_rand.pod
-index c4f98b69cabd..c612c50a8109 100644
+index c4f98b6..c612c50 100644
 --- a/doc/crypto/BN_rand.pod
 +++ b/doc/crypto/BN_rand.pod
 @@ -49,4 +49,13 @@ The error codes can be obtained by L<ERR_get_error(3)>.
@@ -95977,7 +103891,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_set_bit.pod b/doc/crypto/BN_set_bit.pod
-index 13bf231cecce..363227ade360 100644
+index 13bf231..363227a 100644
 --- a/doc/crypto/BN_set_bit.pod
 +++ b/doc/crypto/BN_set_bit.pod
 @@ -57,4 +57,13 @@ can be obtained by L<ERR_get_error(3)>.
@@ -95995,7 +103909,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_swap.pod b/doc/crypto/BN_swap.pod
-index 04582e9fa0f7..fe7cc8482b98 100644
+index 04582e9..fe7cc84 100644
 --- a/doc/crypto/BN_swap.pod
 +++ b/doc/crypto/BN_swap.pod
 @@ -16,4 +16,13 @@ BN_swap() exchanges the values of I<a> and I<b>.
@@ -96013,7 +103927,7 @@
 +
  =cut
 diff --git a/doc/crypto/BN_zero.pod b/doc/crypto/BN_zero.pod
-index 5334aaa41a00..17e63cf7a954 100644
+index 5334aaa..17e63cf 100644
 --- a/doc/crypto/BN_zero.pod
 +++ b/doc/crypto/BN_zero.pod
 @@ -55,4 +55,13 @@ unsigned long but this value is also returned on error.
@@ -96032,16 +103946,18 @@
  =cut
 diff --git a/doc/crypto/BUF_MEM_new.pod b/doc/crypto/BUF_MEM_new.pod
 new file mode 100644
-index 000000000000..16fe3daa844c
+index 0000000..1a97577
 --- /dev/null
 +++ b/doc/crypto/BUF_MEM_new.pod
-@@ -0,0 +1,68 @@
+@@ -0,0 +1,80 @@
 +=pod
 +
 +=head1 NAME
 +
-+BUF_MEM_new, BUF_MEM_new_ex, BUF_MEM_free, BUF_MEM_grow - simple
-+character array structure
++BUF_MEM_FLAG_SECURE,
++BUF_MEM_new, BUF_MEM_new_ex, BUF_MEM_free, BUF_MEM_grow
++BUF_MEM_grow_clean, BUF_reverse
++- simple character array structure
 +
 +standard C library equivalents
 +
@@ -96055,10 +103971,13 @@
 +
 + BUF_MEM *BUF_MEM_new_ex(unsigned long flags);
 +
-+ void   BUF_MEM_free(BUF_MEM *a);
++ void BUF_MEM_free(BUF_MEM *a);
 +
-+ int    BUF_MEM_grow(BUF_MEM *str, int len);
++ int BUF_MEM_grow(BUF_MEM *str, int len);
++ size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len);
 +
++ void BUF_reverse(unsigned char *out, const unsigned char *in, size_t size);
++
 +=head1 DESCRIPTION
 +
 +The buffer library handles simple character arrays. Buffers are used for
@@ -96077,13 +103996,20 @@
 +B<len>. Any data already in the buffer is preserved if it increases in
 +size.
 +
++BUF_MEM_grow_clean() is similar to BUF_MEM_grow() but it sets any free'd
++or additionally-allocated memory to zero.
++
++BUF_reverse() reverses B<size> bytes at B<in> into B<out>.  If B<out>
++is NULL, the array is reversed in-place.
++
 +=head1 RETURN VALUES
 +
 +BUF_MEM_new() returns the buffer or NULL on error.
 +
 +BUF_MEM_free() has no return value.
 +
-+BUF_MEM_grow() returns zero on error or the new size (i.e. B<len>).
++BUF_MEM_grow() and BUF_MEM_grow_clean() return
++zero on error or the new size (i.e., B<len>).
 +
 +=head1 SEE ALSO
 +
@@ -96105,7 +104031,7 @@
 +
 +=cut
 diff --git a/doc/crypto/CMS_add0_cert.pod b/doc/crypto/CMS_add0_cert.pod
-index dc2cf46837ef..5b0cc2a25ca1 100644
+index dc2cf46..5b0cc2a 100644
 --- a/doc/crypto/CMS_add0_cert.pod
 +++ b/doc/crypto/CMS_add0_cert.pod
 @@ -20,7 +20,7 @@ CMS_add0_cert, CMS_add1_cert, CMS_get1_certs, CMS_add0_crl, CMS_add1_crl, CMS_ge
@@ -96141,7 +104067,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_add1_recipient_cert.pod b/doc/crypto/CMS_add1_recipient_cert.pod
-index 4efe086b9e33..0dae5cf5fa9f 100644
+index 4efe086..0dae5cf 100644
 --- a/doc/crypto/CMS_add1_recipient_cert.pod
 +++ b/doc/crypto/CMS_add1_recipient_cert.pod
 @@ -2,7 +2,7 @@
@@ -96168,7 +104094,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_add1_signer.pod b/doc/crypto/CMS_add1_signer.pod
-index 0f43ea7230a2..f4738e0637ca 100644
+index 0f43ea7..f4738e0 100644
 --- a/doc/crypto/CMS_add1_signer.pod
 +++ b/doc/crypto/CMS_add1_signer.pod
 @@ -2,7 +2,7 @@
@@ -96213,7 +104139,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_compress.pod b/doc/crypto/CMS_compress.pod
-index e2ead0e51bbd..e40510831fce 100644
+index e2ead0e..e405108 100644
 --- a/doc/crypto/CMS_compress.pod
 +++ b/doc/crypto/CMS_compress.pod
 @@ -69,4 +69,13 @@ L<ERR_get_error(3)>, L<CMS_uncompress(3)>
@@ -96231,7 +104157,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_decrypt.pod b/doc/crypto/CMS_decrypt.pod
-index 4b1e97e8fdba..b3b196c39062 100644
+index 4b1e97e..b3b196c 100644
 --- a/doc/crypto/CMS_decrypt.pod
 +++ b/doc/crypto/CMS_decrypt.pod
 @@ -2,7 +2,7 @@
@@ -96258,7 +104184,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_encrypt.pod b/doc/crypto/CMS_encrypt.pod
-index b58b0fcc4ca2..0ed42628c3cf 100644
+index b58b0fc..0ed4262 100644
 --- a/doc/crypto/CMS_encrypt.pod
 +++ b/doc/crypto/CMS_encrypt.pod
 @@ -2,7 +2,7 @@
@@ -96294,7 +104220,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_final.pod b/doc/crypto/CMS_final.pod
-index c0f4ef9df21e..264fe7bc3b1a 100644
+index c0f4ef9..264fe7b 100644
 --- a/doc/crypto/CMS_final.pod
 +++ b/doc/crypto/CMS_final.pod
 @@ -2,7 +2,7 @@
@@ -96330,10 +104256,24 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_get0_RecipientInfos.pod b/doc/crypto/CMS_get0_RecipientInfos.pod
-index 93bebb7fdab2..9f0b4ebe3a81 100644
+index 93bebb7..6c33c22 100644
 --- a/doc/crypto/CMS_get0_RecipientInfos.pod
 +++ b/doc/crypto/CMS_get0_RecipientInfos.pod
-@@ -34,7 +34,7 @@ CMS_RECIPINFO_KEK, CMS_RECIPINFO_PASS, or CMS_RECIPINFO_OTHER.
+@@ -2,7 +2,12 @@
+ 
+ =head1 NAME
+ 
+-CMS_get0_RecipientInfos, CMS_RecipientInfo_type, CMS_RecipientInfo_ktri_get0_signer_id,CMS_RecipientInfo_ktri_cert_cmp, CMS_RecipientInfo_set0_pkey, CMS_RecipientInfo_kekri_get0_id, CMS_RecipientInfo_kekri_id_cmp, CMS_RecipientInfo_set0_key, CMS_RecipientInfo_decrypt, CMS_RecipientInfo_encrypt - CMS envelopedData RecipientInfo routines
++CMS_get0_RecipientInfos, CMS_RecipientInfo_type,
++CMS_RecipientInfo_ktri_get0_signer_id, CMS_RecipientInfo_ktri_cert_cmp,
++CMS_RecipientInfo_set0_pkey, CMS_RecipientInfo_kekri_get0_id,
++CMS_RecipientInfo_kekri_id_cmp, CMS_RecipientInfo_set0_key,
++CMS_RecipientInfo_decrypt, CMS_RecipientInfo_encrypt
++- CMS envelopedData RecipientInfo routines
+ 
+ =head1 SYNOPSIS
+ 
+@@ -34,7 +39,7 @@ CMS_RECIPINFO_KEK, CMS_RECIPINFO_PASS, or CMS_RECIPINFO_OTHER.
  CMS_RecipientInfo_ktri_get0_signer_id() retrieves the certificate recipient
  identifier associated with a specific CMS_RecipientInfo structure B<ri>, which
  must be of type CMS_RECIPINFO_TRANS. Either the keyidentifier will be set in
@@ -96342,7 +104282,7 @@
  
  CMS_RecipientInfo_ktri_cert_cmp() compares the certificate B<cert> against the
  CMS_RecipientInfo structure B<ri>, which must be of type CMS_RECIPINFO_TRANS.
-@@ -113,4 +113,13 @@ Any error can be obtained from L<ERR_get_error(3)>.
+@@ -113,4 +118,13 @@ Any error can be obtained from L<ERR_get_error(3)>.
  
  L<ERR_get_error(3)>, L<CMS_decrypt(3)>
  
@@ -96357,19 +104297,22 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_get0_SignerInfos.pod b/doc/crypto/CMS_get0_SignerInfos.pod
-index e6365321f17d..303e8754e2aa 100644
+index e636532..c807159 100644
 --- a/doc/crypto/CMS_get0_SignerInfos.pod
 +++ b/doc/crypto/CMS_get0_SignerInfos.pod
-@@ -2,7 +2,7 @@
+@@ -2,7 +2,10 @@
  
  =head1 NAME
  
 -CMS_get0_SignerInfos, CMS_SignerInfo_get0_signer_id, CMS_SignerInfo_get0_signature, CMS_SignerInfo_cert_cmp, CMS_set1_signer_cert - CMS signedData signer functions.
-+CMS_get0_SignerInfos, CMS_SignerInfo_get0_signer_id, CMS_SignerInfo_get0_signature, CMS_SignerInfo_cert_cmp, CMS_set1_signer_cert - CMS signedData signer functions
++CMS_SignerInfo_set1_signer_cert,
++CMS_get0_SignerInfos, CMS_SignerInfo_get0_signer_id,
++CMS_SignerInfo_get0_signature, CMS_SignerInfo_cert_cmp,
++- CMS signedData signer functions
  
  =head1 SYNOPSIS
  
-@@ -25,7 +25,7 @@ associated with a specific CMS_SignerInfo structure B<si>. Either the
+@@ -25,7 +28,7 @@ associated with a specific CMS_SignerInfo structure B<si>. Either the
  keyidentifier will be set in B<keyid> or B<both> issuer name and serial number
  in B<issuer> and B<sno>.
  
@@ -96378,7 +104321,7 @@
  B<si> in a pointer to an ASN1_OCTET_STRING structure. This pointer returned
  corresponds to the internal signature value if B<si> so it may be read or
  modified.
-@@ -74,4 +74,13 @@ Any error can be obtained from L<ERR_get_error(3)>
+@@ -74,4 +77,13 @@ Any error can be obtained from L<ERR_get_error(3)>
  
  L<ERR_get_error(3)>, L<CMS_verify(3)>
  
@@ -96393,10 +104336,10 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_get0_type.pod b/doc/crypto/CMS_get0_type.pod
-index 80fc303dead6..06b06551be0b 100644
+index 80fc303..cad8d3f 100644
 --- a/doc/crypto/CMS_get0_type.pod
 +++ b/doc/crypto/CMS_get0_type.pod
-@@ -2,7 +2,7 @@
+@@ -2,13 +2,13 @@
  
  =head1 NAME
  
@@ -96405,6 +104348,13 @@
  
  =head1 SYNOPSIS
  
+  #include <openssl/cms.h>
+ 
+- const ASN1_OBJECT *CMS_get0_type(CMS_ContentInfo *cms);
++ const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms);
+  int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid);
+  const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms);
+  ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms);
 @@ -69,4 +69,13 @@ error can be obtained from ERR_get_error(3).
  
  L<ERR_get_error(3)>
@@ -96420,7 +104370,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_get1_ReceiptRequest.pod b/doc/crypto/CMS_get1_ReceiptRequest.pod
-index 81206eb6d75b..79f5f4232dd1 100644
+index 81206eb..79f5f42 100644
 --- a/doc/crypto/CMS_get1_ReceiptRequest.pod
 +++ b/doc/crypto/CMS_get1_ReceiptRequest.pod
 @@ -2,7 +2,7 @@
@@ -96456,7 +104406,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_sign.pod b/doc/crypto/CMS_sign.pod
-index 39229fd5b15f..396deef7728b 100644
+index 39229fd..396deef 100644
 --- a/doc/crypto/CMS_sign.pod
 +++ b/doc/crypto/CMS_sign.pod
 @@ -2,7 +2,7 @@
@@ -96492,7 +104442,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_sign_receipt.pod b/doc/crypto/CMS_sign_receipt.pod
-index 99a0b14c2f45..8ea6df1fbca3 100644
+index 99a0b14..8ea6df1 100644
 --- a/doc/crypto/CMS_sign_receipt.pod
 +++ b/doc/crypto/CMS_sign_receipt.pod
 @@ -2,7 +2,7 @@
@@ -96519,7 +104469,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_uncompress.pod b/doc/crypto/CMS_uncompress.pod
-index 44512a485350..80f9c0d168bf 100644
+index 44512a4..80f9c0d 100644
 --- a/doc/crypto/CMS_uncompress.pod
 +++ b/doc/crypto/CMS_uncompress.pod
 @@ -2,7 +2,7 @@
@@ -96546,7 +104496,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_verify.pod b/doc/crypto/CMS_verify.pod
-index d4baffe33b7f..c2ff57bcf20a 100644
+index d4baffe..c2ff57b 100644
 --- a/doc/crypto/CMS_verify.pod
 +++ b/doc/crypto/CMS_verify.pod
 @@ -67,7 +67,7 @@ returned.
@@ -96590,7 +104540,7 @@
 +
  =cut
 diff --git a/doc/crypto/CMS_verify_receipt.pod b/doc/crypto/CMS_verify_receipt.pod
-index 15ec54c2d2a7..193241c620d2 100644
+index 15ec54c..193241c 100644
 --- a/doc/crypto/CMS_verify_receipt.pod
 +++ b/doc/crypto/CMS_verify_receipt.pod
 @@ -2,7 +2,7 @@
@@ -96626,7 +104576,7 @@
 +
  =cut
 diff --git a/doc/crypto/CONF_modules_free.pod b/doc/crypto/CONF_modules_free.pod
-index 4a8580c40b26..ac59f3736aef 100644
+index 4a8580c..ac59f37 100644
 --- a/doc/crypto/CONF_modules_free.pod
 +++ b/doc/crypto/CONF_modules_free.pod
 @@ -2,8 +2,8 @@
@@ -96655,7 +104605,7 @@
 +
  =cut
 diff --git a/doc/crypto/CONF_modules_load_file.pod b/doc/crypto/CONF_modules_load_file.pod
-index 84f7184c7a5b..9e4071f2b31e 100644
+index 84f7184..9e4071f 100644
 --- a/doc/crypto/CONF_modules_load_file.pod
 +++ b/doc/crypto/CONF_modules_load_file.pod
 @@ -2,16 +2,16 @@
@@ -96694,7 +104644,7 @@
  =cut
 diff --git a/doc/crypto/CRYPTO_THREAD_run_once.pod b/doc/crypto/CRYPTO_THREAD_run_once.pod
 new file mode 100644
-index 000000000000..37671b90ebe5
+index 0000000..37671b9
 --- /dev/null
 +++ b/doc/crypto/CRYPTO_THREAD_run_once.pod
 @@ -0,0 +1,150 @@
@@ -96849,11 +104799,22 @@
 +
 +=cut
 diff --git a/doc/crypto/CRYPTO_get_ex_new_index.pod b/doc/crypto/CRYPTO_get_ex_new_index.pod
-index e87d1a3dedf3..f0e19b1eb195 100644
+index e87d1a3..17110f7 100644
 --- a/doc/crypto/CRYPTO_get_ex_new_index.pod
 +++ b/doc/crypto/CRYPTO_get_ex_new_index.pod
-@@ -12,9 +12,9 @@ CRYPTO_get_ex_data, CRYPTO_free_ex_data
+@@ -2,8 +2,9 @@
  
+ =head1 NAME
+ 
++CRYPTO_EX_new, CRYPTO_EX_free, CRYPTO_EX_dup,
+ CRYPTO_free_ex_index, CRYPTO_get_ex_new_index, CRYPTO_set_ex_data,
+-CRYPTO_get_ex_data, CRYPTO_free_ex_data
++CRYPTO_get_ex_data, CRYPTO_free_ex_data, CRYPTO_new_ex_data
+ - functions supporting application-specific data
+ 
+ =head1 SYNOPSIS
+@@ -12,9 +13,9 @@ CRYPTO_get_ex_data, CRYPTO_free_ex_data
+ 
   int CRYPTO_get_ex_new_index(int class_index,
                  long argl, void *argp,
 -		CRYPTO_EX_new *new_func,
@@ -96865,8 +104826,28 @@
  
   typedef int CRYPTO_EX_new(void *parent, void *ptr, CRYPTO_EX_DATA *ad,
                             int idx, long argl, void *argp);
-@@ -142,4 +142,13 @@ note that NULL may be a valid value.
+@@ -23,6 +24,8 @@ CRYPTO_get_ex_data, CRYPTO_free_ex_data
+  typedef int CRYPTO_EX_dup(CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from,
+                            void *from_d, int idx, long argl, void *argp);
  
++ int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad)
++
+  int CRYPTO_set_ex_data(CRYPTO_EX_DATA *r, int idx, void *arg);
+ 
+  void *CRYPTO_get_ex_data(CRYPTO_EX_DATA *r, int idx);
+@@ -59,6 +62,10 @@ The API described here is used by OpenSSL to manipulate exdata for specific
+ structures.  Since the application data can be anything at all it is passed
+ and retrieved as a B<void *> type.
+ 
++The B<CRYPTO_EX_DATA> type is opaque.  To initialize the exdata part of
++a structure, call CRYPTO_new_ex_data(). This is only necessary for
++B<CRYPTO_EX_INDEX_APP> objects.
++
+ Exdata types are identified by an B<index>, an integer guaranteed to be
+ unique within structures for the lifetime of the program.  Applications
+ using exdata typically call B<CRYPTO_get_ex_new_index> at startup, and
+@@ -142,4 +149,13 @@ note that NULL may be a valid value.
+ 
  dup_func() should return 0 for failure and 1 for success.
  
 +=head1 COPYRIGHT
@@ -96881,15 +104862,21 @@
  =cut
 diff --git a/doc/crypto/DEFINE_STACK_OF.pod b/doc/crypto/DEFINE_STACK_OF.pod
 new file mode 100644
-index 000000000000..d32fb2177a66
+index 0000000..996bfcd
 --- /dev/null
 +++ b/doc/crypto/DEFINE_STACK_OF.pod
-@@ -0,0 +1,214 @@
+@@ -0,0 +1,222 @@
 +=pod
 +
 +=head1 NAME
 +
 +DEFINE_STACK_OF, DEFINE_STACK_OF_CONST, DEFINE_SPECIAL_STACK_OF,
++OPENSSL_sk_deep_copy, OPENSSL_sk_delete, OPENSSL_sk_delete_ptr,
++OPENSSL_sk_dup, OPENSSL_sk_find, OPENSSL_sk_find_ex, OPENSSL_sk_free,
++OPENSSL_sk_insert, OPENSSL_sk_is_sorted, OPENSSL_sk_new, OPENSSL_sk_new_null,
++OPENSSL_sk_num, OPENSSL_sk_pop, OPENSSL_sk_pop_free, OPENSSL_sk_push,
++OPENSSL_sk_set, OPENSSL_sk_set_cmp_func, OPENSSL_sk_shift, OPENSSL_sk_sort,
++OPENSSL_sk_unshift, OPENSSL_sk_value, OPENSSL_sk_zero,
 +sk_TYPE_num, sk_TYPE_value, sk_TYPE_new, sk_TYPE_new_null, sk_TYPE_free,
 +sk_TYPE_zero, sk_TYPE_delete, sk_TYPE_delete_ptr, sk_TYPE_push,
 +sk_TYPE_unshift, sk_TYPE_pop, sk_TYPE_shift, sk_TYPE_pop_free,
@@ -96940,7 +104927,9 @@
 +=head1 DESCRIPTION
 +
 +Applications can create and use their own stacks by placing any of the macros
-+described below in a header file.  In the description below, I<TYPE> is used
++described below in a header file. These macros define typesafe inline
++functions that wrap around the utility B<OPENSSL_sk_> API.
++In the description here, I<TYPE> is used
 +as a placeholder for any of the OpenSSL datatypes, such as I<X509>.
 +
 +DEFINE_STACK_OF(TYPE) creates set of functions for a stack of B<TYPE>. This
@@ -97101,7 +105090,7 @@
 +=cut
 diff --git a/doc/crypto/DES_random_key.pod b/doc/crypto/DES_random_key.pod
 new file mode 100644
-index 000000000000..0131093ba9e9
+index 0000000..0131093
 --- /dev/null
 +++ b/doc/crypto/DES_random_key.pod
 @@ -0,0 +1,310 @@
@@ -97416,7 +105405,7 @@
 +
 +=cut
 diff --git a/doc/crypto/DH_generate_key.pod b/doc/crypto/DH_generate_key.pod
-index b37decc4902e..de0847a94df6 100644
+index b37decc..de0847a 100644
 --- a/doc/crypto/DH_generate_key.pod
 +++ b/doc/crypto/DH_generate_key.pod
 @@ -42,4 +42,13 @@ The error codes can be obtained by L<ERR_get_error(3)>.
@@ -97434,7 +105423,7 @@
 +
  =cut
 diff --git a/doc/crypto/DH_generate_parameters.pod b/doc/crypto/DH_generate_parameters.pod
-index 93d7b9c3b4d1..8970aae444f3 100644
+index 93d7b9c..8970aae 100644
 --- a/doc/crypto/DH_generate_parameters.pod
 +++ b/doc/crypto/DH_generate_parameters.pod
 @@ -2,7 +2,6 @@
@@ -97527,10 +105516,24 @@
 +
  =cut
 diff --git a/doc/crypto/DH_get0_pqg.pod b/doc/crypto/DH_get0_pqg.pod
-index bcbecf37a6f5..6c6b66108691 100644
+index bcbecf3..79647bf 100644
 --- a/doc/crypto/DH_get0_pqg.pod
 +++ b/doc/crypto/DH_get0_pqg.pod
-@@ -47,7 +47,9 @@ be. The values point to the internal representation of the public key and
+@@ -10,9 +10,11 @@ DH_set_length - Routines for getting and setting data in a DH object
+ 
+  #include <openssl/dh.h>
+ 
+- void DH_get0_pqg(const DH *dh, BIGNUM **p, BIGNUM **q, BIGNUM **g);
++ void DH_get0_pqg(const DH *dh,
++                  const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
+  int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
+- void DH_get0_key(const DH *dh, BIGNUM **pub_key, BIGNUM **priv_key);
++ void DH_get0_key(const DH *dh,
++                  const BIGNUM **pub_key, const BIGNUM **priv_key);
+  int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key);
+  void DH_clear_flags(DH *dh, int flags);
+  int DH_test_flags(const DH *dh, int flags);
+@@ -47,7 +49,9 @@ be. The values point to the internal representation of the public key and
  private key values. This memory should not be freed directly.
  
  The public and private key values can be set using DH_set0_key(). The public
@@ -97541,7 +105544,7 @@
  this function transfers the memory management of the key values to the DH
  object, and therefore they should not be freed directly after this function has
  been called.
-@@ -68,6 +70,13 @@ length parameter associated with this DH object. If the length is non-zero then
+@@ -68,6 +72,13 @@ length parameter associated with this DH object. If the length is non-zero then
  it is used, otherwise it is ignored. The B<length> parameter indicates the
  length of the secret exponent (private key) in bits.
  
@@ -97555,7 +105558,7 @@
  =head1 RETURN VALUES
  
  DH_set0_pqg() and DH_set0_key() return 1 on success or 0 on failure.
-@@ -89,4 +98,13 @@ L<DH_set_method(3)>, L<DH_size(3)>, L<DH_meth_new(3)>
+@@ -89,4 +100,13 @@ L<DH_set_method(3)>, L<DH_size(3)>, L<DH_meth_new(3)>
  
  The functions described here were added in OpenSSL version 1.1.0.
  
@@ -97569,8 +105572,88 @@
 +L<https://www.openssl.org/source/license.html>.
 +
  =cut
+diff --git a/doc/crypto/DH_get_1024_160.pod b/doc/crypto/DH_get_1024_160.pod
+new file mode 100644
+index 0000000..4044f10
+--- /dev/null
++++ b/doc/crypto/DH_get_1024_160.pod
+@@ -0,0 +1,74 @@
++=pod
++
++=head1 NAME
++
++DH_get_1024_160,
++DH_get_2048_224,
++DH_get_2048_256,
++BN_get0_nist_prime_192,
++BN_get0_nist_prime_224,
++BN_get0_nist_prime_256,
++BN_get0_nist_prime_384,
++BN_get0_nist_prime_521,
++BN_get_rfc2409_prime_768,
++BN_get_rfc2409_prime_1024,
++BN_get_rfc3526_prime_1536,
++BN_get_rfc3526_prime_2048,
++BN_get_rfc3526_prime_3072,
++BN_get_rfc3526_prime_4096,
++BN_get_rfc3526_prime_6144,
++BN_get_rfc3526_prime_8192
++- Create standardized public primes or DH pairs
++
++=head1 SYNOPSIS
++
++ #include <openssl/dh.h>
++ DH *DH_get_1024_160(void)
++ DH *DH_get_2048_224(void)
++ DH *DH_get_2048_256(void)
++
++ const BIGNUM *BN_get0_nist_prime_192(void)
++ const BIGNUM *BN_get0_nist_prime_224(void)
++ const BIGNUM *BN_get0_nist_prime_256(void)
++ const BIGNUM *BN_get0_nist_prime_384(void)
++ const BIGNUM *BN_get0_nist_prime_521(void)
++
++ BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn)
++ BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn)
++ BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn)
++ BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn)
++ BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn)
++ BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn)
++ BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn)
++ BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn)
++
++=head1 DESCRIPTION
++
++DH_get_1024_160(), DH_get_2048_224(), and DH_get_2048_256() each return
++a DH object for the IETF RFC 5114 value.
++
++BN_get0_nist_prime_192(), BN_get0_nist_prime_224(), BN_get0_nist_prime_256(),
++BN_get0_nist_prime_384(), and BN_get0_nist_prime_521() functions return
++a BIGNUM for the specific NIST prime curve (e.g., P-256).
++
++BN_get_rfc2409_prime_768(), BN_get_rfc2409_prime_1024(),
++BN_get_rfc3526_prime_1536(), BN_get_rfc3526_prime_2048(),
++BN_get_rfc3526_prime_3072(), BN_get_rfc3526_prime_4096(),
++BN_get_rfc3526_prime_6144(), and BN_get_rfc3526_prime_8192() functions
++return a BIGNUM for the specified size from IETF RFC 2409.  If B<bn>
++is not NULL, the BIGNUM will be set into that location as well.
++
++=head1 RETURN VALUES
++
++Defined above.
++
++=head1 COPYRIGHT
++
++Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++
++Licensed under the OpenSSL license (the "License").  You may not use
++this file except in compliance with the License.  You can obtain a copy
++in the file LICENSE in the source distribution or at
++L<https://www.openssl.org/source/license.html>.
++
++=cut
 diff --git a/doc/crypto/DH_meth_new.pod b/doc/crypto/DH_meth_new.pod
-index 73222be7e4d0..bcf559215fb1 100644
+index 73222be..bcf5592 100644
 --- a/doc/crypto/DH_meth_new.pod
 +++ b/doc/crypto/DH_meth_new.pod
 @@ -49,8 +49,7 @@ DH_meth_set_generate_params - Routines to build up DH methods
@@ -97598,7 +105681,7 @@
 +
  =cut
 diff --git a/doc/crypto/DH_new.pod b/doc/crypto/DH_new.pod
-index 450039c72816..959a470ec4ae 100644
+index 450039c..959a470 100644
 --- a/doc/crypto/DH_new.pod
 +++ b/doc/crypto/DH_new.pod
 @@ -34,4 +34,13 @@ L<dh(3)>, L<ERR_get_error(3)>,
@@ -97616,7 +105699,7 @@
 +
  =cut
 diff --git a/doc/crypto/DH_set_method.pod b/doc/crypto/DH_set_method.pod
-index fe26b0148340..cd75a9b5490f 100644
+index fe26b01..cd75a9b 100644
 --- a/doc/crypto/DH_set_method.pod
 +++ b/doc/crypto/DH_set_method.pod
 @@ -8,7 +8,6 @@ DH_set_method, DH_new_method, DH_OpenSSL - select DH method
@@ -97642,7 +105725,7 @@
 +
  =cut
 diff --git a/doc/crypto/DH_size.pod b/doc/crypto/DH_size.pod
-index f961eaa8dbb2..8c1d151fcf5e 100644
+index f961eaa..8c1d151 100644
 --- a/doc/crypto/DH_size.pod
 +++ b/doc/crypto/DH_size.pod
 @@ -35,4 +35,13 @@ L<BN_num_bits(3)>
@@ -97660,10 +105743,52 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_SIG_new.pod b/doc/crypto/DSA_SIG_new.pod
-index 82cff7d4c1d3..d12b08812e30 100644
+index 82cff7d..7f6a5a1 100644
 --- a/doc/crypto/DSA_SIG_new.pod
 +++ b/doc/crypto/DSA_SIG_new.pod
-@@ -36,4 +36,13 @@ DSA_SIG_free() returns no value.
+@@ -2,6 +2,7 @@
+ 
+ =head1 NAME
+ 
++DSA_SIG_get0, DSA_SIG_set0,
+ DSA_SIG_new, DSA_SIG_free - allocate and free DSA signature objects
+ 
+ =head1 SYNOPSIS
+@@ -10,7 +11,8 @@ DSA_SIG_new, DSA_SIG_free - allocate and free DSA signature objects
+ 
+  DSA_SIG *DSA_SIG_new(void);
+  void DSA_SIG_free(DSA_SIG *a);
+- void DSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, const DSA_SIG *sig);
++ void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps);
++ int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s);
+ 
+ =head1 DESCRIPTION
+ 
+@@ -19,8 +21,14 @@ DSA_SIG_new() allocates and initializes a B<DSA_SIG> structure.
+ DSA_SIG_free() frees the B<DSA_SIG> structure and its components. The
+ values are erased before the memory is returned to the system.
+ 
+-DSA_SIG_get0() returns internal pointers the B<r> and B<s> values contained
+-in B<sig>. The values can then be examined or initialised.
++DSA_SIG_get0() returns internal pointers to the B<r> and B<s> values contained
++in B<sig>.
++
++The B<r> and B<s> values can be set by calling DSA_SIG_set0() and passing the
++new values for B<r> and B<s> as parameters to the function. Calling this
++function transfers the memory management of the values to the DSA_SIG object,
++and therefore the values that have been passed in should not be freed directly
++after this function has been called.
+ 
+ =head1 RETURN VALUES
+ 
+@@ -31,9 +39,20 @@ to the newly allocated structure.
+ 
+ DSA_SIG_free() returns no value.
+ 
++DSA_SIG_set0() returns 1 on success or 0 on failure.
++
+ =head1 SEE ALSO
+ 
  L<dsa(3)>, L<ERR_get_error(3)>,
  L<DSA_do_sign(3)>
  
@@ -97678,7 +105803,7 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_do_sign.pod b/doc/crypto/DSA_do_sign.pod
-index 6c7cb3ca93f9..5e56d209441f 100644
+index 6c7cb3c..5e56d20 100644
 --- a/doc/crypto/DSA_do_sign.pod
 +++ b/doc/crypto/DSA_do_sign.pod
 @@ -11,7 +11,7 @@ DSA_do_sign, DSA_do_verify - raw DSA signature operations
@@ -97705,7 +105830,7 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_dup_DH.pod b/doc/crypto/DSA_dup_DH.pod
-index 350e8aa3c190..6967ef3dcf30 100644
+index 350e8aa..6967ef3 100644
 --- a/doc/crypto/DSA_dup_DH.pod
 +++ b/doc/crypto/DSA_dup_DH.pod
 @@ -29,4 +29,13 @@ Be careful to avoid small subgroup attacks when using this.
@@ -97723,7 +105848,7 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_generate_key.pod b/doc/crypto/DSA_generate_key.pod
-index bf396ed58276..4781abed7a9b 100644
+index bf396ed..4781abe 100644
 --- a/doc/crypto/DSA_generate_key.pod
 +++ b/doc/crypto/DSA_generate_key.pod
 @@ -27,4 +27,13 @@ The error codes can be obtained by L<ERR_get_error(3)>.
@@ -97741,7 +105866,7 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_generate_parameters.pod b/doc/crypto/DSA_generate_parameters.pod
-index b639db6d8497..87e4eff055dc 100644
+index b639db6..87e4eff 100644
 --- a/doc/crypto/DSA_generate_parameters.pod
 +++ b/doc/crypto/DSA_generate_parameters.pod
 @@ -9,15 +9,15 @@ DSA_generate_parameters_ex, DSA_generate_parameters - generate DSA parameters
@@ -97778,10 +105903,24 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_get0_pqg.pod b/doc/crypto/DSA_get0_pqg.pod
-index 1c835f012817..95173bca6840 100644
+index 1c835f0..e87e42a 100644
 --- a/doc/crypto/DSA_get0_pqg.pod
 +++ b/doc/crypto/DSA_get0_pqg.pod
-@@ -44,7 +44,9 @@ be. The values point to the internal representation of the public key and
+@@ -10,9 +10,11 @@ setting data in a DSA object
+ 
+  #include <openssl/dsa.h>
+ 
+- void DSA_get0_pqg(const DSA *d, BIGNUM **p, BIGNUM **q, BIGNUM **g);
++ void DSA_get0_pqg(const DSA *d,
++                   const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
+  int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g);
+- void DSA_get0_key(const DSA *d, BIGNUM **pub_key, BIGNUM **priv_key);
++ void DSA_get0_key(const DSA *d,
++                   const BIGNUM **pub_key, const BIGNUM **priv_key);
+  int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key);
+  void DSA_clear_flags(DSA *d, int flags);
+  int DSA_test_flags(const DSA *d, int flags);
+@@ -44,7 +46,9 @@ be. The values point to the internal representation of the public key and
  private key values. This memory should not be freed directly.
  
  The public and private key values can be set using DSA_set0_key(). The public
@@ -97792,7 +105931,7 @@
  this function transfers the memory management of the key values to the DSA
  object, and therefore they should not be freed directly after this function has
  been called.
-@@ -60,6 +62,13 @@ within the DSA object.
+@@ -60,6 +64,13 @@ within the DSA object.
  DSA_get0_engine() returns a handle to the ENGINE that has been set for this DSA
  object, or NULL if no such ENGINE has been set.
  
@@ -97806,7 +105945,7 @@
  =head1 RETURN VALUES
  
  DSA_set0_pqg() and DSA_set0_key() return 1 on success or 0 on failure.
-@@ -79,4 +88,13 @@ L<DSA_sign(3)>, L<DSA_size(3)>, L<DSA_meth_new(3)>
+@@ -79,4 +90,13 @@ L<DSA_sign(3)>, L<DSA_size(3)>, L<DSA_meth_new(3)>
  
  The functions described here were added in OpenSSL version 1.1.0.
  
@@ -97821,7 +105960,7 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_meth_new.pod b/doc/crypto/DSA_meth_new.pod
-index 84584f1ce0b5..68f744abc360 100644
+index 84584f1..68f744a 100644
 --- a/doc/crypto/DSA_meth_new.pod
 +++ b/doc/crypto/DSA_meth_new.pod
 @@ -174,11 +174,20 @@ DSA_meth_set1_name() and all DSA_meth_set_*() functions return 1 on success or
@@ -97847,7 +105986,7 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_new.pod b/doc/crypto/DSA_new.pod
-index 320839c87cf2..a967ab5da511 100644
+index 320839c..a967ab5 100644
 --- a/doc/crypto/DSA_new.pod
 +++ b/doc/crypto/DSA_new.pod
 @@ -36,4 +36,13 @@ L<dsa(3)>, L<ERR_get_error(3)>,
@@ -97865,7 +106004,7 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_set_method.pod b/doc/crypto/DSA_set_method.pod
-index 1d56ccaab289..a64725f7e472 100644
+index 1d56cca..a64725f 100644
 --- a/doc/crypto/DSA_set_method.pod
 +++ b/doc/crypto/DSA_set_method.pod
 @@ -8,7 +8,6 @@ DSA_set_method, DSA_new_method, DSA_OpenSSL - select DSA method
@@ -97900,7 +106039,7 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_sign.pod b/doc/crypto/DSA_sign.pod
-index 1071ccab4c80..ba0f6b863ecf 100644
+index 1071cca..ba0f6b8 100644
 --- a/doc/crypto/DSA_sign.pod
 +++ b/doc/crypto/DSA_sign.pod
 @@ -8,14 +8,14 @@ DSA_sign, DSA_sign_setup, DSA_verify - DSA signatures
@@ -97938,7 +106077,7 @@
 +
  =cut
 diff --git a/doc/crypto/DSA_size.pod b/doc/crypto/DSA_size.pod
-index 4333d6ddf824..7c121469a197 100644
+index 4333d6d..7c12146 100644
 --- a/doc/crypto/DSA_size.pod
 +++ b/doc/crypto/DSA_size.pod
 @@ -26,4 +26,13 @@ The size in bytes.
@@ -97957,14 +106096,15 @@
  =cut
 diff --git a/doc/crypto/ECDSA_SIG_new.pod b/doc/crypto/ECDSA_SIG_new.pod
 new file mode 100644
-index 000000000000..691989074d87
+index 0000000..b6545c9
 --- /dev/null
 +++ b/doc/crypto/ECDSA_SIG_new.pod
-@@ -0,0 +1,197 @@
+@@ -0,0 +1,207 @@
 +=pod
 +
 +=head1 NAME
 +
++ECDSA_SIG_get0, ECDSA_SIG_set0,
 +ECDSA_SIG_new, ECDSA_SIG_free, i2d_ECDSA_SIG, d2i_ECDSA_SIG, ECDSA_size,
 +ECDSA_sign, ECDSA_do_sign, ECDSA_verify, ECDSA_do_verify, ECDSA_sign_setup,
 +ECDSA_sign_ex, ECDSA_do_sign_ex - low level elliptic curve digital signature
@@ -97976,7 +106116,8 @@
 +
 + ECDSA_SIG *ECDSA_SIG_new(void);
 + void ECDSA_SIG_free(ECDSA_SIG *sig);
-+ void ECDSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, const ECDSA_SIG *sig);
++ void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps);
++ int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s);
 + int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp);
 + ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len);
 + int ECDSA_size(const EC_KEY *eckey);
@@ -98014,8 +106155,14 @@
 +ECDSA_SIG_free() frees the B<ECDSA_SIG> structure B<sig>.
 +
 +ECDSA_SIG_get0() returns internal pointers the B<r> and B<s> values contained
-+in B<sig>. The values can then be examined or initialised.
++in B<sig>.
 +
++The B<r> and B<s> values can be set by calling ECDSA_SIG_set0() and passing the
++new values for B<r> and B<s> as parameters to the function. Calling this
++function transfers the memory management of the values to the ECDSA_SIG object,
++and therefore the values that have been passed in should not be freed directly
++after this function has been called.
++
 +i2d_ECDSA_SIG() creates the DER encoding of the ECDSA signature B<sig> and
 +writes the encoded signature to B<*pp> (note: if B<pp> is NULL i2d_ECDSA_SIG()
 +returns the expected length in bytes of the DER encoded signature).
@@ -98069,6 +106216,8 @@
 +
 +=head1 RETURN VALUES
 +
++ECDSA_SIG_set0() returns 1 on success or 0 on failure.
++
 +ECDSA_size() returns the maximum length signature or 0 on error.
 +
 +ECDSA_sign(), ECDSA_sign_ex() and ECDSA_sign_setup() return 1 if successful
@@ -98160,7 +106309,7 @@
 +=cut
 diff --git a/doc/crypto/ECPKParameters_print.pod b/doc/crypto/ECPKParameters_print.pod
 new file mode 100644
-index 000000000000..20b9cc7fe066
+index 0000000..20b9cc7
 --- /dev/null
 +++ b/doc/crypto/ECPKParameters_print.pod
 @@ -0,0 +1,43 @@
@@ -98208,7 +106357,7 @@
 +
 +=cut
 diff --git a/doc/crypto/EC_GFp_simple_method.pod b/doc/crypto/EC_GFp_simple_method.pod
-index 2a21c9393bbf..89c590eb2a1c 100644
+index 2a21c93..89c590e 100644
 --- a/doc/crypto/EC_GFp_simple_method.pod
 +++ b/doc/crypto/EC_GFp_simple_method.pod
 @@ -2,7 +2,7 @@
@@ -98235,15 +106384,25 @@
 +
  =cut
 diff --git a/doc/crypto/EC_GROUP_copy.pod b/doc/crypto/EC_GROUP_copy.pod
-index 3af5bbfdf98b..e10199e7d181 100644
+index 3af5bbf..6b398df 100644
 --- a/doc/crypto/EC_GROUP_copy.pod
 +++ b/doc/crypto/EC_GROUP_copy.pod
-@@ -2,12 +2,11 @@
+@@ -2,12 +2,21 @@
  
  =head1 NAME
  
 -EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator, EC_GROUP_get0_generator, EC_GROUP_get_order, EC_GROUP_get_cofactor, EC_GROUP_set_curve_name, EC_GROUP_get_curve_name, EC_GROUP_set_asn1_flag, EC_GROUP_get_asn1_flag, EC_GROUP_set_point_conversion_form, EC_GROUP_get_point_conversion_form, EC_GROUP_get0_seed, EC_GROUP_get_seed_len, EC_GROUP_set_seed, EC_GROUP_get_degree, EC_GROUP_check, EC_GROUP_check_discriminant, EC_GROUP_cmp, EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis, EC_GROUP_get_pentanomial_basis - Functions for manipulating B<EC_GROUP> objects.
-+EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator, EC_GROUP_get0_generator, EC_GROUP_get_order, EC_GROUP_get_cofactor, EC_GROUP_set_curve_name, EC_GROUP_get_curve_name, EC_GROUP_set_asn1_flag, EC_GROUP_get_asn1_flag, EC_GROUP_set_point_conversion_form, EC_GROUP_get_point_conversion_form, EC_GROUP_get0_seed, EC_GROUP_get_seed_len, EC_GROUP_set_seed, EC_GROUP_get_degree, EC_GROUP_check, EC_GROUP_check_discriminant, EC_GROUP_cmp, EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis, EC_GROUP_get_pentanomial_basis - Functions for manipulating EC_GROUP objects
++EC_GROUP_get0_order, EC_GROUP_order_bits, EC_GROUP_get0_cofactor,
++EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator,
++EC_GROUP_get0_generator, EC_GROUP_get_order, EC_GROUP_get_cofactor,
++EC_GROUP_set_curve_name, EC_GROUP_get_curve_name, EC_GROUP_set_asn1_flag,
++EC_GROUP_get_asn1_flag, EC_GROUP_set_point_conversion_form,
++EC_GROUP_get_point_conversion_form, EC_GROUP_get0_seed,
++EC_GROUP_get_seed_len, EC_GROUP_set_seed, EC_GROUP_get_degree,
++EC_GROUP_check, EC_GROUP_check_discriminant, EC_GROUP_cmp,
++EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis,
++EC_GROUP_get_pentanomial_basis
++- Functions for manipulating EC_GROUP objects
  
  =head1 SYNOPSIS
  
@@ -98252,8 +106411,17 @@
  
   int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src);
   EC_GROUP *EC_GROUP_dup(const EC_GROUP *src);
-@@ -46,8 +45,8 @@ EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator, EC_GROU
+@@ -19,7 +28,7 @@ EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator, EC_GROU
  
+  int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx);
+  const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group);
+- const BIGNUM *EC_GROUP_order_bits(const EC_GROUP *group);
++ int EC_GROUP_order_bits(const EC_GROUP *group);
+  int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx);
+  const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group);
+ 
+@@ -46,8 +55,8 @@ EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator, EC_GROU
+ 
   int EC_GROUP_get_basis_type(const EC_GROUP *);
   int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k);
 - int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, 
@@ -98263,7 +106431,7 @@
  
  =head1 DESCRIPTION
  
-@@ -86,26 +85,25 @@ applications would have to explicitly set the named curve form) in OpenSSL
+@@ -86,26 +95,25 @@ applications would have to explicitly set the named curve form) in OpenSSL
  1.1.0 and later the named curve form is the default.
  
  The point_conversion_form for a curve controls how EC_POINT data is encoded as ASN1 as defined in X9.62 (ECDSA).
@@ -98280,7 +106448,7 @@
 +        /** the point is encoded as z||x, where the octet z specifies
 +         *   which solution of the quadratic equation y is  */
 +        POINT_CONVERSION_COMPRESSED = 2,
-+        /** the point is encoded as z||x||y, where z is the octet 0x02  */
++        /** the point is encoded as z||x||y, where z is the octet 0x04  */
 +        POINT_CONVERSION_UNCOMPRESSED = 4,
 +        /** the point is encoded as z||x||y, where the octet z specifies
           *  which solution of the quadratic equation y is  */
@@ -98299,7 +106467,7 @@
  
  For POINT_CONVERSION_HYBRID the point is encoded as an octet signifying the HYBRID form has been used AND which of the two
  possible solutions for y has been used, followed by the octets for x, followed by the octets for y.
-@@ -186,4 +184,13 @@ L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>,
+@@ -186,4 +194,13 @@ L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>,
  L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
  L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
  
@@ -98314,10 +106482,16 @@
 +
  =cut
 diff --git a/doc/crypto/EC_GROUP_new.pod b/doc/crypto/EC_GROUP_new.pod
-index bbd3dfb54a5a..7cf0f007d7ec 100644
+index bbd3dfb..2512910 100644
 --- a/doc/crypto/EC_GROUP_new.pod
 +++ b/doc/crypto/EC_GROUP_new.pod
-@@ -7,13 +7,12 @@ EC_GROUP_new_from_ecpkparameters,
+@@ -2,18 +2,18 @@
+ 
+ =head1 NAME
+ 
++EC_GROUP_get_ecparameters, EC_GROUP_get_ecpkparameters,
+ EC_GROUP_new, EC_GROUP_new_from_ecparameters,
+ EC_GROUP_new_from_ecpkparameters,
  EC_GROUP_free, EC_GROUP_clear_free, EC_GROUP_new_curve_GFp,
  EC_GROUP_new_curve_GF2m, EC_GROUP_new_by_curve_name, EC_GROUP_set_curve_GFp,
  EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m,
@@ -98333,7 +106507,7 @@
  
   EC_GROUP *EC_GROUP_new(const EC_METHOD *meth);
   EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params)
-@@ -78,10 +77,10 @@ provided. The return value is the total number of curves available (whether that
+@@ -78,10 +78,10 @@ provided. The return value is the total number of curves available (whether that
  not). Passing a NULL B<r>, or setting B<nitems> to 0 will do nothing other than return the total number of curves available.
  The EC_builtin_curve structure is defined as follows:
  
@@ -98348,7 +106522,7 @@
  
  Each EC_builtin_curve item has a unique integer id (B<nid>), and a human readable comment string describing the curve.
  
-@@ -108,4 +107,13 @@ L<crypto(3)>, L<ec(3)>, L<EC_GROUP_copy(3)>,
+@@ -108,4 +108,13 @@ L<crypto(3)>, L<ec(3)>, L<EC_GROUP_copy(3)>,
  L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
  L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
  
@@ -98364,7 +106538,7 @@
  =cut
 diff --git a/doc/crypto/EC_KEY_get_enc_flags.pod b/doc/crypto/EC_KEY_get_enc_flags.pod
 new file mode 100644
-index 000000000000..abc55c148f0c
+index 0000000..abc55c1
 --- /dev/null
 +++ b/doc/crypto/EC_KEY_get_enc_flags.pod
 @@ -0,0 +1,59 @@
@@ -98428,10 +106602,15 @@
 +
 +=cut
 diff --git a/doc/crypto/EC_KEY_new.pod b/doc/crypto/EC_KEY_new.pod
-index 6bfd1804cd1f..548165bc43c2 100644
+index 6bfd180..b6bd432 100644
 --- a/doc/crypto/EC_KEY_new.pod
 +++ b/doc/crypto/EC_KEY_new.pod
-@@ -6,17 +6,16 @@ EC_KEY_new, EC_KEY_get_flags, EC_KEY_set_flags, EC_KEY_clear_flags,
+@@ -2,21 +2,21 @@
+ 
+ =head1 NAME
+ 
++EC_KEY_get_method, EC_KEY_set_method,
+ EC_KEY_new, EC_KEY_get_flags, EC_KEY_set_flags, EC_KEY_clear_flags,
  EC_KEY_new_by_curve_name, EC_KEY_free, EC_KEY_copy, EC_KEY_dup, EC_KEY_up_ref,
  EC_KEY_get0_group, EC_KEY_set_group, EC_KEY_get0_private_key,
  EC_KEY_set_private_key, EC_KEY_get0_public_key, EC_KEY_set_public_key,
@@ -98451,7 +106630,7 @@
  
   EC_KEY *EC_KEY_new(void);
   int EC_KEY_get_flags(const EC_KEY *key);
-@@ -171,4 +170,13 @@ L<EC_POINT_add(3)>,
+@@ -171,4 +171,13 @@ L<EC_POINT_add(3)>,
  L<EC_GFp_simple_method(3)>,
  L<d2i_ECPKParameters(3)>
  
@@ -98466,7 +106645,7 @@
 +
  =cut
 diff --git a/doc/crypto/EC_POINT_add.pod b/doc/crypto/EC_POINT_add.pod
-index eaa7f527869d..c029de42b165 100644
+index eaa7f52..c029de4 100644
 --- a/doc/crypto/EC_POINT_add.pod
 +++ b/doc/crypto/EC_POINT_add.pod
 @@ -2,12 +2,11 @@
@@ -98498,15 +106677,34 @@
 +
  =cut
 diff --git a/doc/crypto/EC_POINT_new.pod b/doc/crypto/EC_POINT_new.pod
-index 8e11f0b1bec0..0bf08d430f33 100644
+index 8e11f0b..206648c 100644
 --- a/doc/crypto/EC_POINT_new.pod
 +++ b/doc/crypto/EC_POINT_new.pod
-@@ -10,12 +10,11 @@ EC_POINT_set_compressed_coordinates_GFp, EC_POINT_set_affine_coordinates_GF2m,
- EC_POINT_get_affine_coordinates_GF2m, EC_POINT_set_compressed_coordinates_GF2m,
- EC_POINT_point2oct, EC_POINT_oct2point, EC_POINT_point2bn, EC_POINT_bn2point,
- EC_POINT_point2hex, EC_POINT_hex2point - Functions for creating, destroying and
+@@ -2,20 +2,22 @@
+ 
+ =head1 NAME
+ 
+-EC_POINT_new, EC_POINT_free, EC_POINT_clear_free, EC_POINT_copy, EC_POINT_dup,
+-EC_POINT_method_of, EC_POINT_set_to_infinity,
+-EC_POINT_set_Jprojective_coordinates, EC_POINT_get_Jprojective_coordinates_GFp,
+-EC_POINT_set_affine_coordinates_GFp, EC_POINT_get_affine_coordinates_GFp,
+-EC_POINT_set_compressed_coordinates_GFp, EC_POINT_set_affine_coordinates_GF2m,
+-EC_POINT_get_affine_coordinates_GF2m, EC_POINT_set_compressed_coordinates_GF2m,
+-EC_POINT_point2oct, EC_POINT_oct2point, EC_POINT_point2bn, EC_POINT_bn2point,
+-EC_POINT_point2hex, EC_POINT_hex2point - Functions for creating, destroying and
 -manipulating B<EC_POINT> objects.
-+manipulating EC_POINT objects
++EC_POINT_set_Jprojective_coordinates_GFp, EC_POINT_point2buf,
++EC_POINT_new, EC_POINT_free, EC_POINT_clear_free,
++EC_POINT_copy, EC_POINT_dup, EC_POINT_method_of,
++EC_POINT_set_to_infinity,
++EC_POINT_get_Jprojective_coordinates_GFp,
++EC_POINT_set_affine_coordinates_GFp,
++EC_POINT_get_affine_coordinates_GFp, EC_POINT_set_compressed_coordinates_GFp,
++EC_POINT_set_affine_coordinates_GF2m, EC_POINT_get_affine_coordinates_GF2m,
++EC_POINT_set_compressed_coordinates_GF2m, EC_POINT_point2oct,
++EC_POINT_oct2point, EC_POINT_point2bn, EC_POINT_bn2point, EC_POINT_point2hex,
++EC_POINT_hex2point
++- Functions for creating, destroying and manipulating EC_POINT objects
  
  =head1 SYNOPSIS
  
@@ -98515,7 +106713,16 @@
  
   EC_POINT *EC_POINT_new(const EC_GROUP *group);
   void EC_POINT_free(EC_POINT *point);
-@@ -182,4 +181,13 @@ L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
+@@ -106,7 +108,7 @@ this co-ordinate system provides more efficient point multiplication
+ operations.  A mapping exists between Jacobian projective co-ordinates and
+ affine co-ordinates. A Jacobian projective co-ordinate (x, y, z) can be written
+ as an affine co-ordinate as (x/(z^2), y/(z^3)). Conversion to Jacobian
+-projective to affine co-ordinates is simple. The co-ordinate (x, y) is mapped
++projective from affine co-ordinates is simple. The co-ordinate (x, y) is mapped
+ to (x, y, 1). To set or get the projective co-ordinates use
+ EC_POINT_set_Jprojective_coordinates_GFp() and
+ EC_POINT_get_Jprojective_coordinates_GFp() respectively.
+@@ -182,4 +184,13 @@ L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
  L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
  L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
  
@@ -98531,15 +106738,53 @@
  =cut
 diff --git a/doc/crypto/ENGINE_add.pod b/doc/crypto/ENGINE_add.pod
 new file mode 100644
-index 000000000000..a934d96ec4fe
+index 0000000..4e082bc
 --- /dev/null
 +++ b/doc/crypto/ENGINE_add.pod
-@@ -0,0 +1,575 @@
+@@ -0,0 +1,611 @@
 +=pod
 +
 +=head1 NAME
 +
-+engine - ENGINE cryptographic module support
++ENGINE_get_DH, ENGINE_get_DSA, ENGINE_get_ECDH, ENGINE_get_ECDSA,
++ENGINE_by_id, ENGINE_get_cipher_engine, ENGINE_get_default_DH,
++ENGINE_get_default_DSA, ENGINE_get_default_ECDH,
++ENGINE_get_default_ECDSA, ENGINE_get_default_RAND,
++ENGINE_get_default_RSA, ENGINE_get_digest_engine, ENGINE_get_first,
++ENGINE_get_last, ENGINE_get_next, ENGINE_get_prev, ENGINE_new,
++ENGINE_get_ciphers, ENGINE_get_ctrl_function, ENGINE_get_digests,
++ENGINE_get_destroy_function, ENGINE_get_finish_function,
++ENGINE_get_init_function, ENGINE_get_load_privkey_function,
++ENGINE_get_load_pubkey_function, ENGINE_load_private_key,
++ENGINE_load_public_key, ENGINE_get_RAND, ENGINE_get_RSA, ENGINE_get_id,
++ENGINE_get_name, ENGINE_get_cmd_defns, EVP_CIPHER ENGINE_get_cipher,
++ENGINE_get_digest, ENGINE_add, ENGINE_cmd_is_executable,
++ENGINE_ctrl, ENGINE_ctrl_cmd, ENGINE_ctrl_cmd_string,
++ENGINE_finish, ENGINE_free, ENGINE_get_flags, ENGINE_init,
++ENGINE_register_DH, ENGINE_register_DSA, ENGINE_register_ECDH,
++ENGINE_register_ECDSA, ENGINE_register_RAND, ENGINE_register_RSA,
++ENGINE_register_all_complete, ENGINE_register_ciphers,
++ENGINE_register_complete, ENGINE_register_digests, ENGINE_remove,
++ENGINE_set_DH, ENGINE_set_DSA, ENGINE_set_ECDH, ENGINE_set_ECDSA,
++ENGINE_set_RAND, ENGINE_set_RSA, ENGINE_set_ciphers,
++ENGINE_set_cmd_defns, ENGINE_set_ctrl_function, ENGINE_set_default,
++ENGINE_set_default_DH, ENGINE_set_default_DSA, ENGINE_set_default_ECDH,
++ENGINE_set_default_ECDSA, ENGINE_set_default_RAND, ENGINE_set_default_RSA,
++ENGINE_set_default_ciphers, ENGINE_set_default_digests,
++ENGINE_set_default_string, ENGINE_set_destroy_function,
++ENGINE_set_digests, ENGINE_set_finish_function, ENGINE_set_flags,
++ENGINE_set_id, ENGINE_set_init_function, ENGINE_set_load_privkey_function,
++ENGINE_set_load_pubkey_function, ENGINE_set_name, ENGINE_up_ref,
++ENGINE_get_table_flags, ENGINE_cleanup,
++ENGINE_load_builtin_engines, ENGINE_register_all_DH,
++ENGINE_register_all_DSA, ENGINE_register_all_ECDH,
++ENGINE_register_all_ECDSA, ENGINE_register_all_RAND,
++ENGINE_register_all_RSA, ENGINE_register_all_ciphers,
++ENGINE_register_all_digests, ENGINE_set_table_flags, ENGINE_unregister_DH,
++ENGINE_unregister_DSA, ENGINE_unregister_ECDH, ENGINE_unregister_ECDSA,
++ENGINE_unregister_RAND, ENGINE_unregister_RSA, ENGINE_unregister_ciphers,
++ENGINE_unregister_digests
++- ENGINE cryptographic module support
 +
 +=head1 SYNOPSIS
 +
@@ -98667,8 +106912,6 @@
 + EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id,
 +     UI_METHOD *ui_method, void *callback_data);
 +
-+ void ENGINE_add_conf_module(void);
-+
 +Deprecated:
 +
 + #if OPENSSL_API_COMPAT < 0x10100000L
@@ -99111,7 +107354,7 @@
 +
 +=cut
 diff --git a/doc/crypto/ERR_GET_LIB.pod b/doc/crypto/ERR_GET_LIB.pod
-index 3f0e36ade4a3..10e250f445da 100644
+index 3f0e36a..10e250f 100644
 --- a/doc/crypto/ERR_GET_LIB.pod
 +++ b/doc/crypto/ERR_GET_LIB.pod
 @@ -48,4 +48,13 @@ L<err(3)>, L<ERR_get_error(3)>
@@ -99129,7 +107372,7 @@
 +
  =cut
 diff --git a/doc/crypto/ERR_clear_error.pod b/doc/crypto/ERR_clear_error.pod
-index e54e34c46db3..892c67fcf977 100644
+index e54e34c..892c67f 100644
 --- a/doc/crypto/ERR_clear_error.pod
 +++ b/doc/crypto/ERR_clear_error.pod
 @@ -22,4 +22,13 @@ ERR_clear_error() has no return value.
@@ -99147,7 +107390,7 @@
 +
  =cut
 diff --git a/doc/crypto/ERR_error_string.pod b/doc/crypto/ERR_error_string.pod
-index 81ca61c9db81..12f4f72be591 100644
+index 81ca61c..12f4f72 100644
 --- a/doc/crypto/ERR_error_string.pod
 +++ b/doc/crypto/ERR_error_string.pod
 @@ -62,4 +62,13 @@ none is registered for the error code.
@@ -99165,7 +107408,7 @@
 +
  =cut
 diff --git a/doc/crypto/ERR_get_error.pod b/doc/crypto/ERR_get_error.pod
-index aa5047e0c11f..a7efc74d6a51 100644
+index aa5047e..a7efc74 100644
 --- a/doc/crypto/ERR_get_error.pod
 +++ b/doc/crypto/ERR_get_error.pod
 @@ -67,4 +67,13 @@ The error code, or 0 if there is no error in the queue.
@@ -99183,10 +107426,10 @@
 +
  =cut
 diff --git a/doc/crypto/ERR_load_crypto_strings.pod b/doc/crypto/ERR_load_crypto_strings.pod
-index 68c006fd3c3d..15f8000c4e5f 100644
+index 68c006f..15f8000 100644
 --- a/doc/crypto/ERR_load_crypto_strings.pod
 +++ b/doc/crypto/ERR_load_crypto_strings.pod
-@@ -21,7 +21,7 @@ load and free error strings
+@@ -21,7 +21,7 @@ Deprecated:
   #if OPENSSL_API_COMPAT < 0x10100000L
   void SSL_load_error_strings(void);
   #endif
@@ -99210,7 +107453,7 @@
 +
  =cut
 diff --git a/doc/crypto/ERR_load_strings.pod b/doc/crypto/ERR_load_strings.pod
-index 0e212a026999..8071d96eff26 100644
+index 0e212a0..8071d96 100644
 --- a/doc/crypto/ERR_load_strings.pod
 +++ b/doc/crypto/ERR_load_strings.pod
 @@ -45,4 +45,13 @@ ERR_get_next_error_library() returns a new library number.
@@ -99228,10 +107471,40 @@
 +
  =cut
 diff --git a/doc/crypto/ERR_print_errors.pod b/doc/crypto/ERR_print_errors.pod
-index aec8a1029abd..4a19a59ec458 100644
+index aec8a10..17229af 100644
 --- a/doc/crypto/ERR_print_errors.pod
 +++ b/doc/crypto/ERR_print_errors.pod
-@@ -41,4 +41,13 @@ ERR_print_errors() and ERR_print_errors_fp() return no values.
+@@ -2,7 +2,8 @@
+ 
+ =head1 NAME
+ 
+-ERR_print_errors, ERR_print_errors_fp - print error messages
++ERR_print_errors, ERR_print_errors_fp, ERR_print_errors_cb
++- print error messages
+ 
+ =head1 SYNOPSIS
+ 
+@@ -10,6 +11,9 @@ ERR_print_errors, ERR_print_errors_fp - print error messages
+ 
+  void ERR_print_errors(BIO *bp);
+  void ERR_print_errors_fp(FILE *fp);
++ void ERR_print_errors_cb(int (*cb)(const char *str, size_t len, void *u),
++                          void *u)
++
+ 
+ =head1 DESCRIPTION
+ 
+@@ -20,6 +24,9 @@ emptying the error queue.
+ ERR_print_errors_fp() is the same, except that the output goes to a
+ B<FILE>.
+ 
++ERR_print_errors_cb() is the same, except that the callback function,
++B<cb>, is called for each error line with the string, length, and userdata
++B<u> as the callback parameters.
+ 
+ The error strings will have the following format:
+ 
+@@ -41,4 +48,13 @@ ERR_print_errors() and ERR_print_errors_fp() return no values.
  L<err(3)>, L<ERR_error_string(3)>,
  L<ERR_get_error(3)>.
  
@@ -99246,10 +107519,24 @@
 +
  =cut
 diff --git a/doc/crypto/ERR_put_error.pod b/doc/crypto/ERR_put_error.pod
-index f0a82f6156da..9ddf534bbec1 100644
+index f0a82f6..1ec3575 100644
 --- a/doc/crypto/ERR_put_error.pod
 +++ b/doc/crypto/ERR_put_error.pod
-@@ -27,6 +27,36 @@ L<ERR_load_strings(3)> can be used to register
+@@ -12,6 +12,7 @@ ERR_put_error, ERR_add_error_data - record an error
+          int line);
+ 
+  void ERR_add_error_data(int num, ...);
++ void ERR_add_error_data(int num, va_list arg);
+ 
+ =head1 DESCRIPTION
+ 
+@@ -22,11 +23,42 @@ This function is usually called by a macro.
+ 
+ ERR_add_error_data() associates the concatenation of its B<num> string
+ arguments with the error code added last.
++ERR_add_error_vdata() is similar except the argument is a B<va_list>.
+ 
+ L<ERR_load_strings(3)> can be used to register
  error strings so that the application can a generate human-readable
  error messages for the error code.
  
@@ -99286,7 +107573,7 @@
  =head1 RETURN VALUES
  
  ERR_put_error() and ERR_add_error_data() return
-@@ -36,4 +66,13 @@ no values.
+@@ -36,4 +68,13 @@ no values.
  
  L<err(3)>, L<ERR_load_strings(3)>
  
@@ -99301,7 +107588,7 @@
 +
  =cut
 diff --git a/doc/crypto/ERR_remove_state.pod b/doc/crypto/ERR_remove_state.pod
-index b011182c47af..f985104cda0f 100644
+index b011182..f985104 100644
 --- a/doc/crypto/ERR_remove_state.pod
 +++ b/doc/crypto/ERR_remove_state.pod
 @@ -2,44 +2,52 @@
@@ -99323,21 +107610,21 @@
   void ERR_remove_state(unsigned long pid);
   #endif
  
+-=head1 DESCRIPTION
 + #if OPENSSL_API_COMPAT < 0x10100000L
 + void ERR_remove_thread_state(void *);
 + #endif
-+
- =head1 DESCRIPTION
  
 -ERR_remove_thread_state() frees the error queue associated with the current
 -thread.
-+The functions described here were used to free the error queue
-+associated with the current or specificed thread.
++=head1 DESCRIPTION
  
 -Since error queue data structures are allocated automatically for new
 -threads, they must be freed when threads are terminated in order to
 -avoid memory leaks.
--
++The functions described here were used to free the error queue
++associated with the current or specificed thread.
+ 
 -ERR_remove_state is deprecated and has been replaced by
 -ERR_remove_thread_state. Any argument to this function is ignored and
 -calling ERR_remove_state is equivalent to B<ERR_remove_thread_state()>.
@@ -99376,7 +107663,7 @@
  
  =cut
 diff --git a/doc/crypto/ERR_set_mark.pod b/doc/crypto/ERR_set_mark.pod
-index d30f1c00774c..9c55f5a7bb20 100644
+index d30f1c0..9c55f5a 100644
 --- a/doc/crypto/ERR_set_mark.pod
 +++ b/doc/crypto/ERR_set_mark.pod
 @@ -31,4 +31,13 @@ implies that the stack became empty, otherwise 1.
@@ -99394,7 +107681,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_BytesToKey.pod b/doc/crypto/EVP_BytesToKey.pod
-index c2470df20276..003afb27e8e7 100644
+index c2470df..003afb2 100644
 --- a/doc/crypto/EVP_BytesToKey.pod
 +++ b/doc/crypto/EVP_BytesToKey.pod
 @@ -44,7 +44,7 @@ defined in PKCS#5v2.1 and provided by PKCS5_PBKDF2_HMAC.
@@ -99422,7 +107709,7 @@
  
  =cut
 diff --git a/doc/crypto/EVP_CIPHER_CTX_get_cipher_data.pod b/doc/crypto/EVP_CIPHER_CTX_get_cipher_data.pod
-index fc1d914ed895..3a57fcdb677a 100644
+index fc1d914..3a57fcd 100644
 --- a/doc/crypto/EVP_CIPHER_CTX_get_cipher_data.pod
 +++ b/doc/crypto/EVP_CIPHER_CTX_get_cipher_data.pod
 @@ -39,4 +39,13 @@ cipher data for the EVP_CIPHER_CTX.
@@ -99440,7 +107727,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_CIPHER_meth_new.pod b/doc/crypto/EVP_CIPHER_meth_new.pod
-index 499133f647dc..f9b1f6e0dd8d 100644
+index 499133f..f9b1f6e 100644
 --- a/doc/crypto/EVP_CIPHER_meth_new.pod
 +++ b/doc/crypto/EVP_CIPHER_meth_new.pod
 @@ -19,7 +19,7 @@ EVP_CIPHER_meth_get_ctrl  - Routines to build up EVP_CIPHER methods
@@ -99466,14 +107753,9 @@
  The available flags are:
  
 -=over 4
-+=over
- 
+-
 -=over 4
-+=item EVP_CIPH_STREAM_CIPHER, EVP_CIPH_ECB_MODE EVP_CIPH_CBC_MODE,
-+EVP_CIPH_CFB_MODE, EVP_CIPH_OFB_MODE, EVP_CIPH_CTR_MODE, EVP_CIPH_GCM_MODE,
-+EVP_CIPH_CCM_MODE, EVP_CIPH_XTS_MODE, EVP_CIPH_WRAP_MODE,
-+EVP_CIPH_OCB_MODE
- 
+-
 -=item The cipher modes:
 -
 -=over 4
@@ -99493,9 +107775,14 @@
 -=item EVP_CIPH_GCM_MODE
 -
 -=item EVP_CIPH_CCM_MODE
--
++=over
+ 
 -=item EVP_CIPH_XTS_MODE
--
++=item EVP_CIPH_STREAM_CIPHER, EVP_CIPH_ECB_MODE EVP_CIPH_CBC_MODE,
++EVP_CIPH_CFB_MODE, EVP_CIPH_OFB_MODE, EVP_CIPH_CTR_MODE, EVP_CIPH_GCM_MODE,
++EVP_CIPH_CCM_MODE, EVP_CIPH_XTS_MODE, EVP_CIPH_WRAP_MODE,
++EVP_CIPH_OCB_MODE
+ 
 -=item EVP_CIPH_WRAP_MODE
 -
 -=item EVP_CIPH_OCB_MODE
@@ -99544,10 +107831,10 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_DigestInit.pod b/doc/crypto/EVP_DigestInit.pod
-index 7ce569540f93..750a51ef5f55 100644
+index 7ce5695..405810e 100644
 --- a/doc/crypto/EVP_DigestInit.pod
 +++ b/doc/crypto/EVP_DigestInit.pod
-@@ -32,10 +32,10 @@ EVP_get_digestbynid, EVP_get_digestbyobj - EVP digest routines
+@@ -32,24 +32,17 @@ EVP_get_digestbynid, EVP_get_digestbyobj - EVP digest routines
  
   int EVP_MD_CTX_copy(EVP_MD_CTX *out,EVP_MD_CTX *in);
  
@@ -99560,7 +107847,21 @@
   int EVP_MD_size(const EVP_MD *md);
   int EVP_MD_block_size(const EVP_MD *md);
  
-@@ -213,15 +213,15 @@ digest name passed on the command line.
+  const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx);
+- int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx,
+-                                              const void *data, size_t count);
+- void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx,
+-                               int (*update) (EVP_MD_CTX *ctx,
+-                                              const void *data, size_t count));
+  int EVP_MD_CTX_size(const EVP_MD *ctx);
+  int EVP_MD_CTX_block_size(const EVP_MD *ctx);
+  int EVP_MD_CTX_type(const EVP_MD *ctx);
+- EVP_PKEY_CTX *EVP_MD_CTX_pkey_ctx(const EVP_MD_CTX *ctx);
+- void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx);
+ 
+  const EVP_MD *EVP_md_null(void);
+  const EVP_MD *EVP_md2(void);
+@@ -213,15 +206,15 @@ digest name passed on the command line.
   int md_len, i;
  
   if(!argv[1]) {
@@ -99580,7 +107881,7 @@
   }
  
   mdctx = EVP_MD_CTX_new();
-@@ -233,7 +233,7 @@ digest name passed on the command line.
+@@ -233,7 +226,7 @@ digest name passed on the command line.
  
   printf("Digest is: ");
   for(i = 0; i < md_len; i++)
@@ -99589,7 +107890,7 @@
   printf("\n");
  
   exit(0);
-@@ -256,4 +256,13 @@ The link between digests and signing algorithms was fixed in OpenSSL 1.0 and
+@@ -256,4 +249,13 @@ The link between digests and signing algorithms was fixed in OpenSSL 1.0 and
  later, so now EVP_sha1() can be used with RSA and DSA. The legacy EVP_dss1()
  was removed in OpenSSL 1.1.0
  
@@ -99604,7 +107905,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_DigestSignInit.pod b/doc/crypto/EVP_DigestSignInit.pod
-index 4b9eb212becb..c97a732b6870 100644
+index 4b9eb21..c97a732 100644
 --- a/doc/crypto/EVP_DigestSignInit.pod
 +++ b/doc/crypto/EVP_DigestSignInit.pod
 @@ -9,7 +9,7 @@ EVP_DigestSignInit, EVP_DigestSignUpdate, EVP_DigestSignFinal - EVP signing func
@@ -99644,7 +107945,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_DigestVerifyInit.pod b/doc/crypto/EVP_DigestVerifyInit.pod
-index cc740b7a7438..15db70ec58fd 100644
+index cc740b7..15db70e 100644
 --- a/doc/crypto/EVP_DigestVerifyInit.pod
 +++ b/doc/crypto/EVP_DigestVerifyInit.pod
 @@ -9,7 +9,7 @@ EVP_DigestVerifyInit, EVP_DigestVerifyUpdate, EVP_DigestVerifyFinal - EVP signat
@@ -99685,10 +107986,10 @@
  =cut
 diff --git a/doc/crypto/EVP_EncodeInit.pod b/doc/crypto/EVP_EncodeInit.pod
 new file mode 100644
-index 000000000000..f65322617d80
+index 0000000..52c97d5
 --- /dev/null
 +++ b/doc/crypto/EVP_EncodeInit.pod
-@@ -0,0 +1,155 @@
+@@ -0,0 +1,158 @@
 +=pod
 +
 +=head1 NAME
@@ -99706,8 +108007,8 @@
 + void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx);
 + int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx);
 + void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
-+ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
-+                       const unsigned char *in, int inl);
++ int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
++                      const unsigned char *in, int inl);
 + void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl);
 + int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
 +
@@ -99757,7 +108058,8 @@
 +Ensure the output buffer contains 65 bytes of storage for each block, plus an
 +additional byte for a NUL terminator. EVP_EncodeUpdate() may be called
 +repeatedly to process large amounts of input data. In the event of an error
-+EVP_EncodeUpdate() will set B<*outl> to 0.
++EVP_EncodeUpdate() will set B<*outl> to 0 and return 0. On success 1 will be
++returned.
 +
 +EVP_EncodeFinal() must be called at the end of an encoding operation. It will
 +process any partial block of data remaining in the B<ctx> object. The output
@@ -99806,7 +108108,7 @@
 +EVP_DecodeBlock() will decode the block of B<n> characters of base 64 data
 +contained in B<f> and store the result in B<t>. Any leading whitespace will be
 +trimmed as will any trailing whitespace, newlines, carriage returns or EOF
-+characters. After such trimming the length of the data in B<f> must be divisbile
++characters. After such trimming the length of the data in B<f> must be divisible
 +by 4. For every 4 input bytes exactly 3 output bytes will be produced. The
 +output will be padded with 0 bits if necessary to ensure that the output is
 +always 3 bytes for every 4 input bytes. This function will return the length of
@@ -99820,6 +108122,8 @@
 +EVP_ENCODE_CTX_num() returns the number of bytes pending encoding or decoding in
 +B<ctx>.
 +
++EVP_EncodeUpdate() returns 0 on error or 1 on success.
++
 +EVP_EncodeBlock() returns the number of bytes encoded excluding the NUL
 +terminator.
 +
@@ -99845,10 +108149,19 @@
 +
 +=cut
 diff --git a/doc/crypto/EVP_EncryptInit.pod b/doc/crypto/EVP_EncryptInit.pod
-index b42b64c1782c..b185ea7587a1 100644
+index b42b64c..7b53302 100644
 --- a/doc/crypto/EVP_EncryptInit.pod
 +++ b/doc/crypto/EVP_EncryptInit.pod
-@@ -40,14 +40,14 @@ EVP_aes_128_ccm, EVP_aes_192_ccm, EVP_aes_256_ccm - EVP cipher routines
+@@ -31,6 +31,8 @@ EVP_aes_256_cbc, EVP_aes_256_ecb, EVP_aes_256_cfb, EVP_aes_256_ofb,
+ EVP_aes_128_gcm, EVP_aes_192_gcm, EVP_aes_256_gcm,
+ EVP_aes_128_ccm, EVP_aes_192_ccm, EVP_aes_256_ccm - EVP cipher routines
+ 
++=for comment generic
++
+ =head1 SYNOPSIS
+ 
+  #include <openssl/evp.h>
+@@ -40,14 +42,14 @@ EVP_aes_128_ccm, EVP_aes_192_ccm, EVP_aes_256_ccm - EVP cipher routines
   void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx);
  
   int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
@@ -99865,7 +108178,7 @@
   int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
           int *outl, unsigned char *in, int inl);
   int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm,
-@@ -83,12 +83,12 @@ EVP_aes_128_ccm, EVP_aes_192_ccm, EVP_aes_256_ccm - EVP cipher routines
+@@ -83,12 +85,12 @@ EVP_aes_128_ccm, EVP_aes_192_ccm, EVP_aes_256_ccm - EVP cipher routines
   #define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a))
   #define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))
  
@@ -99884,8 +108197,27 @@
   int EVP_CIPHER_type(const EVP_CIPHER *ctx);
  
   const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx);
-@@ -384,13 +384,13 @@ bits and 12 rounds.
+@@ -99,9 +101,6 @@ EVP_aes_128_ccm, EVP_aes_192_ccm, EVP_aes_256_ccm - EVP cipher routines
+  void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
+  void EVP_CIPHER_CTX_set_app_data(const EVP_CIPHER_CTX *ctx, void *data);
+  int EVP_CIPHER_CTX_type(const EVP_CIPHER_CTX *ctx);
+- void EVP_CIPHER_CTX_set_flags(const EVP_CIPHER_CTX *ctx, int flags);
+- void EVP_CIPHER_CTX_clear_flags(const EVP_CIPHER_CTX *ctx, int flags);
+- int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags);
+  int EVP_CIPHER_CTX_mode(const EVP_CIPHER_CTX *ctx);
  
+  int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
+@@ -221,7 +220,7 @@ B<EVP_MAX_IV_LENGTH> is the maximum IV length for all ciphers.
+ 
+ EVP_CIPHER_block_size() and EVP_CIPHER_CTX_block_size() return the block
+ size of a cipher when passed an B<EVP_CIPHER> or B<EVP_CIPHER_CTX>
+-structure. The constant B<EVP_MAX_IV_LENGTH> is also the maximum block
++structure. The constant B<EVP_MAX_BLOCK_LENGTH> is also the maximum block
+ length for all ciphers.
+ 
+ EVP_CIPHER_type() and EVP_CIPHER_CTX_type() return the type of the passed
+@@ -384,13 +383,13 @@ bits and 12 rounds.
+ 
  AES Galois Counter Mode (GCM) for 128, 192 and 256 bit keys respectively.
  These ciphers require additional control operations to function correctly: see
 -the L</GCM and OCB modes> section below for details.
@@ -99901,7 +108233,7 @@
  
  =item EVP_aes_128_ccm(), EVP_aes_192_ccm(), EVP_aes_256_ccm()
  
-@@ -526,46 +526,46 @@ for certain common S/MIME ciphers (RC2, DES, triple DES) in CBC mode.
+@@ -526,46 +525,46 @@ for certain common S/MIME ciphers (RC2, DES, triple DES) in CBC mode.
  Encrypt a string using IDEA:
  
   int do_crypt(char *outfile)
@@ -99916,23 +108248,10 @@
 -	char intext[] = "Some Crypto Text";
 -	EVP_CIPHER_CTX ctx;
 -	FILE *out;
-+        {
-+        unsigned char outbuf[1024];
-+        int outlen, tmplen;
-+        /* Bogus key and IV: we'd normally set these from
-+         * another source.
-+         */
-+        unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
-+        unsigned char iv[] = {1,2,3,4,5,6,7,8};
-+        char intext[] = "Some Crypto Text";
-+        EVP_CIPHER_CTX ctx;
-+        FILE *out;
- 
+-
 -	ctx = EVP_CIPHER_CTX_new();
 -	EVP_EncryptInit_ex(ctx, EVP_idea_cbc(), NULL, key, iv);
-+        ctx = EVP_CIPHER_CTX_new();
-+        EVP_EncryptInit_ex(ctx, EVP_idea_cbc(), NULL, key, iv);
- 
+-
 -	if(!EVP_EncryptUpdate(ctx, outbuf, &outlen, intext, strlen(intext)))
 -		{
 -		/* Error */
@@ -99950,6 +108269,21 @@
 -	EVP_CIPHER_CTX_free(ctx);
 -	/* Need binary mode for fopen because encrypted data is
 -	 * binary data. Also cannot use strlen() on it because
++        {
++        unsigned char outbuf[1024];
++        int outlen, tmplen;
++        /* Bogus key and IV: we'd normally set these from
++         * another source.
++         */
++        unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
++        unsigned char iv[] = {1,2,3,4,5,6,7,8};
++        char intext[] = "Some Crypto Text";
++        EVP_CIPHER_CTX ctx;
++        FILE *out;
++
++        ctx = EVP_CIPHER_CTX_new();
++        EVP_EncryptInit_ex(ctx, EVP_idea_cbc(), NULL, key, iv);
++
 +        if(!EVP_EncryptUpdate(ctx, outbuf, &outlen, intext, strlen(intext)))
 +                {
 +                /* Error */
@@ -99985,7 +108319,7 @@
  
  The ciphertext from the above example can be decrypted using the B<openssl>
  utility with the command line (shown on two lines for clarity):
-@@ -577,50 +577,50 @@ General encryption and decryption function example using FILE I/O and AES128
+@@ -577,50 +576,50 @@ General encryption and decryption function example using FILE I/O and AES128
  with a 128-bit key:
  
   int do_crypt(FILE *in, FILE *out, int do_encrypt)
@@ -99999,35 +108333,17 @@
 -	 */
 -	unsigned char key[] = "0123456789abcdeF";
 -	unsigned char iv[] = "1234567887654321";
-+        {
-+        /* Allow enough space in output buffer for additional block */
-+        unsigned char inbuf[1024], outbuf[1024 + EVP_MAX_BLOCK_LENGTH];
-+        int inlen, outlen;
-+        EVP_CIPHER_CTX *ctx;
-+        /* Bogus key and IV: we'd normally set these from
-+         * another source.
-+         */
-+        unsigned char key[] = "0123456789abcdeF";
-+        unsigned char iv[] = "1234567887654321";
- 
+-
 -	/* Don't set key or IV right away; we want to check lengths */
 -	ctx = EVP_CIPHER_CTX_new();
 -	EVP_CipherInit_ex(&ctx, EVP_aes_128_cbc(), NULL, NULL, NULL,
 -		do_encrypt);
 -	OPENSSL_assert(EVP_CIPHER_CTX_key_length(ctx) == 16);
 -	OPENSSL_assert(EVP_CIPHER_CTX_iv_length(ctx) == 16);
-+        /* Don't set key or IV right away; we want to check lengths */
-+        ctx = EVP_CIPHER_CTX_new();
-+        EVP_CipherInit_ex(&ctx, EVP_aes_128_cbc(), NULL, NULL, NULL,
-+                do_encrypt);
-+        OPENSSL_assert(EVP_CIPHER_CTX_key_length(ctx) == 16);
-+        OPENSSL_assert(EVP_CIPHER_CTX_iv_length(ctx) == 16);
- 
+-
 -	/* Now we can set key and IV */
 -	EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, do_encrypt);
-+        /* Now we can set key and IV */
-+        EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, do_encrypt);
- 
+-
 -	for(;;)
 -		{
 -		inlen = fread(inbuf, 1, 1024, in);
@@ -100047,6 +108363,31 @@
 -		return 0;
 -		}
 -	fwrite(outbuf, 1, outlen, out);
+-
+-	EVP_CIPHER_CTX_free(ctx);
+-	return 1;
+-	}
++        {
++        /* Allow enough space in output buffer for additional block */
++        unsigned char inbuf[1024], outbuf[1024 + EVP_MAX_BLOCK_LENGTH];
++        int inlen, outlen;
++        EVP_CIPHER_CTX *ctx;
++        /* Bogus key and IV: we'd normally set these from
++         * another source.
++         */
++        unsigned char key[] = "0123456789abcdeF";
++        unsigned char iv[] = "1234567887654321";
++
++        /* Don't set key or IV right away; we want to check lengths */
++        ctx = EVP_CIPHER_CTX_new();
++        EVP_CipherInit_ex(&ctx, EVP_aes_128_cbc(), NULL, NULL, NULL,
++                do_encrypt);
++        OPENSSL_assert(EVP_CIPHER_CTX_key_length(ctx) == 16);
++        OPENSSL_assert(EVP_CIPHER_CTX_iv_length(ctx) == 16);
++
++        /* Now we can set key and IV */
++        EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, do_encrypt);
++
 +        for(;;)
 +                {
 +                inlen = fread(inbuf, 1, 1024, in);
@@ -100066,17 +108407,14 @@
 +                return 0;
 +                }
 +        fwrite(outbuf, 1, outlen, out);
- 
--	EVP_CIPHER_CTX_free(ctx);
--	return 1;
--	}
++
 +        EVP_CIPHER_CTX_free(ctx);
 +        return 1;
 +        }
  
  
  =head1 SEE ALSO
-@@ -636,4 +636,13 @@ EVP_CIPHER_CTX_reset() appeared and EVP_CIPHER_CTX_cleanup()
+@@ -636,4 +635,13 @@ EVP_CIPHER_CTX_reset() appeared and EVP_CIPHER_CTX_cleanup()
  disappeared.  EVP_CIPHER_CTX_init() remains as an alias for
  EVP_CIPHER_CTX_reset().
  
@@ -100091,10 +108429,48 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_MD_meth_new.pod b/doc/crypto/EVP_MD_meth_new.pod
-index 0bab12700797..c222e37e2fde 100644
+index 0bab127..6aab174 100644
 --- a/doc/crypto/EVP_MD_meth_new.pod
 +++ b/doc/crypto/EVP_MD_meth_new.pod
-@@ -157,4 +157,13 @@ L<EVP_DigestInit(3)>, L<EVP_SignInit(3)>, L<EVP_VerifyInit(3)>
+@@ -2,6 +2,7 @@
+ 
+ =head1 NAME
+ 
++EVP_MD_meth_dup,
+ EVP_MD_meth_new, EVP_MD_meth_free, EVP_MD_meth_set_input_blocksize,
+ EVP_MD_meth_set_result_size, EVP_MD_meth_set_app_datasize,
+ EVP_MD_meth_set_flags, EVP_MD_meth_set_init, EVP_MD_meth_set_update,
+@@ -10,17 +11,16 @@ EVP_MD_meth_set_ctrl, EVP_MD_meth_get_input_blocksize,
+ EVP_MD_meth_get_result_size, EVP_MD_meth_get_app_datasize,
+ EVP_MD_meth_get_flags, EVP_MD_meth_get_init, EVP_MD_meth_get_update,
+ EVP_MD_meth_get_final, EVP_MD_meth_get_copy, EVP_MD_meth_get_cleanup,
+-EVP_MD_meth_get_ctrl, EVP_MD_meth_get_pkey_types,
+-EVP_MD_meth_get_sign, EVP_MD_meth_get_verify - Routines to build up
+-EVP_MD methods
++EVP_MD_meth_get_ctrl, EVP_MD_CTX_md_data
++- Routines to build up EVP_MD methods
+ 
+ =head1 SYNOPSIS
+ 
+  #include <openssl/evp.h>
+ 
+- EVP_MD *EVP_MD_create_method(int md_type, int pkey_type);
++ EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type);
++ void EVP_MD_meth_free(EVP_MD *md);
+  EVP_MD *EVP_MD_meth_dup(const EVP_MD *md);
+- void EVP_MD_destroy_method(EVP_MD *md);
+ 
+  int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize);
+  int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize);
+@@ -34,6 +34,7 @@ EVP_MD methods
+                                                     unsigned char *md));
+  int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to,
+                                                   const EVP_MD_CTX *from));
++ void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx);
+  int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx));
+  int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd,
+                                                   int p1, void *p2));
+@@ -157,4 +158,13 @@ L<EVP_DigestInit(3)>, L<EVP_SignInit(3)>, L<EVP_VerifyInit(3)>
  The B<EVP_MD> structure was openly available in OpenSSL before version
  1.1.  The functions described here were added in OpenSSL version 1.1.
  
@@ -100109,7 +108485,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_OpenInit.pod b/doc/crypto/EVP_OpenInit.pod
-index e207b012e387..293b4eb398c4 100644
+index e207b01..293b4eb 100644
 --- a/doc/crypto/EVP_OpenInit.pod
 +++ b/doc/crypto/EVP_OpenInit.pod
 @@ -9,7 +9,7 @@ EVP_OpenInit, EVP_OpenUpdate, EVP_OpenFinal - EVP envelope decryption
@@ -100146,7 +108522,7 @@
  
  =cut
 diff --git a/doc/crypto/EVP_PKEY_CTX_ctrl.pod b/doc/crypto/EVP_PKEY_CTX_ctrl.pod
-index cc27e54b0ccb..c9b7fdd476af 100644
+index cc27e54..c9b7fdd 100644
 --- a/doc/crypto/EVP_PKEY_CTX_ctrl.pod
 +++ b/doc/crypto/EVP_PKEY_CTX_ctrl.pod
 @@ -16,9 +16,9 @@ EVP_PKEY_CTX_set_ec_param_enc - algorithm specific control operations
@@ -100176,7 +108552,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_CTX_new.pod b/doc/crypto/EVP_PKEY_CTX_new.pod
-index 5fb5d58f0978..eff94cd94364 100644
+index 5fb5d58..eff94cd 100644
 --- a/doc/crypto/EVP_PKEY_CTX_new.pod
 +++ b/doc/crypto/EVP_PKEY_CTX_new.pod
 @@ -2,7 +2,7 @@
@@ -100203,9 +108579,18 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_HKDF.pod b/doc/crypto/EVP_PKEY_HKDF.pod
-index 8a5ef98e7f47..8ce79c354d34 100644
+index 8a5ef98..61e0eec 100644
 --- a/doc/crypto/EVP_PKEY_HKDF.pod
 +++ b/doc/crypto/EVP_PKEY_HKDF.pod
+@@ -2,7 +2,7 @@
+ 
+ =head1 NAME
+ 
+-EVP_PKEY_HKDF, EVP_PKEY_CTX_set_hkdf_md, EVP_PKEY_CTX_set1_hkdf_salt,
++EVP_PKEY_CTX_set_hkdf_md, EVP_PKEY_CTX_set1_hkdf_salt,
+ EVP_PKEY_CTX_set1_hkdf_key, EVP_PKEY_CTX_add1_hkdf_info -
+ HMAC-based Extract-and-Expand key derivation algorithm
+ 
 @@ -116,4 +116,13 @@ L<EVP_PKEY_CTX_new(3)>,
  L<EVP_PKEY_CTX_ctrl_str(3)>,
  L<EVP_PKEY_derive(3)>
@@ -100221,7 +108606,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_TLS1_PRF.pod b/doc/crypto/EVP_PKEY_TLS1_PRF.pod
-index e2264fc34d04..5c8dd9ddaa7a 100644
+index e2264fc..5c8dd9d 100644
 --- a/doc/crypto/EVP_PKEY_TLS1_PRF.pod
 +++ b/doc/crypto/EVP_PKEY_TLS1_PRF.pod
 @@ -96,4 +96,13 @@ L<EVP_PKEY_CTX_new(3)>,
@@ -100239,7 +108624,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_cmp.pod b/doc/crypto/EVP_PKEY_cmp.pod
-index 9e0107fb0db3..7c9e582a81a4 100644
+index 9e0107f..7c9e582 100644
 --- a/doc/crypto/EVP_PKEY_cmp.pod
 +++ b/doc/crypto/EVP_PKEY_cmp.pod
 @@ -21,7 +21,9 @@ parameters of B<pkey> are missing and 0 if they are present or the algorithm
@@ -100271,7 +108656,7 @@
  
  =cut
 diff --git a/doc/crypto/EVP_PKEY_decrypt.pod b/doc/crypto/EVP_PKEY_decrypt.pod
-index e94f3a8a0277..ca732ed0f918 100644
+index e94f3a8..ca732ed 100644
 --- a/doc/crypto/EVP_PKEY_decrypt.pod
 +++ b/doc/crypto/EVP_PKEY_decrypt.pod
 @@ -10,8 +10,8 @@ EVP_PKEY_decrypt_init, EVP_PKEY_decrypt - decrypt using a public key algorithm
@@ -100285,7 +108670,7 @@
  
  =head1 DESCRIPTION
  
-@@ -50,30 +50,30 @@ indicates the operation is not supported by the public key algorithm.
+@@ -50,30 +50,30 @@ Decrypt data using OAEP (for RSA keys):
  
   EVP_PKEY_CTX *ctx;
   unsigned char *out, *in;
@@ -100346,7 +108731,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_derive.pod b/doc/crypto/EVP_PKEY_derive.pod
-index f6f3ac7786d6..f70a0b8d9b88 100644
+index f6f3ac7..f70a0b8 100644
 --- a/doc/crypto/EVP_PKEY_derive.pod
 +++ b/doc/crypto/EVP_PKEY_derive.pod
 @@ -2,7 +2,7 @@
@@ -100358,7 +108743,7 @@
  
  =head1 SYNOPSIS
  
-@@ -57,23 +57,23 @@ indicates the operation is not supported by the public key algorithm.
+@@ -57,23 +57,23 @@ Derive shared secret (for example DH or EC keys):
  
   ctx = EVP_PKEY_CTX_new(pkey);
   if (!ctx)
@@ -100404,7 +108789,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_encrypt.pod b/doc/crypto/EVP_PKEY_encrypt.pod
-index 819d8643cafb..d75f3f22cd93 100644
+index 819d864..d75f3f2 100644
 --- a/doc/crypto/EVP_PKEY_encrypt.pod
 +++ b/doc/crypto/EVP_PKEY_encrypt.pod
 @@ -10,8 +10,8 @@ EVP_PKEY_encrypt_init, EVP_PKEY_encrypt - encrypt using a public key algorithm
@@ -100427,7 +108812,7 @@
  L<d2i_X509(3)> for means to load a public key. You may also simply
  set 'eng = NULL;' to start with the default OpenSSL RSA implementation:
  
-@@ -54,30 +54,30 @@ L<d2i_X509(3)> for means to load a public key. You may also simply
+@@ -54,30 +54,30 @@ set 'eng = NULL;' to start with the default OpenSSL RSA implementation:
   EVP_PKEY_CTX *ctx;
   ENGINE *eng;
   unsigned char *out, *in;
@@ -100488,13 +108873,98 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_get_default_digest.pod b/doc/crypto/EVP_PKEY_get_default_digest.pod
-index 8ac104efef2a..3dce5c59a8f0 100644
+deleted file mode 100644
+index 8ac104e..0000000
 --- a/doc/crypto/EVP_PKEY_get_default_digest.pod
-+++ b/doc/crypto/EVP_PKEY_get_default_digest.pod
-@@ -38,4 +38,13 @@ L<EVP_PKEY_verify_recover(3)>,
- 
- This function was first added to OpenSSL 1.0.0.
- 
++++ /dev/null
+@@ -1,41 +0,0 @@
+-=pod
+-
+-=head1 NAME
+-
+-EVP_PKEY_get_default_digest_nid - get default signature digest
+-
+-=head1 SYNOPSIS
+-
+- #include <openssl/evp.h>
+- int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid);
+-
+-=head1 DESCRIPTION
+-
+-The EVP_PKEY_get_default_digest_nid() function sets B<pnid> to the default
+-message digest NID for the public key signature operations associated with key
+-B<pkey>.
+-
+-=head1 NOTES
+-
+-For all current standard OpenSSL public key algorithms SHA1 is returned.
+-
+-=head1 RETURN VALUES
+-
+-The EVP_PKEY_get_default_digest_nid() function returns 1 if the message digest
+-is advisory (that is other digests can be used) and 2 if it is mandatory (other
+-digests can not be used).  It returns 0 or a negative value for failure. In
+-particular a return value of -2 indicates the operation is not supported by the
+-public key algorithm.
+-
+-=head1 SEE ALSO
+-
+-L<EVP_PKEY_CTX_new(3)>,
+-L<EVP_PKEY_sign(3)>,
+-L<EVP_PKEY_verify(3)>,
+-L<EVP_PKEY_verify_recover(3)>,
+-
+-=head1 HISTORY
+-
+-This function was first added to OpenSSL 1.0.0.
+-
+-=cut
+diff --git a/doc/crypto/EVP_PKEY_get_default_digest_nid.pod b/doc/crypto/EVP_PKEY_get_default_digest_nid.pod
+new file mode 100644
+index 0000000..3dce5c5
+--- /dev/null
++++ b/doc/crypto/EVP_PKEY_get_default_digest_nid.pod
+@@ -0,0 +1,50 @@
++=pod
++
++=head1 NAME
++
++EVP_PKEY_get_default_digest_nid - get default signature digest
++
++=head1 SYNOPSIS
++
++ #include <openssl/evp.h>
++ int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid);
++
++=head1 DESCRIPTION
++
++The EVP_PKEY_get_default_digest_nid() function sets B<pnid> to the default
++message digest NID for the public key signature operations associated with key
++B<pkey>.
++
++=head1 NOTES
++
++For all current standard OpenSSL public key algorithms SHA1 is returned.
++
++=head1 RETURN VALUES
++
++The EVP_PKEY_get_default_digest_nid() function returns 1 if the message digest
++is advisory (that is other digests can be used) and 2 if it is mandatory (other
++digests can not be used).  It returns 0 or a negative value for failure. In
++particular a return value of -2 indicates the operation is not supported by the
++public key algorithm.
++
++=head1 SEE ALSO
++
++L<EVP_PKEY_CTX_new(3)>,
++L<EVP_PKEY_sign(3)>,
++L<EVP_PKEY_verify(3)>,
++L<EVP_PKEY_verify_recover(3)>,
++
++=head1 HISTORY
++
++This function was first added to OpenSSL 1.0.0.
++
 +=head1 COPYRIGHT
 +
 +Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
@@ -100504,12 +108974,24 @@
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
 +
- =cut
++=cut
 diff --git a/doc/crypto/EVP_PKEY_keygen.pod b/doc/crypto/EVP_PKEY_keygen.pod
-index c86e01352353..ec803c9d9f35 100644
+index c86e013..cebd95b 100644
 --- a/doc/crypto/EVP_PKEY_keygen.pod
 +++ b/doc/crypto/EVP_PKEY_keygen.pod
-@@ -28,7 +28,7 @@ EVP_PKEY_keygen_init, EVP_PKEY_keygen, EVP_PKEY_paramgen_init, EVP_PKEY_paramgen
+@@ -2,7 +2,10 @@
+ 
+ =head1 NAME
+ 
+-EVP_PKEY_keygen_init, EVP_PKEY_keygen, EVP_PKEY_paramgen_init, EVP_PKEY_paramgen, EVP_PKEY_CTX_set_cb, EVP_PKEY_CTX_get_cb, EVP_PKEY_CTX_get_keygen_info, EVP_PKEVP_PKEY_CTX_set_app_data, EVP_PKEY_CTX_get_app_data - key and parameter generation functions
++EVP_PKEY_keygen_init, EVP_PKEY_keygen, EVP_PKEY_paramgen_init,
++EVP_PKEY_paramgen, EVP_PKEY_CTX_set_cb, EVP_PKEY_CTX_get_cb,
++EVP_PKEY_CTX_get_keygen_info, EVP_PKEY_CTX_set_app_data,
++EVP_PKEY_CTX_get_app_data - key and parameter generation functions
+ 
+ =head1 SYNOPSIS
+ 
+@@ -28,7 +31,7 @@ EVP_PKEY_keygen_init, EVP_PKEY_keygen, EVP_PKEY_paramgen_init, EVP_PKEY_paramgen
  The EVP_PKEY_keygen_init() function initializes a public key algorithm
  context using key B<pkey> for a key generation operation.
  
@@ -100518,7 +109000,7 @@
  generated key is written to B<ppkey>.
  
  The functions EVP_PKEY_paramgen_init() and EVP_PKEY_paramgen() are similar
-@@ -95,15 +95,15 @@ the public key algorithm.
+@@ -95,15 +98,15 @@ Generate a 2048 bit RSA key:
   EVP_PKEY *pkey = NULL;
   ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL);
   if (!ctx)
@@ -100538,7 +109020,7 @@
  
  Generate a key from a set of parameters:
  
-@@ -115,13 +115,13 @@ the public key algorithm.
+@@ -115,13 +118,13 @@ Generate a key from a set of parameters:
   /* Assumed param is set up already */
   ctx = EVP_PKEY_CTX_new(param);
   if (!ctx)
@@ -100555,7 +109037,7 @@
  
  Example of generation callback for OpenSSL public key implementations:
  
-@@ -130,19 +130,19 @@ the public key algorithm.
+@@ -130,19 +133,19 @@ Example of generation callback for OpenSSL public key implementations:
   EVP_PKEY_CTX_set_app_data(ctx, status_bio);
  
   static int genpkey_cb(EVP_PKEY_CTX *ctx)
@@ -100588,7 +109070,7 @@
  
  =head1 SEE ALSO
  
-@@ -152,10 +152,19 @@ L<EVP_PKEY_decrypt(3)>,
+@@ -152,10 +155,19 @@ L<EVP_PKEY_decrypt(3)>,
  L<EVP_PKEY_sign(3)>,
  L<EVP_PKEY_verify(3)>,
  L<EVP_PKEY_verify_recover(3)>,
@@ -100610,7 +109092,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_new.pod b/doc/crypto/EVP_PKEY_new.pod
-index 05ac08795e2c..956d6990028e 100644
+index 05ac087..956d699 100644
 --- a/doc/crypto/EVP_PKEY_new.pod
 +++ b/doc/crypto/EVP_PKEY_new.pod
 @@ -2,14 +2,14 @@
@@ -100654,7 +109136,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_print_private.pod b/doc/crypto/EVP_PKEY_print_private.pod
-index 8664c4926f5d..9f1d324f81be 100644
+index 8664c49..9f1d324 100644
 --- a/doc/crypto/EVP_PKEY_print_private.pod
 +++ b/doc/crypto/EVP_PKEY_print_private.pod
 @@ -2,18 +2,18 @@
@@ -100711,20 +109193,47 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_set1_RSA.pod b/doc/crypto/EVP_PKEY_set1_RSA.pod
-index c7fd8e94b96d..c6cdcf94dbff 100644
+index c7fd8e9..1498df7 100644
 --- a/doc/crypto/EVP_PKEY_set1_RSA.pod
 +++ b/doc/crypto/EVP_PKEY_set1_RSA.pod
-@@ -6,7 +6,7 @@ EVP_PKEY_set1_RSA, EVP_PKEY_set1_DSA, EVP_PKEY_set1_DH, EVP_PKEY_set1_EC_KEY,
+@@ -6,7 +6,9 @@ EVP_PKEY_set1_RSA, EVP_PKEY_set1_DSA, EVP_PKEY_set1_DH, EVP_PKEY_set1_EC_KEY,
  EVP_PKEY_get1_RSA, EVP_PKEY_get1_DSA, EVP_PKEY_get1_DH, EVP_PKEY_get1_EC_KEY,
  EVP_PKEY_get0_RSA, EVP_PKEY_get0_DSA, EVP_PKEY_get0_DH, EVP_PKEY_get0_EC_KEY,
  EVP_PKEY_assign_RSA, EVP_PKEY_assign_DSA, EVP_PKEY_assign_DH, EVP_PKEY_assign_EC_KEY,
 -EVP_PKEY_type, EVP_PKEY_id, EVP_PKEY_base_id - EVP_PKEY assignment functions.
-+EVP_PKEY_type, EVP_PKEY_id, EVP_PKEY_base_id - EVP_PKEY assignment functions
++EVP_PKEY_get0_hmac,
++EVP_PKEY_type, EVP_PKEY_id, EVP_PKEY_base_id
++- EVP_PKEY assignment functions
  
  =head1 SYNOPSIS
  
-@@ -105,4 +105,13 @@ type or B<NID_undef> (equivalently B<EVP_PKEY_NONE>) on error.
+@@ -22,6 +24,7 @@ EVP_PKEY_type, EVP_PKEY_id, EVP_PKEY_base_id - EVP_PKEY assignment functions.
+  DH *EVP_PKEY_get1_DH(EVP_PKEY *pkey);
+  EC_KEY *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
  
++ const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len);
+  RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey);
+  DSA *EVP_PKEY_get0_DSA(EVP_PKEY *pkey);
+  DH *EVP_PKEY_get0_DH(EVP_PKEY *pkey);
+@@ -45,11 +48,11 @@ EVP_PKEY_get1_RSA(), EVP_PKEY_get1_DSA(), EVP_PKEY_get1_DH() and
+ EVP_PKEY_get1_EC_KEY() return the referenced key in B<pkey> or
+ B<NULL> if the key is not of the correct type.
+ 
+-EVP_PKEY_get0_RSA(), EVP_PKEY_get0_DSA(), EVP_PKEY_get0_DH() and
+-EVP_PKEY_get0_EC_KEY() also return the referenced key in B<pkey> or
+-B<NULL> if the key is not of the correct type but the reference
+-count of the returned key is B<not> incremented and so must not
+-be freed up after use.
++EVP_PKEY_get0_hmac(), EVP_PKEY_get0_RSA(), EVP_PKEY_get0_DSA(),
++EVP_PKEY_get0_DH() and EVP_PKEY_get0_EC_KEY() also return the
++referenced key in B<pkey> or B<NULL> if the key is not of the
++correct type but the reference count of the returned key is
++B<not> incremented and so must not be freed up after use.
+ 
+ EVP_PKEY_assign_RSA(), EVP_PKEY_assign_DSA(), EVP_PKEY_assign_DH()
+ and EVP_PKEY_assign_EC_KEY() also set the referenced key to B<key>
+@@ -105,4 +108,13 @@ type or B<NID_undef> (equivalently B<EVP_PKEY_NONE>) on error.
+ 
  L<EVP_PKEY_new(3)>
  
 +=head1 COPYRIGHT
@@ -100738,7 +109247,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_sign.pod b/doc/crypto/EVP_PKEY_sign.pod
-index f189206676d1..9b3c8d4593fe 100644
+index f189206..9b3c8d4 100644
 --- a/doc/crypto/EVP_PKEY_sign.pod
 +++ b/doc/crypto/EVP_PKEY_sign.pod
 @@ -10,8 +10,8 @@ EVP_PKEY_sign_init, EVP_PKEY_sign - sign using a public key algorithm
@@ -100752,7 +109261,7 @@
  
  =head1 DESCRIPTION
  
-@@ -66,25 +66,25 @@ indicates the operation is not supported by the public key algorithm.
+@@ -66,25 +66,25 @@ Sign data using RSA with PKCS#1 padding and SHA256 digest:
    */
   ctx = EVP_PKEY_CTX_new(signing_key, NULL /* no engine */);
   if (!ctx)
@@ -100808,7 +109317,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_verify.pod b/doc/crypto/EVP_PKEY_verify.pod
-index 4952b7f4165e..e84f8804197c 100644
+index 4952b7f..e84f880 100644
 --- a/doc/crypto/EVP_PKEY_verify.pod
 +++ b/doc/crypto/EVP_PKEY_verify.pod
 @@ -10,8 +10,8 @@ EVP_PKEY_verify_init, EVP_PKEY_verify - signature verification using a public ke
@@ -100822,7 +109331,7 @@
  
  =head1 DESCRIPTION
  
-@@ -53,20 +53,20 @@ the public key algorithm.
+@@ -53,20 +53,20 @@ Verify signature using PKCS#1 and SHA256 digest:
  
   EVP_PKEY_CTX *ctx;
   unsigned char *md, *sig;
@@ -100870,7 +109379,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_PKEY_verify_recover.pod b/doc/crypto/EVP_PKEY_verify_recover.pod
-index 6c2287bbd6aa..837bc64ec227 100644
+index 6c2287b..837bc64 100644
 --- a/doc/crypto/EVP_PKEY_verify_recover.pod
 +++ b/doc/crypto/EVP_PKEY_verify_recover.pod
 @@ -10,8 +10,8 @@ EVP_PKEY_verify_recover_init, EVP_PKEY_verify_recover - recover signature using
@@ -100893,7 +109402,7 @@
  used.
  
  Sometimes however it is useful to obtain the data originally signed using a
-@@ -58,32 +58,32 @@ indicates the operation is not supported by the public key algorithm.
+@@ -58,32 +58,32 @@ Recover digest originally signed using PKCS#1 and SHA256 digest:
  
   EVP_PKEY_CTX *ctx;
   unsigned char *rout, *sig;
@@ -100957,7 +109466,7 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_SealInit.pod b/doc/crypto/EVP_SealInit.pod
-index e920e3e310bc..30bd6808c198 100644
+index e920e3e..30bd680 100644
 --- a/doc/crypto/EVP_SealInit.pod
 +++ b/doc/crypto/EVP_SealInit.pod
 @@ -42,9 +42,9 @@ If the cipher does not require an IV then the B<iv> parameter is ignored
@@ -100987,11 +109496,19 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_SignInit.pod b/doc/crypto/EVP_SignInit.pod
-index 185b113b6427..171dbec409a9 100644
+index 185b113..ea4e71e 100644
 --- a/doc/crypto/EVP_SignInit.pod
 +++ b/doc/crypto/EVP_SignInit.pod
-@@ -60,7 +60,7 @@ transparent to the algorithm used and much more flexible.
+@@ -2,6 +2,7 @@
  
+ =head1 NAME
+ 
++EVP_PKEY_size,
+ EVP_SignInit, EVP_SignInit_ex, EVP_SignUpdate, EVP_SignFinal - EVP signing
+ functions
+ 
+@@ -60,7 +61,7 @@ transparent to the algorithm used and much more flexible.
+ 
  Due to the link between message digests and public key algorithms the correct
  digest algorithm must be used with the correct public key type. A list of
 -algorithms and associated public key algorithms appears in 
@@ -100999,7 +109516,7 @@
  L<EVP_DigestInit(3)>.
  
  When signing with DSA private keys the random number generator must be seeded
-@@ -77,7 +77,7 @@ will occur.
+@@ -77,7 +78,7 @@ will occur.
  
  =head1 BUGS
  
@@ -101008,7 +109525,7 @@
  EVP_SignUpdate() could not be made after calling EVP_SignFinal().
  
  Since the private key is passed in the call to EVP_SignFinal() any error
-@@ -97,4 +97,13 @@ L<evp(3)>, L<hmac(3)>, L<md2(3)>,
+@@ -97,4 +98,13 @@ L<evp(3)>, L<hmac(3)>, L<md2(3)>,
  L<md5(3)>, L<mdc2(3)>, L<ripemd(3)>,
  L<sha(3)>, L<dgst(1)>
  
@@ -101023,11 +109540,22 @@
 +
  =cut
 diff --git a/doc/crypto/EVP_VerifyInit.pod b/doc/crypto/EVP_VerifyInit.pod
-index 7fb6e633e7f5..79bd5813609c 100644
+index 7fb6e63..355dc9f 100644
 --- a/doc/crypto/EVP_VerifyInit.pod
 +++ b/doc/crypto/EVP_VerifyInit.pod
-@@ -51,7 +51,7 @@ transparent to the algorithm used and much more flexible.
+@@ -2,7 +2,9 @@
  
+ =head1 NAME
+ 
+-EVP_VerifyInit, EVP_VerifyUpdate, EVP_VerifyFinal - EVP signature verification functions
++EVP_VerifyInit_ex,
++EVP_VerifyInit, EVP_VerifyUpdate, EVP_VerifyFinal
++- EVP signature verification functions
+ 
+ =head1 SYNOPSIS
+ 
+@@ -51,7 +53,7 @@ transparent to the algorithm used and much more flexible.
+ 
  Due to the link between message digests and public key algorithms the correct
  digest algorithm must be used with the correct public key type. A list of
 -algorithms and associated public key algorithms appears in 
@@ -101035,7 +109563,7 @@
  L<EVP_DigestInit(3)>.
  
  The call to EVP_VerifyFinal() internally finalizes a copy of the digest context.
-@@ -64,7 +64,7 @@ will occur.
+@@ -64,7 +66,7 @@ will occur.
  
  =head1 BUGS
  
@@ -101044,7 +109572,7 @@
  EVP_VerifyUpdate() could not be made after calling EVP_VerifyFinal().
  
  Since the public key is passed in the call to EVP_SignFinal() any error
-@@ -85,4 +85,13 @@ L<evp(3)>, L<hmac(3)>, L<md2(3)>,
+@@ -85,4 +87,13 @@ L<evp(3)>, L<hmac(3)>, L<md2(3)>,
  L<md5(3)>, L<mdc2(3)>, L<ripemd(3)>,
  L<sha(3)>, L<dgst(1)>
  
@@ -101060,15 +109588,26 @@
  =cut
 diff --git a/doc/crypto/HMAC.pod b/doc/crypto/HMAC.pod
 new file mode 100644
-index 000000000000..cabb4930b4d0
+index 0000000..fdafec8
 --- /dev/null
 +++ b/doc/crypto/HMAC.pod
-@@ -0,0 +1,122 @@
+@@ -0,0 +1,147 @@
 +=pod
 +
 +=head1 NAME
 +
-+HMAC, HMAC_CTX_new, HMAC_CTX_reset, HMAC_CTX_free, HMAC_Init, HMAC_Init_ex, HMAC_Update, HMAC_Final - HMAC message authentication code
++HMAC,
++HMAC_CTX_new,
++HMAC_CTX_reset,
++HMAC_CTX_free,
++HMAC_Init,
++HMAC_Init_ex,
++HMAC_Update,
++HMAC_Final,
++HMAC_CTX_copy,
++HMAC_CTX_set_flags,
++HMAC_CTX_get_md
++- HMAC message authentication code
 +
 +=head1 SYNOPSIS
 +
@@ -101088,6 +109627,10 @@
 +
 + void HMAC_CTX_free(HMAC_CTX *ctx);
 +
++ int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx);
++ void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags);
++ const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx);
++
 +Deprecated:
 +
 + #if OPENSSL_API_COMPAT < 0x10100000L
@@ -101144,6 +109687,14 @@
 +HMAC_Final() places the message authentication code in B<md>, which
 +must have space for the hash function output.
 +
++HMAC_CTX_copy() copies all of the internal state from B<sctx> into B<dctx>.
++
++HMAC_CTX_set_flags() applies the specified flags to the internal EVP_MD_CTXs.
++These flags have the same meaning as for L<EVP_MD_CTX_set_flags(3)>.
++
++HMAC_CTX_get_md() returns the EVP_MD that has previously been set for the
++supplied HMAC_CTX.
++
 +=head1 RETURN VALUES
 +
 +HMAC() returns a pointer to the message authentication code or NULL if
@@ -101152,10 +109703,11 @@
 +HMAC_CTX_new() returns a pointer to a new B<HMAC_CTX> on success or
 +B<NULL> if an error occurred.
 +
-+HMAC_CTX_reset(), HMAC_Init_ex(), HMAC_Update() and HMAC_Final() return 1
-+for success or 0 if an error occurred.
++HMAC_CTX_reset(), HMAC_Init_ex(), HMAC_Update(), HMAC_Final() and
++HMAC_CTX_copy() return 1 for success or 0 if an error occurred.
 +
-+HMAC_CTX_free() do not return values.
++HMAC_CTX_get_md() return the EVP_MD previously set for the supplied HMAC_CTX or
++NULL if no EVP_MD has been set.
 +
 +=head1 CONFORMING TO
 +
@@ -101167,11 +109719,12 @@
 +
 +=head1 HISTORY
 +
-+HMAC_CTX_init() was replaced with HMAC_CTX_reset() in OpenSSL versions 1.1.
++HMAC_CTX_init() was replaced with HMAC_CTX_reset() in OpenSSL versions 1.1.0.
 +
-+HMAC_CTX_cleanup() existed in OpenSSL versions before 1.1.
++HMAC_CTX_cleanup() existed in OpenSSL versions before 1.1.0.
 +
-+HMAC_CTX_new() and HMAC_CTX_free() are new in OpenSSL version 1.1.
++HMAC_CTX_new(), HMAC_CTX_free() and HMAC_CTX_get_md() are new in OpenSSL version
++1.1.0.
 +
 +HMAC_Init_ex(), HMAC_Update() and HMAC_Final() did not return values in
 +versions of OpenSSL before 1.0.0.
@@ -101188,7 +109741,7 @@
 +=cut
 diff --git a/doc/crypto/MD5.pod b/doc/crypto/MD5.pod
 new file mode 100644
-index 000000000000..78da750796eb
+index 0000000..78da750
 --- /dev/null
 +++ b/doc/crypto/MD5.pod
 @@ -0,0 +1,101 @@
@@ -101295,7 +109848,7 @@
 +=cut
 diff --git a/doc/crypto/MDC2_Init.pod b/doc/crypto/MDC2_Init.pod
 new file mode 100644
-index 000000000000..f7db71b460d3
+index 0000000..f7db71b
 --- /dev/null
 +++ b/doc/crypto/MDC2_Init.pod
 @@ -0,0 +1,68 @@
@@ -101368,10 +109921,56 @@
 +
 +=cut
 diff --git a/doc/crypto/OBJ_nid2obj.pod b/doc/crypto/OBJ_nid2obj.pod
-index d777d7ca5303..ac34a40225cb 100644
+index d777d7c..9fa9e66 100644
 --- a/doc/crypto/OBJ_nid2obj.pod
 +++ b/doc/crypto/OBJ_nid2obj.pod
-@@ -42,7 +42,7 @@ functions
+@@ -2,17 +2,19 @@
+ 
+ =head1 NAME
+ 
+-OBJ_nid2obj, OBJ_nid2ln, OBJ_nid2sn, OBJ_obj2nid, OBJ_txt2nid, OBJ_ln2nid, OBJ_sn2nid,
+-OBJ_cmp, OBJ_dup, OBJ_txt2obj, OBJ_obj2txt, OBJ_create, OBJ_cleanup - ASN1 object utility
+-functions
++i2t_ASN1_OBJECT,
++OBJ_length, OBJ_get0_data, OBJ_nid2obj, OBJ_nid2ln,
++OBJ_nid2sn, OBJ_obj2nid, OBJ_txt2nid, OBJ_ln2nid, OBJ_sn2nid, OBJ_cmp,
++OBJ_dup, OBJ_txt2obj, OBJ_obj2txt, OBJ_create, OBJ_cleanup
++- ASN1 object utility functions
+ 
+ =head1 SYNOPSIS
+ 
+  #include <openssl/objects.h>
+ 
+- ASN1_OBJECT * OBJ_nid2obj(int n);
+- const char *  OBJ_nid2ln(int n);
+- const char *  OBJ_nid2sn(int n);
++ ASN1_OBJECT *OBJ_nid2obj(int n);
++ const char *OBJ_nid2ln(int n);
++ const char *OBJ_nid2sn(int n);
+ 
+  int OBJ_obj2nid(const ASN1_OBJECT *o);
+  int OBJ_ln2nid(const char *ln);
+@@ -20,13 +22,15 @@ functions
+ 
+  int OBJ_txt2nid(const char *s);
+ 
+- ASN1_OBJECT * OBJ_txt2obj(const char *s, int no_name);
++ ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name);
+  int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name);
+ 
+- int OBJ_cmp(const ASN1_OBJECT *a,const ASN1_OBJECT *b);
+- ASN1_OBJECT * OBJ_dup(const ASN1_OBJECT *o);
++ int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a);
+ 
+- int OBJ_create(const char *oid,const char *sn,const char *ln);
++ int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b);
++ ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o);
++
++ int OBJ_create(const char *oid, const char *sn, const char *ln);
+ 
+  size_t OBJ_length(const ASN1_OBJECT *obj);
+  const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj);
+@@ -42,7 +46,7 @@ Deprecated:
  The ASN1 object utility functions process ASN1_OBJECT structures which are
  a representation of the ASN1 OBJECT IDENTIFIER (OID) type.
  
@@ -101380,8 +109979,14 @@
  an ASN1_OBJECT structure, its long name and its short name respectively,
  or B<NULL> is an error occurred.
  
-@@ -70,7 +70,7 @@ OBJ_cmp() compares B<a> to B<b>. If the two are identical 0 is returned.
+@@ -66,11 +70,13 @@ if the object has a long or short name then that will be used, otherwise
+ the numerical form will be used. If B<no_name> is 1 then the numerical
+ form will always be used.
  
++i2t_ASN1_OBJECT() is the same as OBJ_obj2txt() with the B<no_name> set to zero.
++
+ OBJ_cmp() compares B<a> to B<b>. If the two are identical 0 is returned.
+ 
  OBJ_dup() returns a copy of B<o>.
  
 -OBJ_create() adds a new object to the internal table. B<oid> is the 
@@ -101389,7 +109994,7 @@
  numerical form of the object, B<sn> the short name and B<ln> the
  long name. A new NID is returned for the created object.
  
-@@ -127,7 +127,7 @@ is a corresponding OBJECT IDENTIFIER by checking OBJ_length() is not zero.
+@@ -127,7 +133,7 @@ Create an object for B<commonName>:
  Check if an object is B<commonName>
  
   if (OBJ_obj2nid(obj) == NID_commonName)
@@ -101398,7 +110003,7 @@
  
  Create a new NID and initialize an object from it:
  
-@@ -136,14 +136,14 @@ Check if an object is B<commonName>
+@@ -136,14 +142,14 @@ Create a new NID and initialize an object from it:
   new_nid = OBJ_create("1.2.3.4", "NewOID", "New Object Identifier");
  
   obj = OBJ_nid2obj(new_nid);
@@ -101415,7 +110020,7 @@
  convention of other OpenSSL functions where the buffer can be set
  to B<NULL> to determine the amount of data that should be written.
  Instead B<buf> must point to a valid buffer and B<buf_len> should
-@@ -169,4 +169,13 @@ L<ERR_get_error(3)>
+@@ -169,4 +175,13 @@ L<ERR_get_error(3)>
  
  OBJ_cleanup() was deprecated in OpenSSL 1.1.0.
  
@@ -101430,7 +110035,7 @@
 +
  =cut
 diff --git a/doc/crypto/OCSP_REQUEST_new.pod b/doc/crypto/OCSP_REQUEST_new.pod
-index b74f56a2326c..97c2337d108c 100644
+index b74f56a..97c2337 100644
 --- a/doc/crypto/OCSP_REQUEST_new.pod
 +++ b/doc/crypto/OCSP_REQUEST_new.pod
 @@ -1,8 +1,10 @@
@@ -101460,7 +110065,7 @@
 +
  =cut
 diff --git a/doc/crypto/OCSP_cert_to_id.pod b/doc/crypto/OCSP_cert_to_id.pod
-index ac11ba7b5991..0e37937feac7 100644
+index ac11ba7..0e37937 100644
 --- a/doc/crypto/OCSP_cert_to_id.pod
 +++ b/doc/crypto/OCSP_cert_to_id.pod
 @@ -1,7 +1,9 @@
@@ -101489,7 +110094,7 @@
 +
  =cut
 diff --git a/doc/crypto/OCSP_request_add1_nonce.pod b/doc/crypto/OCSP_request_add1_nonce.pod
-index a95000e2f76b..dab42c67be35 100644
+index a95000e..dab42c6 100644
 --- a/doc/crypto/OCSP_request_add1_nonce.pod
 +++ b/doc/crypto/OCSP_request_add1_nonce.pod
 @@ -1,6 +1,8 @@
@@ -101516,24 +110121,125 @@
 +L<https://www.openssl.org/source/license.html>.
 +
  =cut
-diff --git a/doc/crypto/OCSP_response_find_status.pod b/doc/crypto/OCSP_response_find_status.pod
-index 2a1418955a54..a7394343fdc3 100644
---- a/doc/crypto/OCSP_response_find_status.pod
-+++ b/doc/crypto/OCSP_response_find_status.pod
-@@ -1,6 +1,8 @@
- =pod
- 
--OCSP_resp_find_status, OCSP_resp_count, OCSP_resp_get0, OCSP_resp_find, OCSP_single_get0_status, OCSP_check_validity - OCSP response utility functions.
+diff --git a/doc/crypto/OCSP_resp_find_status.pod b/doc/crypto/OCSP_resp_find_status.pod
+new file mode 100644
+index 0000000..a852eaa
+--- /dev/null
++++ b/doc/crypto/OCSP_resp_find_status.pod
+@@ -0,0 +1,123 @@
++=pod
++
 +=head1 NAME
 +
-+OCSP_resp_find_status, OCSP_resp_count, OCSP_resp_get0, OCSP_resp_find, OCSP_single_get0_status, OCSP_check_validity - OCSP response utility functions
- 
- =head1 SYNOPSIS
- 
-@@ -106,4 +108,13 @@ L<OCSP_REQUEST_new(3)>,
- L<OCSP_response_status(3)>,
- L<OCSP_sendreq_new(3)>
- 
++OCSP_resp_get0_produced_at,
++OCSP_resp_find_status, OCSP_resp_count, OCSP_resp_get0, OCSP_resp_find,
++OCSP_single_get0_status, OCSP_check_validity
++- OCSP response utility functions
++
++=head1 SYNOPSIS
++
++ #include <openssl/ocsp.h>
++
++ int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status,
++                           int *reason,
++                           ASN1_GENERALIZEDTIME **revtime,
++                           ASN1_GENERALIZEDTIME **thisupd,
++                           ASN1_GENERALIZEDTIME **nextupd);
++
++ int OCSP_resp_count(OCSP_BASICRESP *bs);
++ OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx);
++ int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last);
++ int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason,
++                             ASN1_GENERALIZEDTIME **revtime,
++                             ASN1_GENERALIZEDTIME **thisupd,
++                             ASN1_GENERALIZEDTIME **nextupd);
++
++ ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(OCSP_BASICRESP* single);
++
++ int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
++                         ASN1_GENERALIZEDTIME *nextupd,
++                         long sec, long maxsec);
++
++=head1 DESCRIPTION
++
++OCSP_resp_find_status() searches B<bs> for an OCSP response for B<id>. If it is
++successful the fields of the response are returned in B<*status>, B<*reason>,
++B<*revtime>, B<*thisupd> and B<*nextupd>.  The B<*status> value will be one of
++B<V_OCSP_CERTSTATUS_GOOD>, B<V_OCSP_CERTSTATUS_REVOKED> or
++B<V_OCSP_CERTSTATUS_UNKNOWN>. The B<*reason> and B<*revtime> fields are only
++set if the status is B<V_OCSP_CERTSTATUS_REVOKED>. If set the B<*reason> field
++will be set to the revocation reason which will be one of
++B<OCSP_REVOKED_STATUS_NOSTATUS>, B<OCSP_REVOKED_STATUS_UNSPECIFIED>,
++B<OCSP_REVOKED_STATUS_KEYCOMPROMISE>, B<OCSP_REVOKED_STATUS_CACOMPROMISE>,
++B<OCSP_REVOKED_STATUS_AFFILIATIONCHANGED>, B<OCSP_REVOKED_STATUS_SUPERSEDED>,
++B<OCSP_REVOKED_STATUS_CESSATIONOFOPERATION>,
++B<OCSP_REVOKED_STATUS_CERTIFICATEHOLD> or B<OCSP_REVOKED_STATUS_REMOVEFROMCRL>.
++
++OCSP_resp_count() returns the number of B<OCSP_SINGLERESP> structures in B<bs>.
++
++OCSP_resp_get0() returns the B<OCSP_SINGLERESP> structure in B<bs>
++corresponding to index B<idx>. Where B<idx> runs from 0 to
++OCSP_resp_count(bs) - 1.
++
++OCSP_resp_find() searches B<bs> for B<id> and returns the index of the first
++matching entry after B<last> or starting from the beginning if B<last> is -1.
++
++OCSP_single_get0_status() extracts the fields of B<single> in B<*reason>,
++B<*revtime>, B<*thisupd> and B<*nextupd>.
++
++OCSP_resp_get0_produced_at() extracts the B<producedAt> field from the
++single response B<bs>.
++
++OCSP_check_validity() checks the validity of B<thisupd> and B<nextupd> values
++which will be typically obtained from OCSP_resp_find_status() or
++OCSP_single_get0_status(). If B<sec> is non-zero it indicates how many seconds
++leeway should be allowed in the check. If B<maxsec> is positive it indicates
++the maximum age of B<thisupd> in seconds.
++
++=head1 RETURN VALUES
++
++OCSP_resp_find_status() returns 1 if B<id> is found in B<bs> and 0 otherwise.
++
++OCSP_resp_count() returns the total number of B<OCSP_SINGLERESP> fields in
++B<bs>.
++
++OCSP_resp_get0() returns a pointer to an B<OCSP_SINGLERESP> structure or
++B<NULL> if B<idx> is out of range.
++
++OCSP_resp_find() returns the index of B<id> in B<bs> (which may be 0) or -1 if
++B<id> was not found.
++
++OCSP_single_get0_status() returns the status of B<single> or -1 if an error
++occurred.
++
++=head1 NOTES
++
++Applications will typically call OCSP_resp_find_status() using the certificate
++ID of interest and then check its validity using OCSP_check_validity(). They
++can then take appropriate action based on the status of the certificate.
++
++An OCSP response for a certificate contains B<thisUpdate> and B<nextUpdate>
++fields. Normally the current time should be between these two values. To
++account for clock skew the B<maxsec> field can be set to non-zero in
++OCSP_check_validity(). Some responders do not set the B<nextUpdate> field, this
++would otherwise mean an ancient response would be considered valid: the
++B<maxsec> parameter to OCSP_check_validity() can be used to limit the permitted
++age of responses.
++
++The values written to B<*revtime>, B<*thisupd> and B<*nextupd> by
++OCSP_resp_find_status() and OCSP_single_get0_status() are internal pointers
++which B<MUST NOT> be freed up by the calling application. Any or all of these
++parameters can be set to NULL if their value is not required.
++
++=head1 SEE ALSO
++
++L<crypto(3)>,
++L<OCSP_cert_to_id(3)>,
++L<OCSP_request_add1_nonce(3)>,
++L<OCSP_REQUEST_new(3)>,
++L<OCSP_response_status(3)>,
++L<OCSP_sendreq_new(3)>
++
 +=head1 COPYRIGHT
 +
 +Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
@@ -101543,9 +110249,124 @@
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
 +
- =cut
++=cut
+diff --git a/doc/crypto/OCSP_response_find_status.pod b/doc/crypto/OCSP_response_find_status.pod
+deleted file mode 100644
+index 2a14189..0000000
+--- a/doc/crypto/OCSP_response_find_status.pod
++++ /dev/null
+@@ -1,109 +0,0 @@
+-=pod
+-
+-OCSP_resp_find_status, OCSP_resp_count, OCSP_resp_get0, OCSP_resp_find, OCSP_single_get0_status, OCSP_check_validity - OCSP response utility functions.
+-
+-=head1 SYNOPSIS
+-
+- #include <openssl/ocsp.h>
+-
+- int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status,
+-                           int *reason,
+-                           ASN1_GENERALIZEDTIME **revtime,
+-                           ASN1_GENERALIZEDTIME **thisupd,
+-                           ASN1_GENERALIZEDTIME **nextupd);
+-
+- int OCSP_resp_count(OCSP_BASICRESP *bs);
+- OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx);
+- int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last);
+- int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason,
+-                             ASN1_GENERALIZEDTIME **revtime,
+-                             ASN1_GENERALIZEDTIME **thisupd,
+-                             ASN1_GENERALIZEDTIME **nextupd);
+-
+- ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(OCSP_BASICRESP* single);
+-
+- int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
+-                         ASN1_GENERALIZEDTIME *nextupd,
+-                         long sec, long maxsec);
+-
+-=head1 DESCRIPTION
+-
+-OCSP_resp_find_status() searches B<bs> for an OCSP response for B<id>. If it is
+-successful the fields of the response are returned in B<*status>, B<*reason>,
+-B<*revtime>, B<*thisupd> and B<*nextupd>.  The B<*status> value will be one of
+-B<V_OCSP_CERTSTATUS_GOOD>, B<V_OCSP_CERTSTATUS_REVOKED> or
+-B<V_OCSP_CERTSTATUS_UNKNOWN>. The B<*reason> and B<*revtime> fields are only
+-set if the status is B<V_OCSP_CERTSTATUS_REVOKED>. If set the B<*reason> field
+-will be set to the revocation reason which will be one of
+-B<OCSP_REVOKED_STATUS_NOSTATUS>, B<OCSP_REVOKED_STATUS_UNSPECIFIED>,
+-B<OCSP_REVOKED_STATUS_KEYCOMPROMISE>, B<OCSP_REVOKED_STATUS_CACOMPROMISE>,
+-B<OCSP_REVOKED_STATUS_AFFILIATIONCHANGED>, B<OCSP_REVOKED_STATUS_SUPERSEDED>,
+-B<OCSP_REVOKED_STATUS_CESSATIONOFOPERATION>,
+-B<OCSP_REVOKED_STATUS_CERTIFICATEHOLD> or B<OCSP_REVOKED_STATUS_REMOVEFROMCRL>.
+-
+-OCSP_resp_count() returns the number of B<OCSP_SINGLERESP> structures in B<bs>.
+-
+-OCSP_resp_get0() returns the B<OCSP_SINGLERESP> structure in B<bs>
+-corresponding to index B<idx>. Where B<idx> runs from 0 to
+-OCSP_resp_count(bs) - 1.
+-
+-OCSP_resp_find() searches B<bs> for B<id> and returns the index of the first
+-matching entry after B<last> or starting from the beginning if B<last> is -1.
+-
+-OCSP_single_get0_status() extracts the fields of B<single> in B<*reason>,
+-B<*revtime>, B<*thisupd> and B<*nextupd>.
+-
+-OCSP_resp_get0_produced_at() extracts the B<producedAt> field from the
+-single response B<bs>.
+-
+-OCSP_check_validity() checks the validity of B<thisupd> and B<nextupd> values
+-which will be typically obtained from OCSP_resp_find_status() or
+-OCSP_single_get0_status(). If B<sec> is non-zero it indicates how many seconds
+-leeway should be allowed in the check. If B<maxsec> is positive it indicates
+-the maximum age of B<thisupd> in seconds.
+-
+-=head1 RETURN VALUES
+-
+-OCSP_resp_find_status() returns 1 if B<id> is found in B<bs> and 0 otherwise.
+-
+-OCSP_resp_count() returns the total number of B<OCSP_SINGLERESP> fields in
+-B<bs>.
+-
+-OCSP_resp_get0() returns a pointer to an B<OCSP_SINGLERESP> structure or
+-B<NULL> if B<idx> is out of range.
+-
+-OCSP_resp_find() returns the index of B<id> in B<bs> (which may be 0) or -1 if
+-B<id> was not found.
+-
+-OCSP_single_get0_status() returns the status of B<single> or -1 if an error
+-occurred.
+-
+-=head1 NOTES
+-
+-Applications will typically call OCSP_resp_find_status() using the certificate
+-ID of interest and then check its validity using OCSP_check_validity(). They
+-can then take appropriate action based on the status of the certificate.
+-
+-An OCSP response for a certificate contains B<thisUpdate> and B<nextUpdate>
+-fields. Normally the current time should be between these two values. To
+-account for clock skew the B<maxsec> field can be set to non-zero in
+-OCSP_check_validity(). Some responders do not set the B<nextUpdate> field, this
+-would otherwise mean an ancient response would be considered valid: the
+-B<maxsec> parameter to OCSP_check_validity() can be used to limit the permitted
+-age of responses.
+-
+-The values written to B<*revtime>, B<*thisupd> and B<*nextupd> by
+-OCSP_resp_find_status() and OCSP_single_get0_status() are internal pointers
+-which B<MUST NOT> be freed up by the calling application. Any or all of these
+-parameters can be set to NULL if their value is not required.
+-
+-=head1 SEE ALSO
+-
+-L<crypto(3)>,
+-L<OCSP_cert_to_id(3)>,
+-L<OCSP_request_add1_nonce(3)>,
+-L<OCSP_REQUEST_new(3)>,
+-L<OCSP_response_status(3)>,
+-L<OCSP_sendreq_new(3)>
+-
+-=cut
 diff --git a/doc/crypto/OCSP_response_status.pod b/doc/crypto/OCSP_response_status.pod
-index 5195b2a94425..08738d251553 100644
+index 5195b2a..08738d2 100644
 --- a/doc/crypto/OCSP_response_status.pod
 +++ b/doc/crypto/OCSP_response_status.pod
 @@ -1,7 +1,9 @@
@@ -101583,7 +110404,7 @@
 +
  =cut
 diff --git a/doc/crypto/OCSP_sendreq_new.pod b/doc/crypto/OCSP_sendreq_new.pod
-index 1d5599a6258e..c7fdc9b12e6f 100644
+index 1d5599a..c7fdc9b 100644
 --- a/doc/crypto/OCSP_sendreq_new.pod
 +++ b/doc/crypto/OCSP_sendreq_new.pod
 @@ -110,4 +110,13 @@ L<OCSP_REQUEST_new(3)>,
@@ -101601,7 +110422,7 @@
 +
  =cut
 diff --git a/doc/crypto/OPENSSL_Applink.pod b/doc/crypto/OPENSSL_Applink.pod
-index e54de12cc89e..59f46ebbebe6 100644
+index e54de12..59f46eb 100644
 --- a/doc/crypto/OPENSSL_Applink.pod
 +++ b/doc/crypto/OPENSSL_Applink.pod
 @@ -18,4 +18,13 @@ expected to implement it, but to compile provided module with
@@ -101620,7 +110441,7 @@
  =cut
 diff --git a/doc/crypto/OPENSSL_LH_COMPFUNC.pod b/doc/crypto/OPENSSL_LH_COMPFUNC.pod
 new file mode 100644
-index 000000000000..372f0d952c16
+index 0000000..372f0d9
 --- /dev/null
 +++ b/doc/crypto/OPENSSL_LH_COMPFUNC.pod
 @@ -0,0 +1,264 @@
@@ -101890,7 +110711,7 @@
 +=cut
 diff --git a/doc/crypto/OPENSSL_LH_stats.pod b/doc/crypto/OPENSSL_LH_stats.pod
 new file mode 100644
-index 000000000000..c454a47eef25
+index 0000000..c454a47
 --- /dev/null
 +++ b/doc/crypto/OPENSSL_LH_stats.pod
 @@ -0,0 +1,64 @@
@@ -101959,7 +110780,7 @@
 +
 +=cut
 diff --git a/doc/crypto/OPENSSL_VERSION_NUMBER.pod b/doc/crypto/OPENSSL_VERSION_NUMBER.pod
-index d87d7197e5dd..9cc1ed1d9c0d 100644
+index d87d719..9cc1ed1 100644
 --- a/doc/crypto/OPENSSL_VERSION_NUMBER.pod
 +++ b/doc/crypto/OPENSSL_VERSION_NUMBER.pod
 @@ -94,4 +94,13 @@ The version number.
@@ -101977,10 +110798,32 @@
 +
  =cut
 diff --git a/doc/crypto/OPENSSL_config.pod b/doc/crypto/OPENSSL_config.pod
-index 77061a00ce72..1a8af869c05b 100644
+index 77061a0..eae634a 100644
 --- a/doc/crypto/OPENSSL_config.pod
 +++ b/doc/crypto/OPENSSL_config.pod
-@@ -61,4 +61,13 @@ L<CONF_modules_load_file(3)>
+@@ -8,15 +8,16 @@ OPENSSL_config, OPENSSL_no_config - simple OpenSSL configuration functions
+ 
+  #include <openssl/conf.h>
+ 
+- void OPENSSL_config(const char *config_name);
++ #if OPENSSL_API_COMPAT < 0x10100000L
++ void OPENSSL_config(const char *appname);
+  void OPENSSL_no_config(void);
++ #endif
+ 
+ =head1 DESCRIPTION
+ 
+-OPENSSL_config() configures OpenSSL using the standard B<openssl.cnf>
+-configuration file name using B<config_name>. If B<config_name> is NULL then
+-the file specified in the environment variable B<OPENSSL_CONF> will be used,
+-and if that is not set then a system default location is used.
++OPENSSL_config() configures OpenSSL using the standard B<openssl.cnf> and
++reads from the application section B<appname>. If B<appname> is NULL then
++the default section, B<openssl_conf>, will be used.
+ Errors are silently ignored.
+ Multiple calls have no effect.
+ 
+@@ -61,4 +62,13 @@ L<CONF_modules_load_file(3)>
  The OPENSSL_no_config() and OPENSSL_config() functions were
  deprecated in OpenSSL 1.1.0 by OPENSSL_init_crypto().
  
@@ -101995,14 +110838,149 @@
 +
  =cut
 diff --git a/doc/crypto/OPENSSL_ia32cap.pod b/doc/crypto/OPENSSL_ia32cap.pod
-index 90156d21901b..363d158853b6 100644
+index 90156d2..e062e28 100644
 --- a/doc/crypto/OPENSSL_ia32cap.pod
 +++ b/doc/crypto/OPENSSL_ia32cap.pod
-@@ -94,3 +94,14 @@ and RORX;
+@@ -2,23 +2,22 @@
+ 
+ =head1 NAME
+ 
+-OPENSSL_ia32cap, OPENSSL_ia32cap_loc - the IA-32 processor capabilities vector
++OPENSSL_ia32cap - the x86[_64] processor capabilities vector
+ 
+ =head1 SYNOPSIS
+ 
+- unsigned int *OPENSSL_ia32cap_loc(void);
+- #define OPENSSL_ia32cap ((OPENSSL_ia32cap_loc())[0])
++ env OPENSSL_ia32cap=... <application>
+ 
+ =head1 DESCRIPTION
+ 
+-Value returned by OPENSSL_ia32cap_loc() is address of a variable
+-containing IA-32 processor capabilities bit vector as it appears in
+-EDX:ECX register pair after executing CPUID instruction with EAX=1
+-input value (see Intel Application Note #241618). Naturally it's
+-meaningful on x86 and x86_64 platforms only. The variable is normally
+-set up automatically upon toolkit initialization, but can be
+-manipulated afterwards to modify crypto library behaviour. For the
+-moment of this writing following bits are significant:
++OpenSSL supports a range of x86[_64] instruction set extensions. These
++extensions are denoted by individual bits in capability vector returned
++by processor in EDX:ECX register pair after executing CPUID instruction
++with EAX=1 input value (see Intel Application Note #241618). This vector
++is copied to memory upon toolkit initialization and used to choose
++between different code paths to provide optimal performance across wide
++range of processors. For the moment of this writing following bits are
++significant:
+ 
+ =over
+ 
+@@ -47,8 +46,13 @@ cores with shared cache;
+ 
+ =item bit #43 denoting AMD XOP support (forced to zero on non-AMD CPUs);
+ 
++=item bit #54 denoting availability of MOVBE instruction;
++
+ =item bit #57 denoting AES-NI instruction set extension;
+ 
++=item bit #58, XSAVE bit, lack of which in combination with MOVBE is used
++to identify Atom Silvermont core;
++
+ =item bit #59, OSXSAVE bit, denoting availability of YMM registers;
+ 
+ =item bit #60 denoting AVX extension;
+@@ -57,28 +61,30 @@ cores with shared cache;
+ 
+ =back
+ 
+-For example, clearing bit #26 at run-time disables high-performance
+-SSE2 code present in the crypto library, while clearing bit #24
+-disables SSE2 code operating on 128-bit XMM register bank. You might
+-have to do the latter if target OpenSSL application is executed on SSE2
+-capable CPU, but under control of OS that does not enable XMM
+-registers. Even though you can manipulate the value programmatically,
+-you most likely will find it more appropriate to set up an environment
+-variable with the same name prior starting target application, e.g. on
+-Intel P4 processor 'env OPENSSL_ia32cap=0x16980010 apps/openssl', or
+-better yet 'env OPENSSL_ia32cap=~0x1000000 apps/openssl' to achieve same
+-effect without modifying the application source code. Alternatively you
+-can reconfigure the toolkit with no-sse2 option and recompile.
+-
+-Less intuitive is clearing bit #28. The truth is that it's not copied
+-from CPUID output verbatim, but is adjusted to reflect whether or not
+-the data cache is actually shared between logical cores. This in turn
+-affects the decision on whether or not expensive countermeasures
+-against cache-timing attacks are applied, most notably in AES assembler
+-module.
+-
+-The vector is further extended with EBX value returned by CPUID with
+-EAX=7 and ECX=0 as input. Following bits are significant:
++For example, in 32-bit application context clearing bit #26 at run-time
++disables high-performance SSE2 code present in the crypto library, while
++clearing bit #24 disables SSE2 code operating on 128-bit XMM register
++bank. You might have to do the latter if target OpenSSL application is
++executed on SSE2 capable CPU, but under control of OS that does not
++enable XMM registers. Historically address of the capability vector copy
++was exposed to application through OPENSSL_ia32cap_loc(), but not
++anymore. Now the only way to affect the capability detection is to set
++OPENSSL_ia32cap envrionment variable prior target application start. To
++give a specific example, on Intel P4 processor 'env
++OPENSSL_ia32cap=0x16980010 apps/openssl', or better yet 'env
++OPENSSL_ia32cap=~0x1000000 apps/openssl' would achieve the desired
++effect. Alternatively you can reconfigure the toolkit with no-sse2
++option and recompile.
++
++Less intuitive is clearing bit #28, or ~0x10000000 in the "environment
++variable" terms. The truth is that it's not copied from CPUID output
++verbatim, but is adjusted to reflect whether or not the data cache is
++actually shared between logical cores. This in turn affects the decision
++on whether or not expensive countermeasures against cache-timing attacks
++are applied, most notably in AES assembler module.
++
++The capability vector is further extended with EBX value returned by
++CPUID with EAX=7 and ECX=0 as input. Following bits are significant:
+ 
+ =over
+ 
+@@ -86,11 +92,47 @@ EAX=7 and ECX=0 as input. Following bits are significant:
+ 
+ =item bit #64+5 denoting availability of AVX2 instructions;
+ 
+-=item bit #64+8 denoting availability of BMI2 instructions, e.g. MUXL
++=item bit #64+8 denoting availability of BMI2 instructions, e.g. MULX
+ and RORX;
+ 
++=item bit #64+16 denoting availability of AVX512F extension;
++
+ =item bit #64+18 denoting availability of RDSEED instruction;
+ 
  =item bit #64+19 denoting availability of ADCX and ADOX instructions;
  
++=item bit #64+29 denoting availability of SHA extension;
++
++=item bit #64+30 denoting availability of AVX512BW extension;
++
++=item bit #64+31 denoting availability of AVX512VL extension;
++
  =back
 +
++To control this extended capability word use ':' as delimiter when
++setting up OPENSSL_ia32cap environment variable. For example assigning
++':~0x20' would disable AVX2 code paths, and ':0' - all post-AVX
++extensions.
++
++It should be noted that whether or not some of the most "fancy"
++extension code paths are actually assembled depends on current assembler
++version. Base minimum of AES-NI/PCLMULQDQ, SSSE3 and SHA extension code
++paths are always assembled. Besides that, minimum assembler version
++requirements are summarized in below table:
++
++   Extension   | GNU as | nasm   | llvm
++   ------------+--------+--------+--------
++   AVX         | 2.19   | 2.09   | 3.0
++   AVX2        | 2.22   | 2.10   | 3.1
++   AVX512      | 2.25   | 2.11.8 | 3.6
++
 +=head1 COPYRIGHT
 +
 +Copyright 2004-2016 The OpenSSL Project Authors. All Rights Reserved.
@@ -102014,22 +110992,41 @@
 +
 +=cut
 diff --git a/doc/crypto/OPENSSL_init_crypto.pod b/doc/crypto/OPENSSL_init_crypto.pod
-index e701b1d703b5..a35325b3f256 100644
+index e701b1d..1989880 100644
 --- a/doc/crypto/OPENSSL_init_crypto.pod
 +++ b/doc/crypto/OPENSSL_init_crypto.pod
-@@ -16,8 +16,9 @@ initialisation and deinitialisation functions
+@@ -2,6 +2,7 @@
+ 
+ =head1 NAME
+ 
++OPENSSL_init_new, OPENSSL_INIT_set_config_appname, OPENSSL_INIT_free,
+ OPENSSL_init_crypto, OPENSSL_cleanup,
+ OPENSSL_atexit, OPENSSL_thread_stop - OpenSSL
+ initialisation and deinitialisation functions
+@@ -16,8 +17,9 @@ initialisation and deinitialisation functions
   void OPENSSL_thread_stop(void);
  
   OPENSSL_INIT_SETTINGS *OPENSSL_init_new(void);
 - OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *init, const char* name);
 - OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *init);
-+ int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *init,
-+                                      const char* name);
++ int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *init,
++                                     const char* name);
 + void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *init);
  
  =head1 DESCRIPTION
  
-@@ -202,14 +203,24 @@ platforms this is done in response to a DLL_THREAD_DETACH message being sent to
+@@ -190,8 +192,8 @@ described in the NOTES section below.
+ The B<OPENSSL_INIT_LOAD_CONFIG> flag will load a default configuration
+ file.  To specify a different file, an B<OPENSSL_INIT_SETTINGS> must
+ be created and used. The routines
+-OPENSSL_init_new() and OPENSSL_INIT_set_config_filename() can be used to
+-allocate the object and set the configuration filename, and then the
++OPENSSL_init_new() and OPENSSL_INIT_set_config_appname() can be used to
++allocate the object and set the application name, and then the
+ object can be released with OPENSSL_INIT_free() when done.
+ 
+ =head1 NOTES
+@@ -202,14 +204,24 @@ platforms this is done in response to a DLL_THREAD_DETACH message being sent to
  the libcrypto32.dll entry point. Some windows functions may cause threads to exit
  without sending this message (for example ExitProcess()). If the application
  uses such functions, then the application must free up OpenSSL resources
@@ -102055,16 +111052,16 @@
 -The functions OPENSSL_init_crypto and  OPENSSL_atexit() returns 1 on success or
 -0 on error.
 +The functions OPENSSL_init_crypto, OPENSSL_atexit() and
-+OPENSSL_INIT_set_config_filename() return 1 on success or 0 on error.
++OPENSSL_INIT_set_config_appname() return 1 on success or 0 on error.
  
  =head1 SEE ALSO
  
-@@ -218,6 +229,16 @@ L<OPENSSL_init_ssl(3)>
+@@ -218,6 +230,16 @@ L<OPENSSL_init_ssl(3)>
  =head1 HISTORY
  
  The OPENSSL_init_crypto(), OPENSSL_cleanup(), OPENSSL_atexit(),
 -and OPENSSL_thread_stop() functions were added in OpenSSL 1.1.0.
-+OPENSSL_thread_stop(), OPENSSL_init_new(), OPENSSL_INIT_set_config_filename()
++OPENSSL_thread_stop(), OPENSSL_init_new(), OPENSSL_INIT_set_config_appname()
 +and OPENSSL_INIT_free() functions were added in OpenSSL 1.1.0.
 +
 +=head1 COPYRIGHT
@@ -102078,9 +111075,33 @@
  
  =cut
 diff --git a/doc/crypto/OPENSSL_instrument_bus.pod b/doc/crypto/OPENSSL_instrument_bus.pod
-index 4ed83e4950b7..42286f1f5e50 100644
+index 4ed83e4..1407261 100644
 --- a/doc/crypto/OPENSSL_instrument_bus.pod
 +++ b/doc/crypto/OPENSSL_instrument_bus.pod
+@@ -7,8 +7,8 @@ OPENSSL_instrument_bus, OPENSSL_instrument_bus2 - instrument references to memor
+ =head1 SYNOPSIS
+ 
+  #ifdef OPENSSL_CPUID_OBJ
+- size_t OPENSSL_instrument_bus (int *vector,size_t num);
+- size_t OPENSSL_instrument_bus2(int *vector,size_t num,size_t max);
++ size_t OPENSSL_instrument_bus(int *vector, size_t num);
++ size_t OPENSSL_instrument_bus2(int *vector, size_t num, size_t max);
+  #endif
+ 
+ =head1 DESCRIPTION
+@@ -23,10 +23,10 @@ interlocked manner, which should contribute additional noise on
+ multi-processor systems. This also means that B<vector[num]> should be
+ zeroed upon invocation (if you want to retrieve actual probe values).
+ 
+-OPENSSL_instrument_bus performs B<num> probes and records the number of
++OPENSSL_instrument_bus() performs B<num> probes and records the number of
+ oscillator cycles every probe took.
+ 
+-OPENSSL_instrument_bus2 on the other hand B<accumulates> consecutive
++OPENSSL_instrument_bus2() on the other hand B<accumulates> consecutive
+ probes with the same value, i.e. in a way it records duration of
+ periods when probe values appeared deterministic. The subroutine
+ performs at most B<max> probes in attempt to fill the B<vector[num]>,
 @@ -40,3 +40,14 @@ not available on current platform. For reference, on x86 'flush cache
  line' was introduced with the SSE2 extensions.
  
@@ -102097,7 +111118,7 @@
 +
 +=cut
 diff --git a/doc/crypto/OPENSSL_load_builtin_modules.pod b/doc/crypto/OPENSSL_load_builtin_modules.pod
-index 20ca44c3b4f3..112718a68a07 100644
+index 20ca44c..112718a 100644
 --- a/doc/crypto/OPENSSL_load_builtin_modules.pod
 +++ b/doc/crypto/OPENSSL_load_builtin_modules.pod
 @@ -24,15 +24,15 @@ ENGINE_add_conf_module() adds just the ENGINE configuration module.
@@ -102134,11 +111155,15 @@
 +
  =cut
 diff --git a/doc/crypto/OPENSSL_malloc.pod b/doc/crypto/OPENSSL_malloc.pod
-index 7ce00b28a812..ca2169890339 100644
+index 7ce00b2..5d254f7 100644
 --- a/doc/crypto/OPENSSL_malloc.pod
 +++ b/doc/crypto/OPENSSL_malloc.pod
-@@ -4,7 +4,7 @@
+@@ -2,18 +2,21 @@
  
+ =head1 NAME
+ 
++CRYPTO_MEM_CHECK_OFF, CRYPTO_MEM_CHECK_ON,
++CRYPTO_MEM_CHECK_DISABLE, CRYPTO_MEM_CHECK_ENABLE,
  OPENSSL_malloc_init,
  OPENSSL_malloc, OPENSSL_zalloc, OPENSSL_realloc, OPENSSL_free,
 -OPENSSL_clear_realloc, OPENSSL_clear_free, OPENSSL_cleanse
@@ -102146,8 +111171,46 @@
  CRYPTO_malloc, CRYPTO_zalloc, CRYPTO_realloc, CRYPTO_free,
  OPENSSL_strdup, OPENSSL_strndup,
  OPENSSL_memdup, OPENSSL_strlcpy, OPENSSL_strlcat,
-@@ -94,10 +94,10 @@ before ultimately calling OPENSSL_free().
+ OPENSSL_hexstr2buf, OPENSSL_buf2hexstr, OPENSSL_hexchar2int,
++CRYPTO_strdup, CRYPTO_strndup,
++OPENSSL_mem_debug_push, OPENSSL_mem_debug_pop,
++CRYPTO_mem_debug_push, CRYPTO_mem_debug_pop,
+ CRYPTO_clear_realloc, CRYPTO_clear_free,
+ CRYPTO_get_mem_functions, CRYPTO_set_mem_functions,
+ CRYPTO_set_mem_debug, CRYPTO_mem_ctrl,
+-OPENSSL_mem_debug_push, OPENSSL_mem_debug_pop,
+-CRYPTO_mem_debug_push, CRYPTO_mem_debug_pop,
+ CRYPTO_mem_leaks, CRYPTO_mem_leaks_fp - Memory allocation functions
  
+ =head1 SYNOPSIS
+@@ -28,6 +31,9 @@ CRYPTO_mem_leaks, CRYPTO_mem_leaks_fp - Memory allocation functions
+  void OPENSSL_free(void *addr)
+  char *OPENSSL_strdup(const char *str)
+  char *OPENSSL_strndup(const char *str, size_t s)
++ size_t OPENSSL_strlcat(char *dst, const char *src, size_t size);
++ size_t OPENSSL_strlcpy(char *dst, const char *src, size_t size);
++ void *OPENSSL_memdup(void *data, size_t s)
+  void *OPENSSL_clear_realloc(void *p, size_t old_len, size_t num)
+  void OPENSSL_clear_free(void *str, size_t num)
+  void OPENSSL_cleanse(void *ptr, size_t len);
+@@ -64,12 +70,13 @@ CRYPTO_mem_leaks, CRYPTO_mem_leaks_fp - Memory allocation functions
+  int CRYPTO_mem_ctrl(int mode);
+ 
+  int OPENSSL_mem_debug_push(const char *info)
+- int OPENSLS_mem_debug_pop)(void)
++ int OPENSSL_mem_debug_pop(void);
+ 
+  int CRYPTO_mem_debug_push(const char *info, const char *file, int line);
++ int CRYPTO_mem_debug_pop(void);
+ 
+  void CRYPTO_mem_leaks(BIO *b);
+- void CRYPTO_mem_leaks(FILE *fp);
++ void CRYPTO_mem_leaks_fp(FILE *fp);
+ 
+ =head1 DESCRIPTION
+ 
+@@ -94,10 +101,10 @@ before ultimately calling OPENSSL_free().
+ 
  OPENSSL_cleanse() fills B<ptr> of size B<len> with a string of 0's.
  Use OPENSSL_cleanse() with care if the memory is a mapping of a file.
 -If the storage controller uses write compression, then its possible 
@@ -102161,7 +111224,16 @@
  0's will be written at a new physical location.
  
  OPENSSL_strdup(), OPENSSL_strndup() and OPENSSL_memdup() are like the
-@@ -195,4 +195,13 @@ at once.  I<This applies specially if OpenSSL was built with the
+@@ -117,7 +124,7 @@ An odd number of hex digits is an error.
+ 
+ OPENSSL_buf2hexstr() takes the specified buffer and length, and returns
+ a hex string for value, or NULL on error.
+-B<Buffer> cannot be NULL; if B<len> is NULL an empty string is returned.
++B<Buffer> cannot be NULL; if B<len> is 0 an empty string is returned.
+ 
+ OPENSSL_hexchar2int() converts a character to the hexadecimal equivalent,
+ or returns -1 on error.
+@@ -195,4 +202,13 @@ at once.  I<This applies specially if OpenSSL was built with the
  configuration option> C<crypto-mdebug> I<enabled.  In case, swapping out
  only, say, the malloc() implementation is outright dangerous.>
  
@@ -102176,9 +111248,18 @@
 +
  =cut
 diff --git a/doc/crypto/OPENSSL_secure_malloc.pod b/doc/crypto/OPENSSL_secure_malloc.pod
-index 2a04931cec19..9bc05e5ee6e4 100644
+index 2a04931..517bfbc 100644
 --- a/doc/crypto/OPENSSL_secure_malloc.pod
 +++ b/doc/crypto/OPENSSL_secure_malloc.pod
+@@ -6,7 +6,7 @@ CRYPTO_secure_malloc_init, CRYPTO_secure_malloc_initialized,
+ CRYPTO_secure_malloc_done, OPENSSL_secure_malloc, CRYPTO_secure_malloc,
+ OPENSSL_secure_zalloc, CRYPTO_secure_zalloc, OPENSSL_secure_free,
+ CRYPTO_secure_free, OPENSSL_secure_actual_size, OPENSSL_secure_allocated,
+-CYRPTO_secure_malloc_used - secure heap storage
++CYRPTO_secure_used - secure heap storage
+ 
+ =head1 SYNOPSIS
+ 
 @@ -16,13 +16,13 @@ CYRPTO_secure_malloc_used - secure heap storage
  
   int CRYPTO_secure_malloc_initialized();
@@ -102274,7 +111355,7 @@
 +
  =cut
 diff --git a/doc/crypto/OpenSSL_add_all_algorithms.pod b/doc/crypto/OpenSSL_add_all_algorithms.pod
-index 10f3b8fbabf1..aaa28dd6a937 100644
+index 10f3b8f..aaa28dd 100644
 --- a/doc/crypto/OpenSSL_add_all_algorithms.pod
 +++ b/doc/crypto/OpenSSL_add_all_algorithms.pod
 @@ -78,4 +78,13 @@ The OpenSSL_add_all_algorithms(), OpenSSL_add_all_ciphers(),
@@ -102293,7 +111374,7 @@
  =cut
 diff --git a/doc/crypto/PEM_read.pod b/doc/crypto/PEM_read.pod
 new file mode 100644
-index 000000000000..c0bd010e40de
+index 0000000..3c6d2fd
 --- /dev/null
 +++ b/doc/crypto/PEM_read.pod
 @@ -0,0 +1,130 @@
@@ -102324,7 +111405,7 @@
 + int PEM_do_header(EVP_CIPHER_INFO *cinfo, unsigned char *data, long *len,
 +                   pem_password_cb *cb, void *u);
 +
-+ typedef int pem_password_cb (char *buf, int size, int rwflag, void *u);
++ typedef int (*pem_password_cb)(char *buf, int size, int rwflag, void *u);
 +
 +=head1 DESCRIPTION
 +
@@ -102429,7 +111510,7 @@
 +=cut
 diff --git a/doc/crypto/PEM_read_CMS.pod b/doc/crypto/PEM_read_CMS.pod
 new file mode 100644
-index 000000000000..5a799f9e89db
+index 0000000..5a799f9
 --- /dev/null
 +++ b/doc/crypto/PEM_read_CMS.pod
 @@ -0,0 +1,94 @@
@@ -102529,7 +111610,7 @@
 +=cut
 diff --git a/doc/crypto/PEM_read_bio_PrivateKey.pod b/doc/crypto/PEM_read_bio_PrivateKey.pod
 new file mode 100644
-index 000000000000..f35519607cfb
+index 0000000..dd5a230
 --- /dev/null
 +++ b/doc/crypto/PEM_read_bio_PrivateKey.pod
 @@ -0,0 +1,478 @@
@@ -102537,7 +111618,7 @@
 +
 +=head1 NAME
 +
-+PEM, PEM_read_bio_PrivateKey, PEM_read_PrivateKey, PEM_write_bio_PrivateKey,
++PEM_read_bio_PrivateKey, PEM_read_PrivateKey, PEM_write_bio_PrivateKey,
 +PEM_write_bio_PrivateKey_traditional, PEM_write_PrivateKey,
 +PEM_write_bio_PKCS8PrivateKey, PEM_write_PKCS8PrivateKey,
 +PEM_write_bio_PKCS8PrivateKey_nid, PEM_write_PKCS8PrivateKey_nid,
@@ -103012,7 +112093,7 @@
 +
 +=cut
 diff --git a/doc/crypto/PEM_write_bio_CMS_stream.pod b/doc/crypto/PEM_write_bio_CMS_stream.pod
-index 35260c1e52b1..c73fafd44bdc 100644
+index 35260c1..c73fafd 100644
 --- a/doc/crypto/PEM_write_bio_CMS_stream.pod
 +++ b/doc/crypto/PEM_write_bio_CMS_stream.pod
 @@ -2,12 +2,11 @@
@@ -103052,7 +112133,7 @@
 +
  =cut
 diff --git a/doc/crypto/PEM_write_bio_PKCS7_stream.pod b/doc/crypto/PEM_write_bio_PKCS7_stream.pod
-index 121d41836271..77f97aaa2bbc 100644
+index 121d418..77f97aa 100644
 --- a/doc/crypto/PEM_write_bio_PKCS7_stream.pod
 +++ b/doc/crypto/PEM_write_bio_PKCS7_stream.pod
 @@ -2,12 +2,11 @@
@@ -103084,19 +112165,22 @@
 +
  =cut
 diff --git a/doc/crypto/PKCS12_create.pod b/doc/crypto/PKCS12_create.pod
-index 46b24c59986c..6408af1ed1ad 100644
+index 46b24c5..0a43b96 100644
 --- a/doc/crypto/PKCS12_create.pod
 +++ b/doc/crypto/PKCS12_create.pod
-@@ -9,7 +9,7 @@ PKCS12_create - create a PKCS#12 structure
+@@ -8,8 +8,9 @@ PKCS12_create - create a PKCS#12 structure
+ 
   #include <openssl/pkcs12.h>
  
-  PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca,
+- PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca,
 -				int nid_key, int nid_cert, int iter, int mac_iter, int keytype);
-+                                int nid_key, int nid_cert, int iter, int mac_iter, int keytype);
++ PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey,
++                       X509 *cert, STACK_OF(X509) *ca,
++                       int nid_key, int nid_cert, int iter, int mac_iter, int keytype);
  
  =head1 DESCRIPTION
  
-@@ -55,7 +55,7 @@ certificate is required. In previous versions both had to be present or
+@@ -55,7 +56,7 @@ certificate is required. In previous versions both had to be present or
  a fatal error is returned.
  
  B<nid_key> or B<nid_cert> can be set to -1 indicating that no encryption
@@ -103105,7 +112189,7 @@
  
  B<mac_iter> can be set to -1 and the MAC will then be omitted entirely.
  
-@@ -63,4 +63,13 @@ B<mac_iter> can be set to -1 and the MAC will then be omitted entirely.
+@@ -63,4 +64,13 @@ B<mac_iter> can be set to -1 and the MAC will then be omitted entirely.
  
  L<d2i_PKCS12(3)>
  
@@ -103121,7 +112205,7 @@
  =cut
 diff --git a/doc/crypto/PKCS12_newpass.pod b/doc/crypto/PKCS12_newpass.pod
 new file mode 100644
-index 000000000000..b91051195f9b
+index 0000000..b910511
 --- /dev/null
 +++ b/doc/crypto/PKCS12_newpass.pod
 @@ -0,0 +1,103 @@
@@ -103229,7 +112313,7 @@
 +
 +=cut
 diff --git a/doc/crypto/PKCS12_parse.pod b/doc/crypto/PKCS12_parse.pod
-index f02220e358ee..2dfa7e259b17 100644
+index f02220e..2dfa7e2 100644
 --- a/doc/crypto/PKCS12_parse.pod
 +++ b/doc/crypto/PKCS12_parse.pod
 @@ -50,4 +50,13 @@ Attributes currently cannot be stored in the private key B<EVP_PKEY> structure.
@@ -103247,7 +112331,7 @@
 +
  =cut
 diff --git a/doc/crypto/PKCS5_PBKDF2_HMAC.pod b/doc/crypto/PKCS5_PBKDF2_HMAC.pod
-index b04e476a81e3..5cc2caa5fbf4 100644
+index b04e476..5cc2caa 100644
 --- a/doc/crypto/PKCS5_PBKDF2_HMAC.pod
 +++ b/doc/crypto/PKCS5_PBKDF2_HMAC.pod
 @@ -14,8 +14,8 @@ PKCS5_PBKDF2_HMAC, PKCS5_PBKDF2_HMAC_SHA1 - password based derivation routines w
@@ -103286,7 +112370,7 @@
  
  =cut
 diff --git a/doc/crypto/PKCS7_decrypt.pod b/doc/crypto/PKCS7_decrypt.pod
-index 90cf5062f14f..4ed8aa77fa4e 100644
+index 90cf506..4ed8aa7 100644
 --- a/doc/crypto/PKCS7_decrypt.pod
 +++ b/doc/crypto/PKCS7_decrypt.pod
 @@ -45,4 +45,13 @@ mentioned in PKCS7_sign() also applies to PKCS7_verify().
@@ -103304,7 +112388,7 @@
 +
  =cut
 diff --git a/doc/crypto/PKCS7_encrypt.pod b/doc/crypto/PKCS7_encrypt.pod
-index 12475cf60187..4e1afc916feb 100644
+index 12475cf..4e1afc9 100644
 --- a/doc/crypto/PKCS7_encrypt.pod
 +++ b/doc/crypto/PKCS7_encrypt.pod
 @@ -30,7 +30,7 @@ bit RC2. These can be used by passing EVP_rc2_40_cbc() and EVP_rc2_64_cbc()
@@ -103340,7 +112424,7 @@
 +
  =cut
 diff --git a/doc/crypto/PKCS7_sign.pod b/doc/crypto/PKCS7_sign.pod
-index 2593ed19e8aa..b5a52da9a279 100644
+index 2593ed1..b5a52da 100644
 --- a/doc/crypto/PKCS7_sign.pod
 +++ b/doc/crypto/PKCS7_sign.pod
 @@ -15,7 +15,7 @@ PKCS7_sign - create a PKCS#7 signedData structure
@@ -103367,7 +112451,7 @@
 +
  =cut
 diff --git a/doc/crypto/PKCS7_sign_add_signer.pod b/doc/crypto/PKCS7_sign_add_signer.pod
-index 580a9a14e33d..c2a06e7a776d 100644
+index 580a9a1..c2a06e7 100644
 --- a/doc/crypto/PKCS7_sign_add_signer.pod
 +++ b/doc/crypto/PKCS7_sign_add_signer.pod
 @@ -2,7 +2,7 @@
@@ -103412,10 +112496,18 @@
 +
  =cut
 diff --git a/doc/crypto/PKCS7_verify.pod b/doc/crypto/PKCS7_verify.pod
-index b013e3394254..51694e7c47ad 100644
+index b013e33..6cf80df 100644
 --- a/doc/crypto/PKCS7_verify.pod
 +++ b/doc/crypto/PKCS7_verify.pod
-@@ -61,7 +61,7 @@ Any of the following flags (ored together) can be passed in the B<flags> paramet
+@@ -2,6 +2,7 @@
+ 
+ =head1 NAME
+ 
++PKCS7_NO_DUAL_CONTENT,
+ PKCS7_verify, PKCS7_get0_signers - verify a PKCS#7 signedData structure
+ 
+ =head1 SYNOPSIS
+@@ -61,7 +62,7 @@ Any of the following flags (ored together) can be passed in the B<flags> paramet
  to change the default verify behaviour. Only the flag B<PKCS7_NOINTERN> is
  meaningful to PKCS7_get0_signers().
  
@@ -103424,7 +112516,7 @@
  searched when locating the signer's certificate. This means that all the signers
  certificates must be in the B<certs> parameter.
  
-@@ -86,7 +86,7 @@ certificates supplied in B<certs> then the verify will fail because the
+@@ -86,7 +87,7 @@ certificates supplied in B<certs> then the verify will fail because the
  signer cannot be found.
  
  Care should be taken when modifying the default verify behaviour, for example
@@ -103433,7 +112525,7 @@
  and any signed message will be considered valid. This combination is however
  useful if one merely wishes to write the content to B<out> and its validity
  is not considered important.
-@@ -118,4 +118,13 @@ mentioned in PKCS7_sign() also applies to PKCS7_verify().
+@@ -118,4 +119,13 @@ mentioned in PKCS7_sign() also applies to PKCS7_verify().
  
  L<ERR_get_error(3)>, L<PKCS7_sign(3)>
  
@@ -103448,7 +112540,7 @@
 +
  =cut
 diff --git a/doc/crypto/RAND_add.pod b/doc/crypto/RAND_add.pod
-index d54e1f5bd948..46de165a9795 100644
+index d54e1f5..46de165 100644
 --- a/doc/crypto/RAND_add.pod
 +++ b/doc/crypto/RAND_add.pod
 @@ -15,8 +15,10 @@ entropy to the PRNG
@@ -103514,7 +112606,7 @@
 +
  =cut
 diff --git a/doc/crypto/RAND_bytes.pod b/doc/crypto/RAND_bytes.pod
-index 03c6e7f22d10..684215cea3bb 100644
+index 03c6e7f..684215c 100644
 --- a/doc/crypto/RAND_bytes.pod
 +++ b/doc/crypto/RAND_bytes.pod
 @@ -46,4 +46,13 @@ method.
@@ -103532,7 +112624,7 @@
 +
  =cut
 diff --git a/doc/crypto/RAND_cleanup.pod b/doc/crypto/RAND_cleanup.pod
-index fd3f81c5f60e..2640c7d2c731 100644
+index fd3f81c..2640c7d 100644
 --- a/doc/crypto/RAND_cleanup.pod
 +++ b/doc/crypto/RAND_cleanup.pod
 @@ -30,4 +30,13 @@ L<rand(3)>
@@ -103550,7 +112642,7 @@
 +
  =cut
 diff --git a/doc/crypto/RAND_egd.pod b/doc/crypto/RAND_egd.pod
-index 4c6811380907..fcc57c06f9de 100644
+index 4c68113..fcc57c0 100644
 --- a/doc/crypto/RAND_egd.pod
 +++ b/doc/crypto/RAND_egd.pod
 @@ -75,4 +75,13 @@ success, and -1 if the connection failed. The PRNG state is not considered.
@@ -103568,11 +112660,46 @@
 +
  =cut
 diff --git a/doc/crypto/RAND_load_file.pod b/doc/crypto/RAND_load_file.pod
-index 6bc779aae9ff..133b8d2311e0 100644
+index 6bc779a..39084b2 100644
 --- a/doc/crypto/RAND_load_file.pod
 +++ b/doc/crypto/RAND_load_file.pod
-@@ -45,4 +45,13 @@ error.
+@@ -18,9 +18,31 @@ RAND_load_file, RAND_write_file, RAND_file_name - PRNG seed file
  
+ RAND_file_name() generates a default path for the random seed
+ file. B<buf> points to a buffer of size B<num> in which to store the
+-filename. The seed file is $RANDFILE if that environment variable is
+-set, $HOME/.rnd otherwise. If $HOME is not set either, or B<num> is
+-too small for the path name, an error occurs.
++filename.
++
++On all systems, if the environment variable B<RANDFILE> is set, its
++value will be used as the seed file name.
++
++Otherwise, the file is called ".rnd", found in platform dependent locations:
++
++=over 4
++
++=item On Windows (in order of preference)
++
++%HOME%, %USERPROFILE%, %SYSTEMROOT%, C:\
++
++=item On VMS
++
++SYS$LOGIN:
++
++=item On all other systems
++
++$HOME
++
++=back
++
++If C<$HOME> (on non-Windows and non-VMS system) is not set either, or
++B<num> is too small for the path name, an error occurs.
+ 
+ RAND_load_file() reads a number of bytes from file B<filename> and
+ adds them to the PRNG. If B<max_bytes> is non-negative,
+@@ -45,4 +67,13 @@ error.
+ 
  L<rand(3)>, L<RAND_add(3)>, L<RAND_cleanup(3)>
  
 +=head1 COPYRIGHT
@@ -103586,7 +112713,7 @@
 +
  =cut
 diff --git a/doc/crypto/RAND_set_rand_method.pod b/doc/crypto/RAND_set_rand_method.pod
-index 6a421a208442..02fe90ca89e0 100644
+index 6a421a2..02fe90c 100644
 --- a/doc/crypto/RAND_set_rand_method.pod
 +++ b/doc/crypto/RAND_set_rand_method.pod
 @@ -42,7 +42,7 @@ API is being used, so this function is no longer recommended.
@@ -103614,7 +112741,7 @@
  =cut
 diff --git a/doc/crypto/RC4_set_key.pod b/doc/crypto/RC4_set_key.pod
 new file mode 100644
-index 000000000000..fe5d2d14857c
+index 0000000..fe5d2d1
 --- /dev/null
 +++ b/doc/crypto/RC4_set_key.pod
 @@ -0,0 +1,66 @@
@@ -103684,11 +112811,11 @@
 +L<https://www.openssl.org/source/license.html>.
 +
 +=cut
-diff --git a/doc/crypto/RIPEMD160_init.pod b/doc/crypto/RIPEMD160_init.pod
+diff --git a/doc/crypto/RIPEMD160_Init.pod b/doc/crypto/RIPEMD160_Init.pod
 new file mode 100644
-index 000000000000..a372e32ca325
+index 0000000..a372e32
 --- /dev/null
-+++ b/doc/crypto/RIPEMD160_init.pod
++++ b/doc/crypto/RIPEMD160_Init.pod
 @@ -0,0 +1,72 @@
 +=pod
 +
@@ -103763,7 +112890,7 @@
 +
 +=cut
 diff --git a/doc/crypto/RSA_blinding_on.pod b/doc/crypto/RSA_blinding_on.pod
-index a3239495879d..33d49d37206a 100644
+index a323949..33d49d3 100644
 --- a/doc/crypto/RSA_blinding_on.pod
 +++ b/doc/crypto/RSA_blinding_on.pod
 @@ -32,8 +32,13 @@ RSA_blinding_on() returns 1 on success, and 0 if an error occurred.
@@ -103783,9 +112910,18 @@
  
  =cut
 diff --git a/doc/crypto/RSA_check_key.pod b/doc/crypto/RSA_check_key.pod
-index 8fd7d1f176b9..a8b1002fef68 100644
+index 8fd7d1f..d8689f4 100644
 --- a/doc/crypto/RSA_check_key.pod
 +++ b/doc/crypto/RSA_check_key.pod
+@@ -2,7 +2,7 @@
+ 
+ =head1 NAME
+ 
+-RSA_check_key - validate private RSA keys
++RSA_check_key_ex, RSA_check_key - validate private RSA keys
+ 
+ =head1 SYNOPSIS
+ 
 @@ -66,11 +66,19 @@ provide their own verifiers.
  =head1 SEE ALSO
  
@@ -103808,7 +112944,7 @@
 +
  =cut
 diff --git a/doc/crypto/RSA_generate_key.pod b/doc/crypto/RSA_generate_key.pod
-index 380bf123e01c..a8fab52cb95c 100644
+index 380bf12..a8fab52 100644
 --- a/doc/crypto/RSA_generate_key.pod
 +++ b/doc/crypto/RSA_generate_key.pod
 @@ -72,7 +72,16 @@ RSA_generate_key() goes into an infinite loop for illegal input values.
@@ -103831,10 +112967,26 @@
  
  =cut
 diff --git a/doc/crypto/RSA_get0_key.pod b/doc/crypto/RSA_get0_key.pod
-index 5caf9dd72ec1..19c7f3d3345f 100644
+index 5caf9dd..77e0d3b 100644
 --- a/doc/crypto/RSA_get0_key.pod
 +++ b/doc/crypto/RSA_get0_key.pod
-@@ -43,10 +43,13 @@ by the caller.
+@@ -14,10 +14,12 @@ and setting data in an RSA object
+  int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d);
+  int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q);
+  int RSA_set0_crt_params(RSA *r,BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp);
+- void RSA_get0_key(const RSA *r, BIGNUM **n, BIGNUM **e, BIGNUM **d);
+- void RSA_get0_factors(const RSA *r, BIGNUM **p, BIGNUM **q);
++ void RSA_get0_key(const RSA *r,
++                   const BIGNUM **n, const BIGNUM **e, const BIGNUM **d);
++ void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q);
+  void RSA_get0_crt_params(const RSA *r,
+-                          BIGNUM **dmp1, BIGNUM **dmq1, BIGNUM **iqmp);
++                          const BIGNUM **dmp1, const BIGNUM **dmq1,
++                          const BIGNUM **iqmp);
+  void RSA_clear_flags(RSA *r, int flags);
+  int RSA_test_flags(const RSA *r, int flags);
+  void RSA_set_flags(RSA *r, int flags);
+@@ -43,10 +45,13 @@ by the caller.
  
  The B<n>, B<e> and B<d> parameter values can be set by calling
  RSA_set0_key() and passing the new values for B<n>, B<e> and B<d> as
@@ -103852,7 +113004,7 @@
  
  In a similar fashion, the B<p> and B<q> parameters can be obtained and
  set with RSA_get0_factors() and RSA_set0_factors(), and the B<dmp1>,
-@@ -65,6 +68,14 @@ RSA object.
+@@ -65,6 +70,14 @@ RSA object.
  RSA_get0_engine() returns a handle to the ENGINE that has been set for
  this RSA object, or NULL if no such ENGINE has been set.
  
@@ -103867,7 +113019,7 @@
  =head1 RETURN VALUES
  
  RSA_set0_key(), RSA_set0_factors and RSA_set0_crt_params() return 1 on
-@@ -83,4 +94,13 @@ L<rsa(3)>, L<RSA_new(3)>, L<RSA_size(3)>
+@@ -83,4 +96,13 @@ L<rsa(3)>, L<RSA_new(3)>, L<RSA_size(3)>
  
  The functions described here were added in OpenSSL version 1.1.0.
  
@@ -103882,11 +113034,23 @@
 +
  =cut
 diff --git a/doc/crypto/RSA_meth_new.pod b/doc/crypto/RSA_meth_new.pod
-index e6499b7342a5..19743d12401d 100644
+index e6499b7..e46b398 100644
 --- a/doc/crypto/RSA_meth_new.pod
 +++ b/doc/crypto/RSA_meth_new.pod
-@@ -215,11 +215,20 @@ success or 0 on failure.
+@@ -2,9 +2,10 @@
  
+ =head1 NAME
+ 
++RSA_meth_get0_app_data, RSA_meth_set0_app_data,
+ RSA_meth_new, RSA_meth_free, RSA_meth_dup, RSA_meth_get0_name,
+ RSA_meth_set1_name, RSA_meth_get_flags, RSA_meth_set_flags,
+-RSA_meth_get_app_data, RSA_meth_set_app_data, RSA_meth_get_pub_enc,
++RSA_meth_get_pub_enc,
+ RSA_meth_set_pub_enc, RSA_meth_get_pub_dec, RSA_meth_set_pub_dec,
+ RSA_meth_get_priv_enc, RSA_meth_set_priv_enc, RSA_meth_get_priv_dec,
+ RSA_meth_set_priv_dec, RSA_meth_get_mod_exp, RSA_meth_set_mod_exp,
+@@ -215,11 +216,20 @@ success or 0 on failure.
+ 
  =head1 SEE ALSO
  
 -L<rsa(3)>, L<RSA_new(3)>, L<RSA_generate_key(3)>, L<RSA_sign(3)>,
@@ -103908,7 +113072,7 @@
 +
  =cut
 diff --git a/doc/crypto/RSA_new.pod b/doc/crypto/RSA_new.pod
-index 4910557f314f..3317920741e4 100644
+index 4910557..3317920 100644
 --- a/doc/crypto/RSA_new.pod
 +++ b/doc/crypto/RSA_new.pod
 @@ -31,8 +31,17 @@ RSA_free() returns no value.
@@ -103931,7 +113095,7 @@
 +
  =cut
 diff --git a/doc/crypto/RSA_padding_add_PKCS1_type_1.pod b/doc/crypto/RSA_padding_add_PKCS1_type_1.pod
-index fe81e5fb419a..30899440ad1c 100644
+index fe81e5f..3089944 100644
 --- a/doc/crypto/RSA_padding_add_PKCS1_type_1.pod
 +++ b/doc/crypto/RSA_padding_add_PKCS1_type_1.pod
 @@ -110,4 +110,13 @@ L<RSA_public_encrypt(3)>,
@@ -103949,7 +113113,7 @@
 +
  =cut
 diff --git a/doc/crypto/RSA_print.pod b/doc/crypto/RSA_print.pod
-index df09726eb454..1367478f93c7 100644
+index df09726..1367478 100644
 --- a/doc/crypto/RSA_print.pod
 +++ b/doc/crypto/RSA_print.pod
 @@ -38,6 +38,15 @@ These functions return 1 on success, 0 on error.
@@ -103969,93 +113133,8 @@
 +L<https://www.openssl.org/source/license.html>.
  
  =cut
-diff --git a/doc/crypto/RSA_private_decrypt.pod b/doc/crypto/RSA_private_decrypt.pod
-new file mode 100644
-index 000000000000..fa6c4053643f
---- /dev/null
-+++ b/doc/crypto/RSA_private_decrypt.pod
-@@ -0,0 +1,79 @@
-+=pod
-+
-+=head1 NAME
-+
-+RSA_private_decrypt,
-+RSA_private_encrypt,
-+RSA_public_decrypt,
-+RSA_sign,
-+RSA_verify,
-+RSA_sign_ASN1_OCTET_STRING,
-+RSA_verify_ASN1_OCTET_STRING
-+- RSA public key cryptosystem
-+
-+=head1 SYNOPSIS
-+
-+ #include <openssl/rsa.h>
-+
-+ int RSA_private_decrypt(int flen, unsigned char *from,
-+    unsigned char *to, RSA *rsa, int padding);
-+ int RSA_private_encrypt(int flen, unsigned char *from,
-+    unsigned char *to, RSA *rsa,int padding);
-+ int RSA_public_decrypt(int flen, unsigned char *from,
-+    unsigned char *to, RSA *rsa,int padding);
-+
-+ int RSA_sign(int type, unsigned char *m, unsigned int m_len,
-+    unsigned char *sigret, unsigned int *siglen, RSA *rsa);
-+ int RSA_verify(int type, unsigned char *m, unsigned int m_len,
-+    unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
-+
-+ int RSA_sign_ASN1_OCTET_STRING(int dummy, unsigned char *m,
-+    unsigned int m_len, unsigned char *sigret, unsigned int *siglen,
-+    RSA *rsa);
-+ int RSA_verify_ASN1_OCTET_STRING(int dummy, unsigned char *m,
-+    unsigned int m_len, unsigned char *sigbuf, unsigned int siglen,
-+    RSA *rsa);
-+
-+=head1 DESCRIPTION
-+
-+These functions implement RSA public key encryption and signatures
-+as defined in PKCS #1 v2.0 [RFC 2437].
-+
-+The B<RSA> structure represents public and private RSA keys.
-+
-+Note that RSA keys may use non-standard B<RSA_METHOD> implementations,
-+either directly or by the use of B<ENGINE> modules. In some cases (eg. an
-+ENGINE providing support for hardware-embedded keys), these BIGNUM values
-+will not be used by the implementation or may be used for alternative data
-+storage. For this reason, applications should generally avoid using RSA
-+structure elements directly and instead use API functions to query or
-+modify keys.
-+
-+=head1 CONFORMING TO
-+
-+SSL, PKCS #1 v2.0
-+
-+=head1 SEE ALSO
-+
-+L<bn(3)>, L<dsa(3)>, L<dh(3)>,
-+L<rand(3)>, L<engine(3)>, L<RSA_new(3)>, L<RSA_set0_key(3)>
-+L<RSA_public_encrypt(3)>,
-+L<RSA_size(3)>,
-+L<RSA_generate_key(3)>,
-+L<RSA_check_key(3)>,
-+L<RSA_blinding_on(3)>,
-+L<RSA_set_method(3)>, L<RSA_print(3)>,
-+L<RSA_get_ex_new_index(3)>,
-+L<RSA_sign_ASN1_OCTET_STRING(3)>,
-+L<RSA_padding_add_PKCS1_type_1(3)>
-+
-+=head1 COPYRIGHT
-+
-+Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
-+Licensed under the OpenSSL license (the "License").  You may not use
-+this file except in compliance with the License.  You can obtain a copy
-+in the file LICENSE in the source distribution or at
-+L<https://www.openssl.org/source/license.html>.
-+
-+=cut
 diff --git a/doc/crypto/RSA_private_encrypt.pod b/doc/crypto/RSA_private_encrypt.pod
-index fa4830c97e31..7870371936cd 100644
+index fa4830c..7870371 100644
 --- a/doc/crypto/RSA_private_encrypt.pod
 +++ b/doc/crypto/RSA_private_encrypt.pod
 @@ -11,7 +11,7 @@ RSA_private_encrypt, RSA_public_decrypt - low level signature operations
@@ -104086,7 +113165,7 @@
 +
  =cut
 diff --git a/doc/crypto/RSA_public_encrypt.pod b/doc/crypto/RSA_public_encrypt.pod
-index 57f1f18583d7..2f78c274847f 100644
+index 57f1f18..2f78c27 100644
 --- a/doc/crypto/RSA_public_encrypt.pod
 +++ b/doc/crypto/RSA_public_encrypt.pod
 @@ -73,7 +73,16 @@ SSL, PKCS #1 v2.0
@@ -104108,7 +113187,7 @@
 +
  =cut
 diff --git a/doc/crypto/RSA_set_method.pod b/doc/crypto/RSA_set_method.pod
-index a3572f1c8908..7e7d27cf93c4 100644
+index a3572f1..7e7d27c 100644
 --- a/doc/crypto/RSA_set_method.pod
 +++ b/doc/crypto/RSA_set_method.pod
 @@ -43,7 +43,7 @@ been set as a default for RSA, so this function is no longer recommended.
@@ -104214,7 +113293,7 @@
  
  =cut
 diff --git a/doc/crypto/RSA_sign.pod b/doc/crypto/RSA_sign.pod
-index 94fae37e7ad0..64418a565343 100644
+index 94fae37..64418a5 100644
 --- a/doc/crypto/RSA_sign.pod
 +++ b/doc/crypto/RSA_sign.pod
 @@ -50,7 +50,16 @@ SSL, PKCS #1 v2.0
@@ -104237,7 +113316,7 @@
  
  =cut
 diff --git a/doc/crypto/RSA_sign_ASN1_OCTET_STRING.pod b/doc/crypto/RSA_sign_ASN1_OCTET_STRING.pod
-index 2ba2b477f398..16303c9f907b 100644
+index 2ba2b47..16303c9 100644
 --- a/doc/crypto/RSA_sign_ASN1_OCTET_STRING.pod
 +++ b/doc/crypto/RSA_sign_ASN1_OCTET_STRING.pod
 @@ -48,7 +48,16 @@ These functions serve no recognizable purpose.
@@ -104259,7 +113338,7 @@
 +
  =cut
 diff --git a/doc/crypto/RSA_size.pod b/doc/crypto/RSA_size.pod
-index eff8cdc49632..eb6e4813611b 100644
+index eff8cdc..eb6e481 100644
 --- a/doc/crypto/RSA_size.pod
 +++ b/doc/crypto/RSA_size.pod
 @@ -28,10 +28,19 @@ The size.
@@ -104285,7 +113364,7 @@
  =cut
 diff --git a/doc/crypto/SHA256_Init.pod b/doc/crypto/SHA256_Init.pod
 new file mode 100644
-index 000000000000..f3565bb2f480
+index 0000000..f3565bb
 --- /dev/null
 +++ b/doc/crypto/SHA256_Init.pod
 @@ -0,0 +1,108 @@
@@ -104398,7 +113477,7 @@
 +
 +=cut
 diff --git a/doc/crypto/SMIME_read_CMS.pod b/doc/crypto/SMIME_read_CMS.pod
-index 4b7c14d2599d..efde0bda549b 100644
+index 4b7c14d..efde0bd 100644
 --- a/doc/crypto/SMIME_read_CMS.pod
 +++ b/doc/crypto/SMIME_read_CMS.pod
 @@ -2,7 +2,7 @@
@@ -104425,7 +113504,7 @@
 +
  =cut
 diff --git a/doc/crypto/SMIME_read_PKCS7.pod b/doc/crypto/SMIME_read_PKCS7.pod
-index e96038b13253..86d5cc3048d8 100644
+index e96038b..86d5cc3 100644
 --- a/doc/crypto/SMIME_read_PKCS7.pod
 +++ b/doc/crypto/SMIME_read_PKCS7.pod
 @@ -2,7 +2,7 @@
@@ -104452,7 +113531,7 @@
 +
  =cut
 diff --git a/doc/crypto/SMIME_write_CMS.pod b/doc/crypto/SMIME_write_CMS.pod
-index 0895825ff38e..d58baeb746db 100644
+index 0895825..d58baeb 100644
 --- a/doc/crypto/SMIME_write_CMS.pod
 +++ b/doc/crypto/SMIME_write_CMS.pod
 @@ -2,7 +2,7 @@
@@ -104479,7 +113558,7 @@
 +
  =cut
 diff --git a/doc/crypto/SMIME_write_PKCS7.pod b/doc/crypto/SMIME_write_PKCS7.pod
-index 6e272cfde7a9..b57312386e2e 100644
+index 6e272cf..b573123 100644
 --- a/doc/crypto/SMIME_write_PKCS7.pod
 +++ b/doc/crypto/SMIME_write_PKCS7.pod
 @@ -2,7 +2,7 @@
@@ -104507,21 +113586,25 @@
  =cut
 diff --git a/doc/crypto/UI_new.pod b/doc/crypto/UI_new.pod
 new file mode 100644
-index 000000000000..78981c1478e0
+index 0000000..72a2ea7
 --- /dev/null
 +++ b/doc/crypto/UI_new.pod
-@@ -0,0 +1,191 @@
+@@ -0,0 +1,195 @@
 +=pod
 +
 +=head1 NAME
 +
++UI, UI_METHOD, UI_INPUT_FLAG_ECHO,
++UI_INPUT_FLAG_DEFAULT_PWD,
++UI_CTRL_PRINT_ERRORS,
++UI_CTRL_IS_REDOABLE,
 +UI_new, UI_new_method, UI_free, UI_add_input_string, UI_dup_input_string,
 +UI_add_verify_string, UI_dup_verify_string, UI_add_input_boolean,
 +UI_dup_input_boolean, UI_add_info_string, UI_dup_info_string,
 +UI_add_error_string, UI_dup_error_string, UI_construct_prompt,
 +UI_add_user_data, UI_get0_user_data, UI_get0_result, UI_process,
 +UI_ctrl, UI_set_default_method, UI_get_default_method, UI_get_method,
-+UI_set_method, UI_OpenSSL, ERR_load_UI_strings - user interface
++UI_set_method, UI_OpenSSL, - user interface
 +
 +=head1 SYNOPSIS
 +
@@ -104703,10 +113786,18 @@
 +
 +=cut
 diff --git a/doc/crypto/X509V3_get_d2i.pod b/doc/crypto/X509V3_get_d2i.pod
-index b502e815a218..30264ff338e7 100644
+index b502e81..f6f9be6 100644
 --- a/doc/crypto/X509V3_get_d2i.pod
 +++ b/doc/crypto/X509V3_get_d2i.pod
-@@ -112,7 +112,7 @@ determine the precise reason by checking the value of B<*crit>.
+@@ -2,6 +2,7 @@
+ 
+ =head1 NAME
+ 
++X509_get0_extensions, X509_CRL_get0_extensions, X509_REVOKED_get0_extensions,
+ X509V3_get_d2i, X509V3_add1_i2d, X509V3_EXT_d2i, X509V3_EXT_i2d,
+ X509_get_ext_d2i, X509_add1_ext_i2d, X509_CRL_get_ext_d2i,
+ X509_CRL_add1_ext_i2d, X509_REVOKED_get_ext_d2i,
+@@ -112,7 +113,7 @@ determine the precise reason by checking the value of B<*crit>.
  The following sections contain a list of all supported extensions
  including their name and NID.
  
@@ -104715,7 +113806,7 @@
  
  The following certificate extensions are defined in PKIX standards such as
  RFC5280.
-@@ -141,7 +141,7 @@ RFC5280.
+@@ -141,7 +142,7 @@ RFC5280.
  
   TLS Feature                        NID_tlsfeature
  
@@ -104724,7 +113815,7 @@
  
  The following are (largely obsolete) Netscape certificate extensions.
  
-@@ -154,12 +154,12 @@ The following are (largely obsolete) Netscape certificate extensions.
+@@ -154,12 +155,12 @@ The following are (largely obsolete) Netscape certificate extensions.
   Netscape SSL Server Name           NID_netscape_ssl_server_name
   Netscape Comment                   NID_netscape_comment
  
@@ -104739,7 +113830,7 @@
  
  The following are CRL extensions from PKIX standards such as RFC5280.
  
-@@ -175,7 +175,7 @@ The following are CRL entry extensions from PKIX standards such as RFC5280.
+@@ -175,7 +176,7 @@ The following are CRL entry extensions from PKIX standards such as RFC5280.
   CRL Reason Code                    NID_crl_reason
   Certificate Issuer                 NID_certificate_issuer
  
@@ -104748,7 +113839,7 @@
  
   OCSP Nonce                         NID_id_pkix_OCSP_Nonce
   OCSP CRL ID                        NID_id_pkix_OCSP_CrlID
-@@ -185,7 +185,7 @@ The following are CRL entry extensions from PKIX standards such as RFC5280.
+@@ -185,7 +186,7 @@ The following are CRL entry extensions from PKIX standards such as RFC5280.
   OCSP Service Locator               NID_id_pkix_OCSP_serviceLocator
   Hold Instruction Code              NID_hold_instruction_code
  
@@ -104757,7 +113848,16 @@
  
  The following extensions are used by certificate transparency, RFC6962
  
-@@ -228,4 +228,13 @@ L<X509_new(3)>,
+@@ -206,7 +207,7 @@ cannot be encoded) or -1 due to a fatal error such as a memory allocation
+ failure.
+ 
+ X509_get0_extensions(), X509_CRL_get0_extensions() and
+-X509_REVOKED_get0_extensions() return a stack of extensions. They can return
++X509_REVOKED_get0_extensions() return a stack of extensions. They return
+ NULL if no extensions are present.
+ 
+ =head1 SEE ALSO
+@@ -228,4 +229,13 @@ L<X509_new(3)>,
  L<X509_sign(3)>,
  L<X509_verify_cert(3)>
  
@@ -104773,7 +113873,7 @@
  =cut
 diff --git a/doc/crypto/X509_ALGOR_dup.pod b/doc/crypto/X509_ALGOR_dup.pod
 new file mode 100644
-index 000000000000..8f6c9b05eb81
+index 0000000..8f6c9b0
 --- /dev/null
 +++ b/doc/crypto/X509_ALGOR_dup.pod
 @@ -0,0 +1,48 @@
@@ -104826,7 +113926,7 @@
 +
 +=cut
 diff --git a/doc/crypto/X509_CRL_get0_by_serial.pod b/doc/crypto/X509_CRL_get0_by_serial.pod
-index d00dab9cb16f..add849038ddf 100644
+index d00dab9..add8490 100644
 --- a/doc/crypto/X509_CRL_get0_by_serial.pod
 +++ b/doc/crypto/X509_CRL_get0_by_serial.pod
 @@ -6,7 +6,7 @@ X509_CRL_get0_by_serial, X509_CRL_get0_by_cert, X509_CRL_get_REVOKED,
@@ -104853,7 +113953,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_EXTENSION_set_object.pod b/doc/crypto/X509_EXTENSION_set_object.pod
-index 6afef2b06410..fb94d2379f9b 100644
+index 6afef2b..fb94d23 100644
 --- a/doc/crypto/X509_EXTENSION_set_object.pod
 +++ b/doc/crypto/X509_EXTENSION_set_object.pod
 @@ -1,10 +1,12 @@
@@ -104886,7 +113986,7 @@
 +
 +=cut
 diff --git a/doc/crypto/X509_LOOKUP_hash_dir.pod b/doc/crypto/X509_LOOKUP_hash_dir.pod
-index dfb9e214e4a3..08fa731238f8 100644
+index dfb9e21..08fa731 100644
 --- a/doc/crypto/X509_LOOKUP_hash_dir.pod
 +++ b/doc/crypto/X509_LOOKUP_hash_dir.pod
 @@ -51,7 +51,7 @@ L<X509_STORE_set_default_paths(3)>.
@@ -104929,9 +114029,9 @@
  
 -=cut
 +=head1 COPYRIGHT
++
++Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
  
-+Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
@@ -104939,7 +114039,7 @@
 +
 +=cut
 diff --git a/doc/crypto/X509_NAME_ENTRY_get_object.pod b/doc/crypto/X509_NAME_ENTRY_get_object.pod
-index 2cb96c5764a6..363a89b56c5e 100644
+index 2cb96c5..363a89b 100644
 --- a/doc/crypto/X509_NAME_ENTRY_get_object.pod
 +++ b/doc/crypto/X509_NAME_ENTRY_get_object.pod
 @@ -35,17 +35,17 @@ X509_NAME_ENTRY_set_data() sets the field value of B<ne> to string type
@@ -104976,10 +114076,10 @@
  
 -=head1 HISTORY
 +=head1 COPYRIGHT
++
++Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
  
 -TBA
-+Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
@@ -104987,7 +114087,7 @@
  
  =cut
 diff --git a/doc/crypto/X509_NAME_add_entry_by_txt.pod b/doc/crypto/X509_NAME_add_entry_by_txt.pod
-index c10ea0fb77dc..0b002781aab4 100644
+index c10ea0f..0b00278 100644
 --- a/doc/crypto/X509_NAME_add_entry_by_txt.pod
 +++ b/doc/crypto/X509_NAME_add_entry_by_txt.pod
 @@ -61,7 +61,7 @@ to 0. This adds a new entry to the end of B<name> as a single valued
@@ -104999,7 +114099,7 @@
  
  B<set> determines how the new type is added. If it is zero a
  new RDN is created.
-@@ -80,16 +80,16 @@ always set to zero.
+@@ -80,16 +80,16 @@ Create an B<X509_NAME> structure:
   X509_NAME *nm;
   nm = X509_NAME_new();
   if (nm == NULL)
@@ -105041,14 +114141,16 @@
  =cut
 diff --git a/doc/crypto/X509_NAME_get0_der.pod b/doc/crypto/X509_NAME_get0_der.pod
 new file mode 100644
-index 000000000000..722fadb944e1
+index 0000000..062bc7e
 --- /dev/null
 +++ b/doc/crypto/X509_NAME_get0_der.pod
-@@ -0,0 +1,38 @@
+@@ -0,0 +1,40 @@
 +=pod
 +
 +=head1 NAME
 +
++X509_NAME_get0_der - get X509_NAME DER encoding
++
 +=head1 SYNOPSIS
 +
 + #include <openssl/x509.h>
@@ -105084,7 +114186,7 @@
 +
 +=cut
 diff --git a/doc/crypto/X509_NAME_get_index_by_NID.pod b/doc/crypto/X509_NAME_get_index_by_NID.pod
-index e6dfff3713d2..e84642ae11e9 100644
+index e6dfff3..e84642a 100644
 --- a/doc/crypto/X509_NAME_get_index_by_NID.pod
 +++ b/doc/crypto/X509_NAME_get_index_by_NID.pod
 @@ -44,7 +44,7 @@ B<obj>, if no such entry exists -1 is returned. At most B<len> bytes
@@ -105096,7 +114198,7 @@
  
  =head1 NOTES
  
-@@ -76,10 +76,10 @@ can be determined first by checking OBJ_nid2obj(nid) is not NULL.
+@@ -76,10 +76,10 @@ Process all entries:
   X509_NAME_ENTRY *e;
  
   for (i = 0; i < X509_NAME_entry_count(nm); i++)
@@ -105111,7 +114213,7 @@
  
  Process all commonName entries:
  
-@@ -88,13 +88,13 @@ can be determined first by checking OBJ_nid2obj(nid) is not NULL.
+@@ -88,13 +88,13 @@ Process all commonName entries:
  
   loc = -1;
   for (;;)
@@ -105149,7 +114251,7 @@
  
  =cut
 diff --git a/doc/crypto/X509_NAME_print_ex.pod b/doc/crypto/X509_NAME_print_ex.pod
-index 0d8e5fe6415e..9d928245bb81 100644
+index 0d8e5fe..9d92824 100644
 --- a/doc/crypto/X509_NAME_print_ex.pod
 +++ b/doc/crypto/X509_NAME_print_ex.pod
 @@ -3,7 +3,7 @@
@@ -105206,7 +114308,7 @@
  =cut
 diff --git a/doc/crypto/X509_PUBKEY.pod b/doc/crypto/X509_PUBKEY.pod
 deleted file mode 100644
-index 7b85ffa16d62..000000000000
+index 7b85ffa..0000000
 --- a/doc/crypto/X509_PUBKEY.pod
 +++ /dev/null
 @@ -1,111 +0,0 @@
@@ -105323,7 +114425,7 @@
 -=cut
 diff --git a/doc/crypto/X509_PUBKEY_new.pod b/doc/crypto/X509_PUBKEY_new.pod
 new file mode 100644
-index 000000000000..0e8a14abb53b
+index 0000000..b133105
 --- /dev/null
 +++ b/doc/crypto/X509_PUBKEY_new.pod
 @@ -0,0 +1,120 @@
@@ -105385,7 +114487,7 @@
 +EVP_PKEY_free() after use.
 +
 +d2i_PUBKEY() and i2d_PUBKEY() decode and encode an B<EVP_PKEY> structure
-+using B<SubjectPublicKeyInfo> format. They otherise follow the conventions of
++using B<SubjectPublicKeyInfo> format. They otherwise follow the conventions of
 +other ASN.1 functions such as d2i_X509().
 +
 +d2i_PUBKEY_bio(), d2i_PUBKEY_fp(), i2d_PUBKEY_bio() and i2d_PUBKEY_fp() are
@@ -105449,7 +114551,7 @@
 +=cut
 diff --git a/doc/crypto/X509_SIG_get0.pod b/doc/crypto/X509_SIG_get0.pod
 new file mode 100644
-index 000000000000..1d61497c1c6a
+index 0000000..1d61497
 --- /dev/null
 +++ b/doc/crypto/X509_SIG_get0.pod
 @@ -0,0 +1,32 @@
@@ -105486,7 +114588,7 @@
 +
 +=cut
 diff --git a/doc/crypto/X509_STORE_CTX_get_error.pod b/doc/crypto/X509_STORE_CTX_get_error.pod
-index 1cc6bb5e8fe8..d4163d7acf4d 100644
+index 1cc6bb5..105e051 100644
 --- a/doc/crypto/X509_STORE_CTX_get_error.pod
 +++ b/doc/crypto/X509_STORE_CTX_get_error.pod
 @@ -3,20 +3,23 @@
@@ -105552,6 +114654,15 @@
  X509_STORE_CTX_get1_chain() returns a complete validate chain if a previous
  call to X509_verify_cert() is successful. If the call to X509_verify_cert()
  is B<not> successful the returned chain may be incomplete or invalid. The
+@@ -183,7 +203,7 @@ consistent with the supplied purpose.
+ 
+ =item B<X509_V_ERR_PATH_LENGTH_EXCEEDED: path length constraint exceeded>
+ 
+-the basicConstraints pathlength parameter has been exceeded.
++the basicConstraints path-length parameter has been exceeded.
+ 
+ =item B<X509_V_ERR_INVALID_PURPOSE: unsupported certificate purpose>
+ 
 @@ -302,10 +322,17 @@ thread safe but will never happen unless an invalid code is passed.
  
  =head1 SEE ALSO
@@ -105560,13 +114671,13 @@
 +L<X509_verify_cert(3)>,
 +L<X509_up_ref(3)>,
 +L<X509_free(3)>.
++
++=head1 COPYRIGHT
  
 -=head1 HISTORY
-+=head1 COPYRIGHT
++Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved.
  
 -TBA
-+Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
@@ -105574,10 +114685,10 @@
  
  =cut
 diff --git a/doc/crypto/X509_STORE_CTX_new.pod b/doc/crypto/X509_STORE_CTX_new.pod
-index 17517b3e1682..1f4d4107236c 100644
+index 17517b3..480b492 100644
 --- a/doc/crypto/X509_STORE_CTX_new.pod
 +++ b/doc/crypto/X509_STORE_CTX_new.pod
-@@ -7,11 +7,9 @@ X509_STORE_CTX_init, X509_STORE_CTX_set0_trusted_stack, X509_STORE_CTX_set_cert,
+@@ -7,12 +7,11 @@ X509_STORE_CTX_init, X509_STORE_CTX_set0_trusted_stack, X509_STORE_CTX_set_cert,
  X509_STORE_CTX_set0_crls,
  X509_STORE_CTX_get0_chain, X509_STORE_CTX_set0_verified_chain,
  X509_STORE_CTX_get0_param, X509_STORE_CTX_set0_param,
@@ -105587,9 +114698,11 @@
  X509_STORE_CTX_set_default,
 -X509_STORE_CTX_get_verify_cb,
  X509_STORE_CTX_set_verify,
++X509_STORE_set_verify,
  X509_STORE_CTX_get_verify - X509_STORE_CTX initialisation
  
-@@ -24,7 +22,7 @@ X509_STORE_CTX_get_verify - X509_STORE_CTX initialisation
+ =head1 SYNOPSIS
+@@ -24,7 +23,7 @@ X509_STORE_CTX_get_verify - X509_STORE_CTX initialisation
   void X509_STORE_CTX_free(X509_STORE_CTX *ctx);
  
   int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store,
@@ -105598,7 +114711,7 @@
  
   void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk);
  
-@@ -37,7 +35,6 @@ X509_STORE_CTX_get_verify - X509_STORE_CTX initialisation
+@@ -37,7 +36,6 @@ X509_STORE_CTX_get_verify - X509_STORE_CTX initialisation
   void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param);
   int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name);
  
@@ -105606,7 +114719,7 @@
   STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(X509_STORE_CTX *ctx);
   void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk);
  
-@@ -47,6 +44,7 @@ X509_STORE_CTX_get_verify - X509_STORE_CTX initialisation
+@@ -47,6 +45,7 @@ X509_STORE_CTX_get_verify - X509_STORE_CTX initialisation
   X509_STORE_CTX_verify X509_STORE_CTX_get_verify(X509_STORE_CTX *ctx);
   void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify verify);
  
@@ -105614,7 +114727,7 @@
  
  =head1 DESCRIPTION
  
-@@ -96,9 +94,6 @@ for example in a PKCS#7 structure.
+@@ -96,14 +95,11 @@ for example in a PKCS#7 structure.
  X509_STORE_CTX_get0_param() retrieves an internal pointer
  to the verification parameters associated with B<ctx>.
  
@@ -105622,9 +114735,16 @@
 -certificate being verified by the B<ctx>.
 -
  X509_STORE_CTX_get0_untrusted() retrieves an internal pointer to the
- stack of untrusted certifieds associated with B<ctx>.
+-stack of untrusted certifieds associated with B<ctx>.
++stack of untrusted certificates associated with B<ctx>.
  
-@@ -115,6 +110,23 @@ find an appropriate set of parameters from B<name>.
+ X509_STORE_CTX_set0_untrusted() sets the internal point to the stack
+-of unstrusted certificates associated with B<ctx> to B<sk>.
++of untrusted certificates associated with B<ctx> to B<sk>.
+ 
+ X509_STORE_CTX_set0_param() sets the internal verification parameter pointer
+ to B<param>. After this call B<param> should not be used.
+@@ -115,6 +111,23 @@ find an appropriate set of parameters from B<name>.
  X509_STORE_CTX_get_num_untrusted() returns the number of untrusted certificates
  that were used in building the chain following a call to X509_verify_cert().
  
@@ -105648,7 +114768,7 @@
  =head1 NOTES
  
  The certificates and CRLs in a store are used internally and should B<not>
-@@ -147,6 +159,9 @@ X509_STORE_CTX_set_default() returns 1 for success or 0 if an error occurred.
+@@ -147,6 +160,9 @@ X509_STORE_CTX_set_default() returns 1 for success or 0 if an error occurred.
  X509_STORE_CTX_get_num_untrusted() returns the number of untrusted certificates
  used.
  
@@ -105658,11 +114778,11 @@
  =head1 SEE ALSO
  
  L<X509_verify_cert(3)>
-@@ -156,5 +171,17 @@ L<X509_VERIFY_PARAM_set_flags(3)>
+@@ -156,5 +172,17 @@ L<X509_VERIFY_PARAM_set_flags(3)>
  
  X509_STORE_CTX_set0_crls() was first added to OpenSSL 1.0.0
  X509_STORE_CTX_get_num_untrusted() was first added to OpenSSL 1.1.0
-+X509_STORE_set_verify() wsa first added to OpenSSL 1.1.0. It was previously
++X509_STORE_set_verify() was first added to OpenSSL 1.1.0. It was previously
 +available as a macro X509_STORE_set_verify_func(). This macro still exists but
 +simply calls this function.
 +
@@ -105677,7 +114797,7 @@
  
  =cut
 diff --git a/doc/crypto/X509_STORE_CTX_set_verify_cb.pod b/doc/crypto/X509_STORE_CTX_set_verify_cb.pod
-index e89b8060f71c..1305f32c59e8 100644
+index e89b806..1305f32 100644
 --- a/doc/crypto/X509_STORE_CTX_set_verify_cb.pod
 +++ b/doc/crypto/X509_STORE_CTX_set_verify_cb.pod
 @@ -14,7 +14,7 @@ X509_STORE_CTX_set_verify_cb - get and set verification callback
@@ -105753,17 +114873,11 @@
 -	{
 -	X509 *err_cert;
 -	int err,depth;
-+        {
-+        X509 *err_cert;
-+        int err,depth;
- 
+-
 -	err_cert = X509_STORE_CTX_get_current_cert(ctx);
 -	err =	X509_STORE_CTX_get_error(ctx);
 -	depth =	X509_STORE_CTX_get_error_depth(ctx);
-+        err_cert = X509_STORE_CTX_get_current_cert(ctx);
-+        err =   X509_STORE_CTX_get_error(ctx);
-+        depth = X509_STORE_CTX_get_error_depth(ctx);
- 
+-
 -	BIO_printf(bio_err,"depth=%d ",depth);
 -	if (err_cert)
 -		{
@@ -105802,6 +114916,18 @@
 -		}
 -	if (err == X509_V_OK && ok == 2)
 -		/* print out policies */
+-
+-	BIO_printf(bio_err,"verify return:%d\n",ok);
+-	return(ok);
+-	}
++        {
++        X509 *err_cert;
++        int err,depth;
++
++        err_cert = X509_STORE_CTX_get_current_cert(ctx);
++        err =   X509_STORE_CTX_get_error(ctx);
++        depth = X509_STORE_CTX_get_error_depth(ctx);
++
 +        BIO_printf(bio_err,"depth=%d ",depth);
 +        if (err_cert)
 +                {
@@ -105840,10 +114966,7 @@
 +                }
 +        if (err == X509_V_OK && ok == 2)
 +                /* print out policies */
- 
--	BIO_printf(bio_err,"verify return:%d\n",ok);
--	return(ok);
--	}
++
 +        BIO_printf(bio_err,"verify return:%d\n",ok);
 +        return(ok);
 +        }
@@ -105866,7 +114989,7 @@
  =cut
 diff --git a/doc/crypto/X509_STORE_get0_param.pod b/doc/crypto/X509_STORE_get0_param.pod
 new file mode 100644
-index 000000000000..2144f2b0ae40
+index 0000000..2144f2b
 --- /dev/null
 +++ b/doc/crypto/X509_STORE_get0_param.pod
 @@ -0,0 +1,57 @@
@@ -105928,7 +115051,7 @@
 +
 +=cut
 diff --git a/doc/crypto/X509_STORE_new.pod b/doc/crypto/X509_STORE_new.pod
-index 37cabb5c5588..0d0656f2de8c 100644
+index 37cabb5..0d0656f 100644
 --- a/doc/crypto/X509_STORE_new.pod
 +++ b/doc/crypto/X509_STORE_new.pod
 @@ -32,5 +32,19 @@ X509_STORE_free() does not return values.
@@ -105952,7 +115075,7 @@
  
  =cut
 diff --git a/doc/crypto/X509_STORE_set_verify_cb_func.pod b/doc/crypto/X509_STORE_set_verify_cb_func.pod
-index 67092db5382e..7e66b23e04b7 100644
+index 67092db..7e66b23 100644
 --- a/doc/crypto/X509_STORE_set_verify_cb_func.pod
 +++ b/doc/crypto/X509_STORE_set_verify_cb_func.pod
 @@ -9,10 +9,10 @@ X509_STORE_set_verify_cb_func, X509_STORE_set_verify_cb - set verification callb
@@ -106001,7 +115124,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_VERIFY_PARAM_set_flags.pod b/doc/crypto/X509_VERIFY_PARAM_set_flags.pod
-index 04f521506fc0..4b8e1775e8a2 100644
+index 04f5215..2800cd4 100644
 --- a/doc/crypto/X509_VERIFY_PARAM_set_flags.pod
 +++ b/doc/crypto/X509_VERIFY_PARAM_set_flags.pod
 @@ -11,7 +11,7 @@ X509_VERIFY_PARAM_set_flags, X509_VERIFY_PARAM_clear_flags, X509_VERIFY_PARAM_ge
@@ -106063,6 +115186,15 @@
  B<trust>.
  
  X509_VERIFY_PARAM_set_time() sets the verification time in B<param> to
+@@ -79,7 +79,7 @@ X509_VERIFY_PARAM_set_depth() sets the maximum verification depth to B<depth>.
+ That is the maximum number of intermediate CA certificates that can appear in a
+ chain.
+ A maximal depth chain contains 2 more certificates than the limit, since
+-neither the end-entity ceritificate nor the trust-anchor count against this
++neither the end-entity certificate nor the trust-anchor count against this
+ limit.
+ Thus a B<depth> limit of 0 only allows the end-entity certificate to be signed
+ directly by the trust-anchor, while with a B<depth> limit of 1 there can be one
 @@ -177,7 +177,7 @@ The verification flags consists of zero or more of the following flags
  ored together.
  
@@ -106105,9 +115237,18 @@
 +
  =cut
 diff --git a/doc/crypto/X509_check_ca.pod b/doc/crypto/X509_check_ca.pod
-index 87b6c26d5572..fbeacdecb9a7 100644
+index 87b6c26..b79efb5 100644
 --- a/doc/crypto/X509_check_ca.pod
 +++ b/doc/crypto/X509_check_ca.pod
+@@ -19,7 +19,7 @@ to sign other certificates).
+ 
+ Function return 0, if it is not CA certificate, 1 if it is proper X509v3
+ CA certificate with B<basicConstraints> extension CA:TRUE,
+-3, if it is selfsigned X509 v1 certificate, 4, if it is certificate with
++3, if it is self-signed X509 v1 certificate, 4, if it is certificate with
+ B<keyUsage> extension with bit B<keyCertSign> set, but without
+ B<basicConstraints>, and 5 if it has outdated Netscape Certificate Type
+ extension telling that it is CA certificate.
 @@ -33,4 +33,13 @@ L<X509_verify_cert(3)>,
  L<X509_check_issued(3)>,
  L<X509_check_purpose(3)>
@@ -106123,7 +115264,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_check_host.pod b/doc/crypto/X509_check_host.pod
-index d35ade8cb918..93848152b5ec 100644
+index d35ade8..9384815 100644
 --- a/doc/crypto/X509_check_host.pod
 +++ b/doc/crypto/X509_check_host.pod
 @@ -9,11 +9,11 @@ X509_check_host, X509_check_email, X509_check_ip, X509_check_ip_asc - X.509 cert
@@ -106156,7 +115297,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_check_issued.pod b/doc/crypto/X509_check_issued.pod
-index 0830e82d70ea..8e4b1117ca88 100644
+index 0830e82..8e4b111 100644
 --- a/doc/crypto/X509_check_issued.pod
 +++ b/doc/crypto/X509_check_issued.pod
 @@ -15,7 +15,7 @@ certificate
@@ -106184,10 +115325,10 @@
  =cut
 diff --git a/doc/crypto/X509_dup.pod b/doc/crypto/X509_dup.pod
 new file mode 100644
-index 000000000000..e1dd91c3382b
+index 0000000..b93c228
 --- /dev/null
 +++ b/doc/crypto/X509_dup.pod
-@@ -0,0 +1,300 @@
+@@ -0,0 +1,302 @@
 +=pod
 +
 +=head1 NAME
@@ -106423,6 +115564,8 @@
 +X509_dup,
 +- ASN1 object utilities
 +
++=for comment generic
++
 +=head1 SYNOPSIS
 +
 + #include <openssl/asn1t.h>
@@ -106489,7 +115632,7 @@
 +
 +=cut
 diff --git a/doc/crypto/X509_get0_signature.pod b/doc/crypto/X509_get0_signature.pod
-index 875868448270..7de22360f241 100644
+index 8758684..7de2236 100644
 --- a/doc/crypto/X509_get0_signature.pod
 +++ b/doc/crypto/X509_get0_signature.pod
 @@ -4,7 +4,7 @@
@@ -106516,7 +115659,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_get0_uids.pod b/doc/crypto/X509_get0_uids.pod
-index a61c267449c6..ccdded685045 100644
+index a61c267..ccdded6 100644
 --- a/doc/crypto/X509_get0_uids.pod
 +++ b/doc/crypto/X509_get0_uids.pod
 @@ -44,4 +44,13 @@ L<X509_sign(3)>,
@@ -106534,13 +115677,14 @@
 +
  =cut
 diff --git a/doc/crypto/X509_get_extension_flags.pod b/doc/crypto/X509_get_extension_flags.pod
-index c6e24864ebd6..1452cc8a3625 100644
+index c6e2486..2509b65 100644
 --- a/doc/crypto/X509_get_extension_flags.pod
 +++ b/doc/crypto/X509_get_extension_flags.pod
-@@ -2,13 +2,15 @@
+@@ -2,13 +2,16 @@
  
  =head1 NAME
  
++X509_get0_subject_key_id,
 +X509_get_pathlen,
  X509_get_extension_flags, X509_get_key_usage, X509_get_extended_key_usage -
 -retrieve certificate extension flags.
@@ -106554,7 +115698,7 @@
     uint32_t X509_get_extension_flags(X509 *x);
     uint32_t X509_get_key_usage(X509 *x);
     uint32_t X509_get_extended_key_usage(X509 *x);
-@@ -16,7 +18,11 @@ retrieve certificate extension flags.
+@@ -16,7 +19,11 @@ retrieve certificate extension flags.
  
  =head1 DESCRIPTION
  
@@ -106567,7 +115711,7 @@
  
  X509_get_extension_flags() retrieves general information about a certificate,
  it will return one or more of the following flags ored together.
-@@ -115,6 +121,9 @@ X509_get_ext_d2i().
+@@ -115,6 +122,9 @@ X509_get_ext_d2i().
  
  =head1 RETURN VALUE
  
@@ -106577,7 +115721,7 @@
  X509_get_extension_flags(), X509_get_key_usage() and
  X509_get_extended_key_usage() return sets of flags corresponding to the
  certificate extension values.
-@@ -127,4 +136,17 @@ is absent or an error occurred during parsing.
+@@ -127,4 +137,17 @@ is absent or an error occurred during parsing.
  
  L<X509_check_purpose(3)>
  
@@ -106596,7 +115740,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_get_pubkey.pod b/doc/crypto/X509_get_pubkey.pod
-index c2fb5c0836c2..2a5718fd2979 100644
+index c2fb5c0..2a5718f 100644
 --- a/doc/crypto/X509_get_pubkey.pod
 +++ b/doc/crypto/X509_get_pubkey.pod
 @@ -3,9 +3,9 @@
@@ -106637,7 +115781,7 @@
  
  =cut
 diff --git a/doc/crypto/X509_get_serialNumber.pod b/doc/crypto/X509_get_serialNumber.pod
-index 42ba25791bab..4f1b033ade66 100644
+index 42ba257..4f1b033 100644
 --- a/doc/crypto/X509_get_serialNumber.pod
 +++ b/doc/crypto/X509_get_serialNumber.pod
 @@ -3,7 +3,7 @@
@@ -106664,7 +115808,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_get_subject_name.pod b/doc/crypto/X509_get_subject_name.pod
-index dcbf969ce0b2..fbff0cfb6b6c 100644
+index dcbf969..3889735 100644
 --- a/doc/crypto/X509_get_subject_name.pod
 +++ b/doc/crypto/X509_get_subject_name.pod
 @@ -5,7 +5,7 @@
@@ -106676,6 +115820,20 @@
  
  =head1 SYNOPSIS
  
+@@ -34,11 +34,11 @@ up when it is no longer needed.
+ 
+ X509_get_issuer_name() and X509_set_issuer_name() are identical to
+ X509_get_subject_name() and X509_set_subject_name() except the get and
+-set the isssuer name of B<x>.
++set the issuer name of B<x>.
+ 
+ Similarly X509_REQ_get_subject_name(), X509_REQ_set_subject_name(),
+  X509_CRL_get_issuer() and X509_CRL_set_issuer_name() get or set the subject
+-or issuer names of certifcate requests of CRLs respectively.
++or issuer names of certificate requests of CRLs respectively.
+ 
+ =head1 RETURN VALUES
+ 
 @@ -74,4 +74,13 @@ L<X509_sign(3)>,
  L<X509V3_get_d2i(3)>,
  L<X509_verify_cert(3)>
@@ -106691,7 +115849,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_get_version.pod b/doc/crypto/X509_get_version.pod
-index b02f12bd785e..d970962911fd 100644
+index b02f12b..c7decc3 100644
 --- a/doc/crypto/X509_get_version.pod
 +++ b/doc/crypto/X509_get_version.pod
 @@ -4,7 +4,7 @@
@@ -106703,6 +115861,15 @@
  
  =head1 SYNOPSIS
  
+@@ -23,7 +23,7 @@ certificate request or CRL version.
+ 
+ X509_get_version() returns the numerical value of the version field of
+ certificate B<x>. Note: this is defined by standards (X.509 et al) to be one
+-less than the certificate version. So a verson 3 certificate will return 2 and
++less than the certificate version. So a version 3 certificate will return 2 and
+ a version 1 certificate will return 0.
+ 
+ X509_set_version() sets the numerical value of the version field of certificate
 @@ -71,4 +71,13 @@ L<X509_verify_cert(3)>
  X509_get_version(), X509_REQ_get_version() and X509_CRL_get_version() are
  functions in OpenSSL 1.1.0, in previous versions they were macros.
@@ -106718,11 +115885,19 @@
 +
  =cut
 diff --git a/doc/crypto/X509_new.pod b/doc/crypto/X509_new.pod
-index 8db6cdb245e4..0b9126ecf993 100644
+index 8db6cdb..4f53499 100644
 --- a/doc/crypto/X509_new.pod
 +++ b/doc/crypto/X509_new.pod
-@@ -10,7 +10,7 @@ X509_new, X509_free, X509_up_ref - X509 certificate ASN1 allocation functions
+@@ -2,6 +2,7 @@
  
+ =head1 NAME
+ 
++X509_chain_up_ref,
+ X509_new, X509_free, X509_up_ref - X509 certificate ASN1 allocation functions
+ 
+ =head1 SYNOPSIS
+@@ -10,7 +11,7 @@ X509_new, X509_free, X509_up_ref - X509 certificate ASN1 allocation functions
+ 
   X509 *X509_new(void);
   void X509_free(X509 *a);
 - void X509_up_ref(X509 *a);
@@ -106730,7 +115905,7 @@
   STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *x);
  
  =head1 DESCRIPTION
-@@ -46,7 +46,7 @@ If the allocation fails, X509_new() returns B<NULL> and sets an error
+@@ -46,7 +47,7 @@ If the allocation fails, X509_new() returns B<NULL> and sets an error
  code that can be obtained by L<ERR_get_error(3)>.
  Otherwise it returns a pointer to the newly allocated structure.
  
@@ -106739,7 +115914,7 @@
  
  X509_chain_up_ref() returns a copy of the stack or B<NULL> if an error
  occurred.
-@@ -70,4 +70,13 @@ L<X509_sign(3)>,
+@@ -70,4 +71,13 @@ L<X509_sign(3)>,
  L<X509V3_get_d2i(3)>,
  L<X509_verify_cert(3)>
  
@@ -106754,7 +115929,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_sign.pod b/doc/crypto/X509_sign.pod
-index fa243601aa3f..9429280b0128 100644
+index fa24360..994fd43 100644
 --- a/doc/crypto/X509_sign.pod
 +++ b/doc/crypto/X509_sign.pod
 @@ -4,7 +4,7 @@
@@ -106766,6 +115941,15 @@
  
  =head1 SYNOPSIS
  
+@@ -30,7 +30,7 @@ certificate B<x> but uses the parameters contained in digest context B<ctx>.
+ 
+ X509_verify() verifies the signature of certificate B<x> using public key
+ B<pkey>. Only the signature is checked: no other checks (such as certificate
+-chain validity) are perfored.
++chain validity) are performed.
+ 
+ X509_REQ_sign(), X509_REQ_sign_ctx(), X509_REQ_verify(),
+ X509_CRL_sign(), X509_CRL_sign_ctx() and X509_CRL_verify() sign and verify
 @@ -87,4 +87,13 @@ versions of OpenSSL.
  X509_sign_ctx(), X509_REQ_sign_ctx() and X509_CRL_sign_ctx() were first added
  to OpenSSL 1.0.1.
@@ -106781,7 +115965,7 @@
 +
  =cut
 diff --git a/doc/crypto/X509_verify_cert.pod b/doc/crypto/X509_verify_cert.pod
-index a84ef0008939..74acf8df71fe 100644
+index a84ef00..74acf8d 100644
 --- a/doc/crypto/X509_verify_cert.pod
 +++ b/doc/crypto/X509_verify_cert.pod
 @@ -31,12 +31,13 @@ Applications rarely call this function directly but it is used by
@@ -106819,10 +116003,19 @@
 +
  =cut
 diff --git a/doc/crypto/X509v3_get_ext_by_NID.pod b/doc/crypto/X509v3_get_ext_by_NID.pod
-index b11d663509f2..f29b0fb9b41f 100644
+index b11d663..b379678 100644
 --- a/doc/crypto/X509v3_get_ext_by_NID.pod
 +++ b/doc/crypto/X509v3_get_ext_by_NID.pod
-@@ -12,7 +12,7 @@ X509_CRL_get_ext_by_NID, X509_CRL_get_ext_by_OBJ, X509_CRL_get_ext_by_critical,
+@@ -4,15 +4,14 @@
+ 
+ X509v3_get_ext_count, X509v3_get_ext, X509v3_get_ext_by_NID,
+ X509v3_get_ext_by_OBJ, X509v3_get_ext_by_critical, X509v3_delete_ext,
+-X509v3_add_ext, X509_get0_extensions, X509_CRL_get0_extensions,
+-X509_REVOKED_get0_extensions, X509_get_ext_count, X509_get_ext,
++X509v3_add_ext, X509_get_ext_count, X509_get_ext,
+ X509_get_ext_by_NID, X509_get_ext_by_OBJ, X509_get_ext_by_critical,
+ X509_delete_ext, X509_add_ext, X509_CRL_get_ext_count, X509_CRL_get_ext,
+ X509_CRL_get_ext_by_NID, X509_CRL_get_ext_by_OBJ, X509_CRL_get_ext_by_critical,
  X509_CRL_delete_ext, X509_CRL_add_ext, X509_REVOKED_get_ext_count,
  X509_REVOKED_get_ext, X509_REVOKED_get_ext_by_NID, X509_REVOKED_get_ext_by_OBJ,
  X509_REVOKED_get_ext_by_critical, X509_REVOKED_delete_ext,
@@ -106831,7 +116024,18 @@
  
  =head1 SYNOPSIS
  
-@@ -75,7 +75,7 @@ extension after B<lastpos> or from the beginning if <lastpos> is B<-1>. If
+@@ -31,10 +30,6 @@ X509_REVOKED_add_ext - extension stack utility functions.
+  STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x,
+                                           X509_EXTENSION *ex, int loc);
+ 
+- STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x);
+- STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(X509_CRL *crl);
+- STACK_OF(X509_EXTENSION) *X509_REVOKED_get0_extensions(X509_REVOKED *r);
+-
+  int X509_get_ext_count(X509 *x);
+  X509_EXTENSION *X509_get_ext(X509 *x, int loc);
+  int X509_get_ext_by_NID(X509 *x, int nid, int lastpos);
+@@ -75,7 +70,7 @@ extension after B<lastpos> or from the beginning if <lastpos> is B<-1>. If
  the extension is found its index is returned otherwise B<-1> is returned.
  
  X509v3_get_ext_by_critical() is similar to X509v3_get_ext_by_NID() except it
@@ -106840,7 +116044,25 @@
  looks for a non-critical extension a non-zero value looks for a critical
  extension.
  
-@@ -140,3 +140,14 @@ field is absent it will return B<NULL>: this is B<not> an error condition.
+@@ -88,10 +83,6 @@ B<loc> is B<-1> the new extension is added to the end. If B<*x> is B<NULL>
+ a new stack will be allocated. The passed extension B<ex> is duplicated
+ internally so it must be freed after use.
+ 
+-X509_get0_extensions(), X509_CRL_get0_extensions() and
+-X509_REVOKED_get0_extensions() retrieve the extensions from a certificate
+-a CRL or a CRL entry respectively.
+-
+ X509_get_ext_count(), X509_get_ext(), X509_get_ext_by_NID(),
+ X509_get_ext_by_OBJ(), X509_get_ext_by_critical(), X509_delete_ext()
+ and X509_add_ext() operate on the extensions of certificate B<x> they are
+@@ -133,10 +124,17 @@ error occurs.
+ 
+ X509v3_add_ext() returns a stack of extensions or B<NULL> on error.
+ 
+-X509_get0_extensions(), X509_CRL_get0_extensions() and
+-X509_REVOKED_get0_extensions() return a stack of extensions. If the extensions
+-field is absent it will return B<NULL>: this is B<not> an error condition.
+-
  =head1 SEE ALSO
  
  L<X509V3_get_d2i(3)>
@@ -106856,7 +116078,7 @@
 +
 +=cut
 diff --git a/doc/crypto/bio.pod b/doc/crypto/bio.pod
-index fc1da92fa707..5a305c6a2979 100644
+index fc1da92..5a305c6 100644
 --- a/doc/crypto/bio.pod
 +++ b/doc/crypto/bio.pod
 @@ -1,16 +1,15 @@
@@ -106926,7 +116148,7 @@
 +
 diff --git a/doc/crypto/blowfish.pod b/doc/crypto/blowfish.pod
 deleted file mode 100644
-index 25b954c0cbbe..000000000000
+index 25b954c..0000000
 --- a/doc/crypto/blowfish.pod
 +++ /dev/null
 @@ -1,108 +0,0 @@
@@ -107040,7 +116262,7 @@
 -=cut
 diff --git a/doc/crypto/bn.pod b/doc/crypto/bn.pod
 deleted file mode 100644
-index 37d638d9bb0c..000000000000
+index 37d638d..0000000
 --- a/doc/crypto/bn.pod
 +++ /dev/null
 @@ -1,188 +0,0 @@
@@ -107234,7 +116456,7 @@
 -=cut
 diff --git a/doc/crypto/bn_internal.pod b/doc/crypto/bn_internal.pod
 deleted file mode 100644
-index e609a0810c6f..000000000000
+index e609a08..0000000
 --- a/doc/crypto/bn_internal.pod
 +++ /dev/null
 @@ -1,238 +0,0 @@
@@ -107478,7 +116700,7 @@
 -=cut
 diff --git a/doc/crypto/buffer.pod b/doc/crypto/buffer.pod
 deleted file mode 100644
-index a2543e8be041..000000000000
+index a2543e8..0000000
 --- a/doc/crypto/buffer.pod
 +++ /dev/null
 @@ -1,59 +0,0 @@
@@ -107542,7 +116764,7 @@
 -
 -=cut
 diff --git a/doc/crypto/crypto.pod b/doc/crypto/crypto.pod
-index 6e23c1a882ed..6ed3a90e21aa 100644
+index 6e23c1a..6ed3a90 100644
 --- a/doc/crypto/crypto.pod
 +++ b/doc/crypto/crypto.pod
 @@ -1,11 +1,15 @@
@@ -107603,7 +116825,7 @@
  =cut
 diff --git a/doc/crypto/d2i_ASN1_OBJECT.pod b/doc/crypto/d2i_ASN1_OBJECT.pod
 deleted file mode 100644
-index 32c6b0505387..000000000000
+index 32c6b05..0000000
 --- a/doc/crypto/d2i_ASN1_OBJECT.pod
 +++ /dev/null
 @@ -1,29 +0,0 @@
@@ -107638,7 +116860,7 @@
 -=cut
 diff --git a/doc/crypto/d2i_CMS_ContentInfo.pod b/doc/crypto/d2i_CMS_ContentInfo.pod
 deleted file mode 100644
-index e3142cbc132c..000000000000
+index e3142cb..0000000
 --- a/doc/crypto/d2i_CMS_ContentInfo.pod
 +++ /dev/null
 @@ -1,25 +0,0 @@
@@ -107668,7 +116890,7 @@
 -
 -=cut
 diff --git a/doc/crypto/d2i_DHparams.pod b/doc/crypto/d2i_DHparams.pod
-index f13d0b59d2fa..cd1c162b406b 100644
+index f13d0b5..cd1c162 100644
 --- a/doc/crypto/d2i_DHparams.pod
 +++ b/doc/crypto/d2i_DHparams.pod
 @@ -2,7 +2,7 @@
@@ -107698,7 +116920,7 @@
  =cut
 diff --git a/doc/crypto/d2i_DSAPublicKey.pod b/doc/crypto/d2i_DSAPublicKey.pod
 deleted file mode 100644
-index 1344b00a46f1..000000000000
+index 1344b00..0000000
 --- a/doc/crypto/d2i_DSAPublicKey.pod
 +++ /dev/null
 @@ -1,91 +0,0 @@
@@ -107795,7 +117017,7 @@
 -=cut
 diff --git a/doc/crypto/d2i_ECPKParameters.pod b/doc/crypto/d2i_ECPKParameters.pod
 deleted file mode 100644
-index abb6f4f1a4e6..000000000000
+index abb6f4f..0000000
 --- a/doc/crypto/d2i_ECPKParameters.pod
 +++ /dev/null
 @@ -1,84 +0,0 @@
@@ -107885,7 +117107,7 @@
 -=cut
 diff --git a/doc/crypto/d2i_ECPrivateKey.pod b/doc/crypto/d2i_ECPrivateKey.pod
 deleted file mode 100644
-index 08595791333f..000000000000
+index 0859579..0000000
 --- a/doc/crypto/d2i_ECPrivateKey.pod
 +++ /dev/null
 @@ -1,67 +0,0 @@
@@ -107958,7 +117180,7 @@
 -=cut
 diff --git a/doc/crypto/d2i_Netscape_RSA.pod b/doc/crypto/d2i_Netscape_RSA.pod
 new file mode 100644
-index 000000000000..ee39bd817a26
+index 0000000..ee39bd8
 --- /dev/null
 +++ b/doc/crypto/d2i_Netscape_RSA.pod
 @@ -0,0 +1,38 @@
@@ -108001,52 +117223,118 @@
 +
 +=cut
 diff --git a/doc/crypto/d2i_PKCS8PrivateKey.pod b/doc/crypto/d2i_PKCS8PrivateKey.pod
-index cc204790cebb..164d93ff4f67 100644
+deleted file mode 100644
+index cc20479..0000000
 --- a/doc/crypto/d2i_PKCS8PrivateKey.pod
-+++ b/doc/crypto/d2i_PKCS8PrivateKey.pod
-@@ -14,20 +14,20 @@ i2d_PKCS8PrivateKey_nid_bio, i2d_PKCS8PrivateKey_nid_fp - PKCS#8 format private
-  EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u);
- 
-  int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
++++ /dev/null
+@@ -1,52 +0,0 @@
+-=pod
+-
+-=head1 NAME
+-
+-d2i_PKCS8PrivateKey_bio, d2i_PKCS8PrivateKey_fp,
+-i2d_PKCS8PrivateKey_bio, i2d_PKCS8PrivateKey_fp,
+-i2d_PKCS8PrivateKey_nid_bio, i2d_PKCS8PrivateKey_nid_fp - PKCS#8 format private key functions
+-
+-=head1 SYNOPSIS
+-
+- #include <openssl/evp.h>
+-
+- EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u);
+- EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u);
+-
+- int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
 -				  char *kstr, int klen,
 -				  pem_password_cb *cb, void *u);
-+                                  char *kstr, int klen,
-+                                  pem_password_cb *cb, void *u);
- 
-  int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
+-
+- int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
 -				  char *kstr, int klen,
 -				  pem_password_cb *cb, void *u);
-+                                  char *kstr, int klen,
-+                                  pem_password_cb *cb, void *u);
- 
-  int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid,
+-
+- int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid,
 -				  char *kstr, int klen,
 -				  pem_password_cb *cb, void *u);
-+                                  char *kstr, int klen,
-+                                  pem_password_cb *cb, void *u);
- 
-  int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid,
+-
+- int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid,
 -				  char *kstr, int klen,
 -				  pem_password_cb *cb, void *u);
+-
+-=head1 DESCRIPTION
+-
+-The PKCS#8 functions encode and decode private keys in PKCS#8 format using both
+-PKCS#5 v1.5 and PKCS#5 v2.0 password based encryption algorithms.
+-
+-Other than the use of DER as opposed to PEM these functions are identical to the
+-corresponding B<PEM> function as described in the L<pem(3)> manual page.
+-
+-=head1 NOTES
+-
+-These functions are currently the only way to store encrypted private keys using DER format.
+-
+-Currently all the functions use BIOs or FILE pointers, there are no functions which
+-work directly on memory: this can be readily worked around by converting the buffers
+-to memory BIOs, see L<BIO_s_mem(3)> for details.
+-
+-=head1 SEE ALSO
+-
+-L<pem(3)>
+-
+-=cut
+diff --git a/doc/crypto/d2i_PKCS8PrivateKey_bio.pod b/doc/crypto/d2i_PKCS8PrivateKey_bio.pod
+new file mode 100644
+index 0000000..164d93f
+--- /dev/null
++++ b/doc/crypto/d2i_PKCS8PrivateKey_bio.pod
+@@ -0,0 +1,61 @@
++=pod
++
++=head1 NAME
++
++d2i_PKCS8PrivateKey_bio, d2i_PKCS8PrivateKey_fp,
++i2d_PKCS8PrivateKey_bio, i2d_PKCS8PrivateKey_fp,
++i2d_PKCS8PrivateKey_nid_bio, i2d_PKCS8PrivateKey_nid_fp - PKCS#8 format private key functions
++
++=head1 SYNOPSIS
++
++ #include <openssl/evp.h>
++
++ EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u);
++ EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u);
++
++ int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
 +                                  char *kstr, int klen,
 +                                  pem_password_cb *cb, void *u);
- 
- =head1 DESCRIPTION
- 
-@@ -35,7 +35,7 @@ The PKCS#8 functions encode and decode private keys in PKCS#8 format using both
- PKCS#5 v1.5 and PKCS#5 v2.0 password based encryption algorithms.
- 
- Other than the use of DER as opposed to PEM these functions are identical to the
--corresponding B<PEM> function as described in the L<pem(3)> manual page.
++
++ int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
++                                  char *kstr, int klen,
++                                  pem_password_cb *cb, void *u);
++
++ int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid,
++                                  char *kstr, int klen,
++                                  pem_password_cb *cb, void *u);
++
++ int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid,
++                                  char *kstr, int klen,
++                                  pem_password_cb *cb, void *u);
++
++=head1 DESCRIPTION
++
++The PKCS#8 functions encode and decode private keys in PKCS#8 format using both
++PKCS#5 v1.5 and PKCS#5 v2.0 password based encryption algorithms.
++
++Other than the use of DER as opposed to PEM these functions are identical to the
 +corresponding B<PEM> function as described in L<PEM_read_PrivateKey(3)>.
- 
- =head1 NOTES
- 
-@@ -47,6 +47,15 @@ to memory BIOs, see L<BIO_s_mem(3)> for details.
- 
- =head1 SEE ALSO
- 
--L<pem(3)>
++
++=head1 NOTES
++
++These functions are currently the only way to store encrypted private keys using DER format.
++
++Currently all the functions use BIOs or FILE pointers, there are no functions which
++work directly on memory: this can be readily worked around by converting the buffers
++to memory BIOs, see L<BIO_s_mem(3)> for details.
++
++=head1 SEE ALSO
++
 +L<PEM_read_PrivateKey(3)>
 +
 +=head1 COPYRIGHT
@@ -108057,11 +117345,11 @@
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
- 
- =cut
++
++=cut
 diff --git a/doc/crypto/d2i_PrivateKey.pod b/doc/crypto/d2i_PrivateKey.pod
 new file mode 100644
-index 000000000000..a221b0f93fa9
+index 0000000..6b12ad9
 --- /dev/null
 +++ b/doc/crypto/d2i_PrivateKey.pod
 @@ -0,0 +1,71 @@
@@ -108069,7 +117357,7 @@
 +
 +=head1 NAME
 +
-+d2i_Private_key, d2i_AutoPrivateKey, i2d_PrivateKey,
++d2i_PrivateKey, d2i_AutoPrivateKey, i2d_PrivateKey,
 +d2i_PrivateKey_bio, d2i_PrivateKey_fp
 +- decode and encode functions for reading and saving EVP_PKEY structures
 +
@@ -108138,7 +117426,7 @@
 +=cut
 diff --git a/doc/crypto/d2i_RSAPublicKey.pod b/doc/crypto/d2i_RSAPublicKey.pod
 deleted file mode 100644
-index 946fe0f9071b..000000000000
+index 946fe0f..0000000
 --- a/doc/crypto/d2i_RSAPublicKey.pod
 +++ /dev/null
 @@ -1,78 +0,0 @@
@@ -108221,7 +117509,7 @@
 -
 -=cut
 diff --git a/doc/crypto/d2i_X509.pod b/doc/crypto/d2i_X509.pod
-index 3cd2509d8b04..06546a4875e2 100644
+index 3cd2509..06546a4 100644
 --- a/doc/crypto/d2i_X509.pod
 +++ b/doc/crypto/d2i_X509.pod
 @@ -2,83 +2,425 @@
@@ -108588,82 +117876,81 @@
  
 - X509 *d2i_X509(X509 **px, const unsigned char **in, int len);
 - int i2d_X509(X509 *x, unsigned char **out);
--
-- X509 *d2i_X509_bio(BIO *bp, X509 **x);
-- X509 *d2i_X509_fp(FILE *fp, X509 **x);
--
-- int i2d_X509_bio(BIO *bp, X509 *x);
-- int i2d_X509_fp(FILE *fp, X509 *x);
--
-- int i2d_re_X509_tbs(X509 *x, unsigned char **out);
 + int i2d_TYPE(TYPE *a, unsigned char **pp);
 + int i2d_TYPE_fp(FILE *fp, TYPE *a);
 + int i2d_TYPE_bio(BIO *bp, TYPE *a);
  
- =head1 DESCRIPTION
+- X509 *d2i_X509_bio(BIO *bp, X509 **x);
+- X509 *d2i_X509_fp(FILE *fp, X509 **x);
++=head1 DESCRIPTION
  
--The X509 encode and decode routines encode and parse an
--B<X509> structure, which represents an X509 certificate.
+- int i2d_X509_bio(BIO *bp, X509 *x);
+- int i2d_X509_fp(FILE *fp, X509 *x);
 +In the description here, I<TYPE> is used a placeholder
 +for any of the OpenSSL datatypes, such as I<X509_CRL>.
  
--d2i_X509() attempts to decode B<len> bytes at B<*in>. If 
--successful a pointer to the B<X509> structure is returned. If an error
--occurred then B<NULL> is returned. If B<px> is not B<NULL> then the
--returned structure is written to B<*px>. If B<*px> is not B<NULL>
--then it is assumed that B<*px> contains a valid B<X509>
--structure and an attempt is made to reuse it. This "reuse" capability is present
--for historical compatibility but its use is B<strongly discouraged> (see BUGS
--below, and the discussion in the RETURN VALUES section).
+- int i2d_re_X509_tbs(X509 *x, unsigned char **out);
 +These functions convert OpenSSL objects to and from their ASN.1/DER
 +encoding.  Unlike the C structures which can have pointers to sub-objects
 +within, the DER is a serialized encoding, suitable for sending over the
 +network, writing to a file, and so on.
  
--If the call is successful B<*in> is incremented to the byte following the
--parsed data.
+-=head1 DESCRIPTION
 +d2i_TYPE() attempts to decode B<len> bytes at B<*in>. If successful a
 +pointer to the B<TYPE> structure is returned and B<*in> is incremented to
 +the byte following the parsed data.  If B<a> is not B<NULL> then a pointer
 +to the returned structure is also written to B<*a>.  If an error occurred
 +then B<NULL> is returned.
  
--i2d_X509() encodes the structure pointed to by B<x> into DER format.
--If B<out> is not B<NULL> is writes the DER encoded data to the buffer
--at B<*out>, and increments it to point after the data just written.
--If the return value is negative an error occurred, otherwise it
--returns the length of the encoded data. 
+-The X509 encode and decode routines encode and parse an
+-B<X509> structure, which represents an X509 certificate.
 +On a successful return, if B<*a> is not B<NULL> then it is assumed that B<*a>
 +contains a valid B<TYPE> structure and an attempt is made to reuse it. This
 +"reuse" capability is present for historical compatibility but its use is
 +B<strongly discouraged> (see BUGS below, and the discussion in the RETURN
 +VALUES section).
  
--If B<*out> is B<NULL> memory will be
--allocated for a buffer and the encoded data written to it. In this
--case B<*out> is not incremented and it points to the start of the
--data just written.
--
--d2i_X509_bio() is similar to d2i_X509() except it attempts
+-d2i_X509() attempts to decode B<len> bytes at B<*in>. If 
+-successful a pointer to the B<X509> structure is returned. If an error
+-occurred then B<NULL> is returned. If B<px> is not B<NULL> then the
+-returned structure is written to B<*px>. If B<*px> is not B<NULL>
+-then it is assumed that B<*px> contains a valid B<X509>
+-structure and an attempt is made to reuse it. This "reuse" capability is present
+-for historical compatibility but its use is B<strongly discouraged> (see BUGS
+-below, and the discussion in the RETURN VALUES section).
 +d2i_TYPE_bio() is similar to d2i_TYPE() except it attempts
- to parse data from BIO B<bp>.
++to parse data from BIO B<bp>.
  
--d2i_X509_fp() is similar to d2i_X509() except it attempts
+-If the call is successful B<*in> is incremented to the byte following the
+-parsed data.
 +d2i_TYPE_fp() is similar to d2i_TYPE() except it attempts
- to parse data from FILE pointer B<fp>.
++to parse data from FILE pointer B<fp>.
  
--i2d_X509_bio() is similar to i2d_X509() except it writes
--the encoding of the structure B<x> to BIO B<bp> and it
+-i2d_X509() encodes the structure pointed to by B<x> into DER format.
+-If B<out> is not B<NULL> is writes the DER encoded data to the buffer
 +i2d_TYPE() encodes the structure pointed to by B<a> into DER format.
 +If B<out> is not B<NULL>, it writes the DER encoded data to the buffer
-+at B<*out>, and increments it to point after the data just written.
-+If the return value is negative an error occurred, otherwise it
+ at B<*out>, and increments it to point after the data just written.
+ If the return value is negative an error occurred, otherwise it
+-returns the length of the encoded data. 
+-
+-If B<*out> is B<NULL> memory will be
+-allocated for a buffer and the encoded data written to it. In this
+-case B<*out> is not incremented and it points to the start of the
+-data just written.
 +returns the length of the encoded data.
-+
+ 
+-d2i_X509_bio() is similar to d2i_X509() except it attempts
+-to parse data from BIO B<bp>.
+-
+-d2i_X509_fp() is similar to d2i_X509() except it attempts
+-to parse data from FILE pointer B<fp>.
 +If B<*out> is B<NULL> memory will be allocated for a buffer and the encoded
 +data written to it. In this case B<*out> is not incremented and it points
 +to the start of the data just written.
-+
+ 
+-i2d_X509_bio() is similar to i2d_X509() except it writes
+-the encoding of the structure B<x> to BIO B<bp> and it
 +i2d_TYPE_bio() is similar to i2d_TYPE() except it writes
 +the encoding of the structure B<a> to BIO B<bp> and it
  returns 1 for success and 0 for failure.
@@ -108764,7 +118051,7 @@
  
  =head1 EXAMPLES
  
-@@ -103,7 +493,7 @@ another will processed after it.
+@@ -103,7 +493,7 @@ Allocate and encode the DER encoding of an X509 structure:
   buf = NULL;
   len = i2d_X509(x, &buf);
   if (len < 0)
@@ -108773,7 +118060,7 @@
  
  Attempt to decode a buffer:
  
-@@ -111,12 +501,11 @@ another will processed after it.
+@@ -111,12 +501,11 @@ Attempt to decode a buffer:
   unsigned char *buf, *p;
   int len;
  
@@ -108788,7 +118075,7 @@
  
  Alternative technique:
  
-@@ -124,17 +513,16 @@ another will processed after it.
+@@ -124,17 +513,16 @@ Alternative technique:
   unsigned char *buf, *p;
   int len;
  
@@ -108810,7 +118097,7 @@
  mistake is to attempt to use a buffer directly as follows:
  
   int len;
-@@ -142,24 +530,22 @@ The use of temporary variable is mandatory. A common
+@@ -142,24 +530,22 @@ mistake is to attempt to use a buffer directly as follows:
  
   len = i2d_X509(x, NULL);
   buf = OPENSSL_malloc(len);
@@ -108865,23 +118152,37 @@
 -in the B<X509> structure internally to improve encoding performance
 -and to ensure certificate signatures are verified correctly in some
 -certificates with broken (non-DER) encodings.
--
++Any function which encodes a structure (i2d_TYPE(),
++i2d_TYPE() or i2d_TYPE()) may return a stale encoding if the
++structure has been modified after deserialization or previous
++serialization. This is because some objects cache the encoding for
++efficiency reasons.
+ 
 -Any function which encodes an X509 structure such as i2d_X509(),
 -i2d_X509_fp() or i2d_X509_bio() may return a stale encoding if the
 -B<X509> structure has been modified after deserialization or previous
 -serialization.
--
++=head1 RETURN VALUES
+ 
 -If, after modification, the B<X509> object is re-signed with X509_sign(),
 -the encoding is automatically renewed. Otherwise, the encoding of the
 -TBSCertificate portion of the B<X509> can be manually renewed by calling
 -i2d_re_X509_tbs().
-+Any function which encodes a structure (i2d_TYPE(),
-+i2d_TYPE() or i2d_TYPE()) may return a stale encoding if the
-+structure has been modified after deserialization or previous
-+serialization. This is because some objects cache the encoding for
-+efficiency reasons.
++d2i_TYPE(), d2i_TYPE_bio() and d2i_TYPE_fp() return a valid B<TYPE> structure
++or B<NULL> if an error occurs.  If the "reuse" capability has been used with
++a valid structure being passed in via B<a>, then the object is not freed in
++the event of error but may be in a potentially invalid or inconsistent state.
  
- =head1 RETURN VALUES
+-=head1 RETURN VALUES
++i2d_TYPE() returns the number of bytes successfully encoded or a negative
++value if an error occurs.
++
++i2d_TYPE_bio() and i2d_TYPE_fp() return 1 for success and 0 if an error
++occurs.
++
++=head1 COPYRIGHT
++
++Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved.
  
 -d2i_X509(), d2i_X509_bio() and d2i_X509_fp() return a valid B<X509> structure
 -or B<NULL> if an error occurs. The error code that can be obtained by
@@ -108889,25 +118190,16 @@
 -with a valid X509 structure being passed in via B<px> then the object is not
 -freed in the event of error but may be in a potentially invalid or inconsistent
 -state.
-+d2i_TYPE(), d2i_TYPE_bio() and d2i_TYPE_fp() return a valid B<TYPE> structure
-+or B<NULL> if an error occurs.  If the "reuse" capability has been used with
-+a valid structure being passed in via B<a>, then the object is not freed in
-+the event of error but may be in a potentially invalid or inconsistent state.
- 
+-
 -i2d_X509() returns the number of bytes successfully encoded or a negative
 -value if an error occurs. The error code can be obtained by
 -L<ERR_get_error(3)>. 
-+i2d_TYPE() returns the number of bytes successfully encoded or a negative
-+value if an error occurs.
- 
+-
 -i2d_X509_bio() and i2d_X509_fp() return 1 for success and 0 if an error 
 -occurs The error code can be obtained by L<ERR_get_error(3)>. 
-+i2d_TYPE_bio() and i2d_TYPE_fp() return 1 for success and 0 if an error
-+occurs.
- 
+-
 -=head1 SEE ALSO
-+=head1 COPYRIGHT
- 
+-
 -L<ERR_get_error(3)>
 -L<X509_CRL_get0_by_serial(3)>,
 -L<X509_get0_signature(3)>,
@@ -108924,8 +118216,6 @@
 -L<X509_sign(3)>,
 -L<X509V3_get_d2i(3)>,
 -L<X509_verify_cert(3)>
-+Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
@@ -108934,7 +118224,7 @@
  =cut
 diff --git a/doc/crypto/d2i_X509_ALGOR.pod b/doc/crypto/d2i_X509_ALGOR.pod
 deleted file mode 100644
-index fb8a75d26e6b..000000000000
+index fb8a75d..0000000
 --- a/doc/crypto/d2i_X509_ALGOR.pod
 +++ /dev/null
 @@ -1,55 +0,0 @@
@@ -108995,7 +118285,7 @@
 -=cut
 diff --git a/doc/crypto/d2i_X509_CRL.pod b/doc/crypto/d2i_X509_CRL.pod
 deleted file mode 100644
-index 96f5a4deedfa..000000000000
+index 96f5a4d..0000000
 --- a/doc/crypto/d2i_X509_CRL.pod
 +++ /dev/null
 @@ -1,39 +0,0 @@
@@ -109040,7 +118330,7 @@
 -=cut
 diff --git a/doc/crypto/d2i_X509_NAME.pod b/doc/crypto/d2i_X509_NAME.pod
 deleted file mode 100644
-index d1d32dfcd87c..000000000000
+index d1d32df..0000000
 --- a/doc/crypto/d2i_X509_NAME.pod
 +++ /dev/null
 @@ -1,45 +0,0 @@
@@ -109091,7 +118381,7 @@
 -=cut
 diff --git a/doc/crypto/d2i_X509_REQ.pod b/doc/crypto/d2i_X509_REQ.pod
 deleted file mode 100644
-index 0d66da7d76c9..000000000000
+index 0d66da7..0000000
 --- a/doc/crypto/d2i_X509_REQ.pod
 +++ /dev/null
 @@ -1,39 +0,0 @@
@@ -109136,7 +118426,7 @@
 -=cut
 diff --git a/doc/crypto/d2i_X509_SIG.pod b/doc/crypto/d2i_X509_SIG.pod
 deleted file mode 100644
-index 08d08766ceda..000000000000
+index 08d0876..0000000
 --- a/doc/crypto/d2i_X509_SIG.pod
 +++ /dev/null
 @@ -1,36 +0,0 @@
@@ -109178,7 +118468,7 @@
 -=cut
 diff --git a/doc/crypto/des.pod b/doc/crypto/des.pod
 deleted file mode 100644
-index 19b6662f0f90..000000000000
+index 19b6662..0000000
 --- a/doc/crypto/des.pod
 +++ /dev/null
 @@ -1,320 +0,0 @@
@@ -109503,7 +118793,7 @@
 -
 -=cut
 diff --git a/doc/crypto/des_modes.pod b/doc/crypto/des_modes.pod
-index bd6a358aeb88..5107b77c8d46 100644
+index bd6a358..5107b77 100644
 --- a/doc/crypto/des_modes.pod
 +++ b/doc/crypto/des_modes.pod
 @@ -240,16 +240,24 @@ This text was been written in large parts by Eric Young in his original
@@ -109528,9 +118818,9 @@
  
 -=cut
 +=head1 COPYRIGHT
++
++Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
  
-+Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
 +Licensed under the OpenSSL license (the "License").  You may not use
 +this file except in compliance with the License.  You can obtain a copy
 +in the file LICENSE in the source distribution or at
@@ -109539,7 +118829,7 @@
 +=cut
 diff --git a/doc/crypto/dh.pod b/doc/crypto/dh.pod
 deleted file mode 100644
-index b1eaa480b7e2..000000000000
+index b1eaa48..0000000
 --- a/doc/crypto/dh.pod
 +++ /dev/null
 @@ -1,61 +0,0 @@
@@ -109606,7 +118896,7 @@
 -=cut
 diff --git a/doc/crypto/dsa.pod b/doc/crypto/dsa.pod
 deleted file mode 100644
-index 9cf1c49c87f2..000000000000
+index 9cf1c49..0000000
 --- a/doc/crypto/dsa.pod
 +++ /dev/null
 @@ -1,109 +0,0 @@
@@ -109721,7 +119011,7 @@
 -=cut
 diff --git a/doc/crypto/ec.pod b/doc/crypto/ec.pod
 deleted file mode 100644
-index d6f13816add2..000000000000
+index d6f1381..0000000
 --- a/doc/crypto/ec.pod
 +++ /dev/null
 @@ -1,198 +0,0 @@
@@ -109925,7 +119215,7 @@
 -=cut
 diff --git a/doc/crypto/ecdsa.pod b/doc/crypto/ecdsa.pod
 deleted file mode 100644
-index c2e786e89415..000000000000
+index c2e786e..0000000
 --- a/doc/crypto/ecdsa.pod
 +++ /dev/null
 @@ -1,189 +0,0 @@
@@ -110120,7 +119410,7 @@
 -=cut
 diff --git a/doc/crypto/engine.pod b/doc/crypto/engine.pod
 deleted file mode 100644
-index 8d1b3dfc31f0..000000000000
+index 8d1b3df..0000000
 --- a/doc/crypto/engine.pod
 +++ /dev/null
 @@ -1,566 +0,0 @@
@@ -110692,7 +119982,7 @@
 -=cut
 diff --git a/doc/crypto/err.pod b/doc/crypto/err.pod
 deleted file mode 100644
-index 33cb19d0cf43..000000000000
+index 33cb19d..0000000
 --- a/doc/crypto/err.pod
 +++ /dev/null
 @@ -1,199 +0,0 @@
@@ -110896,7 +120186,7 @@
 -
 -=cut
 diff --git a/doc/crypto/evp.pod b/doc/crypto/evp.pod
-index 09870b44326a..31f459084d00 100644
+index 09870b4..31f4590 100644
 --- a/doc/crypto/evp.pod
 +++ b/doc/crypto/evp.pod
 @@ -1,5 +1,7 @@
@@ -110951,7 +120241,7 @@
  =cut
 diff --git a/doc/crypto/hmac.pod b/doc/crypto/hmac.pod
 deleted file mode 100644
-index 57c274cbfe3e..000000000000
+index 57c274c..0000000
 --- a/doc/crypto/hmac.pod
 +++ /dev/null
 @@ -1,113 +0,0 @@
@@ -111069,7 +120359,7 @@
 -
 -=cut
 diff --git a/doc/crypto/i2d_CMS_bio_stream.pod b/doc/crypto/i2d_CMS_bio_stream.pod
-index 42b06c2b9f5a..ece7a4800eee 100644
+index 42b06c2..ece7a48 100644
 --- a/doc/crypto/i2d_CMS_bio_stream.pod
 +++ b/doc/crypto/i2d_CMS_bio_stream.pod
 @@ -2,7 +2,7 @@
@@ -111096,7 +120386,7 @@
 +
  =cut
 diff --git a/doc/crypto/i2d_PKCS7_bio_stream.pod b/doc/crypto/i2d_PKCS7_bio_stream.pod
-index 7a96cf9591a4..b42940a83cfa 100644
+index 7a96cf9..b42940a 100644
 --- a/doc/crypto/i2d_PKCS7_bio_stream.pod
 +++ b/doc/crypto/i2d_PKCS7_bio_stream.pod
 @@ -2,7 +2,7 @@
@@ -111124,7 +120414,7 @@
  =cut
 diff --git a/doc/crypto/i2d_re_X509_tbs.pod b/doc/crypto/i2d_re_X509_tbs.pod
 new file mode 100644
-index 000000000000..672c7ab5aec6
+index 0000000..672c7ab
 --- /dev/null
 +++ b/doc/crypto/i2d_re_X509_tbs.pod
 @@ -0,0 +1,79 @@
@@ -111209,7 +120499,7 @@
 +=cut
 diff --git a/doc/crypto/lh_stats.pod b/doc/crypto/lh_stats.pod
 deleted file mode 100644
-index fa7bd9db8674..000000000000
+index fa7bd9d..0000000
 --- a/doc/crypto/lh_stats.pod
 +++ /dev/null
 @@ -1,54 +0,0 @@
@@ -111269,7 +120559,7 @@
 -=cut
 diff --git a/doc/crypto/lhash.pod b/doc/crypto/lhash.pod
 deleted file mode 100644
-index 7d39a67bc03a..000000000000
+index 7d39a67..0000000
 --- a/doc/crypto/lhash.pod
 +++ /dev/null
 @@ -1,246 +0,0 @@
@@ -111521,7 +120811,7 @@
 -=cut
 diff --git a/doc/crypto/md5.pod b/doc/crypto/md5.pod
 deleted file mode 100644
-index a8c0718ea200..000000000000
+index a8c0718..0000000
 --- a/doc/crypto/md5.pod
 +++ /dev/null
 @@ -1,92 +0,0 @@
@@ -111619,7 +120909,7 @@
 -=cut
 diff --git a/doc/crypto/mdc2.pod b/doc/crypto/mdc2.pod
 deleted file mode 100644
-index f7cc4257fe8d..000000000000
+index f7cc425..0000000
 --- a/doc/crypto/mdc2.pod
 +++ /dev/null
 @@ -1,59 +0,0 @@
@@ -111684,7 +120974,7 @@
 -=cut
 diff --git a/doc/crypto/pem.pod b/doc/crypto/pem.pod
 deleted file mode 100644
-index 5687375a61bf..000000000000
+index 5687375..0000000
 --- a/doc/crypto/pem.pod
 +++ /dev/null
 @@ -1,458 +0,0 @@
@@ -112148,7 +121438,7 @@
 -L<EVP_EncryptInit(3)>, L<EVP_BytesToKey(3)>
 diff --git a/doc/crypto/rand.pod b/doc/crypto/rand.pod
 deleted file mode 100644
-index 46de8f775a17..000000000000
+index 46de8f7..0000000
 --- a/doc/crypto/rand.pod
 +++ /dev/null
 @@ -1,77 +0,0 @@
@@ -112231,7 +121521,7 @@
 -=cut
 diff --git a/doc/crypto/rc4.pod b/doc/crypto/rc4.pod
 deleted file mode 100644
-index af2a6092eda2..000000000000
+index af2a609..0000000
 --- a/doc/crypto/rc4.pod
 +++ /dev/null
 @@ -1,57 +0,0 @@
@@ -112294,7 +121584,7 @@
 -=cut
 diff --git a/doc/crypto/ripemd.pod b/doc/crypto/ripemd.pod
 deleted file mode 100644
-index c7a94cc9ab5e..000000000000
+index c7a94cc..0000000
 --- a/doc/crypto/ripemd.pod
 +++ /dev/null
 @@ -1,63 +0,0 @@
@@ -112363,7 +121653,7 @@
 -=cut
 diff --git a/doc/crypto/rsa.pod b/doc/crypto/rsa.pod
 deleted file mode 100644
-index a1341b8d7c1e..000000000000
+index a1341b8..0000000
 --- a/doc/crypto/rsa.pod
 +++ /dev/null
 @@ -1,103 +0,0 @@
@@ -112472,7 +121762,7 @@
 -=cut
 diff --git a/doc/crypto/sha.pod b/doc/crypto/sha.pod
 deleted file mode 100644
-index 26f1df3ceab0..000000000000
+index 26f1df3..0000000
 --- a/doc/crypto/sha.pod
 +++ /dev/null
 @@ -1,99 +0,0 @@
@@ -112577,7 +121867,7 @@
 -=cut
 diff --git a/doc/crypto/sk_X509_num.pod b/doc/crypto/sk_X509_num.pod
 deleted file mode 100644
-index eebdeb343de3..000000000000
+index eebdeb3..0000000
 --- a/doc/crypto/sk_X509_num.pod
 +++ /dev/null
 @@ -1,200 +0,0 @@
@@ -112783,7 +122073,7 @@
 -OpenSSL 1.1.0. Previous versions of OpenSSL implemented stacks as macros.
 diff --git a/doc/crypto/threads.pod b/doc/crypto/threads.pod
 deleted file mode 100644
-index 90c57098a469..000000000000
+index 90c5709..0000000
 --- a/doc/crypto/threads.pod
 +++ /dev/null
 @@ -1,82 +0,0 @@
@@ -112871,7 +122161,7 @@
 -=cut
 diff --git a/doc/crypto/ui.pod b/doc/crypto/ui.pod
 deleted file mode 100644
-index f03e9895613c..000000000000
+index f03e989..0000000
 --- a/doc/crypto/ui.pod
 +++ /dev/null
 @@ -1,186 +0,0 @@
@@ -113062,7 +122352,7 @@
 -
 -=cut
 diff --git a/doc/crypto/x509.pod b/doc/crypto/x509.pod
-index 863952552583..8319b1527078 100644
+index 8639525..8319b15 100644
 --- a/doc/crypto/x509.pod
 +++ b/doc/crypto/x509.pod
 @@ -1,5 +1,7 @@
@@ -113088,7 +122378,7 @@
 +
  =cut
 diff --git a/doc/ssl/DTLSv1_listen.pod b/doc/ssl/DTLSv1_listen.pod
-index 741669395dc8..a839d9fec191 100644
+index 7416693..a839d9f 100644
 --- a/doc/ssl/DTLSv1_listen.pod
 +++ b/doc/ssl/DTLSv1_listen.pod
 @@ -2,7 +2,7 @@
@@ -113115,7 +122405,7 @@
 +
  =cut
 diff --git a/doc/ssl/OPENSSL_init_ssl.pod b/doc/ssl/OPENSSL_init_ssl.pod
-index 110a28249060..b963e5e7a926 100644
+index 110a282..b963e5e 100644
 --- a/doc/ssl/OPENSSL_init_ssl.pod
 +++ b/doc/ssl/OPENSSL_init_ssl.pod
 @@ -72,4 +72,13 @@ L<OPENSSL_init_crypto(3)>
@@ -113133,10 +122423,23 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CIPHER_get_name.pod b/doc/ssl/SSL_CIPHER_get_name.pod
-index 296aa3264f30..643eea4b9478 100644
+index 296aa32..b7ee3c8 100644
 --- a/doc/ssl/SSL_CIPHER_get_name.pod
 +++ b/doc/ssl/SSL_CIPHER_get_name.pod
-@@ -112,4 +112,13 @@ rather than a fixed string, in OpenSSL 1.1
+@@ -2,7 +2,11 @@
+ 
+ =head1 NAME
+ 
+-SSL_CIPHER_get_name, SSL_CIPHER_get_bits, SSL_CIPHER_get_version, SSL_CIPHER_description - get SSL_CIPHER properties
++SSL_CIPHER_get_cipher_nid, SSL_CIPHER_get_digest_nid, SSL_CIPHER_get_kx_nid,
++SSL_CIPHER_get_auth_nid, SSL_CIPHER_is_aead,
++SSL_CIPHER_get_name, SSL_CIPHER_get_bits,
++SSL_CIPHER_get_version, SSL_CIPHER_description
++- get SSL_CIPHER properties
+ 
+ =head1 SYNOPSIS
+ 
+@@ -112,4 +116,13 @@ rather than a fixed string, in OpenSSL 1.1
  L<ssl(3)>, L<SSL_get_current_cipher(3)>,
  L<SSL_get_ciphers(3)>, L<ciphers(1)>
  
@@ -113151,7 +122454,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_COMP_add_compression_method.pod b/doc/ssl/SSL_COMP_add_compression_method.pod
-index fe10e1b45dea..c455832078be 100644
+index fe10e1b..c455832 100644
 --- a/doc/ssl/SSL_COMP_add_compression_method.pod
 +++ b/doc/ssl/SSL_COMP_add_compression_method.pod
 @@ -26,7 +26,7 @@ It cannot be set for specific SSL_CTX or SSL objects.
@@ -113178,7 +122481,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CONF_CTX_new.pod b/doc/ssl/SSL_CONF_CTX_new.pod
-index 329e3c78e4ec..79f0bbc7dd5f 100644
+index 329e3c7..79f0bbc 100644
 --- a/doc/ssl/SSL_CONF_CTX_new.pod
 +++ b/doc/ssl/SSL_CONF_CTX_new.pod
 @@ -38,4 +38,13 @@ L<SSL_CONF_cmd_argv(3)>
@@ -113196,7 +122499,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CONF_CTX_set1_prefix.pod b/doc/ssl/SSL_CONF_CTX_set1_prefix.pod
-index 5083a73876c1..da9e580244d5 100644
+index 5083a73..da9e580 100644
 --- a/doc/ssl/SSL_CONF_CTX_set1_prefix.pod
 +++ b/doc/ssl/SSL_CONF_CTX_set1_prefix.pod
 @@ -20,7 +20,7 @@ to B<prefix>. If B<prefix> is B<NULL> it is restored to the default value.
@@ -113223,7 +122526,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CONF_CTX_set_flags.pod b/doc/ssl/SSL_CONF_CTX_set_flags.pod
-index 10cfc4d17f64..efd8da3bc6b6 100644
+index 10cfc4d..efd8da3 100644
 --- a/doc/ssl/SSL_CONF_CTX_set_flags.pod
 +++ b/doc/ssl/SSL_CONF_CTX_set_flags.pod
 @@ -72,4 +72,13 @@ L<SSL_CONF_cmd_argv(3)>
@@ -113241,7 +122544,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CONF_CTX_set_ssl_ctx.pod b/doc/ssl/SSL_CONF_CTX_set_ssl_ctx.pod
-index e7ede4284aaf..7e4120f7ce57 100644
+index e7ede42..7e4120f 100644
 --- a/doc/ssl/SSL_CONF_CTX_set_ssl_ctx.pod
 +++ b/doc/ssl/SSL_CONF_CTX_set_ssl_ctx.pod
 @@ -44,4 +44,13 @@ L<SSL_CONF_cmd_argv(3)>
@@ -113259,11 +122562,19 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CONF_cmd.pod b/doc/ssl/SSL_CONF_cmd.pod
-index 17b8758605e2..083b33a1c535 100644
+index 17b8758..fb39f94 100644
 --- a/doc/ssl/SSL_CONF_cmd.pod
 +++ b/doc/ssl/SSL_CONF_cmd.pod
-@@ -465,7 +465,7 @@ pathname to an absolute pathname.
+@@ -2,6 +2,7 @@
  
+ =head1 NAME
+ 
++SSL_CONF_cmd_value_type, SSL_CONF_finish,
+ SSL_CONF_cmd - send configuration command
+ 
+ =head1 SYNOPSIS
+@@ -465,7 +466,7 @@ Set supported signature algorithms:
+ 
   SSL_CONF_cmd(ctx, "SignatureAlgorithms", "ECDSA+SHA256:RSA+SHA256:DSA+SHA256");
  
 -There are various ways to select the supported procotols.
@@ -113271,7 +122582,7 @@
  
  This set the minimum protocol version to TLSv1, and so disables SSLv3.
  This is the recommended way to disable protocols.
-@@ -550,4 +550,13 @@ B<SSL_CONF_TYPE_UNKNOWN>.
+@@ -550,4 +551,13 @@ B<SSL_CONF_TYPE_UNKNOWN>.
  
  B<MinProtocol> and B<MaxProtocol> where added in OpenSSL 1.1.0.
  
@@ -113286,7 +122597,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CONF_cmd_argv.pod b/doc/ssl/SSL_CONF_cmd_argv.pod
-index c06b44f98cca..15529a597377 100644
+index c06b44f..15529a5 100644
 --- a/doc/ssl/SSL_CONF_cmd_argv.pod
 +++ b/doc/ssl/SSL_CONF_cmd_argv.pod
 @@ -2,7 +2,7 @@
@@ -113313,7 +122624,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_add1_chain_cert.pod b/doc/ssl/SSL_CTX_add1_chain_cert.pod
-index 545b82ebcf08..1f0418b249c3 100644
+index 545b82e..1f0418b 100644
 --- a/doc/ssl/SSL_CTX_add1_chain_cert.pod
 +++ b/doc/ssl/SSL_CTX_add1_chain_cert.pod
 @@ -146,4 +146,13 @@ L<SSL_CTX_add_extra_chain_cert(3)>
@@ -113331,7 +122642,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_add_extra_chain_cert.pod b/doc/ssl/SSL_CTX_add_extra_chain_cert.pod
-index 63cf2b2a9695..e2783de9c770 100644
+index 63cf2b2..e2783de 100644
 --- a/doc/ssl/SSL_CTX_add_extra_chain_cert.pod
 +++ b/doc/ssl/SSL_CTX_add_extra_chain_cert.pod
 @@ -68,4 +68,13 @@ L<SSL_add1_chain_cert(3)>
@@ -113349,10 +122660,10 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_add_session.pod b/doc/ssl/SSL_CTX_add_session.pod
-index fb8cf6a9bf77..dbdd9f0c5419 100644
+index fb8cf6a..dbdd9f0 100644
 --- a/doc/ssl/SSL_CTX_add_session.pod
 +++ b/doc/ssl/SSL_CTX_add_session.pod
-@@ -59,7 +59,7 @@ over the sessions that can be resumed if desired.
+@@ -59,7 +59,7 @@ The following values are returned by all functions:
   session was not found in the cache.
  
  =item Z<>1
@@ -113376,7 +122687,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_config.pod b/doc/ssl/SSL_CTX_config.pod
-index 0cf93dd99a3c..802c4c359eb4 100644
+index 0cf93dd..802c4c3 100644
 --- a/doc/ssl/SSL_CTX_config.pod
 +++ b/doc/ssl/SSL_CTX_config.pod
 @@ -2,7 +2,7 @@
@@ -113403,7 +122714,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_ctrl.pod b/doc/ssl/SSL_CTX_ctrl.pod
-index b59d267bfcf7..e8386a59302f 100644
+index b59d267..e8386a5 100644
 --- a/doc/ssl/SSL_CTX_ctrl.pod
 +++ b/doc/ssl/SSL_CTX_ctrl.pod
 @@ -31,4 +31,13 @@ supplied via the B<cmd> parameter.
@@ -113421,7 +122732,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_dane_enable.pod b/doc/ssl/SSL_CTX_dane_enable.pod
-index 8463a3d093e7..cef109f3eb02 100644
+index 8463a3d..cef109f 100644
 --- a/doc/ssl/SSL_CTX_dane_enable.pod
 +++ b/doc/ssl/SSL_CTX_dane_enable.pod
 @@ -71,11 +71,17 @@ The arguments specify the fields of the TLSA record.
@@ -113544,7 +122855,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_flush_sessions.pod b/doc/ssl/SSL_CTX_flush_sessions.pod
-index 103e13fc6822..7639451c5dc4 100644
+index 103e13f..7639451 100644
 --- a/doc/ssl/SSL_CTX_flush_sessions.pod
 +++ b/doc/ssl/SSL_CTX_flush_sessions.pod
 @@ -26,7 +26,7 @@ As sessions will not be reused ones they are expired, they should be
@@ -113580,7 +122891,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_free.pod b/doc/ssl/SSL_CTX_free.pod
-index 70a63142a0c8..e5cc1aab7788 100644
+index 70a6314..e5cc1aa 100644
 --- a/doc/ssl/SSL_CTX_free.pod
 +++ b/doc/ssl/SSL_CTX_free.pod
 @@ -39,4 +39,13 @@ SSL_CTX_free() does not provide diagnostic information.
@@ -113598,7 +122909,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_get0_param.pod b/doc/ssl/SSL_CTX_get0_param.pod
-index 6fdc2bd073aa..6b9373745880 100644
+index 6fdc2bd..6b93737 100644
 --- a/doc/ssl/SSL_CTX_get0_param.pod
 +++ b/doc/ssl/SSL_CTX_get0_param.pod
 @@ -52,4 +52,13 @@ L<X509_VERIFY_PARAM_set_flags(3)>
@@ -113616,7 +122927,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_get_verify_mode.pod b/doc/ssl/SSL_CTX_get_verify_mode.pod
-index f75c2dae796e..bd100344d1fc 100644
+index f75c2da..bd10034 100644
 --- a/doc/ssl/SSL_CTX_get_verify_mode.pod
 +++ b/doc/ssl/SSL_CTX_get_verify_mode.pod
 @@ -47,4 +47,13 @@ See DESCRIPTION
@@ -113634,7 +122945,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_has_client_custom_ext.pod b/doc/ssl/SSL_CTX_has_client_custom_ext.pod
-index 3a1079d2b1cb..d9e9a066ea16 100644
+index 3a1079d..d9e9a06 100644
 --- a/doc/ssl/SSL_CTX_has_client_custom_ext.pod
 +++ b/doc/ssl/SSL_CTX_has_client_custom_ext.pod
 @@ -25,4 +25,13 @@ Returns 1 if a handler has been set, 0 otherwise.
@@ -113652,7 +122963,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_load_verify_locations.pod b/doc/ssl/SSL_CTX_load_verify_locations.pod
-index 53e119e7ae54..59d11e03ee4d 100644
+index 53e119e..59d11e0 100644
 --- a/doc/ssl/SSL_CTX_load_verify_locations.pod
 +++ b/doc/ssl/SSL_CTX_load_verify_locations.pod
 @@ -2,8 +2,9 @@
@@ -113698,10 +123009,28 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_new.pod b/doc/ssl/SSL_CTX_new.pod
-index f2cdc717ef4f..69b59bb5760b 100644
+index f2cdc71..e47083c 100644
 --- a/doc/ssl/SSL_CTX_new.pod
 +++ b/doc/ssl/SSL_CTX_new.pod
-@@ -17,7 +17,7 @@ functions
+@@ -2,14 +2,15 @@
+ 
+ =head1 NAME
+ 
++TLSv1_2_method, TLSv1_2_server_method, TLSv1_2_client_method,
+ SSL_CTX_new, SSL_CTX_up_ref, SSLv3_method, SSLv3_server_method,
+ SSLv3_client_method, TLSv1_method, TLSv1_server_method, TLSv1_client_method,
+ TLSv1_1_method, TLSv1_1_server_method, TLSv1_1_client_method, TLS_method,
+ TLS_server_method, TLS_client_method, SSLv23_method, SSLv23_server_method,
+ SSLv23_client_method, DTLS_method, DTLS_server_method, DTLS_client_method,
+ DTLSv1_method, DTLSv1_server_method, DTLSv1_client_method,
+-DTLSv1_2_method, DTLSv1_2_server_method, DTLSv1_2_client_method -
+-create a new SSL_CTX object as framework for TLS/SSL or DTLS enabled
++DTLSv1_2_method, DTLSv1_2_server_method, DTLSv1_2_client_method
++- create a new SSL_CTX object as framework for TLS/SSL or DTLS enabled
+ functions
+ 
+ =head1 SYNOPSIS
+@@ -17,7 +18,7 @@ functions
   #include <openssl/ssl.h>
  
   SSL_CTX *SSL_CTX_new(const SSL_METHOD *method);
@@ -113710,7 +123039,7 @@
  
   const SSL_METHOD *TLS_method(void);
   const SSL_METHOD *TLS_server_method(void);
-@@ -184,6 +184,8 @@ the reason.
+@@ -184,6 +185,8 @@ the reason.
  
  The return value points to an allocated SSL_CTX object.
  
@@ -113719,7 +123048,7 @@
  =back
  
  =head1 HISTORY
-@@ -203,4 +205,13 @@ All version-specific methods were deprecated in OpenSSL 1.1.0.
+@@ -203,4 +206,13 @@ All version-specific methods were deprecated in OpenSSL 1.1.0.
  L<SSL_CTX_set_options(3)>, L<SSL_CTX_free(3)>, L<SSL_accept(3)>,
  L<SSL_CTX_set_min_proto_version(3)>, L<ssl(3)>,  L<SSL_set_connect_state(3)>
  
@@ -113734,7 +123063,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_sess_number.pod b/doc/ssl/SSL_CTX_sess_number.pod
-index aa82c30a513e..049c04c44995 100644
+index aa82c30..049c04c 100644
 --- a/doc/ssl/SSL_CTX_sess_number.pod
 +++ b/doc/ssl/SSL_CTX_sess_number.pod
 @@ -73,4 +73,13 @@ L<ssl(3)>, L<SSL_set_session(3)>,
@@ -113752,7 +123081,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_sess_set_cache_size.pod b/doc/ssl/SSL_CTX_sess_set_cache_size.pod
-index 32396759c3e0..5aef10bd8eda 100644
+index 3239675..5aef10b 100644
 --- a/doc/ssl/SSL_CTX_sess_set_cache_size.pod
 +++ b/doc/ssl/SSL_CTX_sess_set_cache_size.pod
 @@ -50,4 +50,13 @@ L<SSL_CTX_set_session_cache_mode(3)>,
@@ -113770,7 +123099,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_sess_set_get_cb.pod b/doc/ssl/SSL_CTX_sess_set_get_cb.pod
-index b6e266bccb79..d2b0e0473716 100644
+index b6e266b..d2b0e04 100644
 --- a/doc/ssl/SSL_CTX_sess_set_get_cb.pod
 +++ b/doc/ssl/SSL_CTX_sess_set_get_cb.pod
 @@ -9,11 +9,11 @@ SSL_CTX_sess_set_new_cb, SSL_CTX_sess_set_remove_cb, SSL_CTX_sess_set_get_cb, SS
@@ -113812,7 +123141,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_sessions.pod b/doc/ssl/SSL_CTX_sessions.pod
-index 0099b31984c8..bc4a55e1a22a 100644
+index 0099b31..bc4a55e 100644
 --- a/doc/ssl/SSL_CTX_sessions.pod
 +++ b/doc/ssl/SSL_CTX_sessions.pod
 @@ -31,4 +31,13 @@ L<ssl(3)>, L<lhash(3)>,
@@ -113830,7 +123159,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set1_curves.pod b/doc/ssl/SSL_CTX_set1_curves.pod
-index 4b6d1af963a2..b0276c80f3a6 100644
+index 4b6d1af..b0276c8 100644
 --- a/doc/ssl/SSL_CTX_set1_curves.pod
 +++ b/doc/ssl/SSL_CTX_set1_curves.pod
 @@ -23,7 +23,7 @@ SSL_set1_curves_list, SSL_get1_curves, SSL_get_shared_curve - EC supported curve
@@ -113866,7 +123195,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set1_sigalgs.pod b/doc/ssl/SSL_CTX_set1_sigalgs.pod
-index a63076c874d0..e9073b99e348 100644
+index a63076c..e9073b9 100644
 --- a/doc/ssl/SSL_CTX_set1_sigalgs.pod
 +++ b/doc/ssl/SSL_CTX_set1_sigalgs.pod
 @@ -101,4 +101,13 @@ All these functions return 1 for success and 0 for failure.
@@ -113884,7 +123213,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set1_verify_cert_store.pod b/doc/ssl/SSL_CTX_set1_verify_cert_store.pod
-index 989e145464f4..bfe8b70af902 100644
+index 989e145..bfe8b70 100644
 --- a/doc/ssl/SSL_CTX_set1_verify_cert_store.pod
 +++ b/doc/ssl/SSL_CTX_set1_verify_cert_store.pod
 @@ -54,7 +54,7 @@ any client certificate chain.
@@ -113911,7 +123240,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_alpn_select_cb.pod b/doc/ssl/SSL_CTX_set_alpn_select_cb.pod
-index 1a3d92c03aac..4859b3c15faa 100644
+index 1a3d92c..4859b3c 100644
 --- a/doc/ssl/SSL_CTX_set_alpn_select_cb.pod
 +++ b/doc/ssl/SSL_CTX_set_alpn_select_cb.pod
 @@ -123,4 +123,13 @@ ALPN protocol not selected.
@@ -113929,7 +123258,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_cert_cb.pod b/doc/ssl/SSL_CTX_set_cert_cb.pod
-index 91529070425e..eaa7a4e3cbb3 100644
+index 9152907..eaa7a4e 100644
 --- a/doc/ssl/SSL_CTX_set_cert_cb.pod
 +++ b/doc/ssl/SSL_CTX_set_cert_cb.pod
 @@ -65,4 +65,13 @@ L<SSL_add1_chain_cert(3)>,
@@ -113947,7 +123276,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_cert_store.pod b/doc/ssl/SSL_CTX_set_cert_store.pod
-index 03a0937d5903..7f7a794bdf96 100644
+index 03a0937..7f7a794 100644
 --- a/doc/ssl/SSL_CTX_set_cert_store.pod
 +++ b/doc/ssl/SSL_CTX_set_cert_store.pod
 @@ -46,7 +46,7 @@ X509_STORE object and its handling becomes available.
@@ -113974,7 +123303,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_cert_verify_callback.pod b/doc/ssl/SSL_CTX_set_cert_verify_callback.pod
-index 6f6fe56e3a05..ca614d1a22b4 100644
+index 6f6fe56..ca614d1 100644
 --- a/doc/ssl/SSL_CTX_set_cert_verify_callback.pod
 +++ b/doc/ssl/SSL_CTX_set_cert_verify_callback.pod
 @@ -26,7 +26,7 @@ SSL_CTX_set_cert_verify_callback(), the supplied callback function is called
@@ -114019,7 +123348,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_cipher_list.pod b/doc/ssl/SSL_CTX_set_cipher_list.pod
-index 512ca8174798..4e66917bab8d 100644
+index 512ca81..4e66917 100644
 --- a/doc/ssl/SSL_CTX_set_cipher_list.pod
 +++ b/doc/ssl/SSL_CTX_set_cipher_list.pod
 @@ -62,4 +62,13 @@ L<SSL_CTX_use_certificate(3)>,
@@ -114037,7 +123366,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_client_CA_list.pod b/doc/ssl/SSL_CTX_set_client_CA_list.pod
-index cc05d77bc216..668fbbb906e8 100644
+index cc05d77..668fbbb 100644
 --- a/doc/ssl/SSL_CTX_set_client_CA_list.pod
 +++ b/doc/ssl/SSL_CTX_set_client_CA_list.pod
 @@ -9,7 +9,7 @@ client certificate
@@ -114073,7 +123402,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_client_cert_cb.pod b/doc/ssl/SSL_CTX_set_client_cert_cb.pod
-index 45cef7598ca2..aed7d4f0c105 100644
+index 45cef75..aed7d4f 100644
 --- a/doc/ssl/SSL_CTX_set_client_cert_cb.pod
 +++ b/doc/ssl/SSL_CTX_set_client_cert_cb.pod
 @@ -91,4 +91,13 @@ L<SSL_CTX_add_extra_chain_cert(3)>,
@@ -114091,28 +123420,16 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_ct_validation_callback.pod b/doc/ssl/SSL_CTX_set_ct_validation_callback.pod
-index ec51c75eb4d6..2ff33f78a7c6 100644
+index ec51c75..2ff33f7 100644
 --- a/doc/ssl/SSL_CTX_set_ct_validation_callback.pod
 +++ b/doc/ssl/SSL_CTX_set_ct_validation_callback.pod
 @@ -33,21 +33,29 @@ The behaviour of the callback is determined by the B<validation_mode> argument,
  which can be either of B<SSL_CT_VALIDATION_PERMISSIVE> or
  B<SSL_CT_VALIDATION_STRICT> as described below.
  
--If B<validation_mode> is equal to B<SSL_CT_VALIDATION_PERMISSIVE>, then the
--handshake continues regardless of the validation status of any SCTs.
--The application can inspect the validation status of the SCTs at handshake
--completion.
--Note that with session resumption there will not be any SCTs presented during
--the handshake.
--Therefore, in applications that delay SCT policy enforcement until after
--handshake completion, SCT checks should only be performed when the session is
--not reused.
--See L<SSL_session_reused(3)>.
--
- If B<validation_mode> is equal to B<SSL_CT_VALIDATION_STRICT>, then in a full
- TLS handshake with the verification mode set to B<SSL_VERIFY_PEER>, if the peer
- presents no valid SCTs the handshake will be aborted.
--See L<SSL_set_verify(3)>.
++If B<validation_mode> is equal to B<SSL_CT_VALIDATION_STRICT>, then in a full
++TLS handshake with the verification mode set to B<SSL_VERIFY_PEER>, if the peer
++presents no valid SCTs the handshake will be aborted.
 +If the verification mode is B<SSL_VERIFY_NONE>, the handshake will continue
 +despite lack of valid SCTs.
 +However, in that case if the verification status before the built-in callback
@@ -114123,14 +123440,25 @@
 +status is part of the saved session state.
 +See L<SSL_set_verify(3)>, <SSL_get_verify_result(3)>, L<SSL_session_reused(3)>.
 +
-+If B<validation_mode> is equal to B<SSL_CT_VALIDATION_PERMISSIVE>, then the
+ If B<validation_mode> is equal to B<SSL_CT_VALIDATION_PERMISSIVE>, then the
+-handshake continues regardless of the validation status of any SCTs.
+-The application can inspect the validation status of the SCTs at handshake
+-completion.
 +handshake continues, and the verification status is not modified, regardless of
 +the validation status of any SCTs.
 +The application can still inspect the validation status of the SCTs at
 +handshake completion.
-+Note that with session resumption there will not be any SCTs presented during
-+the handshake.
-+Therefore, in applications that delay SCT policy enforcement until after
+ Note that with session resumption there will not be any SCTs presented during
+ the handshake.
+ Therefore, in applications that delay SCT policy enforcement until after
+-handshake completion, SCT checks should only be performed when the session is
+-not reused.
+-See L<SSL_session_reused(3)>.
+-
+-If B<validation_mode> is equal to B<SSL_CT_VALIDATION_STRICT>, then in a full
+-TLS handshake with the verification mode set to B<SSL_VERIFY_PEER>, if the peer
+-presents no valid SCTs the handshake will be aborted.
+-See L<SSL_set_verify(3)>.
 +handshake completion, such delayed SCT checks should only be performed when the
 +session is not resumed.
  
@@ -114157,7 +123485,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_ctlog_list_file.pod b/doc/ssl/SSL_CTX_set_ctlog_list_file.pod
-index 9e5798f04cf6..737dea9d7cbe 100644
+index 9e5798f..737dea9 100644
 --- a/doc/ssl/SSL_CTX_set_ctlog_list_file.pod
 +++ b/doc/ssl/SSL_CTX_set_ctlog_list_file.pod
 @@ -51,4 +51,13 @@ the case of an error, the log list may have been partially loaded.
@@ -114175,97 +123503,250 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_custom_cli_ext.pod b/doc/ssl/SSL_CTX_set_custom_cli_ext.pod
-index 3fceef9258a3..f179f83d1af2 100644
+deleted file mode 100644
+index 3fceef9..0000000
 --- a/doc/ssl/SSL_CTX_set_custom_cli_ext.pod
-+++ b/doc/ssl/SSL_CTX_set_custom_cli_ext.pod
-@@ -9,41 +9,41 @@ SSL_CTX_add_client_custom_ext, SSL_CTX_add_server_custom_ext - custom TLS extens
-  #include <openssl/ssl.h>
- 
-  int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
++++ /dev/null
+@@ -1,133 +0,0 @@
+-=pod
+-
+-=head1 NAME
+-
+-SSL_CTX_add_client_custom_ext, SSL_CTX_add_server_custom_ext - custom TLS extension handling
+-
+-=head1 SYNOPSIS
+-
+- #include <openssl/ssl.h>
+-
+- int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
 -			           custom_ext_add_cb add_cb,
 -			           custom_ext_free_cb free_cb, void *add_arg,
 -			           custom_ext_parse_cb parse_cb,
 -				   void *parse_arg);
-+                                   custom_ext_add_cb add_cb,
-+                                   custom_ext_free_cb free_cb, void *add_arg,
-+                                   custom_ext_parse_cb parse_cb,
-+                                   void *parse_arg);
- 
-  int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
+-
+- int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
 -			           custom_ext_add_cb add_cb,
 -			           custom_ext_free_cb free_cb, void *add_arg,
 -			           custom_ext_parse_cb parse_cb,
 -				   void *parse_arg);
-+                                   custom_ext_add_cb add_cb,
-+                                   custom_ext_free_cb free_cb, void *add_arg,
-+                                   custom_ext_parse_cb parse_cb,
-+                                   void *parse_arg);
- 
-  int SSL_extension_supported(unsigned int ext_type);
- 
-  typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,
+-
+- int SSL_extension_supported(unsigned int ext_type);
+-
+- typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,
 -				  const unsigned char **out,
 -				  size_t *outlen, int *al,
 -				  void *add_arg);
-+                                  const unsigned char **out,
-+                                  size_t *outlen, int *al,
-+                                  void *add_arg);
- 
-  typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type,
+-
+- typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type,
 -				    const unsigned char *out,
 -				    void *add_arg);
-+                                    const unsigned char *out,
-+                                    void *add_arg);
- 
-  typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type,
+-
+- typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type,
 -				    const unsigned char *in,
 -				    size_t inlen, int *al,
 -				    void *parse_arg);
-+                                    const unsigned char *in,
-+                                    size_t inlen, int *al,
-+                                    void *parse_arg);
+-
+-
+-=head1 DESCRIPTION
+-
+-SSL_CTX_add_client_custom_ext() adds a custom extension for a TLS client 
+-with extension type B<ext_type> and callbacks B<add_cb>, B<free_cb> and
+-B<parse_cb>.
+-
+-SSL_CTX_add_server_custom_ext() adds a custom extension for a TLS server 
+-with extension type B<ext_type> and callbacks B<add_cb>, B<free_cb> and
+-B<parse_cb>.
+-
+-In both cases the extension type must not be handled by OpenSSL internally
+-or an error occurs.
+-
+-SSL_extension_supported() returns 1 if the extension B<ext_type> is handled
+-internally by OpenSSL and 0 otherwise.
+-
+-=head1 EXTENSION CALLBACKS
+-
+-The callback B<add_cb> is called to send custom extension data to be 
+-included in ClientHello for TLS clients or ServerHello for servers. The
+-B<ext_type> parameter is set to the extension type which will be added and
+-B<add_arg> to the value set when the extension handler was added.
+-
+-If the application wishes to include the extension B<ext_type> it should
+-set B<*out> to the extension data, set B<*outlen> to the length of the
+-extension data and return 1.
+-
+-If the B<add_cb> does not wish to include the extension it must return 0.
+-
+-If B<add_cb> returns -1 a fatal handshake error occurs using the TLS
+-alert value specified in B<*al>.
+-
+-For clients (but not servers) if B<add_cb> is set to NULL a zero length
+-extension is added for B<ext_type>.
+-
+-For clients every registered B<add_cb> is always called to see if the
+-application wishes to add an extension to ClientHello.
+-
+-For servers every registered B<add_cb> is called once if and only if the
+-corresponding extension was received in ClientHello to see if the application
+-wishes to add the extension to ServerHello. That is, if no corresponding extension
+-was received in ClientHello then B<add_cb> will not be called.
+-
+-If an extension is added (that is B<add_cb> returns 1) B<free_cb> is called
+-(if it is set) with the value of B<out> set by the add callback. It can be
+-used to free up any dynamic extension data set by B<add_cb>. Since B<out> is
+-constant (to permit use of constant data in B<add_cb>) applications may need to
+-cast away const to free the data.
+-
+-The callback B<parse_cb> receives data for TLS extensions. For TLS clients
+-the extension data will come from ServerHello and for TLS servers it will
+-come from ClientHello.
+-
+-The extension data consists of B<inlen> bytes in the buffer B<in> for the
+-extension B<extension_type>.
+-
+-If the B<parse_cb> considers the extension data acceptable it must return
+-1. If it returns 0 or a negative value a fatal handshake error occurs
+-using the TLS alert value specified in B<*al>.
+-
+-The buffer B<in> is a temporary internal buffer which will not be valid after
+-the callback returns.
+-
+-=head1 NOTES
+-
+-The B<add_arg> and B<parse_arg> parameters can be set to arbitrary values
+-which will be passed to the corresponding callbacks. They can, for example,
+-be used to store the extension data received in a convenient structure or
+-pass the extension data to be added or freed when adding extensions.
+-
+-The B<ext_type> parameter corresponds to the B<extension_type> field of
+-RFC5246 et al. It is B<not> a NID.
+-
+-If the same custom extension type is received multiple times a fatal
+-B<decode_error> alert is sent and the handshake aborts. If a custom extension
+-is received in ServerHello which was not sent in ClientHello a fatal
+-B<unsupported_extension> alert is sent and the handshake is aborted. The
+-ServerHello B<add_cb> callback is only called if the corresponding extension
+-was received in ClientHello. This is compliant with the TLS specifications.
+-This behaviour ensures that each callback is called at most once and that
+-an application can never send unsolicited extensions.
+-
+-=head1 RETURN VALUES
+-
+-SSL_CTX_add_client_custom_ext() and SSL_CTX_add_server_custom_ext() return 1 for
+-success and 0 for failure. A failure can occur if an attempt is made to
+-add the same B<ext_type> more than once, if an attempt is made to use an
+-extension type handled internally by OpenSSL or if an internal error occurs
+-(for example a memory allocation failure).
+-
+-SSL_extension_supported() returns 1 if the extension B<ext_type> is handled
+-internally by OpenSSL and 0 otherwise.
+-
+-=cut
+diff --git a/doc/ssl/SSL_CTX_set_default_passwd_cb.pod b/doc/ssl/SSL_CTX_set_default_passwd_cb.pod
+index 45a4311..fb44807 100644
+--- a/doc/ssl/SSL_CTX_set_default_passwd_cb.pod
++++ b/doc/ssl/SSL_CTX_set_default_passwd_cb.pod
+@@ -2,6 +2,7 @@
  
+ =head1 NAME
  
++SSL_CTX_passwd_cb,
+ SSL_CTX_set_default_passwd_cb, SSL_CTX_set_default_passwd_cb_userdata,
+ SSL_CTX_get_default_passwd_cb, SSL_CTX_get_default_passwd_cb_userdata,
+ SSL_set_default_passwd_cb, SSL_set_default_passwd_cb_userdata,
+@@ -12,31 +13,31 @@ get passwd callback for encrypted PEM file handling
+ 
+  #include <openssl/ssl.h>
+ 
+- void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
++ void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, SSL_CTX_passwd_cb *cb);
+  void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
+- pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx);
++ SSL_CTX_passwd_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx);
+  void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx);
+ 
+- void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb);
++ void SSL_set_default_passwd_cb(SSL *s, SSL_CTX_passwd_cb *cb);
+  void SSL_set_default_passwd_cb_userdata(SSL *s, void *u);
+- pem_password_cb *SSL_get_default_passwd_cb(SSL *s);
++ SSL_CTX_passwd_cb *SSL_get_default_passwd_cb(SSL *s);
+  void *SSL_get_default_passwd_cb_userdata(SSL *s);
+ 
+- int pem_passwd_cb(char *buf, int size, int rwflag, void *userdata);
++ typedef int (*SSL_CTX_passwd_cb)(char *buf, int size, int rwflag, void *u);
+ 
  =head1 DESCRIPTION
  
--SSL_CTX_add_client_custom_ext() adds a custom extension for a TLS client 
-+SSL_CTX_add_client_custom_ext() adds a custom extension for a TLS client
- with extension type B<ext_type> and callbacks B<add_cb>, B<free_cb> and
- B<parse_cb>.
+ SSL_CTX_set_default_passwd_cb() sets the default password callback called
+ when loading/storing a PEM certificate with encryption.
  
--SSL_CTX_add_server_custom_ext() adds a custom extension for a TLS server 
-+SSL_CTX_add_server_custom_ext() adds a custom extension for a TLS server
- with extension type B<ext_type> and callbacks B<add_cb>, B<free_cb> and
- B<parse_cb>.
+-SSL_CTX_set_default_passwd_cb_userdata() sets a pointer to B<userdata> which
+-will be provided to the password callback on invocation.
++SSL_CTX_set_default_passwd_cb_userdata() sets a pointer to userdata, B<u>,
++which will be provided to the password callback on invocation.
  
-@@ -55,7 +55,7 @@ internally by OpenSSL and 0 otherwise.
+ SSL_CTX_get_default_passwd_cb() returns a function pointer to the password
+ callback currently set in B<ctx>. If no callback was explicitly set, the
+ NULL pointer is returned.
  
- =head1 EXTENSION CALLBACKS
+-SSL_CTX_get_default_passwd_cb_userdata() returns a pointer to B<userdata>
++SSL_CTX_get_default_passwd_cb_userdata() returns a pointer to the userdata
+ currently set in B<ctx>. If no userdata was explicitly set, the NULL pointer
+ is returned.
  
--The callback B<add_cb> is called to send custom extension data to be 
-+The callback B<add_cb> is called to send custom extension data to be
- included in ClientHello for TLS clients or ServerHello for servers. The
- B<ext_type> parameter is set to the extension type which will be added and
- B<add_arg> to the value set when the extension handler was added.
-@@ -130,4 +130,13 @@ extension type handled internally by OpenSSL or if an internal error occurs
- SSL_extension_supported() returns 1 if the extension B<ext_type> is handled
- internally by OpenSSL and 0 otherwise.
+@@ -44,9 +45,9 @@ SSL_set_default_passwd_cb(), SSL_set_default_passwd_cb_userdata(),
+ SSL_get_default_passwd_cb() and SSL_get_default_passwd_cb_userdata() perform
+ the same function as their SSL_CTX counterparts, but using an SSL object.
  
-+=head1 COPYRIGHT
-+
-+Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
-+
-+Licensed under the OpenSSL license (the "License").  You may not use
-+this file except in compliance with the License.  You can obtain a copy
-+in the file LICENSE in the source distribution or at
-+L<https://www.openssl.org/source/license.html>.
-+
- =cut
-diff --git a/doc/ssl/SSL_CTX_set_default_passwd_cb.pod b/doc/ssl/SSL_CTX_set_default_passwd_cb.pod
-index 45a43112cbe6..2d407bbc39a2 100644
---- a/doc/ssl/SSL_CTX_set_default_passwd_cb.pod
-+++ b/doc/ssl/SSL_CTX_set_default_passwd_cb.pod
-@@ -101,4 +101,13 @@ first added to OpenSSL 1.1.0
+-The pem_passwd_cb(), which must be provided by the application, hands back the
+-password to be used during decryption. On invocation a pointer to B<userdata>
+-is provided. The pem_passwd_cb must write the password into the provided buffer
++The password callback, which must be provided by the application, hands back the
++password to be used during decryption. On invocation a pointer to userdata
++is provided. The function must store the password into the provided buffer
+ B<buf> which is of size B<size>. The actual length of the password must
+ be returned to the calling function. B<rwflag> indicates whether the
+ callback is used for reading/decryption (rwflag=0) or writing/encryption
+@@ -57,13 +58,13 @@ callback is used for reading/decryption (rwflag=0) or writing/encryption
+ When loading or storing private keys, a password might be supplied to
+ protect the private key. The way this password can be supplied may depend
+ on the application. If only one private key is handled, it can be practical
+-to have pem_passwd_cb() handle the password dialog interactively. If several
++to have the callback handle the password dialog interactively. If several
+ keys have to be handled, it can be practical to ask for the password once,
+ then keep it in memory and use it several times. In the last case, the
+-password could be stored into the B<userdata> storage and the
+-pem_passwd_cb() only returns the password already stored.
++password could be stored into the userdata storage and the
++callback only returns the password already stored.
+ 
+-When asking for the password interactively, pem_passwd_cb() can use
++When asking for the password interactively, the callback can use
+ B<rwflag> to check, whether an item shall be encrypted (rwflag=1).
+ In this case the password dialog may ask for the same password twice
+ for comparison in order to catch typos, that would make decryption
+@@ -78,16 +79,16 @@ These functions do not provide diagnostic information.
+ 
+ =head1 EXAMPLES
+ 
+-The following example returns the password provided as B<userdata> to the
++The following example returns the password provided as userdata to the
+ calling function. The password is considered to be a '\0' terminated
+ string. If the password does not fit into the buffer, the password is
+ truncated.
+ 
+- int pem_passwd_cb(char *buf, int size, int rwflag, void *password)
++ int my_cb(char *buf, int size, int rwflag, void *u)
+  {
+-  strncpy(buf, (char *)(password), size);
+-  buf[size - 1] = '\0';
+-  return(strlen(buf));
++      strncpy(buf, (char *)u, size);
++      buf[size - 1] = '\0';
++      return strlen(buf);
+  }
+ 
+ =head1 HISTORY
+@@ -101,4 +102,13 @@ first added to OpenSSL 1.1.0
  L<ssl(3)>,
  L<SSL_CTX_use_certificate(3)>
  
@@ -114280,7 +123761,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_generate_session_id.pod b/doc/ssl/SSL_CTX_set_generate_session_id.pod
-index e8459c9e010c..95b7e9e1cad3 100644
+index e8459c9..95b7e9e 100644
 --- a/doc/ssl/SSL_CTX_set_generate_session_id.pod
 +++ b/doc/ssl/SSL_CTX_set_generate_session_id.pod
 @@ -14,7 +14,7 @@ SSL_CTX_set_generate_session_id, SSL_set_generate_session_id, SSL_has_matching_s
@@ -114307,7 +123788,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_info_callback.pod b/doc/ssl/SSL_CTX_set_info_callback.pod
-index 978ce265daf7..b0e845daa235 100644
+index 978ce26..b0e845d 100644
 --- a/doc/ssl/SSL_CTX_set_info_callback.pod
 +++ b/doc/ssl/SSL_CTX_set_info_callback.pod
 @@ -110,44 +110,53 @@ The following example callback function prints state strings, information
@@ -114317,20 +123798,13 @@
 -	{
 -	const char *str;
 -	int w;
-+        {
-+        const char *str;
-+        int w;
- 
+-
 -	w=where& ~SSL_ST_MASK;
-+        w=where& ~SSL_ST_MASK;
- 
+-
 -	if (w & SSL_ST_CONNECT) str="SSL_connect";
 -	else if (w & SSL_ST_ACCEPT) str="SSL_accept";
 -	else str="undefined";
-+        if (w & SSL_ST_CONNECT) str="SSL_connect";
-+        else if (w & SSL_ST_ACCEPT) str="SSL_accept";
-+        else str="undefined";
- 
+-
 -	if (where & SSL_CB_LOOP)
 -		{
 -		BIO_printf(bio_err,"%s:%s\n",str,SSL_state_string_long(s));
@@ -114355,6 +123829,16 @@
 -			}
 -		}
 -	}
++        {
++        const char *str;
++        int w;
++
++        w=where& ~SSL_ST_MASK;
++
++        if (w & SSL_ST_CONNECT) str="SSL_connect";
++        else if (w & SSL_ST_ACCEPT) str="SSL_accept";
++        else str="undefined";
++
 +        if (where & SSL_CB_LOOP)
 +                {
 +                BIO_printf(bio_err,"%s:%s\n",str,SSL_state_string_long(s));
@@ -114396,7 +123880,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_max_cert_list.pod b/doc/ssl/SSL_CTX_set_max_cert_list.pod
-index 080400c58339..482751e73c45 100644
+index 080400c..482751e 100644
 --- a/doc/ssl/SSL_CTX_set_max_cert_list.pod
 +++ b/doc/ssl/SSL_CTX_set_max_cert_list.pod
 @@ -70,4 +70,13 @@ set value.
@@ -114414,7 +123898,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_min_proto_version.pod b/doc/ssl/SSL_CTX_set_min_proto_version.pod
-index 535ae83e7a42..8878514968e5 100644
+index 535ae83..8878514 100644
 --- a/doc/ssl/SSL_CTX_set_min_proto_version.pod
 +++ b/doc/ssl/SSL_CTX_set_min_proto_version.pod
 @@ -17,7 +17,7 @@ and maximum supported protocol version
@@ -114441,7 +123925,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_mode.pod b/doc/ssl/SSL_CTX_set_mode.pod
-index d31c18c8dbd6..1b3e783ad6b8 100644
+index d31c18c..1b3e783 100644
 --- a/doc/ssl/SSL_CTX_set_mode.pod
 +++ b/doc/ssl/SSL_CTX_set_mode.pod
 @@ -102,4 +102,13 @@ L<ssl(3)>, L<SSL_read(3)>, L<SSL_write(3)>, L<SSL_get_error(3)>
@@ -114459,7 +123943,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_msg_callback.pod b/doc/ssl/SSL_CTX_set_msg_callback.pod
-index 8f092da80bbd..9546e75124ae 100644
+index 8f092da..9546e75 100644
 --- a/doc/ssl/SSL_CTX_set_msg_callback.pod
 +++ b/doc/ssl/SSL_CTX_set_msg_callback.pod
 @@ -91,4 +91,13 @@ I<version> will be B<SSL3_VERSION>.
@@ -114477,7 +123961,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_options.pod b/doc/ssl/SSL_CTX_set_options.pod
-index c1325681e2f2..635b470e1245 100644
+index c132568..635b470 100644
 --- a/doc/ssl/SSL_CTX_set_options.pod
 +++ b/doc/ssl/SSL_CTX_set_options.pod
 @@ -280,4 +280,13 @@ L<dhparam(1)>
@@ -114495,7 +123979,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_psk_client_callback.pod b/doc/ssl/SSL_CTX_set_psk_client_callback.pod
-index b7f574bddf6d..a4175081c5b6 100644
+index b7f574b..a417508 100644
 --- a/doc/ssl/SSL_CTX_set_psk_client_callback.pod
 +++ b/doc/ssl/SSL_CTX_set_psk_client_callback.pod
 @@ -1,34 +1,5 @@
@@ -114570,7 +124054,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_quiet_shutdown.pod b/doc/ssl/SSL_CTX_set_quiet_shutdown.pod
-index 25bb66486732..d39d747ce741 100644
+index 25bb664..d39d747 100644
 --- a/doc/ssl/SSL_CTX_set_quiet_shutdown.pod
 +++ b/doc/ssl/SSL_CTX_set_quiet_shutdown.pod
 @@ -60,4 +60,13 @@ L<ssl(3)>, L<SSL_shutdown(3)>,
@@ -114588,11 +124072,19 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_read_ahead.pod b/doc/ssl/SSL_CTX_set_read_ahead.pod
-index 771d59d6047f..e70db3c2a963 100644
+index 771d59d..d2b584d 100644
 --- a/doc/ssl/SSL_CTX_set_read_ahead.pod
 +++ b/doc/ssl/SSL_CTX_set_read_ahead.pod
-@@ -50,4 +50,13 @@ and non zero otherwise.
+@@ -43,11 +43,20 @@ B<read_ahead> can impact the behaviour of the SSL_pending() function
  
+ =head1 RETURN VALUES
+ 
+-SSL_get_read_ahead and SSL_CTX_get_read_ahead return 0 if reading ahead is off,
++SSL_get_read_ahead() and SSL_CTX_get_read_ahead() return 0 if reading ahead is off,
+ and non zero otherwise.
+ 
+ =head1 SEE ALSO
+ 
  L<ssl(3)>, L<SSL_pending(3)>
  
 +=head1 COPYRIGHT
@@ -114606,7 +124098,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_security_level.pod b/doc/ssl/SSL_CTX_set_security_level.pod
-index 2b5647245756..577b3937296e 100644
+index 2b56472..577b393 100644
 --- a/doc/ssl/SSL_CTX_set_security_level.pod
 +++ b/doc/ssl/SSL_CTX_set_security_level.pod
 @@ -15,12 +15,12 @@ SSL_CTX_set_security_level, SSL_set_security_level, SSL_CTX_get_security_level,
@@ -114658,7 +124150,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_session_cache_mode.pod b/doc/ssl/SSL_CTX_set_session_cache_mode.pod
-index 4be9e243bd60..a2e82664d094 100644
+index 4be9e24..a2e8266 100644
 --- a/doc/ssl/SSL_CTX_set_session_cache_mode.pod
 +++ b/doc/ssl/SSL_CTX_set_session_cache_mode.pod
 @@ -26,7 +26,7 @@ SSL_CTX object is being maintained, the sessions are unique for each SSL_CTX
@@ -114685,7 +124177,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_session_id_context.pod b/doc/ssl/SSL_CTX_set_session_id_context.pod
-index 712b5180b81b..a873b0389efd 100644
+index 712b518..a873b03 100644
 --- a/doc/ssl/SSL_CTX_set_session_id_context.pod
 +++ b/doc/ssl/SSL_CTX_set_session_id_context.pod
 @@ -80,4 +80,13 @@ The operation succeeded.
@@ -114703,7 +124195,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_split_send_fragment.pod b/doc/ssl/SSL_CTX_set_split_send_fragment.pod
-index 9e7ab63b9a49..a1f42e2eaf96 100644
+index 9e7ab63..a1f42e2 100644
 --- a/doc/ssl/SSL_CTX_set_split_send_fragment.pod
 +++ b/doc/ssl/SSL_CTX_set_split_send_fragment.pod
 @@ -58,7 +58,7 @@ explained further below. OpenSSL will only every use more than one pipeline if
@@ -114730,7 +124222,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_ssl_version.pod b/doc/ssl/SSL_CTX_set_ssl_version.pod
-index 5bbc65ef10f3..22c0370b7545 100644
+index 5bbc65e..22c0370 100644
 --- a/doc/ssl/SSL_CTX_set_ssl_version.pod
 +++ b/doc/ssl/SSL_CTX_set_ssl_version.pod
 @@ -58,4 +58,13 @@ L<SSL_CTX_new(3)>, L<SSL_new(3)>,
@@ -114748,7 +124240,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_timeout.pod b/doc/ssl/SSL_CTX_set_timeout.pod
-index eb9f40460de4..470efdfc29e4 100644
+index eb9f404..470efdf 100644
 --- a/doc/ssl/SSL_CTX_set_timeout.pod
 +++ b/doc/ssl/SSL_CTX_set_timeout.pod
 @@ -56,4 +56,13 @@ L<SSL_SESSION_get_time(3)>,
@@ -114766,7 +124258,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_tlsext_status_cb.pod b/doc/ssl/SSL_CTX_set_tlsext_status_cb.pod
-index b8147baecf98..5c58b2389570 100644
+index b8147ba..5c58b23 100644
 --- a/doc/ssl/SSL_CTX_set_tlsext_status_cb.pod
 +++ b/doc/ssl/SSL_CTX_set_tlsext_status_cb.pod
 @@ -2,9 +2,15 @@
@@ -114873,7 +124365,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_tlsext_ticket_key_cb.pod b/doc/ssl/SSL_CTX_set_tlsext_ticket_key_cb.pod
-index 3502c1cd2945..5308cccdd8a8 100644
+index 3502c1c..5308ccc 100644
 --- a/doc/ssl/SSL_CTX_set_tlsext_ticket_key_cb.pod
 +++ b/doc/ssl/SSL_CTX_set_tlsext_ticket_key_cb.pod
 @@ -10,13 +10,13 @@ SSL_CTX_set_tlsext_ticket_key_cb - set a callback for session ticket processing
@@ -114914,7 +124406,7 @@
  with I<enc> set to 0 indicating that the I<cb> function should retrieve a set
  of parameters. In this case I<name> and I<iv> have already been parsed out of
  the session ticket. The OpenSSL library expects that the I<name> will be used
-@@ -76,7 +76,7 @@ The return value of the I<cb> function is used by OpenSSL to determine what
+@@ -76,7 +76,7 @@ further processing will occur. The following return values have meaning:
  
  =item Z<>2
  
@@ -114938,7 +124430,7 @@
  the SSL/TLS session will continue by negotiating a set of cryptographic
  parameters or using the alternate SSL/TLS resumption mechanism, session ids.
  
-@@ -133,7 +133,7 @@ enable an attacker to obtain the session keys.
+@@ -133,7 +133,7 @@ Reference Implementation:
            if (RAND_bytes(iv, EVP_MAX_IV_LENGTH) ) {
                return -1; /* insufficient random */
            }
@@ -114947,7 +124439,7 @@
            key = currentkey(); /* something that you need to implement */
            if ( !key ) {
                /* current key doesn't exist or isn't valid */
-@@ -146,19 +146,19 @@ enable an attacker to obtain the session keys.
+@@ -146,19 +146,19 @@ Reference Implementation:
                }
            }
            memcpy(key_name, key->name, 16);
@@ -114972,7 +124464,7 @@
            HMAC_Init_ex(&hctx, key->hmac_key, 16, EVP_sha256(), NULL);
            EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key->aes_key, iv );
  
-@@ -167,7 +167,7 @@ enable an attacker to obtain the session keys.
+@@ -167,7 +167,7 @@ Reference Implementation:
                return 2;
            }
            return 1;
@@ -114996,7 +124488,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod b/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod
-index 57bf211075e5..b71450ac7878 100644
+index 57bf211..b71450a 100644
 --- a/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod
 +++ b/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod
 @@ -126,4 +126,13 @@ L<SSL_CTX_set_tmp_rsa_callback(3)>,
@@ -115014,7 +124506,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_set_verify.pod b/doc/ssl/SSL_CTX_set_verify.pod
-index d60bb6a3eda8..1afd548f48be 100644
+index d60bb6a..1afd548 100644
 --- a/doc/ssl/SSL_CTX_set_verify.pod
 +++ b/doc/ssl/SSL_CTX_set_verify.pod
 @@ -208,7 +208,7 @@ L<SSL_get_ex_data_X509_STORE_CTX_idx(3)>).
@@ -115053,11 +124545,30 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_use_certificate.pod b/doc/ssl/SSL_CTX_use_certificate.pod
-index 13bb27702d24..3fd23a410ee1 100644
+index 13bb277..748175b 100644
 --- a/doc/ssl/SSL_CTX_use_certificate.pod
 +++ b/doc/ssl/SSL_CTX_use_certificate.pod
-@@ -20,7 +20,7 @@ SSL_CTX_use_certificate, SSL_CTX_use_certificate_ASN1, SSL_CTX_use_certificate_f
+@@ -2,7 +2,17 @@
  
+ =head1 NAME
+ 
+-SSL_CTX_use_certificate, SSL_CTX_use_certificate_ASN1, SSL_CTX_use_certificate_file, SSL_use_certificate, SSL_use_certificate_ASN1, SSL_use_certificate_file, SSL_CTX_use_certificate_chain_file, SSL_CTX_use_PrivateKey, SSL_CTX_use_PrivateKey_ASN1, SSL_CTX_use_PrivateKey_file, SSL_CTX_use_RSAPrivateKey, SSL_CTX_use_RSAPrivateKey_ASN1, SSL_CTX_use_RSAPrivateKey_file, SSL_use_PrivateKey_file, SSL_use_PrivateKey_ASN1, SSL_use_PrivateKey, SSL_use_RSAPrivateKey, SSL_use_RSAPrivateKey_ASN1, SSL_use_RSAPrivateKey_file, SSL_CTX_check_private_key, SSL_check_private_key - load certificate and key data
++SSL_CTX_use_certificate, SSL_CTX_use_certificate_ASN1,
++SSL_CTX_use_certificate_file, SSL_use_certificate, SSL_use_certificate_ASN1,
++SSL_use_certificate_file, SSL_CTX_use_certificate_chain_file,
++SSL_use_certificate_chain_file,
++SSL_CTX_use_PrivateKey, SSL_CTX_use_PrivateKey_ASN1,
++SSL_CTX_use_PrivateKey_file, SSL_CTX_use_RSAPrivateKey,
++SSL_CTX_use_RSAPrivateKey_ASN1, SSL_CTX_use_RSAPrivateKey_file,
++SSL_use_PrivateKey_file, SSL_use_PrivateKey_ASN1, SSL_use_PrivateKey,
++SSL_use_RSAPrivateKey, SSL_use_RSAPrivateKey_ASN1,
++SSL_use_RSAPrivateKey_file, SSL_CTX_check_private_key, SSL_check_private_key
++- load certificate and key data
+ 
+ =head1 SYNOPSIS
+ 
+@@ -20,7 +30,7 @@ SSL_CTX_use_certificate, SSL_CTX_use_certificate_ASN1, SSL_CTX_use_certificate_f
+ 
   int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
   int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, unsigned char *d,
 -				 long len);
@@ -115065,7 +124576,7 @@
   int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);
   int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
   int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len);
-@@ -67,12 +67,12 @@ SSL_use_certificate_file() loads the certificate from B<file> into B<ssl>.
+@@ -67,12 +77,12 @@ SSL_use_certificate_file() loads the certificate from B<file> into B<ssl>.
  See the NOTES section on why SSL_CTX_use_certificate_chain_file()
  should be preferred.
  
@@ -115080,7 +124591,7 @@
  
  SSL_CTX_use_PrivateKey() adds B<pkey> as private key to B<ctx>.
  SSL_CTX_use_RSAPrivateKey() adds the private key B<rsa> of type RSA
-@@ -82,7 +82,7 @@ If a certificate has already been set and the private does not belong
+@@ -82,7 +92,7 @@ If a certificate has already been set and the private does not belong
  to the certificate an error is returned. To change a certificate, private
  key pair the new certificate needs to be set with SSL_use_certificate()
  or SSL_CTX_use_certificate() before setting the private key with
@@ -115089,7 +124600,7 @@
  
  
  SSL_CTX_use_PrivateKey_ASN1() adds the private key of type B<pk>
-@@ -109,14 +109,14 @@ the same check for B<ssl>. If no key/certificate was explicitly added for
+@@ -109,14 +119,14 @@ the same check for B<ssl>. If no key/certificate was explicitly added for
  this B<ssl>, the last item added into B<ctx> will be checked.
  
  =head1 NOTES
@@ -115106,7 +124617,7 @@
  SSL_CTX_use_certificate_chain_file() is only applicable to PEM formatting.
  Files of type SSL_FILETYPE_PEM can contain more than one item.
  
-@@ -124,7 +124,7 @@ SSL_CTX_use_certificate_chain_file() adds the first certificate found
+@@ -124,7 +134,7 @@ SSL_CTX_use_certificate_chain_file() adds the first certificate found
  in the file to the certificate store. The other certificates are added
  to the store of chain certificates using L<SSL_CTX_add1_chain_cert(3)>. Note: versions of OpenSSL before 1.0.2 only had a single
  certificate chain store for all certificate types, OpenSSL 1.0.2 and later
@@ -115115,7 +124626,7 @@
  should be used instead of the SSL_CTX_use_certificate_file() function in order
  to allow the use of complete certificate chains even when no trusted CA
  storage is used or when the CA issuing the certificate shall not be added to
-@@ -158,4 +158,13 @@ L<SSL_CTX_set_client_CA_list(3)>,
+@@ -158,4 +168,13 @@ L<SSL_CTX_set_client_CA_list(3)>,
  L<SSL_CTX_set_client_cert_cb(3)>,
  L<SSL_CTX_add_extra_chain_cert(3)>
  
@@ -115130,7 +124641,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_use_psk_identity_hint.pod b/doc/ssl/SSL_CTX_use_psk_identity_hint.pod
-index 12db0daa199f..753074a720bd 100644
+index 12db0da..753074a 100644
 --- a/doc/ssl/SSL_CTX_use_psk_identity_hint.pod
 +++ b/doc/ssl/SSL_CTX_use_psk_identity_hint.pod
 @@ -1,41 +1,11 @@
@@ -115208,7 +124719,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_CTX_use_serverinfo.pod b/doc/ssl/SSL_CTX_use_serverinfo.pod
-index 318e052e2b25..bd496ff8c5fb 100644
+index 318e052..bd496ff 100644
 --- a/doc/ssl/SSL_CTX_use_serverinfo.pod
 +++ b/doc/ssl/SSL_CTX_use_serverinfo.pod
 @@ -20,8 +20,8 @@ A "serverinfo" extension is returned in response to an empty ClientHello
@@ -115254,7 +124765,7 @@
  
  =cut
 diff --git a/doc/ssl/SSL_SESSION_free.pod b/doc/ssl/SSL_SESSION_free.pod
-index 5791da1b5980..1906510e4168 100644
+index 5791da1..1906510 100644
 --- a/doc/ssl/SSL_SESSION_free.pod
 +++ b/doc/ssl/SSL_SESSION_free.pod
 @@ -53,4 +53,13 @@ L<SSL_CTX_set_session_cache_mode(3)>,
@@ -115271,14 +124782,39 @@
 +L<https://www.openssl.org/source/license.html>.
 +
  =cut
-diff --git a/doc/ssl/SSL_SESSION_get_hostname.pod b/doc/ssl/SSL_SESSION_get_hostname.pod
-index 8b739e30a2d8..6fb12bec373b 100644
---- a/doc/ssl/SSL_SESSION_get_hostname.pod
-+++ b/doc/ssl/SSL_SESSION_get_hostname.pod
-@@ -25,4 +25,13 @@ L<d2i_SSL_SESSION(3)>,
- L<SSL_SESSION_get_time(3)>,
- L<SSL_SESSION_free(3)>
- 
+diff --git a/doc/ssl/SSL_SESSION_get0_hostname.pod b/doc/ssl/SSL_SESSION_get0_hostname.pod
+new file mode 100644
+index 0000000..6fb12be
+--- /dev/null
++++ b/doc/ssl/SSL_SESSION_get0_hostname.pod
+@@ -0,0 +1,37 @@
++=pod
++
++=head1 NAME
++
++SSL_SESSION_get0_hostname - retrieve the SNI hostname associated with a session
++
++=head1 SYNOPSIS
++
++ #include <openssl/ssl.h>
++
++ const char *SSL_SESSION_get0_hostname(const SSL_SESSSION *s);
++
++=head1 DESCRIPTION
++
++SSL_SESSION_get0_hostname() retrieves the SNI value that was sent by the
++client when the session was created, or NULL if no value was sent.
++
++The value returned is a pointer to memory maintained within B<s> and
++should not be free'd.
++
++=head1 SEE ALSO
++
++L<ssl(3)>,
++L<d2i_SSL_SESSION(3)>,
++L<SSL_SESSION_get_time(3)>,
++L<SSL_SESSION_free(3)>
++
 +=head1 COPYRIGHT
 +
 +Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
@@ -115288,10 +124824,44 @@
 +in the file LICENSE in the source distribution or at
 +L<https://www.openssl.org/source/license.html>.
 +
- =cut
++=cut
+diff --git a/doc/ssl/SSL_SESSION_get_hostname.pod b/doc/ssl/SSL_SESSION_get_hostname.pod
+deleted file mode 100644
+index 8b739e3..0000000
+--- a/doc/ssl/SSL_SESSION_get_hostname.pod
++++ /dev/null
+@@ -1,28 +0,0 @@
+-=pod
+-
+-=head1 NAME
+-
+-SSL_SESSION_get0_hostname - retrieve the SNI hostname associated with a session
+-
+-=head1 SYNOPSIS
+-
+- #include <openssl/ssl.h>
+-
+- const char *SSL_SESSION_get0_hostname(const SSL_SESSSION *s);
+-
+-=head1 DESCRIPTION
+-
+-SSL_SESSION_get0_hostname() retrieves the SNI value that was sent by the
+-client when the session was created, or NULL if no value was sent.
+-
+-The value returned is a pointer to memory maintained within B<s> and
+-should not be free'd.
+-
+-=head1 SEE ALSO
+-
+-L<ssl(3)>,
+-L<d2i_SSL_SESSION(3)>,
+-L<SSL_SESSION_get_time(3)>,
+-L<SSL_SESSION_free(3)>
+-
+-=cut
 diff --git a/doc/ssl/SSL_SESSION_get_protocol_version.pod b/doc/ssl/SSL_SESSION_get_protocol_version.pod
 new file mode 100644
-index 000000000000..a033fdd9bbde
+index 0000000..a033fdd
 --- /dev/null
 +++ b/doc/ssl/SSL_SESSION_get_protocol_version.pod
 @@ -0,0 +1,44 @@
@@ -115340,11 +124910,23 @@
 +
 +=cut
 diff --git a/doc/ssl/SSL_SESSION_get_time.pod b/doc/ssl/SSL_SESSION_get_time.pod
-index dbbf7bf6ae21..1dd25da990e4 100644
+index dbbf7bf..d92a8ef 100644
 --- a/doc/ssl/SSL_SESSION_get_time.pod
 +++ b/doc/ssl/SSL_SESSION_get_time.pod
-@@ -52,7 +52,7 @@ valid values.
+@@ -2,7 +2,10 @@
  
+ =head1 NAME
+ 
+-SSL_SESSION_get_time, SSL_SESSION_set_time, SSL_SESSION_get_timeout, SSL_SESSION_set_timeout - retrieve and manipulate session time and timeout settings
++SSL_SESSION_get_time, SSL_SESSION_set_time, SSL_SESSION_get_timeout,
++SSL_SESSION_set_timeout
++SSL_get_time, SSL_set_time, SSL_get_timeout, SSL_set_timeout,
++- retrieve and manipulate session time and timeout settings
+ 
+ =head1 SYNOPSIS
+ 
+@@ -52,7 +55,7 @@ valid values.
+ 
  SSL_SESSION_set_time() and SSL_SESSION_set_timeout() return 1 on success.
  
 -If any of the function is passed the NULL pointer for the session B<s>, 
@@ -115352,7 +124934,7 @@
  0 is returned.
  
  =head1 SEE ALSO
-@@ -61,4 +61,13 @@ L<ssl(3)>,
+@@ -61,4 +64,13 @@ L<ssl(3)>,
  L<SSL_CTX_set_timeout(3)>,
  L<SSL_get_default_timeout(3)>
  
@@ -115367,10 +124949,30 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_SESSION_has_ticket.pod b/doc/ssl/SSL_SESSION_has_ticket.pod
-index 92d261f8bcc6..58f8e080e9ec 100644
+index 92d261f..2982c19 100644
 --- a/doc/ssl/SSL_SESSION_has_ticket.pod
 +++ b/doc/ssl/SSL_SESSION_has_ticket.pod
-@@ -39,4 +39,13 @@ L<SSL_SESSION_free(3)>
+@@ -2,7 +2,9 @@
+ 
+ =head1 NAME
+ 
+-SSL_SESSION_has_ticket, SSL_SESSION_get_ticket_lifetime_hint, SSL_SESSION_get_ticket - get details about the ticket associated with a session
++SSL_SESSION_get0_ticket,
++SSL_SESSION_has_ticket, SSL_SESSION_get_ticket_lifetime_hint,
++- get details about the ticket associated with a session
+ 
+ =head1 SYNOPSIS
+ 
+@@ -11,7 +13,7 @@ SSL_SESSION_has_ticket, SSL_SESSION_get_ticket_lifetime_hint, SSL_SESSION_get_ti
+  int SSL_SESSION_has_ticket(const SSL_SESSION *s);
+  unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s);
+  void SSL_SESSION_get0_ticket(const SSL_SESSION *s, unsigned char **tick,
+-                            size_t *len);
++                              size_t *len);
+ 
+ =head1 DESCRIPTION
+ 
+@@ -39,4 +41,13 @@ L<SSL_SESSION_free(3)>
  SSL_SESSION_has_ticket, SSL_SESSION_get_ticket_lifetime_hint and
  SSL_SESSION_get0_ticket were added in OpenSSL 1.1.0.
  
@@ -115385,7 +124987,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_accept.pod b/doc/ssl/SSL_accept.pod
-index a827fb5991aa..3248cacf1e8a 100644
+index a827fb5..3248cac 100644
 --- a/doc/ssl/SSL_accept.pod
 +++ b/doc/ssl/SSL_accept.pod
 @@ -18,7 +18,7 @@ B<ssl> by setting an underlying B<BIO>.
@@ -115412,7 +125014,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_alert_type_string.pod b/doc/ssl/SSL_alert_type_string.pod
-index c61b61bfdc6c..6e2768e8ff43 100644
+index c61b61b..6e2768e 100644
 --- a/doc/ssl/SSL_alert_type_string.pod
 +++ b/doc/ssl/SSL_alert_type_string.pod
 @@ -217,7 +217,7 @@ point. This message is always a warning.
@@ -115439,7 +125041,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_check_chain.pod b/doc/ssl/SSL_check_chain.pod
-index da6d8ab8e4dc..8691994229a0 100644
+index da6d8ab..8691994 100644
 --- a/doc/ssl/SSL_check_chain.pod
 +++ b/doc/ssl/SSL_check_chain.pod
 @@ -82,4 +82,13 @@ for earlier versions of TLS or DTLS.
@@ -115457,7 +125059,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_clear.pod b/doc/ssl/SSL_clear.pod
-index 9a760b56d253..ed0ad60cbea5 100644
+index 9a760b5..ed0ad60 100644
 --- a/doc/ssl/SSL_clear.pod
 +++ b/doc/ssl/SSL_clear.pod
 @@ -72,4 +72,13 @@ L<SSL_shutdown(3)>, L<SSL_set_shutdown(3)>,
@@ -115475,7 +125077,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_connect.pod b/doc/ssl/SSL_connect.pod
-index 8101d4de9120..df198f9b2e7c 100644
+index 8101d4d..df198f9 100644
 --- a/doc/ssl/SSL_connect.pod
 +++ b/doc/ssl/SSL_connect.pod
 @@ -18,7 +18,7 @@ underlying B<BIO>.
@@ -115502,7 +125104,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_do_handshake.pod b/doc/ssl/SSL_do_handshake.pod
-index 01b71ae45d0f..ffb71cc0b8c7 100644
+index 01b71ae..ffb71cc 100644
 --- a/doc/ssl/SSL_do_handshake.pod
 +++ b/doc/ssl/SSL_do_handshake.pod
 @@ -69,4 +69,13 @@ L<SSL_get_error(3)>, L<SSL_connect(3)>,
@@ -115519,8 +125121,158 @@
 +L<https://www.openssl.org/source/license.html>.
 +
  =cut
+diff --git a/doc/ssl/SSL_extension_supported.pod b/doc/ssl/SSL_extension_supported.pod
+new file mode 100644
+index 0000000..a56087e
+--- /dev/null
++++ b/doc/ssl/SSL_extension_supported.pod
+@@ -0,0 +1,144 @@
++=pod
++
++=head1 NAME
++
++SSL_extension_supported,
++SSL_CTX_add_client_custom_ext, SSL_CTX_add_server_custom_ext
++- custom TLS extension handling
++
++=head1 SYNOPSIS
++
++ #include <openssl/ssl.h>
++
++ int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
++                                   custom_ext_add_cb add_cb,
++                                   custom_ext_free_cb free_cb, void *add_arg,
++                                   custom_ext_parse_cb parse_cb,
++                                   void *parse_arg);
++
++ int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
++                                   custom_ext_add_cb add_cb,
++                                   custom_ext_free_cb free_cb, void *add_arg,
++                                   custom_ext_parse_cb parse_cb,
++                                   void *parse_arg);
++
++ int SSL_extension_supported(unsigned int ext_type);
++
++ typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,
++                                  const unsigned char **out,
++                                  size_t *outlen, int *al,
++                                  void *add_arg);
++
++ typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type,
++                                    const unsigned char *out,
++                                    void *add_arg);
++
++ typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type,
++                                    const unsigned char *in,
++                                    size_t inlen, int *al,
++                                    void *parse_arg);
++
++
++=head1 DESCRIPTION
++
++SSL_CTX_add_client_custom_ext() adds a custom extension for a TLS client
++with extension type B<ext_type> and callbacks B<add_cb>, B<free_cb> and
++B<parse_cb>.
++
++SSL_CTX_add_server_custom_ext() adds a custom extension for a TLS server
++with extension type B<ext_type> and callbacks B<add_cb>, B<free_cb> and
++B<parse_cb>.
++
++In both cases the extension type must not be handled by OpenSSL internally
++or an error occurs.
++
++SSL_extension_supported() returns 1 if the extension B<ext_type> is handled
++internally by OpenSSL and 0 otherwise.
++
++=head1 EXTENSION CALLBACKS
++
++The callback B<add_cb> is called to send custom extension data to be
++included in ClientHello for TLS clients or ServerHello for servers. The
++B<ext_type> parameter is set to the extension type which will be added and
++B<add_arg> to the value set when the extension handler was added.
++
++If the application wishes to include the extension B<ext_type> it should
++set B<*out> to the extension data, set B<*outlen> to the length of the
++extension data and return 1.
++
++If the B<add_cb> does not wish to include the extension it must return 0.
++
++If B<add_cb> returns -1 a fatal handshake error occurs using the TLS
++alert value specified in B<*al>.
++
++For clients (but not servers) if B<add_cb> is set to NULL a zero length
++extension is added for B<ext_type>.
++
++For clients every registered B<add_cb> is always called to see if the
++application wishes to add an extension to ClientHello.
++
++For servers every registered B<add_cb> is called once if and only if the
++corresponding extension was received in ClientHello to see if the application
++wishes to add the extension to ServerHello. That is, if no corresponding extension
++was received in ClientHello then B<add_cb> will not be called.
++
++If an extension is added (that is B<add_cb> returns 1) B<free_cb> is called
++(if it is set) with the value of B<out> set by the add callback. It can be
++used to free up any dynamic extension data set by B<add_cb>. Since B<out> is
++constant (to permit use of constant data in B<add_cb>) applications may need to
++cast away const to free the data.
++
++The callback B<parse_cb> receives data for TLS extensions. For TLS clients
++the extension data will come from ServerHello and for TLS servers it will
++come from ClientHello.
++
++The extension data consists of B<inlen> bytes in the buffer B<in> for the
++extension B<extension_type>.
++
++If the B<parse_cb> considers the extension data acceptable it must return
++1. If it returns 0 or a negative value a fatal handshake error occurs
++using the TLS alert value specified in B<*al>.
++
++The buffer B<in> is a temporary internal buffer which will not be valid after
++the callback returns.
++
++=head1 NOTES
++
++The B<add_arg> and B<parse_arg> parameters can be set to arbitrary values
++which will be passed to the corresponding callbacks. They can, for example,
++be used to store the extension data received in a convenient structure or
++pass the extension data to be added or freed when adding extensions.
++
++The B<ext_type> parameter corresponds to the B<extension_type> field of
++RFC5246 et al. It is B<not> a NID.
++
++If the same custom extension type is received multiple times a fatal
++B<decode_error> alert is sent and the handshake aborts. If a custom extension
++is received in ServerHello which was not sent in ClientHello a fatal
++B<unsupported_extension> alert is sent and the handshake is aborted. The
++ServerHello B<add_cb> callback is only called if the corresponding extension
++was received in ClientHello. This is compliant with the TLS specifications.
++This behaviour ensures that each callback is called at most once and that
++an application can never send unsolicited extensions.
++
++=head1 RETURN VALUES
++
++SSL_CTX_add_client_custom_ext() and SSL_CTX_add_server_custom_ext() return 1 for
++success and 0 for failure. A failure can occur if an attempt is made to
++add the same B<ext_type> more than once, if an attempt is made to use an
++extension type handled internally by OpenSSL or if an internal error occurs
++(for example a memory allocation failure).
++
++SSL_extension_supported() returns 1 if the extension B<ext_type> is handled
++internally by OpenSSL and 0 otherwise.
++
++=head1 COPYRIGHT
++
++Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
++
++Licensed under the OpenSSL license (the "License").  You may not use
++this file except in compliance with the License.  You can obtain a copy
++in the file LICENSE in the source distribution or at
++L<https://www.openssl.org/source/license.html>.
++
++=cut
 diff --git a/doc/ssl/SSL_free.pod b/doc/ssl/SSL_free.pod
-index 27154430385e..eb69a162bc7a 100644
+index 2715443..eb69a16 100644
 --- a/doc/ssl/SSL_free.pod
 +++ b/doc/ssl/SSL_free.pod
 @@ -42,4 +42,13 @@ L<SSL_new(3)>, L<SSL_clear(3)>,
@@ -115538,7 +125290,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get0_peer_scts.pod b/doc/ssl/SSL_get0_peer_scts.pod
-index f14ba17a19ac..05d39fee8c01 100644
+index f14ba17..05d39fe 100644
 --- a/doc/ssl/SSL_get0_peer_scts.pod
 +++ b/doc/ssl/SSL_get0_peer_scts.pod
 @@ -33,4 +33,13 @@ SSL_get0_peer_scts() returns a list of SCTs found, or NULL if an error occurs.
@@ -115556,7 +125308,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_SSL_CTX.pod b/doc/ssl/SSL_get_SSL_CTX.pod
-index ed3a3b208b0f..98b9bc67eb84 100644
+index ed3a3b2..98b9bc6 100644
 --- a/doc/ssl/SSL_get_SSL_CTX.pod
 +++ b/doc/ssl/SSL_get_SSL_CTX.pod
 @@ -23,4 +23,13 @@ The pointer to the SSL_CTX object is returned.
@@ -115574,7 +125326,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_all_async_fds.pod b/doc/ssl/SSL_get_all_async_fds.pod
-index a5064e213d06..deb81e1fdf23 100644
+index a5064e2..deb81e1 100644
 --- a/doc/ssl/SSL_get_all_async_fds.pod
 +++ b/doc/ssl/SSL_get_all_async_fds.pod
 @@ -62,4 +62,13 @@ L<SSL_get_error(3)>, L<SSL_CTX_set_mode(3)>
@@ -115592,10 +125344,21 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_ciphers.pod b/doc/ssl/SSL_get_ciphers.pod
-index a01739261152..190e679dd0a6 100644
+index a017392..cc55095 100644
 --- a/doc/ssl/SSL_get_ciphers.pod
 +++ b/doc/ssl/SSL_get_ciphers.pod
-@@ -70,4 +70,13 @@ See DESCRIPTION
+@@ -2,7 +2,9 @@
+ 
+ =head1 NAME
+ 
+-SSL_get_ciphers, SSL_CTX_get_ciphers, SSL_get_cipher_list - get list of available SSL_CIPHERs
++SSL_get1_supported_ciphers, SSL_get_client_ciphers,
++SSL_get_ciphers, SSL_CTX_get_ciphers, SSL_get_cipher_list
++- get list of available SSL_CIPHERs
+ 
+ =head1 SYNOPSIS
+ 
+@@ -70,4 +72,13 @@ See DESCRIPTION
  L<ssl(3)>, L<SSL_CTX_set_cipher_list(3)>,
  L<SSL_CIPHER_get_name(3)>
  
@@ -115610,7 +125373,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_client_CA_list.pod b/doc/ssl/SSL_get_client_CA_list.pod
-index 62be122e16c0..b6092fe32df8 100644
+index 62be122..b6092fe 100644
 --- a/doc/ssl/SSL_get_client_CA_list.pod
 +++ b/doc/ssl/SSL_get_client_CA_list.pod
 @@ -9,7 +9,7 @@ SSL_get_client_CA_list, SSL_CTX_get_client_CA_list - get list of client CAs
@@ -115637,7 +125400,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_client_random.pod b/doc/ssl/SSL_get_client_random.pod
-index 3db5a26b11ac..46a2aa35ea08 100644
+index 3db5a26..46a2aa3 100644
 --- a/doc/ssl/SSL_get_client_random.pod
 +++ b/doc/ssl/SSL_get_client_random.pod
 @@ -41,7 +41,7 @@ details.
@@ -115664,7 +125427,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_current_cipher.pod b/doc/ssl/SSL_get_current_cipher.pod
-index 9151203e5763..0fdf60f6c186 100644
+index 9151203..0fdf60f 100644
 --- a/doc/ssl/SSL_get_current_cipher.pod
 +++ b/doc/ssl/SSL_get_current_cipher.pod
 @@ -27,7 +27,7 @@ the B<ssl> object.
@@ -115691,7 +125454,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_default_timeout.pod b/doc/ssl/SSL_get_default_timeout.pod
-index 9bde2227e0e7..875d38a9e6d7 100644
+index 9bde222..875d38a 100644
 --- a/doc/ssl/SSL_get_default_timeout.pod
 +++ b/doc/ssl/SSL_get_default_timeout.pod
 @@ -38,4 +38,13 @@ L<SSL_SESSION_get_time(3)>,
@@ -115709,7 +125472,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_error.pod b/doc/ssl/SSL_get_error.pod
-index 271f84966661..ddd72f706516 100644
+index 271f849..ddd72f7 100644
 --- a/doc/ssl/SSL_get_error.pod
 +++ b/doc/ssl/SSL_get_error.pod
 @@ -95,9 +95,19 @@ using L<SSL_CTX_set_mode(3)> or L<SSL_set_mode(3)> and an asynchronous capable
@@ -115750,7 +125513,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_extms_support.pod b/doc/ssl/SSL_get_extms_support.pod
-index ecfd090c8059..ba4de3a5602e 100644
+index ecfd090..ba4de3a 100644
 --- a/doc/ssl/SSL_get_extms_support.pod
 +++ b/doc/ssl/SSL_get_extms_support.pod
 @@ -28,4 +28,13 @@ was used.
@@ -115768,7 +125531,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_fd.pod b/doc/ssl/SSL_get_fd.pod
-index 8895747cee9e..cd5b6ecf4f10 100644
+index 8895747..cd5b6ec 100644
 --- a/doc/ssl/SSL_get_fd.pod
 +++ b/doc/ssl/SSL_get_fd.pod
 @@ -41,4 +41,13 @@ The file descriptor linked to B<ssl>.
@@ -115786,7 +125549,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_peer_cert_chain.pod b/doc/ssl/SSL_get_peer_cert_chain.pod
-index 1320bcbcff46..2e4f1e4185e0 100644
+index 1320bcb..2e4f1e4 100644
 --- a/doc/ssl/SSL_get_peer_cert_chain.pod
 +++ b/doc/ssl/SSL_get_peer_cert_chain.pod
 @@ -65,4 +65,13 @@ The return value points to the certificate chain presented by the peer.
@@ -115804,7 +125567,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_peer_certificate.pod b/doc/ssl/SSL_get_peer_certificate.pod
-index c605a7c6f66c..57ed2723ebcc 100644
+index c605a7c..57ed272 100644
 --- a/doc/ssl/SSL_get_peer_certificate.pod
 +++ b/doc/ssl/SSL_get_peer_certificate.pod
 @@ -52,4 +52,13 @@ The return value points to the certificate presented by the peer.
@@ -115822,7 +125585,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_psk_identity.pod b/doc/ssl/SSL_get_psk_identity.pod
-index fe6291649cee..d330eee52da4 100644
+index fe62916..d330eee 100644
 --- a/doc/ssl/SSL_get_psk_identity.pod
 +++ b/doc/ssl/SSL_get_psk_identity.pod
 @@ -1,39 +1,9 @@
@@ -115882,7 +125645,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_rbio.pod b/doc/ssl/SSL_get_rbio.pod
-index 4e91ce0643e7..5ac4ca274090 100644
+index 4e91ce0..5ac4ca2 100644
 --- a/doc/ssl/SSL_get_rbio.pod
 +++ b/doc/ssl/SSL_get_rbio.pod
 @@ -37,4 +37,13 @@ The BIO linked to B<ssl>.
@@ -115900,7 +125663,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_session.pod b/doc/ssl/SSL_get_session.pod
-index d8aa705ae6d8..99936ad76542 100644
+index d8aa705..99936ad 100644
 --- a/doc/ssl/SSL_get_session.pod
 +++ b/doc/ssl/SSL_get_session.pod
 @@ -70,4 +70,13 @@ L<ssl(3)>, L<SSL_free(3)>,
@@ -115918,7 +125681,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_shared_sigalgs.pod b/doc/ssl/SSL_get_shared_sigalgs.pod
-index ad305e6b5c78..6a70e9023ba0 100644
+index ad305e6..6a70e90 100644
 --- a/doc/ssl/SSL_get_shared_sigalgs.pod
 +++ b/doc/ssl/SSL_get_shared_sigalgs.pod
 @@ -65,7 +65,7 @@ The NIDs are OpenSSL equivalents. For example if the peer sent sha256(4) and
@@ -115945,7 +125708,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_verify_result.pod b/doc/ssl/SSL_get_verify_result.pod
-index 8b25eb2fcbf9..3b8b6578468f 100644
+index 8b25eb2..3b8b657 100644
 --- a/doc/ssl/SSL_get_verify_result.pod
 +++ b/doc/ssl/SSL_get_verify_result.pod
 @@ -54,4 +54,13 @@ L<ssl(3)>, L<SSL_set_verify_result(3)>,
@@ -115963,7 +125726,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_get_version.pod b/doc/ssl/SSL_get_version.pod
-index e0c7034f2e3a..23b6497d4f3b 100644
+index e0c7034..23b6497 100644
 --- a/doc/ssl/SSL_get_version.pod
 +++ b/doc/ssl/SSL_get_version.pod
 @@ -2,7 +2,7 @@
@@ -116014,7 +125777,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_library_init.pod b/doc/ssl/SSL_library_init.pod
-index c872858ca348..57b65d5d560e 100644
+index c872858..57b65d5 100644
 --- a/doc/ssl/SSL_library_init.pod
 +++ b/doc/ssl/SSL_library_init.pod
 @@ -21,7 +21,7 @@ OpenSSL_add_ssl_algorithms() is a synonym for SSL_library_init().
@@ -116041,10 +125804,10 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_load_client_CA_file.pod b/doc/ssl/SSL_load_client_CA_file.pod
-index f9da0c21ab9b..cc6a19cdea90 100644
+index f9da0c2..cc6a19c 100644
 --- a/doc/ssl/SSL_load_client_CA_file.pod
 +++ b/doc/ssl/SSL_load_client_CA_file.pod
-@@ -30,7 +30,7 @@ it is not limited to CA certificates.
+@@ -30,7 +30,7 @@ Load names of CAs from file and use it as a client CA list:
   SSL_CTX *ctx;
   STACK_OF(X509_NAME) *cert_names;
  
@@ -116068,7 +125831,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_new.pod b/doc/ssl/SSL_new.pod
-index f0e07951e377..a5a3ff98f74d 100644
+index f0e0795..a5a3ff9 100644
 --- a/doc/ssl/SSL_new.pod
 +++ b/doc/ssl/SSL_new.pod
 @@ -9,7 +9,7 @@ SSL_new, SSL_up_ref - create a new SSL structure for a connection
@@ -116104,7 +125867,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_pending.pod b/doc/ssl/SSL_pending.pod
-index d247fa33f9be..f6ed5652a138 100644
+index d247fa3..f6ed565 100644
 --- a/doc/ssl/SSL_pending.pod
 +++ b/doc/ssl/SSL_pending.pod
 @@ -56,4 +56,13 @@ L<SSL_CTX_set_split_send_fragment(3)>, L<ssl(3)>
@@ -116122,7 +125885,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_read.pod b/doc/ssl/SSL_read.pod
-index e0a9bd47bcee..8dff2448d004 100644
+index e0a9bd4..8dff244 100644
 --- a/doc/ssl/SSL_read.pod
 +++ b/doc/ssl/SSL_read.pod
 @@ -2,7 +2,7 @@
@@ -116167,7 +125930,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_rstate_string.pod b/doc/ssl/SSL_rstate_string.pod
-index 7309483ce936..7775913beba8 100644
+index 7309483..7775913 100644
 --- a/doc/ssl/SSL_rstate_string.pod
 +++ b/doc/ssl/SSL_rstate_string.pod
 @@ -56,4 +56,13 @@ The read state is unknown. This should never happen.
@@ -116185,7 +125948,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_session_reused.pod b/doc/ssl/SSL_session_reused.pod
-index 4a738fa3200a..eda66b2bc89d 100644
+index 4a738fa..eda66b2 100644
 --- a/doc/ssl/SSL_session_reused.pod
 +++ b/doc/ssl/SSL_session_reused.pod
 @@ -42,4 +42,13 @@ A session was reused.
@@ -116203,7 +125966,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_set1_host.pod b/doc/ssl/SSL_set1_host.pod
-index 0ef244843841..3339a0e803b5 100644
+index 0ef2448..3339a0e 100644
 --- a/doc/ssl/SSL_set1_host.pod
 +++ b/doc/ssl/SSL_set1_host.pod
 @@ -2,13 +2,12 @@
@@ -116246,11 +126009,20 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_set_bio.pod b/doc/ssl/SSL_set_bio.pod
-index 3e87ee157eba..6d162339a54a 100644
+index 3e87ee1..204c89e 100644
 --- a/doc/ssl/SSL_set_bio.pod
 +++ b/doc/ssl/SSL_set_bio.pod
-@@ -40,4 +40,13 @@ L<SSL_shutdown(3)>, L<ssl(3)>, L<bio(3)>
+@@ -9,6 +9,8 @@ SSL_set_bio, SSL_set_rbio, SSL_set_wbio - connect the SSL object with a BIO
+  #include <openssl/ssl.h>
  
+  void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio);
++ void SSL_set_rbio(SSL *s, BIO *rbio);
++ void SSL_set_wbio(SSL *s, BIO *wbio);
+ 
+ =head1 DESCRIPTION
+ 
+@@ -40,4 +42,13 @@ L<SSL_shutdown(3)>, L<ssl(3)>, L<bio(3)>
+ 
  SSL_set_rbio() and SSL_set_wbio() were added in OpenSSL 1.1.0.
  
 +=head1 COPYRIGHT
@@ -116264,7 +126036,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_set_connect_state.pod b/doc/ssl/SSL_set_connect_state.pod
-index 4c3626c25903..60c18a4510b9 100644
+index 4c3626c..60c18a4 100644
 --- a/doc/ssl/SSL_set_connect_state.pod
 +++ b/doc/ssl/SSL_set_connect_state.pod
 @@ -52,4 +52,13 @@ L<SSL_write(3)>, L<SSL_read(3)>,
@@ -116282,7 +126054,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_set_fd.pod b/doc/ssl/SSL_set_fd.pod
-index faf1d171916d..e1f9988db554 100644
+index faf1d17..e1f9988 100644
 --- a/doc/ssl/SSL_set_fd.pod
 +++ b/doc/ssl/SSL_set_fd.pod
 @@ -51,4 +51,13 @@ L<SSL_get_fd(3)>, L<SSL_set_bio(3)>,
@@ -116300,10 +126072,23 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_set_session.pod b/doc/ssl/SSL_set_session.pod
-index c9e31c45fb5a..0a8a208a970b 100644
+index c9e31c4..1de533f 100644
 --- a/doc/ssl/SSL_set_session.pod
 +++ b/doc/ssl/SSL_set_session.pod
-@@ -54,4 +54,13 @@ L<SSL_get_session(3)>,
+@@ -21,7 +21,11 @@ with the L<SSL_session_reused(3)> call.
+ 
+ If there is already a session set inside B<ssl> (because it was set with
+ SSL_set_session() before or because the same B<ssl> was already used for
+-a connection), SSL_SESSION_free() will be called for that session.
++a connection), SSL_SESSION_free() will be called for that session. If that old
++session is still B<open>, it is considered bad and will be removed from the
++session cache (if used). A session is considered open, if L<SSL_shutdown(3)> was
++not called for the connection (or at least L<SSL_set_shutdown(3)> was used to
++set the SSL_SENT_SHUTDOWN state).
+ 
+ =head1 NOTES
+ 
+@@ -54,4 +58,13 @@ L<SSL_get_session(3)>,
  L<SSL_session_reused(3)>,
  L<SSL_CTX_set_session_cache_mode(3)>
  
@@ -116318,7 +126103,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_set_shutdown.pod b/doc/ssl/SSL_set_shutdown.pod
-index 91d76970365c..ecdf60cff353 100644
+index 91d7697..ecdf60c 100644
 --- a/doc/ssl/SSL_set_shutdown.pod
 +++ b/doc/ssl/SSL_set_shutdown.pod
 @@ -69,4 +69,13 @@ L<ssl(3)>, L<SSL_shutdown(3)>,
@@ -116336,7 +126121,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_set_verify_result.pod b/doc/ssl/SSL_set_verify_result.pod
-index 2c6d0b476078..8738d7828c1f 100644
+index 2c6d0b4..8738d78 100644
 --- a/doc/ssl/SSL_set_verify_result.pod
 +++ b/doc/ssl/SSL_set_verify_result.pod
 @@ -35,4 +35,13 @@ L<ssl(3)>, L<SSL_get_verify_result(3)>,
@@ -116354,7 +126139,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_shutdown.pod b/doc/ssl/SSL_shutdown.pod
-index 169079af5096..e8ec4546a3c7 100644
+index 169079a..e8ec454 100644
 --- a/doc/ssl/SSL_shutdown.pod
 +++ b/doc/ssl/SSL_shutdown.pod
 @@ -12,7 +12,7 @@ SSL_shutdown - shut down a TLS/SSL connection
@@ -116390,7 +126175,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_state_string.pod b/doc/ssl/SSL_state_string.pod
-index 0d2ba61bbf86..a2f59e84e8e1 100644
+index 0d2ba61..a2f59e8 100644
 --- a/doc/ssl/SSL_state_string.pod
 +++ b/doc/ssl/SSL_state_string.pod
 @@ -42,4 +42,13 @@ Detailed description of possible states to be included later.
@@ -116408,7 +126193,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_want.pod b/doc/ssl/SSL_want.pod
-index e8b426c7b550..e179d6befac6 100644
+index e8b426c..e179d6b 100644
 --- a/doc/ssl/SSL_want.pod
 +++ b/doc/ssl/SSL_want.pod
 @@ -2,7 +2,9 @@
@@ -116470,7 +126255,7 @@
 +
  =cut
 diff --git a/doc/ssl/SSL_write.pod b/doc/ssl/SSL_write.pod
-index 1fff8548c8b3..5ab079042e24 100644
+index 1fff854..5ab0790 100644
 --- a/doc/ssl/SSL_write.pod
 +++ b/doc/ssl/SSL_write.pod
 @@ -2,7 +2,7 @@
@@ -116515,7 +126300,7 @@
 +
  =cut
 diff --git a/doc/ssl/d2i_SSL_SESSION.pod b/doc/ssl/d2i_SSL_SESSION.pod
-index 985d1580f9bc..d6b17071f65c 100644
+index 985d158..d6b1707 100644
 --- a/doc/ssl/d2i_SSL_SESSION.pod
 +++ b/doc/ssl/d2i_SSL_SESSION.pod
 @@ -13,28 +13,8 @@ d2i_SSL_SESSION, i2d_SSL_SESSION - convert SSL_SESSION object from/to ASN1 repre
@@ -116592,7 +126377,7 @@
  
  =cut
 diff --git a/doc/ssl/ssl.pod b/doc/ssl/ssl.pod
-index 7e2cd85ffead..589fc2dbd949 100644
+index 7e2cd85..589fc2d 100644
 --- a/doc/ssl/ssl.pod
 +++ b/doc/ssl/ssl.pod
 @@ -1,12 +1,15 @@
@@ -116773,15 +126558,13 @@
 +
 +=cut
 diff --git a/e_os.h b/e_os.h
-index 0124e5e67faa..495133563586 100644
+index 0124e5e..eafa862 100644
 --- a/e_os.h
 +++ b/e_os.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -116829,7 +126612,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -116873,8 +126658,17 @@
         /*
          * Just like defining _WIN32_WINNT including winsock2.h implies
          * certain "discipline" for maintaining [broad] binary compatibility.
-@@ -392,10 +348,6 @@ extern FILE *_imp___iob;
+@@ -369,6 +325,8 @@ extern FILE *_imp___iob;
+ #   define NO_SYS_PARAM_H
+ #   define NO_SYS_UN_H
  
++#   define DEFAULT_HOME "SYS$LOGIN:"
++
+ #  else
+      /* !defined VMS */
+ #   ifdef OPENSSL_UNISTD
+@@ -392,10 +350,6 @@ extern FILE *_imp___iob;
+ 
  /*************/
  
 -# if defined(OPENSSL_NO_SOCK) && !defined(OPENSSL_NO_DGRAM)
@@ -116884,7 +126678,7 @@
  # ifdef USE_SOCKETS
  #  ifdef OPENSSL_NO_SOCK
  #  elif defined(WINDOWS) || defined(MSDOS)
-@@ -517,12 +469,17 @@ struct servent *PASCAL getservbyname(const char *, const char *);
+@@ -517,12 +471,17 @@ struct servent *PASCAL getservbyname(const char *, const char *);
  # if defined(OPENSSL_SYS_WINDOWS)
  #  define strcasecmp _stricmp
  #  define strncasecmp _strnicmp
@@ -116908,7 +126702,7 @@
  # endif
  
  /* vxworks */
-@@ -552,13 +509,6 @@ struct servent *getservbyname(const char *name, const char *proto);
+@@ -552,13 +511,6 @@ struct servent *getservbyname(const char *name, const char *proto);
  # endif
  /* end vxworks */
  
@@ -116924,7 +126718,7 @@
  #ifdef  __cplusplus
 diff --git a/engines/Makefile.in b/engines/Makefile.in
 deleted file mode 100644
-index e37c4e2be98b..000000000000
+index e37c4e2..0000000
 --- a/engines/Makefile.in
 +++ /dev/null
 @@ -1,119 +0,0 @@
@@ -117049,7 +126843,7 @@
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/engines/afalg/Makefile.in b/engines/afalg/Makefile.in
 deleted file mode 100644
-index 8a7408fbcb70..000000000000
+index 8a7408f..0000000
 --- a/engines/afalg/Makefile.in
 +++ /dev/null
 @@ -1,75 +0,0 @@
@@ -117129,7 +126923,7 @@
 - ../../include/openssl/pkcs7.h ../../include/openssl/async.h e_afalg.h \
 - e_afalg_err.h
 diff --git a/engines/afalg/build.info b/engines/afalg/build.info
-index 5aba44716ae9..d0962792acfa 100644
+index 5aba447..d096279 100644
 --- a/engines/afalg/build.info
 +++ b/engines/afalg/build.info
 @@ -9,7 +9,7 @@ IF[{- !$disabled{"engine"} -}]
@@ -117142,7 +126936,7 @@
    ENDIF
  ENDIF
 diff --git a/engines/afalg/e_afalg.c b/engines/afalg/e_afalg.c
-index d8599a165b60..2d6fa58b9f77 100644
+index d8599a1..2e7ce34 100644
 --- a/engines/afalg/e_afalg.c
 +++ b/engines/afalg/e_afalg.c
 @@ -1,55 +1,10 @@
@@ -117276,8 +127070,31 @@
                                  const int klen)
  {
      int ret;
+@@ -776,6 +731,7 @@ static int afalg_chk_platform(void)
+     int ret;
+     int i;
+     int kver[3] = { -1, -1, -1 };
++    int sock;
+     char *str;
+     struct utsname ut;
+ 
+@@ -803,6 +759,14 @@ static int afalg_chk_platform(void)
+         return 0;
+     }
+ 
++    /* Test if we can actually create an AF_ALG socket */
++    sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
++    if (sock == -1) {
++        AFALGerr(AFALG_F_AFALG_CHK_PLATFORM, AFALG_R_SOCKET_CREATE_FAILED);
++        return 0;
++    }
++    close(sock);
++
+     return 1;
+ }
+ 
 diff --git a/engines/afalg/e_afalg.h b/engines/afalg/e_afalg.h
-index 8b589e4b4b67..8f4d2d11f1d4 100644
+index 8b589e4..8f4d2d1 100644
 --- a/engines/afalg/e_afalg.h
 +++ b/engines/afalg/e_afalg.h
 @@ -1,59 +1,14 @@
@@ -117349,7 +127166,7 @@
  # ifdef ALG_DEBUG
  #  define ALG_DGB(x, ...) fprintf(stderr, "ALG_DBG: " x, __VA_ARGS__)
 diff --git a/engines/afalg/e_afalg_err.c b/engines/afalg/e_afalg_err.c
-index 71c4a010d655..ca394edb7b8d 100644
+index 71c4a01..ca394ed 100644
 --- a/engines/afalg/e_afalg_err.c
 +++ b/engines/afalg/e_afalg_err.c
 @@ -1,55 +1,10 @@
@@ -117415,7 +127232,7 @@
  
  /*
 diff --git a/engines/afalg/e_afalg_err.h b/engines/afalg/e_afalg_err.h
-index 64468c38687e..21abc979c6a5 100644
+index 64468c3..21abc97 100644
 --- a/engines/afalg/e_afalg_err.h
 +++ b/engines/afalg/e_afalg_err.h
 @@ -1,55 +1,16 @@
@@ -117498,7 +127315,7 @@
  void ERR_unload_AFALG_strings(void);
  void ERR_AFALG_error(int function, int reason, char *file, int line);
 diff --git a/engines/asm/e_padlock-x86.pl b/engines/asm/e_padlock-x86.pl
-index 1a22dc88e48c..bf6b312cd1b8 100644
+index 1a22dc8..bf6b312 100644
 --- a/engines/asm/e_padlock-x86.pl
 +++ b/engines/asm/e_padlock-x86.pl
 @@ -1,4 +1,11 @@
@@ -117515,7 +127332,7 @@
  # ====================================================================
  # Written by Andy Polyakov <appro at openssl.org> for the OpenSSL
 diff --git a/engines/asm/e_padlock-x86_64.pl b/engines/asm/e_padlock-x86_64.pl
-index 07c0a6d08448..da285abc61dd 100644
+index 07c0a6d..da285ab 100644
 --- a/engines/asm/e_padlock-x86_64.pl
 +++ b/engines/asm/e_padlock-x86_64.pl
 @@ -1,4 +1,11 @@
@@ -117541,7 +127358,7 @@
  
  $code=".text\n";
 diff --git a/engines/build.info b/engines/build.info
-index 065d4121ef5e..850ecac8b624 100644
+index 065d412..850ecac 100644
 --- a/engines/build.info
 +++ b/engines/build.info
 @@ -12,19 +12,19 @@ IF[{- !$disabled{"engine"} -}]
@@ -117570,13 +127387,13 @@
    GENERATE[e_padlock-x86.s]=asm/e_padlock-x86.pl $(PERLASM_SCHEME) $(CFLAGS) $(LIB_CFLAGS) $(PROCESSOR)
 diff --git a/engines/capierr.bat b/engines/capierr.bat
 deleted file mode 100644
-index 274ffac2fe63..000000000000
+index 274ffac..0000000
 --- a/engines/capierr.bat
 +++ /dev/null
 @@ -1 +0,0 @@
 -perl ../util/mkerr.pl -conf e_capi.ec -nostatic -staticloader -write e_capi.c
 diff --git a/engines/e_capi.c b/engines/e_capi.c
-index 5bf0fe94b330..f2d5c3e09128 100644
+index 5bf0fe9..f2d5c3e 100644
 --- a/engines/e_capi.c
 +++ b/engines/e_capi.c
 @@ -1,54 +1,10 @@
@@ -117586,8 +127403,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -117613,7 +127429,8 @@
 - * 5. Products derived from this software may not be called "OpenSSL"
 - *    nor may "OpenSSL" appear in their names without prior written
 - *    permission of the OpenSSL Project.
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 6. Redistributions of any form whatsoever must retain the following
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
@@ -117842,7 +127659,7 @@
      return 1;
  }
 diff --git a/engines/e_capi_err.c b/engines/e_capi_err.c
-index 1de6f25ab044..64e963a5eb9d 100644
+index 1de6f25..64e963a 100644
 --- a/engines/e_capi_err.c
 +++ b/engines/e_capi_err.c
 @@ -1,55 +1,10 @@
@@ -117908,7 +127725,7 @@
  
  /*
 diff --git a/engines/e_capi_err.h b/engines/e_capi_err.h
-index 01ec2efaec0b..bbaffada3d89 100644
+index 01ec2ef..bbaffad 100644
 --- a/engines/e_capi_err.h
 +++ b/engines/e_capi_err.h
 @@ -1,55 +1,16 @@
@@ -117991,7 +127808,7 @@
  static void ERR_unload_CAPI_strings(void);
  static void ERR_CAPI_error(int function, int reason, char *file, int line);
 diff --git a/engines/e_chil.c b/engines/e_chil.c
-index b09d5259a951..8d81b46fec5b 100644
+index b09d525..8d81b46 100644
 --- a/engines/e_chil.c
 +++ b/engines/e_chil.c
 @@ -1,60 +1,10 @@
@@ -118103,7 +127920,7 @@
          /*
           * Despite what the documentation says wrong_info can be an empty
 diff --git a/engines/e_chil_err.c b/engines/e_chil_err.c
-index 2cfcab290d03..0058684f79c2 100644
+index 2cfcab2..0058684 100644
 --- a/engines/e_chil_err.c
 +++ b/engines/e_chil_err.c
 @@ -1,55 +1,10 @@
@@ -118169,7 +127986,7 @@
  
  /*
 diff --git a/engines/e_chil_err.h b/engines/e_chil_err.h
-index 3d961b9340bd..b0f0dd98d3d5 100644
+index 3d961b9..b0f0dd9 100644
 --- a/engines/e_chil_err.h
 +++ b/engines/e_chil_err.h
 @@ -1,55 +1,16 @@
@@ -118261,7 +128078,7 @@
  /* Reason codes. */
  # define HWCRHK_R_ALREADY_LOADED                          100
 diff --git a/engines/e_dasync.c b/engines/e_dasync.c
-index 27a560236419..ed3f00adb6d6 100644
+index 27a5602..ed3f00a 100644
 --- a/engines/e_dasync.c
 +++ b/engines/e_dasync.c
 @@ -1,53 +1,10 @@
@@ -118270,8 +128087,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -118302,7 +128118,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -118333,7 +128150,7 @@
          || RSA_meth_set_bn_mod_exp(dasync_rsa_method, BN_mod_exp_mont) == 0
          || RSA_meth_set_init(dasync_rsa_method, dasync_rsa_init) == 0
 diff --git a/engines/e_dasync_err.c b/engines/e_dasync_err.c
-index 3b462ba85129..a9e776531428 100644
+index 3b462ba..a9e7765 100644
 --- a/engines/e_dasync_err.c
 +++ b/engines/e_dasync_err.c
 @@ -1,55 +1,10 @@
@@ -118399,7 +128216,7 @@
  
  /*
 diff --git a/engines/e_dasync_err.h b/engines/e_dasync_err.h
-index 304eeef5e99b..b01fead2acb1 100644
+index 304eeef..b01fead 100644
 --- a/engines/e_dasync_err.h
 +++ b/engines/e_dasync_err.h
 @@ -1,55 +1,16 @@
@@ -118482,7 +128299,7 @@
  static void ERR_unload_DASYNC_strings(void);
  static void ERR_DASYNC_error(int function, int reason, char *file, int line);
 diff --git a/engines/e_ossltest.c b/engines/e_ossltest.c
-index e641a44c169d..b4c83cb7c3f8 100644
+index e641a44..b4c83cb 100644
 --- a/engines/e_ossltest.c
 +++ b/engines/e_ossltest.c
 @@ -1,53 +1,10 @@
@@ -118491,8 +128308,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -118523,7 +128339,8 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -118545,7 +128362,7 @@
  
  /*
 diff --git a/engines/e_ossltest_err.c b/engines/e_ossltest_err.c
-index 5e5355d2143e..71d05788d1c4 100644
+index 5e5355d..71d0578 100644
 --- a/engines/e_ossltest_err.c
 +++ b/engines/e_ossltest_err.c
 @@ -1,55 +1,10 @@
@@ -118611,7 +128428,7 @@
  
  /*
 diff --git a/engines/e_ossltest_err.h b/engines/e_ossltest_err.h
-index b30509dc406a..a323c398f6e2 100644
+index b30509d..a323c39 100644
 --- a/engines/e_ossltest_err.h
 +++ b/engines/e_ossltest_err.h
 @@ -1,55 +1,16 @@
@@ -118694,7 +128511,7 @@
  static void ERR_unload_OSSLTEST_strings(void);
  static void ERR_OSSLTEST_error(int function, int reason, char *file, int line);
 diff --git a/engines/e_padlock.c b/engines/e_padlock.c
-index dab6c44b1ef2..77cebe3de6f8 100644
+index dab6c44..77cebe3 100644
 --- a/engines/e_padlock.c
 +++ b/engines/e_padlock.c
 @@ -1,65 +1,10 @@
@@ -118780,7 +128597,7 @@
  #    ifdef OPENSSL_NO_DYNAMIC_ENGINE
  static ENGINE *ENGINE_padlock(void);
 diff --git a/engines/vendor_defns/hwcryptohook.h b/engines/vendor_defns/hwcryptohook.h
-index 2bafffe9f6c3..c3dcd56f4fc5 100644
+index 2bafffe..c3dcd56 100644
 --- a/engines/vendor_defns/hwcryptohook.h
 +++ b/engines/vendor_defns/hwcryptohook.h
 @@ -1,3 +1,12 @@
@@ -118806,7 +128623,7 @@
  
  #ifndef HWCRYPTOHOOK_H
 diff --git a/external/perl/transfer/Text/Template.pm b/external/perl/transfer/Text/Template.pm
-index d018e6b04816..7dbfe3f84f4d 100644
+index d018e6b..7dbfe3f 100644
 --- a/external/perl/transfer/Text/Template.pm
 +++ b/external/perl/transfer/Text/Template.pm
 @@ -1,4 +1,9 @@
@@ -118822,7 +128639,7 @@
  
 diff --git a/fuzz/README.md b/fuzz/README.md
 new file mode 100644
-index 000000000000..e9ec88b8c6b9
+index 0000000..e9ec88b
 --- /dev/null
 +++ b/fuzz/README.md
 @@ -0,0 +1,70 @@
@@ -118898,7 +128715,7 @@
 +data type.
 diff --git a/fuzz/asn1.c b/fuzz/asn1.c
 new file mode 100644
-index 000000000000..66825f1b2cb1
+index 0000000..66825f1
 --- /dev/null
 +++ b/fuzz/asn1.c
 @@ -0,0 +1,70 @@
@@ -118974,7 +128791,7 @@
 +}
 diff --git a/fuzz/asn1parse.c b/fuzz/asn1parse.c
 new file mode 100644
-index 000000000000..2fe420b140be
+index 0000000..2fe420b
 --- /dev/null
 +++ b/fuzz/asn1parse.c
 @@ -0,0 +1,29 @@
@@ -119009,7 +128826,7 @@
 +}
 diff --git a/fuzz/bignum.c b/fuzz/bignum.c
 new file mode 100644
-index 000000000000..643e6e7c6582
+index 0000000..643e6e7
 --- /dev/null
 +++ b/fuzz/bignum.c
 @@ -0,0 +1,91 @@
@@ -119106,7 +128923,7 @@
 +}
 diff --git a/fuzz/bndiv.c b/fuzz/bndiv.c
 new file mode 100644
-index 000000000000..521281109bbc
+index 0000000..5212811
 --- /dev/null
 +++ b/fuzz/bndiv.c
 @@ -0,0 +1,101 @@
@@ -119213,10 +129030,10 @@
 +}
 diff --git a/fuzz/build.info b/fuzz/build.info
 new file mode 100644
-index 000000000000..762ddf83a5d0
+index 0000000..8f41878
 --- /dev/null
 +++ b/fuzz/build.info
-@@ -0,0 +1,42 @@
+@@ -0,0 +1,50 @@
 +{- use File::Spec::Functions;
 +   our $ex_inc = $withargs{fuzzer_include} &&
 +       (file_name_is_absolute($withargs{fuzzer_include}) ?
@@ -119226,7 +129043,7 @@
 +        $withargs{fuzzer_lib} : catfile(updir(), $withargs{fuzzer_lib}));
 +   ""
 +-}
-+PROGRAMS=asn1 asn1parse bignum bndiv cms conf ct server
++PROGRAMS=asn1 asn1parse bignum bndiv cms conf crl ct server x509
 +
 +SOURCE[asn1]=asn1.c driver.c
 +INCLUDE[asn1]=../include {- $ex_inc -}
@@ -119252,6 +129069,10 @@
 +INCLUDE[conf]=../include {- $ex_inc -}
 +DEPEND[conf]=../libcrypto {- $ex_lib -}
 +
++SOURCE[crl]=crl.c driver.c
++INCLUDE[crl]=../include {- $ex_inc -}
++DEPEND[crl]=../libcrypto {- $ex_lib -}
++
 +SOURCE[ct]=ct.c driver.c
 +INCLUDE[ct]=../include {- $ex_inc -}
 +DEPEND[ct]=../libcrypto {- $ex_lib -}
@@ -119259,9 +129080,13 @@
 +SOURCE[server]=server.c driver.c
 +INCLUDE[server]=../include {- $ex_inc -}
 +DEPEND[server]=../libcrypto ../libssl {- $ex_lib -}
++
++SOURCE[x509]=x509.c driver.c
++INCLUDE[x509]=../include {- $ex_inc -}
++DEPEND[x509]=../libcrypto ../libssl {- $ex_lib -}
 diff --git a/fuzz/cms.c b/fuzz/cms.c
 new file mode 100644
-index 000000000000..71f691f61b78
+index 0000000..71f691f
 --- /dev/null
 +++ b/fuzz/cms.c
 @@ -0,0 +1,26 @@
@@ -119293,7 +129118,7 @@
 +}
 diff --git a/fuzz/conf.c b/fuzz/conf.c
 new file mode 100644
-index 000000000000..d10d6c7f33cb
+index 0000000..d10d6c7
 --- /dev/null
 +++ b/fuzz/conf.c
 @@ -0,0 +1,30 @@
@@ -119327,5865 +129152,11125 @@
 +
 +    return 0;
 +}
-diff --git a/fuzz/corpora/asn1/0038f2648f9d85ca000d979a47e033ca8bc6394a b/fuzz/corpora/asn1/0038f2648f9d85ca000d979a47e033ca8bc6394a
+diff --git a/fuzz/corpora/asn1/000383229db805b2274ec1ac55ad7c59a42feb61 b/fuzz/corpora/asn1/000383229db805b2274ec1ac55ad7c59a42feb61
 new file mode 100644
-index 000000000000..d553fdbcb63d
-Binary files /dev/null and b/fuzz/corpora/asn1/0038f2648f9d85ca000d979a47e033ca8bc6394a differ
-diff --git a/fuzz/corpora/asn1/004fde691e02dee629e8cdfaa0c24547c347141f b/fuzz/corpora/asn1/004fde691e02dee629e8cdfaa0c24547c347141f
+index 0000000..1c1e399
+Binary files /dev/null and b/fuzz/corpora/asn1/000383229db805b2274ec1ac55ad7c59a42feb61 differ
+diff --git a/fuzz/corpora/asn1/01073e4ffc830b6abd2647c8c3ec818315e9c000 b/fuzz/corpora/asn1/01073e4ffc830b6abd2647c8c3ec818315e9c000
 new file mode 100644
-index 000000000000..59fc862763cd
-Binary files /dev/null and b/fuzz/corpora/asn1/004fde691e02dee629e8cdfaa0c24547c347141f differ
-diff --git a/fuzz/corpora/asn1/0062037092a90ea8befd394d434e0da0228412dd b/fuzz/corpora/asn1/0062037092a90ea8befd394d434e0da0228412dd
+index 0000000..41e6709
+Binary files /dev/null and b/fuzz/corpora/asn1/01073e4ffc830b6abd2647c8c3ec818315e9c000 differ
+diff --git a/fuzz/corpora/asn1/0136e7416e1c2e6b49e6bc8677dc03317b071a83 b/fuzz/corpora/asn1/0136e7416e1c2e6b49e6bc8677dc03317b071a83
 new file mode 100644
-index 000000000000..da8efc4c4133
-Binary files /dev/null and b/fuzz/corpora/asn1/0062037092a90ea8befd394d434e0da0228412dd differ
-diff --git a/fuzz/corpora/asn1/011fe67b8b998ede5f2a0bc4a9dcbf9f7528a361 b/fuzz/corpora/asn1/011fe67b8b998ede5f2a0bc4a9dcbf9f7528a361
+index 0000000..778c31a
+Binary files /dev/null and b/fuzz/corpora/asn1/0136e7416e1c2e6b49e6bc8677dc03317b071a83 differ
+diff --git a/fuzz/corpora/asn1/015ab2e9621bc91c4de2560d1b4c759d5dfd488f b/fuzz/corpora/asn1/015ab2e9621bc91c4de2560d1b4c759d5dfd488f
 new file mode 100644
-index 000000000000..1ab3c5045d4e
-Binary files /dev/null and b/fuzz/corpora/asn1/011fe67b8b998ede5f2a0bc4a9dcbf9f7528a361 differ
-diff --git a/fuzz/corpora/asn1/01958694fd6b912bf5deddbd493bdbf5d343d6be b/fuzz/corpora/asn1/01958694fd6b912bf5deddbd493bdbf5d343d6be
+index 0000000..ef6f493
+Binary files /dev/null and b/fuzz/corpora/asn1/015ab2e9621bc91c4de2560d1b4c759d5dfd488f differ
+diff --git a/fuzz/corpora/asn1/0192d6d830049af32ed04078e8e8f2a32b2be067 b/fuzz/corpora/asn1/0192d6d830049af32ed04078e8e8f2a32b2be067
 new file mode 100644
-index 000000000000..2c4e45f4cb66
-Binary files /dev/null and b/fuzz/corpora/asn1/01958694fd6b912bf5deddbd493bdbf5d343d6be differ
-diff --git a/fuzz/corpora/asn1/01b89ecef9df3a4453e02bda3fddbfec0c5a640d b/fuzz/corpora/asn1/01b89ecef9df3a4453e02bda3fddbfec0c5a640d
+index 0000000..a3802be
+Binary files /dev/null and b/fuzz/corpora/asn1/0192d6d830049af32ed04078e8e8f2a32b2be067 differ
+diff --git a/fuzz/corpora/asn1/020de368f5bdf20c6d6f2ba37ad8ff20cc719950 b/fuzz/corpora/asn1/020de368f5bdf20c6d6f2ba37ad8ff20cc719950
 new file mode 100644
-index 000000000000..6f4855a2f7bf
-Binary files /dev/null and b/fuzz/corpora/asn1/01b89ecef9df3a4453e02bda3fddbfec0c5a640d differ
-diff --git a/fuzz/corpora/asn1/02131a7f74fa9f89c293c7f151e679c8658a5b96 b/fuzz/corpora/asn1/02131a7f74fa9f89c293c7f151e679c8658a5b96
+index 0000000..402fc9b
+Binary files /dev/null and b/fuzz/corpora/asn1/020de368f5bdf20c6d6f2ba37ad8ff20cc719950 differ
+diff --git a/fuzz/corpora/asn1/023c0fef1f464b69b8cc7901832b3fb008b505e1 b/fuzz/corpora/asn1/023c0fef1f464b69b8cc7901832b3fb008b505e1
 new file mode 100644
-index 000000000000..c666dc108583
-Binary files /dev/null and b/fuzz/corpora/asn1/02131a7f74fa9f89c293c7f151e679c8658a5b96 differ
-diff --git a/fuzz/corpora/asn1/02278a3ae35012e12965b8a2015f3ccd392783b7 b/fuzz/corpora/asn1/02278a3ae35012e12965b8a2015f3ccd392783b7
+index 0000000..5d21dad
+Binary files /dev/null and b/fuzz/corpora/asn1/023c0fef1f464b69b8cc7901832b3fb008b505e1 differ
+diff --git a/fuzz/corpora/asn1/0270d4aa8aebf5e1d5e79e6e48b604abf9cb0329 b/fuzz/corpora/asn1/0270d4aa8aebf5e1d5e79e6e48b604abf9cb0329
 new file mode 100644
-index 000000000000..5f187ac9bea9
-Binary files /dev/null and b/fuzz/corpora/asn1/02278a3ae35012e12965b8a2015f3ccd392783b7 differ
-diff --git a/fuzz/corpora/asn1/023fc8e4d6056ae6243fe52f22dd234b748c264e b/fuzz/corpora/asn1/023fc8e4d6056ae6243fe52f22dd234b748c264e
+index 0000000..a77cdbb
+Binary files /dev/null and b/fuzz/corpora/asn1/0270d4aa8aebf5e1d5e79e6e48b604abf9cb0329 differ
+diff --git a/fuzz/corpora/asn1/02940b881cbd47154f2a992dbc2f714c6428344e b/fuzz/corpora/asn1/02940b881cbd47154f2a992dbc2f714c6428344e
 new file mode 100644
-index 000000000000..c3bd3a831d7d
-Binary files /dev/null and b/fuzz/corpora/asn1/023fc8e4d6056ae6243fe52f22dd234b748c264e differ
-diff --git a/fuzz/corpora/asn1/032fdf73e40dd9a0842d772d6c1978199b04f061 b/fuzz/corpora/asn1/032fdf73e40dd9a0842d772d6c1978199b04f061
+index 0000000..bad1473
+Binary files /dev/null and b/fuzz/corpora/asn1/02940b881cbd47154f2a992dbc2f714c6428344e differ
+diff --git a/fuzz/corpora/asn1/03167752c924f20c59bd20a4c0827a8a6a0461bb b/fuzz/corpora/asn1/03167752c924f20c59bd20a4c0827a8a6a0461bb
 new file mode 100644
-index 000000000000..5718a46ebfe9
-Binary files /dev/null and b/fuzz/corpora/asn1/032fdf73e40dd9a0842d772d6c1978199b04f061 differ
-diff --git a/fuzz/corpora/asn1/034abb3d8944d99e148d812cc128e16306693798 b/fuzz/corpora/asn1/034abb3d8944d99e148d812cc128e16306693798
+index 0000000..93f2eab
+Binary files /dev/null and b/fuzz/corpora/asn1/03167752c924f20c59bd20a4c0827a8a6a0461bb differ
+diff --git a/fuzz/corpora/asn1/03503cd9b7688240c3500db871fb811f6c4ff3b5 b/fuzz/corpora/asn1/03503cd9b7688240c3500db871fb811f6c4ff3b5
 new file mode 100644
-index 000000000000..0215c81ce1f3
-Binary files /dev/null and b/fuzz/corpora/asn1/034abb3d8944d99e148d812cc128e16306693798 differ
-diff --git a/fuzz/corpora/asn1/0359dfe5ee4a8238b219643798917e80e132d48f b/fuzz/corpora/asn1/0359dfe5ee4a8238b219643798917e80e132d48f
+index 0000000..61c133e
+Binary files /dev/null and b/fuzz/corpora/asn1/03503cd9b7688240c3500db871fb811f6c4ff3b5 differ
+diff --git a/fuzz/corpora/asn1/0361ec92f0b4d3a34a581ea7ed94f533297ebdaa b/fuzz/corpora/asn1/0361ec92f0b4d3a34a581ea7ed94f533297ebdaa
 new file mode 100644
-index 000000000000..017938048989
-Binary files /dev/null and b/fuzz/corpora/asn1/0359dfe5ee4a8238b219643798917e80e132d48f differ
-diff --git a/fuzz/corpora/asn1/03832a4b6abf7de0a77ee8dad5825988cc0a51b9 b/fuzz/corpora/asn1/03832a4b6abf7de0a77ee8dad5825988cc0a51b9
+index 0000000..79158b4
+Binary files /dev/null and b/fuzz/corpora/asn1/0361ec92f0b4d3a34a581ea7ed94f533297ebdaa differ
+diff --git a/fuzz/corpora/asn1/03b23fad5e45c9c6c3e4c9f01fe9f921111e968a b/fuzz/corpora/asn1/03b23fad5e45c9c6c3e4c9f01fe9f921111e968a
 new file mode 100644
-index 000000000000..1fa832f39efc
-Binary files /dev/null and b/fuzz/corpora/asn1/03832a4b6abf7de0a77ee8dad5825988cc0a51b9 differ
-diff --git a/fuzz/corpora/asn1/03fae71300a987496e7ddc3b93b876ec527aeb76 b/fuzz/corpora/asn1/03fae71300a987496e7ddc3b93b876ec527aeb76
+index 0000000..19661ee
+Binary files /dev/null and b/fuzz/corpora/asn1/03b23fad5e45c9c6c3e4c9f01fe9f921111e968a differ
+diff --git a/fuzz/corpora/asn1/03d04402324f00166328eb4c16bee388ba7e5865 b/fuzz/corpora/asn1/03d04402324f00166328eb4c16bee388ba7e5865
 new file mode 100644
-index 000000000000..003fdafe150a
-Binary files /dev/null and b/fuzz/corpora/asn1/03fae71300a987496e7ddc3b93b876ec527aeb76 differ
-diff --git a/fuzz/corpora/asn1/04334d79eeab2fb460825a7d7ff58b0daf7670de b/fuzz/corpora/asn1/04334d79eeab2fb460825a7d7ff58b0daf7670de
+index 0000000..4bae61e
+Binary files /dev/null and b/fuzz/corpora/asn1/03d04402324f00166328eb4c16bee388ba7e5865 differ
+diff --git a/fuzz/corpora/asn1/040756bbe9ac08ed7243038ee0be85d605d80865 b/fuzz/corpora/asn1/040756bbe9ac08ed7243038ee0be85d605d80865
 new file mode 100644
-index 000000000000..8b4d78472b23
-Binary files /dev/null and b/fuzz/corpora/asn1/04334d79eeab2fb460825a7d7ff58b0daf7670de differ
-diff --git a/fuzz/corpora/asn1/0470a8fbbba97f667b9fdad4a38dc9acabb0bcb3 b/fuzz/corpora/asn1/0470a8fbbba97f667b9fdad4a38dc9acabb0bcb3
+index 0000000..0406483
+Binary files /dev/null and b/fuzz/corpora/asn1/040756bbe9ac08ed7243038ee0be85d605d80865 differ
+diff --git a/fuzz/corpora/asn1/042a8e4ebcf1ff474247f69314aa6dfa82f7445c b/fuzz/corpora/asn1/042a8e4ebcf1ff474247f69314aa6dfa82f7445c
 new file mode 100644
-index 000000000000..81d81f03a296
-Binary files /dev/null and b/fuzz/corpora/asn1/0470a8fbbba97f667b9fdad4a38dc9acabb0bcb3 differ
-diff --git a/fuzz/corpora/asn1/04c217878b9140b85a2c5fba014a2636ed0dd619 b/fuzz/corpora/asn1/04c217878b9140b85a2c5fba014a2636ed0dd619
+index 0000000..6086915
+Binary files /dev/null and b/fuzz/corpora/asn1/042a8e4ebcf1ff474247f69314aa6dfa82f7445c differ
+diff --git a/fuzz/corpora/asn1/046b7fc8aeaf3e238c1e7d345622b6ffa1ffeea4 b/fuzz/corpora/asn1/046b7fc8aeaf3e238c1e7d345622b6ffa1ffeea4
 new file mode 100644
-index 000000000000..74fe7529a284
-Binary files /dev/null and b/fuzz/corpora/asn1/04c217878b9140b85a2c5fba014a2636ed0dd619 differ
-diff --git a/fuzz/corpora/asn1/04d1c8ee5a5f1de1396a2a5a0d926e9b45730dbf b/fuzz/corpora/asn1/04d1c8ee5a5f1de1396a2a5a0d926e9b45730dbf
+index 0000000..3b06a0a
+Binary files /dev/null and b/fuzz/corpora/asn1/046b7fc8aeaf3e238c1e7d345622b6ffa1ffeea4 differ
+diff --git a/fuzz/corpora/asn1/0471a2db016eec09fb45db71d67ec08ca708f5df b/fuzz/corpora/asn1/0471a2db016eec09fb45db71d67ec08ca708f5df
 new file mode 100644
-index 000000000000..288f964db412
-Binary files /dev/null and b/fuzz/corpora/asn1/04d1c8ee5a5f1de1396a2a5a0d926e9b45730dbf differ
-diff --git a/fuzz/corpora/asn1/0502adfb06b1d0592cbbd03a75878d886494bf10 b/fuzz/corpora/asn1/0502adfb06b1d0592cbbd03a75878d886494bf10
+index 0000000..ade8512
+Binary files /dev/null and b/fuzz/corpora/asn1/0471a2db016eec09fb45db71d67ec08ca708f5df differ
+diff --git a/fuzz/corpora/asn1/059c4d82039af49bafeafe60381a1bf477df418e b/fuzz/corpora/asn1/059c4d82039af49bafeafe60381a1bf477df418e
 new file mode 100644
-index 000000000000..7ee5e4006a22
-Binary files /dev/null and b/fuzz/corpora/asn1/0502adfb06b1d0592cbbd03a75878d886494bf10 differ
-diff --git a/fuzz/corpora/asn1/050448f43aa4ad6aa56213597fa8b824a4910324 b/fuzz/corpora/asn1/050448f43aa4ad6aa56213597fa8b824a4910324
+index 0000000..340ef6e
+Binary files /dev/null and b/fuzz/corpora/asn1/059c4d82039af49bafeafe60381a1bf477df418e differ
+diff --git a/fuzz/corpora/asn1/05f5c21da0f12cdf33556018f183ba8ea5098040 b/fuzz/corpora/asn1/05f5c21da0f12cdf33556018f183ba8ea5098040
 new file mode 100644
-index 000000000000..4bc3c6565dd9
-Binary files /dev/null and b/fuzz/corpora/asn1/050448f43aa4ad6aa56213597fa8b824a4910324 differ
-diff --git a/fuzz/corpora/asn1/051e7b67a918c0685a7a4d1914f3b4e595cd7fe1 b/fuzz/corpora/asn1/051e7b67a918c0685a7a4d1914f3b4e595cd7fe1
+index 0000000..713dd04
+Binary files /dev/null and b/fuzz/corpora/asn1/05f5c21da0f12cdf33556018f183ba8ea5098040 differ
+diff --git a/fuzz/corpora/asn1/06ed71c46c8da7e0c84c443f054456b71b1df088 b/fuzz/corpora/asn1/06ed71c46c8da7e0c84c443f054456b71b1df088
 new file mode 100644
-index 000000000000..73ad1abf85ae
-Binary files /dev/null and b/fuzz/corpora/asn1/051e7b67a918c0685a7a4d1914f3b4e595cd7fe1 differ
-diff --git a/fuzz/corpora/asn1/0552c21bd124d3b64b123b5885c1b47b543acaf5 b/fuzz/corpora/asn1/0552c21bd124d3b64b123b5885c1b47b543acaf5
+index 0000000..3f30557
+Binary files /dev/null and b/fuzz/corpora/asn1/06ed71c46c8da7e0c84c443f054456b71b1df088 differ
+diff --git a/fuzz/corpora/asn1/074f21c223d4546de68dc8ef5ab5cc6e9b3e32cb b/fuzz/corpora/asn1/074f21c223d4546de68dc8ef5ab5cc6e9b3e32cb
 new file mode 100644
-index 000000000000..0b2dae79ad45
-Binary files /dev/null and b/fuzz/corpora/asn1/0552c21bd124d3b64b123b5885c1b47b543acaf5 differ
-diff --git a/fuzz/corpora/asn1/0579c52350b995c92299db593b37637325ec8a03 b/fuzz/corpora/asn1/0579c52350b995c92299db593b37637325ec8a03
+index 0000000..0a70006
+Binary files /dev/null and b/fuzz/corpora/asn1/074f21c223d4546de68dc8ef5ab5cc6e9b3e32cb differ
+diff --git a/fuzz/corpora/asn1/075e5a7bc127167c081b46177b91cf42f18343cc b/fuzz/corpora/asn1/075e5a7bc127167c081b46177b91cf42f18343cc
 new file mode 100644
-index 000000000000..5db3261962d4
-Binary files /dev/null and b/fuzz/corpora/asn1/0579c52350b995c92299db593b37637325ec8a03 differ
-diff --git a/fuzz/corpora/asn1/0603d8dc286d468542a4bf499b3f0f328a0e9aaa b/fuzz/corpora/asn1/0603d8dc286d468542a4bf499b3f0f328a0e9aaa
+index 0000000..2b316cc
+Binary files /dev/null and b/fuzz/corpora/asn1/075e5a7bc127167c081b46177b91cf42f18343cc differ
+diff --git a/fuzz/corpora/asn1/07ff9d5bb0036a00b04d9a1fdf84e0a0b9e6f6ae b/fuzz/corpora/asn1/07ff9d5bb0036a00b04d9a1fdf84e0a0b9e6f6ae
 new file mode 100644
-index 000000000000..047a2274fda9
-Binary files /dev/null and b/fuzz/corpora/asn1/0603d8dc286d468542a4bf499b3f0f328a0e9aaa differ
-diff --git a/fuzz/corpora/asn1/061df34c0207bc4bc1e95c48898cf28f85ca8d9c b/fuzz/corpora/asn1/061df34c0207bc4bc1e95c48898cf28f85ca8d9c
+index 0000000..8292ac9
+Binary files /dev/null and b/fuzz/corpora/asn1/07ff9d5bb0036a00b04d9a1fdf84e0a0b9e6f6ae differ
+diff --git a/fuzz/corpora/asn1/0877cbd6ba4a14c9873ad6e352637f024f0e50cf b/fuzz/corpora/asn1/0877cbd6ba4a14c9873ad6e352637f024f0e50cf
 new file mode 100644
-index 000000000000..0cc8c9c84e74
-Binary files /dev/null and b/fuzz/corpora/asn1/061df34c0207bc4bc1e95c48898cf28f85ca8d9c differ
-diff --git a/fuzz/corpora/asn1/0620396baaa22645942751152dd2420e0b77dbc7 b/fuzz/corpora/asn1/0620396baaa22645942751152dd2420e0b77dbc7
+index 0000000..56ff799
+Binary files /dev/null and b/fuzz/corpora/asn1/0877cbd6ba4a14c9873ad6e352637f024f0e50cf differ
+diff --git a/fuzz/corpora/asn1/0990615a80d13cf70ea7fb9f38150b5701605aec b/fuzz/corpora/asn1/0990615a80d13cf70ea7fb9f38150b5701605aec
 new file mode 100644
-index 000000000000..1812de62c788
-Binary files /dev/null and b/fuzz/corpora/asn1/0620396baaa22645942751152dd2420e0b77dbc7 differ
-diff --git a/fuzz/corpora/asn1/0654f0aeea85f442ce3e52edd75dadec839da0c1 b/fuzz/corpora/asn1/0654f0aeea85f442ce3e52edd75dadec839da0c1
+index 0000000..3b267d4
+Binary files /dev/null and b/fuzz/corpora/asn1/0990615a80d13cf70ea7fb9f38150b5701605aec differ
+diff --git a/fuzz/corpora/asn1/099740fd2bed601d9541ea44c00453ee7ffbc7c9 b/fuzz/corpora/asn1/099740fd2bed601d9541ea44c00453ee7ffbc7c9
 new file mode 100644
-index 000000000000..79812f8ee91d
-Binary files /dev/null and b/fuzz/corpora/asn1/0654f0aeea85f442ce3e52edd75dadec839da0c1 differ
-diff --git a/fuzz/corpora/asn1/067bb95301a59746a2df1a8df7eb39c1f54892fe b/fuzz/corpora/asn1/067bb95301a59746a2df1a8df7eb39c1f54892fe
+index 0000000..d0ce34b
+Binary files /dev/null and b/fuzz/corpora/asn1/099740fd2bed601d9541ea44c00453ee7ffbc7c9 differ
+diff --git a/fuzz/corpora/asn1/09afb922be9b2ea1e6407a1c20a7f5bdd713f8db b/fuzz/corpora/asn1/09afb922be9b2ea1e6407a1c20a7f5bdd713f8db
 new file mode 100644
-index 000000000000..124673870f9b
-Binary files /dev/null and b/fuzz/corpora/asn1/067bb95301a59746a2df1a8df7eb39c1f54892fe differ
-diff --git a/fuzz/corpora/asn1/0686990c6145f993958446de3a64671a3da72a2c b/fuzz/corpora/asn1/0686990c6145f993958446de3a64671a3da72a2c
+index 0000000..e018cdc
+Binary files /dev/null and b/fuzz/corpora/asn1/09afb922be9b2ea1e6407a1c20a7f5bdd713f8db differ
+diff --git a/fuzz/corpora/asn1/09f344ccd0ee6185b6ae0ab9b71dc8f0256a11c3 b/fuzz/corpora/asn1/09f344ccd0ee6185b6ae0ab9b71dc8f0256a11c3
 new file mode 100644
-index 000000000000..0f51e800c878
-Binary files /dev/null and b/fuzz/corpora/asn1/0686990c6145f993958446de3a64671a3da72a2c differ
-diff --git a/fuzz/corpora/asn1/069669b70190b1b367eb9538f01e1155e6a5e51c b/fuzz/corpora/asn1/069669b70190b1b367eb9538f01e1155e6a5e51c
+index 0000000..2716d96
+Binary files /dev/null and b/fuzz/corpora/asn1/09f344ccd0ee6185b6ae0ab9b71dc8f0256a11c3 differ
+diff --git a/fuzz/corpora/asn1/0a0ae2c78033a178f91bbb1a7ffb3cd93181bc6f b/fuzz/corpora/asn1/0a0ae2c78033a178f91bbb1a7ffb3cd93181bc6f
 new file mode 100644
-index 000000000000..bd190bbb2a64
-Binary files /dev/null and b/fuzz/corpora/asn1/069669b70190b1b367eb9538f01e1155e6a5e51c differ
-diff --git a/fuzz/corpora/asn1/06dc1baf83752dd36f0d8aed38cd05b9ddfae6b5 b/fuzz/corpora/asn1/06dc1baf83752dd36f0d8aed38cd05b9ddfae6b5
+index 0000000..f925b5a
+Binary files /dev/null and b/fuzz/corpora/asn1/0a0ae2c78033a178f91bbb1a7ffb3cd93181bc6f differ
+diff --git a/fuzz/corpora/asn1/0aacbcd90283731343e6eaf68abcee2909d8ed9a b/fuzz/corpora/asn1/0aacbcd90283731343e6eaf68abcee2909d8ed9a
 new file mode 100644
-index 000000000000..b5571366125d
-Binary files /dev/null and b/fuzz/corpora/asn1/06dc1baf83752dd36f0d8aed38cd05b9ddfae6b5 differ
-diff --git a/fuzz/corpora/asn1/076c71cc7eb5a3b4edd4e3cca44980a1755e451e b/fuzz/corpora/asn1/076c71cc7eb5a3b4edd4e3cca44980a1755e451e
+index 0000000..2e3d746
+Binary files /dev/null and b/fuzz/corpora/asn1/0aacbcd90283731343e6eaf68abcee2909d8ed9a differ
+diff --git a/fuzz/corpora/asn1/0b91ff744f525abb88d3b74a29b82b3461601889 b/fuzz/corpora/asn1/0b91ff744f525abb88d3b74a29b82b3461601889
 new file mode 100644
-index 000000000000..0c232adfdc0b
-Binary files /dev/null and b/fuzz/corpora/asn1/076c71cc7eb5a3b4edd4e3cca44980a1755e451e differ
-diff --git a/fuzz/corpora/asn1/07760ff895c28ad8a704607fabb4b61a4787bfa0 b/fuzz/corpora/asn1/07760ff895c28ad8a704607fabb4b61a4787bfa0
+index 0000000..336e46e
+Binary files /dev/null and b/fuzz/corpora/asn1/0b91ff744f525abb88d3b74a29b82b3461601889 differ
+diff --git a/fuzz/corpora/asn1/0c1e42bb41daf86898dea2b2a4b459565d72c66a b/fuzz/corpora/asn1/0c1e42bb41daf86898dea2b2a4b459565d72c66a
 new file mode 100644
-index 000000000000..fd1c6ef40f31
-Binary files /dev/null and b/fuzz/corpora/asn1/07760ff895c28ad8a704607fabb4b61a4787bfa0 differ
-diff --git a/fuzz/corpora/asn1/07866d533047438eb325bddf3850a3fbe59fe810 b/fuzz/corpora/asn1/07866d533047438eb325bddf3850a3fbe59fe810
+index 0000000..613be26
+Binary files /dev/null and b/fuzz/corpora/asn1/0c1e42bb41daf86898dea2b2a4b459565d72c66a differ
+diff --git a/fuzz/corpora/asn1/0c2b650a2b2e38a6dc5c046feb8c20afca4722e2 b/fuzz/corpora/asn1/0c2b650a2b2e38a6dc5c046feb8c20afca4722e2
 new file mode 100644
-index 000000000000..eca481bacd2f
-Binary files /dev/null and b/fuzz/corpora/asn1/07866d533047438eb325bddf3850a3fbe59fe810 differ
-diff --git a/fuzz/corpora/asn1/07e31c3690d3ecf63f3fa1d949e91250582fc4c3 b/fuzz/corpora/asn1/07e31c3690d3ecf63f3fa1d949e91250582fc4c3
+index 0000000..59b4a2a
+Binary files /dev/null and b/fuzz/corpora/asn1/0c2b650a2b2e38a6dc5c046feb8c20afca4722e2 differ
+diff --git a/fuzz/corpora/asn1/0c6964f7ccef7cb9c7d322a7849bf27877c20217 b/fuzz/corpora/asn1/0c6964f7ccef7cb9c7d322a7849bf27877c20217
 new file mode 100644
-index 000000000000..3f7eaab97a53
-Binary files /dev/null and b/fuzz/corpora/asn1/07e31c3690d3ecf63f3fa1d949e91250582fc4c3 differ
-diff --git a/fuzz/corpora/asn1/07fef83836f229eff9c68e38d894720474fde20c b/fuzz/corpora/asn1/07fef83836f229eff9c68e38d894720474fde20c
+index 0000000..b1065b1
+Binary files /dev/null and b/fuzz/corpora/asn1/0c6964f7ccef7cb9c7d322a7849bf27877c20217 differ
+diff --git a/fuzz/corpora/asn1/0c6a2cf3e0645689b47b822d4201e7d32f1bbc49 b/fuzz/corpora/asn1/0c6a2cf3e0645689b47b822d4201e7d32f1bbc49
 new file mode 100644
-index 000000000000..dafde2831940
-Binary files /dev/null and b/fuzz/corpora/asn1/07fef83836f229eff9c68e38d894720474fde20c differ
-diff --git a/fuzz/corpora/asn1/082bfd3569e69c7a2eb3a80224776c95a4ffce1d b/fuzz/corpora/asn1/082bfd3569e69c7a2eb3a80224776c95a4ffce1d
+index 0000000..80000bc
+Binary files /dev/null and b/fuzz/corpora/asn1/0c6a2cf3e0645689b47b822d4201e7d32f1bbc49 differ
+diff --git a/fuzz/corpora/asn1/0c9cd80b757d84be843e7bc95df4f3717f0138ae b/fuzz/corpora/asn1/0c9cd80b757d84be843e7bc95df4f3717f0138ae
 new file mode 100644
-index 000000000000..c5e3f252d572
-Binary files /dev/null and b/fuzz/corpora/asn1/082bfd3569e69c7a2eb3a80224776c95a4ffce1d differ
-diff --git a/fuzz/corpora/asn1/088ce0ca4a24cd615fba9bf56450da859ecbe3d5 b/fuzz/corpora/asn1/088ce0ca4a24cd615fba9bf56450da859ecbe3d5
+index 0000000..93711ec
+Binary files /dev/null and b/fuzz/corpora/asn1/0c9cd80b757d84be843e7bc95df4f3717f0138ae differ
+diff --git a/fuzz/corpora/asn1/0cbab2444a617fc8cb18e4978f19401d3bbb3976 b/fuzz/corpora/asn1/0cbab2444a617fc8cb18e4978f19401d3bbb3976
 new file mode 100644
-index 000000000000..4a176c63a514
-Binary files /dev/null and b/fuzz/corpora/asn1/088ce0ca4a24cd615fba9bf56450da859ecbe3d5 differ
-diff --git a/fuzz/corpora/asn1/08a40da2dc8f14e2db1e665f23efe0ca582fd068 b/fuzz/corpora/asn1/08a40da2dc8f14e2db1e665f23efe0ca582fd068
+index 0000000..04b6669
+Binary files /dev/null and b/fuzz/corpora/asn1/0cbab2444a617fc8cb18e4978f19401d3bbb3976 differ
+diff --git a/fuzz/corpora/asn1/0e12cdb93321d3fe6bd910c9e9901eb50992b0b5 b/fuzz/corpora/asn1/0e12cdb93321d3fe6bd910c9e9901eb50992b0b5
 new file mode 100644
-index 000000000000..37d7a6d133b8
-Binary files /dev/null and b/fuzz/corpora/asn1/08a40da2dc8f14e2db1e665f23efe0ca582fd068 differ
-diff --git a/fuzz/corpora/asn1/08c053ce82d877200f2b8078e5000a111f6022f4 b/fuzz/corpora/asn1/08c053ce82d877200f2b8078e5000a111f6022f4
+index 0000000..5403017
+Binary files /dev/null and b/fuzz/corpora/asn1/0e12cdb93321d3fe6bd910c9e9901eb50992b0b5 differ
+diff --git a/fuzz/corpora/asn1/0e353a5e6e018d516b097d6628a2698d94969a4f b/fuzz/corpora/asn1/0e353a5e6e018d516b097d6628a2698d94969a4f
 new file mode 100644
-index 000000000000..3a71baf3e94e
-Binary files /dev/null and b/fuzz/corpora/asn1/08c053ce82d877200f2b8078e5000a111f6022f4 differ
-diff --git a/fuzz/corpora/asn1/08e482c90e5b9aad50eaba3d354b41820a2a70e7 b/fuzz/corpora/asn1/08e482c90e5b9aad50eaba3d354b41820a2a70e7
+index 0000000..d551f69
+Binary files /dev/null and b/fuzz/corpora/asn1/0e353a5e6e018d516b097d6628a2698d94969a4f differ
+diff --git a/fuzz/corpora/asn1/0e745d5a1a3a84114c12847900b3be61dff8e284 b/fuzz/corpora/asn1/0e745d5a1a3a84114c12847900b3be61dff8e284
 new file mode 100644
-index 000000000000..be48e7b00303
-Binary files /dev/null and b/fuzz/corpora/asn1/08e482c90e5b9aad50eaba3d354b41820a2a70e7 differ
-diff --git a/fuzz/corpora/asn1/08fce54918f8dae0877167812e7fd50c685d1aa9 b/fuzz/corpora/asn1/08fce54918f8dae0877167812e7fd50c685d1aa9
+index 0000000..fc73495
+Binary files /dev/null and b/fuzz/corpora/asn1/0e745d5a1a3a84114c12847900b3be61dff8e284 differ
+diff --git a/fuzz/corpora/asn1/0eb5037935ba1c2791f3b7e9bc8470c3c60d2aff b/fuzz/corpora/asn1/0eb5037935ba1c2791f3b7e9bc8470c3c60d2aff
 new file mode 100644
-index 000000000000..462efd408635
-Binary files /dev/null and b/fuzz/corpora/asn1/08fce54918f8dae0877167812e7fd50c685d1aa9 differ
-diff --git a/fuzz/corpora/asn1/0942e62fb131a0bbf4584b69c562cd661333739d b/fuzz/corpora/asn1/0942e62fb131a0bbf4584b69c562cd661333739d
+index 0000000..1c8ce6f
+Binary files /dev/null and b/fuzz/corpora/asn1/0eb5037935ba1c2791f3b7e9bc8470c3c60d2aff differ
+diff --git a/fuzz/corpora/asn1/0ff32ade892d52e00eeb11dc32d2ed7efbf151bb b/fuzz/corpora/asn1/0ff32ade892d52e00eeb11dc32d2ed7efbf151bb
 new file mode 100644
-index 000000000000..2a95b19dcd74
-Binary files /dev/null and b/fuzz/corpora/asn1/0942e62fb131a0bbf4584b69c562cd661333739d differ
-diff --git a/fuzz/corpora/asn1/096153c8554d5b6a7b7f8da8d575c2012450e658 b/fuzz/corpora/asn1/096153c8554d5b6a7b7f8da8d575c2012450e658
+index 0000000..7888bf7
+Binary files /dev/null and b/fuzz/corpora/asn1/0ff32ade892d52e00eeb11dc32d2ed7efbf151bb differ
+diff --git a/fuzz/corpora/asn1/10c59637fc2c224c6871ab549878a156d5b1b119 b/fuzz/corpora/asn1/10c59637fc2c224c6871ab549878a156d5b1b119
 new file mode 100644
-index 000000000000..c86eaa10e6b5
-Binary files /dev/null and b/fuzz/corpora/asn1/096153c8554d5b6a7b7f8da8d575c2012450e658 differ
-diff --git a/fuzz/corpora/asn1/096a5ebf556844e128331fde20b6229d787e9672 b/fuzz/corpora/asn1/096a5ebf556844e128331fde20b6229d787e9672
+index 0000000..a7b0e7d
+Binary files /dev/null and b/fuzz/corpora/asn1/10c59637fc2c224c6871ab549878a156d5b1b119 differ
+diff --git a/fuzz/corpora/asn1/10ef958f5ed129a370de66684368b6ae3f624617 b/fuzz/corpora/asn1/10ef958f5ed129a370de66684368b6ae3f624617
 new file mode 100644
-index 000000000000..49a8179f9b61
-Binary files /dev/null and b/fuzz/corpora/asn1/096a5ebf556844e128331fde20b6229d787e9672 differ
-diff --git a/fuzz/corpora/asn1/0a93f80c9155d9d3fb5d5c1a670930d1ae930aaf b/fuzz/corpora/asn1/0a93f80c9155d9d3fb5d5c1a670930d1ae930aaf
+index 0000000..6f1de1c
+Binary files /dev/null and b/fuzz/corpora/asn1/10ef958f5ed129a370de66684368b6ae3f624617 differ
+diff --git a/fuzz/corpora/asn1/113d8e8da5a67ca02ac75765b8bd4a781880e57c b/fuzz/corpora/asn1/113d8e8da5a67ca02ac75765b8bd4a781880e57c
 new file mode 100644
-index 000000000000..0f533da36fd1
-Binary files /dev/null and b/fuzz/corpora/asn1/0a93f80c9155d9d3fb5d5c1a670930d1ae930aaf differ
-diff --git a/fuzz/corpora/asn1/0aa066154790608eec0db9cc0b441afc2c5cf11f b/fuzz/corpora/asn1/0aa066154790608eec0db9cc0b441afc2c5cf11f
+index 0000000..9944292
+Binary files /dev/null and b/fuzz/corpora/asn1/113d8e8da5a67ca02ac75765b8bd4a781880e57c differ
+diff --git a/fuzz/corpora/asn1/118d17cce624aba02c7d56850f10889d88b1e04f b/fuzz/corpora/asn1/118d17cce624aba02c7d56850f10889d88b1e04f
 new file mode 100644
-index 000000000000..0d35918e2a65
-Binary files /dev/null and b/fuzz/corpora/asn1/0aa066154790608eec0db9cc0b441afc2c5cf11f differ
-diff --git a/fuzz/corpora/asn1/0afe9ec795e6e973523f81e5bb830f8bb89164fa b/fuzz/corpora/asn1/0afe9ec795e6e973523f81e5bb830f8bb89164fa
+index 0000000..5a00bc3
+Binary files /dev/null and b/fuzz/corpora/asn1/118d17cce624aba02c7d56850f10889d88b1e04f differ
+diff --git a/fuzz/corpora/asn1/11fcff5cdc1fa0a45aea9de183dbf2e6771c8a07 b/fuzz/corpora/asn1/11fcff5cdc1fa0a45aea9de183dbf2e6771c8a07
 new file mode 100644
-index 000000000000..543f64e17d6e
-Binary files /dev/null and b/fuzz/corpora/asn1/0afe9ec795e6e973523f81e5bb830f8bb89164fa differ
-diff --git a/fuzz/corpora/asn1/0b1085f22276cbb68a1f567d0453fe8202e554ba b/fuzz/corpora/asn1/0b1085f22276cbb68a1f567d0453fe8202e554ba
+index 0000000..e9c5c19
+Binary files /dev/null and b/fuzz/corpora/asn1/11fcff5cdc1fa0a45aea9de183dbf2e6771c8a07 differ
+diff --git a/fuzz/corpora/asn1/121d9762652e173d08ff5282edf5932782ab5972 b/fuzz/corpora/asn1/121d9762652e173d08ff5282edf5932782ab5972
 new file mode 100644
-index 000000000000..df03edfb16f9
-Binary files /dev/null and b/fuzz/corpora/asn1/0b1085f22276cbb68a1f567d0453fe8202e554ba differ
-diff --git a/fuzz/corpora/asn1/0b703d4cbe7cd52e75c00424a8e343f63bd1a132 b/fuzz/corpora/asn1/0b703d4cbe7cd52e75c00424a8e343f63bd1a132
+index 0000000..c91cc37
+Binary files /dev/null and b/fuzz/corpora/asn1/121d9762652e173d08ff5282edf5932782ab5972 differ
+diff --git a/fuzz/corpora/asn1/12e162e1e93655967206eb170d45bd66af421771 b/fuzz/corpora/asn1/12e162e1e93655967206eb170d45bd66af421771
 new file mode 100644
-index 000000000000..e70aff116021
-Binary files /dev/null and b/fuzz/corpora/asn1/0b703d4cbe7cd52e75c00424a8e343f63bd1a132 differ
-diff --git a/fuzz/corpora/asn1/0bd7fe6a2b72237c9fd16058a3b5a9dfc79414db b/fuzz/corpora/asn1/0bd7fe6a2b72237c9fd16058a3b5a9dfc79414db
+index 0000000..005cca7
+Binary files /dev/null and b/fuzz/corpora/asn1/12e162e1e93655967206eb170d45bd66af421771 differ
+diff --git a/fuzz/corpora/asn1/12f9f5a3059a4fd76ec1c196427dfe4c70802349 b/fuzz/corpora/asn1/12f9f5a3059a4fd76ec1c196427dfe4c70802349
 new file mode 100644
-index 000000000000..1f4d38fdc530
-Binary files /dev/null and b/fuzz/corpora/asn1/0bd7fe6a2b72237c9fd16058a3b5a9dfc79414db differ
-diff --git a/fuzz/corpora/asn1/0c0bf2c7d1e6026deb79d62088c0cc17d976c1c7 b/fuzz/corpora/asn1/0c0bf2c7d1e6026deb79d62088c0cc17d976c1c7
+index 0000000..7bd061f
+Binary files /dev/null and b/fuzz/corpora/asn1/12f9f5a3059a4fd76ec1c196427dfe4c70802349 differ
+diff --git a/fuzz/corpora/asn1/1311eb79ed372cc0e66fe5e978d24271a1491319 b/fuzz/corpora/asn1/1311eb79ed372cc0e66fe5e978d24271a1491319
 new file mode 100644
-index 000000000000..ce087f5d3b08
-Binary files /dev/null and b/fuzz/corpora/asn1/0c0bf2c7d1e6026deb79d62088c0cc17d976c1c7 differ
-diff --git a/fuzz/corpora/asn1/0c438a223ac793890989beb93e0b40a675417f70 b/fuzz/corpora/asn1/0c438a223ac793890989beb93e0b40a675417f70
+index 0000000..980fcca
+Binary files /dev/null and b/fuzz/corpora/asn1/1311eb79ed372cc0e66fe5e978d24271a1491319 differ
+diff --git a/fuzz/corpora/asn1/135e97e098383361a99b6dfa0b56bfb39644ec70 b/fuzz/corpora/asn1/135e97e098383361a99b6dfa0b56bfb39644ec70
 new file mode 100644
-index 000000000000..a6199332f368
-Binary files /dev/null and b/fuzz/corpora/asn1/0c438a223ac793890989beb93e0b40a675417f70 differ
-diff --git a/fuzz/corpora/asn1/0cbf86f6df5798240e59f520270d6d510056ae6f b/fuzz/corpora/asn1/0cbf86f6df5798240e59f520270d6d510056ae6f
+index 0000000..21a7ba8
+Binary files /dev/null and b/fuzz/corpora/asn1/135e97e098383361a99b6dfa0b56bfb39644ec70 differ
+diff --git a/fuzz/corpora/asn1/1383974191112834fdfd3c1ba4da4a6c3e46dc6a b/fuzz/corpora/asn1/1383974191112834fdfd3c1ba4da4a6c3e46dc6a
 new file mode 100644
-index 000000000000..1d87b6684676
-Binary files /dev/null and b/fuzz/corpora/asn1/0cbf86f6df5798240e59f520270d6d510056ae6f differ
-diff --git a/fuzz/corpora/asn1/0d5a0f0322cd0765f071d401d57b58a1172aaa1d b/fuzz/corpora/asn1/0d5a0f0322cd0765f071d401d57b58a1172aaa1d
+index 0000000..1ceb717
+Binary files /dev/null and b/fuzz/corpora/asn1/1383974191112834fdfd3c1ba4da4a6c3e46dc6a differ
+diff --git a/fuzz/corpora/asn1/1473d4569f0c2f8e92ac16afca6f2b2b8f124af8 b/fuzz/corpora/asn1/1473d4569f0c2f8e92ac16afca6f2b2b8f124af8
 new file mode 100644
-index 000000000000..3c0456465e28
-Binary files /dev/null and b/fuzz/corpora/asn1/0d5a0f0322cd0765f071d401d57b58a1172aaa1d differ
-diff --git a/fuzz/corpora/asn1/0e513a5074a6d02ce93d9b42aa2c98eddcb90e93 b/fuzz/corpora/asn1/0e513a5074a6d02ce93d9b42aa2c98eddcb90e93
+index 0000000..40014b8
+Binary files /dev/null and b/fuzz/corpora/asn1/1473d4569f0c2f8e92ac16afca6f2b2b8f124af8 differ
+diff --git a/fuzz/corpora/asn1/14bc1ae947b39b448b6bec5182cef0eb7db847d4 b/fuzz/corpora/asn1/14bc1ae947b39b448b6bec5182cef0eb7db847d4
 new file mode 100644
-index 000000000000..38865dbd3af0
-Binary files /dev/null and b/fuzz/corpora/asn1/0e513a5074a6d02ce93d9b42aa2c98eddcb90e93 differ
-diff --git a/fuzz/corpora/asn1/0e67e4b21db103194f77e4d0e81154fb9d06a16e b/fuzz/corpora/asn1/0e67e4b21db103194f77e4d0e81154fb9d06a16e
+index 0000000..8f39bef
+Binary files /dev/null and b/fuzz/corpora/asn1/14bc1ae947b39b448b6bec5182cef0eb7db847d4 differ
+diff --git a/fuzz/corpora/asn1/157ab9b35e077788bf3062b738dbc4bd9592d84d b/fuzz/corpora/asn1/157ab9b35e077788bf3062b738dbc4bd9592d84d
 new file mode 100644
-index 000000000000..937fbc0c760b
-Binary files /dev/null and b/fuzz/corpora/asn1/0e67e4b21db103194f77e4d0e81154fb9d06a16e differ
-diff --git a/fuzz/corpora/asn1/0e76b4cb03a1ce43cd2a0aa6d89e5bef52cb858c b/fuzz/corpora/asn1/0e76b4cb03a1ce43cd2a0aa6d89e5bef52cb858c
+index 0000000..d91593c
+Binary files /dev/null and b/fuzz/corpora/asn1/157ab9b35e077788bf3062b738dbc4bd9592d84d differ
+diff --git a/fuzz/corpora/asn1/1601617abbd702da71e8a5dd25627ae3ed38696e b/fuzz/corpora/asn1/1601617abbd702da71e8a5dd25627ae3ed38696e
 new file mode 100644
-index 000000000000..e5da445af647
-Binary files /dev/null and b/fuzz/corpora/asn1/0e76b4cb03a1ce43cd2a0aa6d89e5bef52cb858c differ
-diff --git a/fuzz/corpora/asn1/0eb5037935ba1c2791f3b7e9bc8470c3c60d2aff b/fuzz/corpora/asn1/0eb5037935ba1c2791f3b7e9bc8470c3c60d2aff
+index 0000000..67ab9f8
+Binary files /dev/null and b/fuzz/corpora/asn1/1601617abbd702da71e8a5dd25627ae3ed38696e differ
+diff --git a/fuzz/corpora/asn1/161b0b67e7eac76a2a7b1bb46595d7e54b5d8ab2 b/fuzz/corpora/asn1/161b0b67e7eac76a2a7b1bb46595d7e54b5d8ab2
 new file mode 100644
-index 000000000000..1c8ce6f6a013
-Binary files /dev/null and b/fuzz/corpora/asn1/0eb5037935ba1c2791f3b7e9bc8470c3c60d2aff differ
-diff --git a/fuzz/corpora/asn1/0edb352393021d0db2b80e02bfb287ff11d034d4 b/fuzz/corpora/asn1/0edb352393021d0db2b80e02bfb287ff11d034d4
+index 0000000..cf5eca6
+Binary files /dev/null and b/fuzz/corpora/asn1/161b0b67e7eac76a2a7b1bb46595d7e54b5d8ab2 differ
+diff --git a/fuzz/corpora/asn1/16b5f141f7dc87e3fd2a495b234eef1201562af4 b/fuzz/corpora/asn1/16b5f141f7dc87e3fd2a495b234eef1201562af4
 new file mode 100644
-index 000000000000..b12f79c9e81f
-Binary files /dev/null and b/fuzz/corpora/asn1/0edb352393021d0db2b80e02bfb287ff11d034d4 differ
-diff --git a/fuzz/corpora/asn1/0f331c5b2532970dc460ab9e92e865f14703ff68 b/fuzz/corpora/asn1/0f331c5b2532970dc460ab9e92e865f14703ff68
+index 0000000..33e01ff
+Binary files /dev/null and b/fuzz/corpora/asn1/16b5f141f7dc87e3fd2a495b234eef1201562af4 differ
+diff --git a/fuzz/corpora/asn1/16dba7a632295190ba58a1c3514dedac11d6b2f5 b/fuzz/corpora/asn1/16dba7a632295190ba58a1c3514dedac11d6b2f5
 new file mode 100644
-index 000000000000..9cc0602b710d
-Binary files /dev/null and b/fuzz/corpora/asn1/0f331c5b2532970dc460ab9e92e865f14703ff68 differ
-diff --git a/fuzz/corpora/asn1/0f381ed59fa3d001aa16435bf29bbd367a5b5b8c b/fuzz/corpora/asn1/0f381ed59fa3d001aa16435bf29bbd367a5b5b8c
+index 0000000..caa2a82
+Binary files /dev/null and b/fuzz/corpora/asn1/16dba7a632295190ba58a1c3514dedac11d6b2f5 differ
+diff --git a/fuzz/corpora/asn1/1832bb739f0f22c1d72752c8ece60111c4d02011 b/fuzz/corpora/asn1/1832bb739f0f22c1d72752c8ece60111c4d02011
 new file mode 100644
-index 000000000000..cd59e091ed1a
-Binary files /dev/null and b/fuzz/corpora/asn1/0f381ed59fa3d001aa16435bf29bbd367a5b5b8c differ
-diff --git a/fuzz/corpora/asn1/0f6148cea7508438975382bdd10b48fb9685b8e4 b/fuzz/corpora/asn1/0f6148cea7508438975382bdd10b48fb9685b8e4
+index 0000000..1f8b3b7
+Binary files /dev/null and b/fuzz/corpora/asn1/1832bb739f0f22c1d72752c8ece60111c4d02011 differ
+diff --git a/fuzz/corpora/asn1/185036d6fddb06db6b02379eff60009e61f9e9d3 b/fuzz/corpora/asn1/185036d6fddb06db6b02379eff60009e61f9e9d3
 new file mode 100644
-index 000000000000..0c5960095aa7
-Binary files /dev/null and b/fuzz/corpora/asn1/0f6148cea7508438975382bdd10b48fb9685b8e4 differ
-diff --git a/fuzz/corpora/asn1/109ba1974132c127add3329c99db0697a0f61390 b/fuzz/corpora/asn1/109ba1974132c127add3329c99db0697a0f61390
+index 0000000..fccd3fd
+Binary files /dev/null and b/fuzz/corpora/asn1/185036d6fddb06db6b02379eff60009e61f9e9d3 differ
+diff --git a/fuzz/corpora/asn1/18ccda0e109b97078629fec6f9f28976ec695da0 b/fuzz/corpora/asn1/18ccda0e109b97078629fec6f9f28976ec695da0
 new file mode 100644
-index 000000000000..7216756cb5a7
-Binary files /dev/null and b/fuzz/corpora/asn1/109ba1974132c127add3329c99db0697a0f61390 differ
-diff --git a/fuzz/corpora/asn1/1125fbc423108711ae75f05f148d41f11bd625de b/fuzz/corpora/asn1/1125fbc423108711ae75f05f148d41f11bd625de
+index 0000000..1862825
+Binary files /dev/null and b/fuzz/corpora/asn1/18ccda0e109b97078629fec6f9f28976ec695da0 differ
+diff --git a/fuzz/corpora/asn1/198698c8c07cc1cd6177d5443bc5938aaf0e6a76 b/fuzz/corpora/asn1/198698c8c07cc1cd6177d5443bc5938aaf0e6a76
 new file mode 100644
-index 000000000000..ae857dabc5c0
-Binary files /dev/null and b/fuzz/corpora/asn1/1125fbc423108711ae75f05f148d41f11bd625de differ
-diff --git a/fuzz/corpora/asn1/12db33ae760866cd039ed903ba8c45ae25f4a1d5 b/fuzz/corpora/asn1/12db33ae760866cd039ed903ba8c45ae25f4a1d5
+index 0000000..3634ecb
+Binary files /dev/null and b/fuzz/corpora/asn1/198698c8c07cc1cd6177d5443bc5938aaf0e6a76 differ
+diff --git a/fuzz/corpora/asn1/199bc5dd543a2bca85d4211bc36fe4f370e397af b/fuzz/corpora/asn1/199bc5dd543a2bca85d4211bc36fe4f370e397af
 new file mode 100644
-index 000000000000..7c5ed426679f
-Binary files /dev/null and b/fuzz/corpora/asn1/12db33ae760866cd039ed903ba8c45ae25f4a1d5 differ
-diff --git a/fuzz/corpora/asn1/13512eb94ff9439bd0c2a57fe735add1d8a2a12b b/fuzz/corpora/asn1/13512eb94ff9439bd0c2a57fe735add1d8a2a12b
+index 0000000..b7087f0
+Binary files /dev/null and b/fuzz/corpora/asn1/199bc5dd543a2bca85d4211bc36fe4f370e397af differ
+diff --git a/fuzz/corpora/asn1/19a2926280cbdb2190aefc048b28af0c3a3fe325 b/fuzz/corpora/asn1/19a2926280cbdb2190aefc048b28af0c3a3fe325
 new file mode 100644
-index 000000000000..0264a4d38aa3
-Binary files /dev/null and b/fuzz/corpora/asn1/13512eb94ff9439bd0c2a57fe735add1d8a2a12b differ
-diff --git a/fuzz/corpora/asn1/135ebf86cedc0098413d66d88b88d4c698e0b0e5 b/fuzz/corpora/asn1/135ebf86cedc0098413d66d88b88d4c698e0b0e5
+index 0000000..02d4292
+Binary files /dev/null and b/fuzz/corpora/asn1/19a2926280cbdb2190aefc048b28af0c3a3fe325 differ
+diff --git a/fuzz/corpora/asn1/1b59931fcdf91917110547f6214a0e55f3955d67 b/fuzz/corpora/asn1/1b59931fcdf91917110547f6214a0e55f3955d67
 new file mode 100644
-index 000000000000..c87dd367192e
-Binary files /dev/null and b/fuzz/corpora/asn1/135ebf86cedc0098413d66d88b88d4c698e0b0e5 differ
-diff --git a/fuzz/corpora/asn1/138941acaa97ba86c44c14e52b29092bf3f2fb4f b/fuzz/corpora/asn1/138941acaa97ba86c44c14e52b29092bf3f2fb4f
+index 0000000..896f7d1
+Binary files /dev/null and b/fuzz/corpora/asn1/1b59931fcdf91917110547f6214a0e55f3955d67 differ
+diff --git a/fuzz/corpora/asn1/1b9fc3140db0dd1fac54a30ff7a952f498357b57 b/fuzz/corpora/asn1/1b9fc3140db0dd1fac54a30ff7a952f498357b57
 new file mode 100644
-index 000000000000..079a8bf00e81
-Binary files /dev/null and b/fuzz/corpora/asn1/138941acaa97ba86c44c14e52b29092bf3f2fb4f differ
-diff --git a/fuzz/corpora/asn1/13d03b52439d6671ec1c40f077b118aea7febdb8 b/fuzz/corpora/asn1/13d03b52439d6671ec1c40f077b118aea7febdb8
+index 0000000..97abd7a
+Binary files /dev/null and b/fuzz/corpora/asn1/1b9fc3140db0dd1fac54a30ff7a952f498357b57 differ
+diff --git a/fuzz/corpora/asn1/1c70f3406ef7c9d64565be72494cc0497abf80b6 b/fuzz/corpora/asn1/1c70f3406ef7c9d64565be72494cc0497abf80b6
 new file mode 100644
-index 000000000000..9d24e3dc1219
-Binary files /dev/null and b/fuzz/corpora/asn1/13d03b52439d6671ec1c40f077b118aea7febdb8 differ
-diff --git a/fuzz/corpora/asn1/13da75fa23c963c97cb98bb5bacc1fa999c30696 b/fuzz/corpora/asn1/13da75fa23c963c97cb98bb5bacc1fa999c30696
+index 0000000..5d2a106
+Binary files /dev/null and b/fuzz/corpora/asn1/1c70f3406ef7c9d64565be72494cc0497abf80b6 differ
+diff --git a/fuzz/corpora/asn1/1d73a991ace2edf243fbd2530c84d3d31d5cf6af b/fuzz/corpora/asn1/1d73a991ace2edf243fbd2530c84d3d31d5cf6af
 new file mode 100644
-index 000000000000..b417ce81f8a1
-Binary files /dev/null and b/fuzz/corpora/asn1/13da75fa23c963c97cb98bb5bacc1fa999c30696 differ
-diff --git a/fuzz/corpora/asn1/140dfebef80fdb68bd404b9d7df81a75b550cc60 b/fuzz/corpora/asn1/140dfebef80fdb68bd404b9d7df81a75b550cc60
+index 0000000..f2084c1
+Binary files /dev/null and b/fuzz/corpora/asn1/1d73a991ace2edf243fbd2530c84d3d31d5cf6af differ
+diff --git a/fuzz/corpora/asn1/1db55e24ccf714535151ff4b1f95664a6799aa53 b/fuzz/corpora/asn1/1db55e24ccf714535151ff4b1f95664a6799aa53
 new file mode 100644
-index 000000000000..039cb01914bb
-Binary files /dev/null and b/fuzz/corpora/asn1/140dfebef80fdb68bd404b9d7df81a75b550cc60 differ
-diff --git a/fuzz/corpora/asn1/142921738558d2c7e9ac200a25320504e90a0df4 b/fuzz/corpora/asn1/142921738558d2c7e9ac200a25320504e90a0df4
+index 0000000..9b1818d
+Binary files /dev/null and b/fuzz/corpora/asn1/1db55e24ccf714535151ff4b1f95664a6799aa53 differ
+diff --git a/fuzz/corpora/asn1/1dfd87dff884809947c98655e8c800be2b2fceb1 b/fuzz/corpora/asn1/1dfd87dff884809947c98655e8c800be2b2fceb1
 new file mode 100644
-index 000000000000..42d2d911495e
-Binary files /dev/null and b/fuzz/corpora/asn1/142921738558d2c7e9ac200a25320504e90a0df4 differ
-diff --git a/fuzz/corpora/asn1/146a4976dce3f892f5a704eae34f51850f09556a b/fuzz/corpora/asn1/146a4976dce3f892f5a704eae34f51850f09556a
+index 0000000..b3dc40c
+Binary files /dev/null and b/fuzz/corpora/asn1/1dfd87dff884809947c98655e8c800be2b2fceb1 differ
+diff --git a/fuzz/corpora/asn1/1e053986e6701a49a46e0e2f86e1751503357705 b/fuzz/corpora/asn1/1e053986e6701a49a46e0e2f86e1751503357705
 new file mode 100644
-index 000000000000..2b54e1967d92
-Binary files /dev/null and b/fuzz/corpora/asn1/146a4976dce3f892f5a704eae34f51850f09556a differ
-diff --git a/fuzz/corpora/asn1/147fb3d06bb69e64efa650a3d5d957bf7998a30e b/fuzz/corpora/asn1/147fb3d06bb69e64efa650a3d5d957bf7998a30e
+index 0000000..0027fa6
+Binary files /dev/null and b/fuzz/corpora/asn1/1e053986e6701a49a46e0e2f86e1751503357705 differ
+diff --git a/fuzz/corpora/asn1/1e742ee7bbf5cbfd68b24bbad47842a31aeef3c4 b/fuzz/corpora/asn1/1e742ee7bbf5cbfd68b24bbad47842a31aeef3c4
 new file mode 100644
-index 000000000000..b1d9e2f35645
-Binary files /dev/null and b/fuzz/corpora/asn1/147fb3d06bb69e64efa650a3d5d957bf7998a30e differ
-diff --git a/fuzz/corpora/asn1/14f9a2ca6faa9b17ba5062687c27529061b13a6e b/fuzz/corpora/asn1/14f9a2ca6faa9b17ba5062687c27529061b13a6e
+index 0000000..cf07fb0
+Binary files /dev/null and b/fuzz/corpora/asn1/1e742ee7bbf5cbfd68b24bbad47842a31aeef3c4 differ
+diff --git a/fuzz/corpora/asn1/1e8aeb4d99cf53e09ecf9f2189543e3e1ea1b25a b/fuzz/corpora/asn1/1e8aeb4d99cf53e09ecf9f2189543e3e1ea1b25a
 new file mode 100644
-index 000000000000..7458421256bb
-Binary files /dev/null and b/fuzz/corpora/asn1/14f9a2ca6faa9b17ba5062687c27529061b13a6e differ
-diff --git a/fuzz/corpora/asn1/1521570d9d6337a8228276c43543f12d1ca5730f b/fuzz/corpora/asn1/1521570d9d6337a8228276c43543f12d1ca5730f
+index 0000000..72398c1
+Binary files /dev/null and b/fuzz/corpora/asn1/1e8aeb4d99cf53e09ecf9f2189543e3e1ea1b25a differ
+diff --git a/fuzz/corpora/asn1/1eeb2d4ae688e8b87cb27feaa538656dd16495d4 b/fuzz/corpora/asn1/1eeb2d4ae688e8b87cb27feaa538656dd16495d4
 new file mode 100644
-index 000000000000..19c8a5e3c45d
-Binary files /dev/null and b/fuzz/corpora/asn1/1521570d9d6337a8228276c43543f12d1ca5730f differ
-diff --git a/fuzz/corpora/asn1/156cf055fa2be07dea41f84b7637756d0469bd97 b/fuzz/corpora/asn1/156cf055fa2be07dea41f84b7637756d0469bd97
+index 0000000..2b85acc
+Binary files /dev/null and b/fuzz/corpora/asn1/1eeb2d4ae688e8b87cb27feaa538656dd16495d4 differ
+diff --git a/fuzz/corpora/asn1/1efabf67e60af252b66a60ba9f6c10c21322c062 b/fuzz/corpora/asn1/1efabf67e60af252b66a60ba9f6c10c21322c062
 new file mode 100644
-index 000000000000..c1f322ba5455
-Binary files /dev/null and b/fuzz/corpora/asn1/156cf055fa2be07dea41f84b7637756d0469bd97 differ
-diff --git a/fuzz/corpora/asn1/15b9d8e166c03af7e976f8aaca14c6d54d7a4e9e b/fuzz/corpora/asn1/15b9d8e166c03af7e976f8aaca14c6d54d7a4e9e
+index 0000000..fb758e1
+Binary files /dev/null and b/fuzz/corpora/asn1/1efabf67e60af252b66a60ba9f6c10c21322c062 differ
+diff --git a/fuzz/corpora/asn1/1f01cd296050714d6817cdaecdd53855f55f66c3 b/fuzz/corpora/asn1/1f01cd296050714d6817cdaecdd53855f55f66c3
 new file mode 100644
-index 000000000000..9450f2d0d0e6
-Binary files /dev/null and b/fuzz/corpora/asn1/15b9d8e166c03af7e976f8aaca14c6d54d7a4e9e differ
-diff --git a/fuzz/corpora/asn1/15c1c159bee5ce99ef0f8d0c7b7c3f30219a7ad8 b/fuzz/corpora/asn1/15c1c159bee5ce99ef0f8d0c7b7c3f30219a7ad8
+index 0000000..42a49ba
+Binary files /dev/null and b/fuzz/corpora/asn1/1f01cd296050714d6817cdaecdd53855f55f66c3 differ
+diff --git a/fuzz/corpora/asn1/1f8b4496fd82b52a53b87ef675266e42debd0b9e b/fuzz/corpora/asn1/1f8b4496fd82b52a53b87ef675266e42debd0b9e
 new file mode 100644
-index 000000000000..793571e7a602
-Binary files /dev/null and b/fuzz/corpora/asn1/15c1c159bee5ce99ef0f8d0c7b7c3f30219a7ad8 differ
-diff --git a/fuzz/corpora/asn1/15d825f06f55d4e7045d0645cdab09fd0e3201c2 b/fuzz/corpora/asn1/15d825f06f55d4e7045d0645cdab09fd0e3201c2
+index 0000000..41ba691
+Binary files /dev/null and b/fuzz/corpora/asn1/1f8b4496fd82b52a53b87ef675266e42debd0b9e differ
+diff --git a/fuzz/corpora/asn1/1fbff79c4f964cf8fccc19af6a4a0b450ea512bb b/fuzz/corpora/asn1/1fbff79c4f964cf8fccc19af6a4a0b450ea512bb
 new file mode 100644
-index 000000000000..8c144c6ed69c
-Binary files /dev/null and b/fuzz/corpora/asn1/15d825f06f55d4e7045d0645cdab09fd0e3201c2 differ
-diff --git a/fuzz/corpora/asn1/163c0cb7ca37c385e5ccaf87e8492fe94b6337d3 b/fuzz/corpora/asn1/163c0cb7ca37c385e5ccaf87e8492fe94b6337d3
+index 0000000..3fbf43c
+Binary files /dev/null and b/fuzz/corpora/asn1/1fbff79c4f964cf8fccc19af6a4a0b450ea512bb differ
+diff --git a/fuzz/corpora/asn1/20186945e10c1f507c9aec4e45b72c852d144dfd b/fuzz/corpora/asn1/20186945e10c1f507c9aec4e45b72c852d144dfd
 new file mode 100644
-index 000000000000..3c135d2bfe3b
-Binary files /dev/null and b/fuzz/corpora/asn1/163c0cb7ca37c385e5ccaf87e8492fe94b6337d3 differ
-diff --git a/fuzz/corpora/asn1/16529c406c958ca89739d5daba7a96e64cd9b2f7 b/fuzz/corpora/asn1/16529c406c958ca89739d5daba7a96e64cd9b2f7
+index 0000000..abe6dac
+Binary files /dev/null and b/fuzz/corpora/asn1/20186945e10c1f507c9aec4e45b72c852d144dfd differ
+diff --git a/fuzz/corpora/asn1/201ccf9086a3def73f2f61632ec31950cdbb7c1b b/fuzz/corpora/asn1/201ccf9086a3def73f2f61632ec31950cdbb7c1b
 new file mode 100644
-index 000000000000..02c2751018ad
-Binary files /dev/null and b/fuzz/corpora/asn1/16529c406c958ca89739d5daba7a96e64cd9b2f7 differ
-diff --git a/fuzz/corpora/asn1/16906ed4b42f24dc5ea064fad45be1619f93c624 b/fuzz/corpora/asn1/16906ed4b42f24dc5ea064fad45be1619f93c624
+index 0000000..1adc1e1
+Binary files /dev/null and b/fuzz/corpora/asn1/201ccf9086a3def73f2f61632ec31950cdbb7c1b differ
+diff --git a/fuzz/corpora/asn1/2059f36ddfb3613486d887a78d3e16a448f67de9 b/fuzz/corpora/asn1/2059f36ddfb3613486d887a78d3e16a448f67de9
 new file mode 100644
-index 000000000000..4018a41a2eb8
-Binary files /dev/null and b/fuzz/corpora/asn1/16906ed4b42f24dc5ea064fad45be1619f93c624 differ
-diff --git a/fuzz/corpora/asn1/16a6b569296d4c8098bd4f81cd1d18671b09a1de b/fuzz/corpora/asn1/16a6b569296d4c8098bd4f81cd1d18671b09a1de
+index 0000000..f1705e9
+Binary files /dev/null and b/fuzz/corpora/asn1/2059f36ddfb3613486d887a78d3e16a448f67de9 differ
+diff --git a/fuzz/corpora/asn1/20766d50bc70921056897f492668f6da906d5f92 b/fuzz/corpora/asn1/20766d50bc70921056897f492668f6da906d5f92
 new file mode 100644
-index 000000000000..e669ccea72fa
-Binary files /dev/null and b/fuzz/corpora/asn1/16a6b569296d4c8098bd4f81cd1d18671b09a1de differ
-diff --git a/fuzz/corpora/asn1/16b7c74ca82b178dab3b0c502fc304365aa4e363 b/fuzz/corpora/asn1/16b7c74ca82b178dab3b0c502fc304365aa4e363
+index 0000000..02ef330
+Binary files /dev/null and b/fuzz/corpora/asn1/20766d50bc70921056897f492668f6da906d5f92 differ
+diff --git a/fuzz/corpora/asn1/2119ab1038159967cf6545c21147d756ead89e77 b/fuzz/corpora/asn1/2119ab1038159967cf6545c21147d756ead89e77
 new file mode 100644
-index 000000000000..2e5a1d7f5775
-Binary files /dev/null and b/fuzz/corpora/asn1/16b7c74ca82b178dab3b0c502fc304365aa4e363 differ
-diff --git a/fuzz/corpora/asn1/16c8f8ac7b57bd5b58b41327228e3fa21201db68 b/fuzz/corpora/asn1/16c8f8ac7b57bd5b58b41327228e3fa21201db68
+index 0000000..4a697e3
+Binary files /dev/null and b/fuzz/corpora/asn1/2119ab1038159967cf6545c21147d756ead89e77 differ
+diff --git a/fuzz/corpora/asn1/2125eeb95b4ab5281a03b5c02412a2411c9e7972 b/fuzz/corpora/asn1/2125eeb95b4ab5281a03b5c02412a2411c9e7972
 new file mode 100644
-index 000000000000..75a14e47763e
-Binary files /dev/null and b/fuzz/corpora/asn1/16c8f8ac7b57bd5b58b41327228e3fa21201db68 differ
-diff --git a/fuzz/corpora/asn1/17100650cffbdb34405bc50d0815b6af08bc4860 b/fuzz/corpora/asn1/17100650cffbdb34405bc50d0815b6af08bc4860
+index 0000000..92c1139
+Binary files /dev/null and b/fuzz/corpora/asn1/2125eeb95b4ab5281a03b5c02412a2411c9e7972 differ
+diff --git a/fuzz/corpora/asn1/21fa40b26f9d01bd1d9aec4d7292f4602522371a b/fuzz/corpora/asn1/21fa40b26f9d01bd1d9aec4d7292f4602522371a
 new file mode 100644
-index 000000000000..07a77c530096
-Binary files /dev/null and b/fuzz/corpora/asn1/17100650cffbdb34405bc50d0815b6af08bc4860 differ
-diff --git a/fuzz/corpora/asn1/17339d65fba467948f75a25fb90547a7354457d2 b/fuzz/corpora/asn1/17339d65fba467948f75a25fb90547a7354457d2
+index 0000000..fe3bbec
+Binary files /dev/null and b/fuzz/corpora/asn1/21fa40b26f9d01bd1d9aec4d7292f4602522371a differ
+diff --git a/fuzz/corpora/asn1/226f1602c2476e955cd47bdcec7aa1458c804495 b/fuzz/corpora/asn1/226f1602c2476e955cd47bdcec7aa1458c804495
 new file mode 100644
-index 000000000000..1af4171e94d7
-Binary files /dev/null and b/fuzz/corpora/asn1/17339d65fba467948f75a25fb90547a7354457d2 differ
-diff --git a/fuzz/corpora/asn1/17480c205d8e14d241319419647b4f750f70deff b/fuzz/corpora/asn1/17480c205d8e14d241319419647b4f750f70deff
+index 0000000..cdd488b
+Binary files /dev/null and b/fuzz/corpora/asn1/226f1602c2476e955cd47bdcec7aa1458c804495 differ
+diff --git a/fuzz/corpora/asn1/22eefc3026a889e6f77d7557909acf9ce8fea4f5 b/fuzz/corpora/asn1/22eefc3026a889e6f77d7557909acf9ce8fea4f5
 new file mode 100644
-index 000000000000..2b4ad4f7f205
-Binary files /dev/null and b/fuzz/corpora/asn1/17480c205d8e14d241319419647b4f750f70deff differ
-diff --git a/fuzz/corpora/asn1/1761be328da435322035300a09891945afecd6b1 b/fuzz/corpora/asn1/1761be328da435322035300a09891945afecd6b1
+index 0000000..223950e
+Binary files /dev/null and b/fuzz/corpora/asn1/22eefc3026a889e6f77d7557909acf9ce8fea4f5 differ
+diff --git a/fuzz/corpora/asn1/22efaa6358b7d544d3593906739ffabf839d83b4 b/fuzz/corpora/asn1/22efaa6358b7d544d3593906739ffabf839d83b4
 new file mode 100644
-index 000000000000..17bc3583018c
-Binary files /dev/null and b/fuzz/corpora/asn1/1761be328da435322035300a09891945afecd6b1 differ
-diff --git a/fuzz/corpora/asn1/18741e31f9f34c387092adcf8d4e65c472c2bba9 b/fuzz/corpora/asn1/18741e31f9f34c387092adcf8d4e65c472c2bba9
+index 0000000..1b4aec0
+Binary files /dev/null and b/fuzz/corpora/asn1/22efaa6358b7d544d3593906739ffabf839d83b4 differ
+diff --git a/fuzz/corpora/asn1/235d5d70085db543bd7f17a6c81ee6857344d384 b/fuzz/corpora/asn1/235d5d70085db543bd7f17a6c81ee6857344d384
 new file mode 100644
-index 000000000000..b6f210ec1cb7
-Binary files /dev/null and b/fuzz/corpora/asn1/18741e31f9f34c387092adcf8d4e65c472c2bba9 differ
-diff --git a/fuzz/corpora/asn1/18d0a3a22218eeffc99347121734b32632c04868 b/fuzz/corpora/asn1/18d0a3a22218eeffc99347121734b32632c04868
+index 0000000..64ac817
+Binary files /dev/null and b/fuzz/corpora/asn1/235d5d70085db543bd7f17a6c81ee6857344d384 differ
+diff --git a/fuzz/corpora/asn1/239d8c71aaabbab62ae494a97f818865ef5de306 b/fuzz/corpora/asn1/239d8c71aaabbab62ae494a97f818865ef5de306
 new file mode 100644
-index 000000000000..e37ffc9ea7a7
-Binary files /dev/null and b/fuzz/corpora/asn1/18d0a3a22218eeffc99347121734b32632c04868 differ
-diff --git a/fuzz/corpora/asn1/18d5cd6fecd1853e1c24f1baf229b9f40fc932f9 b/fuzz/corpora/asn1/18d5cd6fecd1853e1c24f1baf229b9f40fc932f9
+index 0000000..045ce3b
+Binary files /dev/null and b/fuzz/corpora/asn1/239d8c71aaabbab62ae494a97f818865ef5de306 differ
+diff --git a/fuzz/corpora/asn1/247688efc4c52662bde1cc26f4a1515c2a865f25 b/fuzz/corpora/asn1/247688efc4c52662bde1cc26f4a1515c2a865f25
 new file mode 100644
-index 000000000000..2b17945fdc65
-Binary files /dev/null and b/fuzz/corpora/asn1/18d5cd6fecd1853e1c24f1baf229b9f40fc932f9 differ
-diff --git a/fuzz/corpora/asn1/18f556b305367d9ead225b0edf4f5136c91381fb b/fuzz/corpora/asn1/18f556b305367d9ead225b0edf4f5136c91381fb
+index 0000000..3dd7c7f
+Binary files /dev/null and b/fuzz/corpora/asn1/247688efc4c52662bde1cc26f4a1515c2a865f25 differ
+diff --git a/fuzz/corpora/asn1/2488b5ce7e73833c22626af89b907a22ecdf2772 b/fuzz/corpora/asn1/2488b5ce7e73833c22626af89b907a22ecdf2772
 new file mode 100644
-index 000000000000..64f74f105187
-Binary files /dev/null and b/fuzz/corpora/asn1/18f556b305367d9ead225b0edf4f5136c91381fb differ
-diff --git a/fuzz/corpora/asn1/197d09399a1fe2131f110140b033bd21b360108d b/fuzz/corpora/asn1/197d09399a1fe2131f110140b033bd21b360108d
+index 0000000..3ea5678
+Binary files /dev/null and b/fuzz/corpora/asn1/2488b5ce7e73833c22626af89b907a22ecdf2772 differ
+diff --git a/fuzz/corpora/asn1/24a0fdcd46a8d881d32779a6744af57122956db4 b/fuzz/corpora/asn1/24a0fdcd46a8d881d32779a6744af57122956db4
 new file mode 100644
-index 000000000000..f7b1fdf71f9c
-Binary files /dev/null and b/fuzz/corpora/asn1/197d09399a1fe2131f110140b033bd21b360108d differ
-diff --git a/fuzz/corpora/asn1/19936bc5bc16752c8b096e926dc92ec230893109 b/fuzz/corpora/asn1/19936bc5bc16752c8b096e926dc92ec230893109
+index 0000000..8bd1f9b
+Binary files /dev/null and b/fuzz/corpora/asn1/24a0fdcd46a8d881d32779a6744af57122956db4 differ
+diff --git a/fuzz/corpora/asn1/24ea03f656dee22836f41fdff109b51cf15fe610 b/fuzz/corpora/asn1/24ea03f656dee22836f41fdff109b51cf15fe610
 new file mode 100644
-index 000000000000..e74d05e4780c
-Binary files /dev/null and b/fuzz/corpora/asn1/19936bc5bc16752c8b096e926dc92ec230893109 differ
-diff --git a/fuzz/corpora/asn1/19b69c38270838c6e27bfc711d074f249dab0575 b/fuzz/corpora/asn1/19b69c38270838c6e27bfc711d074f249dab0575
+index 0000000..99451d4
+Binary files /dev/null and b/fuzz/corpora/asn1/24ea03f656dee22836f41fdff109b51cf15fe610 differ
+diff --git a/fuzz/corpora/asn1/25662f2ed02e9f664dc6530d179828ebdbc60335 b/fuzz/corpora/asn1/25662f2ed02e9f664dc6530d179828ebdbc60335
 new file mode 100644
-index 000000000000..2d0e8c1b1c17
-Binary files /dev/null and b/fuzz/corpora/asn1/19b69c38270838c6e27bfc711d074f249dab0575 differ
-diff --git a/fuzz/corpora/asn1/19eb8f9a988ab798a16ef562f7eb44fc2ea2a622 b/fuzz/corpora/asn1/19eb8f9a988ab798a16ef562f7eb44fc2ea2a622
+index 0000000..09eee80
+Binary files /dev/null and b/fuzz/corpora/asn1/25662f2ed02e9f664dc6530d179828ebdbc60335 differ
+diff --git a/fuzz/corpora/asn1/257229e8accca7e733def4852efd83fb804f8358 b/fuzz/corpora/asn1/257229e8accca7e733def4852efd83fb804f8358
 new file mode 100644
-index 000000000000..cb199b83e15e
-Binary files /dev/null and b/fuzz/corpora/asn1/19eb8f9a988ab798a16ef562f7eb44fc2ea2a622 differ
-diff --git a/fuzz/corpora/asn1/1a05c8910568029dcc9658ba357abe9596181958 b/fuzz/corpora/asn1/1a05c8910568029dcc9658ba357abe9596181958
+index 0000000..acc5adf
+Binary files /dev/null and b/fuzz/corpora/asn1/257229e8accca7e733def4852efd83fb804f8358 differ
+diff --git a/fuzz/corpora/asn1/25a02e8a73c825d25fa23f2ab182ad44da504681 b/fuzz/corpora/asn1/25a02e8a73c825d25fa23f2ab182ad44da504681
 new file mode 100644
-index 000000000000..63d9bde594ad
-Binary files /dev/null and b/fuzz/corpora/asn1/1a05c8910568029dcc9658ba357abe9596181958 differ
-diff --git a/fuzz/corpora/asn1/1a068b3d21fe9911715dcc1ccb77966a9074fac0 b/fuzz/corpora/asn1/1a068b3d21fe9911715dcc1ccb77966a9074fac0
+index 0000000..e591e7c
+Binary files /dev/null and b/fuzz/corpora/asn1/25a02e8a73c825d25fa23f2ab182ad44da504681 differ
+diff --git a/fuzz/corpora/asn1/25b944076c4f71c28399952443eff819b715d037 b/fuzz/corpora/asn1/25b944076c4f71c28399952443eff819b715d037
 new file mode 100644
-index 000000000000..89a5b2b0897a
-Binary files /dev/null and b/fuzz/corpora/asn1/1a068b3d21fe9911715dcc1ccb77966a9074fac0 differ
-diff --git a/fuzz/corpora/asn1/1a0ba76cea02ac6dfa6434c8d12bcf64fbf814e4 b/fuzz/corpora/asn1/1a0ba76cea02ac6dfa6434c8d12bcf64fbf814e4
+index 0000000..e3ea0b8
+Binary files /dev/null and b/fuzz/corpora/asn1/25b944076c4f71c28399952443eff819b715d037 differ
+diff --git a/fuzz/corpora/asn1/260d32084c95680a54f8ad93728ca5d5ea1e72c9 b/fuzz/corpora/asn1/260d32084c95680a54f8ad93728ca5d5ea1e72c9
 new file mode 100644
-index 000000000000..fd00e1856c38
-Binary files /dev/null and b/fuzz/corpora/asn1/1a0ba76cea02ac6dfa6434c8d12bcf64fbf814e4 differ
-diff --git a/fuzz/corpora/asn1/1a3a89ddabd5e921ba52fb95caf81db191c473f7 b/fuzz/corpora/asn1/1a3a89ddabd5e921ba52fb95caf81db191c473f7
+index 0000000..b043587
+Binary files /dev/null and b/fuzz/corpora/asn1/260d32084c95680a54f8ad93728ca5d5ea1e72c9 differ
+diff --git a/fuzz/corpora/asn1/26a7b9c14109dae427cad449bec9f0c225e1810d b/fuzz/corpora/asn1/26a7b9c14109dae427cad449bec9f0c225e1810d
 new file mode 100644
-index 000000000000..8dbf739a37c6
-Binary files /dev/null and b/fuzz/corpora/asn1/1a3a89ddabd5e921ba52fb95caf81db191c473f7 differ
-diff --git a/fuzz/corpora/asn1/1a9f9fc4356251ad9f1644b8106b14511b8af3a3 b/fuzz/corpora/asn1/1a9f9fc4356251ad9f1644b8106b14511b8af3a3
+index 0000000..50c033d
+Binary files /dev/null and b/fuzz/corpora/asn1/26a7b9c14109dae427cad449bec9f0c225e1810d differ
+diff --git a/fuzz/corpora/asn1/26c88e54e6015032a1aba37455474a1ee8ce847d b/fuzz/corpora/asn1/26c88e54e6015032a1aba37455474a1ee8ce847d
 new file mode 100644
-index 000000000000..23e87aaa3db2
-Binary files /dev/null and b/fuzz/corpora/asn1/1a9f9fc4356251ad9f1644b8106b14511b8af3a3 differ
-diff --git a/fuzz/corpora/asn1/1befa63a15051e8da6f881f8954553fe66626d8a b/fuzz/corpora/asn1/1befa63a15051e8da6f881f8954553fe66626d8a
+index 0000000..9f9b084
+Binary files /dev/null and b/fuzz/corpora/asn1/26c88e54e6015032a1aba37455474a1ee8ce847d differ
+diff --git a/fuzz/corpora/asn1/272a73430dff2986335b83922f238d3b0af2b76d b/fuzz/corpora/asn1/272a73430dff2986335b83922f238d3b0af2b76d
 new file mode 100644
-index 000000000000..bf174ee341ae
-Binary files /dev/null and b/fuzz/corpora/asn1/1befa63a15051e8da6f881f8954553fe66626d8a differ
-diff --git a/fuzz/corpora/asn1/1c07ef6e2d7aa21f2cb045ba66c21a97958950a1 b/fuzz/corpora/asn1/1c07ef6e2d7aa21f2cb045ba66c21a97958950a1
+index 0000000..9c2a1be
+Binary files /dev/null and b/fuzz/corpora/asn1/272a73430dff2986335b83922f238d3b0af2b76d differ
+diff --git a/fuzz/corpora/asn1/27ab47a9ff7f12971aa969ada276c881e062002a b/fuzz/corpora/asn1/27ab47a9ff7f12971aa969ada276c881e062002a
 new file mode 100644
-index 000000000000..34885b1bc0b2
-Binary files /dev/null and b/fuzz/corpora/asn1/1c07ef6e2d7aa21f2cb045ba66c21a97958950a1 differ
-diff --git a/fuzz/corpora/asn1/1c6d255534f4fadca1bfd12bae14c193137bffde b/fuzz/corpora/asn1/1c6d255534f4fadca1bfd12bae14c193137bffde
+index 0000000..f97eb53
+Binary files /dev/null and b/fuzz/corpora/asn1/27ab47a9ff7f12971aa969ada276c881e062002a differ
+diff --git a/fuzz/corpora/asn1/27bcd340392849e99bfd8e2794a1c92e3cc43afc b/fuzz/corpora/asn1/27bcd340392849e99bfd8e2794a1c92e3cc43afc
 new file mode 100644
-index 000000000000..3c3151d4108a
-Binary files /dev/null and b/fuzz/corpora/asn1/1c6d255534f4fadca1bfd12bae14c193137bffde differ
-diff --git a/fuzz/corpora/asn1/1c73068d40308b8f9cea5a81bce0f152ff0cfe6d b/fuzz/corpora/asn1/1c73068d40308b8f9cea5a81bce0f152ff0cfe6d
+index 0000000..ecab4af
+Binary files /dev/null and b/fuzz/corpora/asn1/27bcd340392849e99bfd8e2794a1c92e3cc43afc differ
+diff --git a/fuzz/corpora/asn1/27f5fef0f361ab387b6e56f6e8491064d5dd6531 b/fuzz/corpora/asn1/27f5fef0f361ab387b6e56f6e8491064d5dd6531
 new file mode 100644
-index 000000000000..8a8f671402a7
-Binary files /dev/null and b/fuzz/corpora/asn1/1c73068d40308b8f9cea5a81bce0f152ff0cfe6d differ
-diff --git a/fuzz/corpora/asn1/1c963aa8b26ac6dbb3a36e3237143b2f9d7f731d b/fuzz/corpora/asn1/1c963aa8b26ac6dbb3a36e3237143b2f9d7f731d
+index 0000000..b9c3091
+Binary files /dev/null and b/fuzz/corpora/asn1/27f5fef0f361ab387b6e56f6e8491064d5dd6531 differ
+diff --git a/fuzz/corpora/asn1/28acdfbed832e79acbeec09d7f0d0aa828b29146 b/fuzz/corpora/asn1/28acdfbed832e79acbeec09d7f0d0aa828b29146
 new file mode 100644
-index 000000000000..db6f5ad7af9d
-Binary files /dev/null and b/fuzz/corpora/asn1/1c963aa8b26ac6dbb3a36e3237143b2f9d7f731d differ
-diff --git a/fuzz/corpora/asn1/1cb4e301de5c1309c3ea0f77aa60927476cb44c2 b/fuzz/corpora/asn1/1cb4e301de5c1309c3ea0f77aa60927476cb44c2
+index 0000000..a22fc0f
+Binary files /dev/null and b/fuzz/corpora/asn1/28acdfbed832e79acbeec09d7f0d0aa828b29146 differ
+diff --git a/fuzz/corpora/asn1/290c536d83ed646bbdcf836de1dad96b0670fca6 b/fuzz/corpora/asn1/290c536d83ed646bbdcf836de1dad96b0670fca6
 new file mode 100644
-index 000000000000..6730a7b978d9
-Binary files /dev/null and b/fuzz/corpora/asn1/1cb4e301de5c1309c3ea0f77aa60927476cb44c2 differ
-diff --git a/fuzz/corpora/asn1/1cfbe241721295c3ab2939e75980430b4d3dd450 b/fuzz/corpora/asn1/1cfbe241721295c3ab2939e75980430b4d3dd450
+index 0000000..ede2bad
+Binary files /dev/null and b/fuzz/corpora/asn1/290c536d83ed646bbdcf836de1dad96b0670fca6 differ
+diff --git a/fuzz/corpora/asn1/291fa17ebf7125f2b8ae413b15620c0eed640fe2 b/fuzz/corpora/asn1/291fa17ebf7125f2b8ae413b15620c0eed640fe2
 new file mode 100644
-index 000000000000..b6d17516817d
-Binary files /dev/null and b/fuzz/corpora/asn1/1cfbe241721295c3ab2939e75980430b4d3dd450 differ
-diff --git a/fuzz/corpora/asn1/1d1e6d169c8d3e31ef0a0de0d6306dcfd2111e47 b/fuzz/corpora/asn1/1d1e6d169c8d3e31ef0a0de0d6306dcfd2111e47
+index 0000000..d74198a
+Binary files /dev/null and b/fuzz/corpora/asn1/291fa17ebf7125f2b8ae413b15620c0eed640fe2 differ
+diff --git a/fuzz/corpora/asn1/29ebb3aa035b56453700d6b8ea8280a8defb3a98 b/fuzz/corpora/asn1/29ebb3aa035b56453700d6b8ea8280a8defb3a98
 new file mode 100644
-index 000000000000..07cbf06da008
-Binary files /dev/null and b/fuzz/corpora/asn1/1d1e6d169c8d3e31ef0a0de0d6306dcfd2111e47 differ
-diff --git a/fuzz/corpora/asn1/1d3c7272c1441f264275d4f9af15969d6d77bd4e b/fuzz/corpora/asn1/1d3c7272c1441f264275d4f9af15969d6d77bd4e
+index 0000000..f9b9132
+Binary files /dev/null and b/fuzz/corpora/asn1/29ebb3aa035b56453700d6b8ea8280a8defb3a98 differ
+diff --git a/fuzz/corpora/asn1/2a7d4f911654e943a4ce7d2fa44a63e292dd69bb b/fuzz/corpora/asn1/2a7d4f911654e943a4ce7d2fa44a63e292dd69bb
 new file mode 100644
-index 000000000000..71e2eaa6222b
-Binary files /dev/null and b/fuzz/corpora/asn1/1d3c7272c1441f264275d4f9af15969d6d77bd4e differ
-diff --git a/fuzz/corpora/asn1/1d47bd4caeaecd08e272dbe2ed4ca5bf077b9086 b/fuzz/corpora/asn1/1d47bd4caeaecd08e272dbe2ed4ca5bf077b9086
+index 0000000..be91aa5
+Binary files /dev/null and b/fuzz/corpora/asn1/2a7d4f911654e943a4ce7d2fa44a63e292dd69bb differ
+diff --git a/fuzz/corpora/asn1/2ac07988db91cab7352c0442566d8ce1c74cf775 b/fuzz/corpora/asn1/2ac07988db91cab7352c0442566d8ce1c74cf775
 new file mode 100644
-index 000000000000..f8cf36e9984c
-Binary files /dev/null and b/fuzz/corpora/asn1/1d47bd4caeaecd08e272dbe2ed4ca5bf077b9086 differ
-diff --git a/fuzz/corpora/asn1/1e0017b185cd6adb9993f230845e76e565e2ebc9 b/fuzz/corpora/asn1/1e0017b185cd6adb9993f230845e76e565e2ebc9
+index 0000000..77c814d
+Binary files /dev/null and b/fuzz/corpora/asn1/2ac07988db91cab7352c0442566d8ce1c74cf775 differ
+diff --git a/fuzz/corpora/asn1/2b076169b4d8b250b373a2ee08bd3a0e5b751396 b/fuzz/corpora/asn1/2b076169b4d8b250b373a2ee08bd3a0e5b751396
 new file mode 100644
-index 000000000000..ed192cea42b8
-Binary files /dev/null and b/fuzz/corpora/asn1/1e0017b185cd6adb9993f230845e76e565e2ebc9 differ
-diff --git a/fuzz/corpora/asn1/1e00ab66fdd93834d335c83543295388ec0f5fda b/fuzz/corpora/asn1/1e00ab66fdd93834d335c83543295388ec0f5fda
+index 0000000..80123c5
+Binary files /dev/null and b/fuzz/corpora/asn1/2b076169b4d8b250b373a2ee08bd3a0e5b751396 differ
+diff --git a/fuzz/corpora/asn1/2b0e0b4bae9061e708842e449a84565adeff5816 b/fuzz/corpora/asn1/2b0e0b4bae9061e708842e449a84565adeff5816
 new file mode 100644
-index 000000000000..a94bdce48a7f
-Binary files /dev/null and b/fuzz/corpora/asn1/1e00ab66fdd93834d335c83543295388ec0f5fda differ
-diff --git a/fuzz/corpora/asn1/1e11673e33d2d3ab23a2e9fd45fa75cd37cd0235 b/fuzz/corpora/asn1/1e11673e33d2d3ab23a2e9fd45fa75cd37cd0235
+index 0000000..909c2eb
+Binary files /dev/null and b/fuzz/corpora/asn1/2b0e0b4bae9061e708842e449a84565adeff5816 differ
+diff --git a/fuzz/corpora/asn1/2b34ef2683b4ec8a631364709522dbaed77940ee b/fuzz/corpora/asn1/2b34ef2683b4ec8a631364709522dbaed77940ee
 new file mode 100644
-index 000000000000..762d60c176f1
-Binary files /dev/null and b/fuzz/corpora/asn1/1e11673e33d2d3ab23a2e9fd45fa75cd37cd0235 differ
-diff --git a/fuzz/corpora/asn1/1e1bc60a4e726dadbe9ace0a4b59f7557f6bb3f1 b/fuzz/corpora/asn1/1e1bc60a4e726dadbe9ace0a4b59f7557f6bb3f1
+index 0000000..6019796
+Binary files /dev/null and b/fuzz/corpora/asn1/2b34ef2683b4ec8a631364709522dbaed77940ee differ
+diff --git a/fuzz/corpora/asn1/2b86ecd479a55d5635b8c77f033273b0883f3e9e b/fuzz/corpora/asn1/2b86ecd479a55d5635b8c77f033273b0883f3e9e
 new file mode 100644
-index 000000000000..aaaf6c4d11ec
-Binary files /dev/null and b/fuzz/corpora/asn1/1e1bc60a4e726dadbe9ace0a4b59f7557f6bb3f1 differ
-diff --git a/fuzz/corpora/asn1/1e655f0c24867708cd3cdfe307423638e6c92038 b/fuzz/corpora/asn1/1e655f0c24867708cd3cdfe307423638e6c92038
+index 0000000..06e8884
+Binary files /dev/null and b/fuzz/corpora/asn1/2b86ecd479a55d5635b8c77f033273b0883f3e9e differ
+diff --git a/fuzz/corpora/asn1/2b9abd6991ddc296de6801640313dd1f1d1f82b2 b/fuzz/corpora/asn1/2b9abd6991ddc296de6801640313dd1f1d1f82b2
 new file mode 100644
-index 000000000000..034da00f7e74
-Binary files /dev/null and b/fuzz/corpora/asn1/1e655f0c24867708cd3cdfe307423638e6c92038 differ
-diff --git a/fuzz/corpora/asn1/1ed20b9297ec9329bb0671522873430f0956b563 b/fuzz/corpora/asn1/1ed20b9297ec9329bb0671522873430f0956b563
+index 0000000..6de4b74
+Binary files /dev/null and b/fuzz/corpora/asn1/2b9abd6991ddc296de6801640313dd1f1d1f82b2 differ
+diff --git a/fuzz/corpora/asn1/2cba67046c5a6ce38406838af8b2fdae255b9ea6 b/fuzz/corpora/asn1/2cba67046c5a6ce38406838af8b2fdae255b9ea6
 new file mode 100644
-index 000000000000..6c103e77087a
-Binary files /dev/null and b/fuzz/corpora/asn1/1ed20b9297ec9329bb0671522873430f0956b563 differ
-diff --git a/fuzz/corpora/asn1/1ee35c88b2f231590e3aa094d45839edc75eb0fa b/fuzz/corpora/asn1/1ee35c88b2f231590e3aa094d45839edc75eb0fa
+index 0000000..e034af9
+Binary files /dev/null and b/fuzz/corpora/asn1/2cba67046c5a6ce38406838af8b2fdae255b9ea6 differ
+diff --git a/fuzz/corpora/asn1/2ccb90602816e9a33f685ecc8b6f47488eb16c95 b/fuzz/corpora/asn1/2ccb90602816e9a33f685ecc8b6f47488eb16c95
 new file mode 100644
-index 000000000000..b002602e2df7
-Binary files /dev/null and b/fuzz/corpora/asn1/1ee35c88b2f231590e3aa094d45839edc75eb0fa differ
-diff --git a/fuzz/corpora/asn1/2050ad77b54bbdc1a7123854bff94be61591b348 b/fuzz/corpora/asn1/2050ad77b54bbdc1a7123854bff94be61591b348
+index 0000000..8a130fc
+Binary files /dev/null and b/fuzz/corpora/asn1/2ccb90602816e9a33f685ecc8b6f47488eb16c95 differ
+diff --git a/fuzz/corpora/asn1/2d4d812eb441023b2b6047a7286434d4c578fef4 b/fuzz/corpora/asn1/2d4d812eb441023b2b6047a7286434d4c578fef4
 new file mode 100644
-index 000000000000..adae66365b69
-Binary files /dev/null and b/fuzz/corpora/asn1/2050ad77b54bbdc1a7123854bff94be61591b348 differ
-diff --git a/fuzz/corpora/asn1/21917338871a048ce169272745ff797342bec3b9 b/fuzz/corpora/asn1/21917338871a048ce169272745ff797342bec3b9
+index 0000000..46b1387
+Binary files /dev/null and b/fuzz/corpora/asn1/2d4d812eb441023b2b6047a7286434d4c578fef4 differ
+diff --git a/fuzz/corpora/asn1/2d9f8f01e6c43c1601aebcf5da997c5bd663f599 b/fuzz/corpora/asn1/2d9f8f01e6c43c1601aebcf5da997c5bd663f599
 new file mode 100644
-index 000000000000..62774d0eb2c1
-Binary files /dev/null and b/fuzz/corpora/asn1/21917338871a048ce169272745ff797342bec3b9 differ
-diff --git a/fuzz/corpora/asn1/21b69111d4bd2c7092164f3d62058573a44f98b8 b/fuzz/corpora/asn1/21b69111d4bd2c7092164f3d62058573a44f98b8
+index 0000000..72fa2ae
+Binary files /dev/null and b/fuzz/corpora/asn1/2d9f8f01e6c43c1601aebcf5da997c5bd663f599 differ
+diff --git a/fuzz/corpora/asn1/2e3309282624aa9fe5c1fdf6a0b5e6974e09d63f b/fuzz/corpora/asn1/2e3309282624aa9fe5c1fdf6a0b5e6974e09d63f
 new file mode 100644
-index 000000000000..fec3b83e0475
-Binary files /dev/null and b/fuzz/corpora/asn1/21b69111d4bd2c7092164f3d62058573a44f98b8 differ
-diff --git a/fuzz/corpora/asn1/2230c7c6bc4e324b8c105e21a58a695f6c05bf1d b/fuzz/corpora/asn1/2230c7c6bc4e324b8c105e21a58a695f6c05bf1d
+index 0000000..ec5a37c
+Binary files /dev/null and b/fuzz/corpora/asn1/2e3309282624aa9fe5c1fdf6a0b5e6974e09d63f differ
+diff --git a/fuzz/corpora/asn1/2e390f5f09fb097de5857beea8d3a136894ac2eb b/fuzz/corpora/asn1/2e390f5f09fb097de5857beea8d3a136894ac2eb
 new file mode 100644
-index 000000000000..00fa73a186cb
-Binary files /dev/null and b/fuzz/corpora/asn1/2230c7c6bc4e324b8c105e21a58a695f6c05bf1d differ
-diff --git a/fuzz/corpora/asn1/2268e569755a984fa6243895c509c2efadb4f385 b/fuzz/corpora/asn1/2268e569755a984fa6243895c509c2efadb4f385
+index 0000000..74a3659
+Binary files /dev/null and b/fuzz/corpora/asn1/2e390f5f09fb097de5857beea8d3a136894ac2eb differ
+diff --git a/fuzz/corpora/asn1/2e6f8f58ebf4affab5711080521166130d41a240 b/fuzz/corpora/asn1/2e6f8f58ebf4affab5711080521166130d41a240
 new file mode 100644
-index 000000000000..ea761f737508
-Binary files /dev/null and b/fuzz/corpora/asn1/2268e569755a984fa6243895c509c2efadb4f385 differ
-diff --git a/fuzz/corpora/asn1/228d054c2498d91ee609a0ece3e9b176f75b8702 b/fuzz/corpora/asn1/228d054c2498d91ee609a0ece3e9b176f75b8702
+index 0000000..00109fb
+Binary files /dev/null and b/fuzz/corpora/asn1/2e6f8f58ebf4affab5711080521166130d41a240 differ
+diff --git a/fuzz/corpora/asn1/2ed47f8390db2e2481f18561fbdbddf91a6c84c6 b/fuzz/corpora/asn1/2ed47f8390db2e2481f18561fbdbddf91a6c84c6
 new file mode 100644
-index 000000000000..90c81b7a7f03
-Binary files /dev/null and b/fuzz/corpora/asn1/228d054c2498d91ee609a0ece3e9b176f75b8702 differ
-diff --git a/fuzz/corpora/asn1/22b8677fa5e61d164a9973520a4fc994411d53d8 b/fuzz/corpora/asn1/22b8677fa5e61d164a9973520a4fc994411d53d8
+index 0000000..fc47dd3
+Binary files /dev/null and b/fuzz/corpora/asn1/2ed47f8390db2e2481f18561fbdbddf91a6c84c6 differ
+diff --git a/fuzz/corpora/asn1/2f11418b258aabbe3ef157283dc179c83c971b0f b/fuzz/corpora/asn1/2f11418b258aabbe3ef157283dc179c83c971b0f
 new file mode 100644
-index 000000000000..0797778eab63
-Binary files /dev/null and b/fuzz/corpora/asn1/22b8677fa5e61d164a9973520a4fc994411d53d8 differ
-diff --git a/fuzz/corpora/asn1/22ba65074f722e194e4f254dfd05feece3544554 b/fuzz/corpora/asn1/22ba65074f722e194e4f254dfd05feece3544554
+index 0000000..f9dba88
+Binary files /dev/null and b/fuzz/corpora/asn1/2f11418b258aabbe3ef157283dc179c83c971b0f differ
+diff --git a/fuzz/corpora/asn1/2f3e96e2e432e4a79d236f149de42e7ab38152fa b/fuzz/corpora/asn1/2f3e96e2e432e4a79d236f149de42e7ab38152fa
 new file mode 100644
-index 000000000000..84e596ba9899
-Binary files /dev/null and b/fuzz/corpora/asn1/22ba65074f722e194e4f254dfd05feece3544554 differ
-diff --git a/fuzz/corpora/asn1/22c7b7467e763e11c0b875735bc67f7495ec8971 b/fuzz/corpora/asn1/22c7b7467e763e11c0b875735bc67f7495ec8971
+index 0000000..7cda646
+Binary files /dev/null and b/fuzz/corpora/asn1/2f3e96e2e432e4a79d236f149de42e7ab38152fa differ
+diff --git a/fuzz/corpora/asn1/2f8fe04399c725d8b469349ab27078ff9a191a6f b/fuzz/corpora/asn1/2f8fe04399c725d8b469349ab27078ff9a191a6f
 new file mode 100644
-index 000000000000..d5eedca8a93d
-Binary files /dev/null and b/fuzz/corpora/asn1/22c7b7467e763e11c0b875735bc67f7495ec8971 differ
-diff --git a/fuzz/corpora/asn1/22fdf61f7e1a31595e9c705699b55653a113da08 b/fuzz/corpora/asn1/22fdf61f7e1a31595e9c705699b55653a113da08
+index 0000000..df3cbee
+Binary files /dev/null and b/fuzz/corpora/asn1/2f8fe04399c725d8b469349ab27078ff9a191a6f differ
+diff --git a/fuzz/corpora/asn1/2fa5dc0a693bf74b29b0123fbdbec3e1460d4ddd b/fuzz/corpora/asn1/2fa5dc0a693bf74b29b0123fbdbec3e1460d4ddd
 new file mode 100644
-index 000000000000..766f8da67fec
-Binary files /dev/null and b/fuzz/corpora/asn1/22fdf61f7e1a31595e9c705699b55653a113da08 differ
-diff --git a/fuzz/corpora/asn1/2301d12dd043939f9884910c9310062e16665e12 b/fuzz/corpora/asn1/2301d12dd043939f9884910c9310062e16665e12
+index 0000000..1124cc4
+Binary files /dev/null and b/fuzz/corpora/asn1/2fa5dc0a693bf74b29b0123fbdbec3e1460d4ddd differ
+diff --git a/fuzz/corpora/asn1/300dbc480b25cf3588e2bfce64d4b8be2fcd1091 b/fuzz/corpora/asn1/300dbc480b25cf3588e2bfce64d4b8be2fcd1091
 new file mode 100644
-index 000000000000..f92a04a7dc2d
-Binary files /dev/null and b/fuzz/corpora/asn1/2301d12dd043939f9884910c9310062e16665e12 differ
-diff --git a/fuzz/corpora/asn1/23888ec012a499d9add5e708e7f78589024443f8 b/fuzz/corpora/asn1/23888ec012a499d9add5e708e7f78589024443f8
+index 0000000..c61a71f
+Binary files /dev/null and b/fuzz/corpora/asn1/300dbc480b25cf3588e2bfce64d4b8be2fcd1091 differ
+diff --git a/fuzz/corpora/asn1/30d28a1a6f48f1c535965b8ae935d5e0e5ee67bb b/fuzz/corpora/asn1/30d28a1a6f48f1c535965b8ae935d5e0e5ee67bb
 new file mode 100644
-index 000000000000..769dbb309446
-Binary files /dev/null and b/fuzz/corpora/asn1/23888ec012a499d9add5e708e7f78589024443f8 differ
-diff --git a/fuzz/corpora/asn1/238b7bccecb441257f3b64f64ef7026643969d01 b/fuzz/corpora/asn1/238b7bccecb441257f3b64f64ef7026643969d01
+index 0000000..6430d66
+Binary files /dev/null and b/fuzz/corpora/asn1/30d28a1a6f48f1c535965b8ae935d5e0e5ee67bb differ
+diff --git a/fuzz/corpora/asn1/319c0df7ba35cd3b9ba391defad83a65b0c43a28 b/fuzz/corpora/asn1/319c0df7ba35cd3b9ba391defad83a65b0c43a28
 new file mode 100644
-index 000000000000..2a74be56aad1
-Binary files /dev/null and b/fuzz/corpora/asn1/238b7bccecb441257f3b64f64ef7026643969d01 differ
-diff --git a/fuzz/corpora/asn1/23b9b4f7a91481b0e2b6a1c1b0ac3e772d03478b b/fuzz/corpora/asn1/23b9b4f7a91481b0e2b6a1c1b0ac3e772d03478b
+index 0000000..0bc94a6
+Binary files /dev/null and b/fuzz/corpora/asn1/319c0df7ba35cd3b9ba391defad83a65b0c43a28 differ
+diff --git a/fuzz/corpora/asn1/32a3832bc20a2cf50ec7e37c86f2df13c16179cd b/fuzz/corpora/asn1/32a3832bc20a2cf50ec7e37c86f2df13c16179cd
 new file mode 100644
-index 000000000000..157c6275efd7
-Binary files /dev/null and b/fuzz/corpora/asn1/23b9b4f7a91481b0e2b6a1c1b0ac3e772d03478b differ
-diff --git a/fuzz/corpora/asn1/23bad5d0182093cf73afe51291b2bd62f1d70602 b/fuzz/corpora/asn1/23bad5d0182093cf73afe51291b2bd62f1d70602
+index 0000000..a50e0fd
+Binary files /dev/null and b/fuzz/corpora/asn1/32a3832bc20a2cf50ec7e37c86f2df13c16179cd differ
+diff --git a/fuzz/corpora/asn1/32ca5d156403b6545f042da25d04a2d332554ee4 b/fuzz/corpora/asn1/32ca5d156403b6545f042da25d04a2d332554ee4
 new file mode 100644
-index 000000000000..de878d6913b0
-Binary files /dev/null and b/fuzz/corpora/asn1/23bad5d0182093cf73afe51291b2bd62f1d70602 differ
-diff --git a/fuzz/corpora/asn1/23d6011c415d9692fd0ea26c7a8874af901ff82c b/fuzz/corpora/asn1/23d6011c415d9692fd0ea26c7a8874af901ff82c
+index 0000000..e8d9e97
+Binary files /dev/null and b/fuzz/corpora/asn1/32ca5d156403b6545f042da25d04a2d332554ee4 differ
+diff --git a/fuzz/corpora/asn1/32e7849783e075d148777cd1ababf29f55ddd0ab b/fuzz/corpora/asn1/32e7849783e075d148777cd1ababf29f55ddd0ab
 new file mode 100644
-index 000000000000..f3ffdddd0f33
-Binary files /dev/null and b/fuzz/corpora/asn1/23d6011c415d9692fd0ea26c7a8874af901ff82c differ
-diff --git a/fuzz/corpora/asn1/240b76e7cac6fb08aba0d3e179e210debb9f5489 b/fuzz/corpora/asn1/240b76e7cac6fb08aba0d3e179e210debb9f5489
+index 0000000..07416cd
+Binary files /dev/null and b/fuzz/corpora/asn1/32e7849783e075d148777cd1ababf29f55ddd0ab differ
+diff --git a/fuzz/corpora/asn1/32f18ff5a5fd178ae76c8c096805b1aac5bc146f b/fuzz/corpora/asn1/32f18ff5a5fd178ae76c8c096805b1aac5bc146f
 new file mode 100644
-index 000000000000..ca9003e548d1
-Binary files /dev/null and b/fuzz/corpora/asn1/240b76e7cac6fb08aba0d3e179e210debb9f5489 differ
-diff --git a/fuzz/corpora/asn1/2429daf99e904bf0e49c41eab58e9e9f582fb271 b/fuzz/corpora/asn1/2429daf99e904bf0e49c41eab58e9e9f582fb271
+index 0000000..573b8d7
+Binary files /dev/null and b/fuzz/corpora/asn1/32f18ff5a5fd178ae76c8c096805b1aac5bc146f differ
+diff --git a/fuzz/corpora/asn1/33149bdcc6abc4f4a9505e7ae51234e93722b553 b/fuzz/corpora/asn1/33149bdcc6abc4f4a9505e7ae51234e93722b553
 new file mode 100644
-index 000000000000..258d006710ab
-Binary files /dev/null and b/fuzz/corpora/asn1/2429daf99e904bf0e49c41eab58e9e9f582fb271 differ
-diff --git a/fuzz/corpora/asn1/24e0a937b69fc7c867190b72230206588cbeb1dc b/fuzz/corpora/asn1/24e0a937b69fc7c867190b72230206588cbeb1dc
+index 0000000..fca00d6
+Binary files /dev/null and b/fuzz/corpora/asn1/33149bdcc6abc4f4a9505e7ae51234e93722b553 differ
+diff --git a/fuzz/corpora/asn1/33184719b40b23a016798b0aafbdd65f430b3941 b/fuzz/corpora/asn1/33184719b40b23a016798b0aafbdd65f430b3941
 new file mode 100644
-index 000000000000..df33d18e9508
-Binary files /dev/null and b/fuzz/corpora/asn1/24e0a937b69fc7c867190b72230206588cbeb1dc differ
-diff --git a/fuzz/corpora/asn1/254bb13b0222fb6b639a329349ca942ce21bf9c8 b/fuzz/corpora/asn1/254bb13b0222fb6b639a329349ca942ce21bf9c8
+index 0000000..9ca5ece
+Binary files /dev/null and b/fuzz/corpora/asn1/33184719b40b23a016798b0aafbdd65f430b3941 differ
+diff --git a/fuzz/corpora/asn1/334d4f7c8523990d8f5a3421f39677bcf03308c3 b/fuzz/corpora/asn1/334d4f7c8523990d8f5a3421f39677bcf03308c3
 new file mode 100644
-index 000000000000..0df8b8b2871b
-Binary files /dev/null and b/fuzz/corpora/asn1/254bb13b0222fb6b639a329349ca942ce21bf9c8 differ
-diff --git a/fuzz/corpora/asn1/2568e2299910fe70d10a41f1a6f4aad8cde5eda9 b/fuzz/corpora/asn1/2568e2299910fe70d10a41f1a6f4aad8cde5eda9
+index 0000000..a6cd417
+Binary files /dev/null and b/fuzz/corpora/asn1/334d4f7c8523990d8f5a3421f39677bcf03308c3 differ
+diff --git a/fuzz/corpora/asn1/337f4e069641e3f984c7ec2e3fd21e929842b5a2 b/fuzz/corpora/asn1/337f4e069641e3f984c7ec2e3fd21e929842b5a2
 new file mode 100644
-index 000000000000..c0201ca2cbc5
-Binary files /dev/null and b/fuzz/corpora/asn1/2568e2299910fe70d10a41f1a6f4aad8cde5eda9 differ
-diff --git a/fuzz/corpora/asn1/258c3722f6f55c8c677a00d523e21c04fe71006b b/fuzz/corpora/asn1/258c3722f6f55c8c677a00d523e21c04fe71006b
+index 0000000..9552587
+Binary files /dev/null and b/fuzz/corpora/asn1/337f4e069641e3f984c7ec2e3fd21e929842b5a2 differ
+diff --git a/fuzz/corpora/asn1/33893b4a5d14d4ec7ed54328190e4449124fcadf b/fuzz/corpora/asn1/33893b4a5d14d4ec7ed54328190e4449124fcadf
 new file mode 100644
-index 000000000000..f230d20ff7dd
-Binary files /dev/null and b/fuzz/corpora/asn1/258c3722f6f55c8c677a00d523e21c04fe71006b differ
-diff --git a/fuzz/corpora/asn1/258e5dc1a2e567d4b0fb7b19358c71f55a588119 b/fuzz/corpora/asn1/258e5dc1a2e567d4b0fb7b19358c71f55a588119
+index 0000000..0dbd4ad
+Binary files /dev/null and b/fuzz/corpora/asn1/33893b4a5d14d4ec7ed54328190e4449124fcadf differ
+diff --git a/fuzz/corpora/asn1/33e444fd8b38c33eebe330951049a859edccb0d6 b/fuzz/corpora/asn1/33e444fd8b38c33eebe330951049a859edccb0d6
 new file mode 100644
-index 000000000000..b6f49a3f07c2
-Binary files /dev/null and b/fuzz/corpora/asn1/258e5dc1a2e567d4b0fb7b19358c71f55a588119 differ
-diff --git a/fuzz/corpora/asn1/25a0f46987cfab0c601efaa7c24f6c3d438a1e9a b/fuzz/corpora/asn1/25a0f46987cfab0c601efaa7c24f6c3d438a1e9a
+index 0000000..98bb624
+Binary files /dev/null and b/fuzz/corpora/asn1/33e444fd8b38c33eebe330951049a859edccb0d6 differ
+diff --git a/fuzz/corpora/asn1/345bd68388e09b501c9e657174ac839b08490684 b/fuzz/corpora/asn1/345bd68388e09b501c9e657174ac839b08490684
 new file mode 100644
-index 000000000000..7ff7ce600235
-Binary files /dev/null and b/fuzz/corpora/asn1/25a0f46987cfab0c601efaa7c24f6c3d438a1e9a differ
-diff --git a/fuzz/corpora/asn1/25a151c6df6b962ed710dcd1db6f1e73222b9bac b/fuzz/corpora/asn1/25a151c6df6b962ed710dcd1db6f1e73222b9bac
+index 0000000..df6b39b
+Binary files /dev/null and b/fuzz/corpora/asn1/345bd68388e09b501c9e657174ac839b08490684 differ
+diff --git a/fuzz/corpora/asn1/347171eaf30bb2d236a0ac96e376728926203063 b/fuzz/corpora/asn1/347171eaf30bb2d236a0ac96e376728926203063
 new file mode 100644
-index 000000000000..ac0f42257416
-Binary files /dev/null and b/fuzz/corpora/asn1/25a151c6df6b962ed710dcd1db6f1e73222b9bac differ
-diff --git a/fuzz/corpora/asn1/25c6c63bb819f3b2b5c585fac9930146549b2b46 b/fuzz/corpora/asn1/25c6c63bb819f3b2b5c585fac9930146549b2b46
+index 0000000..6971803
+Binary files /dev/null and b/fuzz/corpora/asn1/347171eaf30bb2d236a0ac96e376728926203063 differ
+diff --git a/fuzz/corpora/asn1/348e087e3eb99f5d51551cc86905cddb1313ee60 b/fuzz/corpora/asn1/348e087e3eb99f5d51551cc86905cddb1313ee60
 new file mode 100644
-index 000000000000..943c708c9df4
-Binary files /dev/null and b/fuzz/corpora/asn1/25c6c63bb819f3b2b5c585fac9930146549b2b46 differ
-diff --git a/fuzz/corpora/asn1/2602870808dcf0cfd8769711da521a4e36305584 b/fuzz/corpora/asn1/2602870808dcf0cfd8769711da521a4e36305584
+index 0000000..d214326
+Binary files /dev/null and b/fuzz/corpora/asn1/348e087e3eb99f5d51551cc86905cddb1313ee60 differ
+diff --git a/fuzz/corpora/asn1/349abe618f170a4a3809f68dc93f3593945bef6c b/fuzz/corpora/asn1/349abe618f170a4a3809f68dc93f3593945bef6c
 new file mode 100644
-index 000000000000..1f01758eb859
-Binary files /dev/null and b/fuzz/corpora/asn1/2602870808dcf0cfd8769711da521a4e36305584 differ
-diff --git a/fuzz/corpora/asn1/26ce4fb388700a94829960923d905c7d64a17289 b/fuzz/corpora/asn1/26ce4fb388700a94829960923d905c7d64a17289
+index 0000000..8731300
+Binary files /dev/null and b/fuzz/corpora/asn1/349abe618f170a4a3809f68dc93f3593945bef6c differ
+diff --git a/fuzz/corpora/asn1/34c7a2e43a887258f3318afe8820d3476193d5e6 b/fuzz/corpora/asn1/34c7a2e43a887258f3318afe8820d3476193d5e6
 new file mode 100644
-index 000000000000..47474b671a56
-Binary files /dev/null and b/fuzz/corpora/asn1/26ce4fb388700a94829960923d905c7d64a17289 differ
-diff --git a/fuzz/corpora/asn1/274032d165ba23c575d462dc7324503b0c77f23f b/fuzz/corpora/asn1/274032d165ba23c575d462dc7324503b0c77f23f
+index 0000000..3158330
+Binary files /dev/null and b/fuzz/corpora/asn1/34c7a2e43a887258f3318afe8820d3476193d5e6 differ
+diff --git a/fuzz/corpora/asn1/3511326b46c76d66269b4505bd1e0585fc0ecce0 b/fuzz/corpora/asn1/3511326b46c76d66269b4505bd1e0585fc0ecce0
 new file mode 100644
-index 000000000000..f01b0795023a
-Binary files /dev/null and b/fuzz/corpora/asn1/274032d165ba23c575d462dc7324503b0c77f23f differ
-diff --git a/fuzz/corpora/asn1/276026734873c5f136a7977097fdf126ec105808 b/fuzz/corpora/asn1/276026734873c5f136a7977097fdf126ec105808
+index 0000000..31aee5e
+Binary files /dev/null and b/fuzz/corpora/asn1/3511326b46c76d66269b4505bd1e0585fc0ecce0 differ
+diff --git a/fuzz/corpora/asn1/357672ff8a333b57c345d2e415d7eda779229c76 b/fuzz/corpora/asn1/357672ff8a333b57c345d2e415d7eda779229c76
 new file mode 100644
-index 000000000000..db951d0f0081
-Binary files /dev/null and b/fuzz/corpora/asn1/276026734873c5f136a7977097fdf126ec105808 differ
-diff --git a/fuzz/corpora/asn1/2790bc59bcc4fcb8b723e054e924537037d8cce9 b/fuzz/corpora/asn1/2790bc59bcc4fcb8b723e054e924537037d8cce9
+index 0000000..fc40921
+Binary files /dev/null and b/fuzz/corpora/asn1/357672ff8a333b57c345d2e415d7eda779229c76 differ
+diff --git a/fuzz/corpora/asn1/3594e418036043716caee0dc5ad38201cacf59ce b/fuzz/corpora/asn1/3594e418036043716caee0dc5ad38201cacf59ce
 new file mode 100644
-index 000000000000..d275eb282ac8
-Binary files /dev/null and b/fuzz/corpora/asn1/2790bc59bcc4fcb8b723e054e924537037d8cce9 differ
-diff --git a/fuzz/corpora/asn1/27cf87c0b8442959521234a5db06357cce410119 b/fuzz/corpora/asn1/27cf87c0b8442959521234a5db06357cce410119
+index 0000000..00c788c
+Binary files /dev/null and b/fuzz/corpora/asn1/3594e418036043716caee0dc5ad38201cacf59ce differ
+diff --git a/fuzz/corpora/asn1/35fbd4bee538b385d7abfc56df4e701615f73784 b/fuzz/corpora/asn1/35fbd4bee538b385d7abfc56df4e701615f73784
 new file mode 100644
-index 000000000000..499db7f2da39
-Binary files /dev/null and b/fuzz/corpora/asn1/27cf87c0b8442959521234a5db06357cce410119 differ
-diff --git a/fuzz/corpora/asn1/27f65c19ea22fc48433cf9e3fd84d8cf308b6d64 b/fuzz/corpora/asn1/27f65c19ea22fc48433cf9e3fd84d8cf308b6d64
+index 0000000..95d25a7
+Binary files /dev/null and b/fuzz/corpora/asn1/35fbd4bee538b385d7abfc56df4e701615f73784 differ
+diff --git a/fuzz/corpora/asn1/3624f9cbb1f8456c3b90267c4936d106c1b9e5bd b/fuzz/corpora/asn1/3624f9cbb1f8456c3b90267c4936d106c1b9e5bd
 new file mode 100644
-index 000000000000..e410e2d5c101
-Binary files /dev/null and b/fuzz/corpora/asn1/27f65c19ea22fc48433cf9e3fd84d8cf308b6d64 differ
-diff --git a/fuzz/corpora/asn1/282263dbe3f55f0ad78656577b16e33b865914b7 b/fuzz/corpora/asn1/282263dbe3f55f0ad78656577b16e33b865914b7
+index 0000000..55d8bfc
+Binary files /dev/null and b/fuzz/corpora/asn1/3624f9cbb1f8456c3b90267c4936d106c1b9e5bd differ
+diff --git a/fuzz/corpora/asn1/3635441a6d36542c24a9549072870cdd7c837753 b/fuzz/corpora/asn1/3635441a6d36542c24a9549072870cdd7c837753
 new file mode 100644
-index 000000000000..470049a119c8
-Binary files /dev/null and b/fuzz/corpora/asn1/282263dbe3f55f0ad78656577b16e33b865914b7 differ
-diff --git a/fuzz/corpora/asn1/2868e5eb39ab9ef34cfe3da20c868bc90b0a420e b/fuzz/corpora/asn1/2868e5eb39ab9ef34cfe3da20c868bc90b0a420e
+index 0000000..2661bbf
+Binary files /dev/null and b/fuzz/corpora/asn1/3635441a6d36542c24a9549072870cdd7c837753 differ
+diff --git a/fuzz/corpora/asn1/368eaa8895518d4e5cb0be1595bf6dd298c11afc b/fuzz/corpora/asn1/368eaa8895518d4e5cb0be1595bf6dd298c11afc
 new file mode 100644
-index 000000000000..95200d447f71
-Binary files /dev/null and b/fuzz/corpora/asn1/2868e5eb39ab9ef34cfe3da20c868bc90b0a420e differ
-diff --git a/fuzz/corpora/asn1/286a29ff211d6dfbc87f2c2c6a83b34b0f06f741 b/fuzz/corpora/asn1/286a29ff211d6dfbc87f2c2c6a83b34b0f06f741
+index 0000000..da3ffbc
+Binary files /dev/null and b/fuzz/corpora/asn1/368eaa8895518d4e5cb0be1595bf6dd298c11afc differ
+diff --git a/fuzz/corpora/asn1/3747f5f72ab5f63bcc056cde8b59517042b3c766 b/fuzz/corpora/asn1/3747f5f72ab5f63bcc056cde8b59517042b3c766
 new file mode 100644
-index 000000000000..6c566e960eb5
-Binary files /dev/null and b/fuzz/corpora/asn1/286a29ff211d6dfbc87f2c2c6a83b34b0f06f741 differ
-diff --git a/fuzz/corpora/asn1/286cf42c7bd0092de67994ee688ee44c7ffce7e8 b/fuzz/corpora/asn1/286cf42c7bd0092de67994ee688ee44c7ffce7e8
+index 0000000..40c504b
+Binary files /dev/null and b/fuzz/corpora/asn1/3747f5f72ab5f63bcc056cde8b59517042b3c766 differ
+diff --git a/fuzz/corpora/asn1/378677007524e6d9f34e022939c81bc76e09b428 b/fuzz/corpora/asn1/378677007524e6d9f34e022939c81bc76e09b428
 new file mode 100644
-index 000000000000..7d462089f25f
-Binary files /dev/null and b/fuzz/corpora/asn1/286cf42c7bd0092de67994ee688ee44c7ffce7e8 differ
-diff --git a/fuzz/corpora/asn1/289fe8e5651232538829c69e8030051abd67d7cc b/fuzz/corpora/asn1/289fe8e5651232538829c69e8030051abd67d7cc
+index 0000000..18c3513
+Binary files /dev/null and b/fuzz/corpora/asn1/378677007524e6d9f34e022939c81bc76e09b428 differ
+diff --git a/fuzz/corpora/asn1/3798f152277f4cab5b0c27eb540255faad850890 b/fuzz/corpora/asn1/3798f152277f4cab5b0c27eb540255faad850890
 new file mode 100644
-index 000000000000..769f26cec4dd
-Binary files /dev/null and b/fuzz/corpora/asn1/289fe8e5651232538829c69e8030051abd67d7cc differ
-diff --git a/fuzz/corpora/asn1/28a1084fe28431c25765a8b81d40af5eea214340 b/fuzz/corpora/asn1/28a1084fe28431c25765a8b81d40af5eea214340
+index 0000000..04ea678
+Binary files /dev/null and b/fuzz/corpora/asn1/3798f152277f4cab5b0c27eb540255faad850890 differ
+diff --git a/fuzz/corpora/asn1/37c04fd318d6828861cb8a2c8ebcd1260d93d5a8 b/fuzz/corpora/asn1/37c04fd318d6828861cb8a2c8ebcd1260d93d5a8
 new file mode 100644
-index 000000000000..24675c267928
-Binary files /dev/null and b/fuzz/corpora/asn1/28a1084fe28431c25765a8b81d40af5eea214340 differ
-diff --git a/fuzz/corpora/asn1/28e63264622153fbaf072399811b3fd639f7d706 b/fuzz/corpora/asn1/28e63264622153fbaf072399811b3fd639f7d706
+index 0000000..ddb7a7b
+Binary files /dev/null and b/fuzz/corpora/asn1/37c04fd318d6828861cb8a2c8ebcd1260d93d5a8 differ
+diff --git a/fuzz/corpora/asn1/380e84418cb0633d81cb9b8b70c74ed44d7b3a66 b/fuzz/corpora/asn1/380e84418cb0633d81cb9b8b70c74ed44d7b3a66
 new file mode 100644
-index 000000000000..984b9301150e
-Binary files /dev/null and b/fuzz/corpora/asn1/28e63264622153fbaf072399811b3fd639f7d706 differ
-diff --git a/fuzz/corpora/asn1/299c515ae8722d3c25390383337b1ce7f490a65c b/fuzz/corpora/asn1/299c515ae8722d3c25390383337b1ce7f490a65c
+index 0000000..0188572
+Binary files /dev/null and b/fuzz/corpora/asn1/380e84418cb0633d81cb9b8b70c74ed44d7b3a66 differ
+diff --git a/fuzz/corpora/asn1/385200608a11d0b0c6c2be5ce07f77e18d60bdf7 b/fuzz/corpora/asn1/385200608a11d0b0c6c2be5ce07f77e18d60bdf7
 new file mode 100644
-index 000000000000..55a6aed54745
-Binary files /dev/null and b/fuzz/corpora/asn1/299c515ae8722d3c25390383337b1ce7f490a65c differ
-diff --git a/fuzz/corpora/asn1/29aa0c13b9f412ae32e7e750f1a68c7555ffa1e4 b/fuzz/corpora/asn1/29aa0c13b9f412ae32e7e750f1a68c7555ffa1e4
+index 0000000..57d3628
+Binary files /dev/null and b/fuzz/corpora/asn1/385200608a11d0b0c6c2be5ce07f77e18d60bdf7 differ
+diff --git a/fuzz/corpora/asn1/387a666e8e930cad08bc15b2d7e0ba4f4b0a4672 b/fuzz/corpora/asn1/387a666e8e930cad08bc15b2d7e0ba4f4b0a4672
 new file mode 100644
-index 000000000000..35a1a65730ca
-Binary files /dev/null and b/fuzz/corpora/asn1/29aa0c13b9f412ae32e7e750f1a68c7555ffa1e4 differ
-diff --git a/fuzz/corpora/asn1/29adeb146c70c05bf9865083e5bac6e6de39fcf5 b/fuzz/corpora/asn1/29adeb146c70c05bf9865083e5bac6e6de39fcf5
+index 0000000..fe9016a
+Binary files /dev/null and b/fuzz/corpora/asn1/387a666e8e930cad08bc15b2d7e0ba4f4b0a4672 differ
+diff --git a/fuzz/corpora/asn1/38a0ab613dedd85c7173aa098f3e44b011e1cd3f b/fuzz/corpora/asn1/38a0ab613dedd85c7173aa098f3e44b011e1cd3f
 new file mode 100644
-index 000000000000..1dc52a3ef2e2
-Binary files /dev/null and b/fuzz/corpora/asn1/29adeb146c70c05bf9865083e5bac6e6de39fcf5 differ
-diff --git a/fuzz/corpora/asn1/29ae6887f41b281016c90897e9ee51899a813582 b/fuzz/corpora/asn1/29ae6887f41b281016c90897e9ee51899a813582
+index 0000000..a324adb
+Binary files /dev/null and b/fuzz/corpora/asn1/38a0ab613dedd85c7173aa098f3e44b011e1cd3f differ
+diff --git a/fuzz/corpora/asn1/38b12ffff3ca6f71ad36704147e147fe36585b7c b/fuzz/corpora/asn1/38b12ffff3ca6f71ad36704147e147fe36585b7c
 new file mode 100644
-index 000000000000..888c5cfdcd0b
-Binary files /dev/null and b/fuzz/corpora/asn1/29ae6887f41b281016c90897e9ee51899a813582 differ
-diff --git a/fuzz/corpora/asn1/29b75ea701babb1529b2a27dfac4c4dd555afe61 b/fuzz/corpora/asn1/29b75ea701babb1529b2a27dfac4c4dd555afe61
+index 0000000..0fb7487
+Binary files /dev/null and b/fuzz/corpora/asn1/38b12ffff3ca6f71ad36704147e147fe36585b7c differ
+diff --git a/fuzz/corpora/asn1/3923557f5fd1c61d8e1f46e3dc6e42e858dd5c6e b/fuzz/corpora/asn1/3923557f5fd1c61d8e1f46e3dc6e42e858dd5c6e
 new file mode 100644
-index 000000000000..117366889bca
-Binary files /dev/null and b/fuzz/corpora/asn1/29b75ea701babb1529b2a27dfac4c4dd555afe61 differ
-diff --git a/fuzz/corpora/asn1/29d500715988c0b1bad870b28b922860dd559f49 b/fuzz/corpora/asn1/29d500715988c0b1bad870b28b922860dd559f49
+index 0000000..d3b8c0d
+Binary files /dev/null and b/fuzz/corpora/asn1/3923557f5fd1c61d8e1f46e3dc6e42e858dd5c6e differ
+diff --git a/fuzz/corpora/asn1/39ad279c305bd8bfe535dec7a97e5997c85e95a1 b/fuzz/corpora/asn1/39ad279c305bd8bfe535dec7a97e5997c85e95a1
 new file mode 100644
-index 000000000000..dd8f1b1e222b
-Binary files /dev/null and b/fuzz/corpora/asn1/29d500715988c0b1bad870b28b922860dd559f49 differ
-diff --git a/fuzz/corpora/asn1/29eaa6bc67968ff5d45704dc9fcf27950c863cc8 b/fuzz/corpora/asn1/29eaa6bc67968ff5d45704dc9fcf27950c863cc8
+index 0000000..fb24066
+Binary files /dev/null and b/fuzz/corpora/asn1/39ad279c305bd8bfe535dec7a97e5997c85e95a1 differ
+diff --git a/fuzz/corpora/asn1/3a199ae5839e654f22b30fb367e7c5542c747ea4 b/fuzz/corpora/asn1/3a199ae5839e654f22b30fb367e7c5542c747ea4
 new file mode 100644
-index 000000000000..2b8672a98e6a
-Binary files /dev/null and b/fuzz/corpora/asn1/29eaa6bc67968ff5d45704dc9fcf27950c863cc8 differ
-diff --git a/fuzz/corpora/asn1/2a0d22ca1d1394af74e7dee4658b44f99a0e19cf b/fuzz/corpora/asn1/2a0d22ca1d1394af74e7dee4658b44f99a0e19cf
+index 0000000..803f138
+Binary files /dev/null and b/fuzz/corpora/asn1/3a199ae5839e654f22b30fb367e7c5542c747ea4 differ
+diff --git a/fuzz/corpora/asn1/3a35a9022715bb9ad7490e92f3c82e4a327cc0e7 b/fuzz/corpora/asn1/3a35a9022715bb9ad7490e92f3c82e4a327cc0e7
 new file mode 100644
-index 000000000000..8b77169ef790
-Binary files /dev/null and b/fuzz/corpora/asn1/2a0d22ca1d1394af74e7dee4658b44f99a0e19cf differ
-diff --git a/fuzz/corpora/asn1/2a837a1e03b0d434c0d75d9f43f780cc2873f544 b/fuzz/corpora/asn1/2a837a1e03b0d434c0d75d9f43f780cc2873f544
+index 0000000..fa57042
+Binary files /dev/null and b/fuzz/corpora/asn1/3a35a9022715bb9ad7490e92f3c82e4a327cc0e7 differ
+diff --git a/fuzz/corpora/asn1/3ac2a5830d2521614d7cdb7b61d8f6e95fe2e58b b/fuzz/corpora/asn1/3ac2a5830d2521614d7cdb7b61d8f6e95fe2e58b
 new file mode 100644
-index 000000000000..2ff38bca431d
-Binary files /dev/null and b/fuzz/corpora/asn1/2a837a1e03b0d434c0d75d9f43f780cc2873f544 differ
-diff --git a/fuzz/corpora/asn1/2aaad08da76eaa70cac287b77c0cceb0c4c78dbd b/fuzz/corpora/asn1/2aaad08da76eaa70cac287b77c0cceb0c4c78dbd
+index 0000000..5c26926
+Binary files /dev/null and b/fuzz/corpora/asn1/3ac2a5830d2521614d7cdb7b61d8f6e95fe2e58b differ
+diff --git a/fuzz/corpora/asn1/3acf1b3adf612336975ad5caa624c26bfe98dbf0 b/fuzz/corpora/asn1/3acf1b3adf612336975ad5caa624c26bfe98dbf0
 new file mode 100644
-index 000000000000..4b39084788fa
-Binary files /dev/null and b/fuzz/corpora/asn1/2aaad08da76eaa70cac287b77c0cceb0c4c78dbd differ
-diff --git a/fuzz/corpora/asn1/2ab76f38fef86fda829246ae957106902376d27b b/fuzz/corpora/asn1/2ab76f38fef86fda829246ae957106902376d27b
+index 0000000..b73e216
+Binary files /dev/null and b/fuzz/corpora/asn1/3acf1b3adf612336975ad5caa624c26bfe98dbf0 differ
+diff --git a/fuzz/corpora/asn1/3c47caeaef1457850fa9b94d4392a830382fb7af b/fuzz/corpora/asn1/3c47caeaef1457850fa9b94d4392a830382fb7af
 new file mode 100644
-index 000000000000..22d93f870cff
-Binary files /dev/null and b/fuzz/corpora/asn1/2ab76f38fef86fda829246ae957106902376d27b differ
-diff --git a/fuzz/corpora/asn1/2abc6a93ce800d9ea7730558e1aa6aad4ead9dfd b/fuzz/corpora/asn1/2abc6a93ce800d9ea7730558e1aa6aad4ead9dfd
+index 0000000..27e2d36
+Binary files /dev/null and b/fuzz/corpora/asn1/3c47caeaef1457850fa9b94d4392a830382fb7af differ
+diff --git a/fuzz/corpora/asn1/3cfca2b16bd5b2c67dce1718c517dc6906a355f3 b/fuzz/corpora/asn1/3cfca2b16bd5b2c67dce1718c517dc6906a355f3
 new file mode 100644
-index 000000000000..fa779fcb67c0
-Binary files /dev/null and b/fuzz/corpora/asn1/2abc6a93ce800d9ea7730558e1aa6aad4ead9dfd differ
-diff --git a/fuzz/corpora/asn1/2ac6ce6fb846327a0c32184e87726b0fe8fe0d70 b/fuzz/corpora/asn1/2ac6ce6fb846327a0c32184e87726b0fe8fe0d70
+index 0000000..de32c7a
+Binary files /dev/null and b/fuzz/corpora/asn1/3cfca2b16bd5b2c67dce1718c517dc6906a355f3 differ
+diff --git a/fuzz/corpora/asn1/3db655a41ba9a773e5cb68fbe05d5d8ea7e7597f b/fuzz/corpora/asn1/3db655a41ba9a773e5cb68fbe05d5d8ea7e7597f
 new file mode 100644
-index 000000000000..17a92bf03e6c
-Binary files /dev/null and b/fuzz/corpora/asn1/2ac6ce6fb846327a0c32184e87726b0fe8fe0d70 differ
-diff --git a/fuzz/corpora/asn1/2aee1e5373981f68fc42991d5d880bfa91e3e514 b/fuzz/corpora/asn1/2aee1e5373981f68fc42991d5d880bfa91e3e514
+index 0000000..94a192a
+Binary files /dev/null and b/fuzz/corpora/asn1/3db655a41ba9a773e5cb68fbe05d5d8ea7e7597f differ
+diff --git a/fuzz/corpora/asn1/3dfa5027157aa4dd1ab0dbc178f2abc6a2cb4749 b/fuzz/corpora/asn1/3dfa5027157aa4dd1ab0dbc178f2abc6a2cb4749
 new file mode 100644
-index 000000000000..5831e2bde9f4
-Binary files /dev/null and b/fuzz/corpora/asn1/2aee1e5373981f68fc42991d5d880bfa91e3e514 differ
-diff --git a/fuzz/corpora/asn1/2b3e079aaef29487060bc0ffb43eae3dabe04e8b b/fuzz/corpora/asn1/2b3e079aaef29487060bc0ffb43eae3dabe04e8b
+index 0000000..8687517
+Binary files /dev/null and b/fuzz/corpora/asn1/3dfa5027157aa4dd1ab0dbc178f2abc6a2cb4749 differ
+diff --git a/fuzz/corpora/asn1/3e1f40595a47ad6173c5f353fb1a4419e4e553fc b/fuzz/corpora/asn1/3e1f40595a47ad6173c5f353fb1a4419e4e553fc
 new file mode 100644
-index 000000000000..855f481cb891
-Binary files /dev/null and b/fuzz/corpora/asn1/2b3e079aaef29487060bc0ffb43eae3dabe04e8b differ
-diff --git a/fuzz/corpora/asn1/2b7ef105f42e8599276b8e4d9426095fbeec562f b/fuzz/corpora/asn1/2b7ef105f42e8599276b8e4d9426095fbeec562f
+index 0000000..0d54d82
+Binary files /dev/null and b/fuzz/corpora/asn1/3e1f40595a47ad6173c5f353fb1a4419e4e553fc differ
+diff --git a/fuzz/corpora/asn1/3e7ddc8ed2d42b4ad52d72e008475eca6901eb54 b/fuzz/corpora/asn1/3e7ddc8ed2d42b4ad52d72e008475eca6901eb54
 new file mode 100644
-index 000000000000..6a081cb8f6fb
-Binary files /dev/null and b/fuzz/corpora/asn1/2b7ef105f42e8599276b8e4d9426095fbeec562f differ
-diff --git a/fuzz/corpora/asn1/2be508d4d84a8b47541ff482e1608fdca76cab24 b/fuzz/corpora/asn1/2be508d4d84a8b47541ff482e1608fdca76cab24
+index 0000000..9c6ac27
+Binary files /dev/null and b/fuzz/corpora/asn1/3e7ddc8ed2d42b4ad52d72e008475eca6901eb54 differ
+diff --git a/fuzz/corpora/asn1/3ef6c43699bc40723cf2fd4d1cf0988fc920e8b2 b/fuzz/corpora/asn1/3ef6c43699bc40723cf2fd4d1cf0988fc920e8b2
 new file mode 100644
-index 000000000000..2619f6dd0991
-Binary files /dev/null and b/fuzz/corpora/asn1/2be508d4d84a8b47541ff482e1608fdca76cab24 differ
-diff --git a/fuzz/corpora/asn1/2c63ec92fe4cb9e0a525b7cf698a4de56d565e8b b/fuzz/corpora/asn1/2c63ec92fe4cb9e0a525b7cf698a4de56d565e8b
+index 0000000..5747a00
+Binary files /dev/null and b/fuzz/corpora/asn1/3ef6c43699bc40723cf2fd4d1cf0988fc920e8b2 differ
+diff --git a/fuzz/corpora/asn1/3f0dbc9596ee11c0fff7d60fe258a9b4fc102448 b/fuzz/corpora/asn1/3f0dbc9596ee11c0fff7d60fe258a9b4fc102448
 new file mode 100644
-index 000000000000..f2386cd2e867
-Binary files /dev/null and b/fuzz/corpora/asn1/2c63ec92fe4cb9e0a525b7cf698a4de56d565e8b differ
-diff --git a/fuzz/corpora/asn1/2c7de37347c7058f28a98df7cf101275014ccb28 b/fuzz/corpora/asn1/2c7de37347c7058f28a98df7cf101275014ccb28
+index 0000000..68fcb1b
+Binary files /dev/null and b/fuzz/corpora/asn1/3f0dbc9596ee11c0fff7d60fe258a9b4fc102448 differ
+diff --git a/fuzz/corpora/asn1/3f1ede82d469dc1e069905ebfaf98abfe5b3574f b/fuzz/corpora/asn1/3f1ede82d469dc1e069905ebfaf98abfe5b3574f
 new file mode 100644
-index 000000000000..c55534f24c1d
-Binary files /dev/null and b/fuzz/corpora/asn1/2c7de37347c7058f28a98df7cf101275014ccb28 differ
-diff --git a/fuzz/corpora/asn1/2c8e5c79be44522d4352d53996e32f3a670774fd b/fuzz/corpora/asn1/2c8e5c79be44522d4352d53996e32f3a670774fd
+index 0000000..abc52a0
+Binary files /dev/null and b/fuzz/corpora/asn1/3f1ede82d469dc1e069905ebfaf98abfe5b3574f differ
+diff --git a/fuzz/corpora/asn1/3f90415ad45ee677173d53df27e85e5c59e838da b/fuzz/corpora/asn1/3f90415ad45ee677173d53df27e85e5c59e838da
 new file mode 100644
-index 000000000000..6189c650e062
-Binary files /dev/null and b/fuzz/corpora/asn1/2c8e5c79be44522d4352d53996e32f3a670774fd differ
-diff --git a/fuzz/corpora/asn1/2d0c85cd8954f77e3627847d781f89278791093d b/fuzz/corpora/asn1/2d0c85cd8954f77e3627847d781f89278791093d
+index 0000000..48b028b
+Binary files /dev/null and b/fuzz/corpora/asn1/3f90415ad45ee677173d53df27e85e5c59e838da differ
+diff --git a/fuzz/corpora/asn1/402fa877d4caf7971dcbcd32314ca9a17122a9c9 b/fuzz/corpora/asn1/402fa877d4caf7971dcbcd32314ca9a17122a9c9
 new file mode 100644
-index 000000000000..8d4f0aaaa5cc
-Binary files /dev/null and b/fuzz/corpora/asn1/2d0c85cd8954f77e3627847d781f89278791093d differ
-diff --git a/fuzz/corpora/asn1/2d151e2767871afbfda4242267f3f8c3efecc044 b/fuzz/corpora/asn1/2d151e2767871afbfda4242267f3f8c3efecc044
+index 0000000..01c9572
+Binary files /dev/null and b/fuzz/corpora/asn1/402fa877d4caf7971dcbcd32314ca9a17122a9c9 differ
+diff --git a/fuzz/corpora/asn1/40f0ea9f1ccf03658e853078faa65ce9ff1f5b89 b/fuzz/corpora/asn1/40f0ea9f1ccf03658e853078faa65ce9ff1f5b89
 new file mode 100644
-index 000000000000..98122a17080c
-Binary files /dev/null and b/fuzz/corpora/asn1/2d151e2767871afbfda4242267f3f8c3efecc044 differ
-diff --git a/fuzz/corpora/asn1/2d6fb194ecb3d9472a5cb88eedfbd3c64d75f7ef b/fuzz/corpora/asn1/2d6fb194ecb3d9472a5cb88eedfbd3c64d75f7ef
+index 0000000..e4a7db9
+Binary files /dev/null and b/fuzz/corpora/asn1/40f0ea9f1ccf03658e853078faa65ce9ff1f5b89 differ
+diff --git a/fuzz/corpora/asn1/4118f19202eba604f16ff9779f83d0b5588275ef b/fuzz/corpora/asn1/4118f19202eba604f16ff9779f83d0b5588275ef
 new file mode 100644
-index 000000000000..0476c4269e80
-Binary files /dev/null and b/fuzz/corpora/asn1/2d6fb194ecb3d9472a5cb88eedfbd3c64d75f7ef differ
-diff --git a/fuzz/corpora/asn1/2d80f315c5a0d78bf4c98a1fc8ad6de2376901d8 b/fuzz/corpora/asn1/2d80f315c5a0d78bf4c98a1fc8ad6de2376901d8
+index 0000000..cfbcb14
+Binary files /dev/null and b/fuzz/corpora/asn1/4118f19202eba604f16ff9779f83d0b5588275ef differ
+diff --git a/fuzz/corpora/asn1/414f5678f95a36ad75a700940e29793f12c97ded b/fuzz/corpora/asn1/414f5678f95a36ad75a700940e29793f12c97ded
 new file mode 100644
-index 000000000000..53f0140f22f0
-Binary files /dev/null and b/fuzz/corpora/asn1/2d80f315c5a0d78bf4c98a1fc8ad6de2376901d8 differ
-diff --git a/fuzz/corpora/asn1/2e5a4fd1d9458f0a9f575e23e4e496fe64c1e287 b/fuzz/corpora/asn1/2e5a4fd1d9458f0a9f575e23e4e496fe64c1e287
+index 0000000..16df64e
+Binary files /dev/null and b/fuzz/corpora/asn1/414f5678f95a36ad75a700940e29793f12c97ded differ
+diff --git a/fuzz/corpora/asn1/42e77bb6904c89a883cb6d50f08a44c3625f7db9 b/fuzz/corpora/asn1/42e77bb6904c89a883cb6d50f08a44c3625f7db9
 new file mode 100644
-index 000000000000..54301154c376
-Binary files /dev/null and b/fuzz/corpora/asn1/2e5a4fd1d9458f0a9f575e23e4e496fe64c1e287 differ
-diff --git a/fuzz/corpora/asn1/2ea5a6132619dafbaf60c7971ab8c58ba883eb0f b/fuzz/corpora/asn1/2ea5a6132619dafbaf60c7971ab8c58ba883eb0f
+index 0000000..2cd7c2d
+Binary files /dev/null and b/fuzz/corpora/asn1/42e77bb6904c89a883cb6d50f08a44c3625f7db9 differ
+diff --git a/fuzz/corpora/asn1/42f7c071f1ca890c2ceb1e98d3279ec83ad6a85f b/fuzz/corpora/asn1/42f7c071f1ca890c2ceb1e98d3279ec83ad6a85f
 new file mode 100644
-index 000000000000..6133e1aed084
-Binary files /dev/null and b/fuzz/corpora/asn1/2ea5a6132619dafbaf60c7971ab8c58ba883eb0f differ
-diff --git a/fuzz/corpora/asn1/2ec11642f3840d2b802b820287e3a7896752c524 b/fuzz/corpora/asn1/2ec11642f3840d2b802b820287e3a7896752c524
+index 0000000..6838cd2
+Binary files /dev/null and b/fuzz/corpora/asn1/42f7c071f1ca890c2ceb1e98d3279ec83ad6a85f differ
+diff --git a/fuzz/corpora/asn1/42ff70e4c6482b755eda53d9599c5a498048df36 b/fuzz/corpora/asn1/42ff70e4c6482b755eda53d9599c5a498048df36
 new file mode 100644
-index 000000000000..6d262eaa2adf
-Binary files /dev/null and b/fuzz/corpora/asn1/2ec11642f3840d2b802b820287e3a7896752c524 differ
-diff --git a/fuzz/corpora/asn1/2f0c98d261ece1c10c4cf7a896f26be3e3c10725 b/fuzz/corpora/asn1/2f0c98d261ece1c10c4cf7a896f26be3e3c10725
+index 0000000..6168281
+Binary files /dev/null and b/fuzz/corpora/asn1/42ff70e4c6482b755eda53d9599c5a498048df36 differ
+diff --git a/fuzz/corpora/asn1/4356d5298465e4be0f0b690fc5dae955e26ccfb4 b/fuzz/corpora/asn1/4356d5298465e4be0f0b690fc5dae955e26ccfb4
 new file mode 100644
-index 000000000000..2a5e54821c13
-Binary files /dev/null and b/fuzz/corpora/asn1/2f0c98d261ece1c10c4cf7a896f26be3e3c10725 differ
-diff --git a/fuzz/corpora/asn1/2f17fec625b82b28d57da5cb2f21f84975887f26 b/fuzz/corpora/asn1/2f17fec625b82b28d57da5cb2f21f84975887f26
+index 0000000..3fdaa6b
+Binary files /dev/null and b/fuzz/corpora/asn1/4356d5298465e4be0f0b690fc5dae955e26ccfb4 differ
+diff --git a/fuzz/corpora/asn1/435b6d3643b613a79fcfbb165c4b7760c5c797ee b/fuzz/corpora/asn1/435b6d3643b613a79fcfbb165c4b7760c5c797ee
 new file mode 100644
-index 000000000000..447204e0f245
-Binary files /dev/null and b/fuzz/corpora/asn1/2f17fec625b82b28d57da5cb2f21f84975887f26 differ
-diff --git a/fuzz/corpora/asn1/2f35ba09a1c3cfada9a3095668bf3d415096c753 b/fuzz/corpora/asn1/2f35ba09a1c3cfada9a3095668bf3d415096c753
+index 0000000..91303a7
+Binary files /dev/null and b/fuzz/corpora/asn1/435b6d3643b613a79fcfbb165c4b7760c5c797ee differ
+diff --git a/fuzz/corpora/asn1/444c5c8991ebc6543e149816a7b9f3f2188e1bc5 b/fuzz/corpora/asn1/444c5c8991ebc6543e149816a7b9f3f2188e1bc5
 new file mode 100644
-index 000000000000..688c79ce4d56
-Binary files /dev/null and b/fuzz/corpora/asn1/2f35ba09a1c3cfada9a3095668bf3d415096c753 differ
-diff --git a/fuzz/corpora/asn1/2f3690062b0c5c791dc4a3c8981584f6dc98e501 b/fuzz/corpora/asn1/2f3690062b0c5c791dc4a3c8981584f6dc98e501
+index 0000000..b7d236b
+Binary files /dev/null and b/fuzz/corpora/asn1/444c5c8991ebc6543e149816a7b9f3f2188e1bc5 differ
+diff --git a/fuzz/corpora/asn1/445c3a6e5509021fd2aa1c785b8c52291e01d4bc b/fuzz/corpora/asn1/445c3a6e5509021fd2aa1c785b8c52291e01d4bc
 new file mode 100644
-index 000000000000..b2882252fc07
-Binary files /dev/null and b/fuzz/corpora/asn1/2f3690062b0c5c791dc4a3c8981584f6dc98e501 differ
-diff --git a/fuzz/corpora/asn1/2f3747513b466c2f4f6cd7d8b15d6015d74d1444 b/fuzz/corpora/asn1/2f3747513b466c2f4f6cd7d8b15d6015d74d1444
+index 0000000..08c261c
+Binary files /dev/null and b/fuzz/corpora/asn1/445c3a6e5509021fd2aa1c785b8c52291e01d4bc differ
+diff --git a/fuzz/corpora/asn1/45010837ada788fd363ecc80dd8492b2350de3fd b/fuzz/corpora/asn1/45010837ada788fd363ecc80dd8492b2350de3fd
 new file mode 100644
-index 000000000000..c03fa4918861
-Binary files /dev/null and b/fuzz/corpora/asn1/2f3747513b466c2f4f6cd7d8b15d6015d74d1444 differ
-diff --git a/fuzz/corpora/asn1/2fa6dcc1aa3717361187ae962c1f7dee44d63a01 b/fuzz/corpora/asn1/2fa6dcc1aa3717361187ae962c1f7dee44d63a01
+index 0000000..f1258b6
+Binary files /dev/null and b/fuzz/corpora/asn1/45010837ada788fd363ecc80dd8492b2350de3fd differ
+diff --git a/fuzz/corpora/asn1/45453d2de66005a8c343d5553b6f80b6a2553116 b/fuzz/corpora/asn1/45453d2de66005a8c343d5553b6f80b6a2553116
 new file mode 100644
-index 000000000000..61f58c04a2f7
-Binary files /dev/null and b/fuzz/corpora/asn1/2fa6dcc1aa3717361187ae962c1f7dee44d63a01 differ
-diff --git a/fuzz/corpora/asn1/2fbcbca97ebd948043a079535faffc43d90efcee b/fuzz/corpora/asn1/2fbcbca97ebd948043a079535faffc43d90efcee
+index 0000000..5a27dd7
+Binary files /dev/null and b/fuzz/corpora/asn1/45453d2de66005a8c343d5553b6f80b6a2553116 differ
+diff --git a/fuzz/corpora/asn1/45ba957914fc8ad4ad9e9be4bda9bb3c8b9f5567 b/fuzz/corpora/asn1/45ba957914fc8ad4ad9e9be4bda9bb3c8b9f5567
 new file mode 100644
-index 000000000000..de34a22cfe54
-Binary files /dev/null and b/fuzz/corpora/asn1/2fbcbca97ebd948043a079535faffc43d90efcee differ
-diff --git a/fuzz/corpora/asn1/2fc58c8fad13ef6edb1485702ecb77f3990c5122 b/fuzz/corpora/asn1/2fc58c8fad13ef6edb1485702ecb77f3990c5122
+index 0000000..29fff1d
+Binary files /dev/null and b/fuzz/corpora/asn1/45ba957914fc8ad4ad9e9be4bda9bb3c8b9f5567 differ
+diff --git a/fuzz/corpora/asn1/4613e22dbcad746474dac567e30138b891b5d315 b/fuzz/corpora/asn1/4613e22dbcad746474dac567e30138b891b5d315
 new file mode 100644
-index 000000000000..f1522253c328
-Binary files /dev/null and b/fuzz/corpora/asn1/2fc58c8fad13ef6edb1485702ecb77f3990c5122 differ
-diff --git a/fuzz/corpora/asn1/308c4a1eb9b3b74f9bdd4d59284c516b830e06de b/fuzz/corpora/asn1/308c4a1eb9b3b74f9bdd4d59284c516b830e06de
+index 0000000..4a73254
+Binary files /dev/null and b/fuzz/corpora/asn1/4613e22dbcad746474dac567e30138b891b5d315 differ
+diff --git a/fuzz/corpora/asn1/461964976a2bafa41e95602ab5f1a55832b6a4ad b/fuzz/corpora/asn1/461964976a2bafa41e95602ab5f1a55832b6a4ad
 new file mode 100644
-index 000000000000..dea896594aa5
-Binary files /dev/null and b/fuzz/corpora/asn1/308c4a1eb9b3b74f9bdd4d59284c516b830e06de differ
-diff --git a/fuzz/corpora/asn1/3091f307e992716bdb62fa83b359d8935258b512 b/fuzz/corpora/asn1/3091f307e992716bdb62fa83b359d8935258b512
+index 0000000..3f96747
+Binary files /dev/null and b/fuzz/corpora/asn1/461964976a2bafa41e95602ab5f1a55832b6a4ad differ
+diff --git a/fuzz/corpora/asn1/4717d5f18d20c11cf8b9e99d938e2587d7c4891c b/fuzz/corpora/asn1/4717d5f18d20c11cf8b9e99d938e2587d7c4891c
 new file mode 100644
-index 000000000000..3972b53f08fc
-Binary files /dev/null and b/fuzz/corpora/asn1/3091f307e992716bdb62fa83b359d8935258b512 differ
-diff --git a/fuzz/corpora/asn1/31bae95d75fbd8521595379199c9a72503ad4fb4 b/fuzz/corpora/asn1/31bae95d75fbd8521595379199c9a72503ad4fb4
+index 0000000..5317482
+Binary files /dev/null and b/fuzz/corpora/asn1/4717d5f18d20c11cf8b9e99d938e2587d7c4891c differ
+diff --git a/fuzz/corpora/asn1/481c8f6a2d2cde890b44dfe637f015fb7413a5ac b/fuzz/corpora/asn1/481c8f6a2d2cde890b44dfe637f015fb7413a5ac
 new file mode 100644
-index 000000000000..164ea84f2548
-Binary files /dev/null and b/fuzz/corpora/asn1/31bae95d75fbd8521595379199c9a72503ad4fb4 differ
-diff --git a/fuzz/corpora/asn1/31efd0749e5bd8bb2a721f017ee336d615993c39 b/fuzz/corpora/asn1/31efd0749e5bd8bb2a721f017ee336d615993c39
+index 0000000..76093b3
+Binary files /dev/null and b/fuzz/corpora/asn1/481c8f6a2d2cde890b44dfe637f015fb7413a5ac differ
+diff --git a/fuzz/corpora/asn1/4852491625c6c0779a756e2511928e3d629de538 b/fuzz/corpora/asn1/4852491625c6c0779a756e2511928e3d629de538
 new file mode 100644
-index 000000000000..6d8f47514fd5
-Binary files /dev/null and b/fuzz/corpora/asn1/31efd0749e5bd8bb2a721f017ee336d615993c39 differ
-diff --git a/fuzz/corpora/asn1/324ae92dbc48dd4b6fa71e8db0291f0b3ea1491e b/fuzz/corpora/asn1/324ae92dbc48dd4b6fa71e8db0291f0b3ea1491e
+index 0000000..f1c42cc
+Binary files /dev/null and b/fuzz/corpora/asn1/4852491625c6c0779a756e2511928e3d629de538 differ
+diff --git a/fuzz/corpora/asn1/48c91a84571f76a9b681173d43d67c58eb91b63f b/fuzz/corpora/asn1/48c91a84571f76a9b681173d43d67c58eb91b63f
 new file mode 100644
-index 000000000000..c01159839b22
-Binary files /dev/null and b/fuzz/corpora/asn1/324ae92dbc48dd4b6fa71e8db0291f0b3ea1491e differ
-diff --git a/fuzz/corpora/asn1/32993b1e22e7c1a062d8daa458e3271743a76218 b/fuzz/corpora/asn1/32993b1e22e7c1a062d8daa458e3271743a76218
+index 0000000..b3c50f7
+Binary files /dev/null and b/fuzz/corpora/asn1/48c91a84571f76a9b681173d43d67c58eb91b63f differ
+diff --git a/fuzz/corpora/asn1/492268a1c7e33f758bdac15df2feb8fe10bef776 b/fuzz/corpora/asn1/492268a1c7e33f758bdac15df2feb8fe10bef776
 new file mode 100644
-index 000000000000..b47112bc584d
-Binary files /dev/null and b/fuzz/corpora/asn1/32993b1e22e7c1a062d8daa458e3271743a76218 differ
-diff --git a/fuzz/corpora/asn1/32ec115ba802de649770e054c9d36a639f6f8155 b/fuzz/corpora/asn1/32ec115ba802de649770e054c9d36a639f6f8155
+index 0000000..d75854d
+Binary files /dev/null and b/fuzz/corpora/asn1/492268a1c7e33f758bdac15df2feb8fe10bef776 differ
+diff --git a/fuzz/corpora/asn1/4956492d6930faa9bf7b9b6f9616b124b0741d1a b/fuzz/corpora/asn1/4956492d6930faa9bf7b9b6f9616b124b0741d1a
 new file mode 100644
-index 000000000000..d379f13486e8
-Binary files /dev/null and b/fuzz/corpora/asn1/32ec115ba802de649770e054c9d36a639f6f8155 differ
-diff --git a/fuzz/corpora/asn1/3345ea88558a21fd3bb53822ecdc33b459046957 b/fuzz/corpora/asn1/3345ea88558a21fd3bb53822ecdc33b459046957
+index 0000000..bc259ac
+Binary files /dev/null and b/fuzz/corpora/asn1/4956492d6930faa9bf7b9b6f9616b124b0741d1a differ
+diff --git a/fuzz/corpora/asn1/49858f9dfe30f31bb9f6836c9fb0bdf06b3c3a2c b/fuzz/corpora/asn1/49858f9dfe30f31bb9f6836c9fb0bdf06b3c3a2c
 new file mode 100644
-index 000000000000..8e9377e8ee0d
-Binary files /dev/null and b/fuzz/corpora/asn1/3345ea88558a21fd3bb53822ecdc33b459046957 differ
-diff --git a/fuzz/corpora/asn1/335e71b1cd8a69f6fb0a5c2136f4faa1f337bb25 b/fuzz/corpora/asn1/335e71b1cd8a69f6fb0a5c2136f4faa1f337bb25
+index 0000000..182872b
+Binary files /dev/null and b/fuzz/corpora/asn1/49858f9dfe30f31bb9f6836c9fb0bdf06b3c3a2c differ
+diff --git a/fuzz/corpora/asn1/499b514a646a97eb238f27e70ddaf77a2b706de1 b/fuzz/corpora/asn1/499b514a646a97eb238f27e70ddaf77a2b706de1
 new file mode 100644
-index 000000000000..a9d0bd98194a
-Binary files /dev/null and b/fuzz/corpora/asn1/335e71b1cd8a69f6fb0a5c2136f4faa1f337bb25 differ
-diff --git a/fuzz/corpora/asn1/33640152e3f87368bcbc9124a3d9c67f7eab375e b/fuzz/corpora/asn1/33640152e3f87368bcbc9124a3d9c67f7eab375e
+index 0000000..4a19572
+Binary files /dev/null and b/fuzz/corpora/asn1/499b514a646a97eb238f27e70ddaf77a2b706de1 differ
+diff --git a/fuzz/corpora/asn1/49bdf45db7530e49261e96c980f1a827215776c0 b/fuzz/corpora/asn1/49bdf45db7530e49261e96c980f1a827215776c0
 new file mode 100644
-index 000000000000..536b838f597d
-Binary files /dev/null and b/fuzz/corpora/asn1/33640152e3f87368bcbc9124a3d9c67f7eab375e differ
-diff --git a/fuzz/corpora/asn1/3365e0ec84b9a429141c86cbe2f3ebd3f22a6205 b/fuzz/corpora/asn1/3365e0ec84b9a429141c86cbe2f3ebd3f22a6205
+index 0000000..30f3b37
+Binary files /dev/null and b/fuzz/corpora/asn1/49bdf45db7530e49261e96c980f1a827215776c0 differ
+diff --git a/fuzz/corpora/asn1/4a8c6a9e2fec1353ce314414ed8fc35519415224 b/fuzz/corpora/asn1/4a8c6a9e2fec1353ce314414ed8fc35519415224
 new file mode 100644
-index 000000000000..f02f3efe7ec8
-Binary files /dev/null and b/fuzz/corpora/asn1/3365e0ec84b9a429141c86cbe2f3ebd3f22a6205 differ
-diff --git a/fuzz/corpora/asn1/3398f7c81fa17a295440d5c6c1734e075fc7961c b/fuzz/corpora/asn1/3398f7c81fa17a295440d5c6c1734e075fc7961c
+index 0000000..7fdf592
+Binary files /dev/null and b/fuzz/corpora/asn1/4a8c6a9e2fec1353ce314414ed8fc35519415224 differ
+diff --git a/fuzz/corpora/asn1/4b02b3c2655208abbc930028d17939b12cac74b4 b/fuzz/corpora/asn1/4b02b3c2655208abbc930028d17939b12cac74b4
 new file mode 100644
-index 000000000000..6d6ce05f61a3
-Binary files /dev/null and b/fuzz/corpora/asn1/3398f7c81fa17a295440d5c6c1734e075fc7961c differ
-diff --git a/fuzz/corpora/asn1/33aa7fe8f56534d8dd685a2f5944110d9e4504d8 b/fuzz/corpora/asn1/33aa7fe8f56534d8dd685a2f5944110d9e4504d8
+index 0000000..fc8ef27
+Binary files /dev/null and b/fuzz/corpora/asn1/4b02b3c2655208abbc930028d17939b12cac74b4 differ
+diff --git a/fuzz/corpora/asn1/4b044371bd7fb299447f119959e0f2471539b740 b/fuzz/corpora/asn1/4b044371bd7fb299447f119959e0f2471539b740
 new file mode 100644
-index 000000000000..98d650f23949
-Binary files /dev/null and b/fuzz/corpora/asn1/33aa7fe8f56534d8dd685a2f5944110d9e4504d8 differ
-diff --git a/fuzz/corpora/asn1/33f3f542543ab87f70e1415f677e499a8233d352 b/fuzz/corpora/asn1/33f3f542543ab87f70e1415f677e499a8233d352
+index 0000000..c415313
+Binary files /dev/null and b/fuzz/corpora/asn1/4b044371bd7fb299447f119959e0f2471539b740 differ
+diff --git a/fuzz/corpora/asn1/4bac4537238648572886188cd62ba3e9d7b1c5ff b/fuzz/corpora/asn1/4bac4537238648572886188cd62ba3e9d7b1c5ff
 new file mode 100644
-index 000000000000..c027dd420fd5
-Binary files /dev/null and b/fuzz/corpora/asn1/33f3f542543ab87f70e1415f677e499a8233d352 differ
-diff --git a/fuzz/corpora/asn1/340649abd7da378a2616dfe2df3e848a14e57d82 b/fuzz/corpora/asn1/340649abd7da378a2616dfe2df3e848a14e57d82
+index 0000000..d695510
+Binary files /dev/null and b/fuzz/corpora/asn1/4bac4537238648572886188cd62ba3e9d7b1c5ff differ
+diff --git a/fuzz/corpora/asn1/4c044e182d5f08fa3a734805f72e871b112c91de b/fuzz/corpora/asn1/4c044e182d5f08fa3a734805f72e871b112c91de
 new file mode 100644
-index 000000000000..01dd76856a04
-Binary files /dev/null and b/fuzz/corpora/asn1/340649abd7da378a2616dfe2df3e848a14e57d82 differ
-diff --git a/fuzz/corpora/asn1/342a72acd28c8beabc11ba03cf5cfe5e29fb0657 b/fuzz/corpora/asn1/342a72acd28c8beabc11ba03cf5cfe5e29fb0657
+index 0000000..4950aa6
+Binary files /dev/null and b/fuzz/corpora/asn1/4c044e182d5f08fa3a734805f72e871b112c91de differ
+diff --git a/fuzz/corpora/asn1/4c1fa7e9c06f58663beefb15c45f9087ec561937 b/fuzz/corpora/asn1/4c1fa7e9c06f58663beefb15c45f9087ec561937
 new file mode 100644
-index 000000000000..2019910638eb
-Binary files /dev/null and b/fuzz/corpora/asn1/342a72acd28c8beabc11ba03cf5cfe5e29fb0657 differ
-diff --git a/fuzz/corpora/asn1/347dd0de7cf0f565ec54d397328f445823c4773d b/fuzz/corpora/asn1/347dd0de7cf0f565ec54d397328f445823c4773d
+index 0000000..3032fc1
+Binary files /dev/null and b/fuzz/corpora/asn1/4c1fa7e9c06f58663beefb15c45f9087ec561937 differ
+diff --git a/fuzz/corpora/asn1/4c228a197b7ac543c869c8296d4643bb67198843 b/fuzz/corpora/asn1/4c228a197b7ac543c869c8296d4643bb67198843
 new file mode 100644
-index 000000000000..5718ff43fd11
-Binary files /dev/null and b/fuzz/corpora/asn1/347dd0de7cf0f565ec54d397328f445823c4773d differ
-diff --git a/fuzz/corpora/asn1/34f87a6723a129df6b77dd48c3ed7d2b0e93a8f8 b/fuzz/corpora/asn1/34f87a6723a129df6b77dd48c3ed7d2b0e93a8f8
+index 0000000..3c548c8
+Binary files /dev/null and b/fuzz/corpora/asn1/4c228a197b7ac543c869c8296d4643bb67198843 differ
+diff --git a/fuzz/corpora/asn1/4d0625e6621790d3736c6ea29b1354977beae554 b/fuzz/corpora/asn1/4d0625e6621790d3736c6ea29b1354977beae554
 new file mode 100644
-index 000000000000..68d7e30c3f40
-Binary files /dev/null and b/fuzz/corpora/asn1/34f87a6723a129df6b77dd48c3ed7d2b0e93a8f8 differ
-diff --git a/fuzz/corpora/asn1/3553c9ee5c3061eda35d337eabfc4b1d1fee1018 b/fuzz/corpora/asn1/3553c9ee5c3061eda35d337eabfc4b1d1fee1018
+index 0000000..9101b6c
+Binary files /dev/null and b/fuzz/corpora/asn1/4d0625e6621790d3736c6ea29b1354977beae554 differ
+diff --git a/fuzz/corpora/asn1/4d21ad882d2c9c5ca59d3db67f01392aa331a3b9 b/fuzz/corpora/asn1/4d21ad882d2c9c5ca59d3db67f01392aa331a3b9
 new file mode 100644
-index 000000000000..dba3e0906502
-Binary files /dev/null and b/fuzz/corpora/asn1/3553c9ee5c3061eda35d337eabfc4b1d1fee1018 differ
-diff --git a/fuzz/corpora/asn1/3557240ca93beec043e641994a209585894ebeb4 b/fuzz/corpora/asn1/3557240ca93beec043e641994a209585894ebeb4
+index 0000000..80a8a89
+Binary files /dev/null and b/fuzz/corpora/asn1/4d21ad882d2c9c5ca59d3db67f01392aa331a3b9 differ
+diff --git a/fuzz/corpora/asn1/4d4312b370f8c6bd07883f53d0827cab5070d8cc b/fuzz/corpora/asn1/4d4312b370f8c6bd07883f53d0827cab5070d8cc
 new file mode 100644
-index 000000000000..79d54893eb2f
-Binary files /dev/null and b/fuzz/corpora/asn1/3557240ca93beec043e641994a209585894ebeb4 differ
-diff --git a/fuzz/corpora/asn1/3558d7b1edf4d3b58973935ee6a3c31d8c9ec086 b/fuzz/corpora/asn1/3558d7b1edf4d3b58973935ee6a3c31d8c9ec086
+index 0000000..d953cab
+Binary files /dev/null and b/fuzz/corpora/asn1/4d4312b370f8c6bd07883f53d0827cab5070d8cc differ
+diff --git a/fuzz/corpora/asn1/4d5a821b499b10d2cd76904f672a63c79a7644c4 b/fuzz/corpora/asn1/4d5a821b499b10d2cd76904f672a63c79a7644c4
 new file mode 100644
-index 000000000000..ea8f1e6360cf
-Binary files /dev/null and b/fuzz/corpora/asn1/3558d7b1edf4d3b58973935ee6a3c31d8c9ec086 differ
-diff --git a/fuzz/corpora/asn1/3562d2d60fb420b5a7fd445c97ac1ed26c154983 b/fuzz/corpora/asn1/3562d2d60fb420b5a7fd445c97ac1ed26c154983
+index 0000000..b2daa5c
+Binary files /dev/null and b/fuzz/corpora/asn1/4d5a821b499b10d2cd76904f672a63c79a7644c4 differ
+diff --git a/fuzz/corpora/asn1/4d5e5e366be74be272807e6b61a97f48b61d1233 b/fuzz/corpora/asn1/4d5e5e366be74be272807e6b61a97f48b61d1233
 new file mode 100644
-index 000000000000..1dd8e1bc84ef
-Binary files /dev/null and b/fuzz/corpora/asn1/3562d2d60fb420b5a7fd445c97ac1ed26c154983 differ
-diff --git a/fuzz/corpora/asn1/35668d658eb21650f177d3b3309456ee524e0350 b/fuzz/corpora/asn1/35668d658eb21650f177d3b3309456ee524e0350
+index 0000000..2f02418
+Binary files /dev/null and b/fuzz/corpora/asn1/4d5e5e366be74be272807e6b61a97f48b61d1233 differ
+diff --git a/fuzz/corpora/asn1/4d6ab9d83ba620d248b49eb45e06d6edd1e9e709 b/fuzz/corpora/asn1/4d6ab9d83ba620d248b49eb45e06d6edd1e9e709
 new file mode 100644
-index 000000000000..93fbbe858738
-Binary files /dev/null and b/fuzz/corpora/asn1/35668d658eb21650f177d3b3309456ee524e0350 differ
-diff --git a/fuzz/corpora/asn1/35b2b716aea4456bfeae4d08c1736b35fce9cb55 b/fuzz/corpora/asn1/35b2b716aea4456bfeae4d08c1736b35fce9cb55
+index 0000000..e9c59a2
+Binary files /dev/null and b/fuzz/corpora/asn1/4d6ab9d83ba620d248b49eb45e06d6edd1e9e709 differ
+diff --git a/fuzz/corpora/asn1/4de8a279b38cc5d5b2bd2d71bcc652d701d07f2f b/fuzz/corpora/asn1/4de8a279b38cc5d5b2bd2d71bcc652d701d07f2f
 new file mode 100644
-index 000000000000..9b8cc690cb46
-Binary files /dev/null and b/fuzz/corpora/asn1/35b2b716aea4456bfeae4d08c1736b35fce9cb55 differ
-diff --git a/fuzz/corpora/asn1/35c48b64dc3351326e0cb0e72428fef18f2f58d7 b/fuzz/corpora/asn1/35c48b64dc3351326e0cb0e72428fef18f2f58d7
+index 0000000..9a37717
+Binary files /dev/null and b/fuzz/corpora/asn1/4de8a279b38cc5d5b2bd2d71bcc652d701d07f2f differ
+diff --git a/fuzz/corpora/asn1/4e46cdbd0d5607b6ac9eb386195ae46b1e0ad735 b/fuzz/corpora/asn1/4e46cdbd0d5607b6ac9eb386195ae46b1e0ad735
 new file mode 100644
-index 000000000000..81b5fdbd5150
-Binary files /dev/null and b/fuzz/corpora/asn1/35c48b64dc3351326e0cb0e72428fef18f2f58d7 differ
-diff --git a/fuzz/corpora/asn1/372c4bd3080e916656916a6e7ef72238ae6a0b41 b/fuzz/corpora/asn1/372c4bd3080e916656916a6e7ef72238ae6a0b41
+index 0000000..c3f9133
+Binary files /dev/null and b/fuzz/corpora/asn1/4e46cdbd0d5607b6ac9eb386195ae46b1e0ad735 differ
+diff --git a/fuzz/corpora/asn1/4eb32351601776bf5e4c36ba6a86be85273efa33 b/fuzz/corpora/asn1/4eb32351601776bf5e4c36ba6a86be85273efa33
 new file mode 100644
-index 000000000000..b5cc6aa7d007
-Binary files /dev/null and b/fuzz/corpora/asn1/372c4bd3080e916656916a6e7ef72238ae6a0b41 differ
-diff --git a/fuzz/corpora/asn1/373c20c673904557072807eeb8a3b019a6d4de16 b/fuzz/corpora/asn1/373c20c673904557072807eeb8a3b019a6d4de16
+index 0000000..71d608d
+Binary files /dev/null and b/fuzz/corpora/asn1/4eb32351601776bf5e4c36ba6a86be85273efa33 differ
+diff --git a/fuzz/corpora/asn1/4f08bec74e36313557bdb0a0f8e72e081f8cf735 b/fuzz/corpora/asn1/4f08bec74e36313557bdb0a0f8e72e081f8cf735
 new file mode 100644
-index 000000000000..7c4c3cbe5304
-Binary files /dev/null and b/fuzz/corpora/asn1/373c20c673904557072807eeb8a3b019a6d4de16 differ
-diff --git a/fuzz/corpora/asn1/3761a14f82e3838372064a842054d0a831551d81 b/fuzz/corpora/asn1/3761a14f82e3838372064a842054d0a831551d81
+index 0000000..0e75027
+Binary files /dev/null and b/fuzz/corpora/asn1/4f08bec74e36313557bdb0a0f8e72e081f8cf735 differ
+diff --git a/fuzz/corpora/asn1/4f157de8b7e6f83574995f8c86b79f36ce7af7bf b/fuzz/corpora/asn1/4f157de8b7e6f83574995f8c86b79f36ce7af7bf
 new file mode 100644
-index 000000000000..04fb84b65da2
-Binary files /dev/null and b/fuzz/corpora/asn1/3761a14f82e3838372064a842054d0a831551d81 differ
-diff --git a/fuzz/corpora/asn1/37a1a60f88829b65f67c18c4cf96d63e07c53b07 b/fuzz/corpora/asn1/37a1a60f88829b65f67c18c4cf96d63e07c53b07
+index 0000000..7923ade
+Binary files /dev/null and b/fuzz/corpora/asn1/4f157de8b7e6f83574995f8c86b79f36ce7af7bf differ
+diff --git a/fuzz/corpora/asn1/4f551240c77fa67ec97709d54c77ba92dff2bcf3 b/fuzz/corpora/asn1/4f551240c77fa67ec97709d54c77ba92dff2bcf3
 new file mode 100644
-index 000000000000..38fb48a489fb
-Binary files /dev/null and b/fuzz/corpora/asn1/37a1a60f88829b65f67c18c4cf96d63e07c53b07 differ
-diff --git a/fuzz/corpora/asn1/37c8f0074d53bc5e5525e341ca9fae8bd721f459 b/fuzz/corpora/asn1/37c8f0074d53bc5e5525e341ca9fae8bd721f459
+index 0000000..1c41a66
+Binary files /dev/null and b/fuzz/corpora/asn1/4f551240c77fa67ec97709d54c77ba92dff2bcf3 differ
+diff --git a/fuzz/corpora/asn1/4f8050bf4b3bd2013806bffff5419cb24a43e941 b/fuzz/corpora/asn1/4f8050bf4b3bd2013806bffff5419cb24a43e941
 new file mode 100644
-index 000000000000..8c4a47ca3650
-Binary files /dev/null and b/fuzz/corpora/asn1/37c8f0074d53bc5e5525e341ca9fae8bd721f459 differ
-diff --git a/fuzz/corpora/asn1/39246e3ddf8d17c63acbb53a9bd98c2be1aaf091 b/fuzz/corpora/asn1/39246e3ddf8d17c63acbb53a9bd98c2be1aaf091
+index 0000000..7eabab2
+Binary files /dev/null and b/fuzz/corpora/asn1/4f8050bf4b3bd2013806bffff5419cb24a43e941 differ
+diff --git a/fuzz/corpora/asn1/4fe234bce04ba8fe7eb1ec0ffb204579ecced38e b/fuzz/corpora/asn1/4fe234bce04ba8fe7eb1ec0ffb204579ecced38e
 new file mode 100644
-index 000000000000..f06f7b7ca4bc
-Binary files /dev/null and b/fuzz/corpora/asn1/39246e3ddf8d17c63acbb53a9bd98c2be1aaf091 differ
-diff --git a/fuzz/corpora/asn1/3ac4faff2c509300ae955882135c7613810617c5 b/fuzz/corpora/asn1/3ac4faff2c509300ae955882135c7613810617c5
+index 0000000..6e04f3b
+Binary files /dev/null and b/fuzz/corpora/asn1/4fe234bce04ba8fe7eb1ec0ffb204579ecced38e differ
+diff --git a/fuzz/corpora/asn1/50b588e223e2b113978a6a4a7f5ac12299172a15 b/fuzz/corpora/asn1/50b588e223e2b113978a6a4a7f5ac12299172a15
 new file mode 100644
-index 000000000000..ad9302ab0dc2
-Binary files /dev/null and b/fuzz/corpora/asn1/3ac4faff2c509300ae955882135c7613810617c5 differ
-diff --git a/fuzz/corpora/asn1/3b03f1a607ad2e033db8294bf09593165c2e1451 b/fuzz/corpora/asn1/3b03f1a607ad2e033db8294bf09593165c2e1451
+index 0000000..f83320c
+Binary files /dev/null and b/fuzz/corpora/asn1/50b588e223e2b113978a6a4a7f5ac12299172a15 differ
+diff --git a/fuzz/corpora/asn1/510421198fbf07a578b3f60fb5d91d88e7402617 b/fuzz/corpora/asn1/510421198fbf07a578b3f60fb5d91d88e7402617
 new file mode 100644
-index 000000000000..36348b58ca20
-Binary files /dev/null and b/fuzz/corpora/asn1/3b03f1a607ad2e033db8294bf09593165c2e1451 differ
-diff --git a/fuzz/corpora/asn1/3b2e9dabca5952e1ccde7dbe8bebab3a396e369d b/fuzz/corpora/asn1/3b2e9dabca5952e1ccde7dbe8bebab3a396e369d
+index 0000000..d786d0f
+Binary files /dev/null and b/fuzz/corpora/asn1/510421198fbf07a578b3f60fb5d91d88e7402617 differ
+diff --git a/fuzz/corpora/asn1/5115d1f97a374d6a8b6604021d55fd7e1dfab131 b/fuzz/corpora/asn1/5115d1f97a374d6a8b6604021d55fd7e1dfab131
 new file mode 100644
-index 000000000000..eef66966c60c
-Binary files /dev/null and b/fuzz/corpora/asn1/3b2e9dabca5952e1ccde7dbe8bebab3a396e369d differ
-diff --git a/fuzz/corpora/asn1/3b3012c0790befbacce0423b4b9a1731c2b7398b b/fuzz/corpora/asn1/3b3012c0790befbacce0423b4b9a1731c2b7398b
+index 0000000..48d8a25
+Binary files /dev/null and b/fuzz/corpora/asn1/5115d1f97a374d6a8b6604021d55fd7e1dfab131 differ
+diff --git a/fuzz/corpora/asn1/52ab05578c8e87fd952eac1a52292c94210862f0 b/fuzz/corpora/asn1/52ab05578c8e87fd952eac1a52292c94210862f0
 new file mode 100644
-index 000000000000..263cfbc84b2b
-Binary files /dev/null and b/fuzz/corpora/asn1/3b3012c0790befbacce0423b4b9a1731c2b7398b differ
-diff --git a/fuzz/corpora/asn1/3b62a04053794d2b1aaaf6bbb7bb6aa6d858e0a4 b/fuzz/corpora/asn1/3b62a04053794d2b1aaaf6bbb7bb6aa6d858e0a4
+index 0000000..efcea25
+Binary files /dev/null and b/fuzz/corpora/asn1/52ab05578c8e87fd952eac1a52292c94210862f0 differ
+diff --git a/fuzz/corpora/asn1/52e20d13cd280adbcd36284e1b73c61db4ab3391 b/fuzz/corpora/asn1/52e20d13cd280adbcd36284e1b73c61db4ab3391
 new file mode 100644
-index 000000000000..327ed3630f6b
-Binary files /dev/null and b/fuzz/corpora/asn1/3b62a04053794d2b1aaaf6bbb7bb6aa6d858e0a4 differ
-diff --git a/fuzz/corpora/asn1/3b688908a8451f19eee475420bc05ba088ee83e5 b/fuzz/corpora/asn1/3b688908a8451f19eee475420bc05ba088ee83e5
+index 0000000..61a3a80
+Binary files /dev/null and b/fuzz/corpora/asn1/52e20d13cd280adbcd36284e1b73c61db4ab3391 differ
+diff --git a/fuzz/corpora/asn1/52f886e3e29fe0e134421e40c1f5de5ac6b3a33b b/fuzz/corpora/asn1/52f886e3e29fe0e134421e40c1f5de5ac6b3a33b
 new file mode 100644
-index 000000000000..f7b05ae0b8d9
-Binary files /dev/null and b/fuzz/corpora/asn1/3b688908a8451f19eee475420bc05ba088ee83e5 differ
-diff --git a/fuzz/corpora/asn1/3b91bb66c77cef6dfc2b958cb2fcdda9ad66b1ad b/fuzz/corpora/asn1/3b91bb66c77cef6dfc2b958cb2fcdda9ad66b1ad
+index 0000000..14487ad
+Binary files /dev/null and b/fuzz/corpora/asn1/52f886e3e29fe0e134421e40c1f5de5ac6b3a33b differ
+diff --git a/fuzz/corpora/asn1/548953015dee047bd555881f6c9a43c17ce2547a b/fuzz/corpora/asn1/548953015dee047bd555881f6c9a43c17ce2547a
 new file mode 100644
-index 000000000000..099815fc7bdc
-Binary files /dev/null and b/fuzz/corpora/asn1/3b91bb66c77cef6dfc2b958cb2fcdda9ad66b1ad differ
-diff --git a/fuzz/corpora/asn1/3c0061faba125d478aa723e41a38b39bbfef2a5a b/fuzz/corpora/asn1/3c0061faba125d478aa723e41a38b39bbfef2a5a
+index 0000000..f61aeef
+Binary files /dev/null and b/fuzz/corpora/asn1/548953015dee047bd555881f6c9a43c17ce2547a differ
+diff --git a/fuzz/corpora/asn1/5597641af850ba7307e3437bde13a81ba77e68a7 b/fuzz/corpora/asn1/5597641af850ba7307e3437bde13a81ba77e68a7
 new file mode 100644
-index 000000000000..a04e196944e7
-Binary files /dev/null and b/fuzz/corpora/asn1/3c0061faba125d478aa723e41a38b39bbfef2a5a differ
-diff --git a/fuzz/corpora/asn1/3c4b1d6f32bea967aa5b715c82bfd1e17978c8c9 b/fuzz/corpora/asn1/3c4b1d6f32bea967aa5b715c82bfd1e17978c8c9
+index 0000000..7fc079d
+Binary files /dev/null and b/fuzz/corpora/asn1/5597641af850ba7307e3437bde13a81ba77e68a7 differ
+diff --git a/fuzz/corpora/asn1/55b782049549e17a5d80cde8a03014e0401dec08 b/fuzz/corpora/asn1/55b782049549e17a5d80cde8a03014e0401dec08
 new file mode 100644
-index 000000000000..6d8ae0dfaff7
-Binary files /dev/null and b/fuzz/corpora/asn1/3c4b1d6f32bea967aa5b715c82bfd1e17978c8c9 differ
-diff --git a/fuzz/corpora/asn1/3cde6c96c7a43b58183fd7ff717d1c79fc115f5e b/fuzz/corpora/asn1/3cde6c96c7a43b58183fd7ff717d1c79fc115f5e
+index 0000000..c4a9c3b
+Binary files /dev/null and b/fuzz/corpora/asn1/55b782049549e17a5d80cde8a03014e0401dec08 differ
+diff --git a/fuzz/corpora/asn1/55f8256895b20e9c3755a38b587129664dadbec8 b/fuzz/corpora/asn1/55f8256895b20e9c3755a38b587129664dadbec8
 new file mode 100644
-index 000000000000..640e29f4850f
-Binary files /dev/null and b/fuzz/corpora/asn1/3cde6c96c7a43b58183fd7ff717d1c79fc115f5e differ
-diff --git a/fuzz/corpora/asn1/3d2648b87c8d17bb86586a6efffa133a35b7599b b/fuzz/corpora/asn1/3d2648b87c8d17bb86586a6efffa133a35b7599b
+index 0000000..741ca76
+Binary files /dev/null and b/fuzz/corpora/asn1/55f8256895b20e9c3755a38b587129664dadbec8 differ
+diff --git a/fuzz/corpora/asn1/5612dc3aaba2e77dcba85583b31ff002cc11f573 b/fuzz/corpora/asn1/5612dc3aaba2e77dcba85583b31ff002cc11f573
 new file mode 100644
-index 000000000000..9020d0eb161d
-Binary files /dev/null and b/fuzz/corpora/asn1/3d2648b87c8d17bb86586a6efffa133a35b7599b differ
-diff --git a/fuzz/corpora/asn1/3d2b6c5a4be444abd4c2cb87fd2e03c27d3a3712 b/fuzz/corpora/asn1/3d2b6c5a4be444abd4c2cb87fd2e03c27d3a3712
+index 0000000..056d1c2
+Binary files /dev/null and b/fuzz/corpora/asn1/5612dc3aaba2e77dcba85583b31ff002cc11f573 differ
+diff --git a/fuzz/corpora/asn1/56bc472e147812d3a4d18e2c2105291f608097b9 b/fuzz/corpora/asn1/56bc472e147812d3a4d18e2c2105291f608097b9
 new file mode 100644
-index 000000000000..5a106db2059a
-Binary files /dev/null and b/fuzz/corpora/asn1/3d2b6c5a4be444abd4c2cb87fd2e03c27d3a3712 differ
-diff --git a/fuzz/corpora/asn1/3da1b82eb5a9d1860dce2ec0b48ad49711714415 b/fuzz/corpora/asn1/3da1b82eb5a9d1860dce2ec0b48ad49711714415
+index 0000000..9875a3a
+Binary files /dev/null and b/fuzz/corpora/asn1/56bc472e147812d3a4d18e2c2105291f608097b9 differ
+diff --git a/fuzz/corpora/asn1/5701217de486b834b98b4769e2ca2dc8a0c35021 b/fuzz/corpora/asn1/5701217de486b834b98b4769e2ca2dc8a0c35021
 new file mode 100644
-index 000000000000..d32fae58308c
-Binary files /dev/null and b/fuzz/corpora/asn1/3da1b82eb5a9d1860dce2ec0b48ad49711714415 differ
-diff --git a/fuzz/corpora/asn1/3e41913af4b4331f71009b9d6f049ba83e805444 b/fuzz/corpora/asn1/3e41913af4b4331f71009b9d6f049ba83e805444
+index 0000000..c2c259f
+Binary files /dev/null and b/fuzz/corpora/asn1/5701217de486b834b98b4769e2ca2dc8a0c35021 differ
+diff --git a/fuzz/corpora/asn1/573e681caeb7a1690c4916711d190da2d825f746 b/fuzz/corpora/asn1/573e681caeb7a1690c4916711d190da2d825f746
 new file mode 100644
-index 000000000000..4eadfc0c0bde
-Binary files /dev/null and b/fuzz/corpora/asn1/3e41913af4b4331f71009b9d6f049ba83e805444 differ
-diff --git a/fuzz/corpora/asn1/3e69affef0faebefd92d39989028740adbc96b49 b/fuzz/corpora/asn1/3e69affef0faebefd92d39989028740adbc96b49
+index 0000000..99a1694
+Binary files /dev/null and b/fuzz/corpora/asn1/573e681caeb7a1690c4916711d190da2d825f746 differ
+diff --git a/fuzz/corpora/asn1/585211423db28929b6cdb87f33347aa9c519ad65 b/fuzz/corpora/asn1/585211423db28929b6cdb87f33347aa9c519ad65
 new file mode 100644
-index 000000000000..dd9c10169eba
-Binary files /dev/null and b/fuzz/corpora/asn1/3e69affef0faebefd92d39989028740adbc96b49 differ
-diff --git a/fuzz/corpora/asn1/3eb4f5c9466de7d4abfaa8b92d56922e33a69cdf b/fuzz/corpora/asn1/3eb4f5c9466de7d4abfaa8b92d56922e33a69cdf
+index 0000000..430c9fd
+Binary files /dev/null and b/fuzz/corpora/asn1/585211423db28929b6cdb87f33347aa9c519ad65 differ
+diff --git a/fuzz/corpora/asn1/58eaedbc0b8ad8e78d09bb370a36edbdff06fc7c b/fuzz/corpora/asn1/58eaedbc0b8ad8e78d09bb370a36edbdff06fc7c
 new file mode 100644
-index 000000000000..1951bd014216
-Binary files /dev/null and b/fuzz/corpora/asn1/3eb4f5c9466de7d4abfaa8b92d56922e33a69cdf differ
-diff --git a/fuzz/corpora/asn1/3ed299615f77d100884da486eaa721268cd6c96b b/fuzz/corpora/asn1/3ed299615f77d100884da486eaa721268cd6c96b
+index 0000000..33b929a
+Binary files /dev/null and b/fuzz/corpora/asn1/58eaedbc0b8ad8e78d09bb370a36edbdff06fc7c differ
+diff --git a/fuzz/corpora/asn1/58ec3b293fd9533330c2b683e239905f229ab0d7 b/fuzz/corpora/asn1/58ec3b293fd9533330c2b683e239905f229ab0d7
 new file mode 100644
-index 000000000000..f54f9dc3b76c
-Binary files /dev/null and b/fuzz/corpora/asn1/3ed299615f77d100884da486eaa721268cd6c96b differ
-diff --git a/fuzz/corpora/asn1/3f05f1c90e9685ef1b60026715fbf8e293beb85d b/fuzz/corpora/asn1/3f05f1c90e9685ef1b60026715fbf8e293beb85d
+index 0000000..e304602
+Binary files /dev/null and b/fuzz/corpora/asn1/58ec3b293fd9533330c2b683e239905f229ab0d7 differ
+diff --git a/fuzz/corpora/asn1/59d92d62f51e26ec31d9b3f09a6cf236abc7be8f b/fuzz/corpora/asn1/59d92d62f51e26ec31d9b3f09a6cf236abc7be8f
 new file mode 100644
-index 000000000000..7f3e4f0707f8
-Binary files /dev/null and b/fuzz/corpora/asn1/3f05f1c90e9685ef1b60026715fbf8e293beb85d differ
-diff --git a/fuzz/corpora/asn1/3f5db940cc48dc28381e9234c8660efa11e5e3ac b/fuzz/corpora/asn1/3f5db940cc48dc28381e9234c8660efa11e5e3ac
+index 0000000..055cff3
+Binary files /dev/null and b/fuzz/corpora/asn1/59d92d62f51e26ec31d9b3f09a6cf236abc7be8f differ
+diff --git a/fuzz/corpora/asn1/5ad0ef3dccda6ac674a78f8e6419e5d7b6eba594 b/fuzz/corpora/asn1/5ad0ef3dccda6ac674a78f8e6419e5d7b6eba594
 new file mode 100644
-index 000000000000..d6738350fdbe
-Binary files /dev/null and b/fuzz/corpora/asn1/3f5db940cc48dc28381e9234c8660efa11e5e3ac differ
-diff --git a/fuzz/corpora/asn1/3fdae5bfc0c535516a550c3160fdd28d00232c51 b/fuzz/corpora/asn1/3fdae5bfc0c535516a550c3160fdd28d00232c51
+index 0000000..896b525
+Binary files /dev/null and b/fuzz/corpora/asn1/5ad0ef3dccda6ac674a78f8e6419e5d7b6eba594 differ
+diff --git a/fuzz/corpora/asn1/5b163a5af80498bd854846229f7ce08dd6a84714 b/fuzz/corpora/asn1/5b163a5af80498bd854846229f7ce08dd6a84714
 new file mode 100644
-index 000000000000..2b678c9adb79
-Binary files /dev/null and b/fuzz/corpora/asn1/3fdae5bfc0c535516a550c3160fdd28d00232c51 differ
-diff --git a/fuzz/corpora/asn1/3fe916bfaf697e95689700f48833330f29df514a b/fuzz/corpora/asn1/3fe916bfaf697e95689700f48833330f29df514a
+index 0000000..cb82c4e
+Binary files /dev/null and b/fuzz/corpora/asn1/5b163a5af80498bd854846229f7ce08dd6a84714 differ
+diff --git a/fuzz/corpora/asn1/5b8a5cf371de8d2b80acd0f446c01553e54e6eb5 b/fuzz/corpora/asn1/5b8a5cf371de8d2b80acd0f446c01553e54e6eb5
 new file mode 100644
-index 000000000000..3672cb84066f
-Binary files /dev/null and b/fuzz/corpora/asn1/3fe916bfaf697e95689700f48833330f29df514a differ
-diff --git a/fuzz/corpora/asn1/40041aa929c8285a65ddb03adbef23803471f009 b/fuzz/corpora/asn1/40041aa929c8285a65ddb03adbef23803471f009
+index 0000000..7deb59a
+Binary files /dev/null and b/fuzz/corpora/asn1/5b8a5cf371de8d2b80acd0f446c01553e54e6eb5 differ
+diff --git a/fuzz/corpora/asn1/5bab61eb53176449e25c2c82f172b82cb13ffb9d b/fuzz/corpora/asn1/5bab61eb53176449e25c2c82f172b82cb13ffb9d
 new file mode 100644
-index 000000000000..a689874b340c
-Binary files /dev/null and b/fuzz/corpora/asn1/40041aa929c8285a65ddb03adbef23803471f009 differ
-diff --git a/fuzz/corpora/asn1/4031667f9c54ae01ee6916583ac7ac91d96ca839 b/fuzz/corpora/asn1/4031667f9c54ae01ee6916583ac7ac91d96ca839
+index 0000000..0d758c9
+Binary files /dev/null and b/fuzz/corpora/asn1/5bab61eb53176449e25c2c82f172b82cb13ffb9d differ
+diff --git a/fuzz/corpora/asn1/5c4190931731d524df96b5fc1ba20fb9baf21763 b/fuzz/corpora/asn1/5c4190931731d524df96b5fc1ba20fb9baf21763
 new file mode 100644
-index 000000000000..a52be33ad036
-Binary files /dev/null and b/fuzz/corpora/asn1/4031667f9c54ae01ee6916583ac7ac91d96ca839 differ
-diff --git a/fuzz/corpora/asn1/4053f77d074ee183247da8b58b5cd9adbbd1f6f9 b/fuzz/corpora/asn1/4053f77d074ee183247da8b58b5cd9adbbd1f6f9
+index 0000000..afc0e11
+Binary files /dev/null and b/fuzz/corpora/asn1/5c4190931731d524df96b5fc1ba20fb9baf21763 differ
+diff --git a/fuzz/corpora/asn1/5c5e2c550c4295b5fd38004774610b3fbe80014f b/fuzz/corpora/asn1/5c5e2c550c4295b5fd38004774610b3fbe80014f
 new file mode 100644
-index 000000000000..8ec20e5cd0a8
-Binary files /dev/null and b/fuzz/corpora/asn1/4053f77d074ee183247da8b58b5cd9adbbd1f6f9 differ
-diff --git a/fuzz/corpora/asn1/40aaec008c2252bacdc761a04e85739e0f8ca76a b/fuzz/corpora/asn1/40aaec008c2252bacdc761a04e85739e0f8ca76a
+index 0000000..e31e20e
+Binary files /dev/null and b/fuzz/corpora/asn1/5c5e2c550c4295b5fd38004774610b3fbe80014f differ
+diff --git a/fuzz/corpora/asn1/5c650f24a20538774d50943271acfadfac26fe7c b/fuzz/corpora/asn1/5c650f24a20538774d50943271acfadfac26fe7c
 new file mode 100644
-index 000000000000..d7a1e42257bf
-Binary files /dev/null and b/fuzz/corpora/asn1/40aaec008c2252bacdc761a04e85739e0f8ca76a differ
-diff --git a/fuzz/corpora/asn1/40b0db62724ee2355ba73338154d5424cbd7d292 b/fuzz/corpora/asn1/40b0db62724ee2355ba73338154d5424cbd7d292
+index 0000000..1f8dee7
+Binary files /dev/null and b/fuzz/corpora/asn1/5c650f24a20538774d50943271acfadfac26fe7c differ
+diff --git a/fuzz/corpora/asn1/5cf459041a413c1216634cd375b27aa49d76dd78 b/fuzz/corpora/asn1/5cf459041a413c1216634cd375b27aa49d76dd78
 new file mode 100644
-index 000000000000..51be2708bbb6
-Binary files /dev/null and b/fuzz/corpora/asn1/40b0db62724ee2355ba73338154d5424cbd7d292 differ
-diff --git a/fuzz/corpora/asn1/40b88cab280320a843c7ed36e227d00cc4105b2a b/fuzz/corpora/asn1/40b88cab280320a843c7ed36e227d00cc4105b2a
+index 0000000..175e440
+Binary files /dev/null and b/fuzz/corpora/asn1/5cf459041a413c1216634cd375b27aa49d76dd78 differ
+diff --git a/fuzz/corpora/asn1/5d2da4b41e8e78bc1b7f0e8a03ce1fda997e94f2 b/fuzz/corpora/asn1/5d2da4b41e8e78bc1b7f0e8a03ce1fda997e94f2
 new file mode 100644
-index 000000000000..7779a24113cd
-Binary files /dev/null and b/fuzz/corpora/asn1/40b88cab280320a843c7ed36e227d00cc4105b2a differ
-diff --git a/fuzz/corpora/asn1/40c9654a182c8bccb865c8062ebe85257ce51b48 b/fuzz/corpora/asn1/40c9654a182c8bccb865c8062ebe85257ce51b48
+index 0000000..15aa01a
+Binary files /dev/null and b/fuzz/corpora/asn1/5d2da4b41e8e78bc1b7f0e8a03ce1fda997e94f2 differ
+diff --git a/fuzz/corpora/asn1/5d776155e7b127e48971cf895a1ad0ba1c8ced3b b/fuzz/corpora/asn1/5d776155e7b127e48971cf895a1ad0ba1c8ced3b
 new file mode 100644
-index 000000000000..3252e8356d0c
-Binary files /dev/null and b/fuzz/corpora/asn1/40c9654a182c8bccb865c8062ebe85257ce51b48 differ
-diff --git a/fuzz/corpora/asn1/40f39fc99763d03d89cfa63fa171cc77ad3618d1 b/fuzz/corpora/asn1/40f39fc99763d03d89cfa63fa171cc77ad3618d1
+index 0000000..aa2663b
+Binary files /dev/null and b/fuzz/corpora/asn1/5d776155e7b127e48971cf895a1ad0ba1c8ced3b differ
+diff --git a/fuzz/corpora/asn1/5eb872eea3d3d5557b4716874f65fd8d0c449481 b/fuzz/corpora/asn1/5eb872eea3d3d5557b4716874f65fd8d0c449481
 new file mode 100644
-index 000000000000..8bcbb882f2ed
-Binary files /dev/null and b/fuzz/corpora/asn1/40f39fc99763d03d89cfa63fa171cc77ad3618d1 differ
-diff --git a/fuzz/corpora/asn1/411bd4c74649e74c9390ad1943135e49bb4c35c7 b/fuzz/corpora/asn1/411bd4c74649e74c9390ad1943135e49bb4c35c7
+index 0000000..e07cc9a
+Binary files /dev/null and b/fuzz/corpora/asn1/5eb872eea3d3d5557b4716874f65fd8d0c449481 differ
+diff --git a/fuzz/corpora/asn1/5ee5bc091b8e16933584f433dba0d4275fb51a29 b/fuzz/corpora/asn1/5ee5bc091b8e16933584f433dba0d4275fb51a29
 new file mode 100644
-index 000000000000..353adc9798c2
-Binary files /dev/null and b/fuzz/corpora/asn1/411bd4c74649e74c9390ad1943135e49bb4c35c7 differ
-diff --git a/fuzz/corpora/asn1/41e834f2f34056facbb7870b8d67bee99e8fb364 b/fuzz/corpora/asn1/41e834f2f34056facbb7870b8d67bee99e8fb364
+index 0000000..e3668b7
+Binary files /dev/null and b/fuzz/corpora/asn1/5ee5bc091b8e16933584f433dba0d4275fb51a29 differ
+diff --git a/fuzz/corpora/asn1/5eef81a21e594686ae80c8aa021d53e04496c5b0 b/fuzz/corpora/asn1/5eef81a21e594686ae80c8aa021d53e04496c5b0
 new file mode 100644
-index 000000000000..6474efd730e9
-Binary files /dev/null and b/fuzz/corpora/asn1/41e834f2f34056facbb7870b8d67bee99e8fb364 differ
-diff --git a/fuzz/corpora/asn1/4216979e0b3808fc27ebc172b049dd5871899ef6 b/fuzz/corpora/asn1/4216979e0b3808fc27ebc172b049dd5871899ef6
+index 0000000..057a3a4
+Binary files /dev/null and b/fuzz/corpora/asn1/5eef81a21e594686ae80c8aa021d53e04496c5b0 differ
+diff --git a/fuzz/corpora/asn1/5f744458d42f089f4e8c6edaf764c7de8d0d3888 b/fuzz/corpora/asn1/5f744458d42f089f4e8c6edaf764c7de8d0d3888
 new file mode 100644
-index 000000000000..622ff6bb7659
-Binary files /dev/null and b/fuzz/corpora/asn1/4216979e0b3808fc27ebc172b049dd5871899ef6 differ
-diff --git a/fuzz/corpora/asn1/42a881a817c4599cb2ef96aea02da9418aea649c b/fuzz/corpora/asn1/42a881a817c4599cb2ef96aea02da9418aea649c
+index 0000000..85c0799
+Binary files /dev/null and b/fuzz/corpora/asn1/5f744458d42f089f4e8c6edaf764c7de8d0d3888 differ
+diff --git a/fuzz/corpora/asn1/5f77ed7492d7d9f87500872990d4f4ae0bfdd9e4 b/fuzz/corpora/asn1/5f77ed7492d7d9f87500872990d4f4ae0bfdd9e4
 new file mode 100644
-index 000000000000..97488b549952
-Binary files /dev/null and b/fuzz/corpora/asn1/42a881a817c4599cb2ef96aea02da9418aea649c differ
-diff --git a/fuzz/corpora/asn1/42b4211f152e38f55c9f7314e98a5c88083c6f17 b/fuzz/corpora/asn1/42b4211f152e38f55c9f7314e98a5c88083c6f17
+index 0000000..4b66222
+Binary files /dev/null and b/fuzz/corpora/asn1/5f77ed7492d7d9f87500872990d4f4ae0bfdd9e4 differ
+diff --git a/fuzz/corpora/asn1/6071c700f618a4b7de005f6deadb7a4f61300ae9 b/fuzz/corpora/asn1/6071c700f618a4b7de005f6deadb7a4f61300ae9
 new file mode 100644
-index 000000000000..d8d2543f5147
-Binary files /dev/null and b/fuzz/corpora/asn1/42b4211f152e38f55c9f7314e98a5c88083c6f17 differ
-diff --git a/fuzz/corpora/asn1/42f219f2e07a6eb430073c1b59fa67ff18a79cf6 b/fuzz/corpora/asn1/42f219f2e07a6eb430073c1b59fa67ff18a79cf6
+index 0000000..bbffcf3
+Binary files /dev/null and b/fuzz/corpora/asn1/6071c700f618a4b7de005f6deadb7a4f61300ae9 differ
+diff --git a/fuzz/corpora/asn1/61d57ff14e544bc34117a1d054a55413a446b61b b/fuzz/corpora/asn1/61d57ff14e544bc34117a1d054a55413a446b61b
 new file mode 100644
-index 000000000000..0e18226f3e0f
-Binary files /dev/null and b/fuzz/corpora/asn1/42f219f2e07a6eb430073c1b59fa67ff18a79cf6 differ
-diff --git a/fuzz/corpora/asn1/4326c36f02104e87efa40e6bda2eb8301ccb81fb b/fuzz/corpora/asn1/4326c36f02104e87efa40e6bda2eb8301ccb81fb
+index 0000000..1b45b72
+Binary files /dev/null and b/fuzz/corpora/asn1/61d57ff14e544bc34117a1d054a55413a446b61b differ
+diff --git a/fuzz/corpora/asn1/6240f139a01f8fc6ad627cdaced967854551c7dd b/fuzz/corpora/asn1/6240f139a01f8fc6ad627cdaced967854551c7dd
 new file mode 100644
-index 000000000000..5beebd987b8d
-Binary files /dev/null and b/fuzz/corpora/asn1/4326c36f02104e87efa40e6bda2eb8301ccb81fb differ
-diff --git a/fuzz/corpora/asn1/4341d0776b18e160439874aa78c6e662a23f48bc b/fuzz/corpora/asn1/4341d0776b18e160439874aa78c6e662a23f48bc
+index 0000000..8ce2284
+Binary files /dev/null and b/fuzz/corpora/asn1/6240f139a01f8fc6ad627cdaced967854551c7dd differ
+diff --git a/fuzz/corpora/asn1/62bf1a2c54f6284043c268e7e738b9895be0c101 b/fuzz/corpora/asn1/62bf1a2c54f6284043c268e7e738b9895be0c101
 new file mode 100644
-index 000000000000..d9f9811cdd18
-Binary files /dev/null and b/fuzz/corpora/asn1/4341d0776b18e160439874aa78c6e662a23f48bc differ
-diff --git a/fuzz/corpora/asn1/43420658f631a577146d581d543eb3da8ea8a386 b/fuzz/corpora/asn1/43420658f631a577146d581d543eb3da8ea8a386
+index 0000000..ebddbd0
+Binary files /dev/null and b/fuzz/corpora/asn1/62bf1a2c54f6284043c268e7e738b9895be0c101 differ
+diff --git a/fuzz/corpora/asn1/63452d65cfccc21afd3d21207dcbd1621766d48d b/fuzz/corpora/asn1/63452d65cfccc21afd3d21207dcbd1621766d48d
 new file mode 100644
-index 000000000000..6c35a0fd1445
-Binary files /dev/null and b/fuzz/corpora/asn1/43420658f631a577146d581d543eb3da8ea8a386 differ
-diff --git a/fuzz/corpora/asn1/43456b0093090dae8b39d8f0d57bcd1b53992a8c b/fuzz/corpora/asn1/43456b0093090dae8b39d8f0d57bcd1b53992a8c
+index 0000000..9a0ff8b
+Binary files /dev/null and b/fuzz/corpora/asn1/63452d65cfccc21afd3d21207dcbd1621766d48d differ
+diff --git a/fuzz/corpora/asn1/63e7a7e0ae1edb16eaf97deaf48e123079c08196 b/fuzz/corpora/asn1/63e7a7e0ae1edb16eaf97deaf48e123079c08196
 new file mode 100644
-index 000000000000..00f6863ce99c
-Binary files /dev/null and b/fuzz/corpora/asn1/43456b0093090dae8b39d8f0d57bcd1b53992a8c differ
-diff --git a/fuzz/corpora/asn1/4381480925a1dd9332336fe86fb68418d9a5cff8 b/fuzz/corpora/asn1/4381480925a1dd9332336fe86fb68418d9a5cff8
+index 0000000..25829d6
+Binary files /dev/null and b/fuzz/corpora/asn1/63e7a7e0ae1edb16eaf97deaf48e123079c08196 differ
+diff --git a/fuzz/corpora/asn1/641d57777a4ca345b6a5cd14ced23cac253b086a b/fuzz/corpora/asn1/641d57777a4ca345b6a5cd14ced23cac253b086a
 new file mode 100644
-index 000000000000..fa4ec0cdfd37
-Binary files /dev/null and b/fuzz/corpora/asn1/4381480925a1dd9332336fe86fb68418d9a5cff8 differ
-diff --git a/fuzz/corpora/asn1/43a1f003f0f6b39e7944bedc50486a661e1e1909 b/fuzz/corpora/asn1/43a1f003f0f6b39e7944bedc50486a661e1e1909
+index 0000000..9d719a8
+Binary files /dev/null and b/fuzz/corpora/asn1/641d57777a4ca345b6a5cd14ced23cac253b086a differ
+diff --git a/fuzz/corpora/asn1/649b52e10735051c8c7d1807a5b69f8d586d3661 b/fuzz/corpora/asn1/649b52e10735051c8c7d1807a5b69f8d586d3661
 new file mode 100644
-index 000000000000..dafd8b0fc1b5
-Binary files /dev/null and b/fuzz/corpora/asn1/43a1f003f0f6b39e7944bedc50486a661e1e1909 differ
-diff --git a/fuzz/corpora/asn1/43a871a491c09263ab752bc4db1c3cb13da89f40 b/fuzz/corpora/asn1/43a871a491c09263ab752bc4db1c3cb13da89f40
+index 0000000..bc70f43
+Binary files /dev/null and b/fuzz/corpora/asn1/649b52e10735051c8c7d1807a5b69f8d586d3661 differ
+diff --git a/fuzz/corpora/asn1/652af8e5e2f7d2a7d5ba33ec5d7945503f2b90d7 b/fuzz/corpora/asn1/652af8e5e2f7d2a7d5ba33ec5d7945503f2b90d7
 new file mode 100644
-index 000000000000..6d4430bc6387
-Binary files /dev/null and b/fuzz/corpora/asn1/43a871a491c09263ab752bc4db1c3cb13da89f40 differ
-diff --git a/fuzz/corpora/asn1/43d90ea775f5bd9c961211d1ad97fc748eb67710 b/fuzz/corpora/asn1/43d90ea775f5bd9c961211d1ad97fc748eb67710
+index 0000000..232bcad
+Binary files /dev/null and b/fuzz/corpora/asn1/652af8e5e2f7d2a7d5ba33ec5d7945503f2b90d7 differ
+diff --git a/fuzz/corpora/asn1/66b7293dacd571d9e460dfcb36a2b602ae34320d b/fuzz/corpora/asn1/66b7293dacd571d9e460dfcb36a2b602ae34320d
 new file mode 100644
-index 000000000000..71b6afafce8b
-Binary files /dev/null and b/fuzz/corpora/asn1/43d90ea775f5bd9c961211d1ad97fc748eb67710 differ
-diff --git a/fuzz/corpora/asn1/43e1afb71dab64f939d325294b142bada6783509 b/fuzz/corpora/asn1/43e1afb71dab64f939d325294b142bada6783509
+index 0000000..822fcf0
+Binary files /dev/null and b/fuzz/corpora/asn1/66b7293dacd571d9e460dfcb36a2b602ae34320d differ
+diff --git a/fuzz/corpora/asn1/66ccb41c2ed71a9210652108e3b46db6bc40a245 b/fuzz/corpora/asn1/66ccb41c2ed71a9210652108e3b46db6bc40a245
 new file mode 100644
-index 000000000000..72c9c9390160
-Binary files /dev/null and b/fuzz/corpora/asn1/43e1afb71dab64f939d325294b142bada6783509 differ
-diff --git a/fuzz/corpora/asn1/43f21b4161fd8a0f1a34b234b4c674fce63547fe b/fuzz/corpora/asn1/43f21b4161fd8a0f1a34b234b4c674fce63547fe
+index 0000000..97200f3
+Binary files /dev/null and b/fuzz/corpora/asn1/66ccb41c2ed71a9210652108e3b46db6bc40a245 differ
+diff --git a/fuzz/corpora/asn1/6736b614b5693b40cbcb32ae2500daef3e3fa417 b/fuzz/corpora/asn1/6736b614b5693b40cbcb32ae2500daef3e3fa417
 new file mode 100644
-index 000000000000..34eec3312a75
-Binary files /dev/null and b/fuzz/corpora/asn1/43f21b4161fd8a0f1a34b234b4c674fce63547fe differ
-diff --git a/fuzz/corpora/asn1/4434008982b20940d29c48bd4aa311b27de4a066 b/fuzz/corpora/asn1/4434008982b20940d29c48bd4aa311b27de4a066
+index 0000000..3286da7
+Binary files /dev/null and b/fuzz/corpora/asn1/6736b614b5693b40cbcb32ae2500daef3e3fa417 differ
+diff --git a/fuzz/corpora/asn1/6772b1dddc0bd43a3ac925e9db431775149e7f69 b/fuzz/corpora/asn1/6772b1dddc0bd43a3ac925e9db431775149e7f69
 new file mode 100644
-index 000000000000..50dea1c1de62
-Binary files /dev/null and b/fuzz/corpora/asn1/4434008982b20940d29c48bd4aa311b27de4a066 differ
-diff --git a/fuzz/corpora/asn1/44ff21ca68ef20751b81bb19a21f98c559d0dddd b/fuzz/corpora/asn1/44ff21ca68ef20751b81bb19a21f98c559d0dddd
+index 0000000..6a30a1f
+Binary files /dev/null and b/fuzz/corpora/asn1/6772b1dddc0bd43a3ac925e9db431775149e7f69 differ
+diff --git a/fuzz/corpora/asn1/691998a577c3868a32f9e921214de061f8cb7982 b/fuzz/corpora/asn1/691998a577c3868a32f9e921214de061f8cb7982
 new file mode 100644
-index 000000000000..b89974477bf3
-Binary files /dev/null and b/fuzz/corpora/asn1/44ff21ca68ef20751b81bb19a21f98c559d0dddd differ
-diff --git a/fuzz/corpora/asn1/45b1f6ee705f0f22ae6ee0d93e53cd399db30b7b b/fuzz/corpora/asn1/45b1f6ee705f0f22ae6ee0d93e53cd399db30b7b
+index 0000000..9fd2816
+Binary files /dev/null and b/fuzz/corpora/asn1/691998a577c3868a32f9e921214de061f8cb7982 differ
+diff --git a/fuzz/corpora/asn1/691c5f79265edfad387d007d207aadc9240be0d6 b/fuzz/corpora/asn1/691c5f79265edfad387d007d207aadc9240be0d6
 new file mode 100644
-index 000000000000..9e5cdcaced2b
-Binary files /dev/null and b/fuzz/corpora/asn1/45b1f6ee705f0f22ae6ee0d93e53cd399db30b7b differ
-diff --git a/fuzz/corpora/asn1/45c9bd3a3a10f0979b193309643323d97829f409 b/fuzz/corpora/asn1/45c9bd3a3a10f0979b193309643323d97829f409
+index 0000000..791c6f0
+Binary files /dev/null and b/fuzz/corpora/asn1/691c5f79265edfad387d007d207aadc9240be0d6 differ
+diff --git a/fuzz/corpora/asn1/69396914f72b398c83971af32cbddc9fc78e7df6 b/fuzz/corpora/asn1/69396914f72b398c83971af32cbddc9fc78e7df6
 new file mode 100644
-index 000000000000..bc1d0bc3f49a
-Binary files /dev/null and b/fuzz/corpora/asn1/45c9bd3a3a10f0979b193309643323d97829f409 differ
-diff --git a/fuzz/corpora/asn1/45ca1bf25acb39689fb2a01d3e106c79a0f5dc55 b/fuzz/corpora/asn1/45ca1bf25acb39689fb2a01d3e106c79a0f5dc55
+index 0000000..eb058cc
+Binary files /dev/null and b/fuzz/corpora/asn1/69396914f72b398c83971af32cbddc9fc78e7df6 differ
+diff --git a/fuzz/corpora/asn1/6a1c25a2fdd64a460ffc5d01a9f6f0cc758d22c1 b/fuzz/corpora/asn1/6a1c25a2fdd64a460ffc5d01a9f6f0cc758d22c1
 new file mode 100644
-index 000000000000..4e6cf5f4b404
-Binary files /dev/null and b/fuzz/corpora/asn1/45ca1bf25acb39689fb2a01d3e106c79a0f5dc55 differ
-diff --git a/fuzz/corpora/asn1/4657b0014550c91575378de9d07358cd9945a1ad b/fuzz/corpora/asn1/4657b0014550c91575378de9d07358cd9945a1ad
+index 0000000..de1d673
+Binary files /dev/null and b/fuzz/corpora/asn1/6a1c25a2fdd64a460ffc5d01a9f6f0cc758d22c1 differ
+diff --git a/fuzz/corpora/asn1/6acc61fa2eb3de2a75a19439aceb57e8a038ab3b b/fuzz/corpora/asn1/6acc61fa2eb3de2a75a19439aceb57e8a038ab3b
 new file mode 100644
-index 000000000000..4b95d84df69c
-Binary files /dev/null and b/fuzz/corpora/asn1/4657b0014550c91575378de9d07358cd9945a1ad differ
-diff --git a/fuzz/corpora/asn1/46601c4f26dea04f02a59da306cde356db7decfa b/fuzz/corpora/asn1/46601c4f26dea04f02a59da306cde356db7decfa
+index 0000000..0563217
+Binary files /dev/null and b/fuzz/corpora/asn1/6acc61fa2eb3de2a75a19439aceb57e8a038ab3b differ
+diff --git a/fuzz/corpora/asn1/6ad6ef267febd3b4506fdf42e2b6652eb944a36d b/fuzz/corpora/asn1/6ad6ef267febd3b4506fdf42e2b6652eb944a36d
 new file mode 100644
-index 000000000000..f47fb3066ba8
-Binary files /dev/null and b/fuzz/corpora/asn1/46601c4f26dea04f02a59da306cde356db7decfa differ
-diff --git a/fuzz/corpora/asn1/46e5274dba53d0f8c1842490a253818fcb5fd156 b/fuzz/corpora/asn1/46e5274dba53d0f8c1842490a253818fcb5fd156
+index 0000000..efae789
+Binary files /dev/null and b/fuzz/corpora/asn1/6ad6ef267febd3b4506fdf42e2b6652eb944a36d differ
+diff --git a/fuzz/corpora/asn1/6b91749ecea9f52797d5d7575432f93da98ed9b6 b/fuzz/corpora/asn1/6b91749ecea9f52797d5d7575432f93da98ed9b6
 new file mode 100644
-index 000000000000..c4295e41d277
-Binary files /dev/null and b/fuzz/corpora/asn1/46e5274dba53d0f8c1842490a253818fcb5fd156 differ
-diff --git a/fuzz/corpora/asn1/46fb2ae2f1006f3f8ad38066170ddbbe3f391e5e b/fuzz/corpora/asn1/46fb2ae2f1006f3f8ad38066170ddbbe3f391e5e
+index 0000000..19b3e94
+Binary files /dev/null and b/fuzz/corpora/asn1/6b91749ecea9f52797d5d7575432f93da98ed9b6 differ
+diff --git a/fuzz/corpora/asn1/6bbbfc93bb556acc4e41337303c01ee7f32d1e2c b/fuzz/corpora/asn1/6bbbfc93bb556acc4e41337303c01ee7f32d1e2c
 new file mode 100644
-index 000000000000..09c4dfad22e9
-Binary files /dev/null and b/fuzz/corpora/asn1/46fb2ae2f1006f3f8ad38066170ddbbe3f391e5e differ
-diff --git a/fuzz/corpora/asn1/4723dcf70559a9a56997bccf742966a8b30cf30e b/fuzz/corpora/asn1/4723dcf70559a9a56997bccf742966a8b30cf30e
+index 0000000..d3db331
+Binary files /dev/null and b/fuzz/corpora/asn1/6bbbfc93bb556acc4e41337303c01ee7f32d1e2c differ
+diff --git a/fuzz/corpora/asn1/6c522864593f9a88b9da3bc8577471eecbf7dfb8 b/fuzz/corpora/asn1/6c522864593f9a88b9da3bc8577471eecbf7dfb8
 new file mode 100644
-index 000000000000..8b9f52db461d
-Binary files /dev/null and b/fuzz/corpora/asn1/4723dcf70559a9a56997bccf742966a8b30cf30e differ
-diff --git a/fuzz/corpora/asn1/474c666326a13573832bbc1903b9929a924b47d6 b/fuzz/corpora/asn1/474c666326a13573832bbc1903b9929a924b47d6
+index 0000000..a6976f8
+Binary files /dev/null and b/fuzz/corpora/asn1/6c522864593f9a88b9da3bc8577471eecbf7dfb8 differ
+diff --git a/fuzz/corpora/asn1/6c8f1dee251b8288c2f16b441b1810cf7bca49ab b/fuzz/corpora/asn1/6c8f1dee251b8288c2f16b441b1810cf7bca49ab
 new file mode 100644
-index 000000000000..bd864e9b8ddc
-Binary files /dev/null and b/fuzz/corpora/asn1/474c666326a13573832bbc1903b9929a924b47d6 differ
-diff --git a/fuzz/corpora/asn1/4788b857063b1bed5689e4b89c07dbe435f6ed39 b/fuzz/corpora/asn1/4788b857063b1bed5689e4b89c07dbe435f6ed39
+index 0000000..f14cc40
+Binary files /dev/null and b/fuzz/corpora/asn1/6c8f1dee251b8288c2f16b441b1810cf7bca49ab differ
+diff --git a/fuzz/corpora/asn1/6d5c7800798dbf022d7bf8c75bf0b8997d623e59 b/fuzz/corpora/asn1/6d5c7800798dbf022d7bf8c75bf0b8997d623e59
 new file mode 100644
-index 000000000000..3239cb175f14
-Binary files /dev/null and b/fuzz/corpora/asn1/4788b857063b1bed5689e4b89c07dbe435f6ed39 differ
-diff --git a/fuzz/corpora/asn1/47dc7f60c74b3b9623bfb239ab34748d194d29b3 b/fuzz/corpora/asn1/47dc7f60c74b3b9623bfb239ab34748d194d29b3
+index 0000000..8760ddf
+Binary files /dev/null and b/fuzz/corpora/asn1/6d5c7800798dbf022d7bf8c75bf0b8997d623e59 differ
+diff --git a/fuzz/corpora/asn1/6d95adf42da165512dc2e15f3abb8402474fe400 b/fuzz/corpora/asn1/6d95adf42da165512dc2e15f3abb8402474fe400
 new file mode 100644
-index 000000000000..22ba9b7869c2
-Binary files /dev/null and b/fuzz/corpora/asn1/47dc7f60c74b3b9623bfb239ab34748d194d29b3 differ
-diff --git a/fuzz/corpora/asn1/47f3f4a5d7ba351578752654234c7c0bc57ee094 b/fuzz/corpora/asn1/47f3f4a5d7ba351578752654234c7c0bc57ee094
+index 0000000..d713fa1
+Binary files /dev/null and b/fuzz/corpora/asn1/6d95adf42da165512dc2e15f3abb8402474fe400 differ
+diff --git a/fuzz/corpora/asn1/6defe05fe2fc2d6590659b5d7e847b1a73f38ca1 b/fuzz/corpora/asn1/6defe05fe2fc2d6590659b5d7e847b1a73f38ca1
 new file mode 100644
-index 000000000000..1a8a21ffb63f
-Binary files /dev/null and b/fuzz/corpora/asn1/47f3f4a5d7ba351578752654234c7c0bc57ee094 differ
-diff --git a/fuzz/corpora/asn1/482576a5535d8c3982be84d55500c74292300671 b/fuzz/corpora/asn1/482576a5535d8c3982be84d55500c74292300671
+index 0000000..2efabec
+Binary files /dev/null and b/fuzz/corpora/asn1/6defe05fe2fc2d6590659b5d7e847b1a73f38ca1 differ
+diff --git a/fuzz/corpora/asn1/6df417864fe3311b4ccc19b6ab5952a0783653a9 b/fuzz/corpora/asn1/6df417864fe3311b4ccc19b6ab5952a0783653a9
 new file mode 100644
-index 000000000000..8a7260429437
-Binary files /dev/null and b/fuzz/corpora/asn1/482576a5535d8c3982be84d55500c74292300671 differ
-diff --git a/fuzz/corpora/asn1/487f4041e294f53420e7a2afd670704cbbbe0d40 b/fuzz/corpora/asn1/487f4041e294f53420e7a2afd670704cbbbe0d40
+index 0000000..5ad6269
+Binary files /dev/null and b/fuzz/corpora/asn1/6df417864fe3311b4ccc19b6ab5952a0783653a9 differ
+diff --git a/fuzz/corpora/asn1/6e67b210aa4d3620eb0f903e0d2dce984df7256b b/fuzz/corpora/asn1/6e67b210aa4d3620eb0f903e0d2dce984df7256b
 new file mode 100644
-index 000000000000..c308c5aa5348
-Binary files /dev/null and b/fuzz/corpora/asn1/487f4041e294f53420e7a2afd670704cbbbe0d40 differ
-diff --git a/fuzz/corpora/asn1/48a6c40bd98828a07ba2ca53955b60abbe75bc66 b/fuzz/corpora/asn1/48a6c40bd98828a07ba2ca53955b60abbe75bc66
+index 0000000..ed0b996
+Binary files /dev/null and b/fuzz/corpora/asn1/6e67b210aa4d3620eb0f903e0d2dce984df7256b differ
+diff --git a/fuzz/corpora/asn1/6eaeb5e449859220c0b7328e3a93c87dc3ad7897 b/fuzz/corpora/asn1/6eaeb5e449859220c0b7328e3a93c87dc3ad7897
 new file mode 100644
-index 000000000000..599261960d20
-Binary files /dev/null and b/fuzz/corpora/asn1/48a6c40bd98828a07ba2ca53955b60abbe75bc66 differ
-diff --git a/fuzz/corpora/asn1/491c197774060b639747675228f1db2f60b24796 b/fuzz/corpora/asn1/491c197774060b639747675228f1db2f60b24796
+index 0000000..7236ea8
+Binary files /dev/null and b/fuzz/corpora/asn1/6eaeb5e449859220c0b7328e3a93c87dc3ad7897 differ
+diff --git a/fuzz/corpora/asn1/6ed498806c0a6524439f8ac290f9ff5b18759be7 b/fuzz/corpora/asn1/6ed498806c0a6524439f8ac290f9ff5b18759be7
 new file mode 100644
-index 000000000000..c4cf4a8f5ec6
-Binary files /dev/null and b/fuzz/corpora/asn1/491c197774060b639747675228f1db2f60b24796 differ
-diff --git a/fuzz/corpora/asn1/492e7aa6b100f2f51b26a59aa8708a46d677f0b2 b/fuzz/corpora/asn1/492e7aa6b100f2f51b26a59aa8708a46d677f0b2
+index 0000000..7ce8ca6
+Binary files /dev/null and b/fuzz/corpora/asn1/6ed498806c0a6524439f8ac290f9ff5b18759be7 differ
+diff --git a/fuzz/corpora/asn1/6edbb64240cc4f745b8f84422a3e08e499d19869 b/fuzz/corpora/asn1/6edbb64240cc4f745b8f84422a3e08e499d19869
 new file mode 100644
-index 000000000000..a0615b647158
-Binary files /dev/null and b/fuzz/corpora/asn1/492e7aa6b100f2f51b26a59aa8708a46d677f0b2 differ
-diff --git a/fuzz/corpora/asn1/496f5348b89d7fc1030b10820082e4ced0143cc6 b/fuzz/corpora/asn1/496f5348b89d7fc1030b10820082e4ced0143cc6
+index 0000000..dab94d3
+Binary files /dev/null and b/fuzz/corpora/asn1/6edbb64240cc4f745b8f84422a3e08e499d19869 differ
+diff --git a/fuzz/corpora/asn1/6f2523624e6731bdeb7f1f9dedbcf90237ed7cd1 b/fuzz/corpora/asn1/6f2523624e6731bdeb7f1f9dedbcf90237ed7cd1
 new file mode 100644
-index 000000000000..9fa1349610eb
-Binary files /dev/null and b/fuzz/corpora/asn1/496f5348b89d7fc1030b10820082e4ced0143cc6 differ
-diff --git a/fuzz/corpora/asn1/497a9f614c535b99a1cf16746d9f9567a5221733 b/fuzz/corpora/asn1/497a9f614c535b99a1cf16746d9f9567a5221733
+index 0000000..3ed7bba
+Binary files /dev/null and b/fuzz/corpora/asn1/6f2523624e6731bdeb7f1f9dedbcf90237ed7cd1 differ
+diff --git a/fuzz/corpora/asn1/6f27c43a83e859e9fce3735d0601b8085bc4cb3a b/fuzz/corpora/asn1/6f27c43a83e859e9fce3735d0601b8085bc4cb3a
 new file mode 100644
-index 000000000000..3ba72b5b02ca
-Binary files /dev/null and b/fuzz/corpora/asn1/497a9f614c535b99a1cf16746d9f9567a5221733 differ
-diff --git a/fuzz/corpora/asn1/49ce2f748871dff3bf9614435341e099e5942106 b/fuzz/corpora/asn1/49ce2f748871dff3bf9614435341e099e5942106
+index 0000000..0fcf0d8
+Binary files /dev/null and b/fuzz/corpora/asn1/6f27c43a83e859e9fce3735d0601b8085bc4cb3a differ
+diff --git a/fuzz/corpora/asn1/6f3a0f3df23e638769921b35fd6260064f0f1bfd b/fuzz/corpora/asn1/6f3a0f3df23e638769921b35fd6260064f0f1bfd
 new file mode 100644
-index 000000000000..5b6565c70ddc
-Binary files /dev/null and b/fuzz/corpora/asn1/49ce2f748871dff3bf9614435341e099e5942106 differ
-diff --git a/fuzz/corpora/asn1/4a2f0006f68e3252b15ad8e9ce69385180be17ad b/fuzz/corpora/asn1/4a2f0006f68e3252b15ad8e9ce69385180be17ad
+index 0000000..de053a1
+Binary files /dev/null and b/fuzz/corpora/asn1/6f3a0f3df23e638769921b35fd6260064f0f1bfd differ
+diff --git a/fuzz/corpora/asn1/6ff275248fc6d0fc09aa13ed2cf1988ab0889504 b/fuzz/corpora/asn1/6ff275248fc6d0fc09aa13ed2cf1988ab0889504
 new file mode 100644
-index 000000000000..0a4d92686e72
-Binary files /dev/null and b/fuzz/corpora/asn1/4a2f0006f68e3252b15ad8e9ce69385180be17ad differ
-diff --git a/fuzz/corpora/asn1/4b01e0e3bc07ad526ff0957f26a565b12cc0d1ba b/fuzz/corpora/asn1/4b01e0e3bc07ad526ff0957f26a565b12cc0d1ba
+index 0000000..b3cb4d1
+Binary files /dev/null and b/fuzz/corpora/asn1/6ff275248fc6d0fc09aa13ed2cf1988ab0889504 differ
+diff --git a/fuzz/corpora/asn1/704a87da7bbfad4933905923ff6efc01fbd6300f b/fuzz/corpora/asn1/704a87da7bbfad4933905923ff6efc01fbd6300f
 new file mode 100644
-index 000000000000..67f0052e1861
-Binary files /dev/null and b/fuzz/corpora/asn1/4b01e0e3bc07ad526ff0957f26a565b12cc0d1ba differ
-diff --git a/fuzz/corpora/asn1/4b21a6c84b789800f66790726e7bf88c84e52e3a b/fuzz/corpora/asn1/4b21a6c84b789800f66790726e7bf88c84e52e3a
+index 0000000..8321fad
+Binary files /dev/null and b/fuzz/corpora/asn1/704a87da7bbfad4933905923ff6efc01fbd6300f differ
+diff --git a/fuzz/corpora/asn1/7129035ddd05bec23d9909fcf095ca5fea5d2574 b/fuzz/corpora/asn1/7129035ddd05bec23d9909fcf095ca5fea5d2574
 new file mode 100644
-index 000000000000..0f183e48b766
-Binary files /dev/null and b/fuzz/corpora/asn1/4b21a6c84b789800f66790726e7bf88c84e52e3a differ
-diff --git a/fuzz/corpora/asn1/4b25155fa4d637c1f9df7c411a347a44026e806d b/fuzz/corpora/asn1/4b25155fa4d637c1f9df7c411a347a44026e806d
+index 0000000..d7fd49f
+Binary files /dev/null and b/fuzz/corpora/asn1/7129035ddd05bec23d9909fcf095ca5fea5d2574 differ
+diff --git a/fuzz/corpora/asn1/71a33cf3c20cd153e09b047267ce792b5c7b9e99 b/fuzz/corpora/asn1/71a33cf3c20cd153e09b047267ce792b5c7b9e99
 new file mode 100644
-index 000000000000..5838756fc61e
-Binary files /dev/null and b/fuzz/corpora/asn1/4b25155fa4d637c1f9df7c411a347a44026e806d differ
-diff --git a/fuzz/corpora/asn1/4b43707a96781339210b724b06e480b29105cb1b b/fuzz/corpora/asn1/4b43707a96781339210b724b06e480b29105cb1b
+index 0000000..b646cc1
+Binary files /dev/null and b/fuzz/corpora/asn1/71a33cf3c20cd153e09b047267ce792b5c7b9e99 differ
+diff --git a/fuzz/corpora/asn1/71c342ab087a30664b93719bcbed6f3b1f160345 b/fuzz/corpora/asn1/71c342ab087a30664b93719bcbed6f3b1f160345
 new file mode 100644
-index 000000000000..0431455f0aad
-Binary files /dev/null and b/fuzz/corpora/asn1/4b43707a96781339210b724b06e480b29105cb1b differ
-diff --git a/fuzz/corpora/asn1/4c477ccc4d114dfce2dbfd1a38226fc4165ae86b b/fuzz/corpora/asn1/4c477ccc4d114dfce2dbfd1a38226fc4165ae86b
+index 0000000..dd3ddb2
+Binary files /dev/null and b/fuzz/corpora/asn1/71c342ab087a30664b93719bcbed6f3b1f160345 differ
+diff --git a/fuzz/corpora/asn1/71e9c3e636809e938e963c71a334bdc6a29e025b b/fuzz/corpora/asn1/71e9c3e636809e938e963c71a334bdc6a29e025b
 new file mode 100644
-index 000000000000..efa646b9797e
-Binary files /dev/null and b/fuzz/corpora/asn1/4c477ccc4d114dfce2dbfd1a38226fc4165ae86b differ
-diff --git a/fuzz/corpora/asn1/4c5e53f8933af3aa4adbe9a03f3fa663469c11f3 b/fuzz/corpora/asn1/4c5e53f8933af3aa4adbe9a03f3fa663469c11f3
+index 0000000..e0d8a52
+Binary files /dev/null and b/fuzz/corpora/asn1/71e9c3e636809e938e963c71a334bdc6a29e025b differ
+diff --git a/fuzz/corpora/asn1/729c18dbdcfe0faafb02aca9161e04c99a3d61ed b/fuzz/corpora/asn1/729c18dbdcfe0faafb02aca9161e04c99a3d61ed
 new file mode 100644
-index 000000000000..4b8fabe1acf3
-Binary files /dev/null and b/fuzz/corpora/asn1/4c5e53f8933af3aa4adbe9a03f3fa663469c11f3 differ
-diff --git a/fuzz/corpora/asn1/4c6453caefc4907f3f60aeea0b2c4392257f11c4 b/fuzz/corpora/asn1/4c6453caefc4907f3f60aeea0b2c4392257f11c4
+index 0000000..6359522
+Binary files /dev/null and b/fuzz/corpora/asn1/729c18dbdcfe0faafb02aca9161e04c99a3d61ed differ
+diff --git a/fuzz/corpora/asn1/7395e9e41d7cf962fe7b9093f68ee97f236e6127 b/fuzz/corpora/asn1/7395e9e41d7cf962fe7b9093f68ee97f236e6127
 new file mode 100644
-index 000000000000..e4a6ca394a25
-Binary files /dev/null and b/fuzz/corpora/asn1/4c6453caefc4907f3f60aeea0b2c4392257f11c4 differ
-diff --git a/fuzz/corpora/asn1/4c66a05fb19a0ff10ddb4ba6b251e7e7e267fff2 b/fuzz/corpora/asn1/4c66a05fb19a0ff10ddb4ba6b251e7e7e267fff2
+index 0000000..8112888
+Binary files /dev/null and b/fuzz/corpora/asn1/7395e9e41d7cf962fe7b9093f68ee97f236e6127 differ
+diff --git a/fuzz/corpora/asn1/741de4bc06656d8e1a49451b1f41d29882f035df b/fuzz/corpora/asn1/741de4bc06656d8e1a49451b1f41d29882f035df
 new file mode 100644
-index 000000000000..6af1de77c299
-Binary files /dev/null and b/fuzz/corpora/asn1/4c66a05fb19a0ff10ddb4ba6b251e7e7e267fff2 differ
-diff --git a/fuzz/corpora/asn1/4d56e7e40e8ec69906dd4e34f4798483fb8e14d1 b/fuzz/corpora/asn1/4d56e7e40e8ec69906dd4e34f4798483fb8e14d1
+index 0000000..6ad2f3e
+Binary files /dev/null and b/fuzz/corpora/asn1/741de4bc06656d8e1a49451b1f41d29882f035df differ
+diff --git a/fuzz/corpora/asn1/74436b91c383a94975c010acc468a17b8db8c401 b/fuzz/corpora/asn1/74436b91c383a94975c010acc468a17b8db8c401
 new file mode 100644
-index 000000000000..c70ddde7a58c
-Binary files /dev/null and b/fuzz/corpora/asn1/4d56e7e40e8ec69906dd4e34f4798483fb8e14d1 differ
-diff --git a/fuzz/corpora/asn1/4d588bb4ceae0f42e84e66b042c3c7fe1a0f1661 b/fuzz/corpora/asn1/4d588bb4ceae0f42e84e66b042c3c7fe1a0f1661
+index 0000000..6116daf
+Binary files /dev/null and b/fuzz/corpora/asn1/74436b91c383a94975c010acc468a17b8db8c401 differ
+diff --git a/fuzz/corpora/asn1/7445b03035891717a89ccbfe94e93a6cbdc858c6 b/fuzz/corpora/asn1/7445b03035891717a89ccbfe94e93a6cbdc858c6
 new file mode 100644
-index 000000000000..779ef57fdba4
-Binary files /dev/null and b/fuzz/corpora/asn1/4d588bb4ceae0f42e84e66b042c3c7fe1a0f1661 differ
-diff --git a/fuzz/corpora/asn1/4d5ec47a2a450e07412dedb7fe05bd241ac93052 b/fuzz/corpora/asn1/4d5ec47a2a450e07412dedb7fe05bd241ac93052
+index 0000000..c8f5377
+Binary files /dev/null and b/fuzz/corpora/asn1/7445b03035891717a89ccbfe94e93a6cbdc858c6 differ
+diff --git a/fuzz/corpora/asn1/74bc2f89637ac6009f4eb7b42b9f08c26b8a9787 b/fuzz/corpora/asn1/74bc2f89637ac6009f4eb7b42b9f08c26b8a9787
 new file mode 100644
-index 000000000000..37cd1ec44ac0
-Binary files /dev/null and b/fuzz/corpora/asn1/4d5ec47a2a450e07412dedb7fe05bd241ac93052 differ
-diff --git a/fuzz/corpora/asn1/4d5fdaf5d5205917bb14016614b54f7c811a1d87 b/fuzz/corpora/asn1/4d5fdaf5d5205917bb14016614b54f7c811a1d87
+index 0000000..07c34e2
+Binary files /dev/null and b/fuzz/corpora/asn1/74bc2f89637ac6009f4eb7b42b9f08c26b8a9787 differ
+diff --git a/fuzz/corpora/asn1/751a8f7a80282c0f2a19dbe50ab615306c0abdad b/fuzz/corpora/asn1/751a8f7a80282c0f2a19dbe50ab615306c0abdad
 new file mode 100644
-index 000000000000..48ab5da36f72
-Binary files /dev/null and b/fuzz/corpora/asn1/4d5fdaf5d5205917bb14016614b54f7c811a1d87 differ
-diff --git a/fuzz/corpora/asn1/4e1d2949fde78c4cb79fdb0dc60f1b1a5e93ac91 b/fuzz/corpora/asn1/4e1d2949fde78c4cb79fdb0dc60f1b1a5e93ac91
+index 0000000..9058a25
+Binary files /dev/null and b/fuzz/corpora/asn1/751a8f7a80282c0f2a19dbe50ab615306c0abdad differ
+diff --git a/fuzz/corpora/asn1/7548eff33fc7121d2a121f332121c7391106ab73 b/fuzz/corpora/asn1/7548eff33fc7121d2a121f332121c7391106ab73
 new file mode 100644
-index 000000000000..b8724d835971
-Binary files /dev/null and b/fuzz/corpora/asn1/4e1d2949fde78c4cb79fdb0dc60f1b1a5e93ac91 differ
-diff --git a/fuzz/corpora/asn1/4eaf7c56b056e25eae8f082e147de1592e749e3d b/fuzz/corpora/asn1/4eaf7c56b056e25eae8f082e147de1592e749e3d
+index 0000000..966f515
+Binary files /dev/null and b/fuzz/corpora/asn1/7548eff33fc7121d2a121f332121c7391106ab73 differ
+diff --git a/fuzz/corpora/asn1/75c29757e9f2bd4d8f41253003cec32e5bd153f5 b/fuzz/corpora/asn1/75c29757e9f2bd4d8f41253003cec32e5bd153f5
 new file mode 100644
-index 000000000000..61fda715f9cd
-Binary files /dev/null and b/fuzz/corpora/asn1/4eaf7c56b056e25eae8f082e147de1592e749e3d differ
-diff --git a/fuzz/corpora/asn1/4eea7decf9ad9f5d864b9a260d4312bef4986df2 b/fuzz/corpora/asn1/4eea7decf9ad9f5d864b9a260d4312bef4986df2
+index 0000000..3ffbd14
+Binary files /dev/null and b/fuzz/corpora/asn1/75c29757e9f2bd4d8f41253003cec32e5bd153f5 differ
+diff --git a/fuzz/corpora/asn1/76579e818c3ed4dfecb8f3dee908d447123c8ba8 b/fuzz/corpora/asn1/76579e818c3ed4dfecb8f3dee908d447123c8ba8
 new file mode 100644
-index 000000000000..0d21f6be0eef
-Binary files /dev/null and b/fuzz/corpora/asn1/4eea7decf9ad9f5d864b9a260d4312bef4986df2 differ
-diff --git a/fuzz/corpora/asn1/4f8a86330df40d778df9e8d20a5a1608e6c15333 b/fuzz/corpora/asn1/4f8a86330df40d778df9e8d20a5a1608e6c15333
+index 0000000..94f4916
+Binary files /dev/null and b/fuzz/corpora/asn1/76579e818c3ed4dfecb8f3dee908d447123c8ba8 differ
+diff --git a/fuzz/corpora/asn1/76f5fbbe0340445a16ed71b8b3f1d2af6393d50b b/fuzz/corpora/asn1/76f5fbbe0340445a16ed71b8b3f1d2af6393d50b
 new file mode 100644
-index 000000000000..1fd3848c8f78
-Binary files /dev/null and b/fuzz/corpora/asn1/4f8a86330df40d778df9e8d20a5a1608e6c15333 differ
-diff --git a/fuzz/corpora/asn1/50040f190b00a2ce5bffc2b8d7645dfd91477e9e b/fuzz/corpora/asn1/50040f190b00a2ce5bffc2b8d7645dfd91477e9e
+index 0000000..cf49ddb
+Binary files /dev/null and b/fuzz/corpora/asn1/76f5fbbe0340445a16ed71b8b3f1d2af6393d50b differ
+diff --git a/fuzz/corpora/asn1/773ca70f3b9bb09f4a5255d769756be7d57234a0 b/fuzz/corpora/asn1/773ca70f3b9bb09f4a5255d769756be7d57234a0
 new file mode 100644
-index 000000000000..fe777df8d793
-Binary files /dev/null and b/fuzz/corpora/asn1/50040f190b00a2ce5bffc2b8d7645dfd91477e9e differ
-diff --git a/fuzz/corpora/asn1/501787cc1473fe2db03d388035e8655573060083 b/fuzz/corpora/asn1/501787cc1473fe2db03d388035e8655573060083
+index 0000000..3489536
+Binary files /dev/null and b/fuzz/corpora/asn1/773ca70f3b9bb09f4a5255d769756be7d57234a0 differ
+diff --git a/fuzz/corpora/asn1/774786bd08bce61feaa96355c44d98131a1d1440 b/fuzz/corpora/asn1/774786bd08bce61feaa96355c44d98131a1d1440
 new file mode 100644
-index 000000000000..d14843c621c5
-Binary files /dev/null and b/fuzz/corpora/asn1/501787cc1473fe2db03d388035e8655573060083 differ
-diff --git a/fuzz/corpora/asn1/502d566ff6868c354152ff50b6d41438f25d8d1d b/fuzz/corpora/asn1/502d566ff6868c354152ff50b6d41438f25d8d1d
+index 0000000..8d869d0
+Binary files /dev/null and b/fuzz/corpora/asn1/774786bd08bce61feaa96355c44d98131a1d1440 differ
+diff --git a/fuzz/corpora/asn1/7781995f3330a985d4669b4ba90a08cac1245dac b/fuzz/corpora/asn1/7781995f3330a985d4669b4ba90a08cac1245dac
 new file mode 100644
-index 000000000000..ab80bab17ea1
-Binary files /dev/null and b/fuzz/corpora/asn1/502d566ff6868c354152ff50b6d41438f25d8d1d differ
-diff --git a/fuzz/corpora/asn1/503e1b01a4b2923022b75cb826865e676cde9557 b/fuzz/corpora/asn1/503e1b01a4b2923022b75cb826865e676cde9557
+index 0000000..5481531
+Binary files /dev/null and b/fuzz/corpora/asn1/7781995f3330a985d4669b4ba90a08cac1245dac differ
+diff --git a/fuzz/corpora/asn1/779a1b62f75fef70234b0488e852ef9ba7aef9eb b/fuzz/corpora/asn1/779a1b62f75fef70234b0488e852ef9ba7aef9eb
 new file mode 100644
-index 000000000000..eb5d361634e4
-Binary files /dev/null and b/fuzz/corpora/asn1/503e1b01a4b2923022b75cb826865e676cde9557 differ
-diff --git a/fuzz/corpora/asn1/503e5c815223cebe94a8198c9e684212f320536a b/fuzz/corpora/asn1/503e5c815223cebe94a8198c9e684212f320536a
+index 0000000..357a535
+Binary files /dev/null and b/fuzz/corpora/asn1/779a1b62f75fef70234b0488e852ef9ba7aef9eb differ
+diff --git a/fuzz/corpora/asn1/77fa694ee6a8933d8a45b4acbfa99f305bd4ba5e b/fuzz/corpora/asn1/77fa694ee6a8933d8a45b4acbfa99f305bd4ba5e
 new file mode 100644
-index 000000000000..814b71ada90b
-Binary files /dev/null and b/fuzz/corpora/asn1/503e5c815223cebe94a8198c9e684212f320536a differ
-diff --git a/fuzz/corpora/asn1/504d23921bb6c2f4e4cd5de885845d19f7e24ed4 b/fuzz/corpora/asn1/504d23921bb6c2f4e4cd5de885845d19f7e24ed4
+index 0000000..2d81425
+Binary files /dev/null and b/fuzz/corpora/asn1/77fa694ee6a8933d8a45b4acbfa99f305bd4ba5e differ
+diff --git a/fuzz/corpora/asn1/784e62a345a422126b86285f19d9c8a148714d1d b/fuzz/corpora/asn1/784e62a345a422126b86285f19d9c8a148714d1d
 new file mode 100644
-index 000000000000..9816d1a70050
-Binary files /dev/null and b/fuzz/corpora/asn1/504d23921bb6c2f4e4cd5de885845d19f7e24ed4 differ
-diff --git a/fuzz/corpora/asn1/50d02698a4b89f4c6fd371bd8246a5b55f3327b3 b/fuzz/corpora/asn1/50d02698a4b89f4c6fd371bd8246a5b55f3327b3
+index 0000000..be040b4
+Binary files /dev/null and b/fuzz/corpora/asn1/784e62a345a422126b86285f19d9c8a148714d1d differ
+diff --git a/fuzz/corpora/asn1/78b385be3402a90b215d5eb47593f1d236ea4b1f b/fuzz/corpora/asn1/78b385be3402a90b215d5eb47593f1d236ea4b1f
 new file mode 100644
-index 000000000000..bd772d97d1e6
-Binary files /dev/null and b/fuzz/corpora/asn1/50d02698a4b89f4c6fd371bd8246a5b55f3327b3 differ
-diff --git a/fuzz/corpora/asn1/50db1f6405d507bf8dab9931c8a23dd7e0a2f854 b/fuzz/corpora/asn1/50db1f6405d507bf8dab9931c8a23dd7e0a2f854
+index 0000000..a129b36
+Binary files /dev/null and b/fuzz/corpora/asn1/78b385be3402a90b215d5eb47593f1d236ea4b1f differ
+diff --git a/fuzz/corpora/asn1/7974aedf1c3d8b6100f72387f8fcdc08507f9f3d b/fuzz/corpora/asn1/7974aedf1c3d8b6100f72387f8fcdc08507f9f3d
 new file mode 100644
-index 000000000000..3a988d4185c5
-Binary files /dev/null and b/fuzz/corpora/asn1/50db1f6405d507bf8dab9931c8a23dd7e0a2f854 differ
-diff --git a/fuzz/corpora/asn1/50f90fe45f76d9d42ad88068c5792ccc30a9e28e b/fuzz/corpora/asn1/50f90fe45f76d9d42ad88068c5792ccc30a9e28e
+index 0000000..1c796b0
+Binary files /dev/null and b/fuzz/corpora/asn1/7974aedf1c3d8b6100f72387f8fcdc08507f9f3d differ
+diff --git a/fuzz/corpora/asn1/79e4309f5a0a248ac327c35d7a51b0f6a336bb3a b/fuzz/corpora/asn1/79e4309f5a0a248ac327c35d7a51b0f6a336bb3a
 new file mode 100644
-index 000000000000..9eaa66fae83e
-Binary files /dev/null and b/fuzz/corpora/asn1/50f90fe45f76d9d42ad88068c5792ccc30a9e28e differ
-diff --git a/fuzz/corpora/asn1/517b1e9b0d521e9de51af19a3c27a81fff6dfa52 b/fuzz/corpora/asn1/517b1e9b0d521e9de51af19a3c27a81fff6dfa52
+index 0000000..819e7f4
+Binary files /dev/null and b/fuzz/corpora/asn1/79e4309f5a0a248ac327c35d7a51b0f6a336bb3a differ
+diff --git a/fuzz/corpora/asn1/7a122d256eea2d89fcd7abcdf24fdd35933ba68b b/fuzz/corpora/asn1/7a122d256eea2d89fcd7abcdf24fdd35933ba68b
 new file mode 100644
-index 000000000000..8c558b32c5fa
-Binary files /dev/null and b/fuzz/corpora/asn1/517b1e9b0d521e9de51af19a3c27a81fff6dfa52 differ
-diff --git a/fuzz/corpora/asn1/518d1458641c0c13246788a7283106579da919ee b/fuzz/corpora/asn1/518d1458641c0c13246788a7283106579da919ee
+index 0000000..c27c9f6
+Binary files /dev/null and b/fuzz/corpora/asn1/7a122d256eea2d89fcd7abcdf24fdd35933ba68b differ
+diff --git a/fuzz/corpora/asn1/7a369aef952b5e4be40ce8caa890c9194e53dd7f b/fuzz/corpora/asn1/7a369aef952b5e4be40ce8caa890c9194e53dd7f
 new file mode 100644
-index 000000000000..88b5ef857e17
-Binary files /dev/null and b/fuzz/corpora/asn1/518d1458641c0c13246788a7283106579da919ee differ
-diff --git a/fuzz/corpora/asn1/51de03a8e0918a03c9b51ce979b3f4cdf4a5907f b/fuzz/corpora/asn1/51de03a8e0918a03c9b51ce979b3f4cdf4a5907f
+index 0000000..a4152b3
+Binary files /dev/null and b/fuzz/corpora/asn1/7a369aef952b5e4be40ce8caa890c9194e53dd7f differ
+diff --git a/fuzz/corpora/asn1/7aa94232655a15bc21241d6e1271e06e4b2d7229 b/fuzz/corpora/asn1/7aa94232655a15bc21241d6e1271e06e4b2d7229
 new file mode 100644
-index 000000000000..393b454f5dbe
-Binary files /dev/null and b/fuzz/corpora/asn1/51de03a8e0918a03c9b51ce979b3f4cdf4a5907f differ
-diff --git a/fuzz/corpora/asn1/522361a0abc975468cf3619e50cef8e9a2e99ad8 b/fuzz/corpora/asn1/522361a0abc975468cf3619e50cef8e9a2e99ad8
+index 0000000..8e35923
+Binary files /dev/null and b/fuzz/corpora/asn1/7aa94232655a15bc21241d6e1271e06e4b2d7229 differ
+diff --git a/fuzz/corpora/asn1/7b3678849faeb8f8e4d04309621a4114dc7c77e1 b/fuzz/corpora/asn1/7b3678849faeb8f8e4d04309621a4114dc7c77e1
 new file mode 100644
-index 000000000000..d00304abdbab
-Binary files /dev/null and b/fuzz/corpora/asn1/522361a0abc975468cf3619e50cef8e9a2e99ad8 differ
-diff --git a/fuzz/corpora/asn1/5242b600ea5d85c397417d2dc7516b2ab1ba4032 b/fuzz/corpora/asn1/5242b600ea5d85c397417d2dc7516b2ab1ba4032
+index 0000000..42a526b
+Binary files /dev/null and b/fuzz/corpora/asn1/7b3678849faeb8f8e4d04309621a4114dc7c77e1 differ
+diff --git a/fuzz/corpora/asn1/7ba0ef01ab4c2976fc08a6aef52a8c27e7761478 b/fuzz/corpora/asn1/7ba0ef01ab4c2976fc08a6aef52a8c27e7761478
 new file mode 100644
-index 000000000000..a3b630b697cb
-Binary files /dev/null and b/fuzz/corpora/asn1/5242b600ea5d85c397417d2dc7516b2ab1ba4032 differ
-diff --git a/fuzz/corpora/asn1/52b9f466f5abbded8f141b271737ffc85a651832 b/fuzz/corpora/asn1/52b9f466f5abbded8f141b271737ffc85a651832
+index 0000000..ef7cde6
+Binary files /dev/null and b/fuzz/corpora/asn1/7ba0ef01ab4c2976fc08a6aef52a8c27e7761478 differ
+diff --git a/fuzz/corpora/asn1/7ca0d3944d78f58d41775fe01511ec2153292d25 b/fuzz/corpora/asn1/7ca0d3944d78f58d41775fe01511ec2153292d25
 new file mode 100644
-index 000000000000..419c8561b073
-Binary files /dev/null and b/fuzz/corpora/asn1/52b9f466f5abbded8f141b271737ffc85a651832 differ
-diff --git a/fuzz/corpora/asn1/52fbe4217455e46f686d65bd88c053fa5227b849 b/fuzz/corpora/asn1/52fbe4217455e46f686d65bd88c053fa5227b849
+index 0000000..53a77e3
+Binary files /dev/null and b/fuzz/corpora/asn1/7ca0d3944d78f58d41775fe01511ec2153292d25 differ
+diff --git a/fuzz/corpora/asn1/7de8c7aa4c34d4ecb59ed356c6a91dc4ff8b0781 b/fuzz/corpora/asn1/7de8c7aa4c34d4ecb59ed356c6a91dc4ff8b0781
 new file mode 100644
-index 000000000000..fa8761d61d7f
-Binary files /dev/null and b/fuzz/corpora/asn1/52fbe4217455e46f686d65bd88c053fa5227b849 differ
-diff --git a/fuzz/corpora/asn1/5314a3215a396d1a58ef72583719905872586885 b/fuzz/corpora/asn1/5314a3215a396d1a58ef72583719905872586885
+index 0000000..984c49c
+Binary files /dev/null and b/fuzz/corpora/asn1/7de8c7aa4c34d4ecb59ed356c6a91dc4ff8b0781 differ
+diff --git a/fuzz/corpora/asn1/7e6f4ca47e70a0be99e51d8267f24c08bebf9208 b/fuzz/corpora/asn1/7e6f4ca47e70a0be99e51d8267f24c08bebf9208
 new file mode 100644
-index 000000000000..590a9c12d6f7
-Binary files /dev/null and b/fuzz/corpora/asn1/5314a3215a396d1a58ef72583719905872586885 differ
-diff --git a/fuzz/corpora/asn1/5329a61211868890360772c34fc90da1a567cbaa b/fuzz/corpora/asn1/5329a61211868890360772c34fc90da1a567cbaa
+index 0000000..9a17aec
+Binary files /dev/null and b/fuzz/corpora/asn1/7e6f4ca47e70a0be99e51d8267f24c08bebf9208 differ
+diff --git a/fuzz/corpora/asn1/7e7fe83f6b3e6823801407b24da08b31ce802bdd b/fuzz/corpora/asn1/7e7fe83f6b3e6823801407b24da08b31ce802bdd
 new file mode 100644
-index 000000000000..630f07ae48ac
-Binary files /dev/null and b/fuzz/corpora/asn1/5329a61211868890360772c34fc90da1a567cbaa differ
-diff --git a/fuzz/corpora/asn1/53fdd60574246da3e577a04c2ac779e4ca13805f b/fuzz/corpora/asn1/53fdd60574246da3e577a04c2ac779e4ca13805f
+index 0000000..2b5a61d
+Binary files /dev/null and b/fuzz/corpora/asn1/7e7fe83f6b3e6823801407b24da08b31ce802bdd differ
+diff --git a/fuzz/corpora/asn1/7e8646694ff239b0f8c844cd3ca54728bf175786 b/fuzz/corpora/asn1/7e8646694ff239b0f8c844cd3ca54728bf175786
 new file mode 100644
-index 000000000000..0635c847cc77
-Binary files /dev/null and b/fuzz/corpora/asn1/53fdd60574246da3e577a04c2ac779e4ca13805f differ
-diff --git a/fuzz/corpora/asn1/5484fe5c411a3c005257d793121cf337c4d9104d b/fuzz/corpora/asn1/5484fe5c411a3c005257d793121cf337c4d9104d
+index 0000000..b813b6c
+Binary files /dev/null and b/fuzz/corpora/asn1/7e8646694ff239b0f8c844cd3ca54728bf175786 differ
+diff --git a/fuzz/corpora/asn1/7efe71af0da3d1adbc68617979f5878e0aad2c10 b/fuzz/corpora/asn1/7efe71af0da3d1adbc68617979f5878e0aad2c10
 new file mode 100644
-index 000000000000..d6d54598943c
-Binary files /dev/null and b/fuzz/corpora/asn1/5484fe5c411a3c005257d793121cf337c4d9104d differ
-diff --git a/fuzz/corpora/asn1/549176919466b2271fe5c00b71585af29a2fc682 b/fuzz/corpora/asn1/549176919466b2271fe5c00b71585af29a2fc682
+index 0000000..f6f451b
+Binary files /dev/null and b/fuzz/corpora/asn1/7efe71af0da3d1adbc68617979f5878e0aad2c10 differ
+diff --git a/fuzz/corpora/asn1/7f11b84404d7b3b945ccf797eb94daa8af5cb13b b/fuzz/corpora/asn1/7f11b84404d7b3b945ccf797eb94daa8af5cb13b
 new file mode 100644
-index 000000000000..b9ba55899116
-Binary files /dev/null and b/fuzz/corpora/asn1/549176919466b2271fe5c00b71585af29a2fc682 differ
-diff --git a/fuzz/corpora/asn1/5495e3e04591620b831cae9d05170ef48c1a906f b/fuzz/corpora/asn1/5495e3e04591620b831cae9d05170ef48c1a906f
+index 0000000..959e0fa
+Binary files /dev/null and b/fuzz/corpora/asn1/7f11b84404d7b3b945ccf797eb94daa8af5cb13b differ
+diff --git a/fuzz/corpora/asn1/7f95d95afdfc580754b2503704e8d44856827194 b/fuzz/corpora/asn1/7f95d95afdfc580754b2503704e8d44856827194
 new file mode 100644
-index 000000000000..b65d299053c2
-Binary files /dev/null and b/fuzz/corpora/asn1/5495e3e04591620b831cae9d05170ef48c1a906f differ
-diff --git a/fuzz/corpora/asn1/549b88a6998fd2b8022594281f328e81b000ef95 b/fuzz/corpora/asn1/549b88a6998fd2b8022594281f328e81b000ef95
+index 0000000..e83a617
+Binary files /dev/null and b/fuzz/corpora/asn1/7f95d95afdfc580754b2503704e8d44856827194 differ
+diff --git a/fuzz/corpora/asn1/7fa64d33883e91ef4ed0cca054c4944e7f90e90a b/fuzz/corpora/asn1/7fa64d33883e91ef4ed0cca054c4944e7f90e90a
 new file mode 100644
-index 000000000000..3780c58ef7d3
-Binary files /dev/null and b/fuzz/corpora/asn1/549b88a6998fd2b8022594281f328e81b000ef95 differ
-diff --git a/fuzz/corpora/asn1/55c55e21151507bc61e1f1e7913738d3dd2d1003 b/fuzz/corpora/asn1/55c55e21151507bc61e1f1e7913738d3dd2d1003
+index 0000000..24a01a4
+Binary files /dev/null and b/fuzz/corpora/asn1/7fa64d33883e91ef4ed0cca054c4944e7f90e90a differ
+diff --git a/fuzz/corpora/asn1/804b242d339d81c62c7e6b3b6af5328e525ca232 b/fuzz/corpora/asn1/804b242d339d81c62c7e6b3b6af5328e525ca232
 new file mode 100644
-index 000000000000..825ef09820cb
-Binary files /dev/null and b/fuzz/corpora/asn1/55c55e21151507bc61e1f1e7913738d3dd2d1003 differ
-diff --git a/fuzz/corpora/asn1/55d51b9f79bec789dccb9fbeaca50885760451ac b/fuzz/corpora/asn1/55d51b9f79bec789dccb9fbeaca50885760451ac
+index 0000000..9ec1587
+Binary files /dev/null and b/fuzz/corpora/asn1/804b242d339d81c62c7e6b3b6af5328e525ca232 differ
+diff --git a/fuzz/corpora/asn1/80509a6155e130dbea9cc9ca1cb2b6722e3eb779 b/fuzz/corpora/asn1/80509a6155e130dbea9cc9ca1cb2b6722e3eb779
 new file mode 100644
-index 000000000000..9eee00c4e523
-Binary files /dev/null and b/fuzz/corpora/asn1/55d51b9f79bec789dccb9fbeaca50885760451ac differ
-diff --git a/fuzz/corpora/asn1/56127fdbcb3924efb0a8ad8a81375254436efbea b/fuzz/corpora/asn1/56127fdbcb3924efb0a8ad8a81375254436efbea
+index 0000000..2aaebb2
+Binary files /dev/null and b/fuzz/corpora/asn1/80509a6155e130dbea9cc9ca1cb2b6722e3eb779 differ
+diff --git a/fuzz/corpora/asn1/80f823e9dc4b13f998c4289d84036cc5fa3ae74e b/fuzz/corpora/asn1/80f823e9dc4b13f998c4289d84036cc5fa3ae74e
 new file mode 100644
-index 000000000000..d5884ee751fd
-Binary files /dev/null and b/fuzz/corpora/asn1/56127fdbcb3924efb0a8ad8a81375254436efbea differ
-diff --git a/fuzz/corpora/asn1/5620ec44e81d26a66087472cda215b1bb985b6aa b/fuzz/corpora/asn1/5620ec44e81d26a66087472cda215b1bb985b6aa
+index 0000000..662fc91
+Binary files /dev/null and b/fuzz/corpora/asn1/80f823e9dc4b13f998c4289d84036cc5fa3ae74e differ
+diff --git a/fuzz/corpora/asn1/823976e4af54c438ef3c07f9d9ec9678636a8cbf b/fuzz/corpora/asn1/823976e4af54c438ef3c07f9d9ec9678636a8cbf
 new file mode 100644
-index 000000000000..eccb12d2d623
-Binary files /dev/null and b/fuzz/corpora/asn1/5620ec44e81d26a66087472cda215b1bb985b6aa differ
-diff --git a/fuzz/corpora/asn1/5665400c324f7a63be9896b08696201104fb3e74 b/fuzz/corpora/asn1/5665400c324f7a63be9896b08696201104fb3e74
+index 0000000..33c79d3
+Binary files /dev/null and b/fuzz/corpora/asn1/823976e4af54c438ef3c07f9d9ec9678636a8cbf differ
+diff --git a/fuzz/corpora/asn1/82493e385e3b648d668c095afa8dde9f7fb9425b b/fuzz/corpora/asn1/82493e385e3b648d668c095afa8dde9f7fb9425b
 new file mode 100644
-index 000000000000..d7213b3eb378
-Binary files /dev/null and b/fuzz/corpora/asn1/5665400c324f7a63be9896b08696201104fb3e74 differ
-diff --git a/fuzz/corpora/asn1/566a896bb1fb79b36d1940a52edacc716f25e819 b/fuzz/corpora/asn1/566a896bb1fb79b36d1940a52edacc716f25e819
+index 0000000..3bd8c6b
+Binary files /dev/null and b/fuzz/corpora/asn1/82493e385e3b648d668c095afa8dde9f7fb9425b differ
+diff --git a/fuzz/corpora/asn1/8257c80f9604ef480bc1cd5eb408e441c90b63b2 b/fuzz/corpora/asn1/8257c80f9604ef480bc1cd5eb408e441c90b63b2
 new file mode 100644
-index 000000000000..7d5fe66252dc
-Binary files /dev/null and b/fuzz/corpora/asn1/566a896bb1fb79b36d1940a52edacc716f25e819 differ
-diff --git a/fuzz/corpora/asn1/56a41f661aa646d711ee7a224a6ad572ecae82df b/fuzz/corpora/asn1/56a41f661aa646d711ee7a224a6ad572ecae82df
+index 0000000..f4143b7
+Binary files /dev/null and b/fuzz/corpora/asn1/8257c80f9604ef480bc1cd5eb408e441c90b63b2 differ
+diff --git a/fuzz/corpora/asn1/82af118d30d485727b66c7f39f6d63d030556063 b/fuzz/corpora/asn1/82af118d30d485727b66c7f39f6d63d030556063
 new file mode 100644
-index 000000000000..0bf9f721c0fc
-Binary files /dev/null and b/fuzz/corpora/asn1/56a41f661aa646d711ee7a224a6ad572ecae82df differ
-diff --git a/fuzz/corpora/asn1/571ac9a30555ec6ac12bd9889858aa4c7034163d b/fuzz/corpora/asn1/571ac9a30555ec6ac12bd9889858aa4c7034163d
+index 0000000..d92454b
+Binary files /dev/null and b/fuzz/corpora/asn1/82af118d30d485727b66c7f39f6d63d030556063 differ
+diff --git a/fuzz/corpora/asn1/82d2fe81d12bb0c2e3135d7c10c31c486022a52b b/fuzz/corpora/asn1/82d2fe81d12bb0c2e3135d7c10c31c486022a52b
 new file mode 100644
-index 000000000000..3c2ae0759fbd
-Binary files /dev/null and b/fuzz/corpora/asn1/571ac9a30555ec6ac12bd9889858aa4c7034163d differ
-diff --git a/fuzz/corpora/asn1/57354e518efcc5e5cf883932ebb7a01694ce3a63 b/fuzz/corpora/asn1/57354e518efcc5e5cf883932ebb7a01694ce3a63
+index 0000000..155a9a8
+Binary files /dev/null and b/fuzz/corpora/asn1/82d2fe81d12bb0c2e3135d7c10c31c486022a52b differ
+diff --git a/fuzz/corpora/asn1/82ef97d7d4381a9425d25fa6e2da9626efdf4007 b/fuzz/corpora/asn1/82ef97d7d4381a9425d25fa6e2da9626efdf4007
 new file mode 100644
-index 000000000000..9e65e139b0aa
-Binary files /dev/null and b/fuzz/corpora/asn1/57354e518efcc5e5cf883932ebb7a01694ce3a63 differ
-diff --git a/fuzz/corpora/asn1/5757dbcc950a5bc1484bba2bda2adbb282e0a56c b/fuzz/corpora/asn1/5757dbcc950a5bc1484bba2bda2adbb282e0a56c
+index 0000000..a39fd3b
+Binary files /dev/null and b/fuzz/corpora/asn1/82ef97d7d4381a9425d25fa6e2da9626efdf4007 differ
+diff --git a/fuzz/corpora/asn1/82fe66bc75c49db8ba459e1fd205810bfa8110c6 b/fuzz/corpora/asn1/82fe66bc75c49db8ba459e1fd205810bfa8110c6
 new file mode 100644
-index 000000000000..d6e0b08f9948
-Binary files /dev/null and b/fuzz/corpora/asn1/5757dbcc950a5bc1484bba2bda2adbb282e0a56c differ
-diff --git a/fuzz/corpora/asn1/576958d0461e6564fdaf6489c736d3a08203a0b5 b/fuzz/corpora/asn1/576958d0461e6564fdaf6489c736d3a08203a0b5
+index 0000000..9811496
+Binary files /dev/null and b/fuzz/corpora/asn1/82fe66bc75c49db8ba459e1fd205810bfa8110c6 differ
+diff --git a/fuzz/corpora/asn1/830600aea01af457b490d480883617472f857f15 b/fuzz/corpora/asn1/830600aea01af457b490d480883617472f857f15
 new file mode 100644
-index 000000000000..ffce883a4532
-Binary files /dev/null and b/fuzz/corpora/asn1/576958d0461e6564fdaf6489c736d3a08203a0b5 differ
-diff --git a/fuzz/corpora/asn1/5794645b6cec586cad4e018f3de2c290057b1e5c b/fuzz/corpora/asn1/5794645b6cec586cad4e018f3de2c290057b1e5c
+index 0000000..850de61
+Binary files /dev/null and b/fuzz/corpora/asn1/830600aea01af457b490d480883617472f857f15 differ
+diff --git a/fuzz/corpora/asn1/8333671e838436179396036bd885b5ef2a821e7b b/fuzz/corpora/asn1/8333671e838436179396036bd885b5ef2a821e7b
 new file mode 100644
-index 000000000000..f68cfd98624b
-Binary files /dev/null and b/fuzz/corpora/asn1/5794645b6cec586cad4e018f3de2c290057b1e5c differ
-diff --git a/fuzz/corpora/asn1/57b9e35c313481949b981448a2268692455e03c3 b/fuzz/corpora/asn1/57b9e35c313481949b981448a2268692455e03c3
+index 0000000..a80b95c
+Binary files /dev/null and b/fuzz/corpora/asn1/8333671e838436179396036bd885b5ef2a821e7b differ
+diff --git a/fuzz/corpora/asn1/84249c956490bba3589a5082e89412f41ed037d0 b/fuzz/corpora/asn1/84249c956490bba3589a5082e89412f41ed037d0
 new file mode 100644
-index 000000000000..a702a7fa96da
-Binary files /dev/null and b/fuzz/corpora/asn1/57b9e35c313481949b981448a2268692455e03c3 differ
-diff --git a/fuzz/corpora/asn1/57d11671807ce903586a9adbba4d70cce7c936af b/fuzz/corpora/asn1/57d11671807ce903586a9adbba4d70cce7c936af
+index 0000000..10e43e7
+Binary files /dev/null and b/fuzz/corpora/asn1/84249c956490bba3589a5082e89412f41ed037d0 differ
+diff --git a/fuzz/corpora/asn1/8431cb6d64ae0269b5ecea31e3b561ce60949261 b/fuzz/corpora/asn1/8431cb6d64ae0269b5ecea31e3b561ce60949261
 new file mode 100644
-index 000000000000..c1dc6377e345
-Binary files /dev/null and b/fuzz/corpora/asn1/57d11671807ce903586a9adbba4d70cce7c936af differ
-diff --git a/fuzz/corpora/asn1/58a3939dc19b9204afb26837b920752696eaae01 b/fuzz/corpora/asn1/58a3939dc19b9204afb26837b920752696eaae01
+index 0000000..48b2a60
+Binary files /dev/null and b/fuzz/corpora/asn1/8431cb6d64ae0269b5ecea31e3b561ce60949261 differ
+diff --git a/fuzz/corpora/asn1/84cd6d0c9e78c2bce24633a3dd3e542ab0c8a1e5 b/fuzz/corpora/asn1/84cd6d0c9e78c2bce24633a3dd3e542ab0c8a1e5
 new file mode 100644
-index 000000000000..1dfb317dfc57
-Binary files /dev/null and b/fuzz/corpora/asn1/58a3939dc19b9204afb26837b920752696eaae01 differ
-diff --git a/fuzz/corpora/asn1/58e8b1e82745e7da3e7159f5c6131873aedf7747 b/fuzz/corpora/asn1/58e8b1e82745e7da3e7159f5c6131873aedf7747
+index 0000000..ce635a7
+Binary files /dev/null and b/fuzz/corpora/asn1/84cd6d0c9e78c2bce24633a3dd3e542ab0c8a1e5 differ
+diff --git a/fuzz/corpora/asn1/85572d4495136eaee0654eb4b0f053e932b2a0a7 b/fuzz/corpora/asn1/85572d4495136eaee0654eb4b0f053e932b2a0a7
 new file mode 100644
-index 000000000000..6eb1d4a6d0de
-Binary files /dev/null and b/fuzz/corpora/asn1/58e8b1e82745e7da3e7159f5c6131873aedf7747 differ
-diff --git a/fuzz/corpora/asn1/591d570a397de2007edf3f497b7c555d5fe9e61a b/fuzz/corpora/asn1/591d570a397de2007edf3f497b7c555d5fe9e61a
+index 0000000..d4f3083
+Binary files /dev/null and b/fuzz/corpora/asn1/85572d4495136eaee0654eb4b0f053e932b2a0a7 differ
+diff --git a/fuzz/corpora/asn1/85c7cbdc6c0705935c687bbe191e7c8ae03d1228 b/fuzz/corpora/asn1/85c7cbdc6c0705935c687bbe191e7c8ae03d1228
 new file mode 100644
-index 000000000000..9883c392ae23
-Binary files /dev/null and b/fuzz/corpora/asn1/591d570a397de2007edf3f497b7c555d5fe9e61a differ
-diff --git a/fuzz/corpora/asn1/591dc162d20e5885e348d6205aed51678329bfdc b/fuzz/corpora/asn1/591dc162d20e5885e348d6205aed51678329bfdc
+index 0000000..38ba4b3
+Binary files /dev/null and b/fuzz/corpora/asn1/85c7cbdc6c0705935c687bbe191e7c8ae03d1228 differ
+diff --git a/fuzz/corpora/asn1/85cb27ff195a3f2a1e7240a3bfe698b6b5c16915 b/fuzz/corpora/asn1/85cb27ff195a3f2a1e7240a3bfe698b6b5c16915
 new file mode 100644
-index 000000000000..dbd6e19b0c62
-Binary files /dev/null and b/fuzz/corpora/asn1/591dc162d20e5885e348d6205aed51678329bfdc differ
-diff --git a/fuzz/corpora/asn1/593636cc321f2cfb8aed6dc36de7b24602c166b5 b/fuzz/corpora/asn1/593636cc321f2cfb8aed6dc36de7b24602c166b5
+index 0000000..700370f
+Binary files /dev/null and b/fuzz/corpora/asn1/85cb27ff195a3f2a1e7240a3bfe698b6b5c16915 differ
+diff --git a/fuzz/corpora/asn1/8644cac95ed5395b19d840af70a4e659d83cc1d6 b/fuzz/corpora/asn1/8644cac95ed5395b19d840af70a4e659d83cc1d6
 new file mode 100644
-index 000000000000..b35e5624fcb7
-Binary files /dev/null and b/fuzz/corpora/asn1/593636cc321f2cfb8aed6dc36de7b24602c166b5 differ
-diff --git a/fuzz/corpora/asn1/5941ee847ba6c9711026c022284c82cfce060aa7 b/fuzz/corpora/asn1/5941ee847ba6c9711026c022284c82cfce060aa7
+index 0000000..c4bc3df
+Binary files /dev/null and b/fuzz/corpora/asn1/8644cac95ed5395b19d840af70a4e659d83cc1d6 differ
+diff --git a/fuzz/corpora/asn1/86b23a65c38cd68fedcea976dae2523ac273214b b/fuzz/corpora/asn1/86b23a65c38cd68fedcea976dae2523ac273214b
 new file mode 100644
-index 000000000000..48db61316bd9
-Binary files /dev/null and b/fuzz/corpora/asn1/5941ee847ba6c9711026c022284c82cfce060aa7 differ
-diff --git a/fuzz/corpora/asn1/5976f9b03ba132718804953f2229fbe40b0cb70d b/fuzz/corpora/asn1/5976f9b03ba132718804953f2229fbe40b0cb70d
+index 0000000..a529eca
+Binary files /dev/null and b/fuzz/corpora/asn1/86b23a65c38cd68fedcea976dae2523ac273214b differ
+diff --git a/fuzz/corpora/asn1/87816bf6fc274d0b97e6177a9dda31c9b6e06d80 b/fuzz/corpora/asn1/87816bf6fc274d0b97e6177a9dda31c9b6e06d80
 new file mode 100644
-index 000000000000..5e4cc01fade6
-Binary files /dev/null and b/fuzz/corpora/asn1/5976f9b03ba132718804953f2229fbe40b0cb70d differ
-diff --git a/fuzz/corpora/asn1/59d359e134fb11cf15e4929cf3ee53319faa6b85 b/fuzz/corpora/asn1/59d359e134fb11cf15e4929cf3ee53319faa6b85
+index 0000000..91cb3f7
+Binary files /dev/null and b/fuzz/corpora/asn1/87816bf6fc274d0b97e6177a9dda31c9b6e06d80 differ
+diff --git a/fuzz/corpora/asn1/87ff2af32fae5bf6dc911b0b2c2190466299f3e4 b/fuzz/corpora/asn1/87ff2af32fae5bf6dc911b0b2c2190466299f3e4
 new file mode 100644
-index 000000000000..ec1f1d5847db
-Binary files /dev/null and b/fuzz/corpora/asn1/59d359e134fb11cf15e4929cf3ee53319faa6b85 differ
-diff --git a/fuzz/corpora/asn1/59d90bf638fa99cc6a61b7515c247210298aa07d b/fuzz/corpora/asn1/59d90bf638fa99cc6a61b7515c247210298aa07d
+index 0000000..bfdedad
+Binary files /dev/null and b/fuzz/corpora/asn1/87ff2af32fae5bf6dc911b0b2c2190466299f3e4 differ
+diff --git a/fuzz/corpora/asn1/8860687467d460c068b88efa0dc86c69712e6920 b/fuzz/corpora/asn1/8860687467d460c068b88efa0dc86c69712e6920
 new file mode 100644
-index 000000000000..01883b1e9cba
-Binary files /dev/null and b/fuzz/corpora/asn1/59d90bf638fa99cc6a61b7515c247210298aa07d differ
-diff --git a/fuzz/corpora/asn1/59f9be943bd1e069f603a404fea419b11eef6b6f b/fuzz/corpora/asn1/59f9be943bd1e069f603a404fea419b11eef6b6f
+index 0000000..386ac74
+Binary files /dev/null and b/fuzz/corpora/asn1/8860687467d460c068b88efa0dc86c69712e6920 differ
+diff --git a/fuzz/corpora/asn1/89d8ec9aa70e23e6d58499de4b7912bbaceb1af1 b/fuzz/corpora/asn1/89d8ec9aa70e23e6d58499de4b7912bbaceb1af1
 new file mode 100644
-index 000000000000..cbd11670a767
-Binary files /dev/null and b/fuzz/corpora/asn1/59f9be943bd1e069f603a404fea419b11eef6b6f differ
-diff --git a/fuzz/corpora/asn1/5a7010fab8c5ab4d6cd20b4d33f0ccbb00b9f1b8 b/fuzz/corpora/asn1/5a7010fab8c5ab4d6cd20b4d33f0ccbb00b9f1b8
+index 0000000..b7331b4
+Binary files /dev/null and b/fuzz/corpora/asn1/89d8ec9aa70e23e6d58499de4b7912bbaceb1af1 differ
+diff --git a/fuzz/corpora/asn1/8a3f3de0d02fb96a2df34ab4f46bed19dcc7b2ea b/fuzz/corpora/asn1/8a3f3de0d02fb96a2df34ab4f46bed19dcc7b2ea
 new file mode 100644
-index 000000000000..8aa4569e4e6f
-Binary files /dev/null and b/fuzz/corpora/asn1/5a7010fab8c5ab4d6cd20b4d33f0ccbb00b9f1b8 differ
-diff --git a/fuzz/corpora/asn1/5a94d2a1ee32c5669c3015b48797de52f1edc839 b/fuzz/corpora/asn1/5a94d2a1ee32c5669c3015b48797de52f1edc839
+index 0000000..210fd96
+Binary files /dev/null and b/fuzz/corpora/asn1/8a3f3de0d02fb96a2df34ab4f46bed19dcc7b2ea differ
+diff --git a/fuzz/corpora/asn1/8ab441d40455aafe54351f3552b9ee5c2a8504ae b/fuzz/corpora/asn1/8ab441d40455aafe54351f3552b9ee5c2a8504ae
 new file mode 100644
-index 000000000000..533fbc4ce91d
-Binary files /dev/null and b/fuzz/corpora/asn1/5a94d2a1ee32c5669c3015b48797de52f1edc839 differ
-diff --git a/fuzz/corpora/asn1/5aca4e85180a026346c8125ac470314fe4528c02 b/fuzz/corpora/asn1/5aca4e85180a026346c8125ac470314fe4528c02
+index 0000000..041e55f
+Binary files /dev/null and b/fuzz/corpora/asn1/8ab441d40455aafe54351f3552b9ee5c2a8504ae differ
+diff --git a/fuzz/corpora/asn1/8ab54e13e34af68607762f703debdfe340d8b3db b/fuzz/corpora/asn1/8ab54e13e34af68607762f703debdfe340d8b3db
 new file mode 100644
-index 000000000000..debe95dfbdc6
-Binary files /dev/null and b/fuzz/corpora/asn1/5aca4e85180a026346c8125ac470314fe4528c02 differ
-diff --git a/fuzz/corpora/asn1/5b010498153e2a01f3b7946978f206f3338e38f1 b/fuzz/corpora/asn1/5b010498153e2a01f3b7946978f206f3338e38f1
+index 0000000..df16822
+Binary files /dev/null and b/fuzz/corpora/asn1/8ab54e13e34af68607762f703debdfe340d8b3db differ
+diff --git a/fuzz/corpora/asn1/8ac98f7b5af304a200250b97a7d07313027589be b/fuzz/corpora/asn1/8ac98f7b5af304a200250b97a7d07313027589be
 new file mode 100644
-index 000000000000..db620e51a4e8
-Binary files /dev/null and b/fuzz/corpora/asn1/5b010498153e2a01f3b7946978f206f3338e38f1 differ
-diff --git a/fuzz/corpora/asn1/5b6d2cd92cb3a8282cf24cfac6b8e7f9e748d652 b/fuzz/corpora/asn1/5b6d2cd92cb3a8282cf24cfac6b8e7f9e748d652
+index 0000000..ab07cd7
+Binary files /dev/null and b/fuzz/corpora/asn1/8ac98f7b5af304a200250b97a7d07313027589be differ
+diff --git a/fuzz/corpora/asn1/8add3836f2a979722a969248ce4e4ac957ce5df9 b/fuzz/corpora/asn1/8add3836f2a979722a969248ce4e4ac957ce5df9
 new file mode 100644
-index 000000000000..210f5f28c5e3
-Binary files /dev/null and b/fuzz/corpora/asn1/5b6d2cd92cb3a8282cf24cfac6b8e7f9e748d652 differ
-diff --git a/fuzz/corpora/asn1/5b99a0ca5deae4b3ae04c1df1b3b421ec0637972 b/fuzz/corpora/asn1/5b99a0ca5deae4b3ae04c1df1b3b421ec0637972
+index 0000000..a83396a
+Binary files /dev/null and b/fuzz/corpora/asn1/8add3836f2a979722a969248ce4e4ac957ce5df9 differ
+diff --git a/fuzz/corpora/asn1/8b086d4948ddf04aef2b1a293e0f9eb137b7ac13 b/fuzz/corpora/asn1/8b086d4948ddf04aef2b1a293e0f9eb137b7ac13
 new file mode 100644
-index 000000000000..bf7f60a37f82
-Binary files /dev/null and b/fuzz/corpora/asn1/5b99a0ca5deae4b3ae04c1df1b3b421ec0637972 differ
-diff --git a/fuzz/corpora/asn1/5bab61eb53176449e25c2c82f172b82cb13ffb9d b/fuzz/corpora/asn1/5bab61eb53176449e25c2c82f172b82cb13ffb9d
+index 0000000..877a622
+Binary files /dev/null and b/fuzz/corpora/asn1/8b086d4948ddf04aef2b1a293e0f9eb137b7ac13 differ
+diff --git a/fuzz/corpora/asn1/8b5eae71187d1d38aaf2f9a819f770e0c955db2b b/fuzz/corpora/asn1/8b5eae71187d1d38aaf2f9a819f770e0c955db2b
 new file mode 100644
-index 000000000000..0d758c9c7bc0
-Binary files /dev/null and b/fuzz/corpora/asn1/5bab61eb53176449e25c2c82f172b82cb13ffb9d differ
-diff --git a/fuzz/corpora/asn1/5bd98188bf891c6613eb1fe5f89af934d51eb413 b/fuzz/corpora/asn1/5bd98188bf891c6613eb1fe5f89af934d51eb413
+index 0000000..aba8c5f
+Binary files /dev/null and b/fuzz/corpora/asn1/8b5eae71187d1d38aaf2f9a819f770e0c955db2b differ
+diff --git a/fuzz/corpora/asn1/8c180d269ec9eefdeb88386b7cca321b3fb96e39 b/fuzz/corpora/asn1/8c180d269ec9eefdeb88386b7cca321b3fb96e39
 new file mode 100644
-index 000000000000..e0a7af419a99
-Binary files /dev/null and b/fuzz/corpora/asn1/5bd98188bf891c6613eb1fe5f89af934d51eb413 differ
-diff --git a/fuzz/corpora/asn1/5c2ddc84133f3ca20420a659c17dc1ec84dd00f3 b/fuzz/corpora/asn1/5c2ddc84133f3ca20420a659c17dc1ec84dd00f3
+index 0000000..4f37372
+Binary files /dev/null and b/fuzz/corpora/asn1/8c180d269ec9eefdeb88386b7cca321b3fb96e39 differ
+diff --git a/fuzz/corpora/asn1/8c62a4350f7dc95e057182f47e4d8e0c7b80465c b/fuzz/corpora/asn1/8c62a4350f7dc95e057182f47e4d8e0c7b80465c
 new file mode 100644
-index 000000000000..53dc51b25112
-Binary files /dev/null and b/fuzz/corpora/asn1/5c2ddc84133f3ca20420a659c17dc1ec84dd00f3 differ
-diff --git a/fuzz/corpora/asn1/5c9c7b794d67b4d6792f3650b74e83b84d11e950 b/fuzz/corpora/asn1/5c9c7b794d67b4d6792f3650b74e83b84d11e950
+index 0000000..9b830df
+Binary files /dev/null and b/fuzz/corpora/asn1/8c62a4350f7dc95e057182f47e4d8e0c7b80465c differ
+diff --git a/fuzz/corpora/asn1/8c684269cc6256b23e1eeb76bd350689db421ee6 b/fuzz/corpora/asn1/8c684269cc6256b23e1eeb76bd350689db421ee6
 new file mode 100644
-index 000000000000..de4c27a1515e
-Binary files /dev/null and b/fuzz/corpora/asn1/5c9c7b794d67b4d6792f3650b74e83b84d11e950 differ
-diff --git a/fuzz/corpora/asn1/5cd908e696128a6d60a28400d5745aaf69205a6a b/fuzz/corpora/asn1/5cd908e696128a6d60a28400d5745aaf69205a6a
+index 0000000..40a8dbf
+Binary files /dev/null and b/fuzz/corpora/asn1/8c684269cc6256b23e1eeb76bd350689db421ee6 differ
+diff --git a/fuzz/corpora/asn1/8c7e46731ac5668b084d5b5d044a9efaea203301 b/fuzz/corpora/asn1/8c7e46731ac5668b084d5b5d044a9efaea203301
 new file mode 100644
-index 000000000000..261eaf0674a0
-Binary files /dev/null and b/fuzz/corpora/asn1/5cd908e696128a6d60a28400d5745aaf69205a6a differ
-diff --git a/fuzz/corpora/asn1/5d609ad07506bd9f2380674081a46c7266f95d97 b/fuzz/corpora/asn1/5d609ad07506bd9f2380674081a46c7266f95d97
+index 0000000..9398a1d
+Binary files /dev/null and b/fuzz/corpora/asn1/8c7e46731ac5668b084d5b5d044a9efaea203301 differ
+diff --git a/fuzz/corpora/asn1/8c8120b8201acd4e86277012e7c4f871e20bdd9e b/fuzz/corpora/asn1/8c8120b8201acd4e86277012e7c4f871e20bdd9e
 new file mode 100644
-index 000000000000..985c6e8d82dc
-Binary files /dev/null and b/fuzz/corpora/asn1/5d609ad07506bd9f2380674081a46c7266f95d97 differ
-diff --git a/fuzz/corpora/asn1/5d7bc2b561794af7fbf0f8dc6f69dc1864201c53 b/fuzz/corpora/asn1/5d7bc2b561794af7fbf0f8dc6f69dc1864201c53
+index 0000000..64a23c4
+Binary files /dev/null and b/fuzz/corpora/asn1/8c8120b8201acd4e86277012e7c4f871e20bdd9e differ
+diff --git a/fuzz/corpora/asn1/8cbfd99799af52f40d13100df83608c8d7d9024f b/fuzz/corpora/asn1/8cbfd99799af52f40d13100df83608c8d7d9024f
 new file mode 100644
-index 000000000000..3856cbd7cce7
-Binary files /dev/null and b/fuzz/corpora/asn1/5d7bc2b561794af7fbf0f8dc6f69dc1864201c53 differ
-diff --git a/fuzz/corpora/asn1/5dcda44f2838ef7398c89043754de98066e774fa b/fuzz/corpora/asn1/5dcda44f2838ef7398c89043754de98066e774fa
+index 0000000..04fa1cc
+Binary files /dev/null and b/fuzz/corpora/asn1/8cbfd99799af52f40d13100df83608c8d7d9024f differ
+diff --git a/fuzz/corpora/asn1/8cf9832a30b3b848b1150b30319824a3dae1a2a6 b/fuzz/corpora/asn1/8cf9832a30b3b848b1150b30319824a3dae1a2a6
 new file mode 100644
-index 000000000000..7293b0a60164
-Binary files /dev/null and b/fuzz/corpora/asn1/5dcda44f2838ef7398c89043754de98066e774fa differ
-diff --git a/fuzz/corpora/asn1/5e27ba66f53d326d81589ff24e905d8ab5e75c20 b/fuzz/corpora/asn1/5e27ba66f53d326d81589ff24e905d8ab5e75c20
+index 0000000..d30fecf
+Binary files /dev/null and b/fuzz/corpora/asn1/8cf9832a30b3b848b1150b30319824a3dae1a2a6 differ
+diff --git a/fuzz/corpora/asn1/8d75f73f43f7d1c5bd1f7039cbf54f68ed3efb6b b/fuzz/corpora/asn1/8d75f73f43f7d1c5bd1f7039cbf54f68ed3efb6b
 new file mode 100644
-index 000000000000..77fe423fb232
-Binary files /dev/null and b/fuzz/corpora/asn1/5e27ba66f53d326d81589ff24e905d8ab5e75c20 differ
-diff --git a/fuzz/corpora/asn1/5e50aac6a8593ff80ce68427027106be8f515a6c b/fuzz/corpora/asn1/5e50aac6a8593ff80ce68427027106be8f515a6c
+index 0000000..00b857a
+Binary files /dev/null and b/fuzz/corpora/asn1/8d75f73f43f7d1c5bd1f7039cbf54f68ed3efb6b differ
+diff --git a/fuzz/corpora/asn1/8d9f29da4f36be31ecd5b362163c83b1df9f029b b/fuzz/corpora/asn1/8d9f29da4f36be31ecd5b362163c83b1df9f029b
 new file mode 100644
-index 000000000000..ce99c6ccf9a9
-Binary files /dev/null and b/fuzz/corpora/asn1/5e50aac6a8593ff80ce68427027106be8f515a6c differ
-diff --git a/fuzz/corpora/asn1/5e899479208b1be5003ec2c44ddfdf2f19371f4c b/fuzz/corpora/asn1/5e899479208b1be5003ec2c44ddfdf2f19371f4c
+index 0000000..0bdef0b
+Binary files /dev/null and b/fuzz/corpora/asn1/8d9f29da4f36be31ecd5b362163c83b1df9f029b differ
+diff --git a/fuzz/corpora/asn1/8dc59cab591fc37500834cd73d72c42cf265501b b/fuzz/corpora/asn1/8dc59cab591fc37500834cd73d72c42cf265501b
 new file mode 100644
-index 000000000000..13f754b0a645
-Binary files /dev/null and b/fuzz/corpora/asn1/5e899479208b1be5003ec2c44ddfdf2f19371f4c differ
-diff --git a/fuzz/corpora/asn1/5f06e1811e1d568d1fd118fb96f161eec6fc90af b/fuzz/corpora/asn1/5f06e1811e1d568d1fd118fb96f161eec6fc90af
+index 0000000..3015a79
+Binary files /dev/null and b/fuzz/corpora/asn1/8dc59cab591fc37500834cd73d72c42cf265501b differ
+diff --git a/fuzz/corpora/asn1/8dda726e1b06a53b8bc931fefd125f89af63dcda b/fuzz/corpora/asn1/8dda726e1b06a53b8bc931fefd125f89af63dcda
 new file mode 100644
-index 000000000000..d73fc86527e7
-Binary files /dev/null and b/fuzz/corpora/asn1/5f06e1811e1d568d1fd118fb96f161eec6fc90af differ
-diff --git a/fuzz/corpora/asn1/5f0d55ef8df3847a1cbe25f765148c0b16fbbb98 b/fuzz/corpora/asn1/5f0d55ef8df3847a1cbe25f765148c0b16fbbb98
+index 0000000..19f3723
+Binary files /dev/null and b/fuzz/corpora/asn1/8dda726e1b06a53b8bc931fefd125f89af63dcda differ
+diff --git a/fuzz/corpora/asn1/8ded6eb87ab6a567bc01319f7df216e6af2ee837 b/fuzz/corpora/asn1/8ded6eb87ab6a567bc01319f7df216e6af2ee837
 new file mode 100644
-index 000000000000..58a07fd1660d
-Binary files /dev/null and b/fuzz/corpora/asn1/5f0d55ef8df3847a1cbe25f765148c0b16fbbb98 differ
-diff --git a/fuzz/corpora/asn1/5f7d06e63acbca61fcb5d3096964fb2063ed05a8 b/fuzz/corpora/asn1/5f7d06e63acbca61fcb5d3096964fb2063ed05a8
+index 0000000..dd5b528
+Binary files /dev/null and b/fuzz/corpora/asn1/8ded6eb87ab6a567bc01319f7df216e6af2ee837 differ
+diff --git a/fuzz/corpora/asn1/8e6035b597d6f72c7e9d0444f1cfb4696b445cc6 b/fuzz/corpora/asn1/8e6035b597d6f72c7e9d0444f1cfb4696b445cc6
 new file mode 100644
-index 000000000000..ce6ce20cafe2
-Binary files /dev/null and b/fuzz/corpora/asn1/5f7d06e63acbca61fcb5d3096964fb2063ed05a8 differ
-diff --git a/fuzz/corpora/asn1/5fa8bd3013e5b0cd31f46d689edf26f3c8152e42 b/fuzz/corpora/asn1/5fa8bd3013e5b0cd31f46d689edf26f3c8152e42
+index 0000000..8a3c62d
+Binary files /dev/null and b/fuzz/corpora/asn1/8e6035b597d6f72c7e9d0444f1cfb4696b445cc6 differ
+diff --git a/fuzz/corpora/asn1/8efe96e9cc150434397d75336a86cc4669ffa04a b/fuzz/corpora/asn1/8efe96e9cc150434397d75336a86cc4669ffa04a
 new file mode 100644
-index 000000000000..a6b74cdf09c3
-Binary files /dev/null and b/fuzz/corpora/asn1/5fa8bd3013e5b0cd31f46d689edf26f3c8152e42 differ
-diff --git a/fuzz/corpora/asn1/60550766d8fedee345f25d983654810ccf99c840 b/fuzz/corpora/asn1/60550766d8fedee345f25d983654810ccf99c840
+index 0000000..36e9c4f
+Binary files /dev/null and b/fuzz/corpora/asn1/8efe96e9cc150434397d75336a86cc4669ffa04a differ
+diff --git a/fuzz/corpora/asn1/8f34e1680371f1abd5c6ae2ef51dc97c2ce9193d b/fuzz/corpora/asn1/8f34e1680371f1abd5c6ae2ef51dc97c2ce9193d
 new file mode 100644
-index 000000000000..d2f4c6e975bf
-Binary files /dev/null and b/fuzz/corpora/asn1/60550766d8fedee345f25d983654810ccf99c840 differ
-diff --git a/fuzz/corpora/asn1/60790becd4794cef176e1c5e30637205fc6b6c0e b/fuzz/corpora/asn1/60790becd4794cef176e1c5e30637205fc6b6c0e
+index 0000000..f39a502
+Binary files /dev/null and b/fuzz/corpora/asn1/8f34e1680371f1abd5c6ae2ef51dc97c2ce9193d differ
+diff --git a/fuzz/corpora/asn1/902064d161ecaa804752939e835ce71c8083cb7d b/fuzz/corpora/asn1/902064d161ecaa804752939e835ce71c8083cb7d
 new file mode 100644
-index 000000000000..a18b680558ef
-Binary files /dev/null and b/fuzz/corpora/asn1/60790becd4794cef176e1c5e30637205fc6b6c0e differ
-diff --git a/fuzz/corpora/asn1/6087724143cdaef4131365bd2821511ab08517be b/fuzz/corpora/asn1/6087724143cdaef4131365bd2821511ab08517be
+index 0000000..88d6030
+Binary files /dev/null and b/fuzz/corpora/asn1/902064d161ecaa804752939e835ce71c8083cb7d differ
+diff --git a/fuzz/corpora/asn1/9029c44315b823b93d065e64587913d614b848be b/fuzz/corpora/asn1/9029c44315b823b93d065e64587913d614b848be
 new file mode 100644
-index 000000000000..9f93719502fa
-Binary files /dev/null and b/fuzz/corpora/asn1/6087724143cdaef4131365bd2821511ab08517be differ
-diff --git a/fuzz/corpora/asn1/609409900413f55f0a6219f9e56d8675fadf5776 b/fuzz/corpora/asn1/609409900413f55f0a6219f9e56d8675fadf5776
+index 0000000..8264876
+Binary files /dev/null and b/fuzz/corpora/asn1/9029c44315b823b93d065e64587913d614b848be differ
+diff --git a/fuzz/corpora/asn1/902c37754afaf62cf4e8c1e45ff94c99787d4a79 b/fuzz/corpora/asn1/902c37754afaf62cf4e8c1e45ff94c99787d4a79
 new file mode 100644
-index 000000000000..1519e49b6f38
-Binary files /dev/null and b/fuzz/corpora/asn1/609409900413f55f0a6219f9e56d8675fadf5776 differ
-diff --git a/fuzz/corpora/asn1/60cd78b36ad1f71f866244ef78b12c18ff0a4864 b/fuzz/corpora/asn1/60cd78b36ad1f71f866244ef78b12c18ff0a4864
+index 0000000..ebedc8c
+Binary files /dev/null and b/fuzz/corpora/asn1/902c37754afaf62cf4e8c1e45ff94c99787d4a79 differ
+diff --git a/fuzz/corpora/asn1/90b8394c85fbc62fcffa03170146905eda00f96b b/fuzz/corpora/asn1/90b8394c85fbc62fcffa03170146905eda00f96b
 new file mode 100644
-index 000000000000..e5b72c76199d
-Binary files /dev/null and b/fuzz/corpora/asn1/60cd78b36ad1f71f866244ef78b12c18ff0a4864 differ
-diff --git a/fuzz/corpora/asn1/60ea00f806e06abc29a069921edde1fd812fc22c b/fuzz/corpora/asn1/60ea00f806e06abc29a069921edde1fd812fc22c
+index 0000000..aaf386f
+Binary files /dev/null and b/fuzz/corpora/asn1/90b8394c85fbc62fcffa03170146905eda00f96b differ
+diff --git a/fuzz/corpora/asn1/90e450a84161f2fc5f63aaf474199a1527375dd0 b/fuzz/corpora/asn1/90e450a84161f2fc5f63aaf474199a1527375dd0
 new file mode 100644
-index 000000000000..ecc844d88e12
-Binary files /dev/null and b/fuzz/corpora/asn1/60ea00f806e06abc29a069921edde1fd812fc22c differ
-diff --git a/fuzz/corpora/asn1/60edbc959f962473fc8de88d51e9c5b122186ff6 b/fuzz/corpora/asn1/60edbc959f962473fc8de88d51e9c5b122186ff6
+index 0000000..190deda
+Binary files /dev/null and b/fuzz/corpora/asn1/90e450a84161f2fc5f63aaf474199a1527375dd0 differ
+diff --git a/fuzz/corpora/asn1/90ffbc5b177474f6c6ced2dbe3af46daa9e2e6bc b/fuzz/corpora/asn1/90ffbc5b177474f6c6ced2dbe3af46daa9e2e6bc
 new file mode 100644
-index 000000000000..6c5c80ff0093
-Binary files /dev/null and b/fuzz/corpora/asn1/60edbc959f962473fc8de88d51e9c5b122186ff6 differ
-diff --git a/fuzz/corpora/asn1/60f4ad72e1ffeee1bf27ace38c3126cf48af78d0 b/fuzz/corpora/asn1/60f4ad72e1ffeee1bf27ace38c3126cf48af78d0
+index 0000000..49338f4
+Binary files /dev/null and b/fuzz/corpora/asn1/90ffbc5b177474f6c6ced2dbe3af46daa9e2e6bc differ
+diff --git a/fuzz/corpora/asn1/917c46fb5b46fa92b2ad4d8470ce1106caf7654f b/fuzz/corpora/asn1/917c46fb5b46fa92b2ad4d8470ce1106caf7654f
 new file mode 100644
-index 000000000000..0ac31493d573
-Binary files /dev/null and b/fuzz/corpora/asn1/60f4ad72e1ffeee1bf27ace38c3126cf48af78d0 differ
-diff --git a/fuzz/corpora/asn1/61b42cf8fc5a5b2c112d1411f25624c01159b406 b/fuzz/corpora/asn1/61b42cf8fc5a5b2c112d1411f25624c01159b406
+index 0000000..d2e1f44
+Binary files /dev/null and b/fuzz/corpora/asn1/917c46fb5b46fa92b2ad4d8470ce1106caf7654f differ
+diff --git a/fuzz/corpora/asn1/94caffa0d76f1a8c4b2e95d23222b1493c9bbb35 b/fuzz/corpora/asn1/94caffa0d76f1a8c4b2e95d23222b1493c9bbb35
 new file mode 100644
-index 000000000000..9b819a9b3117
-Binary files /dev/null and b/fuzz/corpora/asn1/61b42cf8fc5a5b2c112d1411f25624c01159b406 differ
-diff --git a/fuzz/corpora/asn1/61c3891ad4a44c9889dcb66b7f2cd0f4eac71523 b/fuzz/corpora/asn1/61c3891ad4a44c9889dcb66b7f2cd0f4eac71523
+index 0000000..3b3c9a1
+Binary files /dev/null and b/fuzz/corpora/asn1/94caffa0d76f1a8c4b2e95d23222b1493c9bbb35 differ
+diff --git a/fuzz/corpora/asn1/94e00b6b8275402bba83e2a5b8f8ec3cf8074d96 b/fuzz/corpora/asn1/94e00b6b8275402bba83e2a5b8f8ec3cf8074d96
 new file mode 100644
-index 000000000000..18b3849c5405
-Binary files /dev/null and b/fuzz/corpora/asn1/61c3891ad4a44c9889dcb66b7f2cd0f4eac71523 differ
-diff --git a/fuzz/corpora/asn1/62255f676d5d9ab0a60a1358226e510c0480a84c b/fuzz/corpora/asn1/62255f676d5d9ab0a60a1358226e510c0480a84c
+index 0000000..b08ec52
+Binary files /dev/null and b/fuzz/corpora/asn1/94e00b6b8275402bba83e2a5b8f8ec3cf8074d96 differ
+diff --git a/fuzz/corpora/asn1/95626febd84d77331f02725fba7abe5e92a3a880 b/fuzz/corpora/asn1/95626febd84d77331f02725fba7abe5e92a3a880
 new file mode 100644
-index 000000000000..ed5e7b5690d2
-Binary files /dev/null and b/fuzz/corpora/asn1/62255f676d5d9ab0a60a1358226e510c0480a84c differ
-diff --git a/fuzz/corpora/asn1/623357cf63544c927e8d32298af0dd760dba5dd9 b/fuzz/corpora/asn1/623357cf63544c927e8d32298af0dd760dba5dd9
+index 0000000..38302d1
+Binary files /dev/null and b/fuzz/corpora/asn1/95626febd84d77331f02725fba7abe5e92a3a880 differ
+diff --git a/fuzz/corpora/asn1/95ae794899a46a3cfae1ee8feeee0bd955082c57 b/fuzz/corpora/asn1/95ae794899a46a3cfae1ee8feeee0bd955082c57
 new file mode 100644
-index 000000000000..4fbfa802cd7a
-Binary files /dev/null and b/fuzz/corpora/asn1/623357cf63544c927e8d32298af0dd760dba5dd9 differ
-diff --git a/fuzz/corpora/asn1/62463d1e05bf3e9965dee1b7bb8ff7898fab473e b/fuzz/corpora/asn1/62463d1e05bf3e9965dee1b7bb8ff7898fab473e
+index 0000000..8b2c567
+Binary files /dev/null and b/fuzz/corpora/asn1/95ae794899a46a3cfae1ee8feeee0bd955082c57 differ
+diff --git a/fuzz/corpora/asn1/961ee1e29c154830670a596a684bc13c0ea6160e b/fuzz/corpora/asn1/961ee1e29c154830670a596a684bc13c0ea6160e
 new file mode 100644
-index 000000000000..ac4d91ca0053
-Binary files /dev/null and b/fuzz/corpora/asn1/62463d1e05bf3e9965dee1b7bb8ff7898fab473e differ
-diff --git a/fuzz/corpora/asn1/62cfc5ed7b2193d16ef9bea535d7bdbc4eb52bb8 b/fuzz/corpora/asn1/62cfc5ed7b2193d16ef9bea535d7bdbc4eb52bb8
+index 0000000..638b0aa
+Binary files /dev/null and b/fuzz/corpora/asn1/961ee1e29c154830670a596a684bc13c0ea6160e differ
+diff --git a/fuzz/corpora/asn1/96233cfd5ef0bedcaea62a51341b9415b9cc1edb b/fuzz/corpora/asn1/96233cfd5ef0bedcaea62a51341b9415b9cc1edb
 new file mode 100644
-index 000000000000..091b8c620f3d
-Binary files /dev/null and b/fuzz/corpora/asn1/62cfc5ed7b2193d16ef9bea535d7bdbc4eb52bb8 differ
-diff --git a/fuzz/corpora/asn1/62d8d80eae2aff83994c7453ea6d504a41479f2d b/fuzz/corpora/asn1/62d8d80eae2aff83994c7453ea6d504a41479f2d
+index 0000000..f8b32ae
+Binary files /dev/null and b/fuzz/corpora/asn1/96233cfd5ef0bedcaea62a51341b9415b9cc1edb differ
+diff --git a/fuzz/corpora/asn1/9667d92e68f9724a5973e6cc48fd9669727db8cf b/fuzz/corpora/asn1/9667d92e68f9724a5973e6cc48fd9669727db8cf
 new file mode 100644
-index 000000000000..3cb247d9b93a
-Binary files /dev/null and b/fuzz/corpora/asn1/62d8d80eae2aff83994c7453ea6d504a41479f2d differ
-diff --git a/fuzz/corpora/asn1/632357c1fca24ecfbb8f98b057188b73cf127a13 b/fuzz/corpora/asn1/632357c1fca24ecfbb8f98b057188b73cf127a13
+index 0000000..397794a
+Binary files /dev/null and b/fuzz/corpora/asn1/9667d92e68f9724a5973e6cc48fd9669727db8cf differ
+diff --git a/fuzz/corpora/asn1/96b6c1c415b27dc04d509c7b13c35069c0c1f4bd b/fuzz/corpora/asn1/96b6c1c415b27dc04d509c7b13c35069c0c1f4bd
 new file mode 100644
-index 000000000000..0429f3ea4507
-Binary files /dev/null and b/fuzz/corpora/asn1/632357c1fca24ecfbb8f98b057188b73cf127a13 differ
-diff --git a/fuzz/corpora/asn1/6328ebbf86790dccc0e28a67c4a6179c93bef283 b/fuzz/corpora/asn1/6328ebbf86790dccc0e28a67c4a6179c93bef283
+index 0000000..6bcfca6
+Binary files /dev/null and b/fuzz/corpora/asn1/96b6c1c415b27dc04d509c7b13c35069c0c1f4bd differ
+diff --git a/fuzz/corpora/asn1/96d999250ee8b43c5cb3e893420158647bd4e3cd b/fuzz/corpora/asn1/96d999250ee8b43c5cb3e893420158647bd4e3cd
 new file mode 100644
-index 000000000000..a1f5959206b7
-Binary files /dev/null and b/fuzz/corpora/asn1/6328ebbf86790dccc0e28a67c4a6179c93bef283 differ
-diff --git a/fuzz/corpora/asn1/6358b923bf103ce7eb085240509f3381d4d06e58 b/fuzz/corpora/asn1/6358b923bf103ce7eb085240509f3381d4d06e58
+index 0000000..6730548
+Binary files /dev/null and b/fuzz/corpora/asn1/96d999250ee8b43c5cb3e893420158647bd4e3cd differ
+diff --git a/fuzz/corpora/asn1/9731883d270bb659b3598bc292b477c8293c4436 b/fuzz/corpora/asn1/9731883d270bb659b3598bc292b477c8293c4436
 new file mode 100644
-index 000000000000..6687509d848a
-Binary files /dev/null and b/fuzz/corpora/asn1/6358b923bf103ce7eb085240509f3381d4d06e58 differ
-diff --git a/fuzz/corpora/asn1/63daabb6ec3ec3e11ad110e35aa79441dba503f2 b/fuzz/corpora/asn1/63daabb6ec3ec3e11ad110e35aa79441dba503f2
+index 0000000..bc20b20
+Binary files /dev/null and b/fuzz/corpora/asn1/9731883d270bb659b3598bc292b477c8293c4436 differ
+diff --git a/fuzz/corpora/asn1/979aa8aee513b11e723228cd376053c7ef672f19 b/fuzz/corpora/asn1/979aa8aee513b11e723228cd376053c7ef672f19
 new file mode 100644
-index 000000000000..f5cb8e502242
-Binary files /dev/null and b/fuzz/corpora/asn1/63daabb6ec3ec3e11ad110e35aa79441dba503f2 differ
-diff --git a/fuzz/corpora/asn1/63ee80715a5a140e4cd3d7a9f308f3ebfef6380e b/fuzz/corpora/asn1/63ee80715a5a140e4cd3d7a9f308f3ebfef6380e
+index 0000000..f94ab55
+Binary files /dev/null and b/fuzz/corpora/asn1/979aa8aee513b11e723228cd376053c7ef672f19 differ
+diff --git a/fuzz/corpora/asn1/97bccdbb167af8f30b26e0ebc2a9da1b441738d5 b/fuzz/corpora/asn1/97bccdbb167af8f30b26e0ebc2a9da1b441738d5
 new file mode 100644
-index 000000000000..2f05faf1f36f
-Binary files /dev/null and b/fuzz/corpora/asn1/63ee80715a5a140e4cd3d7a9f308f3ebfef6380e differ
-diff --git a/fuzz/corpora/asn1/6400ff67884618922b78ede533b95e894711914e b/fuzz/corpora/asn1/6400ff67884618922b78ede533b95e894711914e
+index 0000000..80879d4
+Binary files /dev/null and b/fuzz/corpora/asn1/97bccdbb167af8f30b26e0ebc2a9da1b441738d5 differ
+diff --git a/fuzz/corpora/asn1/97ef34e9e4abe05f3dab82fd2aa645b1cbb89d91 b/fuzz/corpora/asn1/97ef34e9e4abe05f3dab82fd2aa645b1cbb89d91
 new file mode 100644
-index 000000000000..656e71ec3cda
-Binary files /dev/null and b/fuzz/corpora/asn1/6400ff67884618922b78ede533b95e894711914e differ
-diff --git a/fuzz/corpora/asn1/64226243d5eb9fb2db47c18ec263a1e0b8e2b691 b/fuzz/corpora/asn1/64226243d5eb9fb2db47c18ec263a1e0b8e2b691
+index 0000000..73d3f22
+Binary files /dev/null and b/fuzz/corpora/asn1/97ef34e9e4abe05f3dab82fd2aa645b1cbb89d91 differ
+diff --git a/fuzz/corpora/asn1/981e6fd89148e6d89e60179caa27867d40cc14ae b/fuzz/corpora/asn1/981e6fd89148e6d89e60179caa27867d40cc14ae
 new file mode 100644
-index 000000000000..9ccfa0df7fdc
-Binary files /dev/null and b/fuzz/corpora/asn1/64226243d5eb9fb2db47c18ec263a1e0b8e2b691 differ
-diff --git a/fuzz/corpora/asn1/6447fdcf23d1e001003ebafa0ea4867d7104ea69 b/fuzz/corpora/asn1/6447fdcf23d1e001003ebafa0ea4867d7104ea69
+index 0000000..3e0bf5a
+Binary files /dev/null and b/fuzz/corpora/asn1/981e6fd89148e6d89e60179caa27867d40cc14ae differ
+diff --git a/fuzz/corpora/asn1/988462d9eb543e051dfdf20545272e7a7f08babb b/fuzz/corpora/asn1/988462d9eb543e051dfdf20545272e7a7f08babb
 new file mode 100644
-index 000000000000..1188bb67d9a3
-Binary files /dev/null and b/fuzz/corpora/asn1/6447fdcf23d1e001003ebafa0ea4867d7104ea69 differ
-diff --git a/fuzz/corpora/asn1/649a3683a0b075ea36a81e9873e73459e6c860ba b/fuzz/corpora/asn1/649a3683a0b075ea36a81e9873e73459e6c860ba
+index 0000000..2c7be7e
+Binary files /dev/null and b/fuzz/corpora/asn1/988462d9eb543e051dfdf20545272e7a7f08babb differ
+diff --git a/fuzz/corpora/asn1/98c0616408e0496e1f962fe0c5f981d54f149767 b/fuzz/corpora/asn1/98c0616408e0496e1f962fe0c5f981d54f149767
 new file mode 100644
-index 000000000000..55cabed4917e
-Binary files /dev/null and b/fuzz/corpora/asn1/649a3683a0b075ea36a81e9873e73459e6c860ba differ
-diff --git a/fuzz/corpora/asn1/64d1d327ef2615bbb4c26079327aa79c4ea8d328 b/fuzz/corpora/asn1/64d1d327ef2615bbb4c26079327aa79c4ea8d328
+index 0000000..9d3e624
+Binary files /dev/null and b/fuzz/corpora/asn1/98c0616408e0496e1f962fe0c5f981d54f149767 differ
+diff --git a/fuzz/corpora/asn1/99e40270dc37204b7fb3839917e43a68a0fb652e b/fuzz/corpora/asn1/99e40270dc37204b7fb3839917e43a68a0fb652e
 new file mode 100644
-index 000000000000..2489c2ac6674
-Binary files /dev/null and b/fuzz/corpora/asn1/64d1d327ef2615bbb4c26079327aa79c4ea8d328 differ
-diff --git a/fuzz/corpora/asn1/655e08024322f3ae5f14f4285faade81d91d864b b/fuzz/corpora/asn1/655e08024322f3ae5f14f4285faade81d91d864b
+index 0000000..acfc6cf
+Binary files /dev/null and b/fuzz/corpora/asn1/99e40270dc37204b7fb3839917e43a68a0fb652e differ
+diff --git a/fuzz/corpora/asn1/9aa47d903ebe90ff383d5e702bd630c75922657b b/fuzz/corpora/asn1/9aa47d903ebe90ff383d5e702bd630c75922657b
 new file mode 100644
-index 000000000000..756a9e14fa65
-Binary files /dev/null and b/fuzz/corpora/asn1/655e08024322f3ae5f14f4285faade81d91d864b differ
-diff --git a/fuzz/corpora/asn1/65af6baf05debb9ead16666e8a3db302a9edb4a6 b/fuzz/corpora/asn1/65af6baf05debb9ead16666e8a3db302a9edb4a6
+index 0000000..a6a26d1
+Binary files /dev/null and b/fuzz/corpora/asn1/9aa47d903ebe90ff383d5e702bd630c75922657b differ
+diff --git a/fuzz/corpora/asn1/9ac9fcd0cc01d409c084822b72e683941b81d5db b/fuzz/corpora/asn1/9ac9fcd0cc01d409c084822b72e683941b81d5db
 new file mode 100644
-index 000000000000..685052bd8cd9
-Binary files /dev/null and b/fuzz/corpora/asn1/65af6baf05debb9ead16666e8a3db302a9edb4a6 differ
-diff --git a/fuzz/corpora/asn1/660c995e7221bbe54b5cb9c9c12ebfdedb8982ec b/fuzz/corpora/asn1/660c995e7221bbe54b5cb9c9c12ebfdedb8982ec
+index 0000000..bcc0b27
+Binary files /dev/null and b/fuzz/corpora/asn1/9ac9fcd0cc01d409c084822b72e683941b81d5db differ
+diff --git a/fuzz/corpora/asn1/9b13654bcb26e5265f3d40acd514374d58d312e9 b/fuzz/corpora/asn1/9b13654bcb26e5265f3d40acd514374d58d312e9
 new file mode 100644
-index 000000000000..60815a8124af
-Binary files /dev/null and b/fuzz/corpora/asn1/660c995e7221bbe54b5cb9c9c12ebfdedb8982ec differ
-diff --git a/fuzz/corpora/asn1/6634deb1ede6cfc778d0e61925ab54ab3ab73623 b/fuzz/corpora/asn1/6634deb1ede6cfc778d0e61925ab54ab3ab73623
+index 0000000..93a3655
+Binary files /dev/null and b/fuzz/corpora/asn1/9b13654bcb26e5265f3d40acd514374d58d312e9 differ
+diff --git a/fuzz/corpora/asn1/9b29e3be40c2a6d68bd6bc2aba0c1e02da1722b5 b/fuzz/corpora/asn1/9b29e3be40c2a6d68bd6bc2aba0c1e02da1722b5
 new file mode 100644
-index 000000000000..a830be86b8c0
-Binary files /dev/null and b/fuzz/corpora/asn1/6634deb1ede6cfc778d0e61925ab54ab3ab73623 differ
-diff --git a/fuzz/corpora/asn1/66d9b30d060759f6380306a89c46bee39e905639 b/fuzz/corpora/asn1/66d9b30d060759f6380306a89c46bee39e905639
+index 0000000..534fffb
+Binary files /dev/null and b/fuzz/corpora/asn1/9b29e3be40c2a6d68bd6bc2aba0c1e02da1722b5 differ
+diff --git a/fuzz/corpora/asn1/9b2cba86e0b521bed51fc3cda40a4271fd18b780 b/fuzz/corpora/asn1/9b2cba86e0b521bed51fc3cda40a4271fd18b780
 new file mode 100644
-index 000000000000..97130a67c5c1
-Binary files /dev/null and b/fuzz/corpora/asn1/66d9b30d060759f6380306a89c46bee39e905639 differ
-diff --git a/fuzz/corpora/asn1/6739c2a2e3eb8a1c3567c7230a5da00e275110a6 b/fuzz/corpora/asn1/6739c2a2e3eb8a1c3567c7230a5da00e275110a6
+index 0000000..22ec331
+Binary files /dev/null and b/fuzz/corpora/asn1/9b2cba86e0b521bed51fc3cda40a4271fd18b780 differ
+diff --git a/fuzz/corpora/asn1/9b3ba3833a5b4cba37faac9857c6506bb14db7e7 b/fuzz/corpora/asn1/9b3ba3833a5b4cba37faac9857c6506bb14db7e7
 new file mode 100644
-index 000000000000..2e8ebc30d025
-Binary files /dev/null and b/fuzz/corpora/asn1/6739c2a2e3eb8a1c3567c7230a5da00e275110a6 differ
-diff --git a/fuzz/corpora/asn1/674cc28412e66915e79e873f1c01f25f32865ccf b/fuzz/corpora/asn1/674cc28412e66915e79e873f1c01f25f32865ccf
+index 0000000..627ebbe
+Binary files /dev/null and b/fuzz/corpora/asn1/9b3ba3833a5b4cba37faac9857c6506bb14db7e7 differ
+diff --git a/fuzz/corpora/asn1/9b99593353a610c4bee0d6a94a01a3296080c0fb b/fuzz/corpora/asn1/9b99593353a610c4bee0d6a94a01a3296080c0fb
 new file mode 100644
-index 000000000000..83030a24e3a6
-Binary files /dev/null and b/fuzz/corpora/asn1/674cc28412e66915e79e873f1c01f25f32865ccf differ
-diff --git a/fuzz/corpora/asn1/6753b44d94e61d32fb28e43157521d0caf6c7987 b/fuzz/corpora/asn1/6753b44d94e61d32fb28e43157521d0caf6c7987
+index 0000000..5407bf3
+Binary files /dev/null and b/fuzz/corpora/asn1/9b99593353a610c4bee0d6a94a01a3296080c0fb differ
+diff --git a/fuzz/corpora/asn1/9ba071ea0d6b23ae22de1a88d5c91ec32c024b35 b/fuzz/corpora/asn1/9ba071ea0d6b23ae22de1a88d5c91ec32c024b35
 new file mode 100644
-index 000000000000..47efa2f38ca1
-Binary files /dev/null and b/fuzz/corpora/asn1/6753b44d94e61d32fb28e43157521d0caf6c7987 differ
-diff --git a/fuzz/corpora/asn1/678e8d95e8fb6164c0f2b9cdea80401453df480d b/fuzz/corpora/asn1/678e8d95e8fb6164c0f2b9cdea80401453df480d
+index 0000000..bc67265
+Binary files /dev/null and b/fuzz/corpora/asn1/9ba071ea0d6b23ae22de1a88d5c91ec32c024b35 differ
+diff --git a/fuzz/corpora/asn1/9bc50a258e79f0e061128ce44acbe687a8ea344d b/fuzz/corpora/asn1/9bc50a258e79f0e061128ce44acbe687a8ea344d
 new file mode 100644
-index 000000000000..3f43b62b1ffc
-Binary files /dev/null and b/fuzz/corpora/asn1/678e8d95e8fb6164c0f2b9cdea80401453df480d differ
-diff --git a/fuzz/corpora/asn1/67d0f97e5c0680d8466f721297209dc82c7f2c8b b/fuzz/corpora/asn1/67d0f97e5c0680d8466f721297209dc82c7f2c8b
+index 0000000..03b8fbe
+Binary files /dev/null and b/fuzz/corpora/asn1/9bc50a258e79f0e061128ce44acbe687a8ea344d differ
+diff --git a/fuzz/corpora/asn1/9bc7139d4a38bf9abadbb260033272107b8d7989 b/fuzz/corpora/asn1/9bc7139d4a38bf9abadbb260033272107b8d7989
 new file mode 100644
-index 000000000000..1020fbaa91f4
-Binary files /dev/null and b/fuzz/corpora/asn1/67d0f97e5c0680d8466f721297209dc82c7f2c8b differ
-diff --git a/fuzz/corpora/asn1/684430b6e18c43dfd388ceff00c51b3eb36e1537 b/fuzz/corpora/asn1/684430b6e18c43dfd388ceff00c51b3eb36e1537
+index 0000000..29d0e97
+Binary files /dev/null and b/fuzz/corpora/asn1/9bc7139d4a38bf9abadbb260033272107b8d7989 differ
+diff --git a/fuzz/corpora/asn1/9bd4fd517d4b1967628c0fff9a6f004512f04738 b/fuzz/corpora/asn1/9bd4fd517d4b1967628c0fff9a6f004512f04738
 new file mode 100644
-index 000000000000..fa97049d44cf
-Binary files /dev/null and b/fuzz/corpora/asn1/684430b6e18c43dfd388ceff00c51b3eb36e1537 differ
-diff --git a/fuzz/corpora/asn1/6878bf365d3bb7e1447a221d1020e9be59b2b9a5 b/fuzz/corpora/asn1/6878bf365d3bb7e1447a221d1020e9be59b2b9a5
+index 0000000..337f632
+Binary files /dev/null and b/fuzz/corpora/asn1/9bd4fd517d4b1967628c0fff9a6f004512f04738 differ
+diff --git a/fuzz/corpora/asn1/9bdbcff5f232e629ce0d657b11cb89d09de6801d b/fuzz/corpora/asn1/9bdbcff5f232e629ce0d657b11cb89d09de6801d
 new file mode 100644
-index 000000000000..f14246799e63
-Binary files /dev/null and b/fuzz/corpora/asn1/6878bf365d3bb7e1447a221d1020e9be59b2b9a5 differ
-diff --git a/fuzz/corpora/asn1/68d1f9fcfbd7ffd2b94dcf530754a4d9439bc381 b/fuzz/corpora/asn1/68d1f9fcfbd7ffd2b94dcf530754a4d9439bc381
+index 0000000..ab6fdfd
+Binary files /dev/null and b/fuzz/corpora/asn1/9bdbcff5f232e629ce0d657b11cb89d09de6801d differ
+diff --git a/fuzz/corpora/asn1/9bdcfcc7b299b2487af57c647b448527fc2020d5 b/fuzz/corpora/asn1/9bdcfcc7b299b2487af57c647b448527fc2020d5
 new file mode 100644
-index 000000000000..1a86f89c0392
-Binary files /dev/null and b/fuzz/corpora/asn1/68d1f9fcfbd7ffd2b94dcf530754a4d9439bc381 differ
-diff --git a/fuzz/corpora/asn1/68de0b6d4314e873d72e18c4db14bcf38ec22105 b/fuzz/corpora/asn1/68de0b6d4314e873d72e18c4db14bcf38ec22105
+index 0000000..bb2d726
+Binary files /dev/null and b/fuzz/corpora/asn1/9bdcfcc7b299b2487af57c647b448527fc2020d5 differ
+diff --git a/fuzz/corpora/asn1/9c099247096984f7dcb0496cde04297074a5f483 b/fuzz/corpora/asn1/9c099247096984f7dcb0496cde04297074a5f483
 new file mode 100644
-index 000000000000..e7e7a5c69fe6
-Binary files /dev/null and b/fuzz/corpora/asn1/68de0b6d4314e873d72e18c4db14bcf38ec22105 differ
-diff --git a/fuzz/corpora/asn1/68eda3bb456d468181e72334dc6fb751daef0bb9 b/fuzz/corpora/asn1/68eda3bb456d468181e72334dc6fb751daef0bb9
+index 0000000..a4869c0
+Binary files /dev/null and b/fuzz/corpora/asn1/9c099247096984f7dcb0496cde04297074a5f483 differ
+diff --git a/fuzz/corpora/asn1/9c1755e2cf0da24945b1c32a84ed86ca57509d88 b/fuzz/corpora/asn1/9c1755e2cf0da24945b1c32a84ed86ca57509d88
 new file mode 100644
-index 000000000000..8616705473a5
-Binary files /dev/null and b/fuzz/corpora/asn1/68eda3bb456d468181e72334dc6fb751daef0bb9 differ
-diff --git a/fuzz/corpora/asn1/6992598b7b6dd2421948b740ed4b5814388fcb29 b/fuzz/corpora/asn1/6992598b7b6dd2421948b740ed4b5814388fcb29
+index 0000000..d7636b1
+Binary files /dev/null and b/fuzz/corpora/asn1/9c1755e2cf0da24945b1c32a84ed86ca57509d88 differ
+diff --git a/fuzz/corpora/asn1/9d406bd08b7874c0e4deb7c002da2153b84ad186 b/fuzz/corpora/asn1/9d406bd08b7874c0e4deb7c002da2153b84ad186
 new file mode 100644
-index 000000000000..a3ce7f96d0b4
-Binary files /dev/null and b/fuzz/corpora/asn1/6992598b7b6dd2421948b740ed4b5814388fcb29 differ
-diff --git a/fuzz/corpora/asn1/69bafa8f6f9c13409943f38aaa0ce1cde8cbe7c5 b/fuzz/corpora/asn1/69bafa8f6f9c13409943f38aaa0ce1cde8cbe7c5
+index 0000000..5ada5a1
+Binary files /dev/null and b/fuzz/corpora/asn1/9d406bd08b7874c0e4deb7c002da2153b84ad186 differ
+diff --git a/fuzz/corpora/asn1/9d786125e731cd664fbec8e8f0bad6eed50c44af b/fuzz/corpora/asn1/9d786125e731cd664fbec8e8f0bad6eed50c44af
 new file mode 100644
-index 000000000000..7c5208b755c1
-Binary files /dev/null and b/fuzz/corpora/asn1/69bafa8f6f9c13409943f38aaa0ce1cde8cbe7c5 differ
-diff --git a/fuzz/corpora/asn1/69d1c137fc2bd55405039dd9ceee0006244edbd2 b/fuzz/corpora/asn1/69d1c137fc2bd55405039dd9ceee0006244edbd2
+index 0000000..5b4a9b1
+Binary files /dev/null and b/fuzz/corpora/asn1/9d786125e731cd664fbec8e8f0bad6eed50c44af differ
+diff --git a/fuzz/corpora/asn1/9d92d963300c0891362f6a0e7af5b2b2e2226c5e b/fuzz/corpora/asn1/9d92d963300c0891362f6a0e7af5b2b2e2226c5e
 new file mode 100644
-index 000000000000..76c524cc019b
-Binary files /dev/null and b/fuzz/corpora/asn1/69d1c137fc2bd55405039dd9ceee0006244edbd2 differ
-diff --git a/fuzz/corpora/asn1/6a294f00e90741c6c4087ee033ef25defaea9f01 b/fuzz/corpora/asn1/6a294f00e90741c6c4087ee033ef25defaea9f01
+index 0000000..d76c696
+Binary files /dev/null and b/fuzz/corpora/asn1/9d92d963300c0891362f6a0e7af5b2b2e2226c5e differ
+diff --git a/fuzz/corpora/asn1/9e091b9105599652a76e65e02c2393ea552a6391 b/fuzz/corpora/asn1/9e091b9105599652a76e65e02c2393ea552a6391
 new file mode 100644
-index 000000000000..83a3ab778f9d
-Binary files /dev/null and b/fuzz/corpora/asn1/6a294f00e90741c6c4087ee033ef25defaea9f01 differ
-diff --git a/fuzz/corpora/asn1/6a6af9c4f01f7beceb54f969fc28b6af78a21095 b/fuzz/corpora/asn1/6a6af9c4f01f7beceb54f969fc28b6af78a21095
+index 0000000..01dc708
+Binary files /dev/null and b/fuzz/corpora/asn1/9e091b9105599652a76e65e02c2393ea552a6391 differ
+diff --git a/fuzz/corpora/asn1/9e9511bdb7b647b9e2c9f3bbd5efda0ba1244a5f b/fuzz/corpora/asn1/9e9511bdb7b647b9e2c9f3bbd5efda0ba1244a5f
 new file mode 100644
-index 000000000000..fca4c77c81a9
-Binary files /dev/null and b/fuzz/corpora/asn1/6a6af9c4f01f7beceb54f969fc28b6af78a21095 differ
-diff --git a/fuzz/corpora/asn1/6b0df423b23c5d09bb2087c08eac373cad06128a b/fuzz/corpora/asn1/6b0df423b23c5d09bb2087c08eac373cad06128a
+index 0000000..bf33a4e
+Binary files /dev/null and b/fuzz/corpora/asn1/9e9511bdb7b647b9e2c9f3bbd5efda0ba1244a5f differ
+diff --git a/fuzz/corpora/asn1/9ed1d93221f68bb77476bcac5d3e9b6fced230c5 b/fuzz/corpora/asn1/9ed1d93221f68bb77476bcac5d3e9b6fced230c5
 new file mode 100644
-index 000000000000..e21135ab8320
-Binary files /dev/null and b/fuzz/corpora/asn1/6b0df423b23c5d09bb2087c08eac373cad06128a differ
-diff --git a/fuzz/corpora/asn1/6b339dbffaae6e29e127e08cce63326ecc47891b b/fuzz/corpora/asn1/6b339dbffaae6e29e127e08cce63326ecc47891b
+index 0000000..9624d4c
+Binary files /dev/null and b/fuzz/corpora/asn1/9ed1d93221f68bb77476bcac5d3e9b6fced230c5 differ
+diff --git a/fuzz/corpora/asn1/9f00f6f23e7797cdacde7284ba7736e163ed8f48 b/fuzz/corpora/asn1/9f00f6f23e7797cdacde7284ba7736e163ed8f48
 new file mode 100644
-index 000000000000..534b66a5e9b7
-Binary files /dev/null and b/fuzz/corpora/asn1/6b339dbffaae6e29e127e08cce63326ecc47891b differ
-diff --git a/fuzz/corpora/asn1/6ba10191d1260b66d9f3adce2da67de82827db06 b/fuzz/corpora/asn1/6ba10191d1260b66d9f3adce2da67de82827db06
+index 0000000..0b85a81
+Binary files /dev/null and b/fuzz/corpora/asn1/9f00f6f23e7797cdacde7284ba7736e163ed8f48 differ
+diff --git a/fuzz/corpora/asn1/9f3d166a81c0b977ef4748738d8b6edb15c1db82 b/fuzz/corpora/asn1/9f3d166a81c0b977ef4748738d8b6edb15c1db82
 new file mode 100644
-index 000000000000..21751df85204
-Binary files /dev/null and b/fuzz/corpora/asn1/6ba10191d1260b66d9f3adce2da67de82827db06 differ
-diff --git a/fuzz/corpora/asn1/6bc0e97a1ae092057aab172de1d5f979389a3f7d b/fuzz/corpora/asn1/6bc0e97a1ae092057aab172de1d5f979389a3f7d
+index 0000000..152b785
+Binary files /dev/null and b/fuzz/corpora/asn1/9f3d166a81c0b977ef4748738d8b6edb15c1db82 differ
+diff --git a/fuzz/corpora/asn1/9ff3b4f5148369b4e79098c3a2c3ae67393de8e0 b/fuzz/corpora/asn1/9ff3b4f5148369b4e79098c3a2c3ae67393de8e0
 new file mode 100644
-index 000000000000..13a012d3d23f
-Binary files /dev/null and b/fuzz/corpora/asn1/6bc0e97a1ae092057aab172de1d5f979389a3f7d differ
-diff --git a/fuzz/corpora/asn1/6bc16c8f7b5d155b9e483d889598adac1eaf8b40 b/fuzz/corpora/asn1/6bc16c8f7b5d155b9e483d889598adac1eaf8b40
+index 0000000..60b8cf1
+Binary files /dev/null and b/fuzz/corpora/asn1/9ff3b4f5148369b4e79098c3a2c3ae67393de8e0 differ
+diff --git a/fuzz/corpora/asn1/a0c4ad6f002c44e505ae017a4eb0c7741c2eca57 b/fuzz/corpora/asn1/a0c4ad6f002c44e505ae017a4eb0c7741c2eca57
 new file mode 100644
-index 000000000000..4d2b6f55d56a
-Binary files /dev/null and b/fuzz/corpora/asn1/6bc16c8f7b5d155b9e483d889598adac1eaf8b40 differ
-diff --git a/fuzz/corpora/asn1/6bd62279a2f55389047a59534fd01db7da81111f b/fuzz/corpora/asn1/6bd62279a2f55389047a59534fd01db7da81111f
+index 0000000..e5b8826
+Binary files /dev/null and b/fuzz/corpora/asn1/a0c4ad6f002c44e505ae017a4eb0c7741c2eca57 differ
+diff --git a/fuzz/corpora/asn1/a128ca5292357fc631d2c0d4d8bcab7d2667c82e b/fuzz/corpora/asn1/a128ca5292357fc631d2c0d4d8bcab7d2667c82e
 new file mode 100644
-index 000000000000..a4abf46b4ddc
-Binary files /dev/null and b/fuzz/corpora/asn1/6bd62279a2f55389047a59534fd01db7da81111f differ
-diff --git a/fuzz/corpora/asn1/6c3f36413f8e9deab918912635ce6474ba2e1b73 b/fuzz/corpora/asn1/6c3f36413f8e9deab918912635ce6474ba2e1b73
+index 0000000..a184c4e
+Binary files /dev/null and b/fuzz/corpora/asn1/a128ca5292357fc631d2c0d4d8bcab7d2667c82e differ
+diff --git a/fuzz/corpora/asn1/a15717134bda74ad10c2fc65917864bb2bc0d36c b/fuzz/corpora/asn1/a15717134bda74ad10c2fc65917864bb2bc0d36c
 new file mode 100644
-index 000000000000..6c2444127b60
-Binary files /dev/null and b/fuzz/corpora/asn1/6c3f36413f8e9deab918912635ce6474ba2e1b73 differ
-diff --git a/fuzz/corpora/asn1/6c48adb5092cc17e90b5b0b56cda68938d9b2699 b/fuzz/corpora/asn1/6c48adb5092cc17e90b5b0b56cda68938d9b2699
+index 0000000..eaae8c1
+Binary files /dev/null and b/fuzz/corpora/asn1/a15717134bda74ad10c2fc65917864bb2bc0d36c differ
+diff --git a/fuzz/corpora/asn1/a1943af2fe9af31fde2999cbb2841a2272a54806 b/fuzz/corpora/asn1/a1943af2fe9af31fde2999cbb2841a2272a54806
 new file mode 100644
-index 000000000000..ccbd661a0d6b
-Binary files /dev/null and b/fuzz/corpora/asn1/6c48adb5092cc17e90b5b0b56cda68938d9b2699 differ
-diff --git a/fuzz/corpora/asn1/6cb5e956f2c9d730489520c6ecd18a5e924530d5 b/fuzz/corpora/asn1/6cb5e956f2c9d730489520c6ecd18a5e924530d5
+index 0000000..3d5d5c1
+Binary files /dev/null and b/fuzz/corpora/asn1/a1943af2fe9af31fde2999cbb2841a2272a54806 differ
+diff --git a/fuzz/corpora/asn1/a1bd4af7b4429a7d9e241f695f7b24b5dff59065 b/fuzz/corpora/asn1/a1bd4af7b4429a7d9e241f695f7b24b5dff59065
 new file mode 100644
-index 000000000000..a16eeec1f774
-Binary files /dev/null and b/fuzz/corpora/asn1/6cb5e956f2c9d730489520c6ecd18a5e924530d5 differ
-diff --git a/fuzz/corpora/asn1/6cd5184adee06f90cc8d72b300d9d8b8f44d3fb5 b/fuzz/corpora/asn1/6cd5184adee06f90cc8d72b300d9d8b8f44d3fb5
+index 0000000..b9ff461
+Binary files /dev/null and b/fuzz/corpora/asn1/a1bd4af7b4429a7d9e241f695f7b24b5dff59065 differ
+diff --git a/fuzz/corpora/asn1/a1becad663dfa5776e755b0f25d704840e3bf449 b/fuzz/corpora/asn1/a1becad663dfa5776e755b0f25d704840e3bf449
 new file mode 100644
-index 000000000000..9162a747ec84
-Binary files /dev/null and b/fuzz/corpora/asn1/6cd5184adee06f90cc8d72b300d9d8b8f44d3fb5 differ
-diff --git a/fuzz/corpora/asn1/6d60358f94fe42ab4fb859ae3998e6d2cb202fb9 b/fuzz/corpora/asn1/6d60358f94fe42ab4fb859ae3998e6d2cb202fb9
+index 0000000..8f2e59c
+Binary files /dev/null and b/fuzz/corpora/asn1/a1becad663dfa5776e755b0f25d704840e3bf449 differ
+diff --git a/fuzz/corpora/asn1/a23e72da377c2c5aced9c5ed0872dd2dc1c89e93 b/fuzz/corpora/asn1/a23e72da377c2c5aced9c5ed0872dd2dc1c89e93
 new file mode 100644
-index 000000000000..f5bb4aeb5e05
-Binary files /dev/null and b/fuzz/corpora/asn1/6d60358f94fe42ab4fb859ae3998e6d2cb202fb9 differ
-diff --git a/fuzz/corpora/asn1/6dcad75dbb9342c5030749a1d00db619833b2008 b/fuzz/corpora/asn1/6dcad75dbb9342c5030749a1d00db619833b2008
+index 0000000..8ebe4ea
+Binary files /dev/null and b/fuzz/corpora/asn1/a23e72da377c2c5aced9c5ed0872dd2dc1c89e93 differ
+diff --git a/fuzz/corpora/asn1/a268ec5215153c2f8e74017ce4197bc28c668b33 b/fuzz/corpora/asn1/a268ec5215153c2f8e74017ce4197bc28c668b33
 new file mode 100644
-index 000000000000..c8e94c07286d
-Binary files /dev/null and b/fuzz/corpora/asn1/6dcad75dbb9342c5030749a1d00db619833b2008 differ
-diff --git a/fuzz/corpora/asn1/6e048e136549f39633ae24db9da9f2ddd1d710bf b/fuzz/corpora/asn1/6e048e136549f39633ae24db9da9f2ddd1d710bf
+index 0000000..f6dbd9b
+Binary files /dev/null and b/fuzz/corpora/asn1/a268ec5215153c2f8e74017ce4197bc28c668b33 differ
+diff --git a/fuzz/corpora/asn1/a285e98db403fbb82797523a28c741ab172201f7 b/fuzz/corpora/asn1/a285e98db403fbb82797523a28c741ab172201f7
 new file mode 100644
-index 000000000000..a1e9d7a237af
-Binary files /dev/null and b/fuzz/corpora/asn1/6e048e136549f39633ae24db9da9f2ddd1d710bf differ
-diff --git a/fuzz/corpora/asn1/6e2c87aab76767c919cd2f5134b86a3e9ca6b809 b/fuzz/corpora/asn1/6e2c87aab76767c919cd2f5134b86a3e9ca6b809
+index 0000000..904fb98
+Binary files /dev/null and b/fuzz/corpora/asn1/a285e98db403fbb82797523a28c741ab172201f7 differ
+diff --git a/fuzz/corpora/asn1/a295040fae5fc0e600c7f810c632f20d69dd19ad b/fuzz/corpora/asn1/a295040fae5fc0e600c7f810c632f20d69dd19ad
 new file mode 100644
-index 000000000000..2e54fe167241
-Binary files /dev/null and b/fuzz/corpora/asn1/6e2c87aab76767c919cd2f5134b86a3e9ca6b809 differ
-diff --git a/fuzz/corpora/asn1/6e3de5cbf0e4d7a9d04005e62f28545ca64a5e10 b/fuzz/corpora/asn1/6e3de5cbf0e4d7a9d04005e62f28545ca64a5e10
+index 0000000..1c8ec80
+Binary files /dev/null and b/fuzz/corpora/asn1/a295040fae5fc0e600c7f810c632f20d69dd19ad differ
+diff --git a/fuzz/corpora/asn1/a2db25c13bd3df94f29e841ae14486e502bab399 b/fuzz/corpora/asn1/a2db25c13bd3df94f29e841ae14486e502bab399
 new file mode 100644
-index 000000000000..2070c2a54f5c
-Binary files /dev/null and b/fuzz/corpora/asn1/6e3de5cbf0e4d7a9d04005e62f28545ca64a5e10 differ
-diff --git a/fuzz/corpora/asn1/6e5cf4ee0e5b64152af0f38aebef83c7c8d7b396 b/fuzz/corpora/asn1/6e5cf4ee0e5b64152af0f38aebef83c7c8d7b396
+index 0000000..eb5d645
+Binary files /dev/null and b/fuzz/corpora/asn1/a2db25c13bd3df94f29e841ae14486e502bab399 differ
+diff --git a/fuzz/corpora/asn1/a2f6946d87050d6802d0485af0a9663758e7467a b/fuzz/corpora/asn1/a2f6946d87050d6802d0485af0a9663758e7467a
 new file mode 100644
-index 000000000000..784c8d0f5f4c
-Binary files /dev/null and b/fuzz/corpora/asn1/6e5cf4ee0e5b64152af0f38aebef83c7c8d7b396 differ
-diff --git a/fuzz/corpora/asn1/6e5ed7741c04c743cc84638ed564f855117177af b/fuzz/corpora/asn1/6e5ed7741c04c743cc84638ed564f855117177af
+index 0000000..82dec41
+Binary files /dev/null and b/fuzz/corpora/asn1/a2f6946d87050d6802d0485af0a9663758e7467a differ
+diff --git a/fuzz/corpora/asn1/a35da5952254c41061f9bfa0ad2a117d46953dc2 b/fuzz/corpora/asn1/a35da5952254c41061f9bfa0ad2a117d46953dc2
 new file mode 100644
-index 000000000000..9cdf0ab0ddfb
-Binary files /dev/null and b/fuzz/corpora/asn1/6e5ed7741c04c743cc84638ed564f855117177af differ
-diff --git a/fuzz/corpora/asn1/6e72692cc2fbd4198ac238c1fc659e2cc697a084 b/fuzz/corpora/asn1/6e72692cc2fbd4198ac238c1fc659e2cc697a084
+index 0000000..5651f14
+Binary files /dev/null and b/fuzz/corpora/asn1/a35da5952254c41061f9bfa0ad2a117d46953dc2 differ
+diff --git a/fuzz/corpora/asn1/a36d3087ddf4004d6e8407149146005454c1324d b/fuzz/corpora/asn1/a36d3087ddf4004d6e8407149146005454c1324d
 new file mode 100644
-index 000000000000..ac097f9c0322
-Binary files /dev/null and b/fuzz/corpora/asn1/6e72692cc2fbd4198ac238c1fc659e2cc697a084 differ
-diff --git a/fuzz/corpora/asn1/6f873feb224b4b95073c06d3c1dcaf77a5eec2c9 b/fuzz/corpora/asn1/6f873feb224b4b95073c06d3c1dcaf77a5eec2c9
+index 0000000..2b74b3c
+Binary files /dev/null and b/fuzz/corpora/asn1/a36d3087ddf4004d6e8407149146005454c1324d differ
+diff --git a/fuzz/corpora/asn1/a3ba936220e5b5e79a0f0e319a00ea2da7060bbd b/fuzz/corpora/asn1/a3ba936220e5b5e79a0f0e319a00ea2da7060bbd
 new file mode 100644
-index 000000000000..74eebf0692b9
-Binary files /dev/null and b/fuzz/corpora/asn1/6f873feb224b4b95073c06d3c1dcaf77a5eec2c9 differ
-diff --git a/fuzz/corpora/asn1/6f89aa80ce747e206cd60992a37f5fa6a9a53c4d b/fuzz/corpora/asn1/6f89aa80ce747e206cd60992a37f5fa6a9a53c4d
+index 0000000..02c514a
+Binary files /dev/null and b/fuzz/corpora/asn1/a3ba936220e5b5e79a0f0e319a00ea2da7060bbd differ
+diff --git a/fuzz/corpora/asn1/a4284317619d2ea0d0a7fd36a6d4ca5cefb0b596 b/fuzz/corpora/asn1/a4284317619d2ea0d0a7fd36a6d4ca5cefb0b596
 new file mode 100644
-index 000000000000..1805d94a97ed
-Binary files /dev/null and b/fuzz/corpora/asn1/6f89aa80ce747e206cd60992a37f5fa6a9a53c4d differ
-diff --git a/fuzz/corpora/asn1/6fa8c316293af4de4b84b2554148fea19d6f50d2 b/fuzz/corpora/asn1/6fa8c316293af4de4b84b2554148fea19d6f50d2
+index 0000000..4c596ba
+Binary files /dev/null and b/fuzz/corpora/asn1/a4284317619d2ea0d0a7fd36a6d4ca5cefb0b596 differ
+diff --git a/fuzz/corpora/asn1/a42d1b598c6dffea3a00ef477ce20d6bd8b31116 b/fuzz/corpora/asn1/a42d1b598c6dffea3a00ef477ce20d6bd8b31116
 new file mode 100644
-index 000000000000..015b79dca303
-Binary files /dev/null and b/fuzz/corpora/asn1/6fa8c316293af4de4b84b2554148fea19d6f50d2 differ
-diff --git a/fuzz/corpora/asn1/6fddec6ace3ec8a71281c6e3ee1bd4878cb01ceb b/fuzz/corpora/asn1/6fddec6ace3ec8a71281c6e3ee1bd4878cb01ceb
+index 0000000..1b8fbdb
+Binary files /dev/null and b/fuzz/corpora/asn1/a42d1b598c6dffea3a00ef477ce20d6bd8b31116 differ
+diff --git a/fuzz/corpora/asn1/a49f4d71b9a9d876051c044c2b4f0db425f13545 b/fuzz/corpora/asn1/a49f4d71b9a9d876051c044c2b4f0db425f13545
 new file mode 100644
-index 000000000000..92e969bb1018
-Binary files /dev/null and b/fuzz/corpora/asn1/6fddec6ace3ec8a71281c6e3ee1bd4878cb01ceb differ
-diff --git a/fuzz/corpora/asn1/70203839c63f16ae4932d6ef5c07928d83732f9c b/fuzz/corpora/asn1/70203839c63f16ae4932d6ef5c07928d83732f9c
+index 0000000..e79313d
+Binary files /dev/null and b/fuzz/corpora/asn1/a49f4d71b9a9d876051c044c2b4f0db425f13545 differ
+diff --git a/fuzz/corpora/asn1/a4b4b5bb3bfd99d3b683a56ae0866f3526b32a55 b/fuzz/corpora/asn1/a4b4b5bb3bfd99d3b683a56ae0866f3526b32a55
 new file mode 100644
-index 000000000000..dce216668612
-Binary files /dev/null and b/fuzz/corpora/asn1/70203839c63f16ae4932d6ef5c07928d83732f9c differ
-diff --git a/fuzz/corpora/asn1/704dce70f6fa3d3d564478024f566631eb679974 b/fuzz/corpora/asn1/704dce70f6fa3d3d564478024f566631eb679974
+index 0000000..c82ea2f
+Binary files /dev/null and b/fuzz/corpora/asn1/a4b4b5bb3bfd99d3b683a56ae0866f3526b32a55 differ
+diff --git a/fuzz/corpora/asn1/a4d8f7a2497881c61186c23882a31737efc6d9fa b/fuzz/corpora/asn1/a4d8f7a2497881c61186c23882a31737efc6d9fa
 new file mode 100644
-index 000000000000..380a7dee11a5
-Binary files /dev/null and b/fuzz/corpora/asn1/704dce70f6fa3d3d564478024f566631eb679974 differ
-diff --git a/fuzz/corpora/asn1/70a85da4e2d45d07c092a07ffbcda45b6b9e2d4d b/fuzz/corpora/asn1/70a85da4e2d45d07c092a07ffbcda45b6b9e2d4d
+index 0000000..8673988
+Binary files /dev/null and b/fuzz/corpora/asn1/a4d8f7a2497881c61186c23882a31737efc6d9fa differ
+diff --git a/fuzz/corpora/asn1/a4e7c84e48c9230f15b48f6907f1e7676fc37ad6 b/fuzz/corpora/asn1/a4e7c84e48c9230f15b48f6907f1e7676fc37ad6
 new file mode 100644
-index 000000000000..54b745bd9951
-Binary files /dev/null and b/fuzz/corpora/asn1/70a85da4e2d45d07c092a07ffbcda45b6b9e2d4d differ
-diff --git a/fuzz/corpora/asn1/715fa32b1fde7aede81549d088f70f390fee08bf b/fuzz/corpora/asn1/715fa32b1fde7aede81549d088f70f390fee08bf
+index 0000000..b9422b9
+Binary files /dev/null and b/fuzz/corpora/asn1/a4e7c84e48c9230f15b48f6907f1e7676fc37ad6 differ
+diff --git a/fuzz/corpora/asn1/a5d5341d7cb4438216bf4bf343ec0fbcefa0f394 b/fuzz/corpora/asn1/a5d5341d7cb4438216bf4bf343ec0fbcefa0f394
 new file mode 100644
-index 000000000000..ec312fedcfe4
-Binary files /dev/null and b/fuzz/corpora/asn1/715fa32b1fde7aede81549d088f70f390fee08bf differ
-diff --git a/fuzz/corpora/asn1/716921aee7e60aa0a21443e5f4d43399b4249ad1 b/fuzz/corpora/asn1/716921aee7e60aa0a21443e5f4d43399b4249ad1
+index 0000000..6800da5
+Binary files /dev/null and b/fuzz/corpora/asn1/a5d5341d7cb4438216bf4bf343ec0fbcefa0f394 differ
+diff --git a/fuzz/corpora/asn1/a64b63dd5b22d391b3f14ad213e442d9ac5aad63 b/fuzz/corpora/asn1/a64b63dd5b22d391b3f14ad213e442d9ac5aad63
 new file mode 100644
-index 000000000000..8dc61abe02d3
-Binary files /dev/null and b/fuzz/corpora/asn1/716921aee7e60aa0a21443e5f4d43399b4249ad1 differ
-diff --git a/fuzz/corpora/asn1/71cabf52169167fb7b736fdad16fa7eb189d0e5e b/fuzz/corpora/asn1/71cabf52169167fb7b736fdad16fa7eb189d0e5e
+index 0000000..675d172
+Binary files /dev/null and b/fuzz/corpora/asn1/a64b63dd5b22d391b3f14ad213e442d9ac5aad63 differ
+diff --git a/fuzz/corpora/asn1/a6874e55401bbd0c59ab43728156755794e00f5f b/fuzz/corpora/asn1/a6874e55401bbd0c59ab43728156755794e00f5f
 new file mode 100644
-index 000000000000..94a416dc95d6
-Binary files /dev/null and b/fuzz/corpora/asn1/71cabf52169167fb7b736fdad16fa7eb189d0e5e differ
-diff --git a/fuzz/corpora/asn1/71fbf889ec635da1eed7947ba3c739122a5343f3 b/fuzz/corpora/asn1/71fbf889ec635da1eed7947ba3c739122a5343f3
+index 0000000..c6f8c73
+Binary files /dev/null and b/fuzz/corpora/asn1/a6874e55401bbd0c59ab43728156755794e00f5f differ
+diff --git a/fuzz/corpora/asn1/a6d0cd63d28d02ebd931a0eefeedd0146f90b338 b/fuzz/corpora/asn1/a6d0cd63d28d02ebd931a0eefeedd0146f90b338
 new file mode 100644
-index 000000000000..6b6c61f0bc1d
-Binary files /dev/null and b/fuzz/corpora/asn1/71fbf889ec635da1eed7947ba3c739122a5343f3 differ
-diff --git a/fuzz/corpora/asn1/72037c8039571dfbb4ab2480b5238430aa477ba2 b/fuzz/corpora/asn1/72037c8039571dfbb4ab2480b5238430aa477ba2
+index 0000000..18c7cc1
+Binary files /dev/null and b/fuzz/corpora/asn1/a6d0cd63d28d02ebd931a0eefeedd0146f90b338 differ
+diff --git a/fuzz/corpora/asn1/a7c2749b661279d081a53c16414f156854817511 b/fuzz/corpora/asn1/a7c2749b661279d081a53c16414f156854817511
 new file mode 100644
-index 000000000000..3ebe39f419c0
-Binary files /dev/null and b/fuzz/corpora/asn1/72037c8039571dfbb4ab2480b5238430aa477ba2 differ
-diff --git a/fuzz/corpora/asn1/720c0ecc46139b2a1daba3e08c3c3abd112cf38b b/fuzz/corpora/asn1/720c0ecc46139b2a1daba3e08c3c3abd112cf38b
+index 0000000..a3fc35e
+Binary files /dev/null and b/fuzz/corpora/asn1/a7c2749b661279d081a53c16414f156854817511 differ
+diff --git a/fuzz/corpora/asn1/a85fbf3f4edd8a7c9bae18d813f29b3e5e4061ff b/fuzz/corpora/asn1/a85fbf3f4edd8a7c9bae18d813f29b3e5e4061ff
 new file mode 100644
-index 000000000000..4f0847537a23
-Binary files /dev/null and b/fuzz/corpora/asn1/720c0ecc46139b2a1daba3e08c3c3abd112cf38b differ
-diff --git a/fuzz/corpora/asn1/7216ee1a6e4c7f90ec6b00684c29d065db1b18b4 b/fuzz/corpora/asn1/7216ee1a6e4c7f90ec6b00684c29d065db1b18b4
+index 0000000..49cd8da
+Binary files /dev/null and b/fuzz/corpora/asn1/a85fbf3f4edd8a7c9bae18d813f29b3e5e4061ff differ
+diff --git a/fuzz/corpora/asn1/a8ae08b58b33fc791d3e7a79ccf53c725fa66453 b/fuzz/corpora/asn1/a8ae08b58b33fc791d3e7a79ccf53c725fa66453
 new file mode 100644
-index 000000000000..a86b1b62b9b7
-Binary files /dev/null and b/fuzz/corpora/asn1/7216ee1a6e4c7f90ec6b00684c29d065db1b18b4 differ
-diff --git a/fuzz/corpora/asn1/723bbb4cf7fe2baab9ade461d2a68bec592dab24 b/fuzz/corpora/asn1/723bbb4cf7fe2baab9ade461d2a68bec592dab24
+index 0000000..6456b27
+Binary files /dev/null and b/fuzz/corpora/asn1/a8ae08b58b33fc791d3e7a79ccf53c725fa66453 differ
+diff --git a/fuzz/corpora/asn1/a9064a836dac56da1cade6ed7d0e43945a1563a1 b/fuzz/corpora/asn1/a9064a836dac56da1cade6ed7d0e43945a1563a1
 new file mode 100644
-index 000000000000..8b29d086b1c6
-Binary files /dev/null and b/fuzz/corpora/asn1/723bbb4cf7fe2baab9ade461d2a68bec592dab24 differ
-diff --git a/fuzz/corpora/asn1/7248a08a00d57e9ea49ea0a4717bf07a47fffde7 b/fuzz/corpora/asn1/7248a08a00d57e9ea49ea0a4717bf07a47fffde7
+index 0000000..ea9aad6
+Binary files /dev/null and b/fuzz/corpora/asn1/a9064a836dac56da1cade6ed7d0e43945a1563a1 differ
+diff --git a/fuzz/corpora/asn1/a96365927db2dd434bfe075059c7c8ea9a3796d0 b/fuzz/corpora/asn1/a96365927db2dd434bfe075059c7c8ea9a3796d0
 new file mode 100644
-index 000000000000..846a9472f033
-Binary files /dev/null and b/fuzz/corpora/asn1/7248a08a00d57e9ea49ea0a4717bf07a47fffde7 differ
-diff --git a/fuzz/corpora/asn1/72ab87bc6a188de6e8998fdca5d1d55e29be20bd b/fuzz/corpora/asn1/72ab87bc6a188de6e8998fdca5d1d55e29be20bd
+index 0000000..755e105
+Binary files /dev/null and b/fuzz/corpora/asn1/a96365927db2dd434bfe075059c7c8ea9a3796d0 differ
+diff --git a/fuzz/corpora/asn1/aa6c5534ddacb267a95b17511a9af27ee681f7b2 b/fuzz/corpora/asn1/aa6c5534ddacb267a95b17511a9af27ee681f7b2
 new file mode 100644
-index 000000000000..02c96b4816d5
-Binary files /dev/null and b/fuzz/corpora/asn1/72ab87bc6a188de6e8998fdca5d1d55e29be20bd differ
-diff --git a/fuzz/corpora/asn1/72c216181f0e9640844dd73c7b61e713804a5d32 b/fuzz/corpora/asn1/72c216181f0e9640844dd73c7b61e713804a5d32
+index 0000000..5177fd9
+Binary files /dev/null and b/fuzz/corpora/asn1/aa6c5534ddacb267a95b17511a9af27ee681f7b2 differ
+diff --git a/fuzz/corpora/asn1/aab7bf9659bb2c83378fc5339ee08ee0659c12e6 b/fuzz/corpora/asn1/aab7bf9659bb2c83378fc5339ee08ee0659c12e6
 new file mode 100644
-index 000000000000..edb458e3c959
-Binary files /dev/null and b/fuzz/corpora/asn1/72c216181f0e9640844dd73c7b61e713804a5d32 differ
-diff --git a/fuzz/corpora/asn1/72df1cad68c213e7d7f9aa83be00e4851763412a b/fuzz/corpora/asn1/72df1cad68c213e7d7f9aa83be00e4851763412a
+index 0000000..b075249
+Binary files /dev/null and b/fuzz/corpora/asn1/aab7bf9659bb2c83378fc5339ee08ee0659c12e6 differ
+diff --git a/fuzz/corpora/asn1/aaf583ad7d0bf39c8b11f3c6e67fb6aa5bf6d33d b/fuzz/corpora/asn1/aaf583ad7d0bf39c8b11f3c6e67fb6aa5bf6d33d
 new file mode 100644
-index 000000000000..1c67f5279c51
-Binary files /dev/null and b/fuzz/corpora/asn1/72df1cad68c213e7d7f9aa83be00e4851763412a differ
-diff --git a/fuzz/corpora/asn1/73737dd181657162c7c89006ab785402a88251d7 b/fuzz/corpora/asn1/73737dd181657162c7c89006ab785402a88251d7
+index 0000000..10145c6
+Binary files /dev/null and b/fuzz/corpora/asn1/aaf583ad7d0bf39c8b11f3c6e67fb6aa5bf6d33d differ
+diff --git a/fuzz/corpora/asn1/ab40e7b29148855b448d90340850362c31edbf70 b/fuzz/corpora/asn1/ab40e7b29148855b448d90340850362c31edbf70
 new file mode 100644
-index 000000000000..b36a8082c538
-Binary files /dev/null and b/fuzz/corpora/asn1/73737dd181657162c7c89006ab785402a88251d7 differ
-diff --git a/fuzz/corpora/asn1/73bac7a1d5030eab114d9b737e06809776fde47b b/fuzz/corpora/asn1/73bac7a1d5030eab114d9b737e06809776fde47b
+index 0000000..cf61b66
+Binary files /dev/null and b/fuzz/corpora/asn1/ab40e7b29148855b448d90340850362c31edbf70 differ
+diff --git a/fuzz/corpora/asn1/ab801e1e4f1f3e717fb51a77ea625239b7ae1723 b/fuzz/corpora/asn1/ab801e1e4f1f3e717fb51a77ea625239b7ae1723
 new file mode 100644
-index 000000000000..a9c3739800f9
-Binary files /dev/null and b/fuzz/corpora/asn1/73bac7a1d5030eab114d9b737e06809776fde47b differ
-diff --git a/fuzz/corpora/asn1/74159245d6ad8ed58b0267058cc44850da40ed22 b/fuzz/corpora/asn1/74159245d6ad8ed58b0267058cc44850da40ed22
+index 0000000..bfb9604
+Binary files /dev/null and b/fuzz/corpora/asn1/ab801e1e4f1f3e717fb51a77ea625239b7ae1723 differ
+diff --git a/fuzz/corpora/asn1/abab6d4fbdafafc1c06a4be1d4b2b419403be9b4 b/fuzz/corpora/asn1/abab6d4fbdafafc1c06a4be1d4b2b419403be9b4
 new file mode 100644
-index 000000000000..68d8ebf64b5e
-Binary files /dev/null and b/fuzz/corpora/asn1/74159245d6ad8ed58b0267058cc44850da40ed22 differ
-diff --git a/fuzz/corpora/asn1/74660a096dc61cfa2c148166031e46e9cf84d894 b/fuzz/corpora/asn1/74660a096dc61cfa2c148166031e46e9cf84d894
+index 0000000..3c8be35
+Binary files /dev/null and b/fuzz/corpora/asn1/abab6d4fbdafafc1c06a4be1d4b2b419403be9b4 differ
+diff --git a/fuzz/corpora/asn1/ac220abc9bb738f9bb966b1e75cef315cd438a82 b/fuzz/corpora/asn1/ac220abc9bb738f9bb966b1e75cef315cd438a82
 new file mode 100644
-index 000000000000..ffb672c3d9a9
-Binary files /dev/null and b/fuzz/corpora/asn1/74660a096dc61cfa2c148166031e46e9cf84d894 differ
-diff --git a/fuzz/corpora/asn1/750341de5c4922df584cf4287dc55663a1ebbda0 b/fuzz/corpora/asn1/750341de5c4922df584cf4287dc55663a1ebbda0
+index 0000000..7de8c19
+Binary files /dev/null and b/fuzz/corpora/asn1/ac220abc9bb738f9bb966b1e75cef315cd438a82 differ
+diff --git a/fuzz/corpora/asn1/acd93634b6be7ef30de495dd7deae84ad3f80afe b/fuzz/corpora/asn1/acd93634b6be7ef30de495dd7deae84ad3f80afe
 new file mode 100644
-index 000000000000..204303c316a8
-Binary files /dev/null and b/fuzz/corpora/asn1/750341de5c4922df584cf4287dc55663a1ebbda0 differ
-diff --git a/fuzz/corpora/asn1/75486ea84e9dac7ef3c867f36491df4f41663a30 b/fuzz/corpora/asn1/75486ea84e9dac7ef3c867f36491df4f41663a30
+index 0000000..83afef0
+Binary files /dev/null and b/fuzz/corpora/asn1/acd93634b6be7ef30de495dd7deae84ad3f80afe differ
+diff --git a/fuzz/corpora/asn1/ad24d2c54721184a4f65d5de749493af503a4042 b/fuzz/corpora/asn1/ad24d2c54721184a4f65d5de749493af503a4042
 new file mode 100644
-index 000000000000..cb52d9732bb9
-Binary files /dev/null and b/fuzz/corpora/asn1/75486ea84e9dac7ef3c867f36491df4f41663a30 differ
-diff --git a/fuzz/corpora/asn1/754b14b8b9b0118bd84dae57f3cbd7f9ed49699a b/fuzz/corpora/asn1/754b14b8b9b0118bd84dae57f3cbd7f9ed49699a
+index 0000000..b6bd8ca
+Binary files /dev/null and b/fuzz/corpora/asn1/ad24d2c54721184a4f65d5de749493af503a4042 differ
+diff --git a/fuzz/corpora/asn1/ad55e2413cbbf4ac12d716e55fd74e2672b09c22 b/fuzz/corpora/asn1/ad55e2413cbbf4ac12d716e55fd74e2672b09c22
 new file mode 100644
-index 000000000000..6ac25714bc30
-Binary files /dev/null and b/fuzz/corpora/asn1/754b14b8b9b0118bd84dae57f3cbd7f9ed49699a differ
-diff --git a/fuzz/corpora/asn1/75e18c5154f7b32c57876058bf49bee90218eaba b/fuzz/corpora/asn1/75e18c5154f7b32c57876058bf49bee90218eaba
+index 0000000..c82798b
+Binary files /dev/null and b/fuzz/corpora/asn1/ad55e2413cbbf4ac12d716e55fd74e2672b09c22 differ
+diff --git a/fuzz/corpora/asn1/afdcf8d02e514b323679fb8fcf3e31121f6f040c b/fuzz/corpora/asn1/afdcf8d02e514b323679fb8fcf3e31121f6f040c
 new file mode 100644
-index 000000000000..8e49ea45e263
-Binary files /dev/null and b/fuzz/corpora/asn1/75e18c5154f7b32c57876058bf49bee90218eaba differ
-diff --git a/fuzz/corpora/asn1/7643d22dab1e37592dae0d5271e677280a7ef78f b/fuzz/corpora/asn1/7643d22dab1e37592dae0d5271e677280a7ef78f
+index 0000000..531717c
+Binary files /dev/null and b/fuzz/corpora/asn1/afdcf8d02e514b323679fb8fcf3e31121f6f040c differ
+diff --git a/fuzz/corpora/asn1/afe8921f7e820d5ce78fdaaa6447e40072723823 b/fuzz/corpora/asn1/afe8921f7e820d5ce78fdaaa6447e40072723823
 new file mode 100644
-index 000000000000..3ff036696404
-Binary files /dev/null and b/fuzz/corpora/asn1/7643d22dab1e37592dae0d5271e677280a7ef78f differ
-diff --git a/fuzz/corpora/asn1/7648423756b1729ae2cf51c4d7a46277ce21f291 b/fuzz/corpora/asn1/7648423756b1729ae2cf51c4d7a46277ce21f291
+index 0000000..21b2417
+Binary files /dev/null and b/fuzz/corpora/asn1/afe8921f7e820d5ce78fdaaa6447e40072723823 differ
+diff --git a/fuzz/corpora/asn1/b0093873fa3900dc71246ec1f0e324f325f72036 b/fuzz/corpora/asn1/b0093873fa3900dc71246ec1f0e324f325f72036
 new file mode 100644
-index 000000000000..ec8dbf21fce8
-Binary files /dev/null and b/fuzz/corpora/asn1/7648423756b1729ae2cf51c4d7a46277ce21f291 differ
-diff --git a/fuzz/corpora/asn1/76948f6d66cf6a6fb6555be11b723c334eb53eaf b/fuzz/corpora/asn1/76948f6d66cf6a6fb6555be11b723c334eb53eaf
+index 0000000..740bfc0
+Binary files /dev/null and b/fuzz/corpora/asn1/b0093873fa3900dc71246ec1f0e324f325f72036 differ
+diff --git a/fuzz/corpora/asn1/b021b873b34dd08d83b8e038425c026e2e73ce68 b/fuzz/corpora/asn1/b021b873b34dd08d83b8e038425c026e2e73ce68
 new file mode 100644
-index 000000000000..84cae8716d2d
-Binary files /dev/null and b/fuzz/corpora/asn1/76948f6d66cf6a6fb6555be11b723c334eb53eaf differ
-diff --git a/fuzz/corpora/asn1/76e901c7a7a1a7f8b8de0187dc2542fd69ffef2c b/fuzz/corpora/asn1/76e901c7a7a1a7f8b8de0187dc2542fd69ffef2c
+index 0000000..d7d63f4
+Binary files /dev/null and b/fuzz/corpora/asn1/b021b873b34dd08d83b8e038425c026e2e73ce68 differ
+diff --git a/fuzz/corpora/asn1/b085357480cbe2899b0b0c410a225c18e54441fd b/fuzz/corpora/asn1/b085357480cbe2899b0b0c410a225c18e54441fd
 new file mode 100644
-index 000000000000..4215b123a4a1
-Binary files /dev/null and b/fuzz/corpora/asn1/76e901c7a7a1a7f8b8de0187dc2542fd69ffef2c differ
-diff --git a/fuzz/corpora/asn1/77314afabb740ebd60c6338831927145817e0d0f b/fuzz/corpora/asn1/77314afabb740ebd60c6338831927145817e0d0f
+index 0000000..176debf
+Binary files /dev/null and b/fuzz/corpora/asn1/b085357480cbe2899b0b0c410a225c18e54441fd differ
+diff --git a/fuzz/corpora/asn1/b0c111676fd39dc7b987c0d14d622c72648fecbc b/fuzz/corpora/asn1/b0c111676fd39dc7b987c0d14d622c72648fecbc
 new file mode 100644
-index 000000000000..bd0dc67f165f
-Binary files /dev/null and b/fuzz/corpora/asn1/77314afabb740ebd60c6338831927145817e0d0f differ
-diff --git a/fuzz/corpora/asn1/774aed802c2a5abdd688ba6b90931cd376886660 b/fuzz/corpora/asn1/774aed802c2a5abdd688ba6b90931cd376886660
+index 0000000..70a0d9d
+Binary files /dev/null and b/fuzz/corpora/asn1/b0c111676fd39dc7b987c0d14d622c72648fecbc differ
+diff --git a/fuzz/corpora/asn1/b198966f0f37eefee29b457e2267c13a65829d64 b/fuzz/corpora/asn1/b198966f0f37eefee29b457e2267c13a65829d64
 new file mode 100644
-index 000000000000..4301540b0f27
-Binary files /dev/null and b/fuzz/corpora/asn1/774aed802c2a5abdd688ba6b90931cd376886660 differ
-diff --git a/fuzz/corpora/asn1/7784a455bbb2a502160b9b6059eb31b8eb514d06 b/fuzz/corpora/asn1/7784a455bbb2a502160b9b6059eb31b8eb514d06
+index 0000000..9cb7a58
+Binary files /dev/null and b/fuzz/corpora/asn1/b198966f0f37eefee29b457e2267c13a65829d64 differ
+diff --git a/fuzz/corpora/asn1/b26bdd9f8d719a933d1b72f70dd7ba081beece8f b/fuzz/corpora/asn1/b26bdd9f8d719a933d1b72f70dd7ba081beece8f
 new file mode 100644
-index 000000000000..3ff725c1d191
-Binary files /dev/null and b/fuzz/corpora/asn1/7784a455bbb2a502160b9b6059eb31b8eb514d06 differ
-diff --git a/fuzz/corpora/asn1/779207cb455f8ff8022e39b29643042f7e73d7b6 b/fuzz/corpora/asn1/779207cb455f8ff8022e39b29643042f7e73d7b6
+index 0000000..5e651e9
+Binary files /dev/null and b/fuzz/corpora/asn1/b26bdd9f8d719a933d1b72f70dd7ba081beece8f differ
+diff --git a/fuzz/corpora/asn1/b2e2c34ef5ddb8c1b2768de13babae8bf320996f b/fuzz/corpora/asn1/b2e2c34ef5ddb8c1b2768de13babae8bf320996f
 new file mode 100644
-index 000000000000..dafe281e8227
-Binary files /dev/null and b/fuzz/corpora/asn1/779207cb455f8ff8022e39b29643042f7e73d7b6 differ
-diff --git a/fuzz/corpora/asn1/77bb048bfe689410b5d54bcc860f4acb4c4c4cd1 b/fuzz/corpora/asn1/77bb048bfe689410b5d54bcc860f4acb4c4c4cd1
+index 0000000..77ab651
+Binary files /dev/null and b/fuzz/corpora/asn1/b2e2c34ef5ddb8c1b2768de13babae8bf320996f differ
+diff --git a/fuzz/corpora/asn1/b322cde2a2df9986622238eac73a17c898a2f30a b/fuzz/corpora/asn1/b322cde2a2df9986622238eac73a17c898a2f30a
 new file mode 100644
-index 000000000000..30967ce8fd27
-Binary files /dev/null and b/fuzz/corpora/asn1/77bb048bfe689410b5d54bcc860f4acb4c4c4cd1 differ
-diff --git a/fuzz/corpora/asn1/77d3f1285c1a977062f0ec2c761a45989325baf7 b/fuzz/corpora/asn1/77d3f1285c1a977062f0ec2c761a45989325baf7
+index 0000000..81a3baf
+Binary files /dev/null and b/fuzz/corpora/asn1/b322cde2a2df9986622238eac73a17c898a2f30a differ
+diff --git a/fuzz/corpora/asn1/b3687b637f029d93d1c8368fe815066be5e597bd b/fuzz/corpora/asn1/b3687b637f029d93d1c8368fe815066be5e597bd
 new file mode 100644
-index 000000000000..1d1030dd258f
-Binary files /dev/null and b/fuzz/corpora/asn1/77d3f1285c1a977062f0ec2c761a45989325baf7 differ
-diff --git a/fuzz/corpora/asn1/77efbe986e74000d74ec51fea9f3caa6b4cf4102 b/fuzz/corpora/asn1/77efbe986e74000d74ec51fea9f3caa6b4cf4102
+index 0000000..f621f0d
+Binary files /dev/null and b/fuzz/corpora/asn1/b3687b637f029d93d1c8368fe815066be5e597bd differ
+diff --git a/fuzz/corpora/asn1/b3da114bd014de9f367a20ad387245b970e19c08 b/fuzz/corpora/asn1/b3da114bd014de9f367a20ad387245b970e19c08
 new file mode 100644
-index 000000000000..8bf88776a070
-Binary files /dev/null and b/fuzz/corpora/asn1/77efbe986e74000d74ec51fea9f3caa6b4cf4102 differ
-diff --git a/fuzz/corpora/asn1/784404910947dbaae8b2a25c58e4f732977c784f b/fuzz/corpora/asn1/784404910947dbaae8b2a25c58e4f732977c784f
+index 0000000..7b42ad1
+Binary files /dev/null and b/fuzz/corpora/asn1/b3da114bd014de9f367a20ad387245b970e19c08 differ
+diff --git a/fuzz/corpora/asn1/b4a7ad1caf7ec9fe7465f40ebb60d9e3563c48dd b/fuzz/corpora/asn1/b4a7ad1caf7ec9fe7465f40ebb60d9e3563c48dd
 new file mode 100644
-index 000000000000..7601bffcafe3
-Binary files /dev/null and b/fuzz/corpora/asn1/784404910947dbaae8b2a25c58e4f732977c784f differ
-diff --git a/fuzz/corpora/asn1/785206b8d7f0ace6a6f34f17f4972c1040cdeab9 b/fuzz/corpora/asn1/785206b8d7f0ace6a6f34f17f4972c1040cdeab9
+index 0000000..fe20132
+Binary files /dev/null and b/fuzz/corpora/asn1/b4a7ad1caf7ec9fe7465f40ebb60d9e3563c48dd differ
+diff --git a/fuzz/corpora/asn1/b5148b3ca4be1a34938800efaf8efb2a71419e30 b/fuzz/corpora/asn1/b5148b3ca4be1a34938800efaf8efb2a71419e30
 new file mode 100644
-index 000000000000..270ca7af220a
-Binary files /dev/null and b/fuzz/corpora/asn1/785206b8d7f0ace6a6f34f17f4972c1040cdeab9 differ
-diff --git a/fuzz/corpora/asn1/785c1329281d237cb47ee04361377cf651d1ffe4 b/fuzz/corpora/asn1/785c1329281d237cb47ee04361377cf651d1ffe4
+index 0000000..f5a2647
+Binary files /dev/null and b/fuzz/corpora/asn1/b5148b3ca4be1a34938800efaf8efb2a71419e30 differ
+diff --git a/fuzz/corpora/asn1/b54841cb0971ee9c9fff3c7c784c1aa64b9c45ce b/fuzz/corpora/asn1/b54841cb0971ee9c9fff3c7c784c1aa64b9c45ce
 new file mode 100644
-index 000000000000..1bb92330c869
-Binary files /dev/null and b/fuzz/corpora/asn1/785c1329281d237cb47ee04361377cf651d1ffe4 differ
-diff --git a/fuzz/corpora/asn1/786535bed33aa144205c4de4ead086eb68d09672 b/fuzz/corpora/asn1/786535bed33aa144205c4de4ead086eb68d09672
+index 0000000..4d58a24
+Binary files /dev/null and b/fuzz/corpora/asn1/b54841cb0971ee9c9fff3c7c784c1aa64b9c45ce differ
+diff --git a/fuzz/corpora/asn1/b5bc844d0c0ef3b9f683f2d7e671c84f618fb078 b/fuzz/corpora/asn1/b5bc844d0c0ef3b9f683f2d7e671c84f618fb078
 new file mode 100644
-index 000000000000..d922a97b021d
-Binary files /dev/null and b/fuzz/corpora/asn1/786535bed33aa144205c4de4ead086eb68d09672 differ
-diff --git a/fuzz/corpora/asn1/787b1611297a57a2912ed023317e0b03065f6953 b/fuzz/corpora/asn1/787b1611297a57a2912ed023317e0b03065f6953
+index 0000000..4b703b8
+Binary files /dev/null and b/fuzz/corpora/asn1/b5bc844d0c0ef3b9f683f2d7e671c84f618fb078 differ
+diff --git a/fuzz/corpora/asn1/b5cf6792a189ff5a73861ca7bb83a5725422dbc2 b/fuzz/corpora/asn1/b5cf6792a189ff5a73861ca7bb83a5725422dbc2
 new file mode 100644
-index 000000000000..5bdb6dc8fc74
-Binary files /dev/null and b/fuzz/corpora/asn1/787b1611297a57a2912ed023317e0b03065f6953 differ
-diff --git a/fuzz/corpora/asn1/78d03c717a134ed4bfd13cb25f2c9421210dabdb b/fuzz/corpora/asn1/78d03c717a134ed4bfd13cb25f2c9421210dabdb
+index 0000000..f90e978
+Binary files /dev/null and b/fuzz/corpora/asn1/b5cf6792a189ff5a73861ca7bb83a5725422dbc2 differ
+diff --git a/fuzz/corpora/asn1/b61c50bf61ddcddfef5aff329cf79ccd40ad3d4b b/fuzz/corpora/asn1/b61c50bf61ddcddfef5aff329cf79ccd40ad3d4b
 new file mode 100644
-index 000000000000..29281c98aee6
-Binary files /dev/null and b/fuzz/corpora/asn1/78d03c717a134ed4bfd13cb25f2c9421210dabdb differ
-diff --git a/fuzz/corpora/asn1/7943043cce5c94cba3edc6ba727d4de2c92afce7 b/fuzz/corpora/asn1/7943043cce5c94cba3edc6ba727d4de2c92afce7
+index 0000000..efd9e3f
+Binary files /dev/null and b/fuzz/corpora/asn1/b61c50bf61ddcddfef5aff329cf79ccd40ad3d4b differ
+diff --git a/fuzz/corpora/asn1/b6dd20fc4405b1689a7def3232862ec073b611d5 b/fuzz/corpora/asn1/b6dd20fc4405b1689a7def3232862ec073b611d5
 new file mode 100644
-index 000000000000..0947ea93c103
-Binary files /dev/null and b/fuzz/corpora/asn1/7943043cce5c94cba3edc6ba727d4de2c92afce7 differ
-diff --git a/fuzz/corpora/asn1/79bab942ad3201c73d1e3ba326c86f081641e3b7 b/fuzz/corpora/asn1/79bab942ad3201c73d1e3ba326c86f081641e3b7
+index 0000000..2912da3
+Binary files /dev/null and b/fuzz/corpora/asn1/b6dd20fc4405b1689a7def3232862ec073b611d5 differ
+diff --git a/fuzz/corpora/asn1/b704bca3a4cb9620096a5f6374c62966b6f044e8 b/fuzz/corpora/asn1/b704bca3a4cb9620096a5f6374c62966b6f044e8
 new file mode 100644
-index 000000000000..940fdc6a6c49
-Binary files /dev/null and b/fuzz/corpora/asn1/79bab942ad3201c73d1e3ba326c86f081641e3b7 differ
-diff --git a/fuzz/corpora/asn1/79e938c8c6782ecc93a2daa2725a780dfbe3f0b8 b/fuzz/corpora/asn1/79e938c8c6782ecc93a2daa2725a780dfbe3f0b8
+index 0000000..5674292
+Binary files /dev/null and b/fuzz/corpora/asn1/b704bca3a4cb9620096a5f6374c62966b6f044e8 differ
+diff --git a/fuzz/corpora/asn1/b75a4c69fc51bab42175df11b5bd938bf7585f9f b/fuzz/corpora/asn1/b75a4c69fc51bab42175df11b5bd938bf7585f9f
 new file mode 100644
-index 000000000000..ab92fc812620
-Binary files /dev/null and b/fuzz/corpora/asn1/79e938c8c6782ecc93a2daa2725a780dfbe3f0b8 differ
-diff --git a/fuzz/corpora/asn1/7a0e44e06aff64a55dc8c5cbf511e92f67b6a3b9 b/fuzz/corpora/asn1/7a0e44e06aff64a55dc8c5cbf511e92f67b6a3b9
+index 0000000..b99ab86
+Binary files /dev/null and b/fuzz/corpora/asn1/b75a4c69fc51bab42175df11b5bd938bf7585f9f differ
+diff --git a/fuzz/corpora/asn1/b787176eeb72eb38212e0000c5ef645859b0e5a4 b/fuzz/corpora/asn1/b787176eeb72eb38212e0000c5ef645859b0e5a4
 new file mode 100644
-index 000000000000..3bc1d1cdb316
-Binary files /dev/null and b/fuzz/corpora/asn1/7a0e44e06aff64a55dc8c5cbf511e92f67b6a3b9 differ
-diff --git a/fuzz/corpora/asn1/7a26246f2e2ae68179eab0d49aa2dbd3f0ca022e b/fuzz/corpora/asn1/7a26246f2e2ae68179eab0d49aa2dbd3f0ca022e
+index 0000000..41a3ec5
+Binary files /dev/null and b/fuzz/corpora/asn1/b787176eeb72eb38212e0000c5ef645859b0e5a4 differ
+diff --git a/fuzz/corpora/asn1/b7e8c3cc445e56c75a8f2f72323f9645c7394555 b/fuzz/corpora/asn1/b7e8c3cc445e56c75a8f2f72323f9645c7394555
 new file mode 100644
-index 000000000000..060bee4158d8
-Binary files /dev/null and b/fuzz/corpora/asn1/7a26246f2e2ae68179eab0d49aa2dbd3f0ca022e differ
-diff --git a/fuzz/corpora/asn1/7a795eea3179fc6b64c7ad8650d54c092d47972c b/fuzz/corpora/asn1/7a795eea3179fc6b64c7ad8650d54c092d47972c
+index 0000000..7ac88ce
+Binary files /dev/null and b/fuzz/corpora/asn1/b7e8c3cc445e56c75a8f2f72323f9645c7394555 differ
+diff --git a/fuzz/corpora/asn1/b934529bd78d21ad544d2d90e5c9c083d6b6fb95 b/fuzz/corpora/asn1/b934529bd78d21ad544d2d90e5c9c083d6b6fb95
 new file mode 100644
-index 000000000000..d247b18a1b8a
-Binary files /dev/null and b/fuzz/corpora/asn1/7a795eea3179fc6b64c7ad8650d54c092d47972c differ
-diff --git a/fuzz/corpora/asn1/7af1d8530da60b85d5a3de7ed4d235451d81a0c8 b/fuzz/corpora/asn1/7af1d8530da60b85d5a3de7ed4d235451d81a0c8
+index 0000000..36d8376
+Binary files /dev/null and b/fuzz/corpora/asn1/b934529bd78d21ad544d2d90e5c9c083d6b6fb95 differ
+diff --git a/fuzz/corpora/asn1/ba2ba442cccf4e026d286f06105cca1d430bfd9e b/fuzz/corpora/asn1/ba2ba442cccf4e026d286f06105cca1d430bfd9e
 new file mode 100644
-index 000000000000..0cbab42d79fe
-Binary files /dev/null and b/fuzz/corpora/asn1/7af1d8530da60b85d5a3de7ed4d235451d81a0c8 differ
-diff --git a/fuzz/corpora/asn1/7b051999740d7d60ffd85a15f0a45ddb8fe8fddb b/fuzz/corpora/asn1/7b051999740d7d60ffd85a15f0a45ddb8fe8fddb
+index 0000000..085a3ef
+Binary files /dev/null and b/fuzz/corpora/asn1/ba2ba442cccf4e026d286f06105cca1d430bfd9e differ
+diff --git a/fuzz/corpora/asn1/ba77e24967afe44d1695e50bbe0e53bcee26d6a4 b/fuzz/corpora/asn1/ba77e24967afe44d1695e50bbe0e53bcee26d6a4
 new file mode 100644
-index 000000000000..8893ede649f9
-Binary files /dev/null and b/fuzz/corpora/asn1/7b051999740d7d60ffd85a15f0a45ddb8fe8fddb differ
-diff --git a/fuzz/corpora/asn1/7b45c634020ec35736e7776105a777f1460aa17c b/fuzz/corpora/asn1/7b45c634020ec35736e7776105a777f1460aa17c
+index 0000000..0fb24c3
+Binary files /dev/null and b/fuzz/corpora/asn1/ba77e24967afe44d1695e50bbe0e53bcee26d6a4 differ
+diff --git a/fuzz/corpora/asn1/babc5b090a441616e50304692d9ef5adfce104ee b/fuzz/corpora/asn1/babc5b090a441616e50304692d9ef5adfce104ee
 new file mode 100644
-index 000000000000..5bf1c067ac83
-Binary files /dev/null and b/fuzz/corpora/asn1/7b45c634020ec35736e7776105a777f1460aa17c differ
-diff --git a/fuzz/corpora/asn1/7b649cc8e3b828ed84806faeacf7da15ee1c56fc b/fuzz/corpora/asn1/7b649cc8e3b828ed84806faeacf7da15ee1c56fc
+index 0000000..8fdc4b0
+Binary files /dev/null and b/fuzz/corpora/asn1/babc5b090a441616e50304692d9ef5adfce104ee differ
+diff --git a/fuzz/corpora/asn1/baecd38e160b8a14c83951262cab71a5468e5550 b/fuzz/corpora/asn1/baecd38e160b8a14c83951262cab71a5468e5550
 new file mode 100644
-index 000000000000..4b8f29a5d1e9
-Binary files /dev/null and b/fuzz/corpora/asn1/7b649cc8e3b828ed84806faeacf7da15ee1c56fc differ
-diff --git a/fuzz/corpora/asn1/7bfc2d1bf62f9ac2fb32cfde53b5fddc13521520 b/fuzz/corpora/asn1/7bfc2d1bf62f9ac2fb32cfde53b5fddc13521520
+index 0000000..a6b5116
+Binary files /dev/null and b/fuzz/corpora/asn1/baecd38e160b8a14c83951262cab71a5468e5550 differ
+diff --git a/fuzz/corpora/asn1/bbaf31a9f3f30e8e3fce116d62a6140b14fd2fdb b/fuzz/corpora/asn1/bbaf31a9f3f30e8e3fce116d62a6140b14fd2fdb
 new file mode 100644
-index 000000000000..19200f08fa7b
-Binary files /dev/null and b/fuzz/corpora/asn1/7bfc2d1bf62f9ac2fb32cfde53b5fddc13521520 differ
-diff --git a/fuzz/corpora/asn1/7c20e962572534d86ddc8c8fa32cf8a0446eae8a b/fuzz/corpora/asn1/7c20e962572534d86ddc8c8fa32cf8a0446eae8a
+index 0000000..e8c0155
+Binary files /dev/null and b/fuzz/corpora/asn1/bbaf31a9f3f30e8e3fce116d62a6140b14fd2fdb differ
+diff --git a/fuzz/corpora/asn1/bbe393fd04295360a219f0b6db558c07c10f9291 b/fuzz/corpora/asn1/bbe393fd04295360a219f0b6db558c07c10f9291
 new file mode 100644
-index 000000000000..363614c4d452
-Binary files /dev/null and b/fuzz/corpora/asn1/7c20e962572534d86ddc8c8fa32cf8a0446eae8a differ
-diff --git a/fuzz/corpora/asn1/7c3f10211b3332fc264c0da69181d2fd13a481e3 b/fuzz/corpora/asn1/7c3f10211b3332fc264c0da69181d2fd13a481e3
+index 0000000..d6bc389
+Binary files /dev/null and b/fuzz/corpora/asn1/bbe393fd04295360a219f0b6db558c07c10f9291 differ
+diff --git a/fuzz/corpora/asn1/bc2fefc799d4cf6de5277240b3e9f699487ef202 b/fuzz/corpora/asn1/bc2fefc799d4cf6de5277240b3e9f699487ef202
 new file mode 100644
-index 000000000000..77e8290f8f61
-Binary files /dev/null and b/fuzz/corpora/asn1/7c3f10211b3332fc264c0da69181d2fd13a481e3 differ
-diff --git a/fuzz/corpora/asn1/7ca409147fb5dd5ae866b18e278b4e255f9ba27c b/fuzz/corpora/asn1/7ca409147fb5dd5ae866b18e278b4e255f9ba27c
+index 0000000..c8a0421
+Binary files /dev/null and b/fuzz/corpora/asn1/bc2fefc799d4cf6de5277240b3e9f699487ef202 differ
+diff --git a/fuzz/corpora/asn1/bc47631242f8f2577026f22263262c29c62a98e4 b/fuzz/corpora/asn1/bc47631242f8f2577026f22263262c29c62a98e4
 new file mode 100644
-index 000000000000..42b1ee72f0e6
-Binary files /dev/null and b/fuzz/corpora/asn1/7ca409147fb5dd5ae866b18e278b4e255f9ba27c differ
-diff --git a/fuzz/corpora/asn1/7ccb11879657cc5761152406275ebb2a89146f3f b/fuzz/corpora/asn1/7ccb11879657cc5761152406275ebb2a89146f3f
+index 0000000..4c59243
+Binary files /dev/null and b/fuzz/corpora/asn1/bc47631242f8f2577026f22263262c29c62a98e4 differ
+diff --git a/fuzz/corpora/asn1/bc747214184d501e2bf69394cf3ee1bfc5c688be b/fuzz/corpora/asn1/bc747214184d501e2bf69394cf3ee1bfc5c688be
 new file mode 100644
-index 000000000000..01517a1a2f24
-Binary files /dev/null and b/fuzz/corpora/asn1/7ccb11879657cc5761152406275ebb2a89146f3f differ
-diff --git a/fuzz/corpora/asn1/7cce3dd6f09f3a3760d49f205d6e8113a191b7bd b/fuzz/corpora/asn1/7cce3dd6f09f3a3760d49f205d6e8113a191b7bd
+index 0000000..04addfa
+Binary files /dev/null and b/fuzz/corpora/asn1/bc747214184d501e2bf69394cf3ee1bfc5c688be differ
+diff --git a/fuzz/corpora/asn1/bcb714a44a8cce41b733825a05337a4945c44b41 b/fuzz/corpora/asn1/bcb714a44a8cce41b733825a05337a4945c44b41
 new file mode 100644
-index 000000000000..96748b1dd35f
-Binary files /dev/null and b/fuzz/corpora/asn1/7cce3dd6f09f3a3760d49f205d6e8113a191b7bd differ
-diff --git a/fuzz/corpora/asn1/7d0281929713e9e09795d924c72b23bab365c4cc b/fuzz/corpora/asn1/7d0281929713e9e09795d924c72b23bab365c4cc
+index 0000000..8003cff
+Binary files /dev/null and b/fuzz/corpora/asn1/bcb714a44a8cce41b733825a05337a4945c44b41 differ
+diff --git a/fuzz/corpora/asn1/bd3f536ee33bb4be8acdc7a9e0536973761bbf8a b/fuzz/corpora/asn1/bd3f536ee33bb4be8acdc7a9e0536973761bbf8a
 new file mode 100644
-index 000000000000..ad0b4ce14118
-Binary files /dev/null and b/fuzz/corpora/asn1/7d0281929713e9e09795d924c72b23bab365c4cc differ
-diff --git a/fuzz/corpora/asn1/7da6a02736b60e5ac97430c718cca7fb27651c25 b/fuzz/corpora/asn1/7da6a02736b60e5ac97430c718cca7fb27651c25
+index 0000000..19d6ea6
+Binary files /dev/null and b/fuzz/corpora/asn1/bd3f536ee33bb4be8acdc7a9e0536973761bbf8a differ
+diff --git a/fuzz/corpora/asn1/bd9c427e93542f64ff484ffee0bebcf4a70287ba b/fuzz/corpora/asn1/bd9c427e93542f64ff484ffee0bebcf4a70287ba
 new file mode 100644
-index 000000000000..4326b00d0c85
-Binary files /dev/null and b/fuzz/corpora/asn1/7da6a02736b60e5ac97430c718cca7fb27651c25 differ
-diff --git a/fuzz/corpora/asn1/7de94fcce96942a6d0532daa805548fcd660c4c2 b/fuzz/corpora/asn1/7de94fcce96942a6d0532daa805548fcd660c4c2
+index 0000000..795c1a5
+Binary files /dev/null and b/fuzz/corpora/asn1/bd9c427e93542f64ff484ffee0bebcf4a70287ba differ
+diff --git a/fuzz/corpora/asn1/bdfd0fe5c46934269fe00cbbd744b17d63c58fc5 b/fuzz/corpora/asn1/bdfd0fe5c46934269fe00cbbd744b17d63c58fc5
 new file mode 100644
-index 000000000000..13192d6d06bb
-Binary files /dev/null and b/fuzz/corpora/asn1/7de94fcce96942a6d0532daa805548fcd660c4c2 differ
-diff --git a/fuzz/corpora/asn1/7e247fe156db7bf5706af45c3107f67a44272b90 b/fuzz/corpora/asn1/7e247fe156db7bf5706af45c3107f67a44272b90
+index 0000000..24bdab3
+Binary files /dev/null and b/fuzz/corpora/asn1/bdfd0fe5c46934269fe00cbbd744b17d63c58fc5 differ
+diff --git a/fuzz/corpora/asn1/bea13ded9e8609b25b5a2ec851d207acb34c9ce9 b/fuzz/corpora/asn1/bea13ded9e8609b25b5a2ec851d207acb34c9ce9
 new file mode 100644
-index 000000000000..0922216e80c0
-Binary files /dev/null and b/fuzz/corpora/asn1/7e247fe156db7bf5706af45c3107f67a44272b90 differ
-diff --git a/fuzz/corpora/asn1/7f42151b01495732dd95c5abedb31f2f5af81cc2 b/fuzz/corpora/asn1/7f42151b01495732dd95c5abedb31f2f5af81cc2
+index 0000000..a3245e9
+Binary files /dev/null and b/fuzz/corpora/asn1/bea13ded9e8609b25b5a2ec851d207acb34c9ce9 differ
+diff --git a/fuzz/corpora/asn1/bf4c60f7dcf49889929dd59703710dfc094b56d3 b/fuzz/corpora/asn1/bf4c60f7dcf49889929dd59703710dfc094b56d3
 new file mode 100644
-index 000000000000..4c1b50194cb0
-Binary files /dev/null and b/fuzz/corpora/asn1/7f42151b01495732dd95c5abedb31f2f5af81cc2 differ
-diff --git a/fuzz/corpora/asn1/7f8665537a5b1d9ab1d501ffdd70a7dd9a8e8dc3 b/fuzz/corpora/asn1/7f8665537a5b1d9ab1d501ffdd70a7dd9a8e8dc3
+index 0000000..9bc15ea
+Binary files /dev/null and b/fuzz/corpora/asn1/bf4c60f7dcf49889929dd59703710dfc094b56d3 differ
+diff --git a/fuzz/corpora/asn1/bf7eba524a082166222eceaf30ff396305dbd7e1 b/fuzz/corpora/asn1/bf7eba524a082166222eceaf30ff396305dbd7e1
 new file mode 100644
-index 000000000000..8129b901cdef
-Binary files /dev/null and b/fuzz/corpora/asn1/7f8665537a5b1d9ab1d501ffdd70a7dd9a8e8dc3 differ
-diff --git a/fuzz/corpora/asn1/7fb6a33b347bf5a278ac86f52b29c63000b51507 b/fuzz/corpora/asn1/7fb6a33b347bf5a278ac86f52b29c63000b51507
+index 0000000..5abd448
+Binary files /dev/null and b/fuzz/corpora/asn1/bf7eba524a082166222eceaf30ff396305dbd7e1 differ
+diff --git a/fuzz/corpora/asn1/bf8e70f25295cb56ae69b117985487ccc02c1335 b/fuzz/corpora/asn1/bf8e70f25295cb56ae69b117985487ccc02c1335
 new file mode 100644
-index 000000000000..f31fc807a2dd
-Binary files /dev/null and b/fuzz/corpora/asn1/7fb6a33b347bf5a278ac86f52b29c63000b51507 differ
-diff --git a/fuzz/corpora/asn1/7fcf15ce34fbd0c4e2b11517e07bda376e19bf10 b/fuzz/corpora/asn1/7fcf15ce34fbd0c4e2b11517e07bda376e19bf10
+index 0000000..b2fff9f
+Binary files /dev/null and b/fuzz/corpora/asn1/bf8e70f25295cb56ae69b117985487ccc02c1335 differ
+diff --git a/fuzz/corpora/asn1/bfcd14c4e65de0e5d008c9bb5b88cda74db96720 b/fuzz/corpora/asn1/bfcd14c4e65de0e5d008c9bb5b88cda74db96720
 new file mode 100644
-index 000000000000..ab4beb379e01
-Binary files /dev/null and b/fuzz/corpora/asn1/7fcf15ce34fbd0c4e2b11517e07bda376e19bf10 differ
-diff --git a/fuzz/corpora/asn1/8032d7226288d26c1b3005a7462dd9d543cae055 b/fuzz/corpora/asn1/8032d7226288d26c1b3005a7462dd9d543cae055
+index 0000000..dcf2d19
+Binary files /dev/null and b/fuzz/corpora/asn1/bfcd14c4e65de0e5d008c9bb5b88cda74db96720 differ
+diff --git a/fuzz/corpora/asn1/bff945b72337dfa5ec7c030c29d309f226f03d1b b/fuzz/corpora/asn1/bff945b72337dfa5ec7c030c29d309f226f03d1b
 new file mode 100644
-index 000000000000..3c81d3bcd440
-Binary files /dev/null and b/fuzz/corpora/asn1/8032d7226288d26c1b3005a7462dd9d543cae055 differ
-diff --git a/fuzz/corpora/asn1/80409fde797b71a270af13fe4db3b36fe2c492ed b/fuzz/corpora/asn1/80409fde797b71a270af13fe4db3b36fe2c492ed
+index 0000000..c6a7ab4
+Binary files /dev/null and b/fuzz/corpora/asn1/bff945b72337dfa5ec7c030c29d309f226f03d1b differ
+diff --git a/fuzz/corpora/asn1/c035b70163fdbc3e7f403475eda1ceb1c9819b1e b/fuzz/corpora/asn1/c035b70163fdbc3e7f403475eda1ceb1c9819b1e
 new file mode 100644
-index 000000000000..195b4d357a96
-Binary files /dev/null and b/fuzz/corpora/asn1/80409fde797b71a270af13fe4db3b36fe2c492ed differ
-diff --git a/fuzz/corpora/asn1/80595b853618f970511be1586bd30082d13f839c b/fuzz/corpora/asn1/80595b853618f970511be1586bd30082d13f839c
+index 0000000..4d988f6
+Binary files /dev/null and b/fuzz/corpora/asn1/c035b70163fdbc3e7f403475eda1ceb1c9819b1e differ
+diff --git a/fuzz/corpora/asn1/c0e19b65ddeb63e3e38b80e2fbcf75d60d24e1fd b/fuzz/corpora/asn1/c0e19b65ddeb63e3e38b80e2fbcf75d60d24e1fd
 new file mode 100644
-index 000000000000..60857d43101c
-Binary files /dev/null and b/fuzz/corpora/asn1/80595b853618f970511be1586bd30082d13f839c differ
-diff --git a/fuzz/corpora/asn1/809a9b3855e9db5f275e1493cdf46cc15546e92e b/fuzz/corpora/asn1/809a9b3855e9db5f275e1493cdf46cc15546e92e
+index 0000000..e9fdbfd
+Binary files /dev/null and b/fuzz/corpora/asn1/c0e19b65ddeb63e3e38b80e2fbcf75d60d24e1fd differ
+diff --git a/fuzz/corpora/asn1/c1159215685302c309879b45764969d2e5c9444e b/fuzz/corpora/asn1/c1159215685302c309879b45764969d2e5c9444e
 new file mode 100644
-index 000000000000..9e20fb2bb3d4
-Binary files /dev/null and b/fuzz/corpora/asn1/809a9b3855e9db5f275e1493cdf46cc15546e92e differ
-diff --git a/fuzz/corpora/asn1/80aef809abcf1c7c16f1f537a38aaac7d26cfd66 b/fuzz/corpora/asn1/80aef809abcf1c7c16f1f537a38aaac7d26cfd66
+index 0000000..a7127e4
+Binary files /dev/null and b/fuzz/corpora/asn1/c1159215685302c309879b45764969d2e5c9444e differ
+diff --git a/fuzz/corpora/asn1/c18cf11f455f9bf8334313d1a6e46080d76278e4 b/fuzz/corpora/asn1/c18cf11f455f9bf8334313d1a6e46080d76278e4
 new file mode 100644
-index 000000000000..47bf6894fc88
-Binary files /dev/null and b/fuzz/corpora/asn1/80aef809abcf1c7c16f1f537a38aaac7d26cfd66 differ
-diff --git a/fuzz/corpora/asn1/80cbc5c3b88be746a98d0f5edfef29324da70da1 b/fuzz/corpora/asn1/80cbc5c3b88be746a98d0f5edfef29324da70da1
+index 0000000..6df1fff
+Binary files /dev/null and b/fuzz/corpora/asn1/c18cf11f455f9bf8334313d1a6e46080d76278e4 differ
+diff --git a/fuzz/corpora/asn1/c24459a5c2ccbb0d39e437fd821e9e5826f32c5b b/fuzz/corpora/asn1/c24459a5c2ccbb0d39e437fd821e9e5826f32c5b
 new file mode 100644
-index 000000000000..b1bd6e8c0508
-Binary files /dev/null and b/fuzz/corpora/asn1/80cbc5c3b88be746a98d0f5edfef29324da70da1 differ
-diff --git a/fuzz/corpora/asn1/81061e12d8ff77c8dc6a90c83f5d010b98d9c4c9 b/fuzz/corpora/asn1/81061e12d8ff77c8dc6a90c83f5d010b98d9c4c9
+index 0000000..eae0bc2
+Binary files /dev/null and b/fuzz/corpora/asn1/c24459a5c2ccbb0d39e437fd821e9e5826f32c5b differ
+diff --git a/fuzz/corpora/asn1/c3be2883ad65e378469618d6afadfc4945ebcd54 b/fuzz/corpora/asn1/c3be2883ad65e378469618d6afadfc4945ebcd54
 new file mode 100644
-index 000000000000..031a4f04bd00
-Binary files /dev/null and b/fuzz/corpora/asn1/81061e12d8ff77c8dc6a90c83f5d010b98d9c4c9 differ
-diff --git a/fuzz/corpora/asn1/8107f5a90504df9a045b6cc85f9f00fc56e1c2ef b/fuzz/corpora/asn1/8107f5a90504df9a045b6cc85f9f00fc56e1c2ef
+index 0000000..9405795
+Binary files /dev/null and b/fuzz/corpora/asn1/c3be2883ad65e378469618d6afadfc4945ebcd54 differ
+diff --git a/fuzz/corpora/asn1/c4b041f5849abbcdee22ba6bc39e34664d4ea790 b/fuzz/corpora/asn1/c4b041f5849abbcdee22ba6bc39e34664d4ea790
 new file mode 100644
-index 000000000000..f1da7408d0a5
-Binary files /dev/null and b/fuzz/corpora/asn1/8107f5a90504df9a045b6cc85f9f00fc56e1c2ef differ
-diff --git a/fuzz/corpora/asn1/818a858127a4725e59eb7a117829c681fa95588b b/fuzz/corpora/asn1/818a858127a4725e59eb7a117829c681fa95588b
+index 0000000..23db241
+Binary files /dev/null and b/fuzz/corpora/asn1/c4b041f5849abbcdee22ba6bc39e34664d4ea790 differ
+diff --git a/fuzz/corpora/asn1/c5897095d9ceaff84e2fa0f550796ea7fa5be50d b/fuzz/corpora/asn1/c5897095d9ceaff84e2fa0f550796ea7fa5be50d
 new file mode 100644
-index 000000000000..d79defb1c5a3
-Binary files /dev/null and b/fuzz/corpora/asn1/818a858127a4725e59eb7a117829c681fa95588b differ
-diff --git a/fuzz/corpora/asn1/81a40be1e3c09491015457b48fb44d70742d64be b/fuzz/corpora/asn1/81a40be1e3c09491015457b48fb44d70742d64be
+index 0000000..e777841
+Binary files /dev/null and b/fuzz/corpora/asn1/c5897095d9ceaff84e2fa0f550796ea7fa5be50d differ
+diff --git a/fuzz/corpora/asn1/c670a23b5d57b87e64b0dff6d97cfd92d2a66ef3 b/fuzz/corpora/asn1/c670a23b5d57b87e64b0dff6d97cfd92d2a66ef3
 new file mode 100644
-index 000000000000..064023c87a16
-Binary files /dev/null and b/fuzz/corpora/asn1/81a40be1e3c09491015457b48fb44d70742d64be differ
-diff --git a/fuzz/corpora/asn1/81e888429dcecd9ad8180d26924dc39f7175eaac b/fuzz/corpora/asn1/81e888429dcecd9ad8180d26924dc39f7175eaac
+index 0000000..79bba4f
+Binary files /dev/null and b/fuzz/corpora/asn1/c670a23b5d57b87e64b0dff6d97cfd92d2a66ef3 differ
+diff --git a/fuzz/corpora/asn1/c6c78faba8edc05444fb777320579760c9330ffa b/fuzz/corpora/asn1/c6c78faba8edc05444fb777320579760c9330ffa
 new file mode 100644
-index 000000000000..bb1b8a144af0
-Binary files /dev/null and b/fuzz/corpora/asn1/81e888429dcecd9ad8180d26924dc39f7175eaac differ
-diff --git a/fuzz/corpora/asn1/82087c8200eeb0544454982d65605d6978989a9d b/fuzz/corpora/asn1/82087c8200eeb0544454982d65605d6978989a9d
+index 0000000..ea6d249
+Binary files /dev/null and b/fuzz/corpora/asn1/c6c78faba8edc05444fb777320579760c9330ffa differ
+diff --git a/fuzz/corpora/asn1/c70ddebd0fe8cab2ff742841fd1464a03795e1aa b/fuzz/corpora/asn1/c70ddebd0fe8cab2ff742841fd1464a03795e1aa
 new file mode 100644
-index 000000000000..47724e8ba3e4
-Binary files /dev/null and b/fuzz/corpora/asn1/82087c8200eeb0544454982d65605d6978989a9d differ
-diff --git a/fuzz/corpora/asn1/821e1febac3ccbb74c985d836964587199f1143d b/fuzz/corpora/asn1/821e1febac3ccbb74c985d836964587199f1143d
+index 0000000..48bf019
+Binary files /dev/null and b/fuzz/corpora/asn1/c70ddebd0fe8cab2ff742841fd1464a03795e1aa differ
+diff --git a/fuzz/corpora/asn1/c736da2aef7921945b15613a3f800afaa744b5cb b/fuzz/corpora/asn1/c736da2aef7921945b15613a3f800afaa744b5cb
 new file mode 100644
-index 000000000000..5f4efdeb69d9
-Binary files /dev/null and b/fuzz/corpora/asn1/821e1febac3ccbb74c985d836964587199f1143d differ
-diff --git a/fuzz/corpora/asn1/823048b72b17b52866e3aa6a9c41079d0f004767 b/fuzz/corpora/asn1/823048b72b17b52866e3aa6a9c41079d0f004767
+index 0000000..ab9cab9
+Binary files /dev/null and b/fuzz/corpora/asn1/c736da2aef7921945b15613a3f800afaa744b5cb differ
+diff --git a/fuzz/corpora/asn1/c77e55d25d9eb301b5ec5548ea71feebcc80292f b/fuzz/corpora/asn1/c77e55d25d9eb301b5ec5548ea71feebcc80292f
 new file mode 100644
-index 000000000000..cd5d8d483c73
-Binary files /dev/null and b/fuzz/corpora/asn1/823048b72b17b52866e3aa6a9c41079d0f004767 differ
-diff --git a/fuzz/corpora/asn1/8232f7ab1d3ed9042f08b388287563a97452bff0 b/fuzz/corpora/asn1/8232f7ab1d3ed9042f08b388287563a97452bff0
+index 0000000..1abd529
+Binary files /dev/null and b/fuzz/corpora/asn1/c77e55d25d9eb301b5ec5548ea71feebcc80292f differ
+diff --git a/fuzz/corpora/asn1/c7852328102e7a88853f5af49709305946181e2e b/fuzz/corpora/asn1/c7852328102e7a88853f5af49709305946181e2e
 new file mode 100644
-index 000000000000..2ab944087924
-Binary files /dev/null and b/fuzz/corpora/asn1/8232f7ab1d3ed9042f08b388287563a97452bff0 differ
-diff --git a/fuzz/corpora/asn1/82abd18298c62a5e057e9c2f0056846478a4c95f b/fuzz/corpora/asn1/82abd18298c62a5e057e9c2f0056846478a4c95f
+index 0000000..aab4f7c
+Binary files /dev/null and b/fuzz/corpora/asn1/c7852328102e7a88853f5af49709305946181e2e differ
+diff --git a/fuzz/corpora/asn1/c787ac1ef2fff18420330c9bf1499d0b505e3467 b/fuzz/corpora/asn1/c787ac1ef2fff18420330c9bf1499d0b505e3467
 new file mode 100644
-index 000000000000..f7879472b920
-Binary files /dev/null and b/fuzz/corpora/asn1/82abd18298c62a5e057e9c2f0056846478a4c95f differ
-diff --git a/fuzz/corpora/asn1/82af10e6979179c580879735a7482ea2c7342a49 b/fuzz/corpora/asn1/82af10e6979179c580879735a7482ea2c7342a49
+index 0000000..da54dc1
+Binary files /dev/null and b/fuzz/corpora/asn1/c787ac1ef2fff18420330c9bf1499d0b505e3467 differ
+diff --git a/fuzz/corpora/asn1/c81350a833faec238ab52b2edf5a3e3dab462dea b/fuzz/corpora/asn1/c81350a833faec238ab52b2edf5a3e3dab462dea
 new file mode 100644
-index 000000000000..4c9c9c89477b
-Binary files /dev/null and b/fuzz/corpora/asn1/82af10e6979179c580879735a7482ea2c7342a49 differ
-diff --git a/fuzz/corpora/asn1/82b589affbfd0f5de6128c33e0a441cf030f2f87 b/fuzz/corpora/asn1/82b589affbfd0f5de6128c33e0a441cf030f2f87
+index 0000000..845ae53
+Binary files /dev/null and b/fuzz/corpora/asn1/c81350a833faec238ab52b2edf5a3e3dab462dea differ
+diff --git a/fuzz/corpora/asn1/c8319f2ebcf46a7b15b39a8a28820293313b496b b/fuzz/corpora/asn1/c8319f2ebcf46a7b15b39a8a28820293313b496b
 new file mode 100644
-index 000000000000..f474c23b588c
-Binary files /dev/null and b/fuzz/corpora/asn1/82b589affbfd0f5de6128c33e0a441cf030f2f87 differ
-diff --git a/fuzz/corpora/asn1/82e4de8871e52fd6c2c77c9ff90486f4827a53a4 b/fuzz/corpora/asn1/82e4de8871e52fd6c2c77c9ff90486f4827a53a4
+index 0000000..402fcaa
+Binary files /dev/null and b/fuzz/corpora/asn1/c8319f2ebcf46a7b15b39a8a28820293313b496b differ
+diff --git a/fuzz/corpora/asn1/c88fb060760434ce41cc3c56e5b8841301caf861 b/fuzz/corpora/asn1/c88fb060760434ce41cc3c56e5b8841301caf861
 new file mode 100644
-index 000000000000..7bdd6b5abe75
-Binary files /dev/null and b/fuzz/corpora/asn1/82e4de8871e52fd6c2c77c9ff90486f4827a53a4 differ
-diff --git a/fuzz/corpora/asn1/833d2e179ec33ed3e39b1c638ec459f001153113 b/fuzz/corpora/asn1/833d2e179ec33ed3e39b1c638ec459f001153113
+index 0000000..c715d51
+Binary files /dev/null and b/fuzz/corpora/asn1/c88fb060760434ce41cc3c56e5b8841301caf861 differ
+diff --git a/fuzz/corpora/asn1/c8b6c70b7b185c5a322669e12d6a9f8ba04fcc31 b/fuzz/corpora/asn1/c8b6c70b7b185c5a322669e12d6a9f8ba04fcc31
 new file mode 100644
-index 000000000000..afa9c41e19eb
-Binary files /dev/null and b/fuzz/corpora/asn1/833d2e179ec33ed3e39b1c638ec459f001153113 differ
-diff --git a/fuzz/corpora/asn1/83fbd0f17b1c24b4840f76a813f3e4a5b82dff6d b/fuzz/corpora/asn1/83fbd0f17b1c24b4840f76a813f3e4a5b82dff6d
+index 0000000..a823d7a
+Binary files /dev/null and b/fuzz/corpora/asn1/c8b6c70b7b185c5a322669e12d6a9f8ba04fcc31 differ
+diff --git a/fuzz/corpora/asn1/c905bf5cebe323c45d997693d4c16c9d791ed418 b/fuzz/corpora/asn1/c905bf5cebe323c45d997693d4c16c9d791ed418
 new file mode 100644
-index 000000000000..aa8cf8cb6d83
-Binary files /dev/null and b/fuzz/corpora/asn1/83fbd0f17b1c24b4840f76a813f3e4a5b82dff6d differ
-diff --git a/fuzz/corpora/asn1/844ebc926cf7d88cad633047dd65388278c2f9c2 b/fuzz/corpora/asn1/844ebc926cf7d88cad633047dd65388278c2f9c2
+index 0000000..f902cea
+Binary files /dev/null and b/fuzz/corpora/asn1/c905bf5cebe323c45d997693d4c16c9d791ed418 differ
+diff --git a/fuzz/corpora/asn1/c9da2adafe59dd645447d76d0eb472decce11782 b/fuzz/corpora/asn1/c9da2adafe59dd645447d76d0eb472decce11782
 new file mode 100644
-index 000000000000..d9647662f62c
-Binary files /dev/null and b/fuzz/corpora/asn1/844ebc926cf7d88cad633047dd65388278c2f9c2 differ
-diff --git a/fuzz/corpora/asn1/847c96ff1b673cc26a110fb9b43ee106ee46d97c b/fuzz/corpora/asn1/847c96ff1b673cc26a110fb9b43ee106ee46d97c
+index 0000000..1f1652f
+Binary files /dev/null and b/fuzz/corpora/asn1/c9da2adafe59dd645447d76d0eb472decce11782 differ
+diff --git a/fuzz/corpora/asn1/c9e4e20e2cc0a358a36418c4eb0c1048b19b0467 b/fuzz/corpora/asn1/c9e4e20e2cc0a358a36418c4eb0c1048b19b0467
 new file mode 100644
-index 000000000000..281a1ddaca51
-Binary files /dev/null and b/fuzz/corpora/asn1/847c96ff1b673cc26a110fb9b43ee106ee46d97c differ
-diff --git a/fuzz/corpora/asn1/856d2aa1ec4d58fdeb3bc21dec78af0e7f12c2b6 b/fuzz/corpora/asn1/856d2aa1ec4d58fdeb3bc21dec78af0e7f12c2b6
+index 0000000..64a8a95
+Binary files /dev/null and b/fuzz/corpora/asn1/c9e4e20e2cc0a358a36418c4eb0c1048b19b0467 differ
+diff --git a/fuzz/corpora/asn1/cacbede362e94cc239c1a23ad17c8da55db878b7 b/fuzz/corpora/asn1/cacbede362e94cc239c1a23ad17c8da55db878b7
 new file mode 100644
-index 000000000000..f46ea1f1e237
-Binary files /dev/null and b/fuzz/corpora/asn1/856d2aa1ec4d58fdeb3bc21dec78af0e7f12c2b6 differ
-diff --git a/fuzz/corpora/asn1/85702e373892e7ebfe865b514fe3abe082e5b94c b/fuzz/corpora/asn1/85702e373892e7ebfe865b514fe3abe082e5b94c
+index 0000000..26d2873
+Binary files /dev/null and b/fuzz/corpora/asn1/cacbede362e94cc239c1a23ad17c8da55db878b7 differ
+diff --git a/fuzz/corpora/asn1/caea92ea7777f9944477e68935cf7f04f875b79a b/fuzz/corpora/asn1/caea92ea7777f9944477e68935cf7f04f875b79a
 new file mode 100644
-index 000000000000..7d8a943ccc8a
-Binary files /dev/null and b/fuzz/corpora/asn1/85702e373892e7ebfe865b514fe3abe082e5b94c differ
-diff --git a/fuzz/corpora/asn1/85ccfb771becba620484079efe73fe718779f78a b/fuzz/corpora/asn1/85ccfb771becba620484079efe73fe718779f78a
+index 0000000..6b14913
+Binary files /dev/null and b/fuzz/corpora/asn1/caea92ea7777f9944477e68935cf7f04f875b79a differ
+diff --git a/fuzz/corpora/asn1/caf107097c511b0ab7fd2d8c0389d7b690a512db b/fuzz/corpora/asn1/caf107097c511b0ab7fd2d8c0389d7b690a512db
 new file mode 100644
-index 000000000000..9ee29a06a05d
-Binary files /dev/null and b/fuzz/corpora/asn1/85ccfb771becba620484079efe73fe718779f78a differ
-diff --git a/fuzz/corpora/asn1/8620cd2c396b6225ab16839a26174edbfb5dda53 b/fuzz/corpora/asn1/8620cd2c396b6225ab16839a26174edbfb5dda53
+index 0000000..64149f3
+Binary files /dev/null and b/fuzz/corpora/asn1/caf107097c511b0ab7fd2d8c0389d7b690a512db differ
+diff --git a/fuzz/corpora/asn1/cbff7144f7946f833a0199c9a62d0db8cb53bca5 b/fuzz/corpora/asn1/cbff7144f7946f833a0199c9a62d0db8cb53bca5
 new file mode 100644
-index 000000000000..deed2a531ae5
-Binary files /dev/null and b/fuzz/corpora/asn1/8620cd2c396b6225ab16839a26174edbfb5dda53 differ
-diff --git a/fuzz/corpora/asn1/86a3c14708e87f6d0f54726c84657843caf064b6 b/fuzz/corpora/asn1/86a3c14708e87f6d0f54726c84657843caf064b6
+index 0000000..893dcc1
+Binary files /dev/null and b/fuzz/corpora/asn1/cbff7144f7946f833a0199c9a62d0db8cb53bca5 differ
+diff --git a/fuzz/corpora/asn1/cd32b9cda0246b257f18a8a74e1b8570f4cdee85 b/fuzz/corpora/asn1/cd32b9cda0246b257f18a8a74e1b8570f4cdee85
 new file mode 100644
-index 000000000000..d12b8d3099d5
-Binary files /dev/null and b/fuzz/corpora/asn1/86a3c14708e87f6d0f54726c84657843caf064b6 differ
-diff --git a/fuzz/corpora/asn1/86db813678ae337e8b235922b069f031bba27ace b/fuzz/corpora/asn1/86db813678ae337e8b235922b069f031bba27ace
+index 0000000..bdf950b
+Binary files /dev/null and b/fuzz/corpora/asn1/cd32b9cda0246b257f18a8a74e1b8570f4cdee85 differ
+diff --git a/fuzz/corpora/asn1/cd381b27b629e8f6cdf27ddacd3246ca375289fd b/fuzz/corpora/asn1/cd381b27b629e8f6cdf27ddacd3246ca375289fd
 new file mode 100644
-index 000000000000..eb114bf828c1
-Binary files /dev/null and b/fuzz/corpora/asn1/86db813678ae337e8b235922b069f031bba27ace differ
-diff --git a/fuzz/corpora/asn1/873c1cd75f69e88a598056097922d6e521ef7a0f b/fuzz/corpora/asn1/873c1cd75f69e88a598056097922d6e521ef7a0f
+index 0000000..1b92c30
+Binary files /dev/null and b/fuzz/corpora/asn1/cd381b27b629e8f6cdf27ddacd3246ca375289fd differ
+diff --git a/fuzz/corpora/asn1/ceca57f30163201f55a12396a0c6293c8711ba95 b/fuzz/corpora/asn1/ceca57f30163201f55a12396a0c6293c8711ba95
 new file mode 100644
-index 000000000000..e92f1be7560d
-Binary files /dev/null and b/fuzz/corpora/asn1/873c1cd75f69e88a598056097922d6e521ef7a0f differ
-diff --git a/fuzz/corpora/asn1/87622fc356df18e8ee5ed9f90d39ef52312fcb8d b/fuzz/corpora/asn1/87622fc356df18e8ee5ed9f90d39ef52312fcb8d
+index 0000000..9a6d876
+Binary files /dev/null and b/fuzz/corpora/asn1/ceca57f30163201f55a12396a0c6293c8711ba95 differ
+diff --git a/fuzz/corpora/asn1/cf5dc30bb36cdbe76ecae400597a652e5eaf87ac b/fuzz/corpora/asn1/cf5dc30bb36cdbe76ecae400597a652e5eaf87ac
 new file mode 100644
-index 000000000000..4da59d4fe2dc
-Binary files /dev/null and b/fuzz/corpora/asn1/87622fc356df18e8ee5ed9f90d39ef52312fcb8d differ
-diff --git a/fuzz/corpora/asn1/8783a8b4c3964ea607b7fd2cc278a8f11df9d7a2 b/fuzz/corpora/asn1/8783a8b4c3964ea607b7fd2cc278a8f11df9d7a2
+index 0000000..12130e8
+Binary files /dev/null and b/fuzz/corpora/asn1/cf5dc30bb36cdbe76ecae400597a652e5eaf87ac differ
+diff --git a/fuzz/corpora/asn1/cfb560acf01c6870e74227a161de86113806b8eb b/fuzz/corpora/asn1/cfb560acf01c6870e74227a161de86113806b8eb
 new file mode 100644
-index 000000000000..704d94a533fc
-Binary files /dev/null and b/fuzz/corpora/asn1/8783a8b4c3964ea607b7fd2cc278a8f11df9d7a2 differ
-diff --git a/fuzz/corpora/asn1/879b0b0210151c5cac27c06e727895e050d542b8 b/fuzz/corpora/asn1/879b0b0210151c5cac27c06e727895e050d542b8
+index 0000000..d176e3f
+Binary files /dev/null and b/fuzz/corpora/asn1/cfb560acf01c6870e74227a161de86113806b8eb differ
+diff --git a/fuzz/corpora/asn1/cfd8bf40f9d4d20dd6d96bde901b6651e0400fa4 b/fuzz/corpora/asn1/cfd8bf40f9d4d20dd6d96bde901b6651e0400fa4
 new file mode 100644
-index 000000000000..cd6b0c1dbc2d
-Binary files /dev/null and b/fuzz/corpora/asn1/879b0b0210151c5cac27c06e727895e050d542b8 differ
-diff --git a/fuzz/corpora/asn1/87c00366f381be5e353db38f197ecb21301a6183 b/fuzz/corpora/asn1/87c00366f381be5e353db38f197ecb21301a6183
+index 0000000..8d8b30b
+Binary files /dev/null and b/fuzz/corpora/asn1/cfd8bf40f9d4d20dd6d96bde901b6651e0400fa4 differ
+diff --git a/fuzz/corpora/asn1/d04453a330add1a99224c90ca366039e8e679ecb b/fuzz/corpora/asn1/d04453a330add1a99224c90ca366039e8e679ecb
 new file mode 100644
-index 000000000000..4677a35abf9c
-Binary files /dev/null and b/fuzz/corpora/asn1/87c00366f381be5e353db38f197ecb21301a6183 differ
-diff --git a/fuzz/corpora/asn1/87c8c9f34bae510130432fd06cf792888b601f9c b/fuzz/corpora/asn1/87c8c9f34bae510130432fd06cf792888b601f9c
+index 0000000..327f010
+Binary files /dev/null and b/fuzz/corpora/asn1/d04453a330add1a99224c90ca366039e8e679ecb differ
+diff --git a/fuzz/corpora/asn1/d05e086fee4cecf9d9f7bca06f5b66b53eb3db0b b/fuzz/corpora/asn1/d05e086fee4cecf9d9f7bca06f5b66b53eb3db0b
 new file mode 100644
-index 000000000000..7c4cc067da9b
-Binary files /dev/null and b/fuzz/corpora/asn1/87c8c9f34bae510130432fd06cf792888b601f9c differ
-diff --git a/fuzz/corpora/asn1/87eebfef4d8a0f956a0d089e2780392ef11e3409 b/fuzz/corpora/asn1/87eebfef4d8a0f956a0d089e2780392ef11e3409
+index 0000000..ea250d2
+Binary files /dev/null and b/fuzz/corpora/asn1/d05e086fee4cecf9d9f7bca06f5b66b53eb3db0b differ
+diff --git a/fuzz/corpora/asn1/d17beba5c5ec82adda69747dbbc5bab2129ba7b5 b/fuzz/corpora/asn1/d17beba5c5ec82adda69747dbbc5bab2129ba7b5
 new file mode 100644
-index 000000000000..33f9db80e9df
-Binary files /dev/null and b/fuzz/corpora/asn1/87eebfef4d8a0f956a0d089e2780392ef11e3409 differ
-diff --git a/fuzz/corpora/asn1/880223b41ecd68f1221be0a6071e6d1f4a3d4545 b/fuzz/corpora/asn1/880223b41ecd68f1221be0a6071e6d1f4a3d4545
+index 0000000..8365627
+Binary files /dev/null and b/fuzz/corpora/asn1/d17beba5c5ec82adda69747dbbc5bab2129ba7b5 differ
+diff --git a/fuzz/corpora/asn1/d1b3dcadd3fb2c792550b1d0f5332f9c97758840 b/fuzz/corpora/asn1/d1b3dcadd3fb2c792550b1d0f5332f9c97758840
 new file mode 100644
-index 000000000000..f7caa5645b6b
-Binary files /dev/null and b/fuzz/corpora/asn1/880223b41ecd68f1221be0a6071e6d1f4a3d4545 differ
-diff --git a/fuzz/corpora/asn1/885a01f71df1461f84fc8b7057320b2135f5e35c b/fuzz/corpora/asn1/885a01f71df1461f84fc8b7057320b2135f5e35c
+index 0000000..0093ac8
+Binary files /dev/null and b/fuzz/corpora/asn1/d1b3dcadd3fb2c792550b1d0f5332f9c97758840 differ
+diff --git a/fuzz/corpora/asn1/d1cc721a233a3a0a24b5b701372ff59beda81d0f b/fuzz/corpora/asn1/d1cc721a233a3a0a24b5b701372ff59beda81d0f
 new file mode 100644
-index 000000000000..7c854bcc8ade
-Binary files /dev/null and b/fuzz/corpora/asn1/885a01f71df1461f84fc8b7057320b2135f5e35c differ
-diff --git a/fuzz/corpora/asn1/887c5e98cc74792dc8a83fe305bb38b0a94819ec b/fuzz/corpora/asn1/887c5e98cc74792dc8a83fe305bb38b0a94819ec
+index 0000000..4499653
+Binary files /dev/null and b/fuzz/corpora/asn1/d1cc721a233a3a0a24b5b701372ff59beda81d0f differ
+diff --git a/fuzz/corpora/asn1/d1f4416393b9ee2cf7196b5c3ced1253fee35f88 b/fuzz/corpora/asn1/d1f4416393b9ee2cf7196b5c3ced1253fee35f88
 new file mode 100644
-index 000000000000..185404b84e54
-Binary files /dev/null and b/fuzz/corpora/asn1/887c5e98cc74792dc8a83fe305bb38b0a94819ec differ
-diff --git a/fuzz/corpora/asn1/88827fd5fd9c02924296c51f36b78382ca317368 b/fuzz/corpora/asn1/88827fd5fd9c02924296c51f36b78382ca317368
+index 0000000..cd3cc73
+Binary files /dev/null and b/fuzz/corpora/asn1/d1f4416393b9ee2cf7196b5c3ced1253fee35f88 differ
+diff --git a/fuzz/corpora/asn1/d256a9fcd11ee6b8911a9fcd45182462f17eae5b b/fuzz/corpora/asn1/d256a9fcd11ee6b8911a9fcd45182462f17eae5b
 new file mode 100644
-index 000000000000..91247c92780f
-Binary files /dev/null and b/fuzz/corpora/asn1/88827fd5fd9c02924296c51f36b78382ca317368 differ
-diff --git a/fuzz/corpora/asn1/8891fcf5a5991f54034e500ec6a92f59e5d5123c b/fuzz/corpora/asn1/8891fcf5a5991f54034e500ec6a92f59e5d5123c
+index 0000000..60ae2f3
+Binary files /dev/null and b/fuzz/corpora/asn1/d256a9fcd11ee6b8911a9fcd45182462f17eae5b differ
+diff --git a/fuzz/corpora/asn1/d352df8e00ba28b037d54280e68d276d3b13d933 b/fuzz/corpora/asn1/d352df8e00ba28b037d54280e68d276d3b13d933
 new file mode 100644
-index 000000000000..cf83662c5700
-Binary files /dev/null and b/fuzz/corpora/asn1/8891fcf5a5991f54034e500ec6a92f59e5d5123c differ
-diff --git a/fuzz/corpora/asn1/88ae4816a1e1a163328266cb9ebc9e25268e4ddb b/fuzz/corpora/asn1/88ae4816a1e1a163328266cb9ebc9e25268e4ddb
+index 0000000..2132740
+Binary files /dev/null and b/fuzz/corpora/asn1/d352df8e00ba28b037d54280e68d276d3b13d933 differ
+diff --git a/fuzz/corpora/asn1/d3cdc3c23b0c0d9f8905938606438c40b7959f2f b/fuzz/corpora/asn1/d3cdc3c23b0c0d9f8905938606438c40b7959f2f
 new file mode 100644
-index 000000000000..64d2070ba668
-Binary files /dev/null and b/fuzz/corpora/asn1/88ae4816a1e1a163328266cb9ebc9e25268e4ddb differ
-diff --git a/fuzz/corpora/asn1/88dd449a1260b6a53b9a50c74db8ff8daed6b70f b/fuzz/corpora/asn1/88dd449a1260b6a53b9a50c74db8ff8daed6b70f
+index 0000000..5c79247
+Binary files /dev/null and b/fuzz/corpora/asn1/d3cdc3c23b0c0d9f8905938606438c40b7959f2f differ
+diff --git a/fuzz/corpora/asn1/d3cf742049e6e0aac75148f9bb284cc737c8510e b/fuzz/corpora/asn1/d3cf742049e6e0aac75148f9bb284cc737c8510e
 new file mode 100644
-index 000000000000..78c8a0a1d508
-Binary files /dev/null and b/fuzz/corpora/asn1/88dd449a1260b6a53b9a50c74db8ff8daed6b70f differ
-diff --git a/fuzz/corpora/asn1/88ff25d2062cde912f4d730cf3d317e73c7e70c7 b/fuzz/corpora/asn1/88ff25d2062cde912f4d730cf3d317e73c7e70c7
+index 0000000..29f33de
+Binary files /dev/null and b/fuzz/corpora/asn1/d3cf742049e6e0aac75148f9bb284cc737c8510e differ
+diff --git a/fuzz/corpora/asn1/d3f57745670579b197e1c3ea3cbad82d045d4787 b/fuzz/corpora/asn1/d3f57745670579b197e1c3ea3cbad82d045d4787
 new file mode 100644
-index 000000000000..d1f3ee24c154
-Binary files /dev/null and b/fuzz/corpora/asn1/88ff25d2062cde912f4d730cf3d317e73c7e70c7 differ
-diff --git a/fuzz/corpora/asn1/893a632ee70158b939d3fecd3e65ba63bb8cbf56 b/fuzz/corpora/asn1/893a632ee70158b939d3fecd3e65ba63bb8cbf56
+index 0000000..fce5889
+Binary files /dev/null and b/fuzz/corpora/asn1/d3f57745670579b197e1c3ea3cbad82d045d4787 differ
+diff --git a/fuzz/corpora/asn1/d41e2df798cb4916671f4688874ec86323e246d2 b/fuzz/corpora/asn1/d41e2df798cb4916671f4688874ec86323e246d2
 new file mode 100644
-index 000000000000..3c48bc444ef1
-Binary files /dev/null and b/fuzz/corpora/asn1/893a632ee70158b939d3fecd3e65ba63bb8cbf56 differ
-diff --git a/fuzz/corpora/asn1/896d818f6f3665e1fef03e2265c35c2412dd9b4d b/fuzz/corpora/asn1/896d818f6f3665e1fef03e2265c35c2412dd9b4d
+index 0000000..53af518
+Binary files /dev/null and b/fuzz/corpora/asn1/d41e2df798cb4916671f4688874ec86323e246d2 differ
+diff --git a/fuzz/corpora/asn1/d4731682c59d649974cd4e1f4be1a128bd2778cb b/fuzz/corpora/asn1/d4731682c59d649974cd4e1f4be1a128bd2778cb
 new file mode 100644
-index 000000000000..1ee1e1ff6065
-Binary files /dev/null and b/fuzz/corpora/asn1/896d818f6f3665e1fef03e2265c35c2412dd9b4d differ
-diff --git a/fuzz/corpora/asn1/898e00843605233f480ad93e60defd5fd2ef22e2 b/fuzz/corpora/asn1/898e00843605233f480ad93e60defd5fd2ef22e2
+index 0000000..ab39203
+Binary files /dev/null and b/fuzz/corpora/asn1/d4731682c59d649974cd4e1f4be1a128bd2778cb differ
+diff --git a/fuzz/corpora/asn1/d4963351f071b64781faacc7dbb8b4233820586d b/fuzz/corpora/asn1/d4963351f071b64781faacc7dbb8b4233820586d
 new file mode 100644
-index 000000000000..226a73c95b6a
-Binary files /dev/null and b/fuzz/corpora/asn1/898e00843605233f480ad93e60defd5fd2ef22e2 differ
-diff --git a/fuzz/corpora/asn1/899bbd766d0847543a6bf2045581de67d68f0678 b/fuzz/corpora/asn1/899bbd766d0847543a6bf2045581de67d68f0678
+index 0000000..805cb5d
+Binary files /dev/null and b/fuzz/corpora/asn1/d4963351f071b64781faacc7dbb8b4233820586d differ
+diff --git a/fuzz/corpora/asn1/d4dce122bf7a4a02fdee31259fcb9c44f7c3271e b/fuzz/corpora/asn1/d4dce122bf7a4a02fdee31259fcb9c44f7c3271e
 new file mode 100644
-index 000000000000..b7ee10d3e859
-Binary files /dev/null and b/fuzz/corpora/asn1/899bbd766d0847543a6bf2045581de67d68f0678 differ
-diff --git a/fuzz/corpora/asn1/89a666be82ba009d6197622f28f6e999edecd662 b/fuzz/corpora/asn1/89a666be82ba009d6197622f28f6e999edecd662
+index 0000000..ad175c6
+Binary files /dev/null and b/fuzz/corpora/asn1/d4dce122bf7a4a02fdee31259fcb9c44f7c3271e differ
+diff --git a/fuzz/corpora/asn1/d5e4347b044f231b1398ebd56e2fc636e64287a0 b/fuzz/corpora/asn1/d5e4347b044f231b1398ebd56e2fc636e64287a0
 new file mode 100644
-index 000000000000..5883432fc968
-Binary files /dev/null and b/fuzz/corpora/asn1/89a666be82ba009d6197622f28f6e999edecd662 differ
-diff --git a/fuzz/corpora/asn1/8a0ce2ee24364256353a9a72d4021c109d0c0c21 b/fuzz/corpora/asn1/8a0ce2ee24364256353a9a72d4021c109d0c0c21
+index 0000000..43ef00e
+Binary files /dev/null and b/fuzz/corpora/asn1/d5e4347b044f231b1398ebd56e2fc636e64287a0 differ
+diff --git a/fuzz/corpora/asn1/d6696039ab9d22de15b93e71be313e7c4d5c18d5 b/fuzz/corpora/asn1/d6696039ab9d22de15b93e71be313e7c4d5c18d5
 new file mode 100644
-index 000000000000..351a3af5a32d
-Binary files /dev/null and b/fuzz/corpora/asn1/8a0ce2ee24364256353a9a72d4021c109d0c0c21 differ
-diff --git a/fuzz/corpora/asn1/8a6fafc1f10568cd3d17d8ed38172386a138f777 b/fuzz/corpora/asn1/8a6fafc1f10568cd3d17d8ed38172386a138f777
+index 0000000..717f1ca
+Binary files /dev/null and b/fuzz/corpora/asn1/d6696039ab9d22de15b93e71be313e7c4d5c18d5 differ
+diff --git a/fuzz/corpora/asn1/d681fe34423ca8007d746f8e9caad301bc005dde b/fuzz/corpora/asn1/d681fe34423ca8007d746f8e9caad301bc005dde
 new file mode 100644
-index 000000000000..2b0ab7aecd32
-Binary files /dev/null and b/fuzz/corpora/asn1/8a6fafc1f10568cd3d17d8ed38172386a138f777 differ
-diff --git a/fuzz/corpora/asn1/8a74e33adb05d3ce9fa3dd5a380031c5112dcb79 b/fuzz/corpora/asn1/8a74e33adb05d3ce9fa3dd5a380031c5112dcb79
+index 0000000..5ac784f
+Binary files /dev/null and b/fuzz/corpora/asn1/d681fe34423ca8007d746f8e9caad301bc005dde differ
+diff --git a/fuzz/corpora/asn1/d6ce64b5471688c87502f7248332714adf49c24e b/fuzz/corpora/asn1/d6ce64b5471688c87502f7248332714adf49c24e
 new file mode 100644
-index 000000000000..fbe6d205099b
-Binary files /dev/null and b/fuzz/corpora/asn1/8a74e33adb05d3ce9fa3dd5a380031c5112dcb79 differ
-diff --git a/fuzz/corpora/asn1/8a8d6f1afcccdb5c4fc4395c1850e1710931d69b b/fuzz/corpora/asn1/8a8d6f1afcccdb5c4fc4395c1850e1710931d69b
+index 0000000..e729c38
+Binary files /dev/null and b/fuzz/corpora/asn1/d6ce64b5471688c87502f7248332714adf49c24e differ
+diff --git a/fuzz/corpora/asn1/d72a42044e54203273641b155486004924000530 b/fuzz/corpora/asn1/d72a42044e54203273641b155486004924000530
 new file mode 100644
-index 000000000000..82fea11cc90a
-Binary files /dev/null and b/fuzz/corpora/asn1/8a8d6f1afcccdb5c4fc4395c1850e1710931d69b differ
-diff --git a/fuzz/corpora/asn1/8a908cd048062f7b53f8208098d2762ed9f2a063 b/fuzz/corpora/asn1/8a908cd048062f7b53f8208098d2762ed9f2a063
+index 0000000..e928437
+Binary files /dev/null and b/fuzz/corpora/asn1/d72a42044e54203273641b155486004924000530 differ
+diff --git a/fuzz/corpora/asn1/d85943441d5eb01a2d5aa8f3d5871a410610e8d6 b/fuzz/corpora/asn1/d85943441d5eb01a2d5aa8f3d5871a410610e8d6
 new file mode 100644
-index 000000000000..d97c0e7012e4
-Binary files /dev/null and b/fuzz/corpora/asn1/8a908cd048062f7b53f8208098d2762ed9f2a063 differ
-diff --git a/fuzz/corpora/asn1/8ae28ef4f29bb8d467a4f618a9b8b082d9b97877 b/fuzz/corpora/asn1/8ae28ef4f29bb8d467a4f618a9b8b082d9b97877
+index 0000000..90e153c
+Binary files /dev/null and b/fuzz/corpora/asn1/d85943441d5eb01a2d5aa8f3d5871a410610e8d6 differ
+diff --git a/fuzz/corpora/asn1/d8a83f860e641c6dc6ab4700b4f0d7dc76f7f3b0 b/fuzz/corpora/asn1/d8a83f860e641c6dc6ab4700b4f0d7dc76f7f3b0
 new file mode 100644
-index 000000000000..85fee62b1f4a
-Binary files /dev/null and b/fuzz/corpora/asn1/8ae28ef4f29bb8d467a4f618a9b8b082d9b97877 differ
-diff --git a/fuzz/corpora/asn1/8b0b1cd17952b4550e9c95d5d4e83fe20a2b3c5b b/fuzz/corpora/asn1/8b0b1cd17952b4550e9c95d5d4e83fe20a2b3c5b
+index 0000000..024394e
+Binary files /dev/null and b/fuzz/corpora/asn1/d8a83f860e641c6dc6ab4700b4f0d7dc76f7f3b0 differ
+diff --git a/fuzz/corpora/asn1/d8fb22f6a8222c712c7d671b7171126ff7e626ac b/fuzz/corpora/asn1/d8fb22f6a8222c712c7d671b7171126ff7e626ac
 new file mode 100644
-index 000000000000..4e5aea89b242
-Binary files /dev/null and b/fuzz/corpora/asn1/8b0b1cd17952b4550e9c95d5d4e83fe20a2b3c5b differ
-diff --git a/fuzz/corpora/asn1/8b2e5fefaa0ea65b547cdf7a6818f99506573565 b/fuzz/corpora/asn1/8b2e5fefaa0ea65b547cdf7a6818f99506573565
+index 0000000..492c950
+Binary files /dev/null and b/fuzz/corpora/asn1/d8fb22f6a8222c712c7d671b7171126ff7e626ac differ
+diff --git a/fuzz/corpora/asn1/d90eeebe796d2423479b9d01d66ef43b1ac3419f b/fuzz/corpora/asn1/d90eeebe796d2423479b9d01d66ef43b1ac3419f
 new file mode 100644
-index 000000000000..9a40430a95fd
-Binary files /dev/null and b/fuzz/corpora/asn1/8b2e5fefaa0ea65b547cdf7a6818f99506573565 differ
-diff --git a/fuzz/corpora/asn1/8b49b37b9ab5497bd5b61ba91894fc7a52f3276d b/fuzz/corpora/asn1/8b49b37b9ab5497bd5b61ba91894fc7a52f3276d
+index 0000000..7e17b69
+Binary files /dev/null and b/fuzz/corpora/asn1/d90eeebe796d2423479b9d01d66ef43b1ac3419f differ
+diff --git a/fuzz/corpora/asn1/d939bc48706c947f8ce6d4220cae7f81f8177f93 b/fuzz/corpora/asn1/d939bc48706c947f8ce6d4220cae7f81f8177f93
 new file mode 100644
-index 000000000000..512f50d3467d
-Binary files /dev/null and b/fuzz/corpora/asn1/8b49b37b9ab5497bd5b61ba91894fc7a52f3276d differ
-diff --git a/fuzz/corpora/asn1/8b6a5eac7ff98258c8d6353819d13e4a2449a37e b/fuzz/corpora/asn1/8b6a5eac7ff98258c8d6353819d13e4a2449a37e
+index 0000000..4484d54
+Binary files /dev/null and b/fuzz/corpora/asn1/d939bc48706c947f8ce6d4220cae7f81f8177f93 differ
+diff --git a/fuzz/corpora/asn1/d93c206428dededc8ee059643d86449f3f989112 b/fuzz/corpora/asn1/d93c206428dededc8ee059643d86449f3f989112
 new file mode 100644
-index 000000000000..ce047ff9a2ed
-Binary files /dev/null and b/fuzz/corpora/asn1/8b6a5eac7ff98258c8d6353819d13e4a2449a37e differ
-diff --git a/fuzz/corpora/asn1/8b77533df58ecd822a722e47a3c3867507daee48 b/fuzz/corpora/asn1/8b77533df58ecd822a722e47a3c3867507daee48
+index 0000000..faa6f00
+Binary files /dev/null and b/fuzz/corpora/asn1/d93c206428dededc8ee059643d86449f3f989112 differ
+diff --git a/fuzz/corpora/asn1/d95819332791622a213a3fb495b9e172a924bd8e b/fuzz/corpora/asn1/d95819332791622a213a3fb495b9e172a924bd8e
 new file mode 100644
-index 000000000000..8991e8358c9a
-Binary files /dev/null and b/fuzz/corpora/asn1/8b77533df58ecd822a722e47a3c3867507daee48 differ
-diff --git a/fuzz/corpora/asn1/8c0e33b170e3bce391f2a38acd1a2cbb2f25577b b/fuzz/corpora/asn1/8c0e33b170e3bce391f2a38acd1a2cbb2f25577b
+index 0000000..558f2b3
+Binary files /dev/null and b/fuzz/corpora/asn1/d95819332791622a213a3fb495b9e172a924bd8e differ
+diff --git a/fuzz/corpora/asn1/d99e507bd9385253f519886e7ef65ea71aca9650 b/fuzz/corpora/asn1/d99e507bd9385253f519886e7ef65ea71aca9650
 new file mode 100644
-index 000000000000..83075c682dc3
-Binary files /dev/null and b/fuzz/corpora/asn1/8c0e33b170e3bce391f2a38acd1a2cbb2f25577b differ
-diff --git a/fuzz/corpora/asn1/8ce3ddcdde60b94d995c797f68a21063e1832f96 b/fuzz/corpora/asn1/8ce3ddcdde60b94d995c797f68a21063e1832f96
+index 0000000..6879c13
+Binary files /dev/null and b/fuzz/corpora/asn1/d99e507bd9385253f519886e7ef65ea71aca9650 differ
+diff --git a/fuzz/corpora/asn1/d9b1f8a68e0e75db80fc1f4f6f2439608c43a289 b/fuzz/corpora/asn1/d9b1f8a68e0e75db80fc1f4f6f2439608c43a289
 new file mode 100644
-index 000000000000..32e816ab0768
-Binary files /dev/null and b/fuzz/corpora/asn1/8ce3ddcdde60b94d995c797f68a21063e1832f96 differ
-diff --git a/fuzz/corpora/asn1/8cf0026638b909339727be711fa1376dd2ed4209 b/fuzz/corpora/asn1/8cf0026638b909339727be711fa1376dd2ed4209
+index 0000000..4d31ce1
+Binary files /dev/null and b/fuzz/corpora/asn1/d9b1f8a68e0e75db80fc1f4f6f2439608c43a289 differ
+diff --git a/fuzz/corpora/asn1/d9c254f73e313d3ac9a085d35310e6ec3a25bea7 b/fuzz/corpora/asn1/d9c254f73e313d3ac9a085d35310e6ec3a25bea7
 new file mode 100644
-index 000000000000..0d0fe60dae14
-Binary files /dev/null and b/fuzz/corpora/asn1/8cf0026638b909339727be711fa1376dd2ed4209 differ
-diff --git a/fuzz/corpora/asn1/8d24cd85ea205b03059c5720da865161ac16d2f8 b/fuzz/corpora/asn1/8d24cd85ea205b03059c5720da865161ac16d2f8
+index 0000000..da8e4a4
+Binary files /dev/null and b/fuzz/corpora/asn1/d9c254f73e313d3ac9a085d35310e6ec3a25bea7 differ
+diff --git a/fuzz/corpora/asn1/dbc3b09c9fb6b8c0cd9f5e78919975d6fd5fb5af b/fuzz/corpora/asn1/dbc3b09c9fb6b8c0cd9f5e78919975d6fd5fb5af
 new file mode 100644
-index 000000000000..b598090c81b9
-Binary files /dev/null and b/fuzz/corpora/asn1/8d24cd85ea205b03059c5720da865161ac16d2f8 differ
-diff --git a/fuzz/corpora/asn1/8df2d273378b8695ff1ef255f3741862ea3a52ad b/fuzz/corpora/asn1/8df2d273378b8695ff1ef255f3741862ea3a52ad
+index 0000000..d5babe5
+Binary files /dev/null and b/fuzz/corpora/asn1/dbc3b09c9fb6b8c0cd9f5e78919975d6fd5fb5af differ
+diff --git a/fuzz/corpora/asn1/dbde92ff802bdc67cbd9e72a2d7e53aba426a203 b/fuzz/corpora/asn1/dbde92ff802bdc67cbd9e72a2d7e53aba426a203
 new file mode 100644
-index 000000000000..1b41e7a28609
-Binary files /dev/null and b/fuzz/corpora/asn1/8df2d273378b8695ff1ef255f3741862ea3a52ad differ
-diff --git a/fuzz/corpora/asn1/8ecf323e4cf31be9b325d87ef36853867755e708 b/fuzz/corpora/asn1/8ecf323e4cf31be9b325d87ef36853867755e708
+index 0000000..c23266d
+Binary files /dev/null and b/fuzz/corpora/asn1/dbde92ff802bdc67cbd9e72a2d7e53aba426a203 differ
+diff --git a/fuzz/corpora/asn1/ddacea689252d994d128d90bdd9c990f78ba70c9 b/fuzz/corpora/asn1/ddacea689252d994d128d90bdd9c990f78ba70c9
 new file mode 100644
-index 000000000000..982afa3f76c2
-Binary files /dev/null and b/fuzz/corpora/asn1/8ecf323e4cf31be9b325d87ef36853867755e708 differ
-diff --git a/fuzz/corpora/asn1/8ed02239ddb624295685d507cc48fa41e096e6f3 b/fuzz/corpora/asn1/8ed02239ddb624295685d507cc48fa41e096e6f3
+index 0000000..ee4970a
+Binary files /dev/null and b/fuzz/corpora/asn1/ddacea689252d994d128d90bdd9c990f78ba70c9 differ
+diff --git a/fuzz/corpora/asn1/ddde5e4ac72407ffd17e48ff16ccaea7ef0cdb7c b/fuzz/corpora/asn1/ddde5e4ac72407ffd17e48ff16ccaea7ef0cdb7c
 new file mode 100644
-index 000000000000..e9f386934270
-Binary files /dev/null and b/fuzz/corpora/asn1/8ed02239ddb624295685d507cc48fa41e096e6f3 differ
-diff --git a/fuzz/corpora/asn1/8f4230bdeea5d0aeec890ef37eec02ad35fbda4f b/fuzz/corpora/asn1/8f4230bdeea5d0aeec890ef37eec02ad35fbda4f
+index 0000000..07b4a78
+Binary files /dev/null and b/fuzz/corpora/asn1/ddde5e4ac72407ffd17e48ff16ccaea7ef0cdb7c differ
+diff --git a/fuzz/corpora/asn1/ddf345a4f66187d5e8ec1edefd0badd8d74c3961 b/fuzz/corpora/asn1/ddf345a4f66187d5e8ec1edefd0badd8d74c3961
 new file mode 100644
-index 000000000000..a01bc05c99fe
-Binary files /dev/null and b/fuzz/corpora/asn1/8f4230bdeea5d0aeec890ef37eec02ad35fbda4f differ
-diff --git a/fuzz/corpora/asn1/8f5b0f44be4c2eeeb4e1b17c4bf3a6233f7aa79d b/fuzz/corpora/asn1/8f5b0f44be4c2eeeb4e1b17c4bf3a6233f7aa79d
+index 0000000..f78bdb0
+Binary files /dev/null and b/fuzz/corpora/asn1/ddf345a4f66187d5e8ec1edefd0badd8d74c3961 differ
+diff --git a/fuzz/corpora/asn1/dec2164e3a2d71c33e33d6be19b9252fae096bd7 b/fuzz/corpora/asn1/dec2164e3a2d71c33e33d6be19b9252fae096bd7
 new file mode 100644
-index 000000000000..c52371fa9e69
-Binary files /dev/null and b/fuzz/corpora/asn1/8f5b0f44be4c2eeeb4e1b17c4bf3a6233f7aa79d differ
-diff --git a/fuzz/corpora/asn1/8fc97b51cf02fce363816692fd1ae2a71881f074 b/fuzz/corpora/asn1/8fc97b51cf02fce363816692fd1ae2a71881f074
+index 0000000..3ab746a
+Binary files /dev/null and b/fuzz/corpora/asn1/dec2164e3a2d71c33e33d6be19b9252fae096bd7 differ
+diff --git a/fuzz/corpora/asn1/df07b41663cdf161f39c120224b6d56f46a44391 b/fuzz/corpora/asn1/df07b41663cdf161f39c120224b6d56f46a44391
 new file mode 100644
-index 000000000000..3d55e0c2085e
-Binary files /dev/null and b/fuzz/corpora/asn1/8fc97b51cf02fce363816692fd1ae2a71881f074 differ
-diff --git a/fuzz/corpora/asn1/9006f3654315e1a774c69bd84ecb369b22866c62 b/fuzz/corpora/asn1/9006f3654315e1a774c69bd84ecb369b22866c62
+index 0000000..8b1cad0
+Binary files /dev/null and b/fuzz/corpora/asn1/df07b41663cdf161f39c120224b6d56f46a44391 differ
+diff --git a/fuzz/corpora/asn1/df18f8a76eed9fb163746d5d7803a0b815e135fc b/fuzz/corpora/asn1/df18f8a76eed9fb163746d5d7803a0b815e135fc
 new file mode 100644
-index 000000000000..b4faea8b3017
-Binary files /dev/null and b/fuzz/corpora/asn1/9006f3654315e1a774c69bd84ecb369b22866c62 differ
-diff --git a/fuzz/corpora/asn1/9034f390804eeec8d82ac41b971463c9558c8135 b/fuzz/corpora/asn1/9034f390804eeec8d82ac41b971463c9558c8135
+index 0000000..ab04f6a
+Binary files /dev/null and b/fuzz/corpora/asn1/df18f8a76eed9fb163746d5d7803a0b815e135fc differ
+diff --git a/fuzz/corpora/asn1/df8e8071d5920502412adca3fd66d82242b5160d b/fuzz/corpora/asn1/df8e8071d5920502412adca3fd66d82242b5160d
 new file mode 100644
-index 000000000000..0e3128a36b45
-Binary files /dev/null and b/fuzz/corpora/asn1/9034f390804eeec8d82ac41b971463c9558c8135 differ
-diff --git a/fuzz/corpora/asn1/9041c60aae69a62e6aff185bd8f0bc18daf81202 b/fuzz/corpora/asn1/9041c60aae69a62e6aff185bd8f0bc18daf81202
+index 0000000..d3c50fe
+Binary files /dev/null and b/fuzz/corpora/asn1/df8e8071d5920502412adca3fd66d82242b5160d differ
+diff --git a/fuzz/corpora/asn1/dfe88a388dff356aca1dd4cf0d9676f8297e5ac8 b/fuzz/corpora/asn1/dfe88a388dff356aca1dd4cf0d9676f8297e5ac8
 new file mode 100644
-index 000000000000..3f5255d72e85
-Binary files /dev/null and b/fuzz/corpora/asn1/9041c60aae69a62e6aff185bd8f0bc18daf81202 differ
-diff --git a/fuzz/corpora/asn1/90b9f302a369540a56da56d1d1e3b93e3fd67fcd b/fuzz/corpora/asn1/90b9f302a369540a56da56d1d1e3b93e3fd67fcd
+index 0000000..269879b
+Binary files /dev/null and b/fuzz/corpora/asn1/dfe88a388dff356aca1dd4cf0d9676f8297e5ac8 differ
+diff --git a/fuzz/corpora/asn1/e067118a67a45db886557c8114c358a1a2d2044e b/fuzz/corpora/asn1/e067118a67a45db886557c8114c358a1a2d2044e
 new file mode 100644
-index 000000000000..c60dc0a4474e
-Binary files /dev/null and b/fuzz/corpora/asn1/90b9f302a369540a56da56d1d1e3b93e3fd67fcd differ
-diff --git a/fuzz/corpora/asn1/910ce1b6b46bfd214113066649ea72341baad636 b/fuzz/corpora/asn1/910ce1b6b46bfd214113066649ea72341baad636
+index 0000000..257383e
+Binary files /dev/null and b/fuzz/corpora/asn1/e067118a67a45db886557c8114c358a1a2d2044e differ
+diff --git a/fuzz/corpora/asn1/e09109071a1825f4bff5112ad7de24567cc92300 b/fuzz/corpora/asn1/e09109071a1825f4bff5112ad7de24567cc92300
 new file mode 100644
-index 000000000000..99aa6982e929
-Binary files /dev/null and b/fuzz/corpora/asn1/910ce1b6b46bfd214113066649ea72341baad636 differ
-diff --git a/fuzz/corpora/asn1/914738f1ac2661e3f325f07476cc606946f86b35 b/fuzz/corpora/asn1/914738f1ac2661e3f325f07476cc606946f86b35
+index 0000000..ee56783
+Binary files /dev/null and b/fuzz/corpora/asn1/e09109071a1825f4bff5112ad7de24567cc92300 differ
+diff --git a/fuzz/corpora/asn1/e0c5bc2daf0061f65791509c12f826264fe8f3a2 b/fuzz/corpora/asn1/e0c5bc2daf0061f65791509c12f826264fe8f3a2
 new file mode 100644
-index 000000000000..31b88bc28ce4
-Binary files /dev/null and b/fuzz/corpora/asn1/914738f1ac2661e3f325f07476cc606946f86b35 differ
-diff --git a/fuzz/corpora/asn1/916f679d1ab6e6a62cc8046ad9e4bf6aacf5a743 b/fuzz/corpora/asn1/916f679d1ab6e6a62cc8046ad9e4bf6aacf5a743
+index 0000000..4ad8e9c
+Binary files /dev/null and b/fuzz/corpora/asn1/e0c5bc2daf0061f65791509c12f826264fe8f3a2 differ
+diff --git a/fuzz/corpora/asn1/e1b3134c8bd6322b2c00ac14ffee95201e9d842b b/fuzz/corpora/asn1/e1b3134c8bd6322b2c00ac14ffee95201e9d842b
 new file mode 100644
-index 000000000000..3f5a7e7235b2
-Binary files /dev/null and b/fuzz/corpora/asn1/916f679d1ab6e6a62cc8046ad9e4bf6aacf5a743 differ
-diff --git a/fuzz/corpora/asn1/91824f7bdc1f37152697675a45de653c803d8a18 b/fuzz/corpora/asn1/91824f7bdc1f37152697675a45de653c803d8a18
+index 0000000..e88f6d7
+Binary files /dev/null and b/fuzz/corpora/asn1/e1b3134c8bd6322b2c00ac14ffee95201e9d842b differ
+diff --git a/fuzz/corpora/asn1/e1c02573789e3b64218f6dbbddfc603219a1e66f b/fuzz/corpora/asn1/e1c02573789e3b64218f6dbbddfc603219a1e66f
 new file mode 100644
-index 000000000000..183bea4cb7e6
-Binary files /dev/null and b/fuzz/corpora/asn1/91824f7bdc1f37152697675a45de653c803d8a18 differ
-diff --git a/fuzz/corpora/asn1/91f593336b6bc71179a90a18671df93cae20cbf4 b/fuzz/corpora/asn1/91f593336b6bc71179a90a18671df93cae20cbf4
+index 0000000..ff56318
+Binary files /dev/null and b/fuzz/corpora/asn1/e1c02573789e3b64218f6dbbddfc603219a1e66f differ
+diff --git a/fuzz/corpora/asn1/e2c0b06b7bcdf2b18beb67e0401414fe7a6d659d b/fuzz/corpora/asn1/e2c0b06b7bcdf2b18beb67e0401414fe7a6d659d
 new file mode 100644
-index 000000000000..7ebee83b9fcd
-Binary files /dev/null and b/fuzz/corpora/asn1/91f593336b6bc71179a90a18671df93cae20cbf4 differ
-diff --git a/fuzz/corpora/asn1/9210b9d58b04b6fba4c1f38d8845e0efeb0afece b/fuzz/corpora/asn1/9210b9d58b04b6fba4c1f38d8845e0efeb0afece
+index 0000000..8cd8dfb
+Binary files /dev/null and b/fuzz/corpora/asn1/e2c0b06b7bcdf2b18beb67e0401414fe7a6d659d differ
+diff --git a/fuzz/corpora/asn1/e2f5792e88f91cd132d2ec47c0fe73e294a7b672 b/fuzz/corpora/asn1/e2f5792e88f91cd132d2ec47c0fe73e294a7b672
 new file mode 100644
-index 000000000000..2cdf1a6fbd34
-Binary files /dev/null and b/fuzz/corpora/asn1/9210b9d58b04b6fba4c1f38d8845e0efeb0afece differ
-diff --git a/fuzz/corpora/asn1/922f5d4e8d0e7013da7315f8823a4db5336f1c02 b/fuzz/corpora/asn1/922f5d4e8d0e7013da7315f8823a4db5336f1c02
+index 0000000..92405de
+Binary files /dev/null and b/fuzz/corpora/asn1/e2f5792e88f91cd132d2ec47c0fe73e294a7b672 differ
+diff --git a/fuzz/corpora/asn1/e3c9e3063960e9aa5c9aaf60f850cbef2265d3a3 b/fuzz/corpora/asn1/e3c9e3063960e9aa5c9aaf60f850cbef2265d3a3
 new file mode 100644
-index 000000000000..6b1c86398a43
-Binary files /dev/null and b/fuzz/corpora/asn1/922f5d4e8d0e7013da7315f8823a4db5336f1c02 differ
-diff --git a/fuzz/corpora/asn1/93513d0341e9e0147965aff0d7679338c498b8bb b/fuzz/corpora/asn1/93513d0341e9e0147965aff0d7679338c498b8bb
+index 0000000..46739ee
+Binary files /dev/null and b/fuzz/corpora/asn1/e3c9e3063960e9aa5c9aaf60f850cbef2265d3a3 differ
+diff --git a/fuzz/corpora/asn1/e3e57a670e390d70de7688896a1960d7ac1c2e1d b/fuzz/corpora/asn1/e3e57a670e390d70de7688896a1960d7ac1c2e1d
 new file mode 100644
-index 000000000000..78c6933c8425
-Binary files /dev/null and b/fuzz/corpora/asn1/93513d0341e9e0147965aff0d7679338c498b8bb differ
-diff --git a/fuzz/corpora/asn1/936e49167eb568ede1e99aebbb7952cc78bebc9b b/fuzz/corpora/asn1/936e49167eb568ede1e99aebbb7952cc78bebc9b
+index 0000000..6d9993f
+Binary files /dev/null and b/fuzz/corpora/asn1/e3e57a670e390d70de7688896a1960d7ac1c2e1d differ
+diff --git a/fuzz/corpora/asn1/e4100cce6dfa9105ce953df5aaf67774bbd0b55e b/fuzz/corpora/asn1/e4100cce6dfa9105ce953df5aaf67774bbd0b55e
 new file mode 100644
-index 000000000000..873f6a34a319
-Binary files /dev/null and b/fuzz/corpora/asn1/936e49167eb568ede1e99aebbb7952cc78bebc9b differ
-diff --git a/fuzz/corpora/asn1/93a28fb0be875551cb12a9f8de229264411d909c b/fuzz/corpora/asn1/93a28fb0be875551cb12a9f8de229264411d909c
+index 0000000..01fed9e
+Binary files /dev/null and b/fuzz/corpora/asn1/e4100cce6dfa9105ce953df5aaf67774bbd0b55e differ
+diff --git a/fuzz/corpora/asn1/e45f79d6f4b85331b6e7a528f988707211952a06 b/fuzz/corpora/asn1/e45f79d6f4b85331b6e7a528f988707211952a06
 new file mode 100644
-index 000000000000..8edf7d672049
-Binary files /dev/null and b/fuzz/corpora/asn1/93a28fb0be875551cb12a9f8de229264411d909c differ
-diff --git a/fuzz/corpora/asn1/93ae59551e70c8cb95c525679d497d7f9fb6c1e1 b/fuzz/corpora/asn1/93ae59551e70c8cb95c525679d497d7f9fb6c1e1
+index 0000000..2e41bee
+Binary files /dev/null and b/fuzz/corpora/asn1/e45f79d6f4b85331b6e7a528f988707211952a06 differ
+diff --git a/fuzz/corpora/asn1/e4e6d205b78aa6a2f562093d96f0ba5cbb8c8127 b/fuzz/corpora/asn1/e4e6d205b78aa6a2f562093d96f0ba5cbb8c8127
 new file mode 100644
-index 000000000000..00b70d08fe94
-Binary files /dev/null and b/fuzz/corpora/asn1/93ae59551e70c8cb95c525679d497d7f9fb6c1e1 differ
-diff --git a/fuzz/corpora/asn1/941a8df530f66261c0b418bac4e60b9b35ef9646 b/fuzz/corpora/asn1/941a8df530f66261c0b418bac4e60b9b35ef9646
+index 0000000..e1fddf0
+Binary files /dev/null and b/fuzz/corpora/asn1/e4e6d205b78aa6a2f562093d96f0ba5cbb8c8127 differ
+diff --git a/fuzz/corpora/asn1/e55305c4430166914bdb5f249d30835c885a1410 b/fuzz/corpora/asn1/e55305c4430166914bdb5f249d30835c885a1410
 new file mode 100644
-index 000000000000..fa27529deda5
-Binary files /dev/null and b/fuzz/corpora/asn1/941a8df530f66261c0b418bac4e60b9b35ef9646 differ
-diff --git a/fuzz/corpora/asn1/94e8714901d061ff8d85452f1378536a8b09c3b3 b/fuzz/corpora/asn1/94e8714901d061ff8d85452f1378536a8b09c3b3
+index 0000000..41da2f8
+Binary files /dev/null and b/fuzz/corpora/asn1/e55305c4430166914bdb5f249d30835c885a1410 differ
+diff --git a/fuzz/corpora/asn1/e563370dfda3b4784a33268a2b0e1fe9c40faead b/fuzz/corpora/asn1/e563370dfda3b4784a33268a2b0e1fe9c40faead
 new file mode 100644
-index 000000000000..1e2c6bba7b5c
-Binary files /dev/null and b/fuzz/corpora/asn1/94e8714901d061ff8d85452f1378536a8b09c3b3 differ
-diff --git a/fuzz/corpora/asn1/9534b071925d63417ddb16a3438fbbd74d6696d7 b/fuzz/corpora/asn1/9534b071925d63417ddb16a3438fbbd74d6696d7
+index 0000000..4b2794b
+Binary files /dev/null and b/fuzz/corpora/asn1/e563370dfda3b4784a33268a2b0e1fe9c40faead differ
+diff --git a/fuzz/corpora/asn1/e5c0e45bd9c244bcdc4842b8e7742796302bab1c b/fuzz/corpora/asn1/e5c0e45bd9c244bcdc4842b8e7742796302bab1c
 new file mode 100644
-index 000000000000..ba179a56e2f1
-Binary files /dev/null and b/fuzz/corpora/asn1/9534b071925d63417ddb16a3438fbbd74d6696d7 differ
-diff --git a/fuzz/corpora/asn1/959e4e06b866879aa0367192109ac129f0ddba06 b/fuzz/corpora/asn1/959e4e06b866879aa0367192109ac129f0ddba06
+index 0000000..70e344c
+Binary files /dev/null and b/fuzz/corpora/asn1/e5c0e45bd9c244bcdc4842b8e7742796302bab1c differ
+diff --git a/fuzz/corpora/asn1/e5dc4f5212391430ef7450ccc1fb0dda31f5e702 b/fuzz/corpora/asn1/e5dc4f5212391430ef7450ccc1fb0dda31f5e702
 new file mode 100644
-index 000000000000..dec50e9c5989
-Binary files /dev/null and b/fuzz/corpora/asn1/959e4e06b866879aa0367192109ac129f0ddba06 differ
-diff --git a/fuzz/corpora/asn1/95c4ec5d5503a474a5ee75765fa2038b775f5e90 b/fuzz/corpora/asn1/95c4ec5d5503a474a5ee75765fa2038b775f5e90
+index 0000000..82acc95
+Binary files /dev/null and b/fuzz/corpora/asn1/e5dc4f5212391430ef7450ccc1fb0dda31f5e702 differ
+diff --git a/fuzz/corpora/asn1/e684ef823edb7bd781e2828246823e641a1455ed b/fuzz/corpora/asn1/e684ef823edb7bd781e2828246823e641a1455ed
 new file mode 100644
-index 000000000000..953d56da547c
-Binary files /dev/null and b/fuzz/corpora/asn1/95c4ec5d5503a474a5ee75765fa2038b775f5e90 differ
-diff --git a/fuzz/corpora/asn1/960c7532f20242e9410c68c282a4cd67384fa5ad b/fuzz/corpora/asn1/960c7532f20242e9410c68c282a4cd67384fa5ad
+index 0000000..bbc68c5
+Binary files /dev/null and b/fuzz/corpora/asn1/e684ef823edb7bd781e2828246823e641a1455ed differ
+diff --git a/fuzz/corpora/asn1/e6d9677c6f7f215b25333df1a9cd6d1a57a107ed b/fuzz/corpora/asn1/e6d9677c6f7f215b25333df1a9cd6d1a57a107ed
 new file mode 100644
-index 000000000000..e8fe436d47f9
-Binary files /dev/null and b/fuzz/corpora/asn1/960c7532f20242e9410c68c282a4cd67384fa5ad differ
-diff --git a/fuzz/corpora/asn1/9666de4939577fcac9568ecc176712726f5fe03c b/fuzz/corpora/asn1/9666de4939577fcac9568ecc176712726f5fe03c
+index 0000000..67d95db
+Binary files /dev/null and b/fuzz/corpora/asn1/e6d9677c6f7f215b25333df1a9cd6d1a57a107ed differ
+diff --git a/fuzz/corpora/asn1/e731c00bf0b0ad231e81ea40c7b93b71acf7950e b/fuzz/corpora/asn1/e731c00bf0b0ad231e81ea40c7b93b71acf7950e
 new file mode 100644
-index 000000000000..c1137721dc4b
-Binary files /dev/null and b/fuzz/corpora/asn1/9666de4939577fcac9568ecc176712726f5fe03c differ
-diff --git a/fuzz/corpora/asn1/9674aa74b4a7dab5fdf5aee35ef80e79245f0126 b/fuzz/corpora/asn1/9674aa74b4a7dab5fdf5aee35ef80e79245f0126
+index 0000000..d95c52a
+Binary files /dev/null and b/fuzz/corpora/asn1/e731c00bf0b0ad231e81ea40c7b93b71acf7950e differ
+diff --git a/fuzz/corpora/asn1/e7533d91074222f7764a76fa83d5fa40c18361f6 b/fuzz/corpora/asn1/e7533d91074222f7764a76fa83d5fa40c18361f6
 new file mode 100644
-index 000000000000..6ef481aacee9
-Binary files /dev/null and b/fuzz/corpora/asn1/9674aa74b4a7dab5fdf5aee35ef80e79245f0126 differ
-diff --git a/fuzz/corpora/asn1/96b0ce868a18ea2f90d5f116dc3fa12bd7eb3dfa b/fuzz/corpora/asn1/96b0ce868a18ea2f90d5f116dc3fa12bd7eb3dfa
+index 0000000..200c789
+Binary files /dev/null and b/fuzz/corpora/asn1/e7533d91074222f7764a76fa83d5fa40c18361f6 differ
+diff --git a/fuzz/corpora/asn1/e78bb12083370720485e38fdbb1e26d840f29cdf b/fuzz/corpora/asn1/e78bb12083370720485e38fdbb1e26d840f29cdf
 new file mode 100644
-index 000000000000..70eef26b4c32
-Binary files /dev/null and b/fuzz/corpora/asn1/96b0ce868a18ea2f90d5f116dc3fa12bd7eb3dfa differ
-diff --git a/fuzz/corpora/asn1/96dca63eb94223e8d6c50f696b9dc830df586081 b/fuzz/corpora/asn1/96dca63eb94223e8d6c50f696b9dc830df586081
+index 0000000..6338671
+Binary files /dev/null and b/fuzz/corpora/asn1/e78bb12083370720485e38fdbb1e26d840f29cdf differ
+diff --git a/fuzz/corpora/asn1/e7a8233ce913bb904a55bd4053f94d4cd10958dc b/fuzz/corpora/asn1/e7a8233ce913bb904a55bd4053f94d4cd10958dc
 new file mode 100644
-index 000000000000..9918b59dd453
-Binary files /dev/null and b/fuzz/corpora/asn1/96dca63eb94223e8d6c50f696b9dc830df586081 differ
-diff --git a/fuzz/corpora/asn1/96e63fd5cb95c8430815b825578a65b5d4eed080 b/fuzz/corpora/asn1/96e63fd5cb95c8430815b825578a65b5d4eed080
+index 0000000..6efdcdf
+Binary files /dev/null and b/fuzz/corpora/asn1/e7a8233ce913bb904a55bd4053f94d4cd10958dc differ
+diff --git a/fuzz/corpora/asn1/e7f7fdad8485025c5da1f8dfffc0016333eb3179 b/fuzz/corpora/asn1/e7f7fdad8485025c5da1f8dfffc0016333eb3179
 new file mode 100644
-index 000000000000..ae26d7ba626c
-Binary files /dev/null and b/fuzz/corpora/asn1/96e63fd5cb95c8430815b825578a65b5d4eed080 differ
-diff --git a/fuzz/corpora/asn1/980724088fb2528667f5fa6efbfe2cfa81c869a5 b/fuzz/corpora/asn1/980724088fb2528667f5fa6efbfe2cfa81c869a5
+index 0000000..53a4461
+Binary files /dev/null and b/fuzz/corpora/asn1/e7f7fdad8485025c5da1f8dfffc0016333eb3179 differ
+diff --git a/fuzz/corpora/asn1/e8873dd4ea0965cea15753d1a2faf974751a6593 b/fuzz/corpora/asn1/e8873dd4ea0965cea15753d1a2faf974751a6593
 new file mode 100644
-index 000000000000..4fa2ce2cb10f
-Binary files /dev/null and b/fuzz/corpora/asn1/980724088fb2528667f5fa6efbfe2cfa81c869a5 differ
-diff --git a/fuzz/corpora/asn1/98681c101a32943869b726cd4a77074239a6a8e2 b/fuzz/corpora/asn1/98681c101a32943869b726cd4a77074239a6a8e2
+index 0000000..74e029c
+Binary files /dev/null and b/fuzz/corpora/asn1/e8873dd4ea0965cea15753d1a2faf974751a6593 differ
+diff --git a/fuzz/corpora/asn1/e89955acaa41ff842e0da28f1a47836a8ed9fe72 b/fuzz/corpora/asn1/e89955acaa41ff842e0da28f1a47836a8ed9fe72
 new file mode 100644
-index 000000000000..beaf3c832210
-Binary files /dev/null and b/fuzz/corpora/asn1/98681c101a32943869b726cd4a77074239a6a8e2 differ
-diff --git a/fuzz/corpora/asn1/992fcdf649bf5e6eb39893074e212f81224b7bc9 b/fuzz/corpora/asn1/992fcdf649bf5e6eb39893074e212f81224b7bc9
+index 0000000..9c386db
+Binary files /dev/null and b/fuzz/corpora/asn1/e89955acaa41ff842e0da28f1a47836a8ed9fe72 differ
+diff --git a/fuzz/corpora/asn1/e8db6c423411e084be8729d429307f7898e0057c b/fuzz/corpora/asn1/e8db6c423411e084be8729d429307f7898e0057c
 new file mode 100644
-index 000000000000..25656c6773a7
-Binary files /dev/null and b/fuzz/corpora/asn1/992fcdf649bf5e6eb39893074e212f81224b7bc9 differ
-diff --git a/fuzz/corpora/asn1/99b338e4f75a971f33ad89d0a49a2ceac962e504 b/fuzz/corpora/asn1/99b338e4f75a971f33ad89d0a49a2ceac962e504
+index 0000000..1461985
+Binary files /dev/null and b/fuzz/corpora/asn1/e8db6c423411e084be8729d429307f7898e0057c differ
+diff --git a/fuzz/corpora/asn1/e8f8bb99f9c79840058c45628a7279d5e6e35091 b/fuzz/corpora/asn1/e8f8bb99f9c79840058c45628a7279d5e6e35091
 new file mode 100644
-index 000000000000..1e59ba32bc4f
-Binary files /dev/null and b/fuzz/corpora/asn1/99b338e4f75a971f33ad89d0a49a2ceac962e504 differ
-diff --git a/fuzz/corpora/asn1/99d8c9947eaad9e5d380dfa4dfbbb8d3c449748b b/fuzz/corpora/asn1/99d8c9947eaad9e5d380dfa4dfbbb8d3c449748b
+index 0000000..46f6092
+Binary files /dev/null and b/fuzz/corpora/asn1/e8f8bb99f9c79840058c45628a7279d5e6e35091 differ
+diff --git a/fuzz/corpora/asn1/e951e4bb370bae1960e8e5d66b8ca4bf313a778b b/fuzz/corpora/asn1/e951e4bb370bae1960e8e5d66b8ca4bf313a778b
 new file mode 100644
-index 000000000000..b2ba63520b37
-Binary files /dev/null and b/fuzz/corpora/asn1/99d8c9947eaad9e5d380dfa4dfbbb8d3c449748b differ
-diff --git a/fuzz/corpora/asn1/99da79027a28ff97a0d96ccb2727eeda2876f2d6 b/fuzz/corpora/asn1/99da79027a28ff97a0d96ccb2727eeda2876f2d6
+index 0000000..20a0aef
+Binary files /dev/null and b/fuzz/corpora/asn1/e951e4bb370bae1960e8e5d66b8ca4bf313a778b differ
+diff --git a/fuzz/corpora/asn1/e958b9415fd00698520a14a0c7e4206dfb95b2ea b/fuzz/corpora/asn1/e958b9415fd00698520a14a0c7e4206dfb95b2ea
 new file mode 100644
-index 000000000000..bda6e84c0d4d
-Binary files /dev/null and b/fuzz/corpora/asn1/99da79027a28ff97a0d96ccb2727eeda2876f2d6 differ
-diff --git a/fuzz/corpora/asn1/99eceee168b71ee75f8b6f19d9b86e2b58ca7b68 b/fuzz/corpora/asn1/99eceee168b71ee75f8b6f19d9b86e2b58ca7b68
+index 0000000..d6830d5
+Binary files /dev/null and b/fuzz/corpora/asn1/e958b9415fd00698520a14a0c7e4206dfb95b2ea differ
+diff --git a/fuzz/corpora/asn1/ea4934c76cdddd2358b74b09e1a270748d8f2f1d b/fuzz/corpora/asn1/ea4934c76cdddd2358b74b09e1a270748d8f2f1d
 new file mode 100644
-index 000000000000..6b3fe69aaf70
-Binary files /dev/null and b/fuzz/corpora/asn1/99eceee168b71ee75f8b6f19d9b86e2b58ca7b68 differ
-diff --git a/fuzz/corpora/asn1/99f2aa95e36f95c2acb0eaf23998f030638f3f15 b/fuzz/corpora/asn1/99f2aa95e36f95c2acb0eaf23998f030638f3f15
+index 0000000..b514d9b
+Binary files /dev/null and b/fuzz/corpora/asn1/ea4934c76cdddd2358b74b09e1a270748d8f2f1d differ
+diff --git a/fuzz/corpora/asn1/ea65143a6a77df7717dee8798f2e57650e95a383 b/fuzz/corpora/asn1/ea65143a6a77df7717dee8798f2e57650e95a383
 new file mode 100644
-index 000000000000..e49435269d33
-Binary files /dev/null and b/fuzz/corpora/asn1/99f2aa95e36f95c2acb0eaf23998f030638f3f15 differ
-diff --git a/fuzz/corpora/asn1/9a6100004daf4df300835dd1b9f9ea27a97a754e b/fuzz/corpora/asn1/9a6100004daf4df300835dd1b9f9ea27a97a754e
+index 0000000..cd21977
+Binary files /dev/null and b/fuzz/corpora/asn1/ea65143a6a77df7717dee8798f2e57650e95a383 differ
+diff --git a/fuzz/corpora/asn1/eb5e913244e2cf12c66876612635dacfdfce828b b/fuzz/corpora/asn1/eb5e913244e2cf12c66876612635dacfdfce828b
 new file mode 100644
-index 000000000000..50ce390220c5
-Binary files /dev/null and b/fuzz/corpora/asn1/9a6100004daf4df300835dd1b9f9ea27a97a754e differ
-diff --git a/fuzz/corpora/asn1/9a9c951aef9d9c56e2c4e2e4707df1a2e0a317d2 b/fuzz/corpora/asn1/9a9c951aef9d9c56e2c4e2e4707df1a2e0a317d2
+index 0000000..cd90f8b
+Binary files /dev/null and b/fuzz/corpora/asn1/eb5e913244e2cf12c66876612635dacfdfce828b differ
+diff --git a/fuzz/corpora/asn1/eb71f96ed9325b4dd1c163d6962c86dcf760e300 b/fuzz/corpora/asn1/eb71f96ed9325b4dd1c163d6962c86dcf760e300
 new file mode 100644
-index 000000000000..848240d4535a
-Binary files /dev/null and b/fuzz/corpora/asn1/9a9c951aef9d9c56e2c4e2e4707df1a2e0a317d2 differ
-diff --git a/fuzz/corpora/asn1/9ac9d7d836f6717e8b2eafbf528c7b1ff401df9a b/fuzz/corpora/asn1/9ac9d7d836f6717e8b2eafbf528c7b1ff401df9a
+index 0000000..565a32f
+Binary files /dev/null and b/fuzz/corpora/asn1/eb71f96ed9325b4dd1c163d6962c86dcf760e300 differ
+diff --git a/fuzz/corpora/asn1/eb7cd76326d1337e63c7c282ff7f087f89b9713c b/fuzz/corpora/asn1/eb7cd76326d1337e63c7c282ff7f087f89b9713c
 new file mode 100644
-index 000000000000..d81cce8e9c26
-Binary files /dev/null and b/fuzz/corpora/asn1/9ac9d7d836f6717e8b2eafbf528c7b1ff401df9a differ
-diff --git a/fuzz/corpora/asn1/9aed36ba848099b1714939c9d4c99925c00a442e b/fuzz/corpora/asn1/9aed36ba848099b1714939c9d4c99925c00a442e
+index 0000000..2273fee
+Binary files /dev/null and b/fuzz/corpora/asn1/eb7cd76326d1337e63c7c282ff7f087f89b9713c differ
+diff --git a/fuzz/corpora/asn1/ebc72e481f034a395e815e32d32066203fc02f45 b/fuzz/corpora/asn1/ebc72e481f034a395e815e32d32066203fc02f45
 new file mode 100644
-index 000000000000..3ffc9de5498b
-Binary files /dev/null and b/fuzz/corpora/asn1/9aed36ba848099b1714939c9d4c99925c00a442e differ
-diff --git a/fuzz/corpora/asn1/9b1b9f44ce6d0fe7bf917280ffc14f6f2f04496a b/fuzz/corpora/asn1/9b1b9f44ce6d0fe7bf917280ffc14f6f2f04496a
+index 0000000..eae8231
+Binary files /dev/null and b/fuzz/corpora/asn1/ebc72e481f034a395e815e32d32066203fc02f45 differ
+diff --git a/fuzz/corpora/asn1/ebf1af5db6d0abdc0615ee0c4d308940949303c1 b/fuzz/corpora/asn1/ebf1af5db6d0abdc0615ee0c4d308940949303c1
 new file mode 100644
-index 000000000000..80592b9d1eb9
-Binary files /dev/null and b/fuzz/corpora/asn1/9b1b9f44ce6d0fe7bf917280ffc14f6f2f04496a differ
-diff --git a/fuzz/corpora/asn1/9b32b692423581348c1be234febd24e6b9b5d2df b/fuzz/corpora/asn1/9b32b692423581348c1be234febd24e6b9b5d2df
+index 0000000..6274fff
+Binary files /dev/null and b/fuzz/corpora/asn1/ebf1af5db6d0abdc0615ee0c4d308940949303c1 differ
+diff --git a/fuzz/corpora/asn1/ebf3c41912e4489be981284eaaf51eb2deb522db b/fuzz/corpora/asn1/ebf3c41912e4489be981284eaaf51eb2deb522db
 new file mode 100644
-index 000000000000..b589497b7b48
-Binary files /dev/null and b/fuzz/corpora/asn1/9b32b692423581348c1be234febd24e6b9b5d2df differ
-diff --git a/fuzz/corpora/asn1/9b49faad17f7ef04044cb3c5229e62abb7adc3f5 b/fuzz/corpora/asn1/9b49faad17f7ef04044cb3c5229e62abb7adc3f5
+index 0000000..55e5112
+Binary files /dev/null and b/fuzz/corpora/asn1/ebf3c41912e4489be981284eaaf51eb2deb522db differ
+diff --git a/fuzz/corpora/asn1/ebfcd88553b0430b32da34cb53fcfc19d8440b90 b/fuzz/corpora/asn1/ebfcd88553b0430b32da34cb53fcfc19d8440b90
 new file mode 100644
-index 000000000000..9c38d4b9d3fd
-Binary files /dev/null and b/fuzz/corpora/asn1/9b49faad17f7ef04044cb3c5229e62abb7adc3f5 differ
-diff --git a/fuzz/corpora/asn1/9b84cde5162080fe113f53b25eaa9d8e02144beb b/fuzz/corpora/asn1/9b84cde5162080fe113f53b25eaa9d8e02144beb
+index 0000000..7f23093
+Binary files /dev/null and b/fuzz/corpora/asn1/ebfcd88553b0430b32da34cb53fcfc19d8440b90 differ
+diff --git a/fuzz/corpora/asn1/ecb9261ef336a630745690f3b6540666d7387b4c b/fuzz/corpora/asn1/ecb9261ef336a630745690f3b6540666d7387b4c
 new file mode 100644
-index 000000000000..97cbd543c7f5
-Binary files /dev/null and b/fuzz/corpora/asn1/9b84cde5162080fe113f53b25eaa9d8e02144beb differ
-diff --git a/fuzz/corpora/asn1/9b99593353a610c4bee0d6a94a01a3296080c0fb b/fuzz/corpora/asn1/9b99593353a610c4bee0d6a94a01a3296080c0fb
+index 0000000..96e1758
+Binary files /dev/null and b/fuzz/corpora/asn1/ecb9261ef336a630745690f3b6540666d7387b4c differ
+diff --git a/fuzz/corpora/asn1/ed0eaa4be01ad456ede8e1f3b4c2cf705c1ab514 b/fuzz/corpora/asn1/ed0eaa4be01ad456ede8e1f3b4c2cf705c1ab514
 new file mode 100644
-index 000000000000..5407bf3ddf8b
-Binary files /dev/null and b/fuzz/corpora/asn1/9b99593353a610c4bee0d6a94a01a3296080c0fb differ
-diff --git a/fuzz/corpora/asn1/9bd06618973bcdca98e938da97db69b1e4f2daf0 b/fuzz/corpora/asn1/9bd06618973bcdca98e938da97db69b1e4f2daf0
+index 0000000..b28e209
+Binary files /dev/null and b/fuzz/corpora/asn1/ed0eaa4be01ad456ede8e1f3b4c2cf705c1ab514 differ
+diff --git a/fuzz/corpora/asn1/ee0d148696595c12d7b6bb425d5cf04952aab8ea b/fuzz/corpora/asn1/ee0d148696595c12d7b6bb425d5cf04952aab8ea
 new file mode 100644
-index 000000000000..bf045237c2f2
-Binary files /dev/null and b/fuzz/corpora/asn1/9bd06618973bcdca98e938da97db69b1e4f2daf0 differ
-diff --git a/fuzz/corpora/asn1/9bf74ead03e9eed3af40d2647b0082ac3663e191 b/fuzz/corpora/asn1/9bf74ead03e9eed3af40d2647b0082ac3663e191
+index 0000000..b2a520d
+Binary files /dev/null and b/fuzz/corpora/asn1/ee0d148696595c12d7b6bb425d5cf04952aab8ea differ
+diff --git a/fuzz/corpora/asn1/ef0414e8c908af622733c8e40229f5a10362dc78 b/fuzz/corpora/asn1/ef0414e8c908af622733c8e40229f5a10362dc78
 new file mode 100644
-index 000000000000..b7a0418e6b1b
-Binary files /dev/null and b/fuzz/corpora/asn1/9bf74ead03e9eed3af40d2647b0082ac3663e191 differ
-diff --git a/fuzz/corpora/asn1/9c2469bd5ebaeee662805eebce7136375fe6042f b/fuzz/corpora/asn1/9c2469bd5ebaeee662805eebce7136375fe6042f
+index 0000000..f342e57
+Binary files /dev/null and b/fuzz/corpora/asn1/ef0414e8c908af622733c8e40229f5a10362dc78 differ
+diff --git a/fuzz/corpora/asn1/ef25429949168cbb23b81c4aebe4e5a63d677d12 b/fuzz/corpora/asn1/ef25429949168cbb23b81c4aebe4e5a63d677d12
 new file mode 100644
-index 000000000000..e5a6224eb556
-Binary files /dev/null and b/fuzz/corpora/asn1/9c2469bd5ebaeee662805eebce7136375fe6042f differ
-diff --git a/fuzz/corpora/asn1/9c970513ff1ebd7b07bd6073e84cbecc6156f3f9 b/fuzz/corpora/asn1/9c970513ff1ebd7b07bd6073e84cbecc6156f3f9
+index 0000000..82b658e
+Binary files /dev/null and b/fuzz/corpora/asn1/ef25429949168cbb23b81c4aebe4e5a63d677d12 differ
+diff --git a/fuzz/corpora/asn1/efed54b27799ba94f5f099d34159fb4b0f355fe2 b/fuzz/corpora/asn1/efed54b27799ba94f5f099d34159fb4b0f355fe2
 new file mode 100644
-index 000000000000..1cb2cc8cb986
-Binary files /dev/null and b/fuzz/corpora/asn1/9c970513ff1ebd7b07bd6073e84cbecc6156f3f9 differ
-diff --git a/fuzz/corpora/asn1/9cfad1f52b0cfbfdbe99857d6be3e39683537722 b/fuzz/corpora/asn1/9cfad1f52b0cfbfdbe99857d6be3e39683537722
+index 0000000..487e9ee
+Binary files /dev/null and b/fuzz/corpora/asn1/efed54b27799ba94f5f099d34159fb4b0f355fe2 differ
+diff --git a/fuzz/corpora/asn1/f1635f2056c37b7f9d4bfbece486a3bfaebdea9c b/fuzz/corpora/asn1/f1635f2056c37b7f9d4bfbece486a3bfaebdea9c
 new file mode 100644
-index 000000000000..f1b665791063
-Binary files /dev/null and b/fuzz/corpora/asn1/9cfad1f52b0cfbfdbe99857d6be3e39683537722 differ
-diff --git a/fuzz/corpora/asn1/9d0c3b8ea2f6ac8d314b56b7058e295a3ebde665 b/fuzz/corpora/asn1/9d0c3b8ea2f6ac8d314b56b7058e295a3ebde665
+index 0000000..46612b1
+Binary files /dev/null and b/fuzz/corpora/asn1/f1635f2056c37b7f9d4bfbece486a3bfaebdea9c differ
+diff --git a/fuzz/corpora/asn1/f1a599deb6f048e985cdff83e08f1de1a273a484 b/fuzz/corpora/asn1/f1a599deb6f048e985cdff83e08f1de1a273a484
 new file mode 100644
-index 000000000000..253af43f4b70
-Binary files /dev/null and b/fuzz/corpora/asn1/9d0c3b8ea2f6ac8d314b56b7058e295a3ebde665 differ
-diff --git a/fuzz/corpora/asn1/9d3a25473fbeb697cea92d5adbc5b1b9e8bec84b b/fuzz/corpora/asn1/9d3a25473fbeb697cea92d5adbc5b1b9e8bec84b
+index 0000000..9a3b921
+Binary files /dev/null and b/fuzz/corpora/asn1/f1a599deb6f048e985cdff83e08f1de1a273a484 differ
+diff --git a/fuzz/corpora/asn1/f30375f617adb4eb17f77ab8a9f7872a515830ba b/fuzz/corpora/asn1/f30375f617adb4eb17f77ab8a9f7872a515830ba
 new file mode 100644
-index 000000000000..b66ce287ba88
-Binary files /dev/null and b/fuzz/corpora/asn1/9d3a25473fbeb697cea92d5adbc5b1b9e8bec84b differ
-diff --git a/fuzz/corpora/asn1/9d4f1bacbde94a13d1c449f1b229dfa577e38ff1 b/fuzz/corpora/asn1/9d4f1bacbde94a13d1c449f1b229dfa577e38ff1
+index 0000000..bbbbc3f
+Binary files /dev/null and b/fuzz/corpora/asn1/f30375f617adb4eb17f77ab8a9f7872a515830ba differ
+diff --git a/fuzz/corpora/asn1/f329f221b8dc4b116ffa1ffa1eba91c60cc72a2b b/fuzz/corpora/asn1/f329f221b8dc4b116ffa1ffa1eba91c60cc72a2b
 new file mode 100644
-index 000000000000..bda87c0a548c
-Binary files /dev/null and b/fuzz/corpora/asn1/9d4f1bacbde94a13d1c449f1b229dfa577e38ff1 differ
-diff --git a/fuzz/corpora/asn1/9daa8bde739a909206c21739b47745a7f3d825a3 b/fuzz/corpora/asn1/9daa8bde739a909206c21739b47745a7f3d825a3
+index 0000000..1bdf368
+Binary files /dev/null and b/fuzz/corpora/asn1/f329f221b8dc4b116ffa1ffa1eba91c60cc72a2b differ
+diff --git a/fuzz/corpora/asn1/f3a66e0e3be74a6ca2f7ec51a37e13753c7b397e b/fuzz/corpora/asn1/f3a66e0e3be74a6ca2f7ec51a37e13753c7b397e
 new file mode 100644
-index 000000000000..623376c7fb8f
-Binary files /dev/null and b/fuzz/corpora/asn1/9daa8bde739a909206c21739b47745a7f3d825a3 differ
-diff --git a/fuzz/corpora/asn1/9ddc262a9a1160b864c68c199215c3d7d27c6cf9 b/fuzz/corpora/asn1/9ddc262a9a1160b864c68c199215c3d7d27c6cf9
+index 0000000..3da4f7b
+Binary files /dev/null and b/fuzz/corpora/asn1/f3a66e0e3be74a6ca2f7ec51a37e13753c7b397e differ
+diff --git a/fuzz/corpora/asn1/f3bb7cc54d18274f09e5e077a39d1b2f7544d09f b/fuzz/corpora/asn1/f3bb7cc54d18274f09e5e077a39d1b2f7544d09f
 new file mode 100644
-index 000000000000..20d73109ddcd
-Binary files /dev/null and b/fuzz/corpora/asn1/9ddc262a9a1160b864c68c199215c3d7d27c6cf9 differ
-diff --git a/fuzz/corpora/asn1/9de3b1b92a13895bbbc7a5d46cb0e46bc3f5d576 b/fuzz/corpora/asn1/9de3b1b92a13895bbbc7a5d46cb0e46bc3f5d576
+index 0000000..5cd2f2b
+Binary files /dev/null and b/fuzz/corpora/asn1/f3bb7cc54d18274f09e5e077a39d1b2f7544d09f differ
+diff --git a/fuzz/corpora/asn1/f3c51d61264e71ccf107e7fa41409423ddb2a9ab b/fuzz/corpora/asn1/f3c51d61264e71ccf107e7fa41409423ddb2a9ab
 new file mode 100644
-index 000000000000..cf1ef01dc7c0
-Binary files /dev/null and b/fuzz/corpora/asn1/9de3b1b92a13895bbbc7a5d46cb0e46bc3f5d576 differ
-diff --git a/fuzz/corpora/asn1/9e2ae3e67686554425a5b6ae10a45aca9dcf9863 b/fuzz/corpora/asn1/9e2ae3e67686554425a5b6ae10a45aca9dcf9863
+index 0000000..239b649
+Binary files /dev/null and b/fuzz/corpora/asn1/f3c51d61264e71ccf107e7fa41409423ddb2a9ab differ
+diff --git a/fuzz/corpora/asn1/f514532c61e8ba56d3a2f4ae669eb2757d691442 b/fuzz/corpora/asn1/f514532c61e8ba56d3a2f4ae669eb2757d691442
 new file mode 100644
-index 000000000000..e9a69603bcf7
-Binary files /dev/null and b/fuzz/corpora/asn1/9e2ae3e67686554425a5b6ae10a45aca9dcf9863 differ
-diff --git a/fuzz/corpora/asn1/9f346af901ed753331e406e2ee407117e2a94c97 b/fuzz/corpora/asn1/9f346af901ed753331e406e2ee407117e2a94c97
+index 0000000..7448f29
+Binary files /dev/null and b/fuzz/corpora/asn1/f514532c61e8ba56d3a2f4ae669eb2757d691442 differ
+diff --git a/fuzz/corpora/asn1/f521598fef4693df564f073dd0e17991f457d785 b/fuzz/corpora/asn1/f521598fef4693df564f073dd0e17991f457d785
 new file mode 100644
-index 000000000000..573c44f97f21
-Binary files /dev/null and b/fuzz/corpora/asn1/9f346af901ed753331e406e2ee407117e2a94c97 differ
-diff --git a/fuzz/corpora/asn1/9f79d183e2a0dd482e3e1238e580f88b0f5bdbaf b/fuzz/corpora/asn1/9f79d183e2a0dd482e3e1238e580f88b0f5bdbaf
+index 0000000..a15feae
+Binary files /dev/null and b/fuzz/corpora/asn1/f521598fef4693df564f073dd0e17991f457d785 differ
+diff --git a/fuzz/corpora/asn1/f59d8489d4acd9d1e7f7c0115cf29edfc4d2133b b/fuzz/corpora/asn1/f59d8489d4acd9d1e7f7c0115cf29edfc4d2133b
 new file mode 100644
-index 000000000000..99c0e181699d
-Binary files /dev/null and b/fuzz/corpora/asn1/9f79d183e2a0dd482e3e1238e580f88b0f5bdbaf differ
-diff --git a/fuzz/corpora/asn1/9f89a8e82ea5aef3eb3dd1de3e361f763939050b b/fuzz/corpora/asn1/9f89a8e82ea5aef3eb3dd1de3e361f763939050b
+index 0000000..ac80dec
+Binary files /dev/null and b/fuzz/corpora/asn1/f59d8489d4acd9d1e7f7c0115cf29edfc4d2133b differ
+diff --git a/fuzz/corpora/asn1/f63c721a418e72eccce1d02ce0881222d4bd85b8 b/fuzz/corpora/asn1/f63c721a418e72eccce1d02ce0881222d4bd85b8
 new file mode 100644
-index 000000000000..d3921bbb06c3
-Binary files /dev/null and b/fuzz/corpora/asn1/9f89a8e82ea5aef3eb3dd1de3e361f763939050b differ
-diff --git a/fuzz/corpora/asn1/9f9117bf69ab4bdf80f8f62007bf7e6202fb91f8 b/fuzz/corpora/asn1/9f9117bf69ab4bdf80f8f62007bf7e6202fb91f8
+index 0000000..6cd1a73
+Binary files /dev/null and b/fuzz/corpora/asn1/f63c721a418e72eccce1d02ce0881222d4bd85b8 differ
+diff --git a/fuzz/corpora/asn1/f6ea29df76bf3e80b75fca4d8da10bbf75c5e6da b/fuzz/corpora/asn1/f6ea29df76bf3e80b75fca4d8da10bbf75c5e6da
 new file mode 100644
-index 000000000000..a5d23c1693ab
-Binary files /dev/null and b/fuzz/corpora/asn1/9f9117bf69ab4bdf80f8f62007bf7e6202fb91f8 differ
-diff --git a/fuzz/corpora/asn1/9f9748e862cd2b9e770f4b7694df48412092f53a b/fuzz/corpora/asn1/9f9748e862cd2b9e770f4b7694df48412092f53a
+index 0000000..afe7584
+Binary files /dev/null and b/fuzz/corpora/asn1/f6ea29df76bf3e80b75fca4d8da10bbf75c5e6da differ
+diff --git a/fuzz/corpora/asn1/f7b03bda30c90043c24b82aecf4a1312f8cfbb3f b/fuzz/corpora/asn1/f7b03bda30c90043c24b82aecf4a1312f8cfbb3f
 new file mode 100644
-index 000000000000..3de7e08525dc
-Binary files /dev/null and b/fuzz/corpora/asn1/9f9748e862cd2b9e770f4b7694df48412092f53a differ
-diff --git a/fuzz/corpora/asn1/9fbc4d2689b68109cb841a86df63772955b44449 b/fuzz/corpora/asn1/9fbc4d2689b68109cb841a86df63772955b44449
+index 0000000..2356f51
+Binary files /dev/null and b/fuzz/corpora/asn1/f7b03bda30c90043c24b82aecf4a1312f8cfbb3f differ
+diff --git a/fuzz/corpora/asn1/f7d28bb25fbce84125f5382fe4f699af649e295a b/fuzz/corpora/asn1/f7d28bb25fbce84125f5382fe4f699af649e295a
 new file mode 100644
-index 000000000000..20a61c159842
-Binary files /dev/null and b/fuzz/corpora/asn1/9fbc4d2689b68109cb841a86df63772955b44449 differ
-diff --git a/fuzz/corpora/asn1/9fbf4ac476aad4d3adc9a10c02bbac772f840fae b/fuzz/corpora/asn1/9fbf4ac476aad4d3adc9a10c02bbac772f840fae
+index 0000000..477c3b4
+Binary files /dev/null and b/fuzz/corpora/asn1/f7d28bb25fbce84125f5382fe4f699af649e295a differ
+diff --git a/fuzz/corpora/asn1/f84cfead5f30a48c53ad8e5c5fc82e2b88dc48fd b/fuzz/corpora/asn1/f84cfead5f30a48c53ad8e5c5fc82e2b88dc48fd
 new file mode 100644
-index 000000000000..44a5ddf11a92
-Binary files /dev/null and b/fuzz/corpora/asn1/9fbf4ac476aad4d3adc9a10c02bbac772f840fae differ
-diff --git a/fuzz/corpora/asn1/9fcb51ac81740dc95a99e6fdfe9e98b9adbfa481 b/fuzz/corpora/asn1/9fcb51ac81740dc95a99e6fdfe9e98b9adbfa481
+index 0000000..546d34a
+Binary files /dev/null and b/fuzz/corpora/asn1/f84cfead5f30a48c53ad8e5c5fc82e2b88dc48fd differ
+diff --git a/fuzz/corpora/asn1/f8a23f012ce3c342c43cdd6b31429edecc59e1f7 b/fuzz/corpora/asn1/f8a23f012ce3c342c43cdd6b31429edecc59e1f7
 new file mode 100644
-index 000000000000..d29e6ca7a46f
-Binary files /dev/null and b/fuzz/corpora/asn1/9fcb51ac81740dc95a99e6fdfe9e98b9adbfa481 differ
-diff --git a/fuzz/corpora/asn1/9fd7ecdd5fa5037383a0ca16cfa09780406d4424 b/fuzz/corpora/asn1/9fd7ecdd5fa5037383a0ca16cfa09780406d4424
+index 0000000..0996588
+Binary files /dev/null and b/fuzz/corpora/asn1/f8a23f012ce3c342c43cdd6b31429edecc59e1f7 differ
+diff --git a/fuzz/corpora/asn1/f8ac46c04c63316ee6bbbc477edc5ed1d3939821 b/fuzz/corpora/asn1/f8ac46c04c63316ee6bbbc477edc5ed1d3939821
 new file mode 100644
-index 000000000000..0a78891d6dce
-Binary files /dev/null and b/fuzz/corpora/asn1/9fd7ecdd5fa5037383a0ca16cfa09780406d4424 differ
-diff --git a/fuzz/corpora/asn1/9fde1796ee4b4ad4fae1644b95f13b7f5bc308b8 b/fuzz/corpora/asn1/9fde1796ee4b4ad4fae1644b95f13b7f5bc308b8
+index 0000000..3155a3f
+Binary files /dev/null and b/fuzz/corpora/asn1/f8ac46c04c63316ee6bbbc477edc5ed1d3939821 differ
+diff --git a/fuzz/corpora/asn1/f8c0144fd47329eb1ba2f5dc02d8b366c9e1aca2 b/fuzz/corpora/asn1/f8c0144fd47329eb1ba2f5dc02d8b366c9e1aca2
 new file mode 100644
-index 000000000000..54f28907dd3e
-Binary files /dev/null and b/fuzz/corpora/asn1/9fde1796ee4b4ad4fae1644b95f13b7f5bc308b8 differ
-diff --git a/fuzz/corpora/asn1/a002d4213e4d9db742d2fae6498914ef915204ec b/fuzz/corpora/asn1/a002d4213e4d9db742d2fae6498914ef915204ec
+index 0000000..ce4c86e
+Binary files /dev/null and b/fuzz/corpora/asn1/f8c0144fd47329eb1ba2f5dc02d8b366c9e1aca2 differ
+diff --git a/fuzz/corpora/asn1/f8e0ddd946268f43a7d2091f61bdcc939b4d9476 b/fuzz/corpora/asn1/f8e0ddd946268f43a7d2091f61bdcc939b4d9476
 new file mode 100644
-index 000000000000..ce2e90de4621
-Binary files /dev/null and b/fuzz/corpora/asn1/a002d4213e4d9db742d2fae6498914ef915204ec differ
-diff --git a/fuzz/corpora/asn1/a00f74e647be7c45166b9093fd3554c4cc4b593a b/fuzz/corpora/asn1/a00f74e647be7c45166b9093fd3554c4cc4b593a
+index 0000000..1d8f099
+Binary files /dev/null and b/fuzz/corpora/asn1/f8e0ddd946268f43a7d2091f61bdcc939b4d9476 differ
+diff --git a/fuzz/corpora/asn1/f8fc6699ebf725e1dc915ba033ab282b167bae61 b/fuzz/corpora/asn1/f8fc6699ebf725e1dc915ba033ab282b167bae61
 new file mode 100644
-index 000000000000..518b2ce86529
-Binary files /dev/null and b/fuzz/corpora/asn1/a00f74e647be7c45166b9093fd3554c4cc4b593a differ
-diff --git a/fuzz/corpora/asn1/a07e5c031e42de34cfdf4c3af177bb1577f2fb91 b/fuzz/corpora/asn1/a07e5c031e42de34cfdf4c3af177bb1577f2fb91
+index 0000000..6a3ecb6
+Binary files /dev/null and b/fuzz/corpora/asn1/f8fc6699ebf725e1dc915ba033ab282b167bae61 differ
+diff --git a/fuzz/corpora/asn1/f913cc3ec0b243a02704dd0e7376b1d1e8422731 b/fuzz/corpora/asn1/f913cc3ec0b243a02704dd0e7376b1d1e8422731
 new file mode 100644
-index 000000000000..e63836b6a89f
-Binary files /dev/null and b/fuzz/corpora/asn1/a07e5c031e42de34cfdf4c3af177bb1577f2fb91 differ
-diff --git a/fuzz/corpora/asn1/a09bc4a4025cc3b02d07e509d430957a0bfdc9f2 b/fuzz/corpora/asn1/a09bc4a4025cc3b02d07e509d430957a0bfdc9f2
+index 0000000..7633253
+Binary files /dev/null and b/fuzz/corpora/asn1/f913cc3ec0b243a02704dd0e7376b1d1e8422731 differ
+diff --git a/fuzz/corpora/asn1/f96138334c80e7e496c6b34a034edb0ae5823a61 b/fuzz/corpora/asn1/f96138334c80e7e496c6b34a034edb0ae5823a61
 new file mode 100644
-index 000000000000..b093450f125f
-Binary files /dev/null and b/fuzz/corpora/asn1/a09bc4a4025cc3b02d07e509d430957a0bfdc9f2 differ
-diff --git a/fuzz/corpora/asn1/a0a70534c48109a7d67704211fd4df401ad9f54b b/fuzz/corpora/asn1/a0a70534c48109a7d67704211fd4df401ad9f54b
+index 0000000..ae4a39b
+Binary files /dev/null and b/fuzz/corpora/asn1/f96138334c80e7e496c6b34a034edb0ae5823a61 differ
+diff --git a/fuzz/corpora/asn1/f983fd75a288816513f68bf11f03da0e83bacda7 b/fuzz/corpora/asn1/f983fd75a288816513f68bf11f03da0e83bacda7
 new file mode 100644
-index 000000000000..c022b01e0464
-Binary files /dev/null and b/fuzz/corpora/asn1/a0a70534c48109a7d67704211fd4df401ad9f54b differ
-diff --git a/fuzz/corpora/asn1/a1642c50bf0d4282f19ba82aedbb191d5d06ba4c b/fuzz/corpora/asn1/a1642c50bf0d4282f19ba82aedbb191d5d06ba4c
+index 0000000..92057b0
+Binary files /dev/null and b/fuzz/corpora/asn1/f983fd75a288816513f68bf11f03da0e83bacda7 differ
+diff --git a/fuzz/corpora/asn1/fa292a35c769cb4e4276405fdb96aafb433d2826 b/fuzz/corpora/asn1/fa292a35c769cb4e4276405fdb96aafb433d2826
 new file mode 100644
-index 000000000000..99da321780be
-Binary files /dev/null and b/fuzz/corpora/asn1/a1642c50bf0d4282f19ba82aedbb191d5d06ba4c differ
-diff --git a/fuzz/corpora/asn1/a16a25ef90950697003c0faa1d0bc5ea6509f64e b/fuzz/corpora/asn1/a16a25ef90950697003c0faa1d0bc5ea6509f64e
+index 0000000..0e7019d
+Binary files /dev/null and b/fuzz/corpora/asn1/fa292a35c769cb4e4276405fdb96aafb433d2826 differ
+diff --git a/fuzz/corpora/asn1/fc8c0bae10d131bb6ac8a2778d6b77401016b490 b/fuzz/corpora/asn1/fc8c0bae10d131bb6ac8a2778d6b77401016b490
 new file mode 100644
-index 000000000000..10a8cd4e900e
-Binary files /dev/null and b/fuzz/corpora/asn1/a16a25ef90950697003c0faa1d0bc5ea6509f64e differ
-diff --git a/fuzz/corpora/asn1/a26014889cd671f49b19c470696e91bf1e00c1c7 b/fuzz/corpora/asn1/a26014889cd671f49b19c470696e91bf1e00c1c7
+index 0000000..fc33267
+Binary files /dev/null and b/fuzz/corpora/asn1/fc8c0bae10d131bb6ac8a2778d6b77401016b490 differ
+diff --git a/fuzz/corpora/asn1/fc8e104a0086ea94e323b8f0dea5026b1b53acb2 b/fuzz/corpora/asn1/fc8e104a0086ea94e323b8f0dea5026b1b53acb2
 new file mode 100644
-index 000000000000..78f039971612
-Binary files /dev/null and b/fuzz/corpora/asn1/a26014889cd671f49b19c470696e91bf1e00c1c7 differ
-diff --git a/fuzz/corpora/asn1/a2c63e31dd34ceb7390cc42ea61fbdb445eb4b60 b/fuzz/corpora/asn1/a2c63e31dd34ceb7390cc42ea61fbdb445eb4b60
+index 0000000..a97b5b8
+Binary files /dev/null and b/fuzz/corpora/asn1/fc8e104a0086ea94e323b8f0dea5026b1b53acb2 differ
+diff --git a/fuzz/corpora/asn1/fd5c8ced4c1dd0ddbf30238603e84b1778d66caf b/fuzz/corpora/asn1/fd5c8ced4c1dd0ddbf30238603e84b1778d66caf
 new file mode 100644
-index 000000000000..02e3726d1025
-Binary files /dev/null and b/fuzz/corpora/asn1/a2c63e31dd34ceb7390cc42ea61fbdb445eb4b60 differ
-diff --git a/fuzz/corpora/asn1/a2cbdcebcf8a302aa548eb9723dd23d27334386d b/fuzz/corpora/asn1/a2cbdcebcf8a302aa548eb9723dd23d27334386d
+index 0000000..af17200
+Binary files /dev/null and b/fuzz/corpora/asn1/fd5c8ced4c1dd0ddbf30238603e84b1778d66caf differ
+diff --git a/fuzz/corpora/asn1/fdd46cb2d8ec650cbed11d0a0b983812b85bcb1f b/fuzz/corpora/asn1/fdd46cb2d8ec650cbed11d0a0b983812b85bcb1f
 new file mode 100644
-index 000000000000..a429693a4515
-Binary files /dev/null and b/fuzz/corpora/asn1/a2cbdcebcf8a302aa548eb9723dd23d27334386d differ
-diff --git a/fuzz/corpora/asn1/a342a9f788670caa91037c972855bf562475eb47 b/fuzz/corpora/asn1/a342a9f788670caa91037c972855bf562475eb47
+index 0000000..d98edb5
+Binary files /dev/null and b/fuzz/corpora/asn1/fdd46cb2d8ec650cbed11d0a0b983812b85bcb1f differ
+diff --git a/fuzz/corpora/asn1/fde0087aacbd199b4efba12999fe9a34508f3734 b/fuzz/corpora/asn1/fde0087aacbd199b4efba12999fe9a34508f3734
 new file mode 100644
-index 000000000000..1d3eb5fe8f82
-Binary files /dev/null and b/fuzz/corpora/asn1/a342a9f788670caa91037c972855bf562475eb47 differ
-diff --git a/fuzz/corpora/asn1/a3ec72432565d9daccfef2341d7e9aeddba38a3e b/fuzz/corpora/asn1/a3ec72432565d9daccfef2341d7e9aeddba38a3e
+index 0000000..18c2aca
+Binary files /dev/null and b/fuzz/corpora/asn1/fde0087aacbd199b4efba12999fe9a34508f3734 differ
+diff --git a/fuzz/corpora/asn1/ff034f82fc46b5b43ae9f1eb939d728f89f8b1e9 b/fuzz/corpora/asn1/ff034f82fc46b5b43ae9f1eb939d728f89f8b1e9
 new file mode 100644
-index 000000000000..cf79d1cd4814
-Binary files /dev/null and b/fuzz/corpora/asn1/a3ec72432565d9daccfef2341d7e9aeddba38a3e differ
-diff --git a/fuzz/corpora/asn1/a4070b77485cf4b9e5d91dd71826f95abcca08d4 b/fuzz/corpora/asn1/a4070b77485cf4b9e5d91dd71826f95abcca08d4
+index 0000000..89ae94b
+Binary files /dev/null and b/fuzz/corpora/asn1/ff034f82fc46b5b43ae9f1eb939d728f89f8b1e9 differ
+diff --git a/fuzz/corpora/asn1/ff0afff318887d1f6970da547491f2eda17628f4 b/fuzz/corpora/asn1/ff0afff318887d1f6970da547491f2eda17628f4
 new file mode 100644
-index 000000000000..48610e8c98d2
-Binary files /dev/null and b/fuzz/corpora/asn1/a4070b77485cf4b9e5d91dd71826f95abcca08d4 differ
-diff --git a/fuzz/corpora/asn1/a45fdaa69025c8c49d32cc7df33778e5794ced43 b/fuzz/corpora/asn1/a45fdaa69025c8c49d32cc7df33778e5794ced43
+index 0000000..43a51f9
+Binary files /dev/null and b/fuzz/corpora/asn1/ff0afff318887d1f6970da547491f2eda17628f4 differ
+diff --git a/fuzz/corpora/asn1/ff3c26e1ed66adafafa7a59bff9993960172dcdb b/fuzz/corpora/asn1/ff3c26e1ed66adafafa7a59bff9993960172dcdb
 new file mode 100644
-index 000000000000..559406972b23
-Binary files /dev/null and b/fuzz/corpora/asn1/a45fdaa69025c8c49d32cc7df33778e5794ced43 differ
-diff --git a/fuzz/corpora/asn1/a4aae2f7619f096d6b7ac27ce17784314bf0db35 b/fuzz/corpora/asn1/a4aae2f7619f096d6b7ac27ce17784314bf0db35
+index 0000000..75fba0d
+Binary files /dev/null and b/fuzz/corpora/asn1/ff3c26e1ed66adafafa7a59bff9993960172dcdb differ
+diff --git a/fuzz/corpora/asn1/ff6b75fb93f69dbcf2bcd3fa7aa1280d47337217 b/fuzz/corpora/asn1/ff6b75fb93f69dbcf2bcd3fa7aa1280d47337217
 new file mode 100644
-index 000000000000..3c1fcac19ceb
-Binary files /dev/null and b/fuzz/corpora/asn1/a4aae2f7619f096d6b7ac27ce17784314bf0db35 differ
-diff --git a/fuzz/corpora/asn1/a5338467f4baaaf6aa748666e836b2d1dcd0bde0 b/fuzz/corpora/asn1/a5338467f4baaaf6aa748666e836b2d1dcd0bde0
+index 0000000..2d0e02c
+Binary files /dev/null and b/fuzz/corpora/asn1/ff6b75fb93f69dbcf2bcd3fa7aa1280d47337217 differ
+diff --git a/fuzz/corpora/asn1/ffbe27dfdb7897075d1ff49d6b0049a213b72dfc b/fuzz/corpora/asn1/ffbe27dfdb7897075d1ff49d6b0049a213b72dfc
 new file mode 100644
-index 000000000000..888a810f77d9
-Binary files /dev/null and b/fuzz/corpora/asn1/a5338467f4baaaf6aa748666e836b2d1dcd0bde0 differ
-diff --git a/fuzz/corpora/asn1/a58818b73e9c655f36211241a0c00a68f7432e70 b/fuzz/corpora/asn1/a58818b73e9c655f36211241a0c00a68f7432e70
+index 0000000..ecf95a6
+Binary files /dev/null and b/fuzz/corpora/asn1/ffbe27dfdb7897075d1ff49d6b0049a213b72dfc differ
+diff --git a/fuzz/corpora/asn1parse/0302630484b83092d4b22ace986b235a1b8e2e4a b/fuzz/corpora/asn1parse/0302630484b83092d4b22ace986b235a1b8e2e4a
 new file mode 100644
-index 000000000000..54374d5082f5
-Binary files /dev/null and b/fuzz/corpora/asn1/a58818b73e9c655f36211241a0c00a68f7432e70 differ
-diff --git a/fuzz/corpora/asn1/a59efa3fec5990340d4ba974b1010b64cc121336 b/fuzz/corpora/asn1/a59efa3fec5990340d4ba974b1010b64cc121336
+index 0000000..c56bf59
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0302630484b83092d4b22ace986b235a1b8e2e4a differ
+diff --git a/fuzz/corpora/asn1parse/03ce5cb9478d0f4fa9cf89bfbb112eea32d4faa5 b/fuzz/corpora/asn1parse/03ce5cb9478d0f4fa9cf89bfbb112eea32d4faa5
 new file mode 100644
-index 000000000000..620bf756510f
-Binary files /dev/null and b/fuzz/corpora/asn1/a59efa3fec5990340d4ba974b1010b64cc121336 differ
-diff --git a/fuzz/corpora/asn1/a6389b30f6e67ada0865c54c3b7ab3f39380a39f b/fuzz/corpora/asn1/a6389b30f6e67ada0865c54c3b7ab3f39380a39f
+index 0000000..e01ae61
+Binary files /dev/null and b/fuzz/corpora/asn1parse/03ce5cb9478d0f4fa9cf89bfbb112eea32d4faa5 differ
+diff --git a/fuzz/corpora/asn1parse/043212150d776edfcb896f364c3ad04a50d67ee9 b/fuzz/corpora/asn1parse/043212150d776edfcb896f364c3ad04a50d67ee9
 new file mode 100644
-index 000000000000..7a7693abc1f1
-Binary files /dev/null and b/fuzz/corpora/asn1/a6389b30f6e67ada0865c54c3b7ab3f39380a39f differ
-diff --git a/fuzz/corpora/asn1/a683d351dac82286e5fd7a07efba7db622e3c523 b/fuzz/corpora/asn1/a683d351dac82286e5fd7a07efba7db622e3c523
+index 0000000..55e0a90
+Binary files /dev/null and b/fuzz/corpora/asn1parse/043212150d776edfcb896f364c3ad04a50d67ee9 differ
+diff --git a/fuzz/corpora/asn1parse/06231118d5d0287480eb543eb247dc37ac2f7320 b/fuzz/corpora/asn1parse/06231118d5d0287480eb543eb247dc37ac2f7320
 new file mode 100644
-index 000000000000..6c6e6756d10b
-Binary files /dev/null and b/fuzz/corpora/asn1/a683d351dac82286e5fd7a07efba7db622e3c523 differ
-diff --git a/fuzz/corpora/asn1/a6bd9c34749749f848084bc63d0dc38293dbd61e b/fuzz/corpora/asn1/a6bd9c34749749f848084bc63d0dc38293dbd61e
+index 0000000..ccb8cf1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/06231118d5d0287480eb543eb247dc37ac2f7320 differ
+diff --git a/fuzz/corpora/asn1parse/07fd5dec705f378f0f9fda040a34a3913d042e00 b/fuzz/corpora/asn1parse/07fd5dec705f378f0f9fda040a34a3913d042e00
 new file mode 100644
-index 000000000000..899983b27f75
-Binary files /dev/null and b/fuzz/corpora/asn1/a6bd9c34749749f848084bc63d0dc38293dbd61e differ
-diff --git a/fuzz/corpora/asn1/a6ecd4258043273e86857fde2368f2cc8b3a3883 b/fuzz/corpora/asn1/a6ecd4258043273e86857fde2368f2cc8b3a3883
+index 0000000..308fe59
+Binary files /dev/null and b/fuzz/corpora/asn1parse/07fd5dec705f378f0f9fda040a34a3913d042e00 differ
+diff --git a/fuzz/corpora/asn1parse/088ad5e9936b65a595b22c723333c9be42eeff7d b/fuzz/corpora/asn1parse/088ad5e9936b65a595b22c723333c9be42eeff7d
 new file mode 100644
-index 000000000000..3a76214b4eb6
-Binary files /dev/null and b/fuzz/corpora/asn1/a6ecd4258043273e86857fde2368f2cc8b3a3883 differ
-diff --git a/fuzz/corpora/asn1/a6ef86425c6647b25c0d7ab64658237317906f23 b/fuzz/corpora/asn1/a6ef86425c6647b25c0d7ab64658237317906f23
+index 0000000..3a81222
+Binary files /dev/null and b/fuzz/corpora/asn1parse/088ad5e9936b65a595b22c723333c9be42eeff7d differ
+diff --git a/fuzz/corpora/asn1parse/08afd52e5767b4ac3a6f6c904f057b7eb4cae823 b/fuzz/corpora/asn1parse/08afd52e5767b4ac3a6f6c904f057b7eb4cae823
 new file mode 100644
-index 000000000000..7d289362c39b
-Binary files /dev/null and b/fuzz/corpora/asn1/a6ef86425c6647b25c0d7ab64658237317906f23 differ
-diff --git a/fuzz/corpora/asn1/a74c1066517fb1e9ccdc997bb3779100953b2a93 b/fuzz/corpora/asn1/a74c1066517fb1e9ccdc997bb3779100953b2a93
+index 0000000..83f0bec
+Binary files /dev/null and b/fuzz/corpora/asn1parse/08afd52e5767b4ac3a6f6c904f057b7eb4cae823 differ
+diff --git a/fuzz/corpora/asn1parse/0b004c117f49f96209e36ec055acfedf376b558f b/fuzz/corpora/asn1parse/0b004c117f49f96209e36ec055acfedf376b558f
 new file mode 100644
-index 000000000000..9ad149bda031
-Binary files /dev/null and b/fuzz/corpora/asn1/a74c1066517fb1e9ccdc997bb3779100953b2a93 differ
-diff --git a/fuzz/corpora/asn1/a7ce045004a02447d5c52e3db015be522742507b b/fuzz/corpora/asn1/a7ce045004a02447d5c52e3db015be522742507b
+index 0000000..7433427
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0b004c117f49f96209e36ec055acfedf376b558f differ
+diff --git a/fuzz/corpora/asn1parse/0b7545beebe036689bf899b47fbc8c64e8ba3507 b/fuzz/corpora/asn1parse/0b7545beebe036689bf899b47fbc8c64e8ba3507
 new file mode 100644
-index 000000000000..1d1cc86acdaf
-Binary files /dev/null and b/fuzz/corpora/asn1/a7ce045004a02447d5c52e3db015be522742507b differ
-diff --git a/fuzz/corpora/asn1/a8417902de60c59c4b6b57672306d7bd7234329c b/fuzz/corpora/asn1/a8417902de60c59c4b6b57672306d7bd7234329c
+index 0000000..77b6f67
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0b7545beebe036689bf899b47fbc8c64e8ba3507 differ
+diff --git a/fuzz/corpora/asn1parse/0c13726de36b584f8fd84873d6a76132a170eb9d b/fuzz/corpora/asn1parse/0c13726de36b584f8fd84873d6a76132a170eb9d
 new file mode 100644
-index 000000000000..d7d928b4b056
-Binary files /dev/null and b/fuzz/corpora/asn1/a8417902de60c59c4b6b57672306d7bd7234329c differ
-diff --git a/fuzz/corpora/asn1/a864dc0fd79e527f95ca8b43b10690af759e9a59 b/fuzz/corpora/asn1/a864dc0fd79e527f95ca8b43b10690af759e9a59
+index 0000000..15b0dc0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0c13726de36b584f8fd84873d6a76132a170eb9d differ
+diff --git a/fuzz/corpora/asn1parse/0c3a6d6a6a23c11652d992416fe432b5123dea56 b/fuzz/corpora/asn1parse/0c3a6d6a6a23c11652d992416fe432b5123dea56
 new file mode 100644
-index 000000000000..f4c31d3c69e0
-Binary files /dev/null and b/fuzz/corpora/asn1/a864dc0fd79e527f95ca8b43b10690af759e9a59 differ
-diff --git a/fuzz/corpora/asn1/a8b2c5eac8e3d066e55336f9081fe884845c9e98 b/fuzz/corpora/asn1/a8b2c5eac8e3d066e55336f9081fe884845c9e98
+index 0000000..eb3f5c6
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0c3a6d6a6a23c11652d992416fe432b5123dea56 differ
+diff --git a/fuzz/corpora/asn1parse/0c43e098ac9e066aac29f6d1747d0f00227f59ba b/fuzz/corpora/asn1parse/0c43e098ac9e066aac29f6d1747d0f00227f59ba
 new file mode 100644
-index 000000000000..6e3e1e82219d
-Binary files /dev/null and b/fuzz/corpora/asn1/a8b2c5eac8e3d066e55336f9081fe884845c9e98 differ
-diff --git a/fuzz/corpora/asn1/a8d70f617572fa8a37de2ef109b55a30b8ae8c72 b/fuzz/corpora/asn1/a8d70f617572fa8a37de2ef109b55a30b8ae8c72
+index 0000000..273ae7e
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0c43e098ac9e066aac29f6d1747d0f00227f59ba differ
+diff --git a/fuzz/corpora/asn1parse/0d3abaec17c86f74b1da9680432348d66d185663 b/fuzz/corpora/asn1parse/0d3abaec17c86f74b1da9680432348d66d185663
 new file mode 100644
-index 000000000000..2aa79f0ab0d5
-Binary files /dev/null and b/fuzz/corpora/asn1/a8d70f617572fa8a37de2ef109b55a30b8ae8c72 differ
-diff --git a/fuzz/corpora/asn1/a8e77b676828a43dcbeb882e5f18d37fbfb677e4 b/fuzz/corpora/asn1/a8e77b676828a43dcbeb882e5f18d37fbfb677e4
+index 0000000..8f9b061
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0d3abaec17c86f74b1da9680432348d66d185663 differ
+diff --git a/fuzz/corpora/asn1parse/0d7872c1aba243907c006412582186ed4fb8ff7f b/fuzz/corpora/asn1parse/0d7872c1aba243907c006412582186ed4fb8ff7f
 new file mode 100644
-index 000000000000..29984e39b180
-Binary files /dev/null and b/fuzz/corpora/asn1/a8e77b676828a43dcbeb882e5f18d37fbfb677e4 differ
-diff --git a/fuzz/corpora/asn1/a8f0616b94fe40936a9f673a9fcd2389f3ea5363 b/fuzz/corpora/asn1/a8f0616b94fe40936a9f673a9fcd2389f3ea5363
+index 0000000..f83b4e1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0d7872c1aba243907c006412582186ed4fb8ff7f differ
+diff --git a/fuzz/corpora/asn1parse/0d9a00c5f5070abf35ba5f0995be72d554851627 b/fuzz/corpora/asn1parse/0d9a00c5f5070abf35ba5f0995be72d554851627
 new file mode 100644
-index 000000000000..997da27c9c90
-Binary files /dev/null and b/fuzz/corpora/asn1/a8f0616b94fe40936a9f673a9fcd2389f3ea5363 differ
-diff --git a/fuzz/corpora/asn1/a92986dd6c2b4128f3a076cd88f0f912088edbc7 b/fuzz/corpora/asn1/a92986dd6c2b4128f3a076cd88f0f912088edbc7
+index 0000000..538c535
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0d9a00c5f5070abf35ba5f0995be72d554851627 differ
+diff --git a/fuzz/corpora/asn1parse/0ef84e2873342dfc9b4f91a732ac21f7e3ebdc77 b/fuzz/corpora/asn1parse/0ef84e2873342dfc9b4f91a732ac21f7e3ebdc77
 new file mode 100644
-index 000000000000..b01fe7257cf5
-Binary files /dev/null and b/fuzz/corpora/asn1/a92986dd6c2b4128f3a076cd88f0f912088edbc7 differ
-diff --git a/fuzz/corpora/asn1/a92d36595ec955f5029a4dd899463236160940c1 b/fuzz/corpora/asn1/a92d36595ec955f5029a4dd899463236160940c1
+index 0000000..ad68b76
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0ef84e2873342dfc9b4f91a732ac21f7e3ebdc77 differ
+diff --git a/fuzz/corpora/asn1parse/0f15db777a0272c5e089f1508a6cd2e064df7b7e b/fuzz/corpora/asn1parse/0f15db777a0272c5e089f1508a6cd2e064df7b7e
 new file mode 100644
-index 000000000000..b78d3760e747
-Binary files /dev/null and b/fuzz/corpora/asn1/a92d36595ec955f5029a4dd899463236160940c1 differ
-diff --git a/fuzz/corpora/asn1/a9ecda2a8770f3337d649388cfe1e9f38e96993f b/fuzz/corpora/asn1/a9ecda2a8770f3337d649388cfe1e9f38e96993f
+index 0000000..a601a5c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0f15db777a0272c5e089f1508a6cd2e064df7b7e differ
+diff --git a/fuzz/corpora/asn1parse/0f65f726a522ad9ccc99ba767d8046f5524a8b82 b/fuzz/corpora/asn1parse/0f65f726a522ad9ccc99ba767d8046f5524a8b82
 new file mode 100644
-index 000000000000..bcd62117aba0
-Binary files /dev/null and b/fuzz/corpora/asn1/a9ecda2a8770f3337d649388cfe1e9f38e96993f differ
-diff --git a/fuzz/corpora/asn1/aa17c0d5ddc38f48d3264e756262b9fb9a71841f b/fuzz/corpora/asn1/aa17c0d5ddc38f48d3264e756262b9fb9a71841f
+index 0000000..0d8cb49
+Binary files /dev/null and b/fuzz/corpora/asn1parse/0f65f726a522ad9ccc99ba767d8046f5524a8b82 differ
+diff --git a/fuzz/corpora/asn1parse/10b92d1dafe9b5373c58e5d575cdeff240112123 b/fuzz/corpora/asn1parse/10b92d1dafe9b5373c58e5d575cdeff240112123
 new file mode 100644
-index 000000000000..1bcf96334e0b
-Binary files /dev/null and b/fuzz/corpora/asn1/aa17c0d5ddc38f48d3264e756262b9fb9a71841f differ
-diff --git a/fuzz/corpora/asn1/aa6b0782916854a87c63f762f7810abb3d915fc3 b/fuzz/corpora/asn1/aa6b0782916854a87c63f762f7810abb3d915fc3
+index 0000000..3658ae9
+Binary files /dev/null and b/fuzz/corpora/asn1parse/10b92d1dafe9b5373c58e5d575cdeff240112123 differ
+diff --git a/fuzz/corpora/asn1parse/125c107782e144ac2624c8d8a7d8ccea6c75072f b/fuzz/corpora/asn1parse/125c107782e144ac2624c8d8a7d8ccea6c75072f
 new file mode 100644
-index 000000000000..6ab413f7e51b
-Binary files /dev/null and b/fuzz/corpora/asn1/aa6b0782916854a87c63f762f7810abb3d915fc3 differ
-diff --git a/fuzz/corpora/asn1/aa93d1d31bf61d7c41b398859ee9d83044ae1fa0 b/fuzz/corpora/asn1/aa93d1d31bf61d7c41b398859ee9d83044ae1fa0
+index 0000000..0b72d8c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/125c107782e144ac2624c8d8a7d8ccea6c75072f differ
+diff --git a/fuzz/corpora/asn1parse/12c269f44807a3993a66695328e97a87ad42f558 b/fuzz/corpora/asn1parse/12c269f44807a3993a66695328e97a87ad42f558
 new file mode 100644
-index 000000000000..14fb147e717e
-Binary files /dev/null and b/fuzz/corpora/asn1/aa93d1d31bf61d7c41b398859ee9d83044ae1fa0 differ
-diff --git a/fuzz/corpora/asn1/aab6dbccc13a9f9acbbba4ad42a7009343098ea5 b/fuzz/corpora/asn1/aab6dbccc13a9f9acbbba4ad42a7009343098ea5
+index 0000000..d547b82
+Binary files /dev/null and b/fuzz/corpora/asn1parse/12c269f44807a3993a66695328e97a87ad42f558 differ
+diff --git a/fuzz/corpora/asn1parse/13bb95716a09d43d42d0ba522d941e82a778706f b/fuzz/corpora/asn1parse/13bb95716a09d43d42d0ba522d941e82a778706f
 new file mode 100644
-index 000000000000..819106c39159
-Binary files /dev/null and b/fuzz/corpora/asn1/aab6dbccc13a9f9acbbba4ad42a7009343098ea5 differ
-diff --git a/fuzz/corpora/asn1/aac965638bea9c6a6619b099c40dc82a8e14e59e b/fuzz/corpora/asn1/aac965638bea9c6a6619b099c40dc82a8e14e59e
+index 0000000..ce9b5e8
+Binary files /dev/null and b/fuzz/corpora/asn1parse/13bb95716a09d43d42d0ba522d941e82a778706f differ
+diff --git a/fuzz/corpora/asn1parse/1489f923c4dca729178b3e3233458550d8dddf29 b/fuzz/corpora/asn1parse/1489f923c4dca729178b3e3233458550d8dddf29
 new file mode 100644
-index 000000000000..557bc90b84af
-Binary files /dev/null and b/fuzz/corpora/asn1/aac965638bea9c6a6619b099c40dc82a8e14e59e differ
-diff --git a/fuzz/corpora/asn1/ab21f43f41ce88973e912936629d1d144aa9e154 b/fuzz/corpora/asn1/ab21f43f41ce88973e912936629d1d144aa9e154
+index 0000000..09f370e
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1489f923c4dca729178b3e3233458550d8dddf29 differ
+diff --git a/fuzz/corpora/asn1parse/14cdf9a6f84d57c8f08ca4594cca37102b7b98ee b/fuzz/corpora/asn1parse/14cdf9a6f84d57c8f08ca4594cca37102b7b98ee
 new file mode 100644
-index 000000000000..20d7c136e1cf
-Binary files /dev/null and b/fuzz/corpora/asn1/ab21f43f41ce88973e912936629d1d144aa9e154 differ
-diff --git a/fuzz/corpora/asn1/ab2a9302f8e969d91f4d4f93937bc6e1133e0dcd b/fuzz/corpora/asn1/ab2a9302f8e969d91f4d4f93937bc6e1133e0dcd
+index 0000000..f40adaa
+Binary files /dev/null and b/fuzz/corpora/asn1parse/14cdf9a6f84d57c8f08ca4594cca37102b7b98ee differ
+diff --git a/fuzz/corpora/asn1parse/160a4d6a0ff94a82d61baf040b5da29e16b6acdc b/fuzz/corpora/asn1parse/160a4d6a0ff94a82d61baf040b5da29e16b6acdc
 new file mode 100644
-index 000000000000..97f1c6179272
-Binary files /dev/null and b/fuzz/corpora/asn1/ab2a9302f8e969d91f4d4f93937bc6e1133e0dcd differ
-diff --git a/fuzz/corpora/asn1/abfd6900ca58ad6c02f2ed690b02149777487fda b/fuzz/corpora/asn1/abfd6900ca58ad6c02f2ed690b02149777487fda
+index 0000000..b860b51
+Binary files /dev/null and b/fuzz/corpora/asn1parse/160a4d6a0ff94a82d61baf040b5da29e16b6acdc differ
+diff --git a/fuzz/corpora/asn1parse/162a6cf964559f0eb33cd6055e328e80c171871b b/fuzz/corpora/asn1parse/162a6cf964559f0eb33cd6055e328e80c171871b
 new file mode 100644
-index 000000000000..acf2fb97b036
-Binary files /dev/null and b/fuzz/corpora/asn1/abfd6900ca58ad6c02f2ed690b02149777487fda differ
-diff --git a/fuzz/corpora/asn1/ac082f408bcb96a5a8bbc4bfc3885454c972a7f5 b/fuzz/corpora/asn1/ac082f408bcb96a5a8bbc4bfc3885454c972a7f5
+index 0000000..39d9d27
+Binary files /dev/null and b/fuzz/corpora/asn1parse/162a6cf964559f0eb33cd6055e328e80c171871b differ
+diff --git a/fuzz/corpora/asn1parse/16354324f7b68152b53b1e5023b4751aa7ac3f21 b/fuzz/corpora/asn1parse/16354324f7b68152b53b1e5023b4751aa7ac3f21
 new file mode 100644
-index 000000000000..27aab2005864
-Binary files /dev/null and b/fuzz/corpora/asn1/ac082f408bcb96a5a8bbc4bfc3885454c972a7f5 differ
-diff --git a/fuzz/corpora/asn1/ac43297c80ceafc83bc8d2614f627959a8ab60d3 b/fuzz/corpora/asn1/ac43297c80ceafc83bc8d2614f627959a8ab60d3
+index 0000000..28f56cc
+Binary files /dev/null and b/fuzz/corpora/asn1parse/16354324f7b68152b53b1e5023b4751aa7ac3f21 differ
+diff --git a/fuzz/corpora/asn1parse/16b17dbe0489884b43ae117268c6eac1b41daf2e b/fuzz/corpora/asn1parse/16b17dbe0489884b43ae117268c6eac1b41daf2e
 new file mode 100644
-index 000000000000..f42c712cf7b1
-Binary files /dev/null and b/fuzz/corpora/asn1/ac43297c80ceafc83bc8d2614f627959a8ab60d3 differ
-diff --git a/fuzz/corpora/asn1/ac4a51d8c3ef323eb6906f764f5b988e79d1c8bf b/fuzz/corpora/asn1/ac4a51d8c3ef323eb6906f764f5b988e79d1c8bf
+index 0000000..ac88008
+Binary files /dev/null and b/fuzz/corpora/asn1parse/16b17dbe0489884b43ae117268c6eac1b41daf2e differ
+diff --git a/fuzz/corpora/asn1parse/16cc7e00142568b19f260c7bcb50f804b70f35f1 b/fuzz/corpora/asn1parse/16cc7e00142568b19f260c7bcb50f804b70f35f1
 new file mode 100644
-index 000000000000..faa0e2331b35
-Binary files /dev/null and b/fuzz/corpora/asn1/ac4a51d8c3ef323eb6906f764f5b988e79d1c8bf differ
-diff --git a/fuzz/corpora/asn1/ad07d38c3b8d7059eb0454fc036e59647de963cf b/fuzz/corpora/asn1/ad07d38c3b8d7059eb0454fc036e59647de963cf
+index 0000000..dce09a8
+Binary files /dev/null and b/fuzz/corpora/asn1parse/16cc7e00142568b19f260c7bcb50f804b70f35f1 differ
+diff --git a/fuzz/corpora/asn1parse/1739ff1b5b47bf35d2d10ca6b64ccb8658759c98 b/fuzz/corpora/asn1parse/1739ff1b5b47bf35d2d10ca6b64ccb8658759c98
 new file mode 100644
-index 000000000000..dfb92de43266
-Binary files /dev/null and b/fuzz/corpora/asn1/ad07d38c3b8d7059eb0454fc036e59647de963cf differ
-diff --git a/fuzz/corpora/asn1/ade7917722f6e26ad6de148704a9a3bb99edb943 b/fuzz/corpora/asn1/ade7917722f6e26ad6de148704a9a3bb99edb943
+index 0000000..684f15d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1739ff1b5b47bf35d2d10ca6b64ccb8658759c98 differ
+diff --git a/fuzz/corpora/asn1parse/17bd7186e1fc55bbbaed50ca24311d690f2da29b b/fuzz/corpora/asn1parse/17bd7186e1fc55bbbaed50ca24311d690f2da29b
 new file mode 100644
-index 000000000000..2027219ab176
-Binary files /dev/null and b/fuzz/corpora/asn1/ade7917722f6e26ad6de148704a9a3bb99edb943 differ
-diff --git a/fuzz/corpora/asn1/ae024b05e093c126a3874f656343c958800f8085 b/fuzz/corpora/asn1/ae024b05e093c126a3874f656343c958800f8085
+index 0000000..242083b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/17bd7186e1fc55bbbaed50ca24311d690f2da29b differ
+diff --git a/fuzz/corpora/asn1parse/17e32e60699709ed27c86ca6ef5f4cc7c1d2bd4e b/fuzz/corpora/asn1parse/17e32e60699709ed27c86ca6ef5f4cc7c1d2bd4e
 new file mode 100644
-index 000000000000..6791fd9e3694
-Binary files /dev/null and b/fuzz/corpora/asn1/ae024b05e093c126a3874f656343c958800f8085 differ
-diff --git a/fuzz/corpora/asn1/ae32a0d50a64d576ebccfbd9bed50f1da9e1708e b/fuzz/corpora/asn1/ae32a0d50a64d576ebccfbd9bed50f1da9e1708e
+index 0000000..bb72c28
+Binary files /dev/null and b/fuzz/corpora/asn1parse/17e32e60699709ed27c86ca6ef5f4cc7c1d2bd4e differ
+diff --git a/fuzz/corpora/asn1parse/1afbec3c8949562b299d5e473559a79c8fb3dc5c b/fuzz/corpora/asn1parse/1afbec3c8949562b299d5e473559a79c8fb3dc5c
 new file mode 100644
-index 000000000000..7a7686886ff3
-Binary files /dev/null and b/fuzz/corpora/asn1/ae32a0d50a64d576ebccfbd9bed50f1da9e1708e differ
-diff --git a/fuzz/corpora/asn1/ae5094270f5aa8d0c3b7b81023740e3374a6a252 b/fuzz/corpora/asn1/ae5094270f5aa8d0c3b7b81023740e3374a6a252
+index 0000000..f721f1f
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1afbec3c8949562b299d5e473559a79c8fb3dc5c differ
+diff --git a/fuzz/corpora/asn1parse/1b8b3fe4764eadfb2f0fad054155fcb757f58836 b/fuzz/corpora/asn1parse/1b8b3fe4764eadfb2f0fad054155fcb757f58836
 new file mode 100644
-index 000000000000..0f2f3fce0422
-Binary files /dev/null and b/fuzz/corpora/asn1/ae5094270f5aa8d0c3b7b81023740e3374a6a252 differ
-diff --git a/fuzz/corpora/asn1/ae994f12ed9e5ff7d2386f9b2d7109f69fc4766a b/fuzz/corpora/asn1/ae994f12ed9e5ff7d2386f9b2d7109f69fc4766a
+index 0000000..3692b1d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1b8b3fe4764eadfb2f0fad054155fcb757f58836 differ
+diff --git a/fuzz/corpora/asn1parse/1c872d648467a24940828da4fad31849a48d359b b/fuzz/corpora/asn1parse/1c872d648467a24940828da4fad31849a48d359b
 new file mode 100644
-index 000000000000..c8fa106041a1
-Binary files /dev/null and b/fuzz/corpora/asn1/ae994f12ed9e5ff7d2386f9b2d7109f69fc4766a differ
-diff --git a/fuzz/corpora/asn1/aec13fc131bc8dbd4f5fa80a51c4725df0631248 b/fuzz/corpora/asn1/aec13fc131bc8dbd4f5fa80a51c4725df0631248
+index 0000000..07a0df5
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1c872d648467a24940828da4fad31849a48d359b differ
+diff --git a/fuzz/corpora/asn1parse/1d0a87b0fff12d89b84137f8a518dc0d321aa2ea b/fuzz/corpora/asn1parse/1d0a87b0fff12d89b84137f8a518dc0d321aa2ea
 new file mode 100644
-index 000000000000..77eb631b856b
-Binary files /dev/null and b/fuzz/corpora/asn1/aec13fc131bc8dbd4f5fa80a51c4725df0631248 differ
-diff --git a/fuzz/corpora/asn1/aec83ac2b4a3473c885bae268667a91572e56e93 b/fuzz/corpora/asn1/aec83ac2b4a3473c885bae268667a91572e56e93
+index 0000000..6429cf1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1d0a87b0fff12d89b84137f8a518dc0d321aa2ea differ
+diff --git a/fuzz/corpora/asn1parse/1d572206a40b1056acdd79a679e59ab973cbec3b b/fuzz/corpora/asn1parse/1d572206a40b1056acdd79a679e59ab973cbec3b
 new file mode 100644
-index 000000000000..4d78d4d8c3ff
-Binary files /dev/null and b/fuzz/corpora/asn1/aec83ac2b4a3473c885bae268667a91572e56e93 differ
-diff --git a/fuzz/corpora/asn1/aed49402bd0f7b5f0708422927dfcd6dcd9d91b7 b/fuzz/corpora/asn1/aed49402bd0f7b5f0708422927dfcd6dcd9d91b7
+index 0000000..061819c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1d572206a40b1056acdd79a679e59ab973cbec3b differ
+diff --git a/fuzz/corpora/asn1parse/1e22b79efd8a3d3c0cbf8b9d8bf05fc5503cc587 b/fuzz/corpora/asn1parse/1e22b79efd8a3d3c0cbf8b9d8bf05fc5503cc587
 new file mode 100644
-index 000000000000..5d7116a44633
-Binary files /dev/null and b/fuzz/corpora/asn1/aed49402bd0f7b5f0708422927dfcd6dcd9d91b7 differ
-diff --git a/fuzz/corpora/asn1/af29fa0cc557ee1f98479cf4ffdb3a1a164eac07 b/fuzz/corpora/asn1/af29fa0cc557ee1f98479cf4ffdb3a1a164eac07
+index 0000000..43faf6e
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1e22b79efd8a3d3c0cbf8b9d8bf05fc5503cc587 differ
+diff --git a/fuzz/corpora/asn1parse/1eac0a5650c7bd04d7d29d39ed58f244855c162b b/fuzz/corpora/asn1parse/1eac0a5650c7bd04d7d29d39ed58f244855c162b
 new file mode 100644
-index 000000000000..0901c73f089e
-Binary files /dev/null and b/fuzz/corpora/asn1/af29fa0cc557ee1f98479cf4ffdb3a1a164eac07 differ
-diff --git a/fuzz/corpora/asn1/af48e23e25b287edeb3f7d0f874cb9a5af945a98 b/fuzz/corpora/asn1/af48e23e25b287edeb3f7d0f874cb9a5af945a98
+index 0000000..8e04a47
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1eac0a5650c7bd04d7d29d39ed58f244855c162b differ
+diff --git a/fuzz/corpora/asn1parse/1eb9f5c867b188e22ae985023c31259a0ae18a9d b/fuzz/corpora/asn1parse/1eb9f5c867b188e22ae985023c31259a0ae18a9d
 new file mode 100644
-index 000000000000..1d141b1eac4b
-Binary files /dev/null and b/fuzz/corpora/asn1/af48e23e25b287edeb3f7d0f874cb9a5af945a98 differ
-diff --git a/fuzz/corpora/asn1/b0991599fab9b95ef5bfc54f6c88d2ab54517142 b/fuzz/corpora/asn1/b0991599fab9b95ef5bfc54f6c88d2ab54517142
+index 0000000..bb88752
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1eb9f5c867b188e22ae985023c31259a0ae18a9d differ
+diff --git a/fuzz/corpora/asn1parse/1f13c38ddf2d25ffc65c9a8fa90eb54b2de02416 b/fuzz/corpora/asn1parse/1f13c38ddf2d25ffc65c9a8fa90eb54b2de02416
 new file mode 100644
-index 000000000000..c5ee1da1d5f3
-Binary files /dev/null and b/fuzz/corpora/asn1/b0991599fab9b95ef5bfc54f6c88d2ab54517142 differ
-diff --git a/fuzz/corpora/asn1/b0a3d696f5ecd86e4405c446c694283997bfc5e5 b/fuzz/corpora/asn1/b0a3d696f5ecd86e4405c446c694283997bfc5e5
+index 0000000..907ebff
+Binary files /dev/null and b/fuzz/corpora/asn1parse/1f13c38ddf2d25ffc65c9a8fa90eb54b2de02416 differ
+diff --git a/fuzz/corpora/asn1parse/203c349f5066f5f0f106a9d47192879fdc184381 b/fuzz/corpora/asn1parse/203c349f5066f5f0f106a9d47192879fdc184381
 new file mode 100644
-index 000000000000..6c6457515f92
-Binary files /dev/null and b/fuzz/corpora/asn1/b0a3d696f5ecd86e4405c446c694283997bfc5e5 differ
-diff --git a/fuzz/corpora/asn1/b0a90c44a853c40af8ff74d8150be868f06608c3 b/fuzz/corpora/asn1/b0a90c44a853c40af8ff74d8150be868f06608c3
+index 0000000..c577849
+Binary files /dev/null and b/fuzz/corpora/asn1parse/203c349f5066f5f0f106a9d47192879fdc184381 differ
+diff --git a/fuzz/corpora/asn1parse/20e8a2b4be019cf38515dbd31c5f28f5c080a5d9 b/fuzz/corpora/asn1parse/20e8a2b4be019cf38515dbd31c5f28f5c080a5d9
 new file mode 100644
-index 000000000000..ee482e467244
-Binary files /dev/null and b/fuzz/corpora/asn1/b0a90c44a853c40af8ff74d8150be868f06608c3 differ
-diff --git a/fuzz/corpora/asn1/b0e50ed9b7ff5871b54c599a230b5b4b0b281eca b/fuzz/corpora/asn1/b0e50ed9b7ff5871b54c599a230b5b4b0b281eca
+index 0000000..97eb99e
+Binary files /dev/null and b/fuzz/corpora/asn1parse/20e8a2b4be019cf38515dbd31c5f28f5c080a5d9 differ
+diff --git a/fuzz/corpora/asn1parse/21518ea8cb1737fc2699de1470018dfb6c22675f b/fuzz/corpora/asn1parse/21518ea8cb1737fc2699de1470018dfb6c22675f
 new file mode 100644
-index 000000000000..e17e025e2a79
-Binary files /dev/null and b/fuzz/corpora/asn1/b0e50ed9b7ff5871b54c599a230b5b4b0b281eca differ
-diff --git a/fuzz/corpora/asn1/b0f8b37f921f06a313a481558a7aee2975d54feb b/fuzz/corpora/asn1/b0f8b37f921f06a313a481558a7aee2975d54feb
+index 0000000..5c2c9c7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/21518ea8cb1737fc2699de1470018dfb6c22675f differ
+diff --git a/fuzz/corpora/asn1parse/2179dcdc49396a298f76393d9dc9e425067be632 b/fuzz/corpora/asn1parse/2179dcdc49396a298f76393d9dc9e425067be632
 new file mode 100644
-index 000000000000..c5d179fbf00a
-Binary files /dev/null and b/fuzz/corpora/asn1/b0f8b37f921f06a313a481558a7aee2975d54feb differ
-diff --git a/fuzz/corpora/asn1/b183d3d9f06b410062edea83e911f7928198075b b/fuzz/corpora/asn1/b183d3d9f06b410062edea83e911f7928198075b
+index 0000000..4943bb7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2179dcdc49396a298f76393d9dc9e425067be632 differ
+diff --git a/fuzz/corpora/asn1parse/218af3a838b5cb7eaed5a80e23b6a03762da07d4 b/fuzz/corpora/asn1parse/218af3a838b5cb7eaed5a80e23b6a03762da07d4
 new file mode 100644
-index 000000000000..0f00a9026ff8
-Binary files /dev/null and b/fuzz/corpora/asn1/b183d3d9f06b410062edea83e911f7928198075b differ
-diff --git a/fuzz/corpora/asn1/b1b44559ed5788dcd9355f26f6212788f0163d1e b/fuzz/corpora/asn1/b1b44559ed5788dcd9355f26f6212788f0163d1e
+index 0000000..607394a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/218af3a838b5cb7eaed5a80e23b6a03762da07d4 differ
+diff --git a/fuzz/corpora/asn1parse/21b334b7359fd1ccae5d51d7063172600400d761 b/fuzz/corpora/asn1parse/21b334b7359fd1ccae5d51d7063172600400d761
 new file mode 100644
-index 000000000000..a82569fd8c76
-Binary files /dev/null and b/fuzz/corpora/asn1/b1b44559ed5788dcd9355f26f6212788f0163d1e differ
-diff --git a/fuzz/corpora/asn1/b1e079bd737c8cc2bd9f9c15fd1f46d14e70d2cc b/fuzz/corpora/asn1/b1e079bd737c8cc2bd9f9c15fd1f46d14e70d2cc
+index 0000000..c9f5c53
+Binary files /dev/null and b/fuzz/corpora/asn1parse/21b334b7359fd1ccae5d51d7063172600400d761 differ
+diff --git a/fuzz/corpora/asn1parse/2202efa17c0fd94b1da47d92fc3451c51c546a83 b/fuzz/corpora/asn1parse/2202efa17c0fd94b1da47d92fc3451c51c546a83
 new file mode 100644
-index 000000000000..c4eac3d78886
-Binary files /dev/null and b/fuzz/corpora/asn1/b1e079bd737c8cc2bd9f9c15fd1f46d14e70d2cc differ
-diff --git a/fuzz/corpora/asn1/b2076cbd4f70750c75fda586c2ea1f2a027c2658 b/fuzz/corpora/asn1/b2076cbd4f70750c75fda586c2ea1f2a027c2658
+index 0000000..ba8bc13
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2202efa17c0fd94b1da47d92fc3451c51c546a83 differ
+diff --git a/fuzz/corpora/asn1parse/23502e02c75d278f15be1670eab512acb7e342c1 b/fuzz/corpora/asn1parse/23502e02c75d278f15be1670eab512acb7e342c1
 new file mode 100644
-index 000000000000..ebca25060c07
-Binary files /dev/null and b/fuzz/corpora/asn1/b2076cbd4f70750c75fda586c2ea1f2a027c2658 differ
-diff --git a/fuzz/corpora/asn1/b24eecf92571d4291104da103d47e051778b42d1 b/fuzz/corpora/asn1/b24eecf92571d4291104da103d47e051778b42d1
+index 0000000..85bbe0a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/23502e02c75d278f15be1670eab512acb7e342c1 differ
+diff --git a/fuzz/corpora/asn1parse/2522d0402786f54548338848e634da0d4097e749 b/fuzz/corpora/asn1parse/2522d0402786f54548338848e634da0d4097e749
 new file mode 100644
-index 000000000000..c654dc723f9e
-Binary files /dev/null and b/fuzz/corpora/asn1/b24eecf92571d4291104da103d47e051778b42d1 differ
-diff --git a/fuzz/corpora/asn1/b25907ba8f4704639af8a2c7a1d574c857a12c6f b/fuzz/corpora/asn1/b25907ba8f4704639af8a2c7a1d574c857a12c6f
+index 0000000..7eaa3c0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2522d0402786f54548338848e634da0d4097e749 differ
+diff --git a/fuzz/corpora/asn1parse/25a02e8a73c825d25fa23f2ab182ad44da504681 b/fuzz/corpora/asn1parse/25a02e8a73c825d25fa23f2ab182ad44da504681
 new file mode 100644
-index 000000000000..32ac5d9c7414
-Binary files /dev/null and b/fuzz/corpora/asn1/b25907ba8f4704639af8a2c7a1d574c857a12c6f differ
-diff --git a/fuzz/corpora/asn1/b284165f0a9dba8f191fed7e7e6bc6812fbf46c2 b/fuzz/corpora/asn1/b284165f0a9dba8f191fed7e7e6bc6812fbf46c2
+index 0000000..e591e7c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/25a02e8a73c825d25fa23f2ab182ad44da504681 differ
+diff --git a/fuzz/corpora/asn1parse/2735e3edb439342b57a4ef5df88dfe289fcf9c14 b/fuzz/corpora/asn1parse/2735e3edb439342b57a4ef5df88dfe289fcf9c14
 new file mode 100644
-index 000000000000..b2f443b3e5a4
-Binary files /dev/null and b/fuzz/corpora/asn1/b284165f0a9dba8f191fed7e7e6bc6812fbf46c2 differ
-diff --git a/fuzz/corpora/asn1/b2f462e0391ca09eaa516286329298e8bd1e4fa7 b/fuzz/corpora/asn1/b2f462e0391ca09eaa516286329298e8bd1e4fa7
+index 0000000..ec06ecc
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2735e3edb439342b57a4ef5df88dfe289fcf9c14 differ
+diff --git a/fuzz/corpora/asn1parse/2742754bf28857232c28809bd2842e51a9c7842c b/fuzz/corpora/asn1parse/2742754bf28857232c28809bd2842e51a9c7842c
 new file mode 100644
-index 000000000000..bcc55c7c53fd
-Binary files /dev/null and b/fuzz/corpora/asn1/b2f462e0391ca09eaa516286329298e8bd1e4fa7 differ
-diff --git a/fuzz/corpora/asn1/b30c68bd218e02276428db9d95b6ce2b3bac1bca b/fuzz/corpora/asn1/b30c68bd218e02276428db9d95b6ce2b3bac1bca
+index 0000000..dc4c8e4
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2742754bf28857232c28809bd2842e51a9c7842c differ
+diff --git a/fuzz/corpora/asn1parse/2773df93849ba08bacf4933ce0c433b035b81ac2 b/fuzz/corpora/asn1parse/2773df93849ba08bacf4933ce0c433b035b81ac2
 new file mode 100644
-index 000000000000..315be27ae31e
-Binary files /dev/null and b/fuzz/corpora/asn1/b30c68bd218e02276428db9d95b6ce2b3bac1bca differ
-diff --git a/fuzz/corpora/asn1/b3fb646a22a19dff0822effbe4a00decfdbdf699 b/fuzz/corpora/asn1/b3fb646a22a19dff0822effbe4a00decfdbdf699
+index 0000000..6ea3d26
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2773df93849ba08bacf4933ce0c433b035b81ac2 differ
+diff --git a/fuzz/corpora/asn1parse/28e61f143cc0fa72e7fe8d112791f2dd3ecfada2 b/fuzz/corpora/asn1parse/28e61f143cc0fa72e7fe8d112791f2dd3ecfada2
 new file mode 100644
-index 000000000000..8d7886a2f028
-Binary files /dev/null and b/fuzz/corpora/asn1/b3fb646a22a19dff0822effbe4a00decfdbdf699 differ
-diff --git a/fuzz/corpora/asn1/b429906fd95fba4570b4c24810af72329923baf6 b/fuzz/corpora/asn1/b429906fd95fba4570b4c24810af72329923baf6
+index 0000000..7fb59ce
+Binary files /dev/null and b/fuzz/corpora/asn1parse/28e61f143cc0fa72e7fe8d112791f2dd3ecfada2 differ
+diff --git a/fuzz/corpora/asn1parse/293b1ed28a80fa56c6202cc18cc4a1e31be5f0e9 b/fuzz/corpora/asn1parse/293b1ed28a80fa56c6202cc18cc4a1e31be5f0e9
 new file mode 100644
-index 000000000000..32c4cb1995aa
-Binary files /dev/null and b/fuzz/corpora/asn1/b429906fd95fba4570b4c24810af72329923baf6 differ
-diff --git a/fuzz/corpora/asn1/b42f689957d011283ec4370b9c3eef1eb49b5e7b b/fuzz/corpora/asn1/b42f689957d011283ec4370b9c3eef1eb49b5e7b
+index 0000000..fc39b4d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/293b1ed28a80fa56c6202cc18cc4a1e31be5f0e9 differ
+diff --git a/fuzz/corpora/asn1parse/29c4dc5c59fd4b26ce0c779c7b2239cc84740edd b/fuzz/corpora/asn1parse/29c4dc5c59fd4b26ce0c779c7b2239cc84740edd
 new file mode 100644
-index 000000000000..8aa39824ee04
-Binary files /dev/null and b/fuzz/corpora/asn1/b42f689957d011283ec4370b9c3eef1eb49b5e7b differ
-diff --git a/fuzz/corpora/asn1/b4c36182d419b63e1a57d2472dae4994777f0423 b/fuzz/corpora/asn1/b4c36182d419b63e1a57d2472dae4994777f0423
+index 0000000..8d6c20a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/29c4dc5c59fd4b26ce0c779c7b2239cc84740edd differ
+diff --git a/fuzz/corpora/asn1parse/29dbdb1a76abe6cd241e78c57099ae6d3eab3749 b/fuzz/corpora/asn1parse/29dbdb1a76abe6cd241e78c57099ae6d3eab3749
 new file mode 100644
-index 000000000000..d25516b26699
-Binary files /dev/null and b/fuzz/corpora/asn1/b4c36182d419b63e1a57d2472dae4994777f0423 differ
-diff --git a/fuzz/corpora/asn1/b57d932b511753ffa7ce49eafdea656348d73974 b/fuzz/corpora/asn1/b57d932b511753ffa7ce49eafdea656348d73974
+index 0000000..af86dd7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/29dbdb1a76abe6cd241e78c57099ae6d3eab3749 differ
+diff --git a/fuzz/corpora/asn1parse/2aa83c59b223001df187bf5ac0a2d5a1ab4d6dfe b/fuzz/corpora/asn1parse/2aa83c59b223001df187bf5ac0a2d5a1ab4d6dfe
 new file mode 100644
-index 000000000000..9240901bc807
-Binary files /dev/null and b/fuzz/corpora/asn1/b57d932b511753ffa7ce49eafdea656348d73974 differ
-diff --git a/fuzz/corpora/asn1/b5b40d591eb699bd3e08bf2d0c3d1d3f42654244 b/fuzz/corpora/asn1/b5b40d591eb699bd3e08bf2d0c3d1d3f42654244
+index 0000000..ca60e15
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2aa83c59b223001df187bf5ac0a2d5a1ab4d6dfe differ
+diff --git a/fuzz/corpora/asn1parse/2b450fcf2655d30eb33caf1dd8041ba0ff0dc9f0 b/fuzz/corpora/asn1parse/2b450fcf2655d30eb33caf1dd8041ba0ff0dc9f0
 new file mode 100644
-index 000000000000..7d4622582849
-Binary files /dev/null and b/fuzz/corpora/asn1/b5b40d591eb699bd3e08bf2d0c3d1d3f42654244 differ
-diff --git a/fuzz/corpora/asn1/b5ba996b631b60c935d19570769f94e4fe4d7041 b/fuzz/corpora/asn1/b5ba996b631b60c935d19570769f94e4fe4d7041
+index 0000000..869da9c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2b450fcf2655d30eb33caf1dd8041ba0ff0dc9f0 differ
+diff --git a/fuzz/corpora/asn1parse/2b86500a677ee7f6108955c72ac5c7d703a5f71f b/fuzz/corpora/asn1parse/2b86500a677ee7f6108955c72ac5c7d703a5f71f
 new file mode 100644
-index 000000000000..bf4564ecf713
-Binary files /dev/null and b/fuzz/corpora/asn1/b5ba996b631b60c935d19570769f94e4fe4d7041 differ
-diff --git a/fuzz/corpora/asn1/b62f98976c11d79674b019ea78a7ce4d6d78b479 b/fuzz/corpora/asn1/b62f98976c11d79674b019ea78a7ce4d6d78b479
+index 0000000..89f32e6
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2b86500a677ee7f6108955c72ac5c7d703a5f71f differ
+diff --git a/fuzz/corpora/asn1parse/2ca248a3fe09f684a926964e3ddf3c97a107ac3d b/fuzz/corpora/asn1parse/2ca248a3fe09f684a926964e3ddf3c97a107ac3d
 new file mode 100644
-index 000000000000..6a4f18607c79
-Binary files /dev/null and b/fuzz/corpora/asn1/b62f98976c11d79674b019ea78a7ce4d6d78b479 differ
-diff --git a/fuzz/corpora/asn1/b6358b1d24968c5c683ccafb9fbdb92b68950e36 b/fuzz/corpora/asn1/b6358b1d24968c5c683ccafb9fbdb92b68950e36
+index 0000000..da72425
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2ca248a3fe09f684a926964e3ddf3c97a107ac3d differ
+diff --git a/fuzz/corpora/asn1parse/2ca9a4d5e858c73ea413bb7d5ba9af365a997f48 b/fuzz/corpora/asn1parse/2ca9a4d5e858c73ea413bb7d5ba9af365a997f48
 new file mode 100644
-index 000000000000..a02dc9237bfb
-Binary files /dev/null and b/fuzz/corpora/asn1/b6358b1d24968c5c683ccafb9fbdb92b68950e36 differ
-diff --git a/fuzz/corpora/asn1/b653084901825d8c76c1144a8b31619b5ef47476 b/fuzz/corpora/asn1/b653084901825d8c76c1144a8b31619b5ef47476
+index 0000000..cff8fb6
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2ca9a4d5e858c73ea413bb7d5ba9af365a997f48 differ
+diff --git a/fuzz/corpora/asn1parse/2cd23713ff8cf7d52ac57cadabdb50489baa06aa b/fuzz/corpora/asn1parse/2cd23713ff8cf7d52ac57cadabdb50489baa06aa
 new file mode 100644
-index 000000000000..209679246a84
-Binary files /dev/null and b/fuzz/corpora/asn1/b653084901825d8c76c1144a8b31619b5ef47476 differ
-diff --git a/fuzz/corpora/asn1/b65ea113dca0c49e20312857bd38b600b57f2566 b/fuzz/corpora/asn1/b65ea113dca0c49e20312857bd38b600b57f2566
+index 0000000..94a8033
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2cd23713ff8cf7d52ac57cadabdb50489baa06aa differ
+diff --git a/fuzz/corpora/asn1parse/2d53518c509ed664cde67cdaa342940ef406b47c b/fuzz/corpora/asn1parse/2d53518c509ed664cde67cdaa342940ef406b47c
 new file mode 100644
-index 000000000000..86b877439756
-Binary files /dev/null and b/fuzz/corpora/asn1/b65ea113dca0c49e20312857bd38b600b57f2566 differ
-diff --git a/fuzz/corpora/asn1/b69d5ed9e343ad614e7df1b626b169158f866b2e b/fuzz/corpora/asn1/b69d5ed9e343ad614e7df1b626b169158f866b2e
+index 0000000..3b5bca2
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2d53518c509ed664cde67cdaa342940ef406b47c differ
+diff --git a/fuzz/corpora/asn1parse/2f9fdd74ee250586fba8ef55fe1fedbcb54bf223 b/fuzz/corpora/asn1parse/2f9fdd74ee250586fba8ef55fe1fedbcb54bf223
 new file mode 100644
-index 000000000000..eb482941209f
-Binary files /dev/null and b/fuzz/corpora/asn1/b69d5ed9e343ad614e7df1b626b169158f866b2e differ
-diff --git a/fuzz/corpora/asn1/b69f2987565c29c2916e5e2aa098193b2b600ac2 b/fuzz/corpora/asn1/b69f2987565c29c2916e5e2aa098193b2b600ac2
+index 0000000..18c8c7a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2f9fdd74ee250586fba8ef55fe1fedbcb54bf223 differ
+diff --git a/fuzz/corpora/asn1parse/2fb2eb4ac4fe5becd705ea0b966df2dab5f3e694 b/fuzz/corpora/asn1parse/2fb2eb4ac4fe5becd705ea0b966df2dab5f3e694
 new file mode 100644
-index 000000000000..9031904ffd20
-Binary files /dev/null and b/fuzz/corpora/asn1/b69f2987565c29c2916e5e2aa098193b2b600ac2 differ
-diff --git a/fuzz/corpora/asn1/b69f9f8655bcc5d094523ef33d23ad2fe6c15b00 b/fuzz/corpora/asn1/b69f9f8655bcc5d094523ef33d23ad2fe6c15b00
+index 0000000..e108a27
+Binary files /dev/null and b/fuzz/corpora/asn1parse/2fb2eb4ac4fe5becd705ea0b966df2dab5f3e694 differ
+diff --git a/fuzz/corpora/asn1parse/31162429dacfabf9c3aeb28835256421e16741ad b/fuzz/corpora/asn1parse/31162429dacfabf9c3aeb28835256421e16741ad
 new file mode 100644
-index 000000000000..c1dafe2853dc
-Binary files /dev/null and b/fuzz/corpora/asn1/b69f9f8655bcc5d094523ef33d23ad2fe6c15b00 differ
-diff --git a/fuzz/corpora/asn1/b6a603d5bfe3eb442d4dfdf3d9b970838f541ab6 b/fuzz/corpora/asn1/b6a603d5bfe3eb442d4dfdf3d9b970838f541ab6
+index 0000000..3db23a4
+Binary files /dev/null and b/fuzz/corpora/asn1parse/31162429dacfabf9c3aeb28835256421e16741ad differ
+diff --git a/fuzz/corpora/asn1parse/32a85a93f275705414405e8060649f589a39a644 b/fuzz/corpora/asn1parse/32a85a93f275705414405e8060649f589a39a644
 new file mode 100644
-index 000000000000..b7037cb8dab2
-Binary files /dev/null and b/fuzz/corpora/asn1/b6a603d5bfe3eb442d4dfdf3d9b970838f541ab6 differ
-diff --git a/fuzz/corpora/asn1/b7234c04e279d5152a9dddf825bb5c8131018909 b/fuzz/corpora/asn1/b7234c04e279d5152a9dddf825bb5c8131018909
+index 0000000..31fa2e5
+Binary files /dev/null and b/fuzz/corpora/asn1parse/32a85a93f275705414405e8060649f589a39a644 differ
+diff --git a/fuzz/corpora/asn1parse/331dfc28c6438cd019de551c3687660e7e5cd577 b/fuzz/corpora/asn1parse/331dfc28c6438cd019de551c3687660e7e5cd577
 new file mode 100644
-index 000000000000..0aeb94a396d3
-Binary files /dev/null and b/fuzz/corpora/asn1/b7234c04e279d5152a9dddf825bb5c8131018909 differ
-diff --git a/fuzz/corpora/asn1/b75bfa975ff29f1def9584b6ea2f92985a0ee287 b/fuzz/corpora/asn1/b75bfa975ff29f1def9584b6ea2f92985a0ee287
+index 0000000..2025dc5
+Binary files /dev/null and b/fuzz/corpora/asn1parse/331dfc28c6438cd019de551c3687660e7e5cd577 differ
+diff --git a/fuzz/corpora/asn1parse/337ce6c4072b38fa759bdc40e955acaf15c26f12 b/fuzz/corpora/asn1parse/337ce6c4072b38fa759bdc40e955acaf15c26f12
 new file mode 100644
-index 000000000000..12308c805162
-Binary files /dev/null and b/fuzz/corpora/asn1/b75bfa975ff29f1def9584b6ea2f92985a0ee287 differ
-diff --git a/fuzz/corpora/asn1/b781c0d1375e5aeeb5f5ba878a2434fe9ef3a377 b/fuzz/corpora/asn1/b781c0d1375e5aeeb5f5ba878a2434fe9ef3a377
+index 0000000..df2b1c6
+Binary files /dev/null and b/fuzz/corpora/asn1parse/337ce6c4072b38fa759bdc40e955acaf15c26f12 differ
+diff --git a/fuzz/corpora/asn1parse/342226bf21097e14864bebe3303b791c3a0109b9 b/fuzz/corpora/asn1parse/342226bf21097e14864bebe3303b791c3a0109b9
 new file mode 100644
-index 000000000000..a6d5f84b9ddd
-Binary files /dev/null and b/fuzz/corpora/asn1/b781c0d1375e5aeeb5f5ba878a2434fe9ef3a377 differ
-diff --git a/fuzz/corpora/asn1/b7928d02798591eda06c5e66f1e03d0e6d6ddecf b/fuzz/corpora/asn1/b7928d02798591eda06c5e66f1e03d0e6d6ddecf
+index 0000000..d85cb07
+Binary files /dev/null and b/fuzz/corpora/asn1parse/342226bf21097e14864bebe3303b791c3a0109b9 differ
+diff --git a/fuzz/corpora/asn1parse/345e713263d4e932364abe93c1d8017920e71d16 b/fuzz/corpora/asn1parse/345e713263d4e932364abe93c1d8017920e71d16
 new file mode 100644
-index 000000000000..844a2a7a0624
-Binary files /dev/null and b/fuzz/corpora/asn1/b7928d02798591eda06c5e66f1e03d0e6d6ddecf differ
-diff --git a/fuzz/corpora/asn1/b7b5b8abb1c459f8c19bdb2bfff4d2bc06e7efd3 b/fuzz/corpora/asn1/b7b5b8abb1c459f8c19bdb2bfff4d2bc06e7efd3
+index 0000000..9d387f1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/345e713263d4e932364abe93c1d8017920e71d16 differ
+diff --git a/fuzz/corpora/asn1parse/3726c72029149557c8c4078f832229c4b5ff3144 b/fuzz/corpora/asn1parse/3726c72029149557c8c4078f832229c4b5ff3144
 new file mode 100644
-index 000000000000..fe01ba471834
-Binary files /dev/null and b/fuzz/corpora/asn1/b7b5b8abb1c459f8c19bdb2bfff4d2bc06e7efd3 differ
-diff --git a/fuzz/corpora/asn1/b7f629b3cbc87d1ad4593af10c5cbe63fbfdd6d3 b/fuzz/corpora/asn1/b7f629b3cbc87d1ad4593af10c5cbe63fbfdd6d3
+index 0000000..fff75f9
+Binary files /dev/null and b/fuzz/corpora/asn1parse/3726c72029149557c8c4078f832229c4b5ff3144 differ
+diff --git a/fuzz/corpora/asn1parse/397aa0c5da33ac747350fb6e0b5e376148deabba b/fuzz/corpora/asn1parse/397aa0c5da33ac747350fb6e0b5e376148deabba
 new file mode 100644
-index 000000000000..b085fccdecee
-Binary files /dev/null and b/fuzz/corpora/asn1/b7f629b3cbc87d1ad4593af10c5cbe63fbfdd6d3 differ
-diff --git a/fuzz/corpora/asn1/b81080d19dff603213efedc99f8b7ae786a8597c b/fuzz/corpora/asn1/b81080d19dff603213efedc99f8b7ae786a8597c
+index 0000000..a81c090
+Binary files /dev/null and b/fuzz/corpora/asn1parse/397aa0c5da33ac747350fb6e0b5e376148deabba differ
+diff --git a/fuzz/corpora/asn1parse/39d27b65c8582a700a576e6d294d264e12b3eabc b/fuzz/corpora/asn1parse/39d27b65c8582a700a576e6d294d264e12b3eabc
 new file mode 100644
-index 000000000000..6eb68c970eb0
-Binary files /dev/null and b/fuzz/corpora/asn1/b81080d19dff603213efedc99f8b7ae786a8597c differ
-diff --git a/fuzz/corpora/asn1/b851695ece5915b60f7f561635e90d68c4ad922f b/fuzz/corpora/asn1/b851695ece5915b60f7f561635e90d68c4ad922f
+index 0000000..cedfdc9
+Binary files /dev/null and b/fuzz/corpora/asn1parse/39d27b65c8582a700a576e6d294d264e12b3eabc differ
+diff --git a/fuzz/corpora/asn1parse/3a107792c1bd184fd7530291365fa850f7ca0010 b/fuzz/corpora/asn1parse/3a107792c1bd184fd7530291365fa850f7ca0010
 new file mode 100644
-index 000000000000..388bd2f9a96a
-Binary files /dev/null and b/fuzz/corpora/asn1/b851695ece5915b60f7f561635e90d68c4ad922f differ
-diff --git a/fuzz/corpora/asn1/b8675bac52efa7842f65ec4e93a51e07f726134f b/fuzz/corpora/asn1/b8675bac52efa7842f65ec4e93a51e07f726134f
+index 0000000..337939e
+Binary files /dev/null and b/fuzz/corpora/asn1parse/3a107792c1bd184fd7530291365fa850f7ca0010 differ
+diff --git a/fuzz/corpora/asn1parse/3ac234767cdc5d38fd27b006670f19c52bd8400e b/fuzz/corpora/asn1parse/3ac234767cdc5d38fd27b006670f19c52bd8400e
 new file mode 100644
-index 000000000000..e2c86017e190
-Binary files /dev/null and b/fuzz/corpora/asn1/b8675bac52efa7842f65ec4e93a51e07f726134f differ
-diff --git a/fuzz/corpora/asn1/b86e0279252e6f7d3370f63caf0148756a7d7a73 b/fuzz/corpora/asn1/b86e0279252e6f7d3370f63caf0148756a7d7a73
+index 0000000..456679f
+Binary files /dev/null and b/fuzz/corpora/asn1parse/3ac234767cdc5d38fd27b006670f19c52bd8400e differ
+diff --git a/fuzz/corpora/asn1parse/3bcde7897208530a12f254ae452f218591734d78 b/fuzz/corpora/asn1parse/3bcde7897208530a12f254ae452f218591734d78
 new file mode 100644
-index 000000000000..d4692dae4d12
-Binary files /dev/null and b/fuzz/corpora/asn1/b86e0279252e6f7d3370f63caf0148756a7d7a73 differ
-diff --git a/fuzz/corpora/asn1/b8785e93ee3e8e25e480a58b86027e5cd06ebb66 b/fuzz/corpora/asn1/b8785e93ee3e8e25e480a58b86027e5cd06ebb66
+index 0000000..de478b0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/3bcde7897208530a12f254ae452f218591734d78 differ
+diff --git a/fuzz/corpora/asn1parse/3c8e2c76435f116f34b44281ca2c068208f9a91c b/fuzz/corpora/asn1parse/3c8e2c76435f116f34b44281ca2c068208f9a91c
 new file mode 100644
-index 000000000000..d61b5d5d68f2
-Binary files /dev/null and b/fuzz/corpora/asn1/b8785e93ee3e8e25e480a58b86027e5cd06ebb66 differ
-diff --git a/fuzz/corpora/asn1/b8b1085928b17f36cd9d1a76a3c155c1c78e8526 b/fuzz/corpora/asn1/b8b1085928b17f36cd9d1a76a3c155c1c78e8526
+index 0000000..453daaa
+Binary files /dev/null and b/fuzz/corpora/asn1parse/3c8e2c76435f116f34b44281ca2c068208f9a91c differ
+diff --git a/fuzz/corpora/asn1parse/3dc8f0322f63471c23f1d03322f483784ac04511 b/fuzz/corpora/asn1parse/3dc8f0322f63471c23f1d03322f483784ac04511
 new file mode 100644
-index 000000000000..52024656468a
-Binary files /dev/null and b/fuzz/corpora/asn1/b8b1085928b17f36cd9d1a76a3c155c1c78e8526 differ
-diff --git a/fuzz/corpora/asn1/b8c62ba6f189f0c06b20c8492123ddb679c9f7ad b/fuzz/corpora/asn1/b8c62ba6f189f0c06b20c8492123ddb679c9f7ad
+index 0000000..90684e2
+Binary files /dev/null and b/fuzz/corpora/asn1parse/3dc8f0322f63471c23f1d03322f483784ac04511 differ
+diff --git a/fuzz/corpora/asn1parse/3e0e107aa4b8bda137ad4d428afacc59701712c7 b/fuzz/corpora/asn1parse/3e0e107aa4b8bda137ad4d428afacc59701712c7
 new file mode 100644
-index 000000000000..8e44bee659db
-Binary files /dev/null and b/fuzz/corpora/asn1/b8c62ba6f189f0c06b20c8492123ddb679c9f7ad differ
-diff --git a/fuzz/corpora/asn1/b904ed98cfcab344f9ab36c86fa73e3f46df2a27 b/fuzz/corpora/asn1/b904ed98cfcab344f9ab36c86fa73e3f46df2a27
+index 0000000..8cdb9e7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/3e0e107aa4b8bda137ad4d428afacc59701712c7 differ
+diff --git a/fuzz/corpora/asn1parse/3e94d216d32e589c8373713fc6b7a1122ea559cb b/fuzz/corpora/asn1parse/3e94d216d32e589c8373713fc6b7a1122ea559cb
 new file mode 100644
-index 000000000000..fc83445c1789
-Binary files /dev/null and b/fuzz/corpora/asn1/b904ed98cfcab344f9ab36c86fa73e3f46df2a27 differ
-diff --git a/fuzz/corpora/asn1/b94e7162e4872e48e9cbb0323f8a519d4fcdb88b b/fuzz/corpora/asn1/b94e7162e4872e48e9cbb0323f8a519d4fcdb88b
+index 0000000..1ea544d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/3e94d216d32e589c8373713fc6b7a1122ea559cb differ
+diff --git a/fuzz/corpora/asn1parse/4027a7ceb3d7ba967e3b963a424193c5faa93dcf b/fuzz/corpora/asn1parse/4027a7ceb3d7ba967e3b963a424193c5faa93dcf
 new file mode 100644
-index 000000000000..ce95784bf317
-Binary files /dev/null and b/fuzz/corpora/asn1/b94e7162e4872e48e9cbb0323f8a519d4fcdb88b differ
-diff --git a/fuzz/corpora/asn1/b9a0c10d97bcb75a374f796de8d4e6e5790e1c3e b/fuzz/corpora/asn1/b9a0c10d97bcb75a374f796de8d4e6e5790e1c3e
+index 0000000..66fca58
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4027a7ceb3d7ba967e3b963a424193c5faa93dcf differ
+diff --git a/fuzz/corpora/asn1parse/41bb59055c179d96b6747ca7d56a8378afbf9d59 b/fuzz/corpora/asn1parse/41bb59055c179d96b6747ca7d56a8378afbf9d59
 new file mode 100644
-index 000000000000..ff3ca04e1e14
-Binary files /dev/null and b/fuzz/corpora/asn1/b9a0c10d97bcb75a374f796de8d4e6e5790e1c3e differ
-diff --git a/fuzz/corpora/asn1/b9f35b887d2360a93149018dc1ecca721fe396b6 b/fuzz/corpora/asn1/b9f35b887d2360a93149018dc1ecca721fe396b6
+index 0000000..0d00cc4
+Binary files /dev/null and b/fuzz/corpora/asn1parse/41bb59055c179d96b6747ca7d56a8378afbf9d59 differ
+diff --git a/fuzz/corpora/asn1parse/42254096048dd74fe855257926a2feee2af783ae b/fuzz/corpora/asn1parse/42254096048dd74fe855257926a2feee2af783ae
 new file mode 100644
-index 000000000000..deee761f1048
-Binary files /dev/null and b/fuzz/corpora/asn1/b9f35b887d2360a93149018dc1ecca721fe396b6 differ
-diff --git a/fuzz/corpora/asn1/ba5810ddd2b2da3524bd79c2da972203e08fa718 b/fuzz/corpora/asn1/ba5810ddd2b2da3524bd79c2da972203e08fa718
+index 0000000..7a8e19a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/42254096048dd74fe855257926a2feee2af783ae differ
+diff --git a/fuzz/corpora/asn1parse/429d7a72eea4a406a603c0071c34a8dbac858916 b/fuzz/corpora/asn1parse/429d7a72eea4a406a603c0071c34a8dbac858916
 new file mode 100644
-index 000000000000..8018266cb5a9
-Binary files /dev/null and b/fuzz/corpora/asn1/ba5810ddd2b2da3524bd79c2da972203e08fa718 differ
-diff --git a/fuzz/corpora/asn1/bab4fb85db4d3c714881ec95bd177a02910f90bd b/fuzz/corpora/asn1/bab4fb85db4d3c714881ec95bd177a02910f90bd
+index 0000000..07db7f2
+Binary files /dev/null and b/fuzz/corpora/asn1parse/429d7a72eea4a406a603c0071c34a8dbac858916 differ
+diff --git a/fuzz/corpora/asn1parse/42d12c148d607b70ddb068e8f30c9d633c8c50af b/fuzz/corpora/asn1parse/42d12c148d607b70ddb068e8f30c9d633c8c50af
 new file mode 100644
-index 000000000000..1159092d76c5
-Binary files /dev/null and b/fuzz/corpora/asn1/bab4fb85db4d3c714881ec95bd177a02910f90bd differ
-diff --git a/fuzz/corpora/asn1/bad95634b825713d47fd7b0b8ff9b6d6f29a2cd1 b/fuzz/corpora/asn1/bad95634b825713d47fd7b0b8ff9b6d6f29a2cd1
+index 0000000..a54ab34
+Binary files /dev/null and b/fuzz/corpora/asn1parse/42d12c148d607b70ddb068e8f30c9d633c8c50af differ
+diff --git a/fuzz/corpora/asn1parse/435b6d3643b613a79fcfbb165c4b7760c5c797ee b/fuzz/corpora/asn1parse/435b6d3643b613a79fcfbb165c4b7760c5c797ee
 new file mode 100644
-index 000000000000..9d1ff7285b5f
-Binary files /dev/null and b/fuzz/corpora/asn1/bad95634b825713d47fd7b0b8ff9b6d6f29a2cd1 differ
-diff --git a/fuzz/corpora/asn1/bb1c3593efb89db510c780b0013e130f17c02722 b/fuzz/corpora/asn1/bb1c3593efb89db510c780b0013e130f17c02722
+index 0000000..91303a7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/435b6d3643b613a79fcfbb165c4b7760c5c797ee differ
+diff --git a/fuzz/corpora/asn1parse/43f36f59db868d74db75d206e128ae3f1e863a8a b/fuzz/corpora/asn1parse/43f36f59db868d74db75d206e128ae3f1e863a8a
 new file mode 100644
-index 000000000000..855ff42680f0
-Binary files /dev/null and b/fuzz/corpora/asn1/bb1c3593efb89db510c780b0013e130f17c02722 differ
-diff --git a/fuzz/corpora/asn1/bb4678fe9a6536a2d7569b1cadd9f2b4499247ba b/fuzz/corpora/asn1/bb4678fe9a6536a2d7569b1cadd9f2b4499247ba
+index 0000000..bb3611b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/43f36f59db868d74db75d206e128ae3f1e863a8a differ
+diff --git a/fuzz/corpora/asn1parse/4415055f62636ca26171b4e2078dcfa997cc5033 b/fuzz/corpora/asn1parse/4415055f62636ca26171b4e2078dcfa997cc5033
 new file mode 100644
-index 000000000000..1e3d8bacbb98
-Binary files /dev/null and b/fuzz/corpora/asn1/bb4678fe9a6536a2d7569b1cadd9f2b4499247ba differ
-diff --git a/fuzz/corpora/asn1/bb61fa4c46a8f71af192cf3a025f1789afa41e80 b/fuzz/corpora/asn1/bb61fa4c46a8f71af192cf3a025f1789afa41e80
+index 0000000..16c3ee3
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4415055f62636ca26171b4e2078dcfa997cc5033 differ
+diff --git a/fuzz/corpora/asn1parse/4571ef1e60c5884b09f4fa9e1d366e6308ff8ea9 b/fuzz/corpora/asn1parse/4571ef1e60c5884b09f4fa9e1d366e6308ff8ea9
 new file mode 100644
-index 000000000000..90c68ce309b5
-Binary files /dev/null and b/fuzz/corpora/asn1/bb61fa4c46a8f71af192cf3a025f1789afa41e80 differ
-diff --git a/fuzz/corpora/asn1/bbca1c218f9fff9593a9e31ef14ac381d0124968 b/fuzz/corpora/asn1/bbca1c218f9fff9593a9e31ef14ac381d0124968
+index 0000000..742c749
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4571ef1e60c5884b09f4fa9e1d366e6308ff8ea9 differ
+diff --git a/fuzz/corpora/asn1parse/459617d036852462fdcf1d059135d7f8c2e5fed4 b/fuzz/corpora/asn1parse/459617d036852462fdcf1d059135d7f8c2e5fed4
 new file mode 100644
-index 000000000000..609da95cf90a
-Binary files /dev/null and b/fuzz/corpora/asn1/bbca1c218f9fff9593a9e31ef14ac381d0124968 differ
-diff --git a/fuzz/corpora/asn1/bbe767a588b6fce1a4ecdb1edbdbc65d3723d049 b/fuzz/corpora/asn1/bbe767a588b6fce1a4ecdb1edbdbc65d3723d049
+index 0000000..802e61c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/459617d036852462fdcf1d059135d7f8c2e5fed4 differ
+diff --git a/fuzz/corpora/asn1parse/463025de80413409130c819670d3a32eaaf484f4 b/fuzz/corpora/asn1parse/463025de80413409130c819670d3a32eaaf484f4
 new file mode 100644
-index 000000000000..a6ffc07ac704
-Binary files /dev/null and b/fuzz/corpora/asn1/bbe767a588b6fce1a4ecdb1edbdbc65d3723d049 differ
-diff --git a/fuzz/corpora/asn1/bc56e83e436df7d3c66d153f12f7802252065f61 b/fuzz/corpora/asn1/bc56e83e436df7d3c66d153f12f7802252065f61
+index 0000000..13dd038
+Binary files /dev/null and b/fuzz/corpora/asn1parse/463025de80413409130c819670d3a32eaaf484f4 differ
+diff --git a/fuzz/corpora/asn1parse/4686ed0ad96463d87d3d5d1aeba9da425ac30670 b/fuzz/corpora/asn1parse/4686ed0ad96463d87d3d5d1aeba9da425ac30670
 new file mode 100644
-index 000000000000..f7a276544346
-Binary files /dev/null and b/fuzz/corpora/asn1/bc56e83e436df7d3c66d153f12f7802252065f61 differ
-diff --git a/fuzz/corpora/asn1/bcaee02b0acd6cd2b84ef105f37d3518e59abf7c b/fuzz/corpora/asn1/bcaee02b0acd6cd2b84ef105f37d3518e59abf7c
+index 0000000..c7437d7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4686ed0ad96463d87d3d5d1aeba9da425ac30670 differ
+diff --git a/fuzz/corpora/asn1parse/4793dada2b9d2ef04ba7d5d48f6b02eb8ebe285a b/fuzz/corpora/asn1parse/4793dada2b9d2ef04ba7d5d48f6b02eb8ebe285a
 new file mode 100644
-index 000000000000..977dbf4880eb
-Binary files /dev/null and b/fuzz/corpora/asn1/bcaee02b0acd6cd2b84ef105f37d3518e59abf7c differ
-diff --git a/fuzz/corpora/asn1/bccacb0b3c537b9b36adb93efcb968c413dd3d92 b/fuzz/corpora/asn1/bccacb0b3c537b9b36adb93efcb968c413dd3d92
+index 0000000..5b79c8f
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4793dada2b9d2ef04ba7d5d48f6b02eb8ebe285a differ
+diff --git a/fuzz/corpora/asn1parse/4809044d0e4338cef72b108f97a424c1543580d2 b/fuzz/corpora/asn1parse/4809044d0e4338cef72b108f97a424c1543580d2
 new file mode 100644
-index 000000000000..c17f85be91e8
-Binary files /dev/null and b/fuzz/corpora/asn1/bccacb0b3c537b9b36adb93efcb968c413dd3d92 differ
-diff --git a/fuzz/corpora/asn1/bcd13ad5ac523fdc4076ab1edc8c380241d8f619 b/fuzz/corpora/asn1/bcd13ad5ac523fdc4076ab1edc8c380241d8f619
+index 0000000..5b3f05b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4809044d0e4338cef72b108f97a424c1543580d2 differ
+diff --git a/fuzz/corpora/asn1parse/4996558c8449a84f400f9d10441322e4d99e5b89 b/fuzz/corpora/asn1parse/4996558c8449a84f400f9d10441322e4d99e5b89
 new file mode 100644
-index 000000000000..2bfd431eb87c
-Binary files /dev/null and b/fuzz/corpora/asn1/bcd13ad5ac523fdc4076ab1edc8c380241d8f619 differ
-diff --git a/fuzz/corpora/asn1/bcd2f83b51b3385dcdfcb2881cd8747ae54ac9d1 b/fuzz/corpora/asn1/bcd2f83b51b3385dcdfcb2881cd8747ae54ac9d1
+index 0000000..e16fa40
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4996558c8449a84f400f9d10441322e4d99e5b89 differ
+diff --git a/fuzz/corpora/asn1parse/4aae21cc3a76571618dfc7cbe352d5411f160191 b/fuzz/corpora/asn1parse/4aae21cc3a76571618dfc7cbe352d5411f160191
 new file mode 100644
-index 000000000000..f363adcdc06d
-Binary files /dev/null and b/fuzz/corpora/asn1/bcd2f83b51b3385dcdfcb2881cd8747ae54ac9d1 differ
-diff --git a/fuzz/corpora/asn1/bdb5dc6932f539db3109f5c05ed78745f5a95966 b/fuzz/corpora/asn1/bdb5dc6932f539db3109f5c05ed78745f5a95966
+index 0000000..87728b6
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4aae21cc3a76571618dfc7cbe352d5411f160191 differ
+diff --git a/fuzz/corpora/asn1parse/4b792cf826d819cd3caae0893fccda6c652a37f9 b/fuzz/corpora/asn1parse/4b792cf826d819cd3caae0893fccda6c652a37f9
 new file mode 100644
-index 000000000000..9c3007c140df
-Binary files /dev/null and b/fuzz/corpora/asn1/bdb5dc6932f539db3109f5c05ed78745f5a95966 differ
-diff --git a/fuzz/corpora/asn1/bdfebc50ffa8e31e96869f571b05873030226589 b/fuzz/corpora/asn1/bdfebc50ffa8e31e96869f571b05873030226589
+index 0000000..1ce5e54
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4b792cf826d819cd3caae0893fccda6c652a37f9 differ
+diff --git a/fuzz/corpora/asn1parse/4c481bb654349ccb219e71e7281beafae752ba0c b/fuzz/corpora/asn1parse/4c481bb654349ccb219e71e7281beafae752ba0c
 new file mode 100644
-index 000000000000..4c8d3ce573b7
-Binary files /dev/null and b/fuzz/corpora/asn1/bdfebc50ffa8e31e96869f571b05873030226589 differ
-diff --git a/fuzz/corpora/asn1/be55cc333dc6a9db401d45ea8365634e30ee97eb b/fuzz/corpora/asn1/be55cc333dc6a9db401d45ea8365634e30ee97eb
+index 0000000..ad22a4d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4c481bb654349ccb219e71e7281beafae752ba0c differ
+diff --git a/fuzz/corpora/asn1parse/4d69414407bc33ecc6d45f047f2d4cce68953cde b/fuzz/corpora/asn1parse/4d69414407bc33ecc6d45f047f2d4cce68953cde
 new file mode 100644
-index 000000000000..22187c250b13
-Binary files /dev/null and b/fuzz/corpora/asn1/be55cc333dc6a9db401d45ea8365634e30ee97eb differ
-diff --git a/fuzz/corpora/asn1/be6d130109b9d41bc6ab9ef85825d179591a86a0 b/fuzz/corpora/asn1/be6d130109b9d41bc6ab9ef85825d179591a86a0
+index 0000000..69b6a95
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4d69414407bc33ecc6d45f047f2d4cce68953cde differ
+diff --git a/fuzz/corpora/asn1parse/4dd9bea5a9e7b09887af9d31a6cef7579c13568b b/fuzz/corpora/asn1parse/4dd9bea5a9e7b09887af9d31a6cef7579c13568b
 new file mode 100644
-index 000000000000..a36d606f0ac0
-Binary files /dev/null and b/fuzz/corpora/asn1/be6d130109b9d41bc6ab9ef85825d179591a86a0 differ
-diff --git a/fuzz/corpora/asn1/bed7648c8f38c50a7599321805850936ae7c244b b/fuzz/corpora/asn1/bed7648c8f38c50a7599321805850936ae7c244b
+index 0000000..83880cb
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4dd9bea5a9e7b09887af9d31a6cef7579c13568b differ
+diff --git a/fuzz/corpora/asn1parse/4ed5d5f834911777efae935a75734be27f2ffd8a b/fuzz/corpora/asn1parse/4ed5d5f834911777efae935a75734be27f2ffd8a
 new file mode 100644
-index 000000000000..3bfd9a30946b
-Binary files /dev/null and b/fuzz/corpora/asn1/bed7648c8f38c50a7599321805850936ae7c244b differ
-diff --git a/fuzz/corpora/asn1/bf2fcc17c8073422d2d721a528308962508210f3 b/fuzz/corpora/asn1/bf2fcc17c8073422d2d721a528308962508210f3
+index 0000000..699afc2
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4ed5d5f834911777efae935a75734be27f2ffd8a differ
+diff --git a/fuzz/corpora/asn1parse/4f08dc2357fc8da5598fbbd645d3b839a0092c25 b/fuzz/corpora/asn1parse/4f08dc2357fc8da5598fbbd645d3b839a0092c25
 new file mode 100644
-index 000000000000..db56c2b60a11
-Binary files /dev/null and b/fuzz/corpora/asn1/bf2fcc17c8073422d2d721a528308962508210f3 differ
-diff --git a/fuzz/corpora/asn1/bf4b9e44169ecbf5b4692f451c715fc2e490e999 b/fuzz/corpora/asn1/bf4b9e44169ecbf5b4692f451c715fc2e490e999
+index 0000000..97cd7c8
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4f08dc2357fc8da5598fbbd645d3b839a0092c25 differ
+diff --git a/fuzz/corpora/asn1parse/4f90dac4b0fef52cb5d86b0a5bae0eca0d8d44e5 b/fuzz/corpora/asn1parse/4f90dac4b0fef52cb5d86b0a5bae0eca0d8d44e5
 new file mode 100644
-index 000000000000..80bb0b06ca4d
-Binary files /dev/null and b/fuzz/corpora/asn1/bf4b9e44169ecbf5b4692f451c715fc2e490e999 differ
-diff --git a/fuzz/corpora/asn1/bf4e9cda2ce9a51804a31861bec70d1ccbaead66 b/fuzz/corpora/asn1/bf4e9cda2ce9a51804a31861bec70d1ccbaead66
+index 0000000..22b0ff7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/4f90dac4b0fef52cb5d86b0a5bae0eca0d8d44e5 differ
+diff --git a/fuzz/corpora/asn1parse/50fb42833848f57be8ca813c7a1ef7fd90348e14 b/fuzz/corpora/asn1parse/50fb42833848f57be8ca813c7a1ef7fd90348e14
 new file mode 100644
-index 000000000000..89fe8d347cf8
-Binary files /dev/null and b/fuzz/corpora/asn1/bf4e9cda2ce9a51804a31861bec70d1ccbaead66 differ
-diff --git a/fuzz/corpora/asn1/bf4ecc4508e9b8dfa04a0231116b24e9eaae4500 b/fuzz/corpora/asn1/bf4ecc4508e9b8dfa04a0231116b24e9eaae4500
+index 0000000..3e30117
+Binary files /dev/null and b/fuzz/corpora/asn1parse/50fb42833848f57be8ca813c7a1ef7fd90348e14 differ
+diff --git a/fuzz/corpora/asn1parse/512ba91d64de774978258daed356968a4184bd26 b/fuzz/corpora/asn1parse/512ba91d64de774978258daed356968a4184bd26
 new file mode 100644
-index 000000000000..630120559eed
-Binary files /dev/null and b/fuzz/corpora/asn1/bf4ecc4508e9b8dfa04a0231116b24e9eaae4500 differ
-diff --git a/fuzz/corpora/asn1/bf8312c746a968e8f2372aa36af45a91420c6c82 b/fuzz/corpora/asn1/bf8312c746a968e8f2372aa36af45a91420c6c82
+index 0000000..a6e19e1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/512ba91d64de774978258daed356968a4184bd26 differ
+diff --git a/fuzz/corpora/asn1parse/51c90cd85041bd080a032cfc179c31f713505150 b/fuzz/corpora/asn1parse/51c90cd85041bd080a032cfc179c31f713505150
 new file mode 100644
-index 000000000000..5124485ff8cc
-Binary files /dev/null and b/fuzz/corpora/asn1/bf8312c746a968e8f2372aa36af45a91420c6c82 differ
-diff --git a/fuzz/corpora/asn1/bf90f9211402f23b89e14f3311009d6e2e28c9d8 b/fuzz/corpora/asn1/bf90f9211402f23b89e14f3311009d6e2e28c9d8
+index 0000000..6e54b95
+Binary files /dev/null and b/fuzz/corpora/asn1parse/51c90cd85041bd080a032cfc179c31f713505150 differ
+diff --git a/fuzz/corpora/asn1parse/5227955ea593066cbe6b5e533b45de92537b6a19 b/fuzz/corpora/asn1parse/5227955ea593066cbe6b5e533b45de92537b6a19
 new file mode 100644
-index 000000000000..d9708a9a9d49
-Binary files /dev/null and b/fuzz/corpora/asn1/bf90f9211402f23b89e14f3311009d6e2e28c9d8 differ
-diff --git a/fuzz/corpora/asn1/bfa3d685907cd4f0854600753966a9aedd5a749f b/fuzz/corpora/asn1/bfa3d685907cd4f0854600753966a9aedd5a749f
+index 0000000..dcbd182
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5227955ea593066cbe6b5e533b45de92537b6a19 differ
+diff --git a/fuzz/corpora/asn1parse/559d96a0decd231d5f68a026ed9ce05c3d3b4867 b/fuzz/corpora/asn1parse/559d96a0decd231d5f68a026ed9ce05c3d3b4867
 new file mode 100644
-index 000000000000..5080221dd185
-Binary files /dev/null and b/fuzz/corpora/asn1/bfa3d685907cd4f0854600753966a9aedd5a749f differ
-diff --git a/fuzz/corpora/asn1/bfa63760fca5980adbe8e3c1c44d2516a38d3e1d b/fuzz/corpora/asn1/bfa63760fca5980adbe8e3c1c44d2516a38d3e1d
+index 0000000..4006ed6
+Binary files /dev/null and b/fuzz/corpora/asn1parse/559d96a0decd231d5f68a026ed9ce05c3d3b4867 differ
+diff --git a/fuzz/corpora/asn1parse/55d27fc7b9a90a10e64da68f484e7bccb91f389d b/fuzz/corpora/asn1parse/55d27fc7b9a90a10e64da68f484e7bccb91f389d
 new file mode 100644
-index 000000000000..4894a9eebd1a
-Binary files /dev/null and b/fuzz/corpora/asn1/bfa63760fca5980adbe8e3c1c44d2516a38d3e1d differ
-diff --git a/fuzz/corpora/asn1/bfc8cbca58d1be00be1cdf7564ece5ebeb044417 b/fuzz/corpora/asn1/bfc8cbca58d1be00be1cdf7564ece5ebeb044417
+index 0000000..0d7ab2a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/55d27fc7b9a90a10e64da68f484e7bccb91f389d differ
+diff --git a/fuzz/corpora/asn1parse/55f83a9f6e78dbf5ee1a3cc7952a91f86822358e b/fuzz/corpora/asn1parse/55f83a9f6e78dbf5ee1a3cc7952a91f86822358e
 new file mode 100644
-index 000000000000..8b73fb1b2738
-Binary files /dev/null and b/fuzz/corpora/asn1/bfc8cbca58d1be00be1cdf7564ece5ebeb044417 differ
-diff --git a/fuzz/corpora/asn1/bfd404387988c747ba6d949b3b41b2cdc2fd3474 b/fuzz/corpora/asn1/bfd404387988c747ba6d949b3b41b2cdc2fd3474
+index 0000000..287d5bb
+Binary files /dev/null and b/fuzz/corpora/asn1parse/55f83a9f6e78dbf5ee1a3cc7952a91f86822358e differ
+diff --git a/fuzz/corpora/asn1parse/5617a7607b2c65f8d2f116d14794ceba493d3864 b/fuzz/corpora/asn1parse/5617a7607b2c65f8d2f116d14794ceba493d3864
 new file mode 100644
-index 000000000000..910c9ea1cabd
-Binary files /dev/null and b/fuzz/corpora/asn1/bfd404387988c747ba6d949b3b41b2cdc2fd3474 differ
-diff --git a/fuzz/corpora/asn1/c0495d7328a634f5d1e9f0274f6f320ccc9372f6 b/fuzz/corpora/asn1/c0495d7328a634f5d1e9f0274f6f320ccc9372f6
+index 0000000..512a005
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5617a7607b2c65f8d2f116d14794ceba493d3864 differ
+diff --git a/fuzz/corpora/asn1parse/57fd50a24b462b8ea3a9f26e7d65c01eb3872565 b/fuzz/corpora/asn1parse/57fd50a24b462b8ea3a9f26e7d65c01eb3872565
 new file mode 100644
-index 000000000000..05f655c1b486
-Binary files /dev/null and b/fuzz/corpora/asn1/c0495d7328a634f5d1e9f0274f6f320ccc9372f6 differ
-diff --git a/fuzz/corpora/asn1/c0fafb2ca98578164e3f0e9070c24ff836c41fe3 b/fuzz/corpora/asn1/c0fafb2ca98578164e3f0e9070c24ff836c41fe3
+index 0000000..9959195
+Binary files /dev/null and b/fuzz/corpora/asn1parse/57fd50a24b462b8ea3a9f26e7d65c01eb3872565 differ
+diff --git a/fuzz/corpora/asn1parse/59c511d27d5ec11f5788faf66a7f292cd86ceb23 b/fuzz/corpora/asn1parse/59c511d27d5ec11f5788faf66a7f292cd86ceb23
 new file mode 100644
-index 000000000000..e1f5f1e44fde
-Binary files /dev/null and b/fuzz/corpora/asn1/c0fafb2ca98578164e3f0e9070c24ff836c41fe3 differ
-diff --git a/fuzz/corpora/asn1/c103d1b540b181e5d64c3f372826c7ed0bfbb914 b/fuzz/corpora/asn1/c103d1b540b181e5d64c3f372826c7ed0bfbb914
+index 0000000..5444037
+Binary files /dev/null and b/fuzz/corpora/asn1parse/59c511d27d5ec11f5788faf66a7f292cd86ceb23 differ
+diff --git a/fuzz/corpora/asn1parse/5a3514edc9a14eae1a4182dd13787f11b27c138a b/fuzz/corpora/asn1parse/5a3514edc9a14eae1a4182dd13787f11b27c138a
 new file mode 100644
-index 000000000000..3fdd9d797315
-Binary files /dev/null and b/fuzz/corpora/asn1/c103d1b540b181e5d64c3f372826c7ed0bfbb914 differ
-diff --git a/fuzz/corpora/asn1/c113b99ad1eb9fbaf6a23e093e20b82fc304a38f b/fuzz/corpora/asn1/c113b99ad1eb9fbaf6a23e093e20b82fc304a38f
+index 0000000..414aeae
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5a3514edc9a14eae1a4182dd13787f11b27c138a differ
+diff --git a/fuzz/corpora/asn1parse/5a98569353fce2f80a6d7d99bde5c9802fae309f b/fuzz/corpora/asn1parse/5a98569353fce2f80a6d7d99bde5c9802fae309f
 new file mode 100644
-index 000000000000..8f48611337d5
-Binary files /dev/null and b/fuzz/corpora/asn1/c113b99ad1eb9fbaf6a23e093e20b82fc304a38f differ
-diff --git a/fuzz/corpora/asn1/c115ea15bc049104b6e0d47cc1c7641341f9a25b b/fuzz/corpora/asn1/c115ea15bc049104b6e0d47cc1c7641341f9a25b
+index 0000000..0a3b055
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5a98569353fce2f80a6d7d99bde5c9802fae309f differ
+diff --git a/fuzz/corpora/asn1parse/5b32fda16dbcebeaa706a17df3256c10e4711c2d b/fuzz/corpora/asn1parse/5b32fda16dbcebeaa706a17df3256c10e4711c2d
 new file mode 100644
-index 000000000000..14df3748fa1f
-Binary files /dev/null and b/fuzz/corpora/asn1/c115ea15bc049104b6e0d47cc1c7641341f9a25b differ
-diff --git a/fuzz/corpora/asn1/c14e5ec18c0f8b27a62d8ddcb999d2bf832012bf b/fuzz/corpora/asn1/c14e5ec18c0f8b27a62d8ddcb999d2bf832012bf
+index 0000000..162eefa
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5b32fda16dbcebeaa706a17df3256c10e4711c2d differ
+diff --git a/fuzz/corpora/asn1parse/5bab61eb53176449e25c2c82f172b82cb13ffb9d b/fuzz/corpora/asn1parse/5bab61eb53176449e25c2c82f172b82cb13ffb9d
 new file mode 100644
-index 000000000000..ba1cda7aa591
-Binary files /dev/null and b/fuzz/corpora/asn1/c14e5ec18c0f8b27a62d8ddcb999d2bf832012bf differ
-diff --git a/fuzz/corpora/asn1/c1c0a4bfd3711e588a93783e6740eb11f615ffcf b/fuzz/corpora/asn1/c1c0a4bfd3711e588a93783e6740eb11f615ffcf
+index 0000000..0d758c9
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5bab61eb53176449e25c2c82f172b82cb13ffb9d differ
+diff --git a/fuzz/corpora/asn1parse/5bd470c4cea77c2741c79ade7b10bf14f3849c55 b/fuzz/corpora/asn1parse/5bd470c4cea77c2741c79ade7b10bf14f3849c55
 new file mode 100644
-index 000000000000..bea928e6871d
-Binary files /dev/null and b/fuzz/corpora/asn1/c1c0a4bfd3711e588a93783e6740eb11f615ffcf differ
-diff --git a/fuzz/corpora/asn1/c2358df3e6212d08c87dcbbb97b3e59587823a97 b/fuzz/corpora/asn1/c2358df3e6212d08c87dcbbb97b3e59587823a97
+index 0000000..9ce93c9
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5bd470c4cea77c2741c79ade7b10bf14f3849c55 differ
+diff --git a/fuzz/corpora/asn1parse/5d476603f27dae43725c213249c5ee9a2f8306f0 b/fuzz/corpora/asn1parse/5d476603f27dae43725c213249c5ee9a2f8306f0
 new file mode 100644
-index 000000000000..6cd3cb7b1418
-Binary files /dev/null and b/fuzz/corpora/asn1/c2358df3e6212d08c87dcbbb97b3e59587823a97 differ
-diff --git a/fuzz/corpora/asn1/c251194b42687e885a28cf37ce337e9d0b5fe2ed b/fuzz/corpora/asn1/c251194b42687e885a28cf37ce337e9d0b5fe2ed
+index 0000000..d9c9da0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5d476603f27dae43725c213249c5ee9a2f8306f0 differ
+diff --git a/fuzz/corpora/asn1parse/5d63e724a27154dd83cc340c3d3f54119c40ca72 b/fuzz/corpora/asn1parse/5d63e724a27154dd83cc340c3d3f54119c40ca72
 new file mode 100644
-index 000000000000..86a19f0ef8a9
-Binary files /dev/null and b/fuzz/corpora/asn1/c251194b42687e885a28cf37ce337e9d0b5fe2ed differ
-diff --git a/fuzz/corpora/asn1/c2582faafd3e80182db4dc645cf6c2a27a2854e0 b/fuzz/corpora/asn1/c2582faafd3e80182db4dc645cf6c2a27a2854e0
+index 0000000..a2c5cea
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5d63e724a27154dd83cc340c3d3f54119c40ca72 differ
+diff --git a/fuzz/corpora/asn1parse/5eb17aa65c228f6fa43d4315a56d232b1927b4d7 b/fuzz/corpora/asn1parse/5eb17aa65c228f6fa43d4315a56d232b1927b4d7
 new file mode 100644
-index 000000000000..823d1fff4e2c
-Binary files /dev/null and b/fuzz/corpora/asn1/c2582faafd3e80182db4dc645cf6c2a27a2854e0 differ
-diff --git a/fuzz/corpora/asn1/c2ab035df5749115c8eee6a0dd5e765f178f38a4 b/fuzz/corpora/asn1/c2ab035df5749115c8eee6a0dd5e765f178f38a4
+index 0000000..8e34d70
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5eb17aa65c228f6fa43d4315a56d232b1927b4d7 differ
+diff --git a/fuzz/corpora/asn1parse/5f81f9f6726d889f9b47e51e37efb454f924d93f b/fuzz/corpora/asn1parse/5f81f9f6726d889f9b47e51e37efb454f924d93f
 new file mode 100644
-index 000000000000..812e23ea4465
-Binary files /dev/null and b/fuzz/corpora/asn1/c2ab035df5749115c8eee6a0dd5e765f178f38a4 differ
-diff --git a/fuzz/corpora/asn1/c2aeacaf04e6e3b4802c7189d53aba4c876a9f08 b/fuzz/corpora/asn1/c2aeacaf04e6e3b4802c7189d53aba4c876a9f08
+index 0000000..6d06e5b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5f81f9f6726d889f9b47e51e37efb454f924d93f differ
+diff --git a/fuzz/corpora/asn1parse/5f9e2ddf0af7e1d84c9c0f6017b9ab5a8dcbf2f1 b/fuzz/corpora/asn1parse/5f9e2ddf0af7e1d84c9c0f6017b9ab5a8dcbf2f1
 new file mode 100644
-index 000000000000..d16e870a8d82
-Binary files /dev/null and b/fuzz/corpora/asn1/c2aeacaf04e6e3b4802c7189d53aba4c876a9f08 differ
-diff --git a/fuzz/corpora/asn1/c2c0e18eaf83299082ef657d36e9da8b48a5c82d b/fuzz/corpora/asn1/c2c0e18eaf83299082ef657d36e9da8b48a5c82d
+index 0000000..0220454
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5f9e2ddf0af7e1d84c9c0f6017b9ab5a8dcbf2f1 differ
+diff --git a/fuzz/corpora/asn1parse/5fa48d1ffbc9a079aaf7271399b6ab0a8e533ca6 b/fuzz/corpora/asn1parse/5fa48d1ffbc9a079aaf7271399b6ab0a8e533ca6
 new file mode 100644
-index 000000000000..e0ac30d8e8d6
-Binary files /dev/null and b/fuzz/corpora/asn1/c2c0e18eaf83299082ef657d36e9da8b48a5c82d differ
-diff --git a/fuzz/corpora/asn1/c2c38db6859b7beca0530390aef7e117d54d4b7e b/fuzz/corpora/asn1/c2c38db6859b7beca0530390aef7e117d54d4b7e
+index 0000000..1fdde59
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5fa48d1ffbc9a079aaf7271399b6ab0a8e533ca6 differ
+diff --git a/fuzz/corpora/asn1parse/5fcdb8c6561bd2d86498e277268c7228283fd8e4 b/fuzz/corpora/asn1parse/5fcdb8c6561bd2d86498e277268c7228283fd8e4
 new file mode 100644
-index 000000000000..b154e9bf9aea
-Binary files /dev/null and b/fuzz/corpora/asn1/c2c38db6859b7beca0530390aef7e117d54d4b7e differ
-diff --git a/fuzz/corpora/asn1/c314cfd591973141b6ea5a8b8788a62bda51819c b/fuzz/corpora/asn1/c314cfd591973141b6ea5a8b8788a62bda51819c
+index 0000000..8f5b742
+Binary files /dev/null and b/fuzz/corpora/asn1parse/5fcdb8c6561bd2d86498e277268c7228283fd8e4 differ
+diff --git a/fuzz/corpora/asn1parse/606dae1f1f943dd8c2d99afb10a2622c35e7efc4 b/fuzz/corpora/asn1parse/606dae1f1f943dd8c2d99afb10a2622c35e7efc4
 new file mode 100644
-index 000000000000..059344ffbaa9
-Binary files /dev/null and b/fuzz/corpora/asn1/c314cfd591973141b6ea5a8b8788a62bda51819c differ
-diff --git a/fuzz/corpora/asn1/c3855405f7fe9a3e71e1675bb7d17e49fea7c203 b/fuzz/corpora/asn1/c3855405f7fe9a3e71e1675bb7d17e49fea7c203
+index 0000000..fd86cf0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/606dae1f1f943dd8c2d99afb10a2622c35e7efc4 differ
+diff --git a/fuzz/corpora/asn1parse/650cf6241b45e084429ce2083e808c1ddd7d0280 b/fuzz/corpora/asn1parse/650cf6241b45e084429ce2083e808c1ddd7d0280
 new file mode 100644
-index 000000000000..a03457265aa9
-Binary files /dev/null and b/fuzz/corpora/asn1/c3855405f7fe9a3e71e1675bb7d17e49fea7c203 differ
-diff --git a/fuzz/corpora/asn1/c4454bb197fbbe7b62036a836dd7fe6031b4bf58 b/fuzz/corpora/asn1/c4454bb197fbbe7b62036a836dd7fe6031b4bf58
+index 0000000..6566e35
+Binary files /dev/null and b/fuzz/corpora/asn1parse/650cf6241b45e084429ce2083e808c1ddd7d0280 differ
+diff --git a/fuzz/corpora/asn1parse/65ca225d71ea5d0c377abda01ff90d3d6c17a965 b/fuzz/corpora/asn1parse/65ca225d71ea5d0c377abda01ff90d3d6c17a965
 new file mode 100644
-index 000000000000..47f38e9778e8
-Binary files /dev/null and b/fuzz/corpora/asn1/c4454bb197fbbe7b62036a836dd7fe6031b4bf58 differ
-diff --git a/fuzz/corpora/asn1/c4876f3a1ec7dae2d997ad2d03558ff7f50b7f8b b/fuzz/corpora/asn1/c4876f3a1ec7dae2d997ad2d03558ff7f50b7f8b
+index 0000000..0416a0a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/65ca225d71ea5d0c377abda01ff90d3d6c17a965 differ
+diff --git a/fuzz/corpora/asn1parse/670f3498d1735c7af211d954300943dde6d16074 b/fuzz/corpora/asn1parse/670f3498d1735c7af211d954300943dde6d16074
 new file mode 100644
-index 000000000000..86ebac64b1bf
-Binary files /dev/null and b/fuzz/corpora/asn1/c4876f3a1ec7dae2d997ad2d03558ff7f50b7f8b differ
-diff --git a/fuzz/corpora/asn1/c4ce910b7cbc5ab0a0f12687c32141c27650d625 b/fuzz/corpora/asn1/c4ce910b7cbc5ab0a0f12687c32141c27650d625
+index 0000000..01c5f0a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/670f3498d1735c7af211d954300943dde6d16074 differ
+diff --git a/fuzz/corpora/asn1parse/67f669b07c86c9df21a311561fadfba480cb827f b/fuzz/corpora/asn1parse/67f669b07c86c9df21a311561fadfba480cb827f
 new file mode 100644
-index 000000000000..e39e080edd53
-Binary files /dev/null and b/fuzz/corpora/asn1/c4ce910b7cbc5ab0a0f12687c32141c27650d625 differ
-diff --git a/fuzz/corpora/asn1/c506f9b1b1b14a6e2c1e19a995413ef9184405f9 b/fuzz/corpora/asn1/c506f9b1b1b14a6e2c1e19a995413ef9184405f9
+index 0000000..f976c2a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/67f669b07c86c9df21a311561fadfba480cb827f differ
+diff --git a/fuzz/corpora/asn1parse/6830abb1f4a3d83460e6aca1e7164e7ef7c8e3a6 b/fuzz/corpora/asn1parse/6830abb1f4a3d83460e6aca1e7164e7ef7c8e3a6
 new file mode 100644
-index 000000000000..eafaf30442f5
-Binary files /dev/null and b/fuzz/corpora/asn1/c506f9b1b1b14a6e2c1e19a995413ef9184405f9 differ
-diff --git a/fuzz/corpora/asn1/c512d04dddd4a7c142c1a16da61ec1b35863bdc5 b/fuzz/corpora/asn1/c512d04dddd4a7c142c1a16da61ec1b35863bdc5
+index 0000000..2eabca0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6830abb1f4a3d83460e6aca1e7164e7ef7c8e3a6 differ
+diff --git a/fuzz/corpora/asn1parse/6931b64fc31d5ff22a61359a39bb9c1e88222d6e b/fuzz/corpora/asn1parse/6931b64fc31d5ff22a61359a39bb9c1e88222d6e
 new file mode 100644
-index 000000000000..e848ad82d89b
-Binary files /dev/null and b/fuzz/corpora/asn1/c512d04dddd4a7c142c1a16da61ec1b35863bdc5 differ
-diff --git a/fuzz/corpora/asn1/c51e85735bd1dc27fb43e2995e15c0a1252afa76 b/fuzz/corpora/asn1/c51e85735bd1dc27fb43e2995e15c0a1252afa76
+index 0000000..9c4b0e0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6931b64fc31d5ff22a61359a39bb9c1e88222d6e differ
+diff --git a/fuzz/corpora/asn1parse/699c9163889627104d17c02c4ae77902a4e6f6ab b/fuzz/corpora/asn1parse/699c9163889627104d17c02c4ae77902a4e6f6ab
 new file mode 100644
-index 000000000000..488169f2bc5c
-Binary files /dev/null and b/fuzz/corpora/asn1/c51e85735bd1dc27fb43e2995e15c0a1252afa76 differ
-diff --git a/fuzz/corpora/asn1/c53d335e1f6e64c2814f479a827b8165f632ed52 b/fuzz/corpora/asn1/c53d335e1f6e64c2814f479a827b8165f632ed52
+index 0000000..b030634
+Binary files /dev/null and b/fuzz/corpora/asn1parse/699c9163889627104d17c02c4ae77902a4e6f6ab differ
+diff --git a/fuzz/corpora/asn1parse/69b09a9cd250aae62114a949b4ce18f5afab773e b/fuzz/corpora/asn1parse/69b09a9cd250aae62114a949b4ce18f5afab773e
 new file mode 100644
-index 000000000000..b91a7d8dd76a
-Binary files /dev/null and b/fuzz/corpora/asn1/c53d335e1f6e64c2814f479a827b8165f632ed52 differ
-diff --git a/fuzz/corpora/asn1/c552f19e4256db53ee77f6e7e834d774d59ad31e b/fuzz/corpora/asn1/c552f19e4256db53ee77f6e7e834d774d59ad31e
+index 0000000..61b2af4
+Binary files /dev/null and b/fuzz/corpora/asn1parse/69b09a9cd250aae62114a949b4ce18f5afab773e differ
+diff --git a/fuzz/corpora/asn1parse/6a31ad7abc949967904218c6ce12299bbad6b789 b/fuzz/corpora/asn1parse/6a31ad7abc949967904218c6ce12299bbad6b789
 new file mode 100644
-index 000000000000..99ab91554a01
-Binary files /dev/null and b/fuzz/corpora/asn1/c552f19e4256db53ee77f6e7e834d774d59ad31e differ
-diff --git a/fuzz/corpora/asn1/c56674a7b201f8ea14754db1539bf0f8e556ba7d b/fuzz/corpora/asn1/c56674a7b201f8ea14754db1539bf0f8e556ba7d
+index 0000000..619b023
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6a31ad7abc949967904218c6ce12299bbad6b789 differ
+diff --git a/fuzz/corpora/asn1parse/6a7ba9bc4604756d7742626f23007d7a81480c5e b/fuzz/corpora/asn1parse/6a7ba9bc4604756d7742626f23007d7a81480c5e
 new file mode 100644
-index 000000000000..156a76170c41
-Binary files /dev/null and b/fuzz/corpora/asn1/c56674a7b201f8ea14754db1539bf0f8e556ba7d differ
-diff --git a/fuzz/corpora/asn1/c5789b212c7e1c19a406e33081904a9b6aa09686 b/fuzz/corpora/asn1/c5789b212c7e1c19a406e33081904a9b6aa09686
+index 0000000..c1772b7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6a7ba9bc4604756d7742626f23007d7a81480c5e differ
+diff --git a/fuzz/corpora/asn1parse/6c1e4760c11ff1d575aaf8032ccc2558b559e426 b/fuzz/corpora/asn1parse/6c1e4760c11ff1d575aaf8032ccc2558b559e426
 new file mode 100644
-index 000000000000..f7417273034f
-Binary files /dev/null and b/fuzz/corpora/asn1/c5789b212c7e1c19a406e33081904a9b6aa09686 differ
-diff --git a/fuzz/corpora/asn1/c59a2969cc9c8f2c199de79f7864061b8eb56326 b/fuzz/corpora/asn1/c59a2969cc9c8f2c199de79f7864061b8eb56326
+index 0000000..42f2b60
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6c1e4760c11ff1d575aaf8032ccc2558b559e426 differ
+diff --git a/fuzz/corpora/asn1parse/6c322149ea3bc7d5f553e310dd69e9a8aeb0e22d b/fuzz/corpora/asn1parse/6c322149ea3bc7d5f553e310dd69e9a8aeb0e22d
 new file mode 100644
-index 000000000000..09b989b3cd1e
-Binary files /dev/null and b/fuzz/corpora/asn1/c59a2969cc9c8f2c199de79f7864061b8eb56326 differ
-diff --git a/fuzz/corpora/asn1/c614f792b81da3719b78d6a49acdd77eca6013dc b/fuzz/corpora/asn1/c614f792b81da3719b78d6a49acdd77eca6013dc
+index 0000000..e36ccb7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6c322149ea3bc7d5f553e310dd69e9a8aeb0e22d differ
+diff --git a/fuzz/corpora/asn1parse/6c93750be395a298fd69c9970ef09136049de7a7 b/fuzz/corpora/asn1parse/6c93750be395a298fd69c9970ef09136049de7a7
 new file mode 100644
-index 000000000000..18e892d36c66
-Binary files /dev/null and b/fuzz/corpora/asn1/c614f792b81da3719b78d6a49acdd77eca6013dc differ
-diff --git a/fuzz/corpora/asn1/c61aee43e75521bc756bf1039f81578c0efd8f56 b/fuzz/corpora/asn1/c61aee43e75521bc756bf1039f81578c0efd8f56
+index 0000000..4801b64
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6c93750be395a298fd69c9970ef09136049de7a7 differ
+diff --git a/fuzz/corpora/asn1parse/6d0e5c3afe023349ebb954548769b682f734d095 b/fuzz/corpora/asn1parse/6d0e5c3afe023349ebb954548769b682f734d095
 new file mode 100644
-index 000000000000..9be0ead1b6e4
-Binary files /dev/null and b/fuzz/corpora/asn1/c61aee43e75521bc756bf1039f81578c0efd8f56 differ
-diff --git a/fuzz/corpora/asn1/c62c64f00567c5368cae37f4e64e1e82ff785677 b/fuzz/corpora/asn1/c62c64f00567c5368cae37f4e64e1e82ff785677
+index 0000000..b688c8a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6d0e5c3afe023349ebb954548769b682f734d095 differ
+diff --git a/fuzz/corpora/asn1parse/6d808fffe62abb90efaf6f35e5b2a13481f8b888 b/fuzz/corpora/asn1parse/6d808fffe62abb90efaf6f35e5b2a13481f8b888
 new file mode 100644
-index 000000000000..7d6519130e7a
-Binary files /dev/null and b/fuzz/corpora/asn1/c62c64f00567c5368cae37f4e64e1e82ff785677 differ
-diff --git a/fuzz/corpora/asn1/c65cae49f6407b5c878add8d41d97c41b61b5a2d b/fuzz/corpora/asn1/c65cae49f6407b5c878add8d41d97c41b61b5a2d
+index 0000000..ca17f3d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6d808fffe62abb90efaf6f35e5b2a13481f8b888 differ
+diff --git a/fuzz/corpora/asn1parse/6e228749713b2fd9eeb020e4de35fa5e55138c3e b/fuzz/corpora/asn1parse/6e228749713b2fd9eeb020e4de35fa5e55138c3e
 new file mode 100644
-index 000000000000..a44c7aa7fee0
-Binary files /dev/null and b/fuzz/corpora/asn1/c65cae49f6407b5c878add8d41d97c41b61b5a2d differ
-diff --git a/fuzz/corpora/asn1/c67bbd9a71520c4abe1880aec486c87d0a73e769 b/fuzz/corpora/asn1/c67bbd9a71520c4abe1880aec486c87d0a73e769
+index 0000000..2d0fd87
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6e228749713b2fd9eeb020e4de35fa5e55138c3e differ
+diff --git a/fuzz/corpora/asn1parse/6fc37978c4ae3a27fce9a14ed9aca4edd411b2b4 b/fuzz/corpora/asn1parse/6fc37978c4ae3a27fce9a14ed9aca4edd411b2b4
 new file mode 100644
-index 000000000000..3c8447d28fcb
-Binary files /dev/null and b/fuzz/corpora/asn1/c67bbd9a71520c4abe1880aec486c87d0a73e769 differ
-diff --git a/fuzz/corpora/asn1/c6e0d4887f4c6ebad9fb27dc830604c4d8807a34 b/fuzz/corpora/asn1/c6e0d4887f4c6ebad9fb27dc830604c4d8807a34
+index 0000000..0a0598c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/6fc37978c4ae3a27fce9a14ed9aca4edd411b2b4 differ
+diff --git a/fuzz/corpora/asn1parse/701183769cb8a3195c8d6135391223dc11d1942d b/fuzz/corpora/asn1parse/701183769cb8a3195c8d6135391223dc11d1942d
 new file mode 100644
-index 000000000000..9b8967184f37
-Binary files /dev/null and b/fuzz/corpora/asn1/c6e0d4887f4c6ebad9fb27dc830604c4d8807a34 differ
-diff --git a/fuzz/corpora/asn1/c6eae9723eebac09ca6e44702d78d1ffbc0c4fbd b/fuzz/corpora/asn1/c6eae9723eebac09ca6e44702d78d1ffbc0c4fbd
+index 0000000..7a41dfe
+Binary files /dev/null and b/fuzz/corpora/asn1parse/701183769cb8a3195c8d6135391223dc11d1942d differ
+diff --git a/fuzz/corpora/asn1parse/708ca98f2e8daabfd7933631e794cecfaba63ac0 b/fuzz/corpora/asn1parse/708ca98f2e8daabfd7933631e794cecfaba63ac0
 new file mode 100644
-index 000000000000..f635dc90c25b
-Binary files /dev/null and b/fuzz/corpora/asn1/c6eae9723eebac09ca6e44702d78d1ffbc0c4fbd differ
-diff --git a/fuzz/corpora/asn1/c73eaf8bd6a4381d19f0f2389f15fce8085f69c9 b/fuzz/corpora/asn1/c73eaf8bd6a4381d19f0f2389f15fce8085f69c9
+index 0000000..2ef451b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/708ca98f2e8daabfd7933631e794cecfaba63ac0 differ
+diff --git a/fuzz/corpora/asn1parse/70c4ab1a67b8bf29f3abb701123d0e1d9b6d02d3 b/fuzz/corpora/asn1parse/70c4ab1a67b8bf29f3abb701123d0e1d9b6d02d3
 new file mode 100644
-index 000000000000..fc1f969c0c2a
-Binary files /dev/null and b/fuzz/corpora/asn1/c73eaf8bd6a4381d19f0f2389f15fce8085f69c9 differ
-diff --git a/fuzz/corpora/asn1/c77149071ec3a13111081d173e47c859eb8a69c5 b/fuzz/corpora/asn1/c77149071ec3a13111081d173e47c859eb8a69c5
+index 0000000..7b6dc1b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/70c4ab1a67b8bf29f3abb701123d0e1d9b6d02d3 differ
+diff --git a/fuzz/corpora/asn1parse/70d4dc49c1d135e736b3a257d52e0979256f4e02 b/fuzz/corpora/asn1parse/70d4dc49c1d135e736b3a257d52e0979256f4e02
 new file mode 100644
-index 000000000000..e3891648736c
-Binary files /dev/null and b/fuzz/corpora/asn1/c77149071ec3a13111081d173e47c859eb8a69c5 differ
-diff --git a/fuzz/corpora/asn1/c795dbf7d0e097eb2fa3ed5bf768b74df42d9993 b/fuzz/corpora/asn1/c795dbf7d0e097eb2fa3ed5bf768b74df42d9993
+index 0000000..5963f6f
+Binary files /dev/null and b/fuzz/corpora/asn1parse/70d4dc49c1d135e736b3a257d52e0979256f4e02 differ
+diff --git a/fuzz/corpora/asn1parse/716bddf9a58ce3d7da4ba4fd5e575dc85ba7299f b/fuzz/corpora/asn1parse/716bddf9a58ce3d7da4ba4fd5e575dc85ba7299f
 new file mode 100644
-index 000000000000..7f3fd3b6ada1
-Binary files /dev/null and b/fuzz/corpora/asn1/c795dbf7d0e097eb2fa3ed5bf768b74df42d9993 differ
-diff --git a/fuzz/corpora/asn1/c7af7044a2d0312192d185b137ba4c4220197da6 b/fuzz/corpora/asn1/c7af7044a2d0312192d185b137ba4c4220197da6
+index 0000000..7e5093d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/716bddf9a58ce3d7da4ba4fd5e575dc85ba7299f differ
+diff --git a/fuzz/corpora/asn1parse/72a17e49a4b37de749fe68e4bae55802870aa591 b/fuzz/corpora/asn1parse/72a17e49a4b37de749fe68e4bae55802870aa591
 new file mode 100644
-index 000000000000..a4963a25cb10
-Binary files /dev/null and b/fuzz/corpora/asn1/c7af7044a2d0312192d185b137ba4c4220197da6 differ
-diff --git a/fuzz/corpora/asn1/c832164b3e52986c4bceec5608db3648368ac591 b/fuzz/corpora/asn1/c832164b3e52986c4bceec5608db3648368ac591
+index 0000000..e08fc6b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/72a17e49a4b37de749fe68e4bae55802870aa591 differ
+diff --git a/fuzz/corpora/asn1parse/7388ea590edf90ecdd59be39726583742cffc402 b/fuzz/corpora/asn1parse/7388ea590edf90ecdd59be39726583742cffc402
 new file mode 100644
-index 000000000000..933b17406132
-Binary files /dev/null and b/fuzz/corpora/asn1/c832164b3e52986c4bceec5608db3648368ac591 differ
-diff --git a/fuzz/corpora/asn1/c8a5926494a4081a39c4efc729f64927efb6237e b/fuzz/corpora/asn1/c8a5926494a4081a39c4efc729f64927efb6237e
+index 0000000..3d764b1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7388ea590edf90ecdd59be39726583742cffc402 differ
+diff --git a/fuzz/corpora/asn1parse/739d0095359e57cf912947060227e1f019112066 b/fuzz/corpora/asn1parse/739d0095359e57cf912947060227e1f019112066
 new file mode 100644
-index 000000000000..92114ab493f4
-Binary files /dev/null and b/fuzz/corpora/asn1/c8a5926494a4081a39c4efc729f64927efb6237e differ
-diff --git a/fuzz/corpora/asn1/c8c28e382c12ddd5a05d7072b78ff464c09498a7 b/fuzz/corpora/asn1/c8c28e382c12ddd5a05d7072b78ff464c09498a7
+index 0000000..c7ffb1c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/739d0095359e57cf912947060227e1f019112066 differ
+diff --git a/fuzz/corpora/asn1parse/75859ac2b768af2d69845b5c49ea0163f98730c4 b/fuzz/corpora/asn1parse/75859ac2b768af2d69845b5c49ea0163f98730c4
 new file mode 100644
-index 000000000000..ccc1d661492d
-Binary files /dev/null and b/fuzz/corpora/asn1/c8c28e382c12ddd5a05d7072b78ff464c09498a7 differ
-diff --git a/fuzz/corpora/asn1/c916ac453e05de0a058dcace6cb84b78c2e0818a b/fuzz/corpora/asn1/c916ac453e05de0a058dcace6cb84b78c2e0818a
+index 0000000..533e709
+Binary files /dev/null and b/fuzz/corpora/asn1parse/75859ac2b768af2d69845b5c49ea0163f98730c4 differ
+diff --git a/fuzz/corpora/asn1parse/75d333b8fabbd287821b8d10d3fe3a54dce3f427 b/fuzz/corpora/asn1parse/75d333b8fabbd287821b8d10d3fe3a54dce3f427
 new file mode 100644
-index 000000000000..3997c7e378e8
-Binary files /dev/null and b/fuzz/corpora/asn1/c916ac453e05de0a058dcace6cb84b78c2e0818a differ
-diff --git a/fuzz/corpora/asn1/c9a3fe25c2940fdb3cf3688e79881b1dc5ca213b b/fuzz/corpora/asn1/c9a3fe25c2940fdb3cf3688e79881b1dc5ca213b
+index 0000000..5bc0648
+Binary files /dev/null and b/fuzz/corpora/asn1parse/75d333b8fabbd287821b8d10d3fe3a54dce3f427 differ
+diff --git a/fuzz/corpora/asn1parse/7610532c879bef16a133118f70ff8b8037a7707d b/fuzz/corpora/asn1parse/7610532c879bef16a133118f70ff8b8037a7707d
 new file mode 100644
-index 000000000000..57293db79839
-Binary files /dev/null and b/fuzz/corpora/asn1/c9a3fe25c2940fdb3cf3688e79881b1dc5ca213b differ
-diff --git a/fuzz/corpora/asn1/ca086311fb6bf61cc944d2cd927205eaa486a667 b/fuzz/corpora/asn1/ca086311fb6bf61cc944d2cd927205eaa486a667
+index 0000000..4bda238
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7610532c879bef16a133118f70ff8b8037a7707d differ
+diff --git a/fuzz/corpora/asn1parse/761ffd8e88ae3403043ddbc153738e848387256f b/fuzz/corpora/asn1parse/761ffd8e88ae3403043ddbc153738e848387256f
 new file mode 100644
-index 000000000000..9314e0df0d27
-Binary files /dev/null and b/fuzz/corpora/asn1/ca086311fb6bf61cc944d2cd927205eaa486a667 differ
-diff --git a/fuzz/corpora/asn1/ca1249c3d00f14f1781c7795aa0628e1c6907753 b/fuzz/corpora/asn1/ca1249c3d00f14f1781c7795aa0628e1c6907753
+index 0000000..89478ab
+Binary files /dev/null and b/fuzz/corpora/asn1parse/761ffd8e88ae3403043ddbc153738e848387256f differ
+diff --git a/fuzz/corpora/asn1parse/76659a8d2afc0c07f9d67a7818dd0c2bcdfbb294 b/fuzz/corpora/asn1parse/76659a8d2afc0c07f9d67a7818dd0c2bcdfbb294
 new file mode 100644
-index 000000000000..18d55778466b
-Binary files /dev/null and b/fuzz/corpora/asn1/ca1249c3d00f14f1781c7795aa0628e1c6907753 differ
-diff --git a/fuzz/corpora/asn1/ca522ab42f16f014bde75753a60102f764c120e1 b/fuzz/corpora/asn1/ca522ab42f16f014bde75753a60102f764c120e1
+index 0000000..b304059
+Binary files /dev/null and b/fuzz/corpora/asn1parse/76659a8d2afc0c07f9d67a7818dd0c2bcdfbb294 differ
+diff --git a/fuzz/corpora/asn1parse/766fad7cbb4352f9e54f69c1cd5efc1d39be7c11 b/fuzz/corpora/asn1parse/766fad7cbb4352f9e54f69c1cd5efc1d39be7c11
 new file mode 100644
-index 000000000000..a8e48b62b9b9
-Binary files /dev/null and b/fuzz/corpora/asn1/ca522ab42f16f014bde75753a60102f764c120e1 differ
-diff --git a/fuzz/corpora/asn1/ca6971d594a0fcf099594e7da800fb02b08dea33 b/fuzz/corpora/asn1/ca6971d594a0fcf099594e7da800fb02b08dea33
+index 0000000..6150393
+Binary files /dev/null and b/fuzz/corpora/asn1parse/766fad7cbb4352f9e54f69c1cd5efc1d39be7c11 differ
+diff --git a/fuzz/corpora/asn1parse/76c66d7ca20fb78eb2c86eca0c36922e901474f9 b/fuzz/corpora/asn1parse/76c66d7ca20fb78eb2c86eca0c36922e901474f9
 new file mode 100644
-index 000000000000..1c0843da5f16
-Binary files /dev/null and b/fuzz/corpora/asn1/ca6971d594a0fcf099594e7da800fb02b08dea33 differ
-diff --git a/fuzz/corpora/asn1/ca777a6a1645ea663c9324bc701b5ffa7fef4c38 b/fuzz/corpora/asn1/ca777a6a1645ea663c9324bc701b5ffa7fef4c38
+index 0000000..3914a1a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/76c66d7ca20fb78eb2c86eca0c36922e901474f9 differ
+diff --git a/fuzz/corpora/asn1parse/7702b86b6e9ced18a2581858bba27fe4c727077d b/fuzz/corpora/asn1parse/7702b86b6e9ced18a2581858bba27fe4c727077d
 new file mode 100644
-index 000000000000..ee28e4b99eeb
-Binary files /dev/null and b/fuzz/corpora/asn1/ca777a6a1645ea663c9324bc701b5ffa7fef4c38 differ
-diff --git a/fuzz/corpora/asn1/cab487c4f446a1da4eb701a7aec7d4877af91198 b/fuzz/corpora/asn1/cab487c4f446a1da4eb701a7aec7d4877af91198
+index 0000000..71f4647
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7702b86b6e9ced18a2581858bba27fe4c727077d differ
+diff --git a/fuzz/corpora/asn1parse/77336c9db08321cf33af0120768d02d22baa9ce6 b/fuzz/corpora/asn1parse/77336c9db08321cf33af0120768d02d22baa9ce6
 new file mode 100644
-index 000000000000..36f58dec4bf1
-Binary files /dev/null and b/fuzz/corpora/asn1/cab487c4f446a1da4eb701a7aec7d4877af91198 differ
-diff --git a/fuzz/corpora/asn1/cac677557e542e319f833cef0f3235e05e153693 b/fuzz/corpora/asn1/cac677557e542e319f833cef0f3235e05e153693
+index 0000000..e2e0610
+Binary files /dev/null and b/fuzz/corpora/asn1parse/77336c9db08321cf33af0120768d02d22baa9ce6 differ
+diff --git a/fuzz/corpora/asn1parse/7893d44985a8463839afdcfd49ff62f5f159e7f5 b/fuzz/corpora/asn1parse/7893d44985a8463839afdcfd49ff62f5f159e7f5
 new file mode 100644
-index 000000000000..7e4dea3e688a
-Binary files /dev/null and b/fuzz/corpora/asn1/cac677557e542e319f833cef0f3235e05e153693 differ
-diff --git a/fuzz/corpora/asn1/cafb3fe70238b7264dec1fdfc1aaa76d9e48da3f b/fuzz/corpora/asn1/cafb3fe70238b7264dec1fdfc1aaa76d9e48da3f
+index 0000000..1b8b72e
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7893d44985a8463839afdcfd49ff62f5f159e7f5 differ
+diff --git a/fuzz/corpora/asn1parse/78cad09ff275e3ac43ecce283709cc83fe4aeb30 b/fuzz/corpora/asn1parse/78cad09ff275e3ac43ecce283709cc83fe4aeb30
 new file mode 100644
-index 000000000000..9e3996785d7d
-Binary files /dev/null and b/fuzz/corpora/asn1/cafb3fe70238b7264dec1fdfc1aaa76d9e48da3f differ
-diff --git a/fuzz/corpora/asn1/cb013c49d5d661170705b6387640304f752f40f2 b/fuzz/corpora/asn1/cb013c49d5d661170705b6387640304f752f40f2
+index 0000000..3c337ad
+Binary files /dev/null and b/fuzz/corpora/asn1parse/78cad09ff275e3ac43ecce283709cc83fe4aeb30 differ
+diff --git a/fuzz/corpora/asn1parse/78f468a7646f0094403acf24aafe49f57fc5cfe9 b/fuzz/corpora/asn1parse/78f468a7646f0094403acf24aafe49f57fc5cfe9
 new file mode 100644
-index 000000000000..5b01964e2103
-Binary files /dev/null and b/fuzz/corpora/asn1/cb013c49d5d661170705b6387640304f752f40f2 differ
-diff --git a/fuzz/corpora/asn1/cb90c414d161f93e973fa22dc9a5844f49d784cf b/fuzz/corpora/asn1/cb90c414d161f93e973fa22dc9a5844f49d784cf
+index 0000000..c7c3e82
+Binary files /dev/null and b/fuzz/corpora/asn1parse/78f468a7646f0094403acf24aafe49f57fc5cfe9 differ
+diff --git a/fuzz/corpora/asn1parse/7aa3cd76f33a309159ab228b2984119df7b07861 b/fuzz/corpora/asn1parse/7aa3cd76f33a309159ab228b2984119df7b07861
 new file mode 100644
-index 000000000000..d969a7e57560
-Binary files /dev/null and b/fuzz/corpora/asn1/cb90c414d161f93e973fa22dc9a5844f49d784cf differ
-diff --git a/fuzz/corpora/asn1/cbbce2f37f09ed39ee7321a74e0640c0023c9e12 b/fuzz/corpora/asn1/cbbce2f37f09ed39ee7321a74e0640c0023c9e12
+index 0000000..6813fa6
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7aa3cd76f33a309159ab228b2984119df7b07861 differ
+diff --git a/fuzz/corpora/asn1parse/7ae1ca162edb7f78a852789b584a5c3410c8bf96 b/fuzz/corpora/asn1parse/7ae1ca162edb7f78a852789b584a5c3410c8bf96
 new file mode 100644
-index 000000000000..10f175ffe8f2
-Binary files /dev/null and b/fuzz/corpora/asn1/cbbce2f37f09ed39ee7321a74e0640c0023c9e12 differ
-diff --git a/fuzz/corpora/asn1/cc1acdae1385a3d5be22e9bffff98ebf01d39406 b/fuzz/corpora/asn1/cc1acdae1385a3d5be22e9bffff98ebf01d39406
+index 0000000..44ec1eb
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7ae1ca162edb7f78a852789b584a5c3410c8bf96 differ
+diff --git a/fuzz/corpora/asn1parse/7bef59d7f356c3120dbdb8d7a5c5f83e2f74d771 b/fuzz/corpora/asn1parse/7bef59d7f356c3120dbdb8d7a5c5f83e2f74d771
 new file mode 100644
-index 000000000000..abc71aede2ab
-Binary files /dev/null and b/fuzz/corpora/asn1/cc1acdae1385a3d5be22e9bffff98ebf01d39406 differ
-diff --git a/fuzz/corpora/asn1/cc696f85b1fa524c6cd17b71d0227320bc91969f b/fuzz/corpora/asn1/cc696f85b1fa524c6cd17b71d0227320bc91969f
+index 0000000..8debbab
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7bef59d7f356c3120dbdb8d7a5c5f83e2f74d771 differ
+diff --git a/fuzz/corpora/asn1parse/7c1ce8b10a97536fa01f1a699151d77aa2f46ed8 b/fuzz/corpora/asn1parse/7c1ce8b10a97536fa01f1a699151d77aa2f46ed8
 new file mode 100644
-index 000000000000..2d53a926b697
-Binary files /dev/null and b/fuzz/corpora/asn1/cc696f85b1fa524c6cd17b71d0227320bc91969f differ
-diff --git a/fuzz/corpora/asn1/cc744d1f970d0cbf0eaea3f4fb35068c84e7ac9d b/fuzz/corpora/asn1/cc744d1f970d0cbf0eaea3f4fb35068c84e7ac9d
+index 0000000..3a670db
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7c1ce8b10a97536fa01f1a699151d77aa2f46ed8 differ
+diff --git a/fuzz/corpora/asn1parse/7c55fff2cedecee2c0107cc8f63e36fd64d8c593 b/fuzz/corpora/asn1parse/7c55fff2cedecee2c0107cc8f63e36fd64d8c593
 new file mode 100644
-index 000000000000..40f2a5d6ddaf
-Binary files /dev/null and b/fuzz/corpora/asn1/cc744d1f970d0cbf0eaea3f4fb35068c84e7ac9d differ
-diff --git a/fuzz/corpora/asn1/cde0ea70866bbc4da0c517a3558dc33d8cb88f33 b/fuzz/corpora/asn1/cde0ea70866bbc4da0c517a3558dc33d8cb88f33
+index 0000000..263fbb0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7c55fff2cedecee2c0107cc8f63e36fd64d8c593 differ
+diff --git a/fuzz/corpora/asn1parse/7d1fe7dd371c4ef2e7176cc9f3190cb916b27b64 b/fuzz/corpora/asn1parse/7d1fe7dd371c4ef2e7176cc9f3190cb916b27b64
 new file mode 100644
-index 000000000000..b16d282e776d
-Binary files /dev/null and b/fuzz/corpora/asn1/cde0ea70866bbc4da0c517a3558dc33d8cb88f33 differ
-diff --git a/fuzz/corpora/asn1/ceb3baaaad7d1dae92086d4334b66a4521966bca b/fuzz/corpora/asn1/ceb3baaaad7d1dae92086d4334b66a4521966bca
+index 0000000..4eca932
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7d1fe7dd371c4ef2e7176cc9f3190cb916b27b64 differ
+diff --git a/fuzz/corpora/asn1parse/7ea230ce5ee4519134d044a8f8140d6c458fd514 b/fuzz/corpora/asn1parse/7ea230ce5ee4519134d044a8f8140d6c458fd514
 new file mode 100644
-index 000000000000..8cfbe220e6a5
-Binary files /dev/null and b/fuzz/corpora/asn1/ceb3baaaad7d1dae92086d4334b66a4521966bca differ
-diff --git a/fuzz/corpora/asn1/ceeaec46384b488b7c980e1fe6f0770c635d1296 b/fuzz/corpora/asn1/ceeaec46384b488b7c980e1fe6f0770c635d1296
+index 0000000..e97527a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7ea230ce5ee4519134d044a8f8140d6c458fd514 differ
+diff --git a/fuzz/corpora/asn1parse/7fc7162a3ac8d01501fd2e15d2c3e52996320326 b/fuzz/corpora/asn1parse/7fc7162a3ac8d01501fd2e15d2c3e52996320326
 new file mode 100644
-index 000000000000..d98786657185
-Binary files /dev/null and b/fuzz/corpora/asn1/ceeaec46384b488b7c980e1fe6f0770c635d1296 differ
-diff --git a/fuzz/corpora/asn1/ceef2bab1683ac07d7ccaa73bb5bf7dc728af129 b/fuzz/corpora/asn1/ceef2bab1683ac07d7ccaa73bb5bf7dc728af129
+index 0000000..ed000b1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7fc7162a3ac8d01501fd2e15d2c3e52996320326 differ
+diff --git a/fuzz/corpora/asn1parse/7fea2ff7784ea52b4305610423eaf79729176a83 b/fuzz/corpora/asn1parse/7fea2ff7784ea52b4305610423eaf79729176a83
 new file mode 100644
-index 000000000000..fcb5c837412b
-Binary files /dev/null and b/fuzz/corpora/asn1/ceef2bab1683ac07d7ccaa73bb5bf7dc728af129 differ
-diff --git a/fuzz/corpora/asn1/cf37e82e369aae15cc07515a340c6fddfc44090f b/fuzz/corpora/asn1/cf37e82e369aae15cc07515a340c6fddfc44090f
+index 0000000..e6e535c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/7fea2ff7784ea52b4305610423eaf79729176a83 differ
+diff --git a/fuzz/corpora/asn1parse/813751e17baca905f03a1d3bfa4f658923e7558b b/fuzz/corpora/asn1parse/813751e17baca905f03a1d3bfa4f658923e7558b
 new file mode 100644
-index 000000000000..2d02f478bb64
-Binary files /dev/null and b/fuzz/corpora/asn1/cf37e82e369aae15cc07515a340c6fddfc44090f differ
-diff --git a/fuzz/corpora/asn1/cf3d2eb607f42767731679fbae355a77768d5f75 b/fuzz/corpora/asn1/cf3d2eb607f42767731679fbae355a77768d5f75
+index 0000000..a8238f0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/813751e17baca905f03a1d3bfa4f658923e7558b differ
+diff --git a/fuzz/corpora/asn1parse/818e98daa0122418fd34805aa5d2af5768dd2427 b/fuzz/corpora/asn1parse/818e98daa0122418fd34805aa5d2af5768dd2427
 new file mode 100644
-index 000000000000..ff94b0ca1834
-Binary files /dev/null and b/fuzz/corpora/asn1/cf3d2eb607f42767731679fbae355a77768d5f75 differ
-diff --git a/fuzz/corpora/asn1/cf73736c95cf93eae08604fb7c79183d2254831e b/fuzz/corpora/asn1/cf73736c95cf93eae08604fb7c79183d2254831e
+index 0000000..56ed311
+Binary files /dev/null and b/fuzz/corpora/asn1parse/818e98daa0122418fd34805aa5d2af5768dd2427 differ
+diff --git a/fuzz/corpora/asn1parse/834943f158056ae1d12bb83e5bf6779c45570fb8 b/fuzz/corpora/asn1parse/834943f158056ae1d12bb83e5bf6779c45570fb8
 new file mode 100644
-index 000000000000..1bf198c37537
-Binary files /dev/null and b/fuzz/corpora/asn1/cf73736c95cf93eae08604fb7c79183d2254831e differ
-diff --git a/fuzz/corpora/asn1/cfd25b284f78250222c415d54426eaa5735ca1ce b/fuzz/corpora/asn1/cfd25b284f78250222c415d54426eaa5735ca1ce
+index 0000000..23155df
+Binary files /dev/null and b/fuzz/corpora/asn1parse/834943f158056ae1d12bb83e5bf6779c45570fb8 differ
+diff --git a/fuzz/corpora/asn1parse/838c2383b510c1cfa96c04d3f0039e14cdace011 b/fuzz/corpora/asn1parse/838c2383b510c1cfa96c04d3f0039e14cdace011
 new file mode 100644
-index 000000000000..ae05f7cea2e0
-Binary files /dev/null and b/fuzz/corpora/asn1/cfd25b284f78250222c415d54426eaa5735ca1ce differ
-diff --git a/fuzz/corpora/asn1/cff46c769b2bf7a463a2c203ffd24e709412c0e6 b/fuzz/corpora/asn1/cff46c769b2bf7a463a2c203ffd24e709412c0e6
+index 0000000..f4caaab
+Binary files /dev/null and b/fuzz/corpora/asn1parse/838c2383b510c1cfa96c04d3f0039e14cdace011 differ
+diff --git a/fuzz/corpora/asn1parse/85e594a34039cf6049ae81d2313382cadd513c5a b/fuzz/corpora/asn1parse/85e594a34039cf6049ae81d2313382cadd513c5a
 new file mode 100644
-index 000000000000..f9acd3c65cad
-Binary files /dev/null and b/fuzz/corpora/asn1/cff46c769b2bf7a463a2c203ffd24e709412c0e6 differ
-diff --git a/fuzz/corpora/asn1/d06b4b9f3806ab98c5428feab308240e37417018 b/fuzz/corpora/asn1/d06b4b9f3806ab98c5428feab308240e37417018
+index 0000000..7c04265
+Binary files /dev/null and b/fuzz/corpora/asn1parse/85e594a34039cf6049ae81d2313382cadd513c5a differ
+diff --git a/fuzz/corpora/asn1parse/861465831b2b75deb33be48bb5b3c6e3c7e909fc b/fuzz/corpora/asn1parse/861465831b2b75deb33be48bb5b3c6e3c7e909fc
 new file mode 100644
-index 000000000000..a53b46323afe
-Binary files /dev/null and b/fuzz/corpora/asn1/d06b4b9f3806ab98c5428feab308240e37417018 differ
-diff --git a/fuzz/corpora/asn1/d08c36aeca33f583e54fb7113f43dccdbe55c76c b/fuzz/corpora/asn1/d08c36aeca33f583e54fb7113f43dccdbe55c76c
+index 0000000..e1674be
+Binary files /dev/null and b/fuzz/corpora/asn1parse/861465831b2b75deb33be48bb5b3c6e3c7e909fc differ
+diff --git a/fuzz/corpora/asn1parse/8920e2152f3d6d637581b9bb94b6a274ea645e09 b/fuzz/corpora/asn1parse/8920e2152f3d6d637581b9bb94b6a274ea645e09
 new file mode 100644
-index 000000000000..cd4c098768d2
-Binary files /dev/null and b/fuzz/corpora/asn1/d08c36aeca33f583e54fb7113f43dccdbe55c76c differ
-diff --git a/fuzz/corpora/asn1/d0ba262697fcf0e73ee942f4d92beef266e1f03a b/fuzz/corpora/asn1/d0ba262697fcf0e73ee942f4d92beef266e1f03a
+index 0000000..1d6d3bf
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8920e2152f3d6d637581b9bb94b6a274ea645e09 differ
+diff --git a/fuzz/corpora/asn1parse/8a35f35c85fc08f93eefb66944cb7f5c84fc5686 b/fuzz/corpora/asn1parse/8a35f35c85fc08f93eefb66944cb7f5c84fc5686
 new file mode 100644
-index 000000000000..ee73562db664
-Binary files /dev/null and b/fuzz/corpora/asn1/d0ba262697fcf0e73ee942f4d92beef266e1f03a differ
-diff --git a/fuzz/corpora/asn1/d0c9808ac83a7816f458b1a1c0eed08a42ef34e9 b/fuzz/corpora/asn1/d0c9808ac83a7816f458b1a1c0eed08a42ef34e9
+index 0000000..9f63dc8
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8a35f35c85fc08f93eefb66944cb7f5c84fc5686 differ
+diff --git a/fuzz/corpora/asn1parse/8a47f68865007cbcbc0fca67eb202d33ad3c050a b/fuzz/corpora/asn1parse/8a47f68865007cbcbc0fca67eb202d33ad3c050a
 new file mode 100644
-index 000000000000..f356857f7f48
-Binary files /dev/null and b/fuzz/corpora/asn1/d0c9808ac83a7816f458b1a1c0eed08a42ef34e9 differ
-diff --git a/fuzz/corpora/asn1/d0cac035368e4c58b2c29b455e5808355c2dc20b b/fuzz/corpora/asn1/d0cac035368e4c58b2c29b455e5808355c2dc20b
+index 0000000..750a9da
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8a47f68865007cbcbc0fca67eb202d33ad3c050a differ
+diff --git a/fuzz/corpora/asn1parse/8abd4fa40d25af7bcd2fda8c1978128db2c61a27 b/fuzz/corpora/asn1parse/8abd4fa40d25af7bcd2fda8c1978128db2c61a27
 new file mode 100644
-index 000000000000..7b50ea59cc88
-Binary files /dev/null and b/fuzz/corpora/asn1/d0cac035368e4c58b2c29b455e5808355c2dc20b differ
-diff --git a/fuzz/corpora/asn1/d10687f679f2a4988d9455acdd5efa5028ca6739 b/fuzz/corpora/asn1/d10687f679f2a4988d9455acdd5efa5028ca6739
+index 0000000..dfd38f2
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8abd4fa40d25af7bcd2fda8c1978128db2c61a27 differ
+diff --git a/fuzz/corpora/asn1parse/8af48c039d74d5b449c66433b2ebb5b664d5ae63 b/fuzz/corpora/asn1parse/8af48c039d74d5b449c66433b2ebb5b664d5ae63
 new file mode 100644
-index 000000000000..f5e7458fb76b
-Binary files /dev/null and b/fuzz/corpora/asn1/d10687f679f2a4988d9455acdd5efa5028ca6739 differ
-diff --git a/fuzz/corpora/asn1/d11fb931c554bd76a4854bde25eeb83b75f6f0a1 b/fuzz/corpora/asn1/d11fb931c554bd76a4854bde25eeb83b75f6f0a1
+index 0000000..28bd930
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8af48c039d74d5b449c66433b2ebb5b664d5ae63 differ
+diff --git a/fuzz/corpora/asn1parse/8c8c17c265952512ef862604aff015f878103080 b/fuzz/corpora/asn1parse/8c8c17c265952512ef862604aff015f878103080
 new file mode 100644
-index 000000000000..532c492e2f71
-Binary files /dev/null and b/fuzz/corpora/asn1/d11fb931c554bd76a4854bde25eeb83b75f6f0a1 differ
-diff --git a/fuzz/corpora/asn1/d1899b0ae773336398eb7c7967d6e8dc1dd99a85 b/fuzz/corpora/asn1/d1899b0ae773336398eb7c7967d6e8dc1dd99a85
+index 0000000..2330dfc
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8c8c17c265952512ef862604aff015f878103080 differ
+diff --git a/fuzz/corpora/asn1parse/8d70920d63425691185f0c63026cec7dd672d978 b/fuzz/corpora/asn1parse/8d70920d63425691185f0c63026cec7dd672d978
 new file mode 100644
-index 000000000000..2f803a07ca21
-Binary files /dev/null and b/fuzz/corpora/asn1/d1899b0ae773336398eb7c7967d6e8dc1dd99a85 differ
-diff --git a/fuzz/corpora/asn1/d1ec06cccc312e41f9c36d9543444e71e9087116 b/fuzz/corpora/asn1/d1ec06cccc312e41f9c36d9543444e71e9087116
+index 0000000..71ca276
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8d70920d63425691185f0c63026cec7dd672d978 differ
+diff --git a/fuzz/corpora/asn1parse/8e3b8b24b31c88d466d5041310e67f1780baf9fb b/fuzz/corpora/asn1parse/8e3b8b24b31c88d466d5041310e67f1780baf9fb
 new file mode 100644
-index 000000000000..eb568ddce1e6
-Binary files /dev/null and b/fuzz/corpora/asn1/d1ec06cccc312e41f9c36d9543444e71e9087116 differ
-diff --git a/fuzz/corpora/asn1/d208e23e7d4d60f58b8f6cc72a656e04d5ff6d64 b/fuzz/corpora/asn1/d208e23e7d4d60f58b8f6cc72a656e04d5ff6d64
+index 0000000..a313a71
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8e3b8b24b31c88d466d5041310e67f1780baf9fb differ
+diff --git a/fuzz/corpora/asn1parse/8e679c206f51e4669c9dd8e68d587a62a56f6437 b/fuzz/corpora/asn1parse/8e679c206f51e4669c9dd8e68d587a62a56f6437
 new file mode 100644
-index 000000000000..14f94e6e5093
-Binary files /dev/null and b/fuzz/corpora/asn1/d208e23e7d4d60f58b8f6cc72a656e04d5ff6d64 differ
-diff --git a/fuzz/corpora/asn1/d228811efabae4339673831cf73f93f8b5c2d094 b/fuzz/corpora/asn1/d228811efabae4339673831cf73f93f8b5c2d094
+index 0000000..e059ef5
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8e679c206f51e4669c9dd8e68d587a62a56f6437 differ
+diff --git a/fuzz/corpora/asn1parse/8eef83578369fbc1f38c0abb5f159bfc0c389ac8 b/fuzz/corpora/asn1parse/8eef83578369fbc1f38c0abb5f159bfc0c389ac8
 new file mode 100644
-index 000000000000..70b3b1ca32f5
-Binary files /dev/null and b/fuzz/corpora/asn1/d228811efabae4339673831cf73f93f8b5c2d094 differ
-diff --git a/fuzz/corpora/asn1/d250db8108683fc8473a7a9a5cc20da7b05ca8fb b/fuzz/corpora/asn1/d250db8108683fc8473a7a9a5cc20da7b05ca8fb
+index 0000000..c904b15
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8eef83578369fbc1f38c0abb5f159bfc0c389ac8 differ
+diff --git a/fuzz/corpora/asn1parse/8f3fa0e046a71f0095bf29fc623e123b7d706343 b/fuzz/corpora/asn1parse/8f3fa0e046a71f0095bf29fc623e123b7d706343
 new file mode 100644
-index 000000000000..f596cf36a025
-Binary files /dev/null and b/fuzz/corpora/asn1/d250db8108683fc8473a7a9a5cc20da7b05ca8fb differ
-diff --git a/fuzz/corpora/asn1/d27846995b8ef6883becd689c652488adea60514 b/fuzz/corpora/asn1/d27846995b8ef6883becd689c652488adea60514
+index 0000000..ed6636b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/8f3fa0e046a71f0095bf29fc623e123b7d706343 differ
+diff --git a/fuzz/corpora/asn1parse/903d3e70fc1fb5cbc807afaa4f16deecb9505c2a b/fuzz/corpora/asn1parse/903d3e70fc1fb5cbc807afaa4f16deecb9505c2a
 new file mode 100644
-index 000000000000..9518a640d842
-Binary files /dev/null and b/fuzz/corpora/asn1/d27846995b8ef6883becd689c652488adea60514 differ
-diff --git a/fuzz/corpora/asn1/d298b05ec8feb1c984d92a49d6dbfa18749db641 b/fuzz/corpora/asn1/d298b05ec8feb1c984d92a49d6dbfa18749db641
+index 0000000..9988454
+Binary files /dev/null and b/fuzz/corpora/asn1parse/903d3e70fc1fb5cbc807afaa4f16deecb9505c2a differ
+diff --git a/fuzz/corpora/asn1parse/9127e446dabb95ab8deedffa6e16b42286af059c b/fuzz/corpora/asn1parse/9127e446dabb95ab8deedffa6e16b42286af059c
 new file mode 100644
-index 000000000000..b1d0ecab9c03
-Binary files /dev/null and b/fuzz/corpora/asn1/d298b05ec8feb1c984d92a49d6dbfa18749db641 differ
-diff --git a/fuzz/corpora/asn1/d2ee3d8fb6300dcc40b65e5e652f6671df91708e b/fuzz/corpora/asn1/d2ee3d8fb6300dcc40b65e5e652f6671df91708e
+index 0000000..170560e
+Binary files /dev/null and b/fuzz/corpora/asn1parse/9127e446dabb95ab8deedffa6e16b42286af059c differ
+diff --git a/fuzz/corpora/asn1parse/924020b047709d6833c27098ab4acb716e5b64b8 b/fuzz/corpora/asn1parse/924020b047709d6833c27098ab4acb716e5b64b8
 new file mode 100644
-index 000000000000..ecc9c99681d9
-Binary files /dev/null and b/fuzz/corpora/asn1/d2ee3d8fb6300dcc40b65e5e652f6671df91708e differ
-diff --git a/fuzz/corpora/asn1/d32c3f4246bca4178b8ed259c95d0b8fa9e504d0 b/fuzz/corpora/asn1/d32c3f4246bca4178b8ed259c95d0b8fa9e504d0
+index 0000000..2dd0514
+Binary files /dev/null and b/fuzz/corpora/asn1parse/924020b047709d6833c27098ab4acb716e5b64b8 differ
+diff --git a/fuzz/corpora/asn1parse/9283d1029a74e785cf8fa4365f2a676561d56320 b/fuzz/corpora/asn1parse/9283d1029a74e785cf8fa4365f2a676561d56320
 new file mode 100644
-index 000000000000..79131bfaca8c
-Binary files /dev/null and b/fuzz/corpora/asn1/d32c3f4246bca4178b8ed259c95d0b8fa9e504d0 differ
-diff --git a/fuzz/corpora/asn1/d3b20e637463df86f2717164efa8997f6da24d4b b/fuzz/corpora/asn1/d3b20e637463df86f2717164efa8997f6da24d4b
+index 0000000..562ef34
+Binary files /dev/null and b/fuzz/corpora/asn1parse/9283d1029a74e785cf8fa4365f2a676561d56320 differ
+diff --git a/fuzz/corpora/asn1parse/92fc5e6882685b1b9856f8cd27a4f5b8e602589a b/fuzz/corpora/asn1parse/92fc5e6882685b1b9856f8cd27a4f5b8e602589a
 new file mode 100644
-index 000000000000..14571be6c2ee
-Binary files /dev/null and b/fuzz/corpora/asn1/d3b20e637463df86f2717164efa8997f6da24d4b differ
-diff --git a/fuzz/corpora/asn1/d3ba2d2d6c407512bde5d768ba4b496532b20ed3 b/fuzz/corpora/asn1/d3ba2d2d6c407512bde5d768ba4b496532b20ed3
+index 0000000..8db2469
+Binary files /dev/null and b/fuzz/corpora/asn1parse/92fc5e6882685b1b9856f8cd27a4f5b8e602589a differ
+diff --git a/fuzz/corpora/asn1parse/95110ef863dda8e02a8e000b0a631a8f3854715e b/fuzz/corpora/asn1parse/95110ef863dda8e02a8e000b0a631a8f3854715e
 new file mode 100644
-index 000000000000..5fe8a1f40fbe
-Binary files /dev/null and b/fuzz/corpora/asn1/d3ba2d2d6c407512bde5d768ba4b496532b20ed3 differ
-diff --git a/fuzz/corpora/asn1/d3c32261e7da5e74d8e665b1b6e0bfb53c6e79d4 b/fuzz/corpora/asn1/d3c32261e7da5e74d8e665b1b6e0bfb53c6e79d4
+index 0000000..85ac953
+Binary files /dev/null and b/fuzz/corpora/asn1parse/95110ef863dda8e02a8e000b0a631a8f3854715e differ
+diff --git a/fuzz/corpora/asn1parse/967b3ddb70da537b0fabc179a66e002f905ccd30 b/fuzz/corpora/asn1parse/967b3ddb70da537b0fabc179a66e002f905ccd30
 new file mode 100644
-index 000000000000..484174a8b207
-Binary files /dev/null and b/fuzz/corpora/asn1/d3c32261e7da5e74d8e665b1b6e0bfb53c6e79d4 differ
-diff --git a/fuzz/corpora/asn1/d3d4e1ef0265dcaa8feaa7d22e0c51f403813bd2 b/fuzz/corpora/asn1/d3d4e1ef0265dcaa8feaa7d22e0c51f403813bd2
+index 0000000..07f5d19
+Binary files /dev/null and b/fuzz/corpora/asn1parse/967b3ddb70da537b0fabc179a66e002f905ccd30 differ
+diff --git a/fuzz/corpora/asn1parse/97bc79f0f080ada6c5c1139c33d438485146e00b b/fuzz/corpora/asn1parse/97bc79f0f080ada6c5c1139c33d438485146e00b
 new file mode 100644
-index 000000000000..eec96f11dc9e
-Binary files /dev/null and b/fuzz/corpora/asn1/d3d4e1ef0265dcaa8feaa7d22e0c51f403813bd2 differ
-diff --git a/fuzz/corpora/asn1/d493353f3fde51adf42f1db5349b380f77874ab8 b/fuzz/corpora/asn1/d493353f3fde51adf42f1db5349b380f77874ab8
+index 0000000..ed086ff
+Binary files /dev/null and b/fuzz/corpora/asn1parse/97bc79f0f080ada6c5c1139c33d438485146e00b differ
+diff --git a/fuzz/corpora/asn1parse/9837ab0aa09b25fa8ad4f3d7aab750825addae98 b/fuzz/corpora/asn1parse/9837ab0aa09b25fa8ad4f3d7aab750825addae98
 new file mode 100644
-index 000000000000..4c64cdf52672
-Binary files /dev/null and b/fuzz/corpora/asn1/d493353f3fde51adf42f1db5349b380f77874ab8 differ
-diff --git a/fuzz/corpora/asn1/d51cc1752fd963523433bfcfafea136b83aabc41 b/fuzz/corpora/asn1/d51cc1752fd963523433bfcfafea136b83aabc41
+index 0000000..3a819b1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/9837ab0aa09b25fa8ad4f3d7aab750825addae98 differ
+diff --git a/fuzz/corpora/asn1parse/9855bef70bd82ccc8c4a33ae4ed98a1028ca701e b/fuzz/corpora/asn1parse/9855bef70bd82ccc8c4a33ae4ed98a1028ca701e
 new file mode 100644
-index 000000000000..aa20daba5c69
-Binary files /dev/null and b/fuzz/corpora/asn1/d51cc1752fd963523433bfcfafea136b83aabc41 differ
-diff --git a/fuzz/corpora/asn1/d56af302c5c2de03ed66118e26e526080c6ba6bc b/fuzz/corpora/asn1/d56af302c5c2de03ed66118e26e526080c6ba6bc
+index 0000000..9dffb47
+Binary files /dev/null and b/fuzz/corpora/asn1parse/9855bef70bd82ccc8c4a33ae4ed98a1028ca701e differ
+diff --git a/fuzz/corpora/asn1parse/98fd98c5c6c83bc36ccb1f5a939029ab1281db72 b/fuzz/corpora/asn1parse/98fd98c5c6c83bc36ccb1f5a939029ab1281db72
 new file mode 100644
-index 000000000000..aef7d0ceae6a
-Binary files /dev/null and b/fuzz/corpora/asn1/d56af302c5c2de03ed66118e26e526080c6ba6bc differ
-diff --git a/fuzz/corpora/asn1/d5a7d6d8d249df74ec07140643624bf2dd66df1e b/fuzz/corpora/asn1/d5a7d6d8d249df74ec07140643624bf2dd66df1e
+index 0000000..05aea17
+Binary files /dev/null and b/fuzz/corpora/asn1parse/98fd98c5c6c83bc36ccb1f5a939029ab1281db72 differ
+diff --git a/fuzz/corpora/asn1parse/993cb4240b329e443fb5d072b9d2aa01b1dc8313 b/fuzz/corpora/asn1parse/993cb4240b329e443fb5d072b9d2aa01b1dc8313
 new file mode 100644
-index 000000000000..1b9a1b326ed8
-Binary files /dev/null and b/fuzz/corpora/asn1/d5a7d6d8d249df74ec07140643624bf2dd66df1e differ
-diff --git a/fuzz/corpora/asn1/d5ce8b4f6049da6903b90c72ef528ad9a081b824 b/fuzz/corpora/asn1/d5ce8b4f6049da6903b90c72ef528ad9a081b824
+index 0000000..c145d72
+Binary files /dev/null and b/fuzz/corpora/asn1parse/993cb4240b329e443fb5d072b9d2aa01b1dc8313 differ
+diff --git a/fuzz/corpora/asn1parse/9ae81326355f8c296e7c5bf6532f170d7bf053f4 b/fuzz/corpora/asn1parse/9ae81326355f8c296e7c5bf6532f170d7bf053f4
 new file mode 100644
-index 000000000000..636fc56df176
-Binary files /dev/null and b/fuzz/corpora/asn1/d5ce8b4f6049da6903b90c72ef528ad9a081b824 differ
-diff --git a/fuzz/corpora/asn1/d5d12b3796c396f692839da99e3b950fd7d84ae0 b/fuzz/corpora/asn1/d5d12b3796c396f692839da99e3b950fd7d84ae0
+index 0000000..543649d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/9ae81326355f8c296e7c5bf6532f170d7bf053f4 differ
+diff --git a/fuzz/corpora/asn1parse/9bbd0f61386afa1ea4e16d205a0018c8254127b7 b/fuzz/corpora/asn1parse/9bbd0f61386afa1ea4e16d205a0018c8254127b7
 new file mode 100644
-index 000000000000..73c89fb58d9b
-Binary files /dev/null and b/fuzz/corpora/asn1/d5d12b3796c396f692839da99e3b950fd7d84ae0 differ
-diff --git a/fuzz/corpora/asn1/d5e1419cf59fa545f594b795bb05068456622711 b/fuzz/corpora/asn1/d5e1419cf59fa545f594b795bb05068456622711
+index 0000000..430a6d1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/9bbd0f61386afa1ea4e16d205a0018c8254127b7 differ
+diff --git a/fuzz/corpora/asn1parse/9cdc7629f9f39de1103d202eb1c9231ebb2dce5d b/fuzz/corpora/asn1parse/9cdc7629f9f39de1103d202eb1c9231ebb2dce5d
 new file mode 100644
-index 000000000000..0498243bf502
-Binary files /dev/null and b/fuzz/corpora/asn1/d5e1419cf59fa545f594b795bb05068456622711 differ
-diff --git a/fuzz/corpora/asn1/d65776260a2e30646339ce904b6891ead5e05b1b b/fuzz/corpora/asn1/d65776260a2e30646339ce904b6891ead5e05b1b
+index 0000000..1c98084
+Binary files /dev/null and b/fuzz/corpora/asn1parse/9cdc7629f9f39de1103d202eb1c9231ebb2dce5d differ
+diff --git a/fuzz/corpora/asn1parse/9d87ff258365d98d2be653b7f02b3f911ff9ec89 b/fuzz/corpora/asn1parse/9d87ff258365d98d2be653b7f02b3f911ff9ec89
 new file mode 100644
-index 000000000000..883ac9dd5cf6
-Binary files /dev/null and b/fuzz/corpora/asn1/d65776260a2e30646339ce904b6891ead5e05b1b differ
-diff --git a/fuzz/corpora/asn1/d65f8af890a2234929571d55aea349b34a363a5c b/fuzz/corpora/asn1/d65f8af890a2234929571d55aea349b34a363a5c
+index 0000000..b8242e4
+Binary files /dev/null and b/fuzz/corpora/asn1parse/9d87ff258365d98d2be653b7f02b3f911ff9ec89 differ
+diff --git a/fuzz/corpora/asn1parse/9f8c0931a96f9c55c5ec119a50b9b7f37908b688 b/fuzz/corpora/asn1parse/9f8c0931a96f9c55c5ec119a50b9b7f37908b688
 new file mode 100644
-index 000000000000..2957ea3dd100
-Binary files /dev/null and b/fuzz/corpora/asn1/d65f8af890a2234929571d55aea349b34a363a5c differ
-diff --git a/fuzz/corpora/asn1/d6b3437a84d75565169e0666f1574a880c2d0a6f b/fuzz/corpora/asn1/d6b3437a84d75565169e0666f1574a880c2d0a6f
+index 0000000..130d976
+Binary files /dev/null and b/fuzz/corpora/asn1parse/9f8c0931a96f9c55c5ec119a50b9b7f37908b688 differ
+diff --git a/fuzz/corpora/asn1parse/a154f2eadf75c5c21077142ec2e2041c05f30d19 b/fuzz/corpora/asn1parse/a154f2eadf75c5c21077142ec2e2041c05f30d19
 new file mode 100644
-index 000000000000..b9f5aa52b243
-Binary files /dev/null and b/fuzz/corpora/asn1/d6b3437a84d75565169e0666f1574a880c2d0a6f differ
-diff --git a/fuzz/corpora/asn1/d6cef9d7438da137f1b8549ebeb9e7bd821acc95 b/fuzz/corpora/asn1/d6cef9d7438da137f1b8549ebeb9e7bd821acc95
+index 0000000..68f63fc
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a154f2eadf75c5c21077142ec2e2041c05f30d19 differ
+diff --git a/fuzz/corpora/asn1parse/a1627626a7caa36e9b71d37f705c8e91fa0e421b b/fuzz/corpora/asn1parse/a1627626a7caa36e9b71d37f705c8e91fa0e421b
 new file mode 100644
-index 000000000000..fd8731ad6380
-Binary files /dev/null and b/fuzz/corpora/asn1/d6cef9d7438da137f1b8549ebeb9e7bd821acc95 differ
-diff --git a/fuzz/corpora/asn1/d7ba85517dc5d25f365119163f3b31645d2b9b96 b/fuzz/corpora/asn1/d7ba85517dc5d25f365119163f3b31645d2b9b96
+index 0000000..cca4e4d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a1627626a7caa36e9b71d37f705c8e91fa0e421b differ
+diff --git a/fuzz/corpora/asn1parse/a1a9380049706f5bef10d86f1df5bea6726f19ac b/fuzz/corpora/asn1parse/a1a9380049706f5bef10d86f1df5bea6726f19ac
 new file mode 100644
-index 000000000000..d18d0d971e62
-Binary files /dev/null and b/fuzz/corpora/asn1/d7ba85517dc5d25f365119163f3b31645d2b9b96 differ
-diff --git a/fuzz/corpora/asn1/d81417dd56a6ffeed32e600a07c62e093ebfb379 b/fuzz/corpora/asn1/d81417dd56a6ffeed32e600a07c62e093ebfb379
+index 0000000..d159fbf
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a1a9380049706f5bef10d86f1df5bea6726f19ac differ
+diff --git a/fuzz/corpora/asn1parse/a2fec28e86e82b0055bec4b8612a24065fd72939 b/fuzz/corpora/asn1parse/a2fec28e86e82b0055bec4b8612a24065fd72939
 new file mode 100644
-index 000000000000..c3298e875652
-Binary files /dev/null and b/fuzz/corpora/asn1/d81417dd56a6ffeed32e600a07c62e093ebfb379 differ
-diff --git a/fuzz/corpora/asn1/d85b9c36d6a89da0413a0b69cfc7383ce5216cfe b/fuzz/corpora/asn1/d85b9c36d6a89da0413a0b69cfc7383ce5216cfe
+index 0000000..c702659
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a2fec28e86e82b0055bec4b8612a24065fd72939 differ
+diff --git a/fuzz/corpora/asn1parse/a5ae5c44b144ecf9d5a96bcb2a10dba99b834dda b/fuzz/corpora/asn1parse/a5ae5c44b144ecf9d5a96bcb2a10dba99b834dda
 new file mode 100644
-index 000000000000..cacc7853e2d8
-Binary files /dev/null and b/fuzz/corpora/asn1/d85b9c36d6a89da0413a0b69cfc7383ce5216cfe differ
-diff --git a/fuzz/corpora/asn1/d896752e473686214676cac834622095316d69d7 b/fuzz/corpora/asn1/d896752e473686214676cac834622095316d69d7
+index 0000000..83cfe65
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a5ae5c44b144ecf9d5a96bcb2a10dba99b834dda differ
+diff --git a/fuzz/corpora/asn1parse/a5b871a4625307f2d6680b9a3579a98541ef666a b/fuzz/corpora/asn1parse/a5b871a4625307f2d6680b9a3579a98541ef666a
 new file mode 100644
-index 000000000000..2f858bbc5b84
-Binary files /dev/null and b/fuzz/corpora/asn1/d896752e473686214676cac834622095316d69d7 differ
-diff --git a/fuzz/corpora/asn1/d8b4a66a7a65ab700d513dd3a6341ddb504887f4 b/fuzz/corpora/asn1/d8b4a66a7a65ab700d513dd3a6341ddb504887f4
+index 0000000..adbb772
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a5b871a4625307f2d6680b9a3579a98541ef666a differ
+diff --git a/fuzz/corpora/asn1parse/a7543b5ebf6881cc018277a337448f1936fc949b b/fuzz/corpora/asn1parse/a7543b5ebf6881cc018277a337448f1936fc949b
 new file mode 100644
-index 000000000000..ac19b45d1e9e
-Binary files /dev/null and b/fuzz/corpora/asn1/d8b4a66a7a65ab700d513dd3a6341ddb504887f4 differ
-diff --git a/fuzz/corpora/asn1/d8b74e9125e08576fef536c7b0ec136584e59349 b/fuzz/corpora/asn1/d8b74e9125e08576fef536c7b0ec136584e59349
+index 0000000..430befd
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a7543b5ebf6881cc018277a337448f1936fc949b differ
+diff --git a/fuzz/corpora/asn1parse/a7c2d5d8469d9077d6320a0a3447f08e4414ccea b/fuzz/corpora/asn1parse/a7c2d5d8469d9077d6320a0a3447f08e4414ccea
 new file mode 100644
-index 000000000000..f11b69f2bd03
-Binary files /dev/null and b/fuzz/corpora/asn1/d8b74e9125e08576fef536c7b0ec136584e59349 differ
-diff --git a/fuzz/corpora/asn1/d8fd0e6e2f770cdf602e2b4911522b5b1a02c023 b/fuzz/corpora/asn1/d8fd0e6e2f770cdf602e2b4911522b5b1a02c023
+index 0000000..57f191d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a7c2d5d8469d9077d6320a0a3447f08e4414ccea differ
+diff --git a/fuzz/corpora/asn1parse/a7f4b39afe570a17a16174a2a28ced80ce21e488 b/fuzz/corpora/asn1parse/a7f4b39afe570a17a16174a2a28ced80ce21e488
 new file mode 100644
-index 000000000000..bce3c4471ead
-Binary files /dev/null and b/fuzz/corpora/asn1/d8fd0e6e2f770cdf602e2b4911522b5b1a02c023 differ
-diff --git a/fuzz/corpora/asn1/d938cf15a84e6dc28eec47bcc26d6092695ed1a0 b/fuzz/corpora/asn1/d938cf15a84e6dc28eec47bcc26d6092695ed1a0
+index 0000000..0b2a2d3
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a7f4b39afe570a17a16174a2a28ced80ce21e488 differ
+diff --git a/fuzz/corpora/asn1parse/a86048c45a68499e2aa87daa44fbbcaaa19324c5 b/fuzz/corpora/asn1parse/a86048c45a68499e2aa87daa44fbbcaaa19324c5
 new file mode 100644
-index 000000000000..ad45ca8f3d63
-Binary files /dev/null and b/fuzz/corpora/asn1/d938cf15a84e6dc28eec47bcc26d6092695ed1a0 differ
-diff --git a/fuzz/corpora/asn1/d95523fd14874a6ec3bb3b687ec5002c0ad6fd42 b/fuzz/corpora/asn1/d95523fd14874a6ec3bb3b687ec5002c0ad6fd42
+index 0000000..e4ba484
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a86048c45a68499e2aa87daa44fbbcaaa19324c5 differ
+diff --git a/fuzz/corpora/asn1parse/a8ce50c57aee91c7f46325d99b3e83ee4a435f9d b/fuzz/corpora/asn1parse/a8ce50c57aee91c7f46325d99b3e83ee4a435f9d
 new file mode 100644
-index 000000000000..6b805af986f1
-Binary files /dev/null and b/fuzz/corpora/asn1/d95523fd14874a6ec3bb3b687ec5002c0ad6fd42 differ
-diff --git a/fuzz/corpora/asn1/d9d25355f630346731df471d765092ca85892798 b/fuzz/corpora/asn1/d9d25355f630346731df471d765092ca85892798
+index 0000000..cc3100a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a8ce50c57aee91c7f46325d99b3e83ee4a435f9d differ
+diff --git a/fuzz/corpora/asn1parse/a91057c71dc3327cdf0513ee7da14dc491fd064a b/fuzz/corpora/asn1parse/a91057c71dc3327cdf0513ee7da14dc491fd064a
 new file mode 100644
-index 000000000000..4d24d565a0c2
-Binary files /dev/null and b/fuzz/corpora/asn1/d9d25355f630346731df471d765092ca85892798 differ
-diff --git a/fuzz/corpora/asn1/db11ad058a365789b521edf86165a3a2171db31e b/fuzz/corpora/asn1/db11ad058a365789b521edf86165a3a2171db31e
+index 0000000..b884d20
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a91057c71dc3327cdf0513ee7da14dc491fd064a differ
+diff --git a/fuzz/corpora/asn1parse/a965cde0e7eb4e19a4030e18a8369fbbc3397d4f b/fuzz/corpora/asn1parse/a965cde0e7eb4e19a4030e18a8369fbbc3397d4f
 new file mode 100644
-index 000000000000..e5b816381c63
-Binary files /dev/null and b/fuzz/corpora/asn1/db11ad058a365789b521edf86165a3a2171db31e differ
-diff --git a/fuzz/corpora/asn1/dc8399f12bd10d918ff17b56f07650d01874aff4 b/fuzz/corpora/asn1/dc8399f12bd10d918ff17b56f07650d01874aff4
+index 0000000..977cc15
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a965cde0e7eb4e19a4030e18a8369fbbc3397d4f differ
+diff --git a/fuzz/corpora/asn1parse/a96e527145d8ed286db7b8908082f3dfc892b922 b/fuzz/corpora/asn1parse/a96e527145d8ed286db7b8908082f3dfc892b922
 new file mode 100644
-index 000000000000..144b8cb63aa2
-Binary files /dev/null and b/fuzz/corpora/asn1/dc8399f12bd10d918ff17b56f07650d01874aff4 differ
-diff --git a/fuzz/corpora/asn1/dc9688d0068482809a16367855f58e8cb70f6126 b/fuzz/corpora/asn1/dc9688d0068482809a16367855f58e8cb70f6126
+index 0000000..42925a3
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a96e527145d8ed286db7b8908082f3dfc892b922 differ
+diff --git a/fuzz/corpora/asn1parse/a9f7f96b88f16fd34b0cbcd96532430a52c82d94 b/fuzz/corpora/asn1parse/a9f7f96b88f16fd34b0cbcd96532430a52c82d94
 new file mode 100644
-index 000000000000..27689aedc826
-Binary files /dev/null and b/fuzz/corpora/asn1/dc9688d0068482809a16367855f58e8cb70f6126 differ
-diff --git a/fuzz/corpora/asn1/dd2553666a727354f33ae8a700fc75bb8399b806 b/fuzz/corpora/asn1/dd2553666a727354f33ae8a700fc75bb8399b806
+index 0000000..8d9940a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/a9f7f96b88f16fd34b0cbcd96532430a52c82d94 differ
+diff --git a/fuzz/corpora/asn1parse/aa9628463fb75b7024eb66a10fc25f42cc90eb12 b/fuzz/corpora/asn1parse/aa9628463fb75b7024eb66a10fc25f42cc90eb12
 new file mode 100644
-index 000000000000..cb7767bca5ef
-Binary files /dev/null and b/fuzz/corpora/asn1/dd2553666a727354f33ae8a700fc75bb8399b806 differ
-diff --git a/fuzz/corpora/asn1/dd76fc1f5d8bacdfc8a402ba909fa4f148a63dda b/fuzz/corpora/asn1/dd76fc1f5d8bacdfc8a402ba909fa4f148a63dda
+index 0000000..cc81909
+Binary files /dev/null and b/fuzz/corpora/asn1parse/aa9628463fb75b7024eb66a10fc25f42cc90eb12 differ
+diff --git a/fuzz/corpora/asn1parse/aad67c70ec0c75ba579d0f0c8c85d052159af036 b/fuzz/corpora/asn1parse/aad67c70ec0c75ba579d0f0c8c85d052159af036
 new file mode 100644
-index 000000000000..f9839c371b9e
-Binary files /dev/null and b/fuzz/corpora/asn1/dd76fc1f5d8bacdfc8a402ba909fa4f148a63dda differ
-diff --git a/fuzz/corpora/asn1/dd84fa898efa1a16e5295297cbf504daa4614c59 b/fuzz/corpora/asn1/dd84fa898efa1a16e5295297cbf504daa4614c59
+index 0000000..7919a9d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/aad67c70ec0c75ba579d0f0c8c85d052159af036 differ
+diff --git a/fuzz/corpora/asn1parse/ab8425f603bbde93858fc2b8e6ec7ba1cac41c9a b/fuzz/corpora/asn1parse/ab8425f603bbde93858fc2b8e6ec7ba1cac41c9a
 new file mode 100644
-index 000000000000..0ecb0fbaee90
-Binary files /dev/null and b/fuzz/corpora/asn1/dd84fa898efa1a16e5295297cbf504daa4614c59 differ
-diff --git a/fuzz/corpora/asn1/dda78d795027f81908c9b37a3e3615af00d41768 b/fuzz/corpora/asn1/dda78d795027f81908c9b37a3e3615af00d41768
+index 0000000..4880307
+Binary files /dev/null and b/fuzz/corpora/asn1parse/ab8425f603bbde93858fc2b8e6ec7ba1cac41c9a differ
+diff --git a/fuzz/corpora/asn1parse/aca96c250106f2471f5251fd17bedb3a34b48e35 b/fuzz/corpora/asn1parse/aca96c250106f2471f5251fd17bedb3a34b48e35
 new file mode 100644
-index 000000000000..c349fae371ef
-Binary files /dev/null and b/fuzz/corpora/asn1/dda78d795027f81908c9b37a3e3615af00d41768 differ
-diff --git a/fuzz/corpora/asn1/ddefdcdd2850a4eb99fd2db6a223f7764251c229 b/fuzz/corpora/asn1/ddefdcdd2850a4eb99fd2db6a223f7764251c229
+index 0000000..2f6b2c4
+Binary files /dev/null and b/fuzz/corpora/asn1parse/aca96c250106f2471f5251fd17bedb3a34b48e35 differ
+diff --git a/fuzz/corpora/asn1parse/acde2c49d56d7cee84e400cfab9246c528431d74 b/fuzz/corpora/asn1parse/acde2c49d56d7cee84e400cfab9246c528431d74
 new file mode 100644
-index 000000000000..f9ea3549e173
-Binary files /dev/null and b/fuzz/corpora/asn1/ddefdcdd2850a4eb99fd2db6a223f7764251c229 differ
-diff --git a/fuzz/corpora/asn1/ddf7d6c16a47f1c3d100a6947b954851240b6c66 b/fuzz/corpora/asn1/ddf7d6c16a47f1c3d100a6947b954851240b6c66
+index 0000000..59a4942
+Binary files /dev/null and b/fuzz/corpora/asn1parse/acde2c49d56d7cee84e400cfab9246c528431d74 differ
+diff --git a/fuzz/corpora/asn1parse/ad3f8582777a4094720cb1371c4faff595620815 b/fuzz/corpora/asn1parse/ad3f8582777a4094720cb1371c4faff595620815
 new file mode 100644
-index 000000000000..86ac031ace77
-Binary files /dev/null and b/fuzz/corpora/asn1/ddf7d6c16a47f1c3d100a6947b954851240b6c66 differ
-diff --git a/fuzz/corpora/asn1/de244a672baa4ded14025962ff634317cefb7c10 b/fuzz/corpora/asn1/de244a672baa4ded14025962ff634317cefb7c10
+index 0000000..8fe79b5
+Binary files /dev/null and b/fuzz/corpora/asn1parse/ad3f8582777a4094720cb1371c4faff595620815 differ
+diff --git a/fuzz/corpora/asn1parse/adb0f7eef21ab16604c894ba0266a38e0d5bda9b b/fuzz/corpora/asn1parse/adb0f7eef21ab16604c894ba0266a38e0d5bda9b
 new file mode 100644
-index 000000000000..cda2f212aa1f
-Binary files /dev/null and b/fuzz/corpora/asn1/de244a672baa4ded14025962ff634317cefb7c10 differ
-diff --git a/fuzz/corpora/asn1/de39ca591b331e0c65dcf5fd9b54ba299f9ee7fc b/fuzz/corpora/asn1/de39ca591b331e0c65dcf5fd9b54ba299f9ee7fc
+index 0000000..201da65
+Binary files /dev/null and b/fuzz/corpora/asn1parse/adb0f7eef21ab16604c894ba0266a38e0d5bda9b differ
+diff --git a/fuzz/corpora/asn1parse/ae81a3ef4a5ba492aaa8f06c1c787cf0e78a9ec8 b/fuzz/corpora/asn1parse/ae81a3ef4a5ba492aaa8f06c1c787cf0e78a9ec8
 new file mode 100644
-index 000000000000..49d1dd6d3b4b
-Binary files /dev/null and b/fuzz/corpora/asn1/de39ca591b331e0c65dcf5fd9b54ba299f9ee7fc differ
-diff --git a/fuzz/corpora/asn1/de483db0a8b45c1791dc4c5ff90d3f9e23725d98 b/fuzz/corpora/asn1/de483db0a8b45c1791dc4c5ff90d3f9e23725d98
+index 0000000..b5757fd
+Binary files /dev/null and b/fuzz/corpora/asn1parse/ae81a3ef4a5ba492aaa8f06c1c787cf0e78a9ec8 differ
+diff --git a/fuzz/corpora/asn1parse/af208c9937583b51915ada945fc2a8dcd246bc3b b/fuzz/corpora/asn1parse/af208c9937583b51915ada945fc2a8dcd246bc3b
 new file mode 100644
-index 000000000000..b4eb4bfd59c8
-Binary files /dev/null and b/fuzz/corpora/asn1/de483db0a8b45c1791dc4c5ff90d3f9e23725d98 differ
-diff --git a/fuzz/corpora/asn1/de7a5d5d91d7d44a2e2b47ec9e7b874aed145b9e b/fuzz/corpora/asn1/de7a5d5d91d7d44a2e2b47ec9e7b874aed145b9e
+index 0000000..af1bf3f
+Binary files /dev/null and b/fuzz/corpora/asn1parse/af208c9937583b51915ada945fc2a8dcd246bc3b differ
+diff --git a/fuzz/corpora/asn1parse/afd27d5be87a423255a9180ea04045929d81fc2b b/fuzz/corpora/asn1parse/afd27d5be87a423255a9180ea04045929d81fc2b
 new file mode 100644
-index 000000000000..320629d8d6c2
-Binary files /dev/null and b/fuzz/corpora/asn1/de7a5d5d91d7d44a2e2b47ec9e7b874aed145b9e differ
-diff --git a/fuzz/corpora/asn1/def4fe511e92e310b3846948b6ceb8114c295386 b/fuzz/corpora/asn1/def4fe511e92e310b3846948b6ceb8114c295386
+index 0000000..a51a1c6
+Binary files /dev/null and b/fuzz/corpora/asn1parse/afd27d5be87a423255a9180ea04045929d81fc2b differ
+diff --git a/fuzz/corpora/asn1parse/b198966f0f37eefee29b457e2267c13a65829d64 b/fuzz/corpora/asn1parse/b198966f0f37eefee29b457e2267c13a65829d64
 new file mode 100644
-index 000000000000..a917e1fc8c09
-Binary files /dev/null and b/fuzz/corpora/asn1/def4fe511e92e310b3846948b6ceb8114c295386 differ
-diff --git a/fuzz/corpora/asn1/df20dbfbbecb0407157fbe281e9af0323c171c1c b/fuzz/corpora/asn1/df20dbfbbecb0407157fbe281e9af0323c171c1c
+index 0000000..9cb7a58
+Binary files /dev/null and b/fuzz/corpora/asn1parse/b198966f0f37eefee29b457e2267c13a65829d64 differ
+diff --git a/fuzz/corpora/asn1parse/b35e1b725f84b63c5764f8a6ec7690c799b130c1 b/fuzz/corpora/asn1parse/b35e1b725f84b63c5764f8a6ec7690c799b130c1
 new file mode 100644
-index 000000000000..6a463ae9fc36
-Binary files /dev/null and b/fuzz/corpora/asn1/df20dbfbbecb0407157fbe281e9af0323c171c1c differ
-diff --git a/fuzz/corpora/asn1/df4dfb0d61fa5f98a4e16712892e6819c512ecab b/fuzz/corpora/asn1/df4dfb0d61fa5f98a4e16712892e6819c512ecab
+index 0000000..8440078
+Binary files /dev/null and b/fuzz/corpora/asn1parse/b35e1b725f84b63c5764f8a6ec7690c799b130c1 differ
+diff --git a/fuzz/corpora/asn1parse/b700a5dadad9c128c9df5aafa1ade0b8c2bab07f b/fuzz/corpora/asn1parse/b700a5dadad9c128c9df5aafa1ade0b8c2bab07f
 new file mode 100644
-index 000000000000..475bce9fe439
-Binary files /dev/null and b/fuzz/corpora/asn1/df4dfb0d61fa5f98a4e16712892e6819c512ecab differ
-diff --git a/fuzz/corpora/asn1/df575d994640b4254f5b446213adb80159447c95 b/fuzz/corpora/asn1/df575d994640b4254f5b446213adb80159447c95
+index 0000000..48fe269
+Binary files /dev/null and b/fuzz/corpora/asn1parse/b700a5dadad9c128c9df5aafa1ade0b8c2bab07f differ
+diff --git a/fuzz/corpora/asn1parse/b9b4c0b435d1c226c0feaf4e0e5695e89d9bf51c b/fuzz/corpora/asn1parse/b9b4c0b435d1c226c0feaf4e0e5695e89d9bf51c
 new file mode 100644
-index 000000000000..6a603e9dd7a2
-Binary files /dev/null and b/fuzz/corpora/asn1/df575d994640b4254f5b446213adb80159447c95 differ
-diff --git a/fuzz/corpora/asn1/df83fdd8a01453cb15a3d03e9309640dd19b9439 b/fuzz/corpora/asn1/df83fdd8a01453cb15a3d03e9309640dd19b9439
+index 0000000..b816380
+Binary files /dev/null and b/fuzz/corpora/asn1parse/b9b4c0b435d1c226c0feaf4e0e5695e89d9bf51c differ
+diff --git a/fuzz/corpora/asn1parse/bb002a83f063d9fffbc05663c2aafcc64ca606fa b/fuzz/corpora/asn1parse/bb002a83f063d9fffbc05663c2aafcc64ca606fa
 new file mode 100644
-index 000000000000..7f0a3f603f9f
-Binary files /dev/null and b/fuzz/corpora/asn1/df83fdd8a01453cb15a3d03e9309640dd19b9439 differ
-diff --git a/fuzz/corpora/asn1/dfb71a3d7a880d52643bb7bc22134c429b4beec2 b/fuzz/corpora/asn1/dfb71a3d7a880d52643bb7bc22134c429b4beec2
+index 0000000..8ebe89c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/bb002a83f063d9fffbc05663c2aafcc64ca606fa differ
+diff --git a/fuzz/corpora/asn1parse/bc64df47b21c5c0c6d3011d67519a91a84ad84bf b/fuzz/corpora/asn1parse/bc64df47b21c5c0c6d3011d67519a91a84ad84bf
 new file mode 100644
-index 000000000000..d1cff29d484a
-Binary files /dev/null and b/fuzz/corpora/asn1/dfb71a3d7a880d52643bb7bc22134c429b4beec2 differ
-diff --git a/fuzz/corpora/asn1/e00cbcf83aa98638a2bac659037652a802717c12 b/fuzz/corpora/asn1/e00cbcf83aa98638a2bac659037652a802717c12
+index 0000000..f2e9bfe
+Binary files /dev/null and b/fuzz/corpora/asn1parse/bc64df47b21c5c0c6d3011d67519a91a84ad84bf differ
+diff --git a/fuzz/corpora/asn1parse/bcf8db4be02ca3b6a035b46c3a18fcf6728f9717 b/fuzz/corpora/asn1parse/bcf8db4be02ca3b6a035b46c3a18fcf6728f9717
 new file mode 100644
-index 000000000000..8c98d6a06e72
-Binary files /dev/null and b/fuzz/corpora/asn1/e00cbcf83aa98638a2bac659037652a802717c12 differ
-diff --git a/fuzz/corpora/asn1/e0a8a69f818fef7e1c41f30afc6756c7892441f3 b/fuzz/corpora/asn1/e0a8a69f818fef7e1c41f30afc6756c7892441f3
+index 0000000..f788fee
+Binary files /dev/null and b/fuzz/corpora/asn1parse/bcf8db4be02ca3b6a035b46c3a18fcf6728f9717 differ
+diff --git a/fuzz/corpora/asn1parse/bd715e57866158f421d6b0cffe13aeda99d44f35 b/fuzz/corpora/asn1parse/bd715e57866158f421d6b0cffe13aeda99d44f35
 new file mode 100644
-index 000000000000..efa082c5924f
-Binary files /dev/null and b/fuzz/corpora/asn1/e0a8a69f818fef7e1c41f30afc6756c7892441f3 differ
-diff --git a/fuzz/corpora/asn1/e0b3e6428868b17064320719f3a9eae5733c783f b/fuzz/corpora/asn1/e0b3e6428868b17064320719f3a9eae5733c783f
+index 0000000..8fcef9b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/bd715e57866158f421d6b0cffe13aeda99d44f35 differ
+diff --git a/fuzz/corpora/asn1parse/bd73dc61b617d382aa8f1c8a906a9b05b62007ba b/fuzz/corpora/asn1parse/bd73dc61b617d382aa8f1c8a906a9b05b62007ba
 new file mode 100644
-index 000000000000..09d5b37df666
-Binary files /dev/null and b/fuzz/corpora/asn1/e0b3e6428868b17064320719f3a9eae5733c783f differ
-diff --git a/fuzz/corpora/asn1/e141b0d61331a6a99faa78e95123dde02fb85345 b/fuzz/corpora/asn1/e141b0d61331a6a99faa78e95123dde02fb85345
+index 0000000..210995c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/bd73dc61b617d382aa8f1c8a906a9b05b62007ba differ
+diff --git a/fuzz/corpora/asn1parse/bf0e6c4ed317e97ffc4e9e59dc8617d33c1f5b1f b/fuzz/corpora/asn1parse/bf0e6c4ed317e97ffc4e9e59dc8617d33c1f5b1f
 new file mode 100644
-index 000000000000..18796a4c042a
-Binary files /dev/null and b/fuzz/corpora/asn1/e141b0d61331a6a99faa78e95123dde02fb85345 differ
-diff --git a/fuzz/corpora/asn1/e14eb091b4e44f9657be5272fd9f82aad18e8dae b/fuzz/corpora/asn1/e14eb091b4e44f9657be5272fd9f82aad18e8dae
+index 0000000..13dac58
+Binary files /dev/null and b/fuzz/corpora/asn1parse/bf0e6c4ed317e97ffc4e9e59dc8617d33c1f5b1f differ
+diff --git a/fuzz/corpora/asn1parse/bf927eb269787d084f8c752c04a8b692ae9a13d0 b/fuzz/corpora/asn1parse/bf927eb269787d084f8c752c04a8b692ae9a13d0
 new file mode 100644
-index 000000000000..832c72c9e67c
-Binary files /dev/null and b/fuzz/corpora/asn1/e14eb091b4e44f9657be5272fd9f82aad18e8dae differ
-diff --git a/fuzz/corpora/asn1/e155376ff28aa73b18fe3830089d332581f872ed b/fuzz/corpora/asn1/e155376ff28aa73b18fe3830089d332581f872ed
+index 0000000..3c2b160
+Binary files /dev/null and b/fuzz/corpora/asn1parse/bf927eb269787d084f8c752c04a8b692ae9a13d0 differ
+diff --git a/fuzz/corpora/asn1parse/c1a6cba18b55c29b5b32a444c37f2236348f9df6 b/fuzz/corpora/asn1parse/c1a6cba18b55c29b5b32a444c37f2236348f9df6
 new file mode 100644
-index 000000000000..f038078ccd81
-Binary files /dev/null and b/fuzz/corpora/asn1/e155376ff28aa73b18fe3830089d332581f872ed differ
-diff --git a/fuzz/corpora/asn1/e205605239ec9870db43cc8993bc3fa0c566faa9 b/fuzz/corpora/asn1/e205605239ec9870db43cc8993bc3fa0c566faa9
+index 0000000..a15167f
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c1a6cba18b55c29b5b32a444c37f2236348f9df6 differ
+diff --git a/fuzz/corpora/asn1parse/c1fb56f7a0d507e50e080c9981230962ed36780a b/fuzz/corpora/asn1parse/c1fb56f7a0d507e50e080c9981230962ed36780a
 new file mode 100644
-index 000000000000..14c82e7152db
-Binary files /dev/null and b/fuzz/corpora/asn1/e205605239ec9870db43cc8993bc3fa0c566faa9 differ
-diff --git a/fuzz/corpora/asn1/e272b05aedd4c0bce220ddf18583273dcd8feb77 b/fuzz/corpora/asn1/e272b05aedd4c0bce220ddf18583273dcd8feb77
+index 0000000..4a97aaf
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c1fb56f7a0d507e50e080c9981230962ed36780a differ
+diff --git a/fuzz/corpora/asn1parse/c34e043fb2d6dc778cb39d7bcf0a00003bc1ffad b/fuzz/corpora/asn1parse/c34e043fb2d6dc778cb39d7bcf0a00003bc1ffad
 new file mode 100644
-index 000000000000..746c749bd226
-Binary files /dev/null and b/fuzz/corpora/asn1/e272b05aedd4c0bce220ddf18583273dcd8feb77 differ
-diff --git a/fuzz/corpora/asn1/e2baf9343b19e825db7339e364a4f4a263a13dfc b/fuzz/corpora/asn1/e2baf9343b19e825db7339e364a4f4a263a13dfc
+index 0000000..d84fcca
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c34e043fb2d6dc778cb39d7bcf0a00003bc1ffad differ
+diff --git a/fuzz/corpora/asn1parse/c661b23b9323ff5974cf8fcd05cb93d1ec02bb73 b/fuzz/corpora/asn1parse/c661b23b9323ff5974cf8fcd05cb93d1ec02bb73
 new file mode 100644
-index 000000000000..e43da1fb2e05
-Binary files /dev/null and b/fuzz/corpora/asn1/e2baf9343b19e825db7339e364a4f4a263a13dfc differ
-diff --git a/fuzz/corpora/asn1/e2c6386817ba886e425e487c0350c4a2728195b0 b/fuzz/corpora/asn1/e2c6386817ba886e425e487c0350c4a2728195b0
+index 0000000..6a01221
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c661b23b9323ff5974cf8fcd05cb93d1ec02bb73 differ
+diff --git a/fuzz/corpora/asn1parse/c6cd6bcee867000f405b6cd7a12dea93bc8ddddc b/fuzz/corpora/asn1parse/c6cd6bcee867000f405b6cd7a12dea93bc8ddddc
 new file mode 100644
-index 000000000000..93a19b571191
-Binary files /dev/null and b/fuzz/corpora/asn1/e2c6386817ba886e425e487c0350c4a2728195b0 differ
-diff --git a/fuzz/corpora/asn1/e3168afa0dca3a6eb51f639bf09ca019b938c015 b/fuzz/corpora/asn1/e3168afa0dca3a6eb51f639bf09ca019b938c015
+index 0000000..a2b68c3
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c6cd6bcee867000f405b6cd7a12dea93bc8ddddc differ
+diff --git a/fuzz/corpora/asn1parse/c70ddebd0fe8cab2ff742841fd1464a03795e1aa b/fuzz/corpora/asn1parse/c70ddebd0fe8cab2ff742841fd1464a03795e1aa
 new file mode 100644
-index 000000000000..f2a9213323ab
-Binary files /dev/null and b/fuzz/corpora/asn1/e3168afa0dca3a6eb51f639bf09ca019b938c015 differ
-diff --git a/fuzz/corpora/asn1/e358875da681b4a9e4a77bae299189864ff4f0d9 b/fuzz/corpora/asn1/e358875da681b4a9e4a77bae299189864ff4f0d9
+index 0000000..48bf019
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c70ddebd0fe8cab2ff742841fd1464a03795e1aa differ
+diff --git a/fuzz/corpora/asn1parse/c7397cf643b59c47a4e3935087c7897b597d224d b/fuzz/corpora/asn1parse/c7397cf643b59c47a4e3935087c7897b597d224d
 new file mode 100644
-index 000000000000..552abc30f0dc
-Binary files /dev/null and b/fuzz/corpora/asn1/e358875da681b4a9e4a77bae299189864ff4f0d9 differ
-diff --git a/fuzz/corpora/asn1/e39ff0d17934a3e6d5e5efee0a3e9ddd74098ae6 b/fuzz/corpora/asn1/e39ff0d17934a3e6d5e5efee0a3e9ddd74098ae6
+index 0000000..176b881
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c7397cf643b59c47a4e3935087c7897b597d224d differ
+diff --git a/fuzz/corpora/asn1parse/c80765af23d8b6b608b23233d4d7c4cc94f0e843 b/fuzz/corpora/asn1parse/c80765af23d8b6b608b23233d4d7c4cc94f0e843
 new file mode 100644
-index 000000000000..ff14c0e1791a
-Binary files /dev/null and b/fuzz/corpora/asn1/e39ff0d17934a3e6d5e5efee0a3e9ddd74098ae6 differ
-diff --git a/fuzz/corpora/asn1/e3d05e17a87542a524a083b9af17cd4ddaf48951 b/fuzz/corpora/asn1/e3d05e17a87542a524a083b9af17cd4ddaf48951
+index 0000000..33d8204
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c80765af23d8b6b608b23233d4d7c4cc94f0e843 differ
+diff --git a/fuzz/corpora/asn1parse/c9bfa677f6eedd01445df24beb6accc936185d04 b/fuzz/corpora/asn1parse/c9bfa677f6eedd01445df24beb6accc936185d04
 new file mode 100644
-index 000000000000..6e8b79188c53
-Binary files /dev/null and b/fuzz/corpora/asn1/e3d05e17a87542a524a083b9af17cd4ddaf48951 differ
-diff --git a/fuzz/corpora/asn1/e425e77b5da7ccfeaf84b09ddc28bef2c9105f95 b/fuzz/corpora/asn1/e425e77b5da7ccfeaf84b09ddc28bef2c9105f95
+index 0000000..1c5fbd0
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c9bfa677f6eedd01445df24beb6accc936185d04 differ
+diff --git a/fuzz/corpora/asn1parse/c9e5d4dc5af1d21b28e4e56320a539d0190d12e0 b/fuzz/corpora/asn1parse/c9e5d4dc5af1d21b28e4e56320a539d0190d12e0
 new file mode 100644
-index 000000000000..fca0370d9217
-Binary files /dev/null and b/fuzz/corpora/asn1/e425e77b5da7ccfeaf84b09ddc28bef2c9105f95 differ
-diff --git a/fuzz/corpora/asn1/e42a71c7f8169cfe88c011e27f2a15b3a8d3ad9c b/fuzz/corpora/asn1/e42a71c7f8169cfe88c011e27f2a15b3a8d3ad9c
+index 0000000..825e4f9
+Binary files /dev/null and b/fuzz/corpora/asn1parse/c9e5d4dc5af1d21b28e4e56320a539d0190d12e0 differ
+diff --git a/fuzz/corpora/asn1parse/ca93cd29e3b8cd2ef0b8212cad8ddfb88e68d84a b/fuzz/corpora/asn1parse/ca93cd29e3b8cd2ef0b8212cad8ddfb88e68d84a
 new file mode 100644
-index 000000000000..38edefea0ab4
-Binary files /dev/null and b/fuzz/corpora/asn1/e42a71c7f8169cfe88c011e27f2a15b3a8d3ad9c differ
-diff --git a/fuzz/corpora/asn1/e49fbf691a5c565ea8cd147a9687edbba9620c3b b/fuzz/corpora/asn1/e49fbf691a5c565ea8cd147a9687edbba9620c3b
+index 0000000..bc774b2
+Binary files /dev/null and b/fuzz/corpora/asn1parse/ca93cd29e3b8cd2ef0b8212cad8ddfb88e68d84a differ
+diff --git a/fuzz/corpora/asn1parse/cb2544c29d4a507200638c248a425618c7c83097 b/fuzz/corpora/asn1parse/cb2544c29d4a507200638c248a425618c7c83097
 new file mode 100644
-index 000000000000..5be9f543f5d1
-Binary files /dev/null and b/fuzz/corpora/asn1/e49fbf691a5c565ea8cd147a9687edbba9620c3b differ
-diff --git a/fuzz/corpora/asn1/e4a5647a7b06329839b9bf5478df1756dac7ca3e b/fuzz/corpora/asn1/e4a5647a7b06329839b9bf5478df1756dac7ca3e
+index 0000000..39db605
+Binary files /dev/null and b/fuzz/corpora/asn1parse/cb2544c29d4a507200638c248a425618c7c83097 differ
+diff --git a/fuzz/corpora/asn1parse/cbc48eb474953e3ca355b613a824e17159b74818 b/fuzz/corpora/asn1parse/cbc48eb474953e3ca355b613a824e17159b74818
 new file mode 100644
-index 000000000000..2f2789d57c50
-Binary files /dev/null and b/fuzz/corpora/asn1/e4a5647a7b06329839b9bf5478df1756dac7ca3e differ
-diff --git a/fuzz/corpora/asn1/e4b40d9f940670afadad1b2faeaf7e5a6979774a b/fuzz/corpora/asn1/e4b40d9f940670afadad1b2faeaf7e5a6979774a
+index 0000000..525353c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/cbc48eb474953e3ca355b613a824e17159b74818 differ
+diff --git a/fuzz/corpora/asn1parse/cc89dd1264c3b8cf86a8841e3103b57a16c55d44 b/fuzz/corpora/asn1parse/cc89dd1264c3b8cf86a8841e3103b57a16c55d44
 new file mode 100644
-index 000000000000..5f267d38970f
-Binary files /dev/null and b/fuzz/corpora/asn1/e4b40d9f940670afadad1b2faeaf7e5a6979774a differ
-diff --git a/fuzz/corpora/asn1/e4b4840017b2d4c68138b8f5c5e91ca131024140 b/fuzz/corpora/asn1/e4b4840017b2d4c68138b8f5c5e91ca131024140
+index 0000000..7f5f2a2
+Binary files /dev/null and b/fuzz/corpora/asn1parse/cc89dd1264c3b8cf86a8841e3103b57a16c55d44 differ
+diff --git a/fuzz/corpora/asn1parse/ce1a3befe579f9e574a80ec39316728c263b5a44 b/fuzz/corpora/asn1parse/ce1a3befe579f9e574a80ec39316728c263b5a44
 new file mode 100644
-index 000000000000..ff4140f0a03d
-Binary files /dev/null and b/fuzz/corpora/asn1/e4b4840017b2d4c68138b8f5c5e91ca131024140 differ
-diff --git a/fuzz/corpora/asn1/e4dc8d9e0b4842f244c1cabac2057b1d00fa2e5a b/fuzz/corpora/asn1/e4dc8d9e0b4842f244c1cabac2057b1d00fa2e5a
+index 0000000..749cb18
+Binary files /dev/null and b/fuzz/corpora/asn1parse/ce1a3befe579f9e574a80ec39316728c263b5a44 differ
+diff --git a/fuzz/corpora/asn1parse/cf1fa19b578b0372a429a6c231fcc36dcc2e2abf b/fuzz/corpora/asn1parse/cf1fa19b578b0372a429a6c231fcc36dcc2e2abf
 new file mode 100644
-index 000000000000..808748d2721b
-Binary files /dev/null and b/fuzz/corpora/asn1/e4dc8d9e0b4842f244c1cabac2057b1d00fa2e5a differ
-diff --git a/fuzz/corpora/asn1/e51c6868cd1403b3236553883999b9f007c936c6 b/fuzz/corpora/asn1/e51c6868cd1403b3236553883999b9f007c936c6
+index 0000000..7997bd2
+Binary files /dev/null and b/fuzz/corpora/asn1parse/cf1fa19b578b0372a429a6c231fcc36dcc2e2abf differ
+diff --git a/fuzz/corpora/asn1parse/d05e7d1ca345e102e97b0c18c920b67fcef3ad5a b/fuzz/corpora/asn1parse/d05e7d1ca345e102e97b0c18c920b67fcef3ad5a
 new file mode 100644
-index 000000000000..ffe7f3a8a56b
-Binary files /dev/null and b/fuzz/corpora/asn1/e51c6868cd1403b3236553883999b9f007c936c6 differ
-diff --git a/fuzz/corpora/asn1/e546650389899d0942fb766aa7bd5ad8329c0e4f b/fuzz/corpora/asn1/e546650389899d0942fb766aa7bd5ad8329c0e4f
+index 0000000..dfb0b97
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d05e7d1ca345e102e97b0c18c920b67fcef3ad5a differ
+diff --git a/fuzz/corpora/asn1parse/d0ef3bdd878fafa9d19bc76e7d37dfa0a8094a33 b/fuzz/corpora/asn1parse/d0ef3bdd878fafa9d19bc76e7d37dfa0a8094a33
 new file mode 100644
-index 000000000000..022ffa2a6959
-Binary files /dev/null and b/fuzz/corpora/asn1/e546650389899d0942fb766aa7bd5ad8329c0e4f differ
-diff --git a/fuzz/corpora/asn1/e59b983efc65bfe78433c6897a9f68e24eccada8 b/fuzz/corpora/asn1/e59b983efc65bfe78433c6897a9f68e24eccada8
+index 0000000..eeaab6b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d0ef3bdd878fafa9d19bc76e7d37dfa0a8094a33 differ
+diff --git a/fuzz/corpora/asn1parse/d1c134f061c079584a1efc49130dedf873aadf01 b/fuzz/corpora/asn1parse/d1c134f061c079584a1efc49130dedf873aadf01
 new file mode 100644
-index 000000000000..774480b025d9
-Binary files /dev/null and b/fuzz/corpora/asn1/e59b983efc65bfe78433c6897a9f68e24eccada8 differ
-diff --git a/fuzz/corpora/asn1/e608a032799e9ed60f4f5ca93141faebceecaa71 b/fuzz/corpora/asn1/e608a032799e9ed60f4f5ca93141faebceecaa71
+index 0000000..a02f87c
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d1c134f061c079584a1efc49130dedf873aadf01 differ
+diff --git a/fuzz/corpora/asn1parse/d325114f7f07668964335796c9ae574fa17bd2e6 b/fuzz/corpora/asn1parse/d325114f7f07668964335796c9ae574fa17bd2e6
 new file mode 100644
-index 000000000000..fe9bc6d5fa98
-Binary files /dev/null and b/fuzz/corpora/asn1/e608a032799e9ed60f4f5ca93141faebceecaa71 differ
-diff --git a/fuzz/corpora/asn1/e62ee7979a3895cb9bd6b03fdfd81aa8eaac543a b/fuzz/corpora/asn1/e62ee7979a3895cb9bd6b03fdfd81aa8eaac543a
+index 0000000..12f24d8
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d325114f7f07668964335796c9ae574fa17bd2e6 differ
+diff --git a/fuzz/corpora/asn1parse/d3c705320b6a61d2ddd85a05799f4503f77a1462 b/fuzz/corpora/asn1parse/d3c705320b6a61d2ddd85a05799f4503f77a1462
 new file mode 100644
-index 000000000000..4202ec169bc7
-Binary files /dev/null and b/fuzz/corpora/asn1/e62ee7979a3895cb9bd6b03fdfd81aa8eaac543a differ
-diff --git a/fuzz/corpora/asn1/e6885589ba13c61f7a6c1f494002d3074a8825bc b/fuzz/corpora/asn1/e6885589ba13c61f7a6c1f494002d3074a8825bc
+index 0000000..59dcad7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d3c705320b6a61d2ddd85a05799f4503f77a1462 differ
+diff --git a/fuzz/corpora/asn1parse/d3de2c5c3ea9a3d245ede3e27a98e9744abf2b24 b/fuzz/corpora/asn1parse/d3de2c5c3ea9a3d245ede3e27a98e9744abf2b24
 new file mode 100644
-index 000000000000..f52ec5ad4a13
-Binary files /dev/null and b/fuzz/corpora/asn1/e6885589ba13c61f7a6c1f494002d3074a8825bc differ
-diff --git a/fuzz/corpora/asn1/e7278cea2c80f55dc1271d85802bd0ec9024692c b/fuzz/corpora/asn1/e7278cea2c80f55dc1271d85802bd0ec9024692c
+index 0000000..5e1c540
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d3de2c5c3ea9a3d245ede3e27a98e9744abf2b24 differ
+diff --git a/fuzz/corpora/asn1parse/d5c2424baad7cc0ef9529f352c1b6d48710a9153 b/fuzz/corpora/asn1parse/d5c2424baad7cc0ef9529f352c1b6d48710a9153
 new file mode 100644
-index 000000000000..1c2c18d32f84
-Binary files /dev/null and b/fuzz/corpora/asn1/e7278cea2c80f55dc1271d85802bd0ec9024692c differ
-diff --git a/fuzz/corpora/asn1/e7ac55e57819e9c78cfe01ba12155009c7fa1295 b/fuzz/corpora/asn1/e7ac55e57819e9c78cfe01ba12155009c7fa1295
+index 0000000..4b28da1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d5c2424baad7cc0ef9529f352c1b6d48710a9153 differ
+diff --git a/fuzz/corpora/asn1parse/d62515675a7d1ca9a406f07da79bfd82a4135019 b/fuzz/corpora/asn1parse/d62515675a7d1ca9a406f07da79bfd82a4135019
 new file mode 100644
-index 000000000000..0aa7046afba5
-Binary files /dev/null and b/fuzz/corpora/asn1/e7ac55e57819e9c78cfe01ba12155009c7fa1295 differ
-diff --git a/fuzz/corpora/asn1/e7eb6d67807e8080abd9b1decc7daeeff43fa01f b/fuzz/corpora/asn1/e7eb6d67807e8080abd9b1decc7daeeff43fa01f
+index 0000000..182363d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d62515675a7d1ca9a406f07da79bfd82a4135019 differ
+diff --git a/fuzz/corpora/asn1parse/d6b5cac6a02d839539c781b9274b415b66829677 b/fuzz/corpora/asn1parse/d6b5cac6a02d839539c781b9274b415b66829677
 new file mode 100644
-index 000000000000..d8465181ec27
-Binary files /dev/null and b/fuzz/corpora/asn1/e7eb6d67807e8080abd9b1decc7daeeff43fa01f differ
-diff --git a/fuzz/corpora/asn1/e7fe5753ce00ef69c7b4cd2004f992cd166ccbbe b/fuzz/corpora/asn1/e7fe5753ce00ef69c7b4cd2004f992cd166ccbbe
+index 0000000..0f8cb94
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d6b5cac6a02d839539c781b9274b415b66829677 differ
+diff --git a/fuzz/corpora/asn1parse/d6ff8c6029535af58880ddfe5b25d48c4307361b b/fuzz/corpora/asn1parse/d6ff8c6029535af58880ddfe5b25d48c4307361b
 new file mode 100644
-index 000000000000..4be253457457
-Binary files /dev/null and b/fuzz/corpora/asn1/e7fe5753ce00ef69c7b4cd2004f992cd166ccbbe differ
-diff --git a/fuzz/corpora/asn1/e83cd87e68e5f159805916695f92b2664a539700 b/fuzz/corpora/asn1/e83cd87e68e5f159805916695f92b2664a539700
+index 0000000..dae8b96
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d6ff8c6029535af58880ddfe5b25d48c4307361b differ
+diff --git a/fuzz/corpora/asn1parse/d78473c6750bfec075d759d6d694f94e74bb037a b/fuzz/corpora/asn1parse/d78473c6750bfec075d759d6d694f94e74bb037a
 new file mode 100644
-index 000000000000..6e39a72ba58a
-Binary files /dev/null and b/fuzz/corpora/asn1/e83cd87e68e5f159805916695f92b2664a539700 differ
-diff --git a/fuzz/corpora/asn1/e847577e5107ca99ae9e3d4fa75d5252ed99b8fd b/fuzz/corpora/asn1/e847577e5107ca99ae9e3d4fa75d5252ed99b8fd
+index 0000000..3c2901a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d78473c6750bfec075d759d6d694f94e74bb037a differ
+diff --git a/fuzz/corpora/asn1parse/d7ea3792ebf29b6c61cb538016e6eaec0cf7f0ec b/fuzz/corpora/asn1parse/d7ea3792ebf29b6c61cb538016e6eaec0cf7f0ec
 new file mode 100644
-index 000000000000..97932529f724
-Binary files /dev/null and b/fuzz/corpora/asn1/e847577e5107ca99ae9e3d4fa75d5252ed99b8fd differ
-diff --git a/fuzz/corpora/asn1/e86c3b0579c2e5bb9721702e447e643f2173a1fc b/fuzz/corpora/asn1/e86c3b0579c2e5bb9721702e447e643f2173a1fc
+index 0000000..0b12de1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d7ea3792ebf29b6c61cb538016e6eaec0cf7f0ec differ
+diff --git a/fuzz/corpora/asn1parse/d8d104dc931ec6c660979efd1a98dbb9db181859 b/fuzz/corpora/asn1parse/d8d104dc931ec6c660979efd1a98dbb9db181859
 new file mode 100644
-index 000000000000..cd76933be009
-Binary files /dev/null and b/fuzz/corpora/asn1/e86c3b0579c2e5bb9721702e447e643f2173a1fc differ
-diff --git a/fuzz/corpora/asn1/e8728bccabf1d92577d843b57a5b65b7fc8e5bff b/fuzz/corpora/asn1/e8728bccabf1d92577d843b57a5b65b7fc8e5bff
+index 0000000..c0c12e6
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d8d104dc931ec6c660979efd1a98dbb9db181859 differ
+diff --git a/fuzz/corpora/asn1parse/d9bd2ac70f9e3a49b6b4b6f2dc32388061164ba3 b/fuzz/corpora/asn1parse/d9bd2ac70f9e3a49b6b4b6f2dc32388061164ba3
 new file mode 100644
-index 000000000000..2a0cf5b6f37f
-Binary files /dev/null and b/fuzz/corpora/asn1/e8728bccabf1d92577d843b57a5b65b7fc8e5bff differ
-diff --git a/fuzz/corpora/asn1/e88d98a2448e67113e6188e25937d94d95046452 b/fuzz/corpora/asn1/e88d98a2448e67113e6188e25937d94d95046452
+index 0000000..a2f6e55
+Binary files /dev/null and b/fuzz/corpora/asn1parse/d9bd2ac70f9e3a49b6b4b6f2dc32388061164ba3 differ
+diff --git a/fuzz/corpora/asn1parse/db4d4c05ec085b7060dcecc9a5257b03310117e7 b/fuzz/corpora/asn1parse/db4d4c05ec085b7060dcecc9a5257b03310117e7
 new file mode 100644
-index 000000000000..5936c2e3114b
-Binary files /dev/null and b/fuzz/corpora/asn1/e88d98a2448e67113e6188e25937d94d95046452 differ
-diff --git a/fuzz/corpora/asn1/e88e86a0bf12086524ebc75717d94a00e4e601fa b/fuzz/corpora/asn1/e88e86a0bf12086524ebc75717d94a00e4e601fa
+index 0000000..3222505
+Binary files /dev/null and b/fuzz/corpora/asn1parse/db4d4c05ec085b7060dcecc9a5257b03310117e7 differ
+diff --git a/fuzz/corpora/asn1parse/db682e28c2c97510917e3682e24571e72cc0654e b/fuzz/corpora/asn1parse/db682e28c2c97510917e3682e24571e72cc0654e
 new file mode 100644
-index 000000000000..3b6059eb8dbb
-Binary files /dev/null and b/fuzz/corpora/asn1/e88e86a0bf12086524ebc75717d94a00e4e601fa differ
-diff --git a/fuzz/corpora/asn1/e89143cb73343a6b603ddb650ccdf8026d83c791 b/fuzz/corpora/asn1/e89143cb73343a6b603ddb650ccdf8026d83c791
+index 0000000..d465424
+Binary files /dev/null and b/fuzz/corpora/asn1parse/db682e28c2c97510917e3682e24571e72cc0654e differ
+diff --git a/fuzz/corpora/asn1parse/dbc2045d8f266834887df6b4efb670901988cadd b/fuzz/corpora/asn1parse/dbc2045d8f266834887df6b4efb670901988cadd
 new file mode 100644
-index 000000000000..744baa487924
-Binary files /dev/null and b/fuzz/corpora/asn1/e89143cb73343a6b603ddb650ccdf8026d83c791 differ
-diff --git a/fuzz/corpora/asn1/e8f563e6ce58bb9c291a03d9f6b9addb87106fb6 b/fuzz/corpora/asn1/e8f563e6ce58bb9c291a03d9f6b9addb87106fb6
+index 0000000..324635b
+Binary files /dev/null and b/fuzz/corpora/asn1parse/dbc2045d8f266834887df6b4efb670901988cadd differ
+diff --git a/fuzz/corpora/asn1parse/dc0c9f1f28209d6cd51220b11a6a95ecd53ffdfc b/fuzz/corpora/asn1parse/dc0c9f1f28209d6cd51220b11a6a95ecd53ffdfc
 new file mode 100644
-index 000000000000..9c4b6c287730
-Binary files /dev/null and b/fuzz/corpora/asn1/e8f563e6ce58bb9c291a03d9f6b9addb87106fb6 differ
-diff --git a/fuzz/corpora/asn1/e917cd00f6618dd5ab65b0c7afe41b480136596d b/fuzz/corpora/asn1/e917cd00f6618dd5ab65b0c7afe41b480136596d
+index 0000000..1c3926d
+Binary files /dev/null and b/fuzz/corpora/asn1parse/dc0c9f1f28209d6cd51220b11a6a95ecd53ffdfc differ
+diff --git a/fuzz/corpora/asn1parse/dc72680965866e9c1eec2c5d5b0da1449693a0af b/fuzz/corpora/asn1parse/dc72680965866e9c1eec2c5d5b0da1449693a0af
 new file mode 100644
-index 000000000000..ac185776dc39
-Binary files /dev/null and b/fuzz/corpora/asn1/e917cd00f6618dd5ab65b0c7afe41b480136596d differ
-diff --git a/fuzz/corpora/asn1/e9731a163f29c6d8397450d58fb27d3bc20e605a b/fuzz/corpora/asn1/e9731a163f29c6d8397450d58fb27d3bc20e605a
+index 0000000..9b2f3ab
+Binary files /dev/null and b/fuzz/corpora/asn1parse/dc72680965866e9c1eec2c5d5b0da1449693a0af differ
+diff --git a/fuzz/corpora/asn1parse/dd84c88f88d5ecbe6757b75127232f057b409e9e b/fuzz/corpora/asn1parse/dd84c88f88d5ecbe6757b75127232f057b409e9e
 new file mode 100644
-index 000000000000..657a15550e51
-Binary files /dev/null and b/fuzz/corpora/asn1/e9731a163f29c6d8397450d58fb27d3bc20e605a differ
-diff --git a/fuzz/corpora/asn1/e9825d207465ecee6944877111527a1c62759571 b/fuzz/corpora/asn1/e9825d207465ecee6944877111527a1c62759571
+index 0000000..1052a29
+Binary files /dev/null and b/fuzz/corpora/asn1parse/dd84c88f88d5ecbe6757b75127232f057b409e9e differ
+diff --git a/fuzz/corpora/asn1parse/dda067e9417c03146d10eb26773f06a0fdbc2625 b/fuzz/corpora/asn1parse/dda067e9417c03146d10eb26773f06a0fdbc2625
 new file mode 100644
-index 000000000000..f6df5f6ca242
-Binary files /dev/null and b/fuzz/corpora/asn1/e9825d207465ecee6944877111527a1c62759571 differ
-diff --git a/fuzz/corpora/asn1/e9a27312b5fb64f20e550bc6feba724129d17def b/fuzz/corpora/asn1/e9a27312b5fb64f20e550bc6feba724129d17def
+index 0000000..06be4ec
+Binary files /dev/null and b/fuzz/corpora/asn1parse/dda067e9417c03146d10eb26773f06a0fdbc2625 differ
+diff --git a/fuzz/corpora/asn1parse/de0120ee3cbff8de7f943ed3f5e7b83cad222b4f b/fuzz/corpora/asn1parse/de0120ee3cbff8de7f943ed3f5e7b83cad222b4f
 new file mode 100644
-index 000000000000..ea7ba8036c03
-Binary files /dev/null and b/fuzz/corpora/asn1/e9a27312b5fb64f20e550bc6feba724129d17def differ
-diff --git a/fuzz/corpora/asn1/e9dc07581e99f3a201be99dec1b06b9aaf1d0fb1 b/fuzz/corpora/asn1/e9dc07581e99f3a201be99dec1b06b9aaf1d0fb1
+index 0000000..84e1e1a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/de0120ee3cbff8de7f943ed3f5e7b83cad222b4f differ
+diff --git a/fuzz/corpora/asn1parse/de75408ddb2328dd29c5f219db602527cafb039d b/fuzz/corpora/asn1parse/de75408ddb2328dd29c5f219db602527cafb039d
 new file mode 100644
-index 000000000000..512c2e413b80
-Binary files /dev/null and b/fuzz/corpora/asn1/e9dc07581e99f3a201be99dec1b06b9aaf1d0fb1 differ
-diff --git a/fuzz/corpora/asn1/ea062e1ba249371504dfe0a71633cf2e0a68e149 b/fuzz/corpora/asn1/ea062e1ba249371504dfe0a71633cf2e0a68e149
+index 0000000..527c014
+Binary files /dev/null and b/fuzz/corpora/asn1parse/de75408ddb2328dd29c5f219db602527cafb039d differ
+diff --git a/fuzz/corpora/asn1parse/e052451bd4b91bf815b2c4c2a3eadabe999ee07b b/fuzz/corpora/asn1parse/e052451bd4b91bf815b2c4c2a3eadabe999ee07b
 new file mode 100644
-index 000000000000..b5d33a5eb43a
-Binary files /dev/null and b/fuzz/corpora/asn1/ea062e1ba249371504dfe0a71633cf2e0a68e149 differ
-diff --git a/fuzz/corpora/asn1/eb05b0f3503c93d940ba8a0e9bb1a941cd430b4e b/fuzz/corpora/asn1/eb05b0f3503c93d940ba8a0e9bb1a941cd430b4e
+index 0000000..1a4ff86
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e052451bd4b91bf815b2c4c2a3eadabe999ee07b differ
+diff --git a/fuzz/corpora/asn1parse/e06dd0a39567d3a5ba9288c6e958bbce567a1f5b b/fuzz/corpora/asn1parse/e06dd0a39567d3a5ba9288c6e958bbce567a1f5b
 new file mode 100644
-index 000000000000..83605f23afab
-Binary files /dev/null and b/fuzz/corpora/asn1/eb05b0f3503c93d940ba8a0e9bb1a941cd430b4e differ
-diff --git a/fuzz/corpora/asn1/eb157c68e50ccac8d7c13b65696bee8e95681187 b/fuzz/corpora/asn1/eb157c68e50ccac8d7c13b65696bee8e95681187
+index 0000000..25ece56
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e06dd0a39567d3a5ba9288c6e958bbce567a1f5b differ
+diff --git a/fuzz/corpora/asn1parse/e119fba6065c6b714fe5e15437e20070fc0341c6 b/fuzz/corpora/asn1parse/e119fba6065c6b714fe5e15437e20070fc0341c6
 new file mode 100644
-index 000000000000..a41560ccea43
-Binary files /dev/null and b/fuzz/corpora/asn1/eb157c68e50ccac8d7c13b65696bee8e95681187 differ
-diff --git a/fuzz/corpora/asn1/ebfc321ed8f7263de671c78639200f70a7d7534d b/fuzz/corpora/asn1/ebfc321ed8f7263de671c78639200f70a7d7534d
+index 0000000..2b92ade
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e119fba6065c6b714fe5e15437e20070fc0341c6 differ
+diff --git a/fuzz/corpora/asn1parse/e3653b46b62553713990252d2975926ccc0eb315 b/fuzz/corpora/asn1parse/e3653b46b62553713990252d2975926ccc0eb315
 new file mode 100644
-index 000000000000..31ad62e87a67
-Binary files /dev/null and b/fuzz/corpora/asn1/ebfc321ed8f7263de671c78639200f70a7d7534d differ
-diff --git a/fuzz/corpora/asn1/ec0fd4f45b2ce610a6cfc298433c8707a84f1967 b/fuzz/corpora/asn1/ec0fd4f45b2ce610a6cfc298433c8707a84f1967
+index 0000000..7269e74
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e3653b46b62553713990252d2975926ccc0eb315 differ
+diff --git a/fuzz/corpora/asn1parse/e3a8a45a6e86523a21a6f1b36343c2a3929830ea b/fuzz/corpora/asn1parse/e3a8a45a6e86523a21a6f1b36343c2a3929830ea
 new file mode 100644
-index 000000000000..50c01aa07911
-Binary files /dev/null and b/fuzz/corpora/asn1/ec0fd4f45b2ce610a6cfc298433c8707a84f1967 differ
-diff --git a/fuzz/corpora/asn1/ec756d79b19b1629bc504d2ed7ae584fa7d24237 b/fuzz/corpora/asn1/ec756d79b19b1629bc504d2ed7ae584fa7d24237
+index 0000000..1803192
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e3a8a45a6e86523a21a6f1b36343c2a3929830ea differ
+diff --git a/fuzz/corpora/asn1parse/e3e5c7816d86fddd40ea63962f5cc22a78464abf b/fuzz/corpora/asn1parse/e3e5c7816d86fddd40ea63962f5cc22a78464abf
 new file mode 100644
-index 000000000000..b2d34606deeb
-Binary files /dev/null and b/fuzz/corpora/asn1/ec756d79b19b1629bc504d2ed7ae584fa7d24237 differ
-diff --git a/fuzz/corpora/asn1/ecb603afe3bed074223071cc7f541f300adcf18b b/fuzz/corpora/asn1/ecb603afe3bed074223071cc7f541f300adcf18b
+index 0000000..2e1e8ee
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e3e5c7816d86fddd40ea63962f5cc22a78464abf differ
+diff --git a/fuzz/corpora/asn1parse/e449746789369ea8094ff0d19fe6461d268c84e7 b/fuzz/corpora/asn1parse/e449746789369ea8094ff0d19fe6461d268c84e7
 new file mode 100644
-index 000000000000..48828a2f1cc3
-Binary files /dev/null and b/fuzz/corpora/asn1/ecb603afe3bed074223071cc7f541f300adcf18b differ
-diff --git a/fuzz/corpora/asn1/ed14e072e7edae3ca94eeeaa35c73fd185974e80 b/fuzz/corpora/asn1/ed14e072e7edae3ca94eeeaa35c73fd185974e80
+index 0000000..8d0f898
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e449746789369ea8094ff0d19fe6461d268c84e7 differ
+diff --git a/fuzz/corpora/asn1parse/e4602e7fe47f937a575cdda313094655813480fe b/fuzz/corpora/asn1parse/e4602e7fe47f937a575cdda313094655813480fe
 new file mode 100644
-index 000000000000..496f6c3b03f9
-Binary files /dev/null and b/fuzz/corpora/asn1/ed14e072e7edae3ca94eeeaa35c73fd185974e80 differ
-diff --git a/fuzz/corpora/asn1/ed2ee66c7d9b4a75622bedfd21b28255581a01d3 b/fuzz/corpora/asn1/ed2ee66c7d9b4a75622bedfd21b28255581a01d3
+index 0000000..f976e32
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e4602e7fe47f937a575cdda313094655813480fe differ
+diff --git a/fuzz/corpora/asn1parse/e64dae6abc50fb5c785f8f890a324c76f591aab0 b/fuzz/corpora/asn1parse/e64dae6abc50fb5c785f8f890a324c76f591aab0
 new file mode 100644
-index 000000000000..870f230b7015
-Binary files /dev/null and b/fuzz/corpora/asn1/ed2ee66c7d9b4a75622bedfd21b28255581a01d3 differ
-diff --git a/fuzz/corpora/asn1/ed7af4b11ce8e01084d89f4dc916fce7a7704d2a b/fuzz/corpora/asn1/ed7af4b11ce8e01084d89f4dc916fce7a7704d2a
+index 0000000..02da766
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e64dae6abc50fb5c785f8f890a324c76f591aab0 differ
+diff --git a/fuzz/corpora/asn1parse/e87fcf809567c9f4cb90fbe17162222eb58226db b/fuzz/corpora/asn1parse/e87fcf809567c9f4cb90fbe17162222eb58226db
 new file mode 100644
-index 000000000000..db159d006d37
-Binary files /dev/null and b/fuzz/corpora/asn1/ed7af4b11ce8e01084d89f4dc916fce7a7704d2a differ
-diff --git a/fuzz/corpora/asn1/ed7d45d02385de9250c39ff70bb149221136c199 b/fuzz/corpora/asn1/ed7d45d02385de9250c39ff70bb149221136c199
+index 0000000..87be267
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e87fcf809567c9f4cb90fbe17162222eb58226db differ
+diff --git a/fuzz/corpora/asn1parse/e94941b8a0c138224c4e9e1864bc09f4a13710bf b/fuzz/corpora/asn1parse/e94941b8a0c138224c4e9e1864bc09f4a13710bf
 new file mode 100644
-index 000000000000..8a3fce58d4cf
-Binary files /dev/null and b/fuzz/corpora/asn1/ed7d45d02385de9250c39ff70bb149221136c199 differ
-diff --git a/fuzz/corpora/asn1/ed9dac18a48ed216607bc8fdebe6c45740036692 b/fuzz/corpora/asn1/ed9dac18a48ed216607bc8fdebe6c45740036692
+index 0000000..1d44df4
+Binary files /dev/null and b/fuzz/corpora/asn1parse/e94941b8a0c138224c4e9e1864bc09f4a13710bf differ
+diff --git a/fuzz/corpora/asn1parse/eadd30308315c67abc51398d404f8f37e11b8940 b/fuzz/corpora/asn1parse/eadd30308315c67abc51398d404f8f37e11b8940
 new file mode 100644
-index 000000000000..20aa428e761f
-Binary files /dev/null and b/fuzz/corpora/asn1/ed9dac18a48ed216607bc8fdebe6c45740036692 differ
-diff --git a/fuzz/corpora/asn1/edcb2d604244c089728b8f3e7bfa7e37c592f10a b/fuzz/corpora/asn1/edcb2d604244c089728b8f3e7bfa7e37c592f10a
+index 0000000..941a1eb
+Binary files /dev/null and b/fuzz/corpora/asn1parse/eadd30308315c67abc51398d404f8f37e11b8940 differ
+diff --git a/fuzz/corpora/asn1parse/f05d4ba00c4c2e50589afdf0539c6e5aa8370e69 b/fuzz/corpora/asn1parse/f05d4ba00c4c2e50589afdf0539c6e5aa8370e69
 new file mode 100644
-index 000000000000..eac721bccd8b
-Binary files /dev/null and b/fuzz/corpora/asn1/edcb2d604244c089728b8f3e7bfa7e37c592f10a differ
-diff --git a/fuzz/corpora/asn1/edf5e3c4f8208f16fc354ce59a3541412787f148 b/fuzz/corpora/asn1/edf5e3c4f8208f16fc354ce59a3541412787f148
+index 0000000..d043717
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f05d4ba00c4c2e50589afdf0539c6e5aa8370e69 differ
+diff --git a/fuzz/corpora/asn1parse/f1a1ae42abd12b44b31e44645dc31255a6a4d140 b/fuzz/corpora/asn1parse/f1a1ae42abd12b44b31e44645dc31255a6a4d140
 new file mode 100644
-index 000000000000..2607d09e34ff
-Binary files /dev/null and b/fuzz/corpora/asn1/edf5e3c4f8208f16fc354ce59a3541412787f148 differ
-diff --git a/fuzz/corpora/asn1/ee06f62c3a3fa8ecdbf12c33cca09884bd8ec885 b/fuzz/corpora/asn1/ee06f62c3a3fa8ecdbf12c33cca09884bd8ec885
+index 0000000..dde9ed5
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f1a1ae42abd12b44b31e44645dc31255a6a4d140 differ
+diff --git a/fuzz/corpora/asn1parse/f279f3c49614f5370f3bba1abbf8ca89a317c7c5 b/fuzz/corpora/asn1parse/f279f3c49614f5370f3bba1abbf8ca89a317c7c5
 new file mode 100644
-index 000000000000..d732a486a16d
-Binary files /dev/null and b/fuzz/corpora/asn1/ee06f62c3a3fa8ecdbf12c33cca09884bd8ec885 differ
-diff --git a/fuzz/corpora/asn1/ee2e25b85b02111ced3eb884eee2f1fb8a2f46a8 b/fuzz/corpora/asn1/ee2e25b85b02111ced3eb884eee2f1fb8a2f46a8
+index 0000000..f5b22a2
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f279f3c49614f5370f3bba1abbf8ca89a317c7c5 differ
+diff --git a/fuzz/corpora/asn1parse/f32ad7ad48ef28d6a43fa2ec9cc65d06d25865bb b/fuzz/corpora/asn1parse/f32ad7ad48ef28d6a43fa2ec9cc65d06d25865bb
 new file mode 100644
-index 000000000000..244ce232a0c6
-Binary files /dev/null and b/fuzz/corpora/asn1/ee2e25b85b02111ced3eb884eee2f1fb8a2f46a8 differ
-diff --git a/fuzz/corpora/asn1/ee35f63b68dee29b2464b2257f395a3ed1f4b43d b/fuzz/corpora/asn1/ee35f63b68dee29b2464b2257f395a3ed1f4b43d
+index 0000000..fa91772
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f32ad7ad48ef28d6a43fa2ec9cc65d06d25865bb differ
+diff --git a/fuzz/corpora/asn1parse/f3864c3f23afdbf3273e55df98acce93b59279b5 b/fuzz/corpora/asn1parse/f3864c3f23afdbf3273e55df98acce93b59279b5
 new file mode 100644
-index 000000000000..b5bd90a91026
-Binary files /dev/null and b/fuzz/corpora/asn1/ee35f63b68dee29b2464b2257f395a3ed1f4b43d differ
-diff --git a/fuzz/corpora/asn1/ee97a0ce0de06a8784d082cb3be0b9e7e2e04523 b/fuzz/corpora/asn1/ee97a0ce0de06a8784d082cb3be0b9e7e2e04523
+index 0000000..38b78b1
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f3864c3f23afdbf3273e55df98acce93b59279b5 differ
+diff --git a/fuzz/corpora/asn1parse/f4f704f7d91a0f0559d12885d30bd634c623df5d b/fuzz/corpora/asn1parse/f4f704f7d91a0f0559d12885d30bd634c623df5d
 new file mode 100644
-index 000000000000..d72d4a7cba8f
-Binary files /dev/null and b/fuzz/corpora/asn1/ee97a0ce0de06a8784d082cb3be0b9e7e2e04523 differ
-diff --git a/fuzz/corpora/asn1/eed726934632d1c2ddc8930e2c08b9fcaa6d0f87 b/fuzz/corpora/asn1/eed726934632d1c2ddc8930e2c08b9fcaa6d0f87
+index 0000000..6ac17fa
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f4f704f7d91a0f0559d12885d30bd634c623df5d differ
+diff --git a/fuzz/corpora/asn1parse/f514913b79fdad5b752fa7d3254d7bddac4af52f b/fuzz/corpora/asn1parse/f514913b79fdad5b752fa7d3254d7bddac4af52f
 new file mode 100644
-index 000000000000..8796b5f0a567
-Binary files /dev/null and b/fuzz/corpora/asn1/eed726934632d1c2ddc8930e2c08b9fcaa6d0f87 differ
-diff --git a/fuzz/corpora/asn1/ef248ad433f77c804e85e5028b9a36c51522056c b/fuzz/corpora/asn1/ef248ad433f77c804e85e5028b9a36c51522056c
+index 0000000..a8f3b3a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f514913b79fdad5b752fa7d3254d7bddac4af52f differ
+diff --git a/fuzz/corpora/asn1parse/f6cb56d79acb8d557dd3016eccc70f693b30e4af b/fuzz/corpora/asn1parse/f6cb56d79acb8d557dd3016eccc70f693b30e4af
 new file mode 100644
-index 000000000000..9858fe7273c6
-Binary files /dev/null and b/fuzz/corpora/asn1/ef248ad433f77c804e85e5028b9a36c51522056c differ
-diff --git a/fuzz/corpora/asn1/ef474981d39b4e8f30b2fcc9ecaddd21d76f4484 b/fuzz/corpora/asn1/ef474981d39b4e8f30b2fcc9ecaddd21d76f4484
+index 0000000..5099c53
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f6cb56d79acb8d557dd3016eccc70f693b30e4af differ
+diff --git a/fuzz/corpora/asn1parse/f7ebb3f54a3cbbe0d0ca7522edfb2275b0ae37b2 b/fuzz/corpora/asn1parse/f7ebb3f54a3cbbe0d0ca7522edfb2275b0ae37b2
 new file mode 100644
-index 000000000000..f1c17c93cf49
-Binary files /dev/null and b/fuzz/corpora/asn1/ef474981d39b4e8f30b2fcc9ecaddd21d76f4484 differ
-diff --git a/fuzz/corpora/asn1/ef4e7e9829693bd3d30938238f1ab90012ef53ca b/fuzz/corpora/asn1/ef4e7e9829693bd3d30938238f1ab90012ef53ca
+index 0000000..52d45b8
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f7ebb3f54a3cbbe0d0ca7522edfb2275b0ae37b2 differ
+diff --git a/fuzz/corpora/asn1parse/f934d75808ba8d45653fd499ab221366fa2a2c35 b/fuzz/corpora/asn1parse/f934d75808ba8d45653fd499ab221366fa2a2c35
 new file mode 100644
-index 000000000000..e9afcdfaac45
-Binary files /dev/null and b/fuzz/corpora/asn1/ef4e7e9829693bd3d30938238f1ab90012ef53ca differ
-diff --git a/fuzz/corpora/asn1/ef6372636281d640dceef3a0992c3d411da0b81a b/fuzz/corpora/asn1/ef6372636281d640dceef3a0992c3d411da0b81a
+index 0000000..5c519f7
+Binary files /dev/null and b/fuzz/corpora/asn1parse/f934d75808ba8d45653fd499ab221366fa2a2c35 differ
+diff --git a/fuzz/corpora/asn1parse/fa89079c59d40b65bcf3935c5e114c0d8d1624a5 b/fuzz/corpora/asn1parse/fa89079c59d40b65bcf3935c5e114c0d8d1624a5
 new file mode 100644
-index 000000000000..4db4d78dc66b
-Binary files /dev/null and b/fuzz/corpora/asn1/ef6372636281d640dceef3a0992c3d411da0b81a differ
-diff --git a/fuzz/corpora/asn1/ef80be699a8c42d72dbed39b6c61b9fb575d9615 b/fuzz/corpora/asn1/ef80be699a8c42d72dbed39b6c61b9fb575d9615
+index 0000000..8667c23a
+Binary files /dev/null and b/fuzz/corpora/asn1parse/fa89079c59d40b65bcf3935c5e114c0d8d1624a5 differ
+diff --git a/fuzz/corpora/asn1parse/fc6767fecf63ff0252dd055ddd148f3c9b175fbc b/fuzz/corpora/asn1parse/fc6767fecf63ff0252dd055ddd148f3c9b175fbc
 new file mode 100644
-index 000000000000..a86acbc8186d
-Binary files /dev/null and b/fuzz/corpora/asn1/ef80be699a8c42d72dbed39b6c61b9fb575d9615 differ
-diff --git a/fuzz/corpora/asn1/ef855687ebd09539a71863668e7425422e137fcb b/fuzz/corpora/asn1/ef855687ebd09539a71863668e7425422e137fcb
+index 0000000..6375dab
+Binary files /dev/null and b/fuzz/corpora/asn1parse/fc6767fecf63ff0252dd055ddd148f3c9b175fbc differ
+diff --git a/fuzz/corpora/bignum/01b7fc31773cc20d538c37e8b7e443845851f927 b/fuzz/corpora/bignum/01b7fc31773cc20d538c37e8b7e443845851f927
 new file mode 100644
-index 000000000000..55cbfbc61573
-Binary files /dev/null and b/fuzz/corpora/asn1/ef855687ebd09539a71863668e7425422e137fcb differ
-diff --git a/fuzz/corpora/asn1/efb7ce6c871246836bafceb3b49126278388f8ea b/fuzz/corpora/asn1/efb7ce6c871246836bafceb3b49126278388f8ea
+index 0000000..9a65919
+Binary files /dev/null and b/fuzz/corpora/bignum/01b7fc31773cc20d538c37e8b7e443845851f927 differ
+diff --git a/fuzz/corpora/bignum/01cfdbae280be58731260e0b5e48baca4998cc2d b/fuzz/corpora/bignum/01cfdbae280be58731260e0b5e48baca4998cc2d
 new file mode 100644
-index 000000000000..4b4d239af5a1
-Binary files /dev/null and b/fuzz/corpora/asn1/efb7ce6c871246836bafceb3b49126278388f8ea differ
-diff --git a/fuzz/corpora/asn1/efd07a5b74147872316033ed50440c7eb3ba6652 b/fuzz/corpora/asn1/efd07a5b74147872316033ed50440c7eb3ba6652
+index 0000000..14a10a1
+Binary files /dev/null and b/fuzz/corpora/bignum/01cfdbae280be58731260e0b5e48baca4998cc2d differ
+diff --git a/fuzz/corpora/bignum/02d1f98307ef9e3e2e735fbab9a513018c830a49 b/fuzz/corpora/bignum/02d1f98307ef9e3e2e735fbab9a513018c830a49
 new file mode 100644
-index 000000000000..5829862ebe8c
-Binary files /dev/null and b/fuzz/corpora/asn1/efd07a5b74147872316033ed50440c7eb3ba6652 differ
-diff --git a/fuzz/corpora/asn1/efde2daba70aa39dfb377674960a1c1871444601 b/fuzz/corpora/asn1/efde2daba70aa39dfb377674960a1c1871444601
+index 0000000..2c1a3b0
+Binary files /dev/null and b/fuzz/corpora/bignum/02d1f98307ef9e3e2e735fbab9a513018c830a49 differ
+diff --git a/fuzz/corpora/bignum/0417bf46358c09a83fcb0349f7fbc2993615fd88 b/fuzz/corpora/bignum/0417bf46358c09a83fcb0349f7fbc2993615fd88
 new file mode 100644
-index 000000000000..8975060856ee
-Binary files /dev/null and b/fuzz/corpora/asn1/efde2daba70aa39dfb377674960a1c1871444601 differ
-diff --git a/fuzz/corpora/asn1/efed2cf9060ba6b4beafea4d2656dd1f42ca2194 b/fuzz/corpora/asn1/efed2cf9060ba6b4beafea4d2656dd1f42ca2194
+index 0000000..c5a53ea
+Binary files /dev/null and b/fuzz/corpora/bignum/0417bf46358c09a83fcb0349f7fbc2993615fd88 differ
+diff --git a/fuzz/corpora/bignum/042a5e464b4433641f400b71ae0b797434205c9b b/fuzz/corpora/bignum/042a5e464b4433641f400b71ae0b797434205c9b
 new file mode 100644
-index 000000000000..6387ead658ba
-Binary files /dev/null and b/fuzz/corpora/asn1/efed2cf9060ba6b4beafea4d2656dd1f42ca2194 differ
-diff --git a/fuzz/corpora/asn1/f02e59f0bce0fb6b782d287424158bdfc7439201 b/fuzz/corpora/asn1/f02e59f0bce0fb6b782d287424158bdfc7439201
+index 0000000..c055d1e
+Binary files /dev/null and b/fuzz/corpora/bignum/042a5e464b4433641f400b71ae0b797434205c9b differ
+diff --git a/fuzz/corpora/bignum/049d9f8110611ec40b1717abdcaf3f35a15feb49 b/fuzz/corpora/bignum/049d9f8110611ec40b1717abdcaf3f35a15feb49
 new file mode 100644
-index 000000000000..f2982bd86d6f
-Binary files /dev/null and b/fuzz/corpora/asn1/f02e59f0bce0fb6b782d287424158bdfc7439201 differ
-diff --git a/fuzz/corpora/asn1/f04d36c7154537330602b2947ffbb737518c8a58 b/fuzz/corpora/asn1/f04d36c7154537330602b2947ffbb737518c8a58
+index 0000000..46f9e5f
+Binary files /dev/null and b/fuzz/corpora/bignum/049d9f8110611ec40b1717abdcaf3f35a15feb49 differ
+diff --git a/fuzz/corpora/bignum/04e3682a99d151d4c93c247e93755881e363f449 b/fuzz/corpora/bignum/04e3682a99d151d4c93c247e93755881e363f449
 new file mode 100644
-index 000000000000..7793cfb0125c
-Binary files /dev/null and b/fuzz/corpora/asn1/f04d36c7154537330602b2947ffbb737518c8a58 differ
-diff --git a/fuzz/corpora/asn1/f0a33f1cb07d8679a92ac00a9324011f4f925d53 b/fuzz/corpora/asn1/f0a33f1cb07d8679a92ac00a9324011f4f925d53
+index 0000000..f2f7969
+Binary files /dev/null and b/fuzz/corpora/bignum/04e3682a99d151d4c93c247e93755881e363f449 differ
+diff --git a/fuzz/corpora/bignum/0585cbb7cb87cce39dbaa5e4f963db973f68d0bf b/fuzz/corpora/bignum/0585cbb7cb87cce39dbaa5e4f963db973f68d0bf
 new file mode 100644
-index 000000000000..e09eace9a1c6
-Binary files /dev/null and b/fuzz/corpora/asn1/f0a33f1cb07d8679a92ac00a9324011f4f925d53 differ
-diff --git a/fuzz/corpora/asn1/f0b273220ada531f8fe1fa4a426e3c696ce11cb7 b/fuzz/corpora/asn1/f0b273220ada531f8fe1fa4a426e3c696ce11cb7
+index 0000000..11ffb8c
+Binary files /dev/null and b/fuzz/corpora/bignum/0585cbb7cb87cce39dbaa5e4f963db973f68d0bf differ
+diff --git a/fuzz/corpora/bignum/067e9104675177fd538bf19e654d5a3c09f3ab34 b/fuzz/corpora/bignum/067e9104675177fd538bf19e654d5a3c09f3ab34
 new file mode 100644
-index 000000000000..45035738c52b
-Binary files /dev/null and b/fuzz/corpora/asn1/f0b273220ada531f8fe1fa4a426e3c696ce11cb7 differ
-diff --git a/fuzz/corpora/asn1/f1511e8c2cf556686acffcc68c34f556a8b4637a b/fuzz/corpora/asn1/f1511e8c2cf556686acffcc68c34f556a8b4637a
+index 0000000..95dbf5f
+Binary files /dev/null and b/fuzz/corpora/bignum/067e9104675177fd538bf19e654d5a3c09f3ab34 differ
+diff --git a/fuzz/corpora/bignum/06e60ad985fbc2c7b51645f5fbaa371b0ed2f394 b/fuzz/corpora/bignum/06e60ad985fbc2c7b51645f5fbaa371b0ed2f394
 new file mode 100644
-index 000000000000..470d30cba807
-Binary files /dev/null and b/fuzz/corpora/asn1/f1511e8c2cf556686acffcc68c34f556a8b4637a differ
-diff --git a/fuzz/corpora/asn1/f24d378b6f7bfe9f2f9617ac61c90457b450c365 b/fuzz/corpora/asn1/f24d378b6f7bfe9f2f9617ac61c90457b450c365
+index 0000000..6233ac7
+Binary files /dev/null and b/fuzz/corpora/bignum/06e60ad985fbc2c7b51645f5fbaa371b0ed2f394 differ
+diff --git a/fuzz/corpora/bignum/074a34a36fac4d252251a543a2b0fdbcb2acbe22 b/fuzz/corpora/bignum/074a34a36fac4d252251a543a2b0fdbcb2acbe22
 new file mode 100644
-index 000000000000..7ac61a5671b7
-Binary files /dev/null and b/fuzz/corpora/asn1/f24d378b6f7bfe9f2f9617ac61c90457b450c365 differ
-diff --git a/fuzz/corpora/asn1/f2c858af58049555721ae6714e0118f0353e50b8 b/fuzz/corpora/asn1/f2c858af58049555721ae6714e0118f0353e50b8
+index 0000000..65eea45
+Binary files /dev/null and b/fuzz/corpora/bignum/074a34a36fac4d252251a543a2b0fdbcb2acbe22 differ
+diff --git a/fuzz/corpora/bignum/097b2876b740f095a2e928d296568185e34f7a50 b/fuzz/corpora/bignum/097b2876b740f095a2e928d296568185e34f7a50
 new file mode 100644
-index 000000000000..c507637bac7d
-Binary files /dev/null and b/fuzz/corpora/asn1/f2c858af58049555721ae6714e0118f0353e50b8 differ
-diff --git a/fuzz/corpora/asn1/f33f5228f3855ed4e337902746eb07e33bb2fb22 b/fuzz/corpora/asn1/f33f5228f3855ed4e337902746eb07e33bb2fb22
+index 0000000..4df5329
+Binary files /dev/null and b/fuzz/corpora/bignum/097b2876b740f095a2e928d296568185e34f7a50 differ
+diff --git a/fuzz/corpora/bignum/0a2224bc6f250eefc4187abbe7bd8f62778ef85e b/fuzz/corpora/bignum/0a2224bc6f250eefc4187abbe7bd8f62778ef85e
 new file mode 100644
-index 000000000000..50754c97c359
-Binary files /dev/null and b/fuzz/corpora/asn1/f33f5228f3855ed4e337902746eb07e33bb2fb22 differ
-diff --git a/fuzz/corpora/asn1/f348775afc6098f72eeedc8431421e5bf7bdcdb8 b/fuzz/corpora/asn1/f348775afc6098f72eeedc8431421e5bf7bdcdb8
+index 0000000..e615fde
+Binary files /dev/null and b/fuzz/corpora/bignum/0a2224bc6f250eefc4187abbe7bd8f62778ef85e differ
+diff --git a/fuzz/corpora/bignum/0a4a65641c3137944451010dbcbb36decca62923 b/fuzz/corpora/bignum/0a4a65641c3137944451010dbcbb36decca62923
 new file mode 100644
-index 000000000000..87b17a21b683
-Binary files /dev/null and b/fuzz/corpora/asn1/f348775afc6098f72eeedc8431421e5bf7bdcdb8 differ
-diff --git a/fuzz/corpora/asn1/f373bb55cbf71228f2a0e6b8d549804b94075bf2 b/fuzz/corpora/asn1/f373bb55cbf71228f2a0e6b8d549804b94075bf2
+index 0000000..bb8a3ec
+Binary files /dev/null and b/fuzz/corpora/bignum/0a4a65641c3137944451010dbcbb36decca62923 differ
+diff --git a/fuzz/corpora/bignum/0ac3a247cd0051a4faa84fd317b52e467e3ec5ba b/fuzz/corpora/bignum/0ac3a247cd0051a4faa84fd317b52e467e3ec5ba
 new file mode 100644
-index 000000000000..0286397a8db4
-Binary files /dev/null and b/fuzz/corpora/asn1/f373bb55cbf71228f2a0e6b8d549804b94075bf2 differ
-diff --git a/fuzz/corpora/asn1/f37a77182bfc1ca161eabe5280e4fcfac7a982e8 b/fuzz/corpora/asn1/f37a77182bfc1ca161eabe5280e4fcfac7a982e8
+index 0000000..5343a32
+Binary files /dev/null and b/fuzz/corpora/bignum/0ac3a247cd0051a4faa84fd317b52e467e3ec5ba differ
+diff --git a/fuzz/corpora/bignum/0b0edb3b41f23e1a6f6ade02ee74f476a63ac140 b/fuzz/corpora/bignum/0b0edb3b41f23e1a6f6ade02ee74f476a63ac140
 new file mode 100644
-index 000000000000..faf974507e6c
-Binary files /dev/null and b/fuzz/corpora/asn1/f37a77182bfc1ca161eabe5280e4fcfac7a982e8 differ
-diff --git a/fuzz/corpora/asn1/f403f889f1f6422208b2d1bc3ed413c20eadc55e b/fuzz/corpora/asn1/f403f889f1f6422208b2d1bc3ed413c20eadc55e
+index 0000000..22d0804
+Binary files /dev/null and b/fuzz/corpora/bignum/0b0edb3b41f23e1a6f6ade02ee74f476a63ac140 differ
+diff --git a/fuzz/corpora/bignum/0c41747aa58690dd7ffdd1b14686e62f0a4411b2 b/fuzz/corpora/bignum/0c41747aa58690dd7ffdd1b14686e62f0a4411b2
 new file mode 100644
-index 000000000000..8f5271df388f
-Binary files /dev/null and b/fuzz/corpora/asn1/f403f889f1f6422208b2d1bc3ed413c20eadc55e differ
-diff --git a/fuzz/corpora/asn1/f4fc7e0da21b6a9ee00932aeaa4686848aa6ee1c b/fuzz/corpora/asn1/f4fc7e0da21b6a9ee00932aeaa4686848aa6ee1c
+index 0000000..87c04b1
+Binary files /dev/null and b/fuzz/corpora/bignum/0c41747aa58690dd7ffdd1b14686e62f0a4411b2 differ
+diff --git a/fuzz/corpora/bignum/0da7e2090e1b8744018995800351776d9cd8d0f0 b/fuzz/corpora/bignum/0da7e2090e1b8744018995800351776d9cd8d0f0
 new file mode 100644
-index 000000000000..f6c147f2bf88
-Binary files /dev/null and b/fuzz/corpora/asn1/f4fc7e0da21b6a9ee00932aeaa4686848aa6ee1c differ
-diff --git a/fuzz/corpora/asn1/f505a9d5ccd3e39a260ac49eb08d124cfaacbe2b b/fuzz/corpora/asn1/f505a9d5ccd3e39a260ac49eb08d124cfaacbe2b
+index 0000000..107e51c
+Binary files /dev/null and b/fuzz/corpora/bignum/0da7e2090e1b8744018995800351776d9cd8d0f0 differ
+diff --git a/fuzz/corpora/bignum/0e13483ea0f221d089ffcbe1f73e7f618c0a4a98 b/fuzz/corpora/bignum/0e13483ea0f221d089ffcbe1f73e7f618c0a4a98
 new file mode 100644
-index 000000000000..26136540112a
-Binary files /dev/null and b/fuzz/corpora/asn1/f505a9d5ccd3e39a260ac49eb08d124cfaacbe2b differ
-diff --git a/fuzz/corpora/asn1/f51d84d66f97450eb5385760b9b3a2db05e7e181 b/fuzz/corpora/asn1/f51d84d66f97450eb5385760b9b3a2db05e7e181
+index 0000000..02b0598
+Binary files /dev/null and b/fuzz/corpora/bignum/0e13483ea0f221d089ffcbe1f73e7f618c0a4a98 differ
+diff --git a/fuzz/corpora/bignum/0f1d22d0049fa05be3697fb5fb824dda3591df64 b/fuzz/corpora/bignum/0f1d22d0049fa05be3697fb5fb824dda3591df64
 new file mode 100644
-index 000000000000..fa3fd204cd54
-Binary files /dev/null and b/fuzz/corpora/asn1/f51d84d66f97450eb5385760b9b3a2db05e7e181 differ
-diff --git a/fuzz/corpora/asn1/f546bed3364489a7ce91dfd5fc606ab5ee9a89e7 b/fuzz/corpora/asn1/f546bed3364489a7ce91dfd5fc606ab5ee9a89e7
+index 0000000..94c6879
+Binary files /dev/null and b/fuzz/corpora/bignum/0f1d22d0049fa05be3697fb5fb824dda3591df64 differ
+diff --git a/fuzz/corpora/bignum/109b77cf4044da81cc67b7172d943fabec37ac70 b/fuzz/corpora/bignum/109b77cf4044da81cc67b7172d943fabec37ac70
 new file mode 100644
-index 000000000000..c9b0e16ce605
-Binary files /dev/null and b/fuzz/corpora/asn1/f546bed3364489a7ce91dfd5fc606ab5ee9a89e7 differ
-diff --git a/fuzz/corpora/asn1/f563834cc72b4bb82451baad26c037e9616915e4 b/fuzz/corpora/asn1/f563834cc72b4bb82451baad26c037e9616915e4
+index 0000000..0e518b6
+Binary files /dev/null and b/fuzz/corpora/bignum/109b77cf4044da81cc67b7172d943fabec37ac70 differ
+diff --git a/fuzz/corpora/bignum/1129623d6f7314caf04ef1baa7e2dc24623cb93c b/fuzz/corpora/bignum/1129623d6f7314caf04ef1baa7e2dc24623cb93c
 new file mode 100644
-index 000000000000..d5b64c14127d
-Binary files /dev/null and b/fuzz/corpora/asn1/f563834cc72b4bb82451baad26c037e9616915e4 differ
-diff --git a/fuzz/corpora/asn1/f5ccf61f843115f7999ffc4aba5c5aa8fac90243 b/fuzz/corpora/asn1/f5ccf61f843115f7999ffc4aba5c5aa8fac90243
+index 0000000..43d5bac
+Binary files /dev/null and b/fuzz/corpora/bignum/1129623d6f7314caf04ef1baa7e2dc24623cb93c differ
+diff --git a/fuzz/corpora/bignum/116e6caac2ace207f895d9c9e8e2d520b54f35cf b/fuzz/corpora/bignum/116e6caac2ace207f895d9c9e8e2d520b54f35cf
 new file mode 100644
-index 000000000000..25f60da37d91
-Binary files /dev/null and b/fuzz/corpora/asn1/f5ccf61f843115f7999ffc4aba5c5aa8fac90243 differ
-diff --git a/fuzz/corpora/asn1/f616d965fcd42108fdbe59e0690e7106a8a3c4d5 b/fuzz/corpora/asn1/f616d965fcd42108fdbe59e0690e7106a8a3c4d5
+index 0000000..7c00cff
+Binary files /dev/null and b/fuzz/corpora/bignum/116e6caac2ace207f895d9c9e8e2d520b54f35cf differ
+diff --git a/fuzz/corpora/bignum/11e957b9bf43166e4b676995eb02eab38c23e396 b/fuzz/corpora/bignum/11e957b9bf43166e4b676995eb02eab38c23e396
 new file mode 100644
-index 000000000000..8782a68f845f
-Binary files /dev/null and b/fuzz/corpora/asn1/f616d965fcd42108fdbe59e0690e7106a8a3c4d5 differ
-diff --git a/fuzz/corpora/asn1/f63a74402c57d6bfa05d0250bcd4397742d5a624 b/fuzz/corpora/asn1/f63a74402c57d6bfa05d0250bcd4397742d5a624
+index 0000000..758e96d
+Binary files /dev/null and b/fuzz/corpora/bignum/11e957b9bf43166e4b676995eb02eab38c23e396 differ
+diff --git a/fuzz/corpora/bignum/12e8abf2f756305e336e8c9e958cb92aa11e3457 b/fuzz/corpora/bignum/12e8abf2f756305e336e8c9e958cb92aa11e3457
 new file mode 100644
-index 000000000000..c99f1bbcadd7
-Binary files /dev/null and b/fuzz/corpora/asn1/f63a74402c57d6bfa05d0250bcd4397742d5a624 differ
-diff --git a/fuzz/corpora/asn1/f65562eaf4d1d745968e144f22b1b57ccd83a29a b/fuzz/corpora/asn1/f65562eaf4d1d745968e144f22b1b57ccd83a29a
+index 0000000..f077992
+Binary files /dev/null and b/fuzz/corpora/bignum/12e8abf2f756305e336e8c9e958cb92aa11e3457 differ
+diff --git a/fuzz/corpora/bignum/1368ec0f31248b6066cc6d762ae884c9860490fb b/fuzz/corpora/bignum/1368ec0f31248b6066cc6d762ae884c9860490fb
 new file mode 100644
-index 000000000000..8299f1f6a083
-Binary files /dev/null and b/fuzz/corpora/asn1/f65562eaf4d1d745968e144f22b1b57ccd83a29a differ
-diff --git a/fuzz/corpora/asn1/f771d285b7e232c7b4fa636e681e89d375941295 b/fuzz/corpora/asn1/f771d285b7e232c7b4fa636e681e89d375941295
+index 0000000..0d655a4
+Binary files /dev/null and b/fuzz/corpora/bignum/1368ec0f31248b6066cc6d762ae884c9860490fb differ
+diff --git a/fuzz/corpora/bignum/14604c5374acb8c0155a84a2725b24e8cff1b18a b/fuzz/corpora/bignum/14604c5374acb8c0155a84a2725b24e8cff1b18a
 new file mode 100644
-index 000000000000..be1393666c4e
-Binary files /dev/null and b/fuzz/corpora/asn1/f771d285b7e232c7b4fa636e681e89d375941295 differ
-diff --git a/fuzz/corpora/asn1/f85b7db7dcb4123fcd71cff9f2e60e219c45b1ee b/fuzz/corpora/asn1/f85b7db7dcb4123fcd71cff9f2e60e219c45b1ee
+index 0000000..a5717d2
+Binary files /dev/null and b/fuzz/corpora/bignum/14604c5374acb8c0155a84a2725b24e8cff1b18a differ
+diff --git a/fuzz/corpora/bignum/14a08ecb901485cebb829ca3e6c04895b911b5d8 b/fuzz/corpora/bignum/14a08ecb901485cebb829ca3e6c04895b911b5d8
 new file mode 100644
-index 000000000000..bc5410e57ed9
-Binary files /dev/null and b/fuzz/corpora/asn1/f85b7db7dcb4123fcd71cff9f2e60e219c45b1ee differ
-diff --git a/fuzz/corpora/asn1/f88bb6fb90f9209e0588ade397efb0c00df3027e b/fuzz/corpora/asn1/f88bb6fb90f9209e0588ade397efb0c00df3027e
+index 0000000..da4d6b2
+Binary files /dev/null and b/fuzz/corpora/bignum/14a08ecb901485cebb829ca3e6c04895b911b5d8 differ
+diff --git a/fuzz/corpora/bignum/14a8c3b5add36b2ba5fdf47b25bea3b5d41cbf93 b/fuzz/corpora/bignum/14a8c3b5add36b2ba5fdf47b25bea3b5d41cbf93
 new file mode 100644
-index 000000000000..ba25cf7f1ba4
-Binary files /dev/null and b/fuzz/corpora/asn1/f88bb6fb90f9209e0588ade397efb0c00df3027e differ
-diff --git a/fuzz/corpora/asn1/f8c7d02f588735b5ebabdde73951f1e01075c6ba b/fuzz/corpora/asn1/f8c7d02f588735b5ebabdde73951f1e01075c6ba
+index 0000000..c6da844
+Binary files /dev/null and b/fuzz/corpora/bignum/14a8c3b5add36b2ba5fdf47b25bea3b5d41cbf93 differ
+diff --git a/fuzz/corpora/bignum/17c3e31d4467ae8a632544d9e0731c2bd23fc597 b/fuzz/corpora/bignum/17c3e31d4467ae8a632544d9e0731c2bd23fc597
 new file mode 100644
-index 000000000000..2eca625d0eff
-Binary files /dev/null and b/fuzz/corpora/asn1/f8c7d02f588735b5ebabdde73951f1e01075c6ba differ
-diff --git a/fuzz/corpora/asn1/f8dbb465067f4670ac42877e07bac66967d4b402 b/fuzz/corpora/asn1/f8dbb465067f4670ac42877e07bac66967d4b402
+index 0000000..64b0dde
+Binary files /dev/null and b/fuzz/corpora/bignum/17c3e31d4467ae8a632544d9e0731c2bd23fc597 differ
+diff --git a/fuzz/corpora/bignum/17fcd7c00609afee40d187d3085358b5feb5e519 b/fuzz/corpora/bignum/17fcd7c00609afee40d187d3085358b5feb5e519
 new file mode 100644
-index 000000000000..7e46a2ae66ca
-Binary files /dev/null and b/fuzz/corpora/asn1/f8dbb465067f4670ac42877e07bac66967d4b402 differ
-diff --git a/fuzz/corpora/asn1/f944dcd635f9801f7ac90a407fbc479964dec024 b/fuzz/corpora/asn1/f944dcd635f9801f7ac90a407fbc479964dec024
+index 0000000..482bbec
+Binary files /dev/null and b/fuzz/corpora/bignum/17fcd7c00609afee40d187d3085358b5feb5e519 differ
+diff --git a/fuzz/corpora/bignum/1875fc6dd4ca6b01e1a4276460f465efd3f074bf b/fuzz/corpora/bignum/1875fc6dd4ca6b01e1a4276460f465efd3f074bf
 new file mode 100644
-index 000000000000..def7fcb589b9
-Binary files /dev/null and b/fuzz/corpora/asn1/f944dcd635f9801f7ac90a407fbc479964dec024 differ
-diff --git a/fuzz/corpora/asn1/f959b6b1aeca27fa6b6f628fdce396b7384fec71 b/fuzz/corpora/asn1/f959b6b1aeca27fa6b6f628fdce396b7384fec71
+index 0000000..abc56c3
+Binary files /dev/null and b/fuzz/corpora/bignum/1875fc6dd4ca6b01e1a4276460f465efd3f074bf differ
+diff --git a/fuzz/corpora/bignum/18bea75b3872962de874a0f798d41fe2626fc2eb b/fuzz/corpora/bignum/18bea75b3872962de874a0f798d41fe2626fc2eb
 new file mode 100644
-index 000000000000..195ba98d464e
-Binary files /dev/null and b/fuzz/corpora/asn1/f959b6b1aeca27fa6b6f628fdce396b7384fec71 differ
-diff --git a/fuzz/corpora/asn1/f98bd7e5aa8f66fcc717c7e816d1e96434409fb9 b/fuzz/corpora/asn1/f98bd7e5aa8f66fcc717c7e816d1e96434409fb9
+index 0000000..04e9e2c
+Binary files /dev/null and b/fuzz/corpora/bignum/18bea75b3872962de874a0f798d41fe2626fc2eb differ
+diff --git a/fuzz/corpora/bignum/18fed6144f45894eda63a3de4808f66823ca253a b/fuzz/corpora/bignum/18fed6144f45894eda63a3de4808f66823ca253a
 new file mode 100644
-index 000000000000..59032b800b2b
-Binary files /dev/null and b/fuzz/corpora/asn1/f98bd7e5aa8f66fcc717c7e816d1e96434409fb9 differ
-diff --git a/fuzz/corpora/asn1/f9cf47dd98d30cb705104cef8eb22c9744fdcb39 b/fuzz/corpora/asn1/f9cf47dd98d30cb705104cef8eb22c9744fdcb39
+index 0000000..5f1901b
+Binary files /dev/null and b/fuzz/corpora/bignum/18fed6144f45894eda63a3de4808f66823ca253a differ
+diff --git a/fuzz/corpora/bignum/197bbea0fea8cafa9eb72abecafcd74316bf8d5c b/fuzz/corpora/bignum/197bbea0fea8cafa9eb72abecafcd74316bf8d5c
 new file mode 100644
-index 000000000000..4e1becd168db
-Binary files /dev/null and b/fuzz/corpora/asn1/f9cf47dd98d30cb705104cef8eb22c9744fdcb39 differ
-diff --git a/fuzz/corpora/asn1/f9d86a56f98ef37e8351462b42fa4351a2ab63cf b/fuzz/corpora/asn1/f9d86a56f98ef37e8351462b42fa4351a2ab63cf
+index 0000000..e7ccbf3
+Binary files /dev/null and b/fuzz/corpora/bignum/197bbea0fea8cafa9eb72abecafcd74316bf8d5c differ
+diff --git a/fuzz/corpora/bignum/19964e1eb90a95ce75f48405a47125e9ca80771c b/fuzz/corpora/bignum/19964e1eb90a95ce75f48405a47125e9ca80771c
 new file mode 100644
-index 000000000000..ac0962a98726
-Binary files /dev/null and b/fuzz/corpora/asn1/f9d86a56f98ef37e8351462b42fa4351a2ab63cf differ
-diff --git a/fuzz/corpora/asn1/fa694af9a460eb06684ed5b15d8e9f8cdc90c2e7 b/fuzz/corpora/asn1/fa694af9a460eb06684ed5b15d8e9f8cdc90c2e7
+index 0000000..9c6eea0
+Binary files /dev/null and b/fuzz/corpora/bignum/19964e1eb90a95ce75f48405a47125e9ca80771c differ
+diff --git a/fuzz/corpora/bignum/1a1a9717a96bffcb61e1d349fee17d074bb7796a b/fuzz/corpora/bignum/1a1a9717a96bffcb61e1d349fee17d074bb7796a
 new file mode 100644
-index 000000000000..0056184bef55
-Binary files /dev/null and b/fuzz/corpora/asn1/fa694af9a460eb06684ed5b15d8e9f8cdc90c2e7 differ
-diff --git a/fuzz/corpora/asn1/fb08572bd3030995fede7791f09de3ff183e6435 b/fuzz/corpora/asn1/fb08572bd3030995fede7791f09de3ff183e6435
+index 0000000..dafba2f
+Binary files /dev/null and b/fuzz/corpora/bignum/1a1a9717a96bffcb61e1d349fee17d074bb7796a differ
+diff --git a/fuzz/corpora/bignum/1acdf66acba7eb415911011a0637771b5c0b2a35 b/fuzz/corpora/bignum/1acdf66acba7eb415911011a0637771b5c0b2a35
 new file mode 100644
-index 000000000000..c78107bf48fe
-Binary files /dev/null and b/fuzz/corpora/asn1/fb08572bd3030995fede7791f09de3ff183e6435 differ
-diff --git a/fuzz/corpora/asn1/fb23e1eb3b0aa44929350df7c0ff014e323361b3 b/fuzz/corpora/asn1/fb23e1eb3b0aa44929350df7c0ff014e323361b3
+index 0000000..317f32f
+Binary files /dev/null and b/fuzz/corpora/bignum/1acdf66acba7eb415911011a0637771b5c0b2a35 differ
+diff --git a/fuzz/corpora/bignum/1adf9e45104072a00f3d0a684f16c164e446805b b/fuzz/corpora/bignum/1adf9e45104072a00f3d0a684f16c164e446805b
 new file mode 100644
-index 000000000000..163af59ff35d
-Binary files /dev/null and b/fuzz/corpora/asn1/fb23e1eb3b0aa44929350df7c0ff014e323361b3 differ
-diff --git a/fuzz/corpora/asn1/fb3cf43f5d7bd4da040e3c6c19f7c90ab56d40e0 b/fuzz/corpora/asn1/fb3cf43f5d7bd4da040e3c6c19f7c90ab56d40e0
+index 0000000..c2fe44a
+Binary files /dev/null and b/fuzz/corpora/bignum/1adf9e45104072a00f3d0a684f16c164e446805b differ
+diff --git a/fuzz/corpora/bignum/1afc4bb08e1c62f5a472a55132e02760e2ca7ea8 b/fuzz/corpora/bignum/1afc4bb08e1c62f5a472a55132e02760e2ca7ea8
 new file mode 100644
-index 000000000000..b7edb63a7953
-Binary files /dev/null and b/fuzz/corpora/asn1/fb3cf43f5d7bd4da040e3c6c19f7c90ab56d40e0 differ
-diff --git a/fuzz/corpora/asn1/fb559fd7d93b455cea269c0c45aca7306d817d48 b/fuzz/corpora/asn1/fb559fd7d93b455cea269c0c45aca7306d817d48
+index 0000000..c5df3e0
+Binary files /dev/null and b/fuzz/corpora/bignum/1afc4bb08e1c62f5a472a55132e02760e2ca7ea8 differ
+diff --git a/fuzz/corpora/bignum/1b63f1c99613a491251df22962a347fadcb25380 b/fuzz/corpora/bignum/1b63f1c99613a491251df22962a347fadcb25380
 new file mode 100644
-index 000000000000..484ae80d4546
-Binary files /dev/null and b/fuzz/corpora/asn1/fb559fd7d93b455cea269c0c45aca7306d817d48 differ
-diff --git a/fuzz/corpora/asn1/fb814c2f2e7a7df15139402a8cc2f656193ed2da b/fuzz/corpora/asn1/fb814c2f2e7a7df15139402a8cc2f656193ed2da
+index 0000000..79bab22
+Binary files /dev/null and b/fuzz/corpora/bignum/1b63f1c99613a491251df22962a347fadcb25380 differ
+diff --git a/fuzz/corpora/bignum/1b9790b42a761831ab4922da1e7628fc9f9e6c53 b/fuzz/corpora/bignum/1b9790b42a761831ab4922da1e7628fc9f9e6c53
 new file mode 100644
-index 000000000000..30199314e4b5
-Binary files /dev/null and b/fuzz/corpora/asn1/fb814c2f2e7a7df15139402a8cc2f656193ed2da differ
-diff --git a/fuzz/corpora/asn1/fb918e12154ee2d9908b84be26155d63dd5eba7b b/fuzz/corpora/asn1/fb918e12154ee2d9908b84be26155d63dd5eba7b
+index 0000000..c284292
+Binary files /dev/null and b/fuzz/corpora/bignum/1b9790b42a761831ab4922da1e7628fc9f9e6c53 differ
+diff --git a/fuzz/corpora/bignum/1bb831ff3de3773c8cfd33de2dbfc5fd84c8f2cc b/fuzz/corpora/bignum/1bb831ff3de3773c8cfd33de2dbfc5fd84c8f2cc
 new file mode 100644
-index 000000000000..38c7bc64622c
-Binary files /dev/null and b/fuzz/corpora/asn1/fb918e12154ee2d9908b84be26155d63dd5eba7b differ
-diff --git a/fuzz/corpora/asn1/fb9dece8060a8fb55071102a8c6f7395daa8e774 b/fuzz/corpora/asn1/fb9dece8060a8fb55071102a8c6f7395daa8e774
+index 0000000..38f77f7
+Binary files /dev/null and b/fuzz/corpora/bignum/1bb831ff3de3773c8cfd33de2dbfc5fd84c8f2cc differ
+diff --git a/fuzz/corpora/bignum/1d4ec214cb15ff71d261ad22c70c715f8006d316 b/fuzz/corpora/bignum/1d4ec214cb15ff71d261ad22c70c715f8006d316
 new file mode 100644
-index 000000000000..8775c7babe7d
-Binary files /dev/null and b/fuzz/corpora/asn1/fb9dece8060a8fb55071102a8c6f7395daa8e774 differ
-diff --git a/fuzz/corpora/asn1/fbb6242538271ff46d037aa7f4aabb98b9e2d339 b/fuzz/corpora/asn1/fbb6242538271ff46d037aa7f4aabb98b9e2d339
+index 0000000..ddef7ec
+Binary files /dev/null and b/fuzz/corpora/bignum/1d4ec214cb15ff71d261ad22c70c715f8006d316 differ
+diff --git a/fuzz/corpora/bignum/1e488bac6ca6ee846c0e02f279694f74bd412655 b/fuzz/corpora/bignum/1e488bac6ca6ee846c0e02f279694f74bd412655
 new file mode 100644
-index 000000000000..aac0bbee6ba8
-Binary files /dev/null and b/fuzz/corpora/asn1/fbb6242538271ff46d037aa7f4aabb98b9e2d339 differ
-diff --git a/fuzz/corpora/asn1/fbcd0a1f430035100f0d20dedab8046aca8ff058 b/fuzz/corpora/asn1/fbcd0a1f430035100f0d20dedab8046aca8ff058
+index 0000000..7aa5277
+Binary files /dev/null and b/fuzz/corpora/bignum/1e488bac6ca6ee846c0e02f279694f74bd412655 differ
+diff --git a/fuzz/corpora/bignum/1e878bb2aa4a7a2a25a842e73693b08bfe4ad7dd b/fuzz/corpora/bignum/1e878bb2aa4a7a2a25a842e73693b08bfe4ad7dd
 new file mode 100644
-index 000000000000..c3e66d49ddef
-Binary files /dev/null and b/fuzz/corpora/asn1/fbcd0a1f430035100f0d20dedab8046aca8ff058 differ
-diff --git a/fuzz/corpora/asn1/fc19a179fa1282d32497712ffc43e4a324dfaa27 b/fuzz/corpora/asn1/fc19a179fa1282d32497712ffc43e4a324dfaa27
+index 0000000..3caebca
+Binary files /dev/null and b/fuzz/corpora/bignum/1e878bb2aa4a7a2a25a842e73693b08bfe4ad7dd differ
+diff --git a/fuzz/corpora/bignum/1f34705cb47b0eac9429c44a63d3d13f6056a26c b/fuzz/corpora/bignum/1f34705cb47b0eac9429c44a63d3d13f6056a26c
 new file mode 100644
-index 000000000000..41738e4973ea
-Binary files /dev/null and b/fuzz/corpora/asn1/fc19a179fa1282d32497712ffc43e4a324dfaa27 differ
-diff --git a/fuzz/corpora/asn1/fcaad275048dfcffef5b64ce342d4ca2e0b71e6d b/fuzz/corpora/asn1/fcaad275048dfcffef5b64ce342d4ca2e0b71e6d
+index 0000000..4837f4b
+Binary files /dev/null and b/fuzz/corpora/bignum/1f34705cb47b0eac9429c44a63d3d13f6056a26c differ
+diff --git a/fuzz/corpora/bignum/20777f2cf8e03ce7a9e3cebc56c30ce0c662fb60 b/fuzz/corpora/bignum/20777f2cf8e03ce7a9e3cebc56c30ce0c662fb60
 new file mode 100644
-index 000000000000..f92391b81ab5
-Binary files /dev/null and b/fuzz/corpora/asn1/fcaad275048dfcffef5b64ce342d4ca2e0b71e6d differ
-diff --git a/fuzz/corpora/asn1/fcb404dce2ebfc17ead35c050706621b6b312924 b/fuzz/corpora/asn1/fcb404dce2ebfc17ead35c050706621b6b312924
+index 0000000..d67dcba
+Binary files /dev/null and b/fuzz/corpora/bignum/20777f2cf8e03ce7a9e3cebc56c30ce0c662fb60 differ
+diff --git a/fuzz/corpora/bignum/20c0d2fbdfc2fa355bad3bad88cc659cda4a93bc b/fuzz/corpora/bignum/20c0d2fbdfc2fa355bad3bad88cc659cda4a93bc
 new file mode 100644
-index 000000000000..0ac64263c037
-Binary files /dev/null and b/fuzz/corpora/asn1/fcb404dce2ebfc17ead35c050706621b6b312924 differ
-diff --git a/fuzz/corpora/asn1/fd0f780ff84f2df9d761c4589318295129eb9497 b/fuzz/corpora/asn1/fd0f780ff84f2df9d761c4589318295129eb9497
+index 0000000..fbd4ddd
+Binary files /dev/null and b/fuzz/corpora/bignum/20c0d2fbdfc2fa355bad3bad88cc659cda4a93bc differ
+diff --git a/fuzz/corpora/bignum/21383a2d614a1f1a7cbea6b6da6db44ee374cf41 b/fuzz/corpora/bignum/21383a2d614a1f1a7cbea6b6da6db44ee374cf41
 new file mode 100644
-index 000000000000..2811fb7fb1d4
-Binary files /dev/null and b/fuzz/corpora/asn1/fd0f780ff84f2df9d761c4589318295129eb9497 differ
-diff --git a/fuzz/corpora/asn1/fd81a373626aefe6fe35500f5936240e1fd1a1d3 b/fuzz/corpora/asn1/fd81a373626aefe6fe35500f5936240e1fd1a1d3
+index 0000000..efd849c
+Binary files /dev/null and b/fuzz/corpora/bignum/21383a2d614a1f1a7cbea6b6da6db44ee374cf41 differ
+diff --git a/fuzz/corpora/bignum/2415d9ddfb5604ce9a9813949e449ee4bd74953f b/fuzz/corpora/bignum/2415d9ddfb5604ce9a9813949e449ee4bd74953f
 new file mode 100644
-index 000000000000..2318e3ba5ae9
-Binary files /dev/null and b/fuzz/corpora/asn1/fd81a373626aefe6fe35500f5936240e1fd1a1d3 differ
-diff --git a/fuzz/corpora/asn1/fd8fd192b1979f29b10e40135756b4204f326af5 b/fuzz/corpora/asn1/fd8fd192b1979f29b10e40135756b4204f326af5
+index 0000000..2b00097
+Binary files /dev/null and b/fuzz/corpora/bignum/2415d9ddfb5604ce9a9813949e449ee4bd74953f differ
+diff --git a/fuzz/corpora/bignum/24bc38ab6a3d3ba02ffddd687df856076841ce37 b/fuzz/corpora/bignum/24bc38ab6a3d3ba02ffddd687df856076841ce37
 new file mode 100644
-index 000000000000..c40917b80bce
-Binary files /dev/null and b/fuzz/corpora/asn1/fd8fd192b1979f29b10e40135756b4204f326af5 differ
-diff --git a/fuzz/corpora/asn1/fd9f8d66500870ad0e79b4ccc82af9e9b1f0f6bf b/fuzz/corpora/asn1/fd9f8d66500870ad0e79b4ccc82af9e9b1f0f6bf
+index 0000000..b567965
+Binary files /dev/null and b/fuzz/corpora/bignum/24bc38ab6a3d3ba02ffddd687df856076841ce37 differ
+diff --git a/fuzz/corpora/bignum/2542e7a7df03c1076071c03f4b5e49048f411e0a b/fuzz/corpora/bignum/2542e7a7df03c1076071c03f4b5e49048f411e0a
 new file mode 100644
-index 000000000000..5bc77f3a148b
-Binary files /dev/null and b/fuzz/corpora/asn1/fd9f8d66500870ad0e79b4ccc82af9e9b1f0f6bf differ
-diff --git a/fuzz/corpora/asn1/fe16c45719dc2db29c18d70955462dea3ff5d656 b/fuzz/corpora/asn1/fe16c45719dc2db29c18d70955462dea3ff5d656
+index 0000000..3b59799
+Binary files /dev/null and b/fuzz/corpora/bignum/2542e7a7df03c1076071c03f4b5e49048f411e0a differ
+diff --git a/fuzz/corpora/bignum/26e3b5c343880cb49f8840c0a64248529f72dc39 b/fuzz/corpora/bignum/26e3b5c343880cb49f8840c0a64248529f72dc39
 new file mode 100644
-index 000000000000..a7abaf553c80
-Binary files /dev/null and b/fuzz/corpora/asn1/fe16c45719dc2db29c18d70955462dea3ff5d656 differ
-diff --git a/fuzz/corpora/asn1/fe36f25061b32cc8380fd95afed53369db15f318 b/fuzz/corpora/asn1/fe36f25061b32cc8380fd95afed53369db15f318
+index 0000000..879eefd
+Binary files /dev/null and b/fuzz/corpora/bignum/26e3b5c343880cb49f8840c0a64248529f72dc39 differ
+diff --git a/fuzz/corpora/bignum/2759809e2093df495e3df53874efa6309980d2aa b/fuzz/corpora/bignum/2759809e2093df495e3df53874efa6309980d2aa
 new file mode 100644
-index 000000000000..5a8ac1b640b7
-Binary files /dev/null and b/fuzz/corpora/asn1/fe36f25061b32cc8380fd95afed53369db15f318 differ
-diff --git a/fuzz/corpora/asn1/fe68f68c9c0db5ee947d815c86a2e73754a445aa b/fuzz/corpora/asn1/fe68f68c9c0db5ee947d815c86a2e73754a445aa
+index 0000000..1196cfe
+Binary files /dev/null and b/fuzz/corpora/bignum/2759809e2093df495e3df53874efa6309980d2aa differ
+diff --git a/fuzz/corpora/bignum/2766d9181e2a1c64f8da9ac0d124e05e4785d13c b/fuzz/corpora/bignum/2766d9181e2a1c64f8da9ac0d124e05e4785d13c
 new file mode 100644
-index 000000000000..20192bc59fbe
-Binary files /dev/null and b/fuzz/corpora/asn1/fe68f68c9c0db5ee947d815c86a2e73754a445aa differ
-diff --git a/fuzz/corpora/asn1/fe82b1b58ec63226060c042d5fff2f04b5136478 b/fuzz/corpora/asn1/fe82b1b58ec63226060c042d5fff2f04b5136478
+index 0000000..b331daf
+Binary files /dev/null and b/fuzz/corpora/bignum/2766d9181e2a1c64f8da9ac0d124e05e4785d13c differ
+diff --git a/fuzz/corpora/bignum/27c315147cfd907bf5292c7dc72eb05cbdf23bb8 b/fuzz/corpora/bignum/27c315147cfd907bf5292c7dc72eb05cbdf23bb8
 new file mode 100644
-index 000000000000..bd82e78c83e1
-Binary files /dev/null and b/fuzz/corpora/asn1/fe82b1b58ec63226060c042d5fff2f04b5136478 differ
-diff --git a/fuzz/corpora/asn1/fea6306828d3e2f225b45157dbada634726752cd b/fuzz/corpora/asn1/fea6306828d3e2f225b45157dbada634726752cd
+index 0000000..e37b4e0
+Binary files /dev/null and b/fuzz/corpora/bignum/27c315147cfd907bf5292c7dc72eb05cbdf23bb8 differ
+diff --git a/fuzz/corpora/bignum/27dba527829b91d79c47157fc30f053c20c90b6b b/fuzz/corpora/bignum/27dba527829b91d79c47157fc30f053c20c90b6b
 new file mode 100644
-index 000000000000..0c1d5d078eb4
-Binary files /dev/null and b/fuzz/corpora/asn1/fea6306828d3e2f225b45157dbada634726752cd differ
-diff --git a/fuzz/corpora/asn1/feefce2b4eb17a2a8a2b1f5594a7beedbc59f380 b/fuzz/corpora/asn1/feefce2b4eb17a2a8a2b1f5594a7beedbc59f380
+index 0000000..33955c0
+Binary files /dev/null and b/fuzz/corpora/bignum/27dba527829b91d79c47157fc30f053c20c90b6b differ
+diff --git a/fuzz/corpora/bignum/2815c2bef3538048839c53bbf51d7127f2ac327d b/fuzz/corpora/bignum/2815c2bef3538048839c53bbf51d7127f2ac327d
 new file mode 100644
-index 000000000000..8df5b85988fc
-Binary files /dev/null and b/fuzz/corpora/asn1/feefce2b4eb17a2a8a2b1f5594a7beedbc59f380 differ
-diff --git a/fuzz/corpora/asn1/fef983f5aa1e7952b2a01ea5d9ca329812280ec2 b/fuzz/corpora/asn1/fef983f5aa1e7952b2a01ea5d9ca329812280ec2
+index 0000000..68aa7b2
+Binary files /dev/null and b/fuzz/corpora/bignum/2815c2bef3538048839c53bbf51d7127f2ac327d differ
+diff --git a/fuzz/corpora/bignum/2992b4067c1f29b093bbfa97c6c59c022de83fa5 b/fuzz/corpora/bignum/2992b4067c1f29b093bbfa97c6c59c022de83fa5
 new file mode 100644
-index 000000000000..1218a59a40bb
-Binary files /dev/null and b/fuzz/corpora/asn1/fef983f5aa1e7952b2a01ea5d9ca329812280ec2 differ
-diff --git a/fuzz/corpora/asn1/ffa4deae493a35ea87e9595fd8f7228bb351a03e b/fuzz/corpora/asn1/ffa4deae493a35ea87e9595fd8f7228bb351a03e
+index 0000000..15635e7
+Binary files /dev/null and b/fuzz/corpora/bignum/2992b4067c1f29b093bbfa97c6c59c022de83fa5 differ
+diff --git a/fuzz/corpora/bignum/29d8ec9adae27883e9efcf2f548ad7d3a4e8f976 b/fuzz/corpora/bignum/29d8ec9adae27883e9efcf2f548ad7d3a4e8f976
 new file mode 100644
-index 000000000000..d52fd1651eb9
-Binary files /dev/null and b/fuzz/corpora/asn1/ffa4deae493a35ea87e9595fd8f7228bb351a03e differ
-diff --git a/fuzz/corpora/asn1/ffc0dd2882c738be9dd1f12a86a1bcb2ad29334d b/fuzz/corpora/asn1/ffc0dd2882c738be9dd1f12a86a1bcb2ad29334d
+index 0000000..1b7d19e
+Binary files /dev/null and b/fuzz/corpora/bignum/29d8ec9adae27883e9efcf2f548ad7d3a4e8f976 differ
+diff --git a/fuzz/corpora/bignum/2a553f6d68c98e776d9b9e846f341ecd373c59b0 b/fuzz/corpora/bignum/2a553f6d68c98e776d9b9e846f341ecd373c59b0
 new file mode 100644
-index 000000000000..cb0d06e158cb
-Binary files /dev/null and b/fuzz/corpora/asn1/ffc0dd2882c738be9dd1f12a86a1bcb2ad29334d differ
-diff --git a/fuzz/corpora/asn1parse-crash/crash-f195c020a28dfc5f2fb6af256b524ddcd93756ed b/fuzz/corpora/asn1parse-crash/crash-f195c020a28dfc5f2fb6af256b524ddcd93756ed
+index 0000000..1e8c4e1
+Binary files /dev/null and b/fuzz/corpora/bignum/2a553f6d68c98e776d9b9e846f341ecd373c59b0 differ
+diff --git a/fuzz/corpora/bignum/2ad73d503a1b44169940e41c00064ec1fabad324 b/fuzz/corpora/bignum/2ad73d503a1b44169940e41c00064ec1fabad324
 new file mode 100644
-index 000000000000..b1d81e79354c
-Binary files /dev/null and b/fuzz/corpora/asn1parse-crash/crash-f195c020a28dfc5f2fb6af256b524ddcd93756ed differ
-diff --git a/fuzz/corpora/asn1parse/0b0bf87cecc53f0e7da4bf59f37c9a88f64f8b0e b/fuzz/corpora/asn1parse/0b0bf87cecc53f0e7da4bf59f37c9a88f64f8b0e
+index 0000000..90e935f
+Binary files /dev/null and b/fuzz/corpora/bignum/2ad73d503a1b44169940e41c00064ec1fabad324 differ
+diff --git a/fuzz/corpora/bignum/2c135b2209f97f5cbb4582ece40ee0eda9497b96 b/fuzz/corpora/bignum/2c135b2209f97f5cbb4582ece40ee0eda9497b96
 new file mode 100644
-index 000000000000..48a77111b82a
-Binary files /dev/null and b/fuzz/corpora/asn1parse/0b0bf87cecc53f0e7da4bf59f37c9a88f64f8b0e differ
-diff --git a/fuzz/corpora/asn1parse/0d78b58418d80b6860c896caa0ecfdc29519a7f0 b/fuzz/corpora/asn1parse/0d78b58418d80b6860c896caa0ecfdc29519a7f0
+index 0000000..2f69bbc
+Binary files /dev/null and b/fuzz/corpora/bignum/2c135b2209f97f5cbb4582ece40ee0eda9497b96 differ
+diff --git a/fuzz/corpora/bignum/2d00dc09fa2e4eeb8faac6f9a8945a81835b1013 b/fuzz/corpora/bignum/2d00dc09fa2e4eeb8faac6f9a8945a81835b1013
 new file mode 100644
-index 000000000000..47e01070147c
-Binary files /dev/null and b/fuzz/corpora/asn1parse/0d78b58418d80b6860c896caa0ecfdc29519a7f0 differ
-diff --git a/fuzz/corpora/asn1parse/0fb8bd9329a4acbe514400248adb19c1f8ba254a b/fuzz/corpora/asn1parse/0fb8bd9329a4acbe514400248adb19c1f8ba254a
+index 0000000..ebbbcb1
+Binary files /dev/null and b/fuzz/corpora/bignum/2d00dc09fa2e4eeb8faac6f9a8945a81835b1013 differ
+diff --git a/fuzz/corpora/bignum/2f069b404f7bfa671367d5e4bd6ab3bd7e06d4ab b/fuzz/corpora/bignum/2f069b404f7bfa671367d5e4bd6ab3bd7e06d4ab
 new file mode 100644
-index 000000000000..3993c78d68b9
-Binary files /dev/null and b/fuzz/corpora/asn1parse/0fb8bd9329a4acbe514400248adb19c1f8ba254a differ
-diff --git a/fuzz/corpora/asn1parse/10e36b309c59456495c31c32a5fed6c715c1171a b/fuzz/corpora/asn1parse/10e36b309c59456495c31c32a5fed6c715c1171a
+index 0000000..9dc24fe
+Binary files /dev/null and b/fuzz/corpora/bignum/2f069b404f7bfa671367d5e4bd6ab3bd7e06d4ab differ
+diff --git a/fuzz/corpora/bignum/31a46c8e07ad1404d8ff1542b5fb13e2b2bd227e b/fuzz/corpora/bignum/31a46c8e07ad1404d8ff1542b5fb13e2b2bd227e
 new file mode 100644
-index 000000000000..354967aa4f69
-Binary files /dev/null and b/fuzz/corpora/asn1parse/10e36b309c59456495c31c32a5fed6c715c1171a differ
-diff --git a/fuzz/corpora/asn1parse/11cb26a39480d53ce0271f2fed93e5ba39cc4398 b/fuzz/corpora/asn1parse/11cb26a39480d53ce0271f2fed93e5ba39cc4398
+index 0000000..6d0a55f
+Binary files /dev/null and b/fuzz/corpora/bignum/31a46c8e07ad1404d8ff1542b5fb13e2b2bd227e differ
+diff --git a/fuzz/corpora/bignum/34818b44af1fb82b0e35579a473105970a1ad10f b/fuzz/corpora/bignum/34818b44af1fb82b0e35579a473105970a1ad10f
 new file mode 100644
-index 000000000000..5987c91ee2a4
-Binary files /dev/null and b/fuzz/corpora/asn1parse/11cb26a39480d53ce0271f2fed93e5ba39cc4398 differ
-diff --git a/fuzz/corpora/asn1parse/1370f5519b2bc32d6a902bab2543bec0638db297 b/fuzz/corpora/asn1parse/1370f5519b2bc32d6a902bab2543bec0638db297
+index 0000000..ea22ba9
+Binary files /dev/null and b/fuzz/corpora/bignum/34818b44af1fb82b0e35579a473105970a1ad10f differ
+diff --git a/fuzz/corpora/bignum/350357be2ddcd9156d2815fa704ce76f0bcbc099 b/fuzz/corpora/bignum/350357be2ddcd9156d2815fa704ce76f0bcbc099
 new file mode 100644
-index 000000000000..300be7a61170
-Binary files /dev/null and b/fuzz/corpora/asn1parse/1370f5519b2bc32d6a902bab2543bec0638db297 differ
-diff --git a/fuzz/corpora/asn1parse/13752c46bd6c89b78e2d12ec1e613e6468d7ee18 b/fuzz/corpora/asn1parse/13752c46bd6c89b78e2d12ec1e613e6468d7ee18
+index 0000000..7361daf
+Binary files /dev/null and b/fuzz/corpora/bignum/350357be2ddcd9156d2815fa704ce76f0bcbc099 differ
+diff --git a/fuzz/corpora/bignum/3510b1f19f65a429749cb07c798e7471265695d7 b/fuzz/corpora/bignum/3510b1f19f65a429749cb07c798e7471265695d7
 new file mode 100644
-index 000000000000..2b1233989478
-Binary files /dev/null and b/fuzz/corpora/asn1parse/13752c46bd6c89b78e2d12ec1e613e6468d7ee18 differ
-diff --git a/fuzz/corpora/asn1parse/172f4699aaca9d8825f57f353c1319558fcbbeca b/fuzz/corpora/asn1parse/172f4699aaca9d8825f57f353c1319558fcbbeca
+index 0000000..362df8c
+Binary files /dev/null and b/fuzz/corpora/bignum/3510b1f19f65a429749cb07c798e7471265695d7 differ
+diff --git a/fuzz/corpora/bignum/35c62ca19d6c3b574802a4b680043996487efd93 b/fuzz/corpora/bignum/35c62ca19d6c3b574802a4b680043996487efd93
 new file mode 100644
-index 000000000000..a53c5b9187c1
-Binary files /dev/null and b/fuzz/corpora/asn1parse/172f4699aaca9d8825f57f353c1319558fcbbeca differ
-diff --git a/fuzz/corpora/asn1parse/17720441fb8b3dc2fb6978cc433b0608ee8f3c25 b/fuzz/corpora/asn1parse/17720441fb8b3dc2fb6978cc433b0608ee8f3c25
+index 0000000..23abf51
+Binary files /dev/null and b/fuzz/corpora/bignum/35c62ca19d6c3b574802a4b680043996487efd93 differ
+diff --git a/fuzz/corpora/bignum/3724c0ac79c28e5376604f5fcd103dfd87e9d0fd b/fuzz/corpora/bignum/3724c0ac79c28e5376604f5fcd103dfd87e9d0fd
 new file mode 100644
-index 000000000000..7a361753f833
-Binary files /dev/null and b/fuzz/corpora/asn1parse/17720441fb8b3dc2fb6978cc433b0608ee8f3c25 differ
-diff --git a/fuzz/corpora/asn1parse/180daa8026113323df1da47ad47a41a434792c57 b/fuzz/corpora/asn1parse/180daa8026113323df1da47ad47a41a434792c57
+index 0000000..c83d7aa
+Binary files /dev/null and b/fuzz/corpora/bignum/3724c0ac79c28e5376604f5fcd103dfd87e9d0fd differ
+diff --git a/fuzz/corpora/bignum/38998198cfa50714b488968b2c7fff0ee082bdf2 b/fuzz/corpora/bignum/38998198cfa50714b488968b2c7fff0ee082bdf2
 new file mode 100644
-index 000000000000..53b6712e0ebb
-Binary files /dev/null and b/fuzz/corpora/asn1parse/180daa8026113323df1da47ad47a41a434792c57 differ
-diff --git a/fuzz/corpora/asn1parse/18c6c784eb10b3b995d1413dd502f40be4f18934 b/fuzz/corpora/asn1parse/18c6c784eb10b3b995d1413dd502f40be4f18934
+index 0000000..5f324b9
+Binary files /dev/null and b/fuzz/corpora/bignum/38998198cfa50714b488968b2c7fff0ee082bdf2 differ
+diff --git a/fuzz/corpora/bignum/38c88c9668d4014d4b2c376d28423612efccd93c b/fuzz/corpora/bignum/38c88c9668d4014d4b2c376d28423612efccd93c
 new file mode 100644
-index 000000000000..d194a23a2c86
-Binary files /dev/null and b/fuzz/corpora/asn1parse/18c6c784eb10b3b995d1413dd502f40be4f18934 differ
-diff --git a/fuzz/corpora/asn1parse/1b264d7889133f0d6a2d4c44f8edb79a1b2e9952 b/fuzz/corpora/asn1parse/1b264d7889133f0d6a2d4c44f8edb79a1b2e9952
+index 0000000..1ed1d31
+Binary files /dev/null and b/fuzz/corpora/bignum/38c88c9668d4014d4b2c376d28423612efccd93c differ
+diff --git a/fuzz/corpora/bignum/39c5e88032224d232ed3fc602c35c3850990f94f b/fuzz/corpora/bignum/39c5e88032224d232ed3fc602c35c3850990f94f
 new file mode 100644
-index 000000000000..55302b995cd7
-Binary files /dev/null and b/fuzz/corpora/asn1parse/1b264d7889133f0d6a2d4c44f8edb79a1b2e9952 differ
-diff --git a/fuzz/corpora/asn1parse/1c36ca01e596c3185da92ced0fd2bd3190d239af b/fuzz/corpora/asn1parse/1c36ca01e596c3185da92ced0fd2bd3190d239af
+index 0000000..d18abd2
+Binary files /dev/null and b/fuzz/corpora/bignum/39c5e88032224d232ed3fc602c35c3850990f94f differ
+diff --git a/fuzz/corpora/bignum/39f053c4fdbcb7eea8787fdc6bd07a380903a246 b/fuzz/corpora/bignum/39f053c4fdbcb7eea8787fdc6bd07a380903a246
 new file mode 100644
-index 000000000000..a07441899c1c
-Binary files /dev/null and b/fuzz/corpora/asn1parse/1c36ca01e596c3185da92ced0fd2bd3190d239af differ
-diff --git a/fuzz/corpora/asn1parse/1d24b8cf5bc1b2ba6cbae0b5d0def13a519ed303 b/fuzz/corpora/asn1parse/1d24b8cf5bc1b2ba6cbae0b5d0def13a519ed303
+index 0000000..ac739d5
+Binary files /dev/null and b/fuzz/corpora/bignum/39f053c4fdbcb7eea8787fdc6bd07a380903a246 differ
+diff --git a/fuzz/corpora/bignum/3a2d683cd6dbdd214208918c98816c137dadaee8 b/fuzz/corpora/bignum/3a2d683cd6dbdd214208918c98816c137dadaee8
 new file mode 100644
-index 000000000000..0a6db18996a0
-Binary files /dev/null and b/fuzz/corpora/asn1parse/1d24b8cf5bc1b2ba6cbae0b5d0def13a519ed303 differ
-diff --git a/fuzz/corpora/asn1parse/27ca3e5d7bac67546d1553c37490f237c69b6d31 b/fuzz/corpora/asn1parse/27ca3e5d7bac67546d1553c37490f237c69b6d31
+index 0000000..10660ce
+Binary files /dev/null and b/fuzz/corpora/bignum/3a2d683cd6dbdd214208918c98816c137dadaee8 differ
+diff --git a/fuzz/corpora/bignum/3c6cc768ef1eb17a3af878e3a5af78277908e73a b/fuzz/corpora/bignum/3c6cc768ef1eb17a3af878e3a5af78277908e73a
 new file mode 100644
-index 000000000000..bdfcda7ce954
-Binary files /dev/null and b/fuzz/corpora/asn1parse/27ca3e5d7bac67546d1553c37490f237c69b6d31 differ
-diff --git a/fuzz/corpora/asn1parse/2b1cf8a99756d3c9d4ec9bc08598014387e97d15 b/fuzz/corpora/asn1parse/2b1cf8a99756d3c9d4ec9bc08598014387e97d15
+index 0000000..b410227
+Binary files /dev/null and b/fuzz/corpora/bignum/3c6cc768ef1eb17a3af878e3a5af78277908e73a differ
+diff --git a/fuzz/corpora/bignum/3c762c68ad23f2930e1494be8aea7362d3aabc1c b/fuzz/corpora/bignum/3c762c68ad23f2930e1494be8aea7362d3aabc1c
 new file mode 100644
-index 000000000000..6684ab8c11a1
-Binary files /dev/null and b/fuzz/corpora/asn1parse/2b1cf8a99756d3c9d4ec9bc08598014387e97d15 differ
-diff --git a/fuzz/corpora/asn1parse/2c0510e12d71c3b46808645094768c76050c1f03 b/fuzz/corpora/asn1parse/2c0510e12d71c3b46808645094768c76050c1f03
+index 0000000..809aa5f
+Binary files /dev/null and b/fuzz/corpora/bignum/3c762c68ad23f2930e1494be8aea7362d3aabc1c differ
+diff --git a/fuzz/corpora/bignum/3cad9056c30b58fe6f2cd34f665125f67558ae4d b/fuzz/corpora/bignum/3cad9056c30b58fe6f2cd34f665125f67558ae4d
 new file mode 100644
-index 000000000000..4e22ffa7495d
-Binary files /dev/null and b/fuzz/corpora/asn1parse/2c0510e12d71c3b46808645094768c76050c1f03 differ
-diff --git a/fuzz/corpora/asn1parse/2c0739ec0a7be3b7fe2f6b3e9d8531722b90071a b/fuzz/corpora/asn1parse/2c0739ec0a7be3b7fe2f6b3e9d8531722b90071a
+index 0000000..fce045a
+Binary files /dev/null and b/fuzz/corpora/bignum/3cad9056c30b58fe6f2cd34f665125f67558ae4d differ
+diff --git a/fuzz/corpora/bignum/3cf6610dc4d447cd10ec9c76c0e448f0e7cf749b b/fuzz/corpora/bignum/3cf6610dc4d447cd10ec9c76c0e448f0e7cf749b
 new file mode 100644
-index 000000000000..56de98d32a3c
-Binary files /dev/null and b/fuzz/corpora/asn1parse/2c0739ec0a7be3b7fe2f6b3e9d8531722b90071a differ
-diff --git a/fuzz/corpora/asn1parse/2ce3a1974f20af1ec233622b48c8502427fdf24f b/fuzz/corpora/asn1parse/2ce3a1974f20af1ec233622b48c8502427fdf24f
+index 0000000..fb3280c
+Binary files /dev/null and b/fuzz/corpora/bignum/3cf6610dc4d447cd10ec9c76c0e448f0e7cf749b differ
+diff --git a/fuzz/corpora/bignum/3f9a64bf80bca38bd3ce1e3610ba9a329b809e3c b/fuzz/corpora/bignum/3f9a64bf80bca38bd3ce1e3610ba9a329b809e3c
 new file mode 100644
-index 000000000000..8c8878e8d5dd
-Binary files /dev/null and b/fuzz/corpora/asn1parse/2ce3a1974f20af1ec233622b48c8502427fdf24f differ
-diff --git a/fuzz/corpora/asn1parse/32d6b060ba20cf99871442de49aa1800f3d7c827 b/fuzz/corpora/asn1parse/32d6b060ba20cf99871442de49aa1800f3d7c827
+index 0000000..fb6ddde
+Binary files /dev/null and b/fuzz/corpora/bignum/3f9a64bf80bca38bd3ce1e3610ba9a329b809e3c differ
+diff --git a/fuzz/corpora/bignum/4030aba47ea3ed0f7396f9c6b5d2d56f7cb3b29d b/fuzz/corpora/bignum/4030aba47ea3ed0f7396f9c6b5d2d56f7cb3b29d
 new file mode 100644
-index 000000000000..9acf4ec2dc9a
-Binary files /dev/null and b/fuzz/corpora/asn1parse/32d6b060ba20cf99871442de49aa1800f3d7c827 differ
-diff --git a/fuzz/corpora/asn1parse/348ed766c85112ddc8d84414f7eb2f05036b9839 b/fuzz/corpora/asn1parse/348ed766c85112ddc8d84414f7eb2f05036b9839
+index 0000000..95f466a
+Binary files /dev/null and b/fuzz/corpora/bignum/4030aba47ea3ed0f7396f9c6b5d2d56f7cb3b29d differ
+diff --git a/fuzz/corpora/bignum/40471848c2f7c59e82c507e57aed109c28564e83 b/fuzz/corpora/bignum/40471848c2f7c59e82c507e57aed109c28564e83
 new file mode 100644
-index 000000000000..fa9e7a4f201f
-Binary files /dev/null and b/fuzz/corpora/asn1parse/348ed766c85112ddc8d84414f7eb2f05036b9839 differ
-diff --git a/fuzz/corpora/asn1parse/3c4053e312539b841a021b81a0739050a5ebaf94 b/fuzz/corpora/asn1parse/3c4053e312539b841a021b81a0739050a5ebaf94
+index 0000000..88ab8de
+Binary files /dev/null and b/fuzz/corpora/bignum/40471848c2f7c59e82c507e57aed109c28564e83 differ
+diff --git a/fuzz/corpora/bignum/405fc653bf29c426245cca244f0d98113340b490 b/fuzz/corpora/bignum/405fc653bf29c426245cca244f0d98113340b490
 new file mode 100644
-index 000000000000..03838fc549e4
-Binary files /dev/null and b/fuzz/corpora/asn1parse/3c4053e312539b841a021b81a0739050a5ebaf94 differ
-diff --git a/fuzz/corpora/asn1parse/3f16a42395ecdc7939ebd9dcc1cf2a280670e7c3 b/fuzz/corpora/asn1parse/3f16a42395ecdc7939ebd9dcc1cf2a280670e7c3
+index 0000000..6c4140d
+Binary files /dev/null and b/fuzz/corpora/bignum/405fc653bf29c426245cca244f0d98113340b490 differ
+diff --git a/fuzz/corpora/bignum/40ec3a5a8af360f98936d5c10ded3db723808612 b/fuzz/corpora/bignum/40ec3a5a8af360f98936d5c10ded3db723808612
 new file mode 100644
-index 000000000000..32df78a1c0c1
-Binary files /dev/null and b/fuzz/corpora/asn1parse/3f16a42395ecdc7939ebd9dcc1cf2a280670e7c3 differ
-diff --git a/fuzz/corpora/asn1parse/40d4b292a1ca6700da153fe38e36e258110ed0d7 b/fuzz/corpora/asn1parse/40d4b292a1ca6700da153fe38e36e258110ed0d7
+index 0000000..e118086
+Binary files /dev/null and b/fuzz/corpora/bignum/40ec3a5a8af360f98936d5c10ded3db723808612 differ
+diff --git a/fuzz/corpora/bignum/42082c098d4e5232c38d47a7cebea91fb37153ec b/fuzz/corpora/bignum/42082c098d4e5232c38d47a7cebea91fb37153ec
 new file mode 100644
-index 000000000000..2dd50e3e2493
-Binary files /dev/null and b/fuzz/corpora/asn1parse/40d4b292a1ca6700da153fe38e36e258110ed0d7 differ
-diff --git a/fuzz/corpora/asn1parse/42a9e15a24917acb420c95368c97a0c5681d49da b/fuzz/corpora/asn1parse/42a9e15a24917acb420c95368c97a0c5681d49da
+index 0000000..8c1d3d2
+Binary files /dev/null and b/fuzz/corpora/bignum/42082c098d4e5232c38d47a7cebea91fb37153ec differ
+diff --git a/fuzz/corpora/bignum/42d6601523f94426c0ca1d25254709e849531d8f b/fuzz/corpora/bignum/42d6601523f94426c0ca1d25254709e849531d8f
 new file mode 100644
-index 000000000000..d33a2d5c76fc
-Binary files /dev/null and b/fuzz/corpora/asn1parse/42a9e15a24917acb420c95368c97a0c5681d49da differ
-diff --git a/fuzz/corpora/asn1parse/42bd64e73400c3697dc979a618ff9d856ea5ad3e b/fuzz/corpora/asn1parse/42bd64e73400c3697dc979a618ff9d856ea5ad3e
+index 0000000..e84cabb
+Binary files /dev/null and b/fuzz/corpora/bignum/42d6601523f94426c0ca1d25254709e849531d8f differ
+diff --git a/fuzz/corpora/bignum/438edf56770c274bdb421047f78aa1eaf06b7461 b/fuzz/corpora/bignum/438edf56770c274bdb421047f78aa1eaf06b7461
 new file mode 100644
-index 000000000000..a71ed62dcf73
-Binary files /dev/null and b/fuzz/corpora/asn1parse/42bd64e73400c3697dc979a618ff9d856ea5ad3e differ
-diff --git a/fuzz/corpora/asn1parse/4abebaeb0a47c6ef87460e57b8fa825fb4ed1c12 b/fuzz/corpora/asn1parse/4abebaeb0a47c6ef87460e57b8fa825fb4ed1c12
+index 0000000..5a08528
+Binary files /dev/null and b/fuzz/corpora/bignum/438edf56770c274bdb421047f78aa1eaf06b7461 differ
+diff --git a/fuzz/corpora/bignum/43f28d1c9b88c80c68f7d89a55468a4e134f110a b/fuzz/corpora/bignum/43f28d1c9b88c80c68f7d89a55468a4e134f110a
 new file mode 100644
-index 000000000000..bc69bfe4dc7c
-Binary files /dev/null and b/fuzz/corpora/asn1parse/4abebaeb0a47c6ef87460e57b8fa825fb4ed1c12 differ
-diff --git a/fuzz/corpora/asn1parse/4b719b5ff0aab2f5b33a4ec8c633162e862a6a28 b/fuzz/corpora/asn1parse/4b719b5ff0aab2f5b33a4ec8c633162e862a6a28
+index 0000000..a9fe44f
+Binary files /dev/null and b/fuzz/corpora/bignum/43f28d1c9b88c80c68f7d89a55468a4e134f110a differ
+diff --git a/fuzz/corpora/bignum/4462738e5f1ae745e68902d2573cdc3e6c3560c3 b/fuzz/corpora/bignum/4462738e5f1ae745e68902d2573cdc3e6c3560c3
 new file mode 100644
-index 000000000000..76a54d69e186
-Binary files /dev/null and b/fuzz/corpora/asn1parse/4b719b5ff0aab2f5b33a4ec8c633162e862a6a28 differ
-diff --git a/fuzz/corpora/asn1parse/5528110c4540265909c5d0c7da57e0dc8f18441b b/fuzz/corpora/asn1parse/5528110c4540265909c5d0c7da57e0dc8f18441b
+index 0000000..abcb4b4
+Binary files /dev/null and b/fuzz/corpora/bignum/4462738e5f1ae745e68902d2573cdc3e6c3560c3 differ
+diff --git a/fuzz/corpora/bignum/44677fc2a023fcc6b49dd4cc8b5138cb258b6681 b/fuzz/corpora/bignum/44677fc2a023fcc6b49dd4cc8b5138cb258b6681
 new file mode 100644
-index 000000000000..56a358c1d792
-Binary files /dev/null and b/fuzz/corpora/asn1parse/5528110c4540265909c5d0c7da57e0dc8f18441b differ
-diff --git a/fuzz/corpora/asn1parse/58976db36299d0a89e0e3766a2799abf4c276db0 b/fuzz/corpora/asn1parse/58976db36299d0a89e0e3766a2799abf4c276db0
+index 0000000..94635bc
+Binary files /dev/null and b/fuzz/corpora/bignum/44677fc2a023fcc6b49dd4cc8b5138cb258b6681 differ
+diff --git a/fuzz/corpora/bignum/457e4e8a598cd16765e714ca52800b99a79048e1 b/fuzz/corpora/bignum/457e4e8a598cd16765e714ca52800b99a79048e1
 new file mode 100644
-index 000000000000..73e3327ce263
-Binary files /dev/null and b/fuzz/corpora/asn1parse/58976db36299d0a89e0e3766a2799abf4c276db0 differ
-diff --git a/fuzz/corpora/asn1parse/59c5aba8a16244076868631beaa8094d37172601 b/fuzz/corpora/asn1parse/59c5aba8a16244076868631beaa8094d37172601
+index 0000000..894408c
+Binary files /dev/null and b/fuzz/corpora/bignum/457e4e8a598cd16765e714ca52800b99a79048e1 differ
+diff --git a/fuzz/corpora/bignum/4657598f21021a15e1e3b778616064bc35b18746 b/fuzz/corpora/bignum/4657598f21021a15e1e3b778616064bc35b18746
 new file mode 100644
-index 000000000000..6b164c3c09fe
-Binary files /dev/null and b/fuzz/corpora/asn1parse/59c5aba8a16244076868631beaa8094d37172601 differ
-diff --git a/fuzz/corpora/asn1parse/606baa97b10f0cd273c7f45a52e6065448f5769b b/fuzz/corpora/asn1parse/606baa97b10f0cd273c7f45a52e6065448f5769b
+index 0000000..ba0d19a
+Binary files /dev/null and b/fuzz/corpora/bignum/4657598f21021a15e1e3b778616064bc35b18746 differ
+diff --git a/fuzz/corpora/bignum/47ab81ffbed978b239b21ea8ac7cd7617bbcc9dc b/fuzz/corpora/bignum/47ab81ffbed978b239b21ea8ac7cd7617bbcc9dc
 new file mode 100644
-index 000000000000..76b65922fe75
-Binary files /dev/null and b/fuzz/corpora/asn1parse/606baa97b10f0cd273c7f45a52e6065448f5769b differ
-diff --git a/fuzz/corpora/asn1parse/6076a6c0a6f1d99e16ef95f5405ef9e7a8ee4933 b/fuzz/corpora/asn1parse/6076a6c0a6f1d99e16ef95f5405ef9e7a8ee4933
+index 0000000..b742b7a
+Binary files /dev/null and b/fuzz/corpora/bignum/47ab81ffbed978b239b21ea8ac7cd7617bbcc9dc differ
+diff --git a/fuzz/corpora/bignum/48154c8adaed1e2fdc9f6d67e8bd7cec0ab4a9e8 b/fuzz/corpora/bignum/48154c8adaed1e2fdc9f6d67e8bd7cec0ab4a9e8
 new file mode 100644
-index 000000000000..10f3e84fbb0a
-Binary files /dev/null and b/fuzz/corpora/asn1parse/6076a6c0a6f1d99e16ef95f5405ef9e7a8ee4933 differ
-diff --git a/fuzz/corpora/asn1parse/64fd157ed4a1c54c2f55cba6380d9b099831d5c9 b/fuzz/corpora/asn1parse/64fd157ed4a1c54c2f55cba6380d9b099831d5c9
+index 0000000..cf0d4f2
+Binary files /dev/null and b/fuzz/corpora/bignum/48154c8adaed1e2fdc9f6d67e8bd7cec0ab4a9e8 differ
+diff --git a/fuzz/corpora/bignum/4860974bbbda76649e507c1f478a463f261280c8 b/fuzz/corpora/bignum/4860974bbbda76649e507c1f478a463f261280c8
 new file mode 100644
-index 000000000000..69d49f27a5b3
-Binary files /dev/null and b/fuzz/corpora/asn1parse/64fd157ed4a1c54c2f55cba6380d9b099831d5c9 differ
-diff --git a/fuzz/corpora/asn1parse/696add7812133a2332e3c063f93139bf6b873034 b/fuzz/corpora/asn1parse/696add7812133a2332e3c063f93139bf6b873034
+index 0000000..3f9466a
+Binary files /dev/null and b/fuzz/corpora/bignum/4860974bbbda76649e507c1f478a463f261280c8 differ
+diff --git a/fuzz/corpora/bignum/48d24f013773a4287f0bafb2d6f34d162f1b26d9 b/fuzz/corpora/bignum/48d24f013773a4287f0bafb2d6f34d162f1b26d9
 new file mode 100644
-index 000000000000..dfe82aae9b8c
-Binary files /dev/null and b/fuzz/corpora/asn1parse/696add7812133a2332e3c063f93139bf6b873034 differ
-diff --git a/fuzz/corpora/asn1parse/705374c7a286be50dcff2ec84cdfc47c782fdb6e b/fuzz/corpora/asn1parse/705374c7a286be50dcff2ec84cdfc47c782fdb6e
+index 0000000..d4eae82
+Binary files /dev/null and b/fuzz/corpora/bignum/48d24f013773a4287f0bafb2d6f34d162f1b26d9 differ
+diff --git a/fuzz/corpora/bignum/4919cd2470b74fc99c77baebae5535ab6b132669 b/fuzz/corpora/bignum/4919cd2470b74fc99c77baebae5535ab6b132669
 new file mode 100644
-index 000000000000..3c1c17de950e
-Binary files /dev/null and b/fuzz/corpora/asn1parse/705374c7a286be50dcff2ec84cdfc47c782fdb6e differ
-diff --git a/fuzz/corpora/asn1parse/72c49da5b1d811407b3546624e5f3b68657f1aad b/fuzz/corpora/asn1parse/72c49da5b1d811407b3546624e5f3b68657f1aad
+index 0000000..f629b8a
+Binary files /dev/null and b/fuzz/corpora/bignum/4919cd2470b74fc99c77baebae5535ab6b132669 differ
+diff --git a/fuzz/corpora/bignum/49c230fa8055349f9de26200d01a168973670777 b/fuzz/corpora/bignum/49c230fa8055349f9de26200d01a168973670777
 new file mode 100644
-index 000000000000..ca7f24e85f94
-Binary files /dev/null and b/fuzz/corpora/asn1parse/72c49da5b1d811407b3546624e5f3b68657f1aad differ
-diff --git a/fuzz/corpora/asn1parse/7324cf21cd413452a8d16c8af93adc79fba97f8f b/fuzz/corpora/asn1parse/7324cf21cd413452a8d16c8af93adc79fba97f8f
+index 0000000..59c8695
+Binary files /dev/null and b/fuzz/corpora/bignum/49c230fa8055349f9de26200d01a168973670777 differ
+diff --git a/fuzz/corpora/bignum/4afbb0affba21ce4f61500f6cc0b699aa4c3fc97 b/fuzz/corpora/bignum/4afbb0affba21ce4f61500f6cc0b699aa4c3fc97
 new file mode 100644
-index 000000000000..878face979ad
-Binary files /dev/null and b/fuzz/corpora/asn1parse/7324cf21cd413452a8d16c8af93adc79fba97f8f differ
-diff --git a/fuzz/corpora/asn1parse/7466a4f7fea991245fe84a073162b4562b9ecf58 b/fuzz/corpora/asn1parse/7466a4f7fea991245fe84a073162b4562b9ecf58
+index 0000000..5b4b86a
+Binary files /dev/null and b/fuzz/corpora/bignum/4afbb0affba21ce4f61500f6cc0b699aa4c3fc97 differ
+diff --git a/fuzz/corpora/bignum/4b3910c0ff306403390c144f764fb90c2c14a757 b/fuzz/corpora/bignum/4b3910c0ff306403390c144f764fb90c2c14a757
 new file mode 100644
-index 000000000000..45b98ea2cec0
-Binary files /dev/null and b/fuzz/corpora/asn1parse/7466a4f7fea991245fe84a073162b4562b9ecf58 differ
-diff --git a/fuzz/corpora/asn1parse/7a0665e0502d33f89cf0eeb49d47438a6a03e759 b/fuzz/corpora/asn1parse/7a0665e0502d33f89cf0eeb49d47438a6a03e759
+index 0000000..847924e
+Binary files /dev/null and b/fuzz/corpora/bignum/4b3910c0ff306403390c144f764fb90c2c14a757 differ
+diff --git a/fuzz/corpora/bignum/4c0699ff1fa931ec5b786bf29569c8201396246a b/fuzz/corpora/bignum/4c0699ff1fa931ec5b786bf29569c8201396246a
 new file mode 100644
-index 000000000000..0ef5cbf8dc85
-Binary files /dev/null and b/fuzz/corpora/asn1parse/7a0665e0502d33f89cf0eeb49d47438a6a03e759 differ
-diff --git a/fuzz/corpora/asn1parse/8525d1578b570be0ddc7c0abc1f40a66beb5a59a b/fuzz/corpora/asn1parse/8525d1578b570be0ddc7c0abc1f40a66beb5a59a
+index 0000000..4b59ead
+Binary files /dev/null and b/fuzz/corpora/bignum/4c0699ff1fa931ec5b786bf29569c8201396246a differ
+diff --git a/fuzz/corpora/bignum/4c64c468c5b6652d32ae7c42415d3a0ab481ecd5 b/fuzz/corpora/bignum/4c64c468c5b6652d32ae7c42415d3a0ab481ecd5
 new file mode 100644
-index 000000000000..460f9a5667c8
-Binary files /dev/null and b/fuzz/corpora/asn1parse/8525d1578b570be0ddc7c0abc1f40a66beb5a59a differ
-diff --git a/fuzz/corpora/asn1parse/87dabbac10fcc275607fe04d270e671dbff5c49b b/fuzz/corpora/asn1parse/87dabbac10fcc275607fe04d270e671dbff5c49b
+index 0000000..d225eae
+Binary files /dev/null and b/fuzz/corpora/bignum/4c64c468c5b6652d32ae7c42415d3a0ab481ecd5 differ
+diff --git a/fuzz/corpora/bignum/4cd4ae4e59cf4658d00a2ed7ef46394e14b2a0bd b/fuzz/corpora/bignum/4cd4ae4e59cf4658d00a2ed7ef46394e14b2a0bd
 new file mode 100644
-index 000000000000..e7eb872bb3b7
-Binary files /dev/null and b/fuzz/corpora/asn1parse/87dabbac10fcc275607fe04d270e671dbff5c49b differ
-diff --git a/fuzz/corpora/asn1parse/8927805b1fdcf5b155dc7e7cdcce546a5c245b6b b/fuzz/corpora/asn1parse/8927805b1fdcf5b155dc7e7cdcce546a5c245b6b
+index 0000000..2f920fd
+Binary files /dev/null and b/fuzz/corpora/bignum/4cd4ae4e59cf4658d00a2ed7ef46394e14b2a0bd differ
+diff --git a/fuzz/corpora/bignum/4cf144f4c445667583068e9b0183006aaa67850c b/fuzz/corpora/bignum/4cf144f4c445667583068e9b0183006aaa67850c
 new file mode 100644
-index 000000000000..eeb9dfa75cf6
-Binary files /dev/null and b/fuzz/corpora/asn1parse/8927805b1fdcf5b155dc7e7cdcce546a5c245b6b differ
-diff --git a/fuzz/corpora/asn1parse/8933eeb72f401f133827beebefdddcbe9584f644 b/fuzz/corpora/asn1parse/8933eeb72f401f133827beebefdddcbe9584f644
+index 0000000..af06ca1
+Binary files /dev/null and b/fuzz/corpora/bignum/4cf144f4c445667583068e9b0183006aaa67850c differ
+diff --git a/fuzz/corpora/bignum/4f6cc20be0bd24d1e7d737313b59f8fd58d8b54c b/fuzz/corpora/bignum/4f6cc20be0bd24d1e7d737313b59f8fd58d8b54c
 new file mode 100644
-index 000000000000..2585811b2753
-Binary files /dev/null and b/fuzz/corpora/asn1parse/8933eeb72f401f133827beebefdddcbe9584f644 differ
-diff --git a/fuzz/corpora/asn1parse/8ad8584daf17fd0bfd0e31b3f77481208b17e2a8 b/fuzz/corpora/asn1parse/8ad8584daf17fd0bfd0e31b3f77481208b17e2a8
+index 0000000..d628f10
+Binary files /dev/null and b/fuzz/corpora/bignum/4f6cc20be0bd24d1e7d737313b59f8fd58d8b54c differ
+diff --git a/fuzz/corpora/bignum/4f801fc63989ae0db47ac886eca2a591b3dc687a b/fuzz/corpora/bignum/4f801fc63989ae0db47ac886eca2a591b3dc687a
 new file mode 100644
-index 000000000000..e4c3fa4a1999
-Binary files /dev/null and b/fuzz/corpora/asn1parse/8ad8584daf17fd0bfd0e31b3f77481208b17e2a8 differ
-diff --git a/fuzz/corpora/asn1parse/8b15aaa6f639dc123b22b4378d5119f49dcbdef6 b/fuzz/corpora/asn1parse/8b15aaa6f639dc123b22b4378d5119f49dcbdef6
+index 0000000..4669abc
+Binary files /dev/null and b/fuzz/corpora/bignum/4f801fc63989ae0db47ac886eca2a591b3dc687a differ
+diff --git a/fuzz/corpora/bignum/504326b4f9d08db58ec20b03f327a97671054224 b/fuzz/corpora/bignum/504326b4f9d08db58ec20b03f327a97671054224
 new file mode 100644
-index 000000000000..cca5bf953820
-Binary files /dev/null and b/fuzz/corpora/asn1parse/8b15aaa6f639dc123b22b4378d5119f49dcbdef6 differ
-diff --git a/fuzz/corpora/asn1parse/8e5863c38432ecde5b08de363daa06a5d9d78c3b b/fuzz/corpora/asn1parse/8e5863c38432ecde5b08de363daa06a5d9d78c3b
+index 0000000..57c04fc
+Binary files /dev/null and b/fuzz/corpora/bignum/504326b4f9d08db58ec20b03f327a97671054224 differ
+diff --git a/fuzz/corpora/bignum/517c790afefcc9ac4f5aff9ea8d77700fcc8a673 b/fuzz/corpora/bignum/517c790afefcc9ac4f5aff9ea8d77700fcc8a673
 new file mode 100644
-index 000000000000..26f939035340
-Binary files /dev/null and b/fuzz/corpora/asn1parse/8e5863c38432ecde5b08de363daa06a5d9d78c3b differ
-diff --git a/fuzz/corpora/asn1parse/8fe51ff40338174e282d2303abba8a62b82da8a7 b/fuzz/corpora/asn1parse/8fe51ff40338174e282d2303abba8a62b82da8a7
+index 0000000..4afa752
+Binary files /dev/null and b/fuzz/corpora/bignum/517c790afefcc9ac4f5aff9ea8d77700fcc8a673 differ
+diff --git a/fuzz/corpora/bignum/5238c9e0aafb39479ec43a2d3d0aed3adc68ceee b/fuzz/corpora/bignum/5238c9e0aafb39479ec43a2d3d0aed3adc68ceee
 new file mode 100644
-index 000000000000..f19675780ab0
-Binary files /dev/null and b/fuzz/corpora/asn1parse/8fe51ff40338174e282d2303abba8a62b82da8a7 differ
-diff --git a/fuzz/corpora/asn1parse/909d226245dec3288abbdfcf6009961232432eff b/fuzz/corpora/asn1parse/909d226245dec3288abbdfcf6009961232432eff
+index 0000000..15190dd
+Binary files /dev/null and b/fuzz/corpora/bignum/5238c9e0aafb39479ec43a2d3d0aed3adc68ceee differ
+diff --git a/fuzz/corpora/bignum/534e41407fa682b9f1360604373b74c371e87086 b/fuzz/corpora/bignum/534e41407fa682b9f1360604373b74c371e87086
 new file mode 100644
-index 000000000000..a333cbf49e8f
-Binary files /dev/null and b/fuzz/corpora/asn1parse/909d226245dec3288abbdfcf6009961232432eff differ
-diff --git a/fuzz/corpora/asn1parse/93a20cbfb23355eca4a0c15ae7831ace6864fc08 b/fuzz/corpora/asn1parse/93a20cbfb23355eca4a0c15ae7831ace6864fc08
+index 0000000..702aae2
+Binary files /dev/null and b/fuzz/corpora/bignum/534e41407fa682b9f1360604373b74c371e87086 differ
+diff --git a/fuzz/corpora/bignum/53607819a57804f016de89749a88428ad5b0450c b/fuzz/corpora/bignum/53607819a57804f016de89749a88428ad5b0450c
 new file mode 100644
-index 000000000000..cf4bad328d9f
-Binary files /dev/null and b/fuzz/corpora/asn1parse/93a20cbfb23355eca4a0c15ae7831ace6864fc08 differ
-diff --git a/fuzz/corpora/asn1parse/9b006676682c6c50cc6522b8ee99b55201b07ddd b/fuzz/corpora/asn1parse/9b006676682c6c50cc6522b8ee99b55201b07ddd
+index 0000000..31b9c55
+Binary files /dev/null and b/fuzz/corpora/bignum/53607819a57804f016de89749a88428ad5b0450c differ
+diff --git a/fuzz/corpora/bignum/53f843271b1a21d2b2edc071cd345da8a250eb88 b/fuzz/corpora/bignum/53f843271b1a21d2b2edc071cd345da8a250eb88
 new file mode 100644
-index 000000000000..264763826947
-Binary files /dev/null and b/fuzz/corpora/asn1parse/9b006676682c6c50cc6522b8ee99b55201b07ddd differ
-diff --git a/fuzz/corpora/asn1parse/9c12328cc79c0f042317b1d59c95fd09cb01a946 b/fuzz/corpora/asn1parse/9c12328cc79c0f042317b1d59c95fd09cb01a946
+index 0000000..beadb67
+Binary files /dev/null and b/fuzz/corpora/bignum/53f843271b1a21d2b2edc071cd345da8a250eb88 differ
+diff --git a/fuzz/corpora/bignum/5458036c3dd410700b19317c2558873d79ce3c40 b/fuzz/corpora/bignum/5458036c3dd410700b19317c2558873d79ce3c40
 new file mode 100644
-index 000000000000..e0119dfb8a39
-Binary files /dev/null and b/fuzz/corpora/asn1parse/9c12328cc79c0f042317b1d59c95fd09cb01a946 differ
-diff --git a/fuzz/corpora/asn1parse/9e1c06c7a6e7f5f4011e8ae6426f026941b04020 b/fuzz/corpora/asn1parse/9e1c06c7a6e7f5f4011e8ae6426f026941b04020
+index 0000000..6897cf1
+Binary files /dev/null and b/fuzz/corpora/bignum/5458036c3dd410700b19317c2558873d79ce3c40 differ
+diff --git a/fuzz/corpora/bignum/54b65e7d4991a5c7862d66dd1e6a79615b35a813 b/fuzz/corpora/bignum/54b65e7d4991a5c7862d66dd1e6a79615b35a813
 new file mode 100644
-index 000000000000..e5af8042783c
-Binary files /dev/null and b/fuzz/corpora/asn1parse/9e1c06c7a6e7f5f4011e8ae6426f026941b04020 differ
-diff --git a/fuzz/corpora/asn1parse/a195945d83d78a3d33273a6eebaa07ffa27ca84c b/fuzz/corpora/asn1parse/a195945d83d78a3d33273a6eebaa07ffa27ca84c
+index 0000000..1cc1783
+Binary files /dev/null and b/fuzz/corpora/bignum/54b65e7d4991a5c7862d66dd1e6a79615b35a813 differ
+diff --git a/fuzz/corpora/bignum/553863271ff34b02143938705bb87e180e440eac b/fuzz/corpora/bignum/553863271ff34b02143938705bb87e180e440eac
 new file mode 100644
-index 000000000000..39a5de32088e
-Binary files /dev/null and b/fuzz/corpora/asn1parse/a195945d83d78a3d33273a6eebaa07ffa27ca84c differ
-diff --git a/fuzz/corpora/asn1parse/a49b94a4fd23b8844d1285ba0d8d0e1df043fd07 b/fuzz/corpora/asn1parse/a49b94a4fd23b8844d1285ba0d8d0e1df043fd07
+index 0000000..ca359c9
+Binary files /dev/null and b/fuzz/corpora/bignum/553863271ff34b02143938705bb87e180e440eac differ
+diff --git a/fuzz/corpora/bignum/55b52e940efd9c70415b196005a05468475c0237 b/fuzz/corpora/bignum/55b52e940efd9c70415b196005a05468475c0237
 new file mode 100644
-index 000000000000..93231e1136e0
-Binary files /dev/null and b/fuzz/corpora/asn1parse/a49b94a4fd23b8844d1285ba0d8d0e1df043fd07 differ
-diff --git a/fuzz/corpora/asn1parse/a88e7380cc9dc9815fa040df2b1349b2afa8d4a3 b/fuzz/corpora/asn1parse/a88e7380cc9dc9815fa040df2b1349b2afa8d4a3
+index 0000000..f5e8aea
+Binary files /dev/null and b/fuzz/corpora/bignum/55b52e940efd9c70415b196005a05468475c0237 differ
+diff --git a/fuzz/corpora/bignum/5614732f454872ff628db935a5add0844d204f5d b/fuzz/corpora/bignum/5614732f454872ff628db935a5add0844d204f5d
 new file mode 100644
-index 000000000000..785e7f868c68
-Binary files /dev/null and b/fuzz/corpora/asn1parse/a88e7380cc9dc9815fa040df2b1349b2afa8d4a3 differ
-diff --git a/fuzz/corpora/asn1parse/ac5da79a2fee437221c7d31cdb9c3510669365fb b/fuzz/corpora/asn1parse/ac5da79a2fee437221c7d31cdb9c3510669365fb
+index 0000000..b1b7d13
+Binary files /dev/null and b/fuzz/corpora/bignum/5614732f454872ff628db935a5add0844d204f5d differ
+diff --git a/fuzz/corpora/bignum/57a0c38bc4983ad5b24752bbdfd5487994a95b13 b/fuzz/corpora/bignum/57a0c38bc4983ad5b24752bbdfd5487994a95b13
 new file mode 100644
-index 000000000000..57a4f5336fe6
-Binary files /dev/null and b/fuzz/corpora/asn1parse/ac5da79a2fee437221c7d31cdb9c3510669365fb differ
-diff --git a/fuzz/corpora/asn1parse/ad8d805e0275a9a7e4cadd920dee6084b87dfca8 b/fuzz/corpora/asn1parse/ad8d805e0275a9a7e4cadd920dee6084b87dfca8
+index 0000000..73fa2b8
+Binary files /dev/null and b/fuzz/corpora/bignum/57a0c38bc4983ad5b24752bbdfd5487994a95b13 differ
+diff --git a/fuzz/corpora/bignum/58b4681433cf739f1559f8d54d1fb0871f8f8623 b/fuzz/corpora/bignum/58b4681433cf739f1559f8d54d1fb0871f8f8623
 new file mode 100644
-index 000000000000..db484b1feccb
-Binary files /dev/null and b/fuzz/corpora/asn1parse/ad8d805e0275a9a7e4cadd920dee6084b87dfca8 differ
-diff --git a/fuzz/corpora/asn1parse/adfa18cdc3eb0227857dd7eea265eb6306ab79c3 b/fuzz/corpora/asn1parse/adfa18cdc3eb0227857dd7eea265eb6306ab79c3
+index 0000000..932ba62
+Binary files /dev/null and b/fuzz/corpora/bignum/58b4681433cf739f1559f8d54d1fb0871f8f8623 differ
+diff --git a/fuzz/corpora/bignum/5a7c6faec2ec2999aaa8c4175567af26e7056b1f b/fuzz/corpora/bignum/5a7c6faec2ec2999aaa8c4175567af26e7056b1f
 new file mode 100644
-index 000000000000..f2cb8d9d84ad
-Binary files /dev/null and b/fuzz/corpora/asn1parse/adfa18cdc3eb0227857dd7eea265eb6306ab79c3 differ
-diff --git a/fuzz/corpora/asn1parse/b004adb5482135f6129f68fd1a59a33118ffbe81 b/fuzz/corpora/asn1parse/b004adb5482135f6129f68fd1a59a33118ffbe81
+index 0000000..99fb120
+Binary files /dev/null and b/fuzz/corpora/bignum/5a7c6faec2ec2999aaa8c4175567af26e7056b1f differ
+diff --git a/fuzz/corpora/bignum/5af60ae40349117bc0946ea8d070e18d68965915 b/fuzz/corpora/bignum/5af60ae40349117bc0946ea8d070e18d68965915
 new file mode 100644
-index 000000000000..c8b02947c4e6
-Binary files /dev/null and b/fuzz/corpora/asn1parse/b004adb5482135f6129f68fd1a59a33118ffbe81 differ
-diff --git a/fuzz/corpora/asn1parse/b3935e3d0a1dfe71bddae2736284f003f634b95c b/fuzz/corpora/asn1parse/b3935e3d0a1dfe71bddae2736284f003f634b95c
+index 0000000..e32a01d
+Binary files /dev/null and b/fuzz/corpora/bignum/5af60ae40349117bc0946ea8d070e18d68965915 differ
+diff --git a/fuzz/corpora/bignum/5b6ad31ff3f977dab3c9d979711ce008a42f7c06 b/fuzz/corpora/bignum/5b6ad31ff3f977dab3c9d979711ce008a42f7c06
 new file mode 100644
-index 000000000000..1142670f06a8
-Binary files /dev/null and b/fuzz/corpora/asn1parse/b3935e3d0a1dfe71bddae2736284f003f634b95c differ
-diff --git a/fuzz/corpora/asn1parse/b9cc15b11f944399ccbc904b6517f980c1292721 b/fuzz/corpora/asn1parse/b9cc15b11f944399ccbc904b6517f980c1292721
+index 0000000..654ef7a
+Binary files /dev/null and b/fuzz/corpora/bignum/5b6ad31ff3f977dab3c9d979711ce008a42f7c06 differ
+diff --git a/fuzz/corpora/bignum/5b96ff153d7454a1552accb5f270d4eafc24e40f b/fuzz/corpora/bignum/5b96ff153d7454a1552accb5f270d4eafc24e40f
 new file mode 100644
-index 000000000000..cb9608bb9901
-Binary files /dev/null and b/fuzz/corpora/asn1parse/b9cc15b11f944399ccbc904b6517f980c1292721 differ
-diff --git a/fuzz/corpora/asn1parse/bc0beeb9cd0fa8ca7a94707f618fe86ad70c21ca b/fuzz/corpora/asn1parse/bc0beeb9cd0fa8ca7a94707f618fe86ad70c21ca
+index 0000000..8e17008
+Binary files /dev/null and b/fuzz/corpora/bignum/5b96ff153d7454a1552accb5f270d4eafc24e40f differ
+diff --git a/fuzz/corpora/bignum/5be5ab60e1fd75943943b12ed60e4734f6ee3935 b/fuzz/corpora/bignum/5be5ab60e1fd75943943b12ed60e4734f6ee3935
 new file mode 100644
-index 000000000000..4f5fc11d6d8e
-Binary files /dev/null and b/fuzz/corpora/asn1parse/bc0beeb9cd0fa8ca7a94707f618fe86ad70c21ca differ
-diff --git a/fuzz/corpora/asn1parse/bcdbe07c8ddcc0e7c30170ad3df6c8259702f753 b/fuzz/corpora/asn1parse/bcdbe07c8ddcc0e7c30170ad3df6c8259702f753
+index 0000000..53d870b
+Binary files /dev/null and b/fuzz/corpora/bignum/5be5ab60e1fd75943943b12ed60e4734f6ee3935 differ
+diff --git a/fuzz/corpora/bignum/5beffa928dfb0c57766bfa9f20e99ba6b514021b b/fuzz/corpora/bignum/5beffa928dfb0c57766bfa9f20e99ba6b514021b
 new file mode 100644
-index 000000000000..bdaa92b28926
-Binary files /dev/null and b/fuzz/corpora/asn1parse/bcdbe07c8ddcc0e7c30170ad3df6c8259702f753 differ
-diff --git a/fuzz/corpora/asn1parse/bea58b8def9926f95dd395c596186df4d7d812cc b/fuzz/corpora/asn1parse/bea58b8def9926f95dd395c596186df4d7d812cc
+index 0000000..dcfa09f
+Binary files /dev/null and b/fuzz/corpora/bignum/5beffa928dfb0c57766bfa9f20e99ba6b514021b differ
+diff --git a/fuzz/corpora/bignum/5c3999ed267a29968fade2b27d80037e24a5d314 b/fuzz/corpora/bignum/5c3999ed267a29968fade2b27d80037e24a5d314
 new file mode 100644
-index 000000000000..8ba0f2ebcf85
-Binary files /dev/null and b/fuzz/corpora/asn1parse/bea58b8def9926f95dd395c596186df4d7d812cc differ
-diff --git a/fuzz/corpora/asn1parse/beed671095997fb15d927bf4afb66b7e3ce7da7f b/fuzz/corpora/asn1parse/beed671095997fb15d927bf4afb66b7e3ce7da7f
+index 0000000..c63e5af
+Binary files /dev/null and b/fuzz/corpora/bignum/5c3999ed267a29968fade2b27d80037e24a5d314 differ
+diff --git a/fuzz/corpora/bignum/5d726dc792e378dcb417cf99155864f1b5360314 b/fuzz/corpora/bignum/5d726dc792e378dcb417cf99155864f1b5360314
 new file mode 100644
-index 000000000000..31848f56571a
-Binary files /dev/null and b/fuzz/corpora/asn1parse/beed671095997fb15d927bf4afb66b7e3ce7da7f differ
-diff --git a/fuzz/corpora/asn1parse/bf38b36645dff3bda47b497c511ab89b7aa80fb3 b/fuzz/corpora/asn1parse/bf38b36645dff3bda47b497c511ab89b7aa80fb3
+index 0000000..0c64e89
+Binary files /dev/null and b/fuzz/corpora/bignum/5d726dc792e378dcb417cf99155864f1b5360314 differ
+diff --git a/fuzz/corpora/bignum/5db01e3abb3208f37afef65e4506833e97e6ed26 b/fuzz/corpora/bignum/5db01e3abb3208f37afef65e4506833e97e6ed26
 new file mode 100644
-index 000000000000..c053206d26a9
-Binary files /dev/null and b/fuzz/corpora/asn1parse/bf38b36645dff3bda47b497c511ab89b7aa80fb3 differ
-diff --git a/fuzz/corpora/asn1parse/bf5b00c788437d366a84f520523d5f4a223e2b70 b/fuzz/corpora/asn1parse/bf5b00c788437d366a84f520523d5f4a223e2b70
+index 0000000..97c4f8f
+Binary files /dev/null and b/fuzz/corpora/bignum/5db01e3abb3208f37afef65e4506833e97e6ed26 differ
+diff --git a/fuzz/corpora/bignum/5dd9fe2f951a5140b3ac48923aaed59ab145d6e3 b/fuzz/corpora/bignum/5dd9fe2f951a5140b3ac48923aaed59ab145d6e3
 new file mode 100644
-index 000000000000..63a6e34ac2c0
-Binary files /dev/null and b/fuzz/corpora/asn1parse/bf5b00c788437d366a84f520523d5f4a223e2b70 differ
-diff --git a/fuzz/corpora/asn1parse/c025df29a6aefa9dc485e25e290c4f6a56cf4eaa b/fuzz/corpora/asn1parse/c025df29a6aefa9dc485e25e290c4f6a56cf4eaa
+index 0000000..046b5db
+Binary files /dev/null and b/fuzz/corpora/bignum/5dd9fe2f951a5140b3ac48923aaed59ab145d6e3 differ
+diff --git a/fuzz/corpora/bignum/5e274c181a945991c9063448c8eb3a2df94c966a b/fuzz/corpora/bignum/5e274c181a945991c9063448c8eb3a2df94c966a
 new file mode 100644
-index 000000000000..2b0065d0b53f
-Binary files /dev/null and b/fuzz/corpora/asn1parse/c025df29a6aefa9dc485e25e290c4f6a56cf4eaa differ
-diff --git a/fuzz/corpora/asn1parse/c0fa49a43d0b20b0705fbdcbd36df411536f1f86 b/fuzz/corpora/asn1parse/c0fa49a43d0b20b0705fbdcbd36df411536f1f86
+index 0000000..9df9f17
+Binary files /dev/null and b/fuzz/corpora/bignum/5e274c181a945991c9063448c8eb3a2df94c966a differ
+diff --git a/fuzz/corpora/bignum/6013465dc17db95bef87b8dddba06a7c5572215e b/fuzz/corpora/bignum/6013465dc17db95bef87b8dddba06a7c5572215e
 new file mode 100644
-index 000000000000..4ca7413e03d9
-Binary files /dev/null and b/fuzz/corpora/asn1parse/c0fa49a43d0b20b0705fbdcbd36df411536f1f86 differ
-diff --git a/fuzz/corpora/asn1parse/c17285d8d64e2a61382a91b85892499746c12c4c b/fuzz/corpora/asn1parse/c17285d8d64e2a61382a91b85892499746c12c4c
+index 0000000..4d17bb6
+Binary files /dev/null and b/fuzz/corpora/bignum/6013465dc17db95bef87b8dddba06a7c5572215e differ
+diff --git a/fuzz/corpora/bignum/6029823423acb577f59cc96817f6bf64d726263d b/fuzz/corpora/bignum/6029823423acb577f59cc96817f6bf64d726263d
 new file mode 100644
-index 000000000000..f0f5656efeb4
-Binary files /dev/null and b/fuzz/corpora/asn1parse/c17285d8d64e2a61382a91b85892499746c12c4c differ
-diff --git a/fuzz/corpora/asn1parse/c3005156dfe03cef9b090dbef4f85072fcb2cb10 b/fuzz/corpora/asn1parse/c3005156dfe03cef9b090dbef4f85072fcb2cb10
+index 0000000..dd3512c
+Binary files /dev/null and b/fuzz/corpora/bignum/6029823423acb577f59cc96817f6bf64d726263d differ
+diff --git a/fuzz/corpora/bignum/603f1f3e564458d3d0357b0a08906409d428306d b/fuzz/corpora/bignum/603f1f3e564458d3d0357b0a08906409d428306d
 new file mode 100644
-index 000000000000..de2ac3521d01
-Binary files /dev/null and b/fuzz/corpora/asn1parse/c3005156dfe03cef9b090dbef4f85072fcb2cb10 differ
-diff --git a/fuzz/corpora/asn1parse/c30a24efef50efcd44b664eb6ef7f251c670a8cf b/fuzz/corpora/asn1parse/c30a24efef50efcd44b664eb6ef7f251c670a8cf
+index 0000000..1e818a6
+Binary files /dev/null and b/fuzz/corpora/bignum/603f1f3e564458d3d0357b0a08906409d428306d differ
+diff --git a/fuzz/corpora/bignum/60c8d0ec40218c6427be307a6fda0565719ee2a6 b/fuzz/corpora/bignum/60c8d0ec40218c6427be307a6fda0565719ee2a6
 new file mode 100644
-index 000000000000..7c6e9d2a8b1d
-Binary files /dev/null and b/fuzz/corpora/asn1parse/c30a24efef50efcd44b664eb6ef7f251c670a8cf differ
-diff --git a/fuzz/corpora/asn1parse/c3b62a07e14a7865d357afd42ead0efefa983eae b/fuzz/corpora/asn1parse/c3b62a07e14a7865d357afd42ead0efefa983eae
+index 0000000..dc3a951
+Binary files /dev/null and b/fuzz/corpora/bignum/60c8d0ec40218c6427be307a6fda0565719ee2a6 differ
+diff --git a/fuzz/corpora/bignum/60e368073cc04a42ae26a5819888a77bd94d47ae b/fuzz/corpora/bignum/60e368073cc04a42ae26a5819888a77bd94d47ae
 new file mode 100644
-index 000000000000..432ae69769bd
-Binary files /dev/null and b/fuzz/corpora/asn1parse/c3b62a07e14a7865d357afd42ead0efefa983eae differ
-diff --git a/fuzz/corpora/asn1parse/c635b835ab278536e93f2f2618766c8f773e7471 b/fuzz/corpora/asn1parse/c635b835ab278536e93f2f2618766c8f773e7471
+index 0000000..501c0eb
+Binary files /dev/null and b/fuzz/corpora/bignum/60e368073cc04a42ae26a5819888a77bd94d47ae differ
+diff --git a/fuzz/corpora/bignum/611f1a128c646c2c2e213b84fadbeac33fa45147 b/fuzz/corpora/bignum/611f1a128c646c2c2e213b84fadbeac33fa45147
 new file mode 100644
-index 000000000000..6f1556f0c53b
-Binary files /dev/null and b/fuzz/corpora/asn1parse/c635b835ab278536e93f2f2618766c8f773e7471 differ
-diff --git a/fuzz/corpora/asn1parse/c8328e45aedab00fb505816c0f6c775729dde9d5 b/fuzz/corpora/asn1parse/c8328e45aedab00fb505816c0f6c775729dde9d5
+index 0000000..384154f
+Binary files /dev/null and b/fuzz/corpora/bignum/611f1a128c646c2c2e213b84fadbeac33fa45147 differ
+diff --git a/fuzz/corpora/bignum/61a54b22dd1ae460f3411550df7aebc33023dc41 b/fuzz/corpora/bignum/61a54b22dd1ae460f3411550df7aebc33023dc41
 new file mode 100644
-index 000000000000..7bc25ed84e5a
-Binary files /dev/null and b/fuzz/corpora/asn1parse/c8328e45aedab00fb505816c0f6c775729dde9d5 differ
-diff --git a/fuzz/corpora/asn1parse/cfdcdf80a2f593f75b9bc4c414d28fba3c774df8 b/fuzz/corpora/asn1parse/cfdcdf80a2f593f75b9bc4c414d28fba3c774df8
+index 0000000..86abf0b
+Binary files /dev/null and b/fuzz/corpora/bignum/61a54b22dd1ae460f3411550df7aebc33023dc41 differ
+diff --git a/fuzz/corpora/bignum/624a5257b280a1e15967cbd3a24fb040589bae6f b/fuzz/corpora/bignum/624a5257b280a1e15967cbd3a24fb040589bae6f
 new file mode 100644
-index 000000000000..0c70da3d851f
-Binary files /dev/null and b/fuzz/corpora/asn1parse/cfdcdf80a2f593f75b9bc4c414d28fba3c774df8 differ
-diff --git a/fuzz/corpora/asn1parse/d269930e8de364eebdbb7c9902bdeb4592b71dc8 b/fuzz/corpora/asn1parse/d269930e8de364eebdbb7c9902bdeb4592b71dc8
+index 0000000..96e79ca
+Binary files /dev/null and b/fuzz/corpora/bignum/624a5257b280a1e15967cbd3a24fb040589bae6f differ
+diff --git a/fuzz/corpora/bignum/62511d1631b3583e6546e8d984e228fe85a2142f b/fuzz/corpora/bignum/62511d1631b3583e6546e8d984e228fe85a2142f
 new file mode 100644
-index 000000000000..112e7f1bd4fb
-Binary files /dev/null and b/fuzz/corpora/asn1parse/d269930e8de364eebdbb7c9902bdeb4592b71dc8 differ
-diff --git a/fuzz/corpora/asn1parse/d2eb6aba36a03e260a3212b0a5e2d7ff18d8c60e b/fuzz/corpora/asn1parse/d2eb6aba36a03e260a3212b0a5e2d7ff18d8c60e
+index 0000000..7db1b87
+Binary files /dev/null and b/fuzz/corpora/bignum/62511d1631b3583e6546e8d984e228fe85a2142f differ
+diff --git a/fuzz/corpora/bignum/62771bc7860130002679ca1e900200bcfeb6a6b6 b/fuzz/corpora/bignum/62771bc7860130002679ca1e900200bcfeb6a6b6
 new file mode 100644
-index 000000000000..1698e156ce8f
-Binary files /dev/null and b/fuzz/corpora/asn1parse/d2eb6aba36a03e260a3212b0a5e2d7ff18d8c60e differ
-diff --git a/fuzz/corpora/asn1parse/d6608a5b02a121c81e6f908debb82021011c15f2 b/fuzz/corpora/asn1parse/d6608a5b02a121c81e6f908debb82021011c15f2
+index 0000000..364c3f0
+Binary files /dev/null and b/fuzz/corpora/bignum/62771bc7860130002679ca1e900200bcfeb6a6b6 differ
+diff --git a/fuzz/corpora/bignum/62ef9b2ff19cb07a5df2fbb2204a3a46a287ebc0 b/fuzz/corpora/bignum/62ef9b2ff19cb07a5df2fbb2204a3a46a287ebc0
 new file mode 100644
-index 000000000000..ea4926872a2f
-Binary files /dev/null and b/fuzz/corpora/asn1parse/d6608a5b02a121c81e6f908debb82021011c15f2 differ
-diff --git a/fuzz/corpora/asn1parse/d7be2fb1893bacdc83329632b9bc3c419475c3eb b/fuzz/corpora/asn1parse/d7be2fb1893bacdc83329632b9bc3c419475c3eb
+index 0000000..b5cc9a6
+Binary files /dev/null and b/fuzz/corpora/bignum/62ef9b2ff19cb07a5df2fbb2204a3a46a287ebc0 differ
+diff --git a/fuzz/corpora/bignum/636212dbe310b2a18c48c8c46da399d2d0099749 b/fuzz/corpora/bignum/636212dbe310b2a18c48c8c46da399d2d0099749
 new file mode 100644
-index 000000000000..aa5b3221f022
-Binary files /dev/null and b/fuzz/corpora/asn1parse/d7be2fb1893bacdc83329632b9bc3c419475c3eb differ
-diff --git a/fuzz/corpora/asn1parse/d9827d651c051edec680de71f86758be95d6b635 b/fuzz/corpora/asn1parse/d9827d651c051edec680de71f86758be95d6b635
+index 0000000..5903775
+Binary files /dev/null and b/fuzz/corpora/bignum/636212dbe310b2a18c48c8c46da399d2d0099749 differ
+diff --git a/fuzz/corpora/bignum/642b27b3fe5f194405dadb10ab1c381f0f7d2bf9 b/fuzz/corpora/bignum/642b27b3fe5f194405dadb10ab1c381f0f7d2bf9
 new file mode 100644
-index 000000000000..e78039ae019c
-Binary files /dev/null and b/fuzz/corpora/asn1parse/d9827d651c051edec680de71f86758be95d6b635 differ
-diff --git a/fuzz/corpora/asn1parse/dcf1078aef8974a4048cbedaed33b9f271c8a1a4 b/fuzz/corpora/asn1parse/dcf1078aef8974a4048cbedaed33b9f271c8a1a4
+index 0000000..3e74509
+Binary files /dev/null and b/fuzz/corpora/bignum/642b27b3fe5f194405dadb10ab1c381f0f7d2bf9 differ
+diff --git a/fuzz/corpora/bignum/644eb8e6734899411e0deb6926132f04dec542aa b/fuzz/corpora/bignum/644eb8e6734899411e0deb6926132f04dec542aa
 new file mode 100644
-index 000000000000..a7478b177551
-Binary files /dev/null and b/fuzz/corpora/asn1parse/dcf1078aef8974a4048cbedaed33b9f271c8a1a4 differ
-diff --git a/fuzz/corpora/asn1parse/ddde4dfd8ed7358c2a148fabf6f46864547afed8 b/fuzz/corpora/asn1parse/ddde4dfd8ed7358c2a148fabf6f46864547afed8
+index 0000000..861b1d1
+Binary files /dev/null and b/fuzz/corpora/bignum/644eb8e6734899411e0deb6926132f04dec542aa differ
+diff --git a/fuzz/corpora/bignum/66e69dce55bd1e83ecb190305f5d3adb6a203f4b b/fuzz/corpora/bignum/66e69dce55bd1e83ecb190305f5d3adb6a203f4b
 new file mode 100644
-index 000000000000..c5558043f6e2
-Binary files /dev/null and b/fuzz/corpora/asn1parse/ddde4dfd8ed7358c2a148fabf6f46864547afed8 differ
-diff --git a/fuzz/corpora/asn1parse/e1d6421a6d841cc640fbb39db3274b9eff34c8bb b/fuzz/corpora/asn1parse/e1d6421a6d841cc640fbb39db3274b9eff34c8bb
+index 0000000..0d0f657
+Binary files /dev/null and b/fuzz/corpora/bignum/66e69dce55bd1e83ecb190305f5d3adb6a203f4b differ
+diff --git a/fuzz/corpora/bignum/67f5b3b4bb7bb43860929b0130ffc6e302f2c4d0 b/fuzz/corpora/bignum/67f5b3b4bb7bb43860929b0130ffc6e302f2c4d0
 new file mode 100644
-index 000000000000..ab331b8c2ac3
-Binary files /dev/null and b/fuzz/corpora/asn1parse/e1d6421a6d841cc640fbb39db3274b9eff34c8bb differ
-diff --git a/fuzz/corpora/asn1parse/e615944d4554e9f12fdfd06f31ceab358cc24a22 b/fuzz/corpora/asn1parse/e615944d4554e9f12fdfd06f31ceab358cc24a22
+index 0000000..b6d081c
+Binary files /dev/null and b/fuzz/corpora/bignum/67f5b3b4bb7bb43860929b0130ffc6e302f2c4d0 differ
+diff --git a/fuzz/corpora/bignum/6a1c154b967390fafe327505baaad7f88f75be54 b/fuzz/corpora/bignum/6a1c154b967390fafe327505baaad7f88f75be54
 new file mode 100644
-index 000000000000..8110f38fe56e
-Binary files /dev/null and b/fuzz/corpora/asn1parse/e615944d4554e9f12fdfd06f31ceab358cc24a22 differ
-diff --git a/fuzz/corpora/asn1parse/e7005ac5388e8212f152dfed2ccc1d348a711555 b/fuzz/corpora/asn1parse/e7005ac5388e8212f152dfed2ccc1d348a711555
+index 0000000..35d7249
+Binary files /dev/null and b/fuzz/corpora/bignum/6a1c154b967390fafe327505baaad7f88f75be54 differ
+diff --git a/fuzz/corpora/bignum/6a33c7883703c9277853b13cf671caac6074f518 b/fuzz/corpora/bignum/6a33c7883703c9277853b13cf671caac6074f518
 new file mode 100644
-index 000000000000..f84a85346abb
-Binary files /dev/null and b/fuzz/corpora/asn1parse/e7005ac5388e8212f152dfed2ccc1d348a711555 differ
-diff --git a/fuzz/corpora/asn1parse/eaa003719644c1893f25bd20d3cd4386e534a84f b/fuzz/corpora/asn1parse/eaa003719644c1893f25bd20d3cd4386e534a84f
+index 0000000..e92285f
+Binary files /dev/null and b/fuzz/corpora/bignum/6a33c7883703c9277853b13cf671caac6074f518 differ
+diff --git a/fuzz/corpora/bignum/6ae189bad64a248d0cdaa458ea376f61770baf07 b/fuzz/corpora/bignum/6ae189bad64a248d0cdaa458ea376f61770baf07
 new file mode 100644
-index 000000000000..a7138715d2ce
-Binary files /dev/null and b/fuzz/corpora/asn1parse/eaa003719644c1893f25bd20d3cd4386e534a84f differ
-diff --git a/fuzz/corpora/asn1parse/ec929c4a8931f0e56e7f39e6c359475a7c758679 b/fuzz/corpora/asn1parse/ec929c4a8931f0e56e7f39e6c359475a7c758679
+index 0000000..dac5f90
+Binary files /dev/null and b/fuzz/corpora/bignum/6ae189bad64a248d0cdaa458ea376f61770baf07 differ
+diff --git a/fuzz/corpora/bignum/6bab15cf7131af8e9d8a18f60891ff427f95eb17 b/fuzz/corpora/bignum/6bab15cf7131af8e9d8a18f60891ff427f95eb17
 new file mode 100644
-index 000000000000..f1b0ccb51200
-Binary files /dev/null and b/fuzz/corpora/asn1parse/ec929c4a8931f0e56e7f39e6c359475a7c758679 differ
-diff --git a/fuzz/corpora/asn1parse/efc35b21a2a7587e3f6f9a77f167e7e5b827ed71 b/fuzz/corpora/asn1parse/efc35b21a2a7587e3f6f9a77f167e7e5b827ed71
+index 0000000..74fd721
+Binary files /dev/null and b/fuzz/corpora/bignum/6bab15cf7131af8e9d8a18f60891ff427f95eb17 differ
+diff --git a/fuzz/corpora/bignum/6cc9c5e3f44c96e7b9c5929a2557ae0f5c908bc3 b/fuzz/corpora/bignum/6cc9c5e3f44c96e7b9c5929a2557ae0f5c908bc3
 new file mode 100644
-index 000000000000..8479b2530ea4
-Binary files /dev/null and b/fuzz/corpora/asn1parse/efc35b21a2a7587e3f6f9a77f167e7e5b827ed71 differ
-diff --git a/fuzz/corpora/asn1parse/f195c020a28dfc5f2fb6af256b524ddcd93756ed b/fuzz/corpora/asn1parse/f195c020a28dfc5f2fb6af256b524ddcd93756ed
+index 0000000..c1b1203
+Binary files /dev/null and b/fuzz/corpora/bignum/6cc9c5e3f44c96e7b9c5929a2557ae0f5c908bc3 differ
+diff --git a/fuzz/corpora/bignum/6d2fb2f7d1b1945232ac3e02190936fab36634f1 b/fuzz/corpora/bignum/6d2fb2f7d1b1945232ac3e02190936fab36634f1
 new file mode 100644
-index 000000000000..b1d81e79354c
-Binary files /dev/null and b/fuzz/corpora/asn1parse/f195c020a28dfc5f2fb6af256b524ddcd93756ed differ
-diff --git a/fuzz/corpora/asn1parse/f46e628ba2a0c6aa20f63b991305c2b28a699f07 b/fuzz/corpora/asn1parse/f46e628ba2a0c6aa20f63b991305c2b28a699f07
+index 0000000..914c2af
+Binary files /dev/null and b/fuzz/corpora/bignum/6d2fb2f7d1b1945232ac3e02190936fab36634f1 differ
+diff --git a/fuzz/corpora/bignum/6dab0a0bfb136e26f61c29940c12a5a9dd61a64c b/fuzz/corpora/bignum/6dab0a0bfb136e26f61c29940c12a5a9dd61a64c
 new file mode 100644
-index 000000000000..3bfbb18a7de7
-Binary files /dev/null and b/fuzz/corpora/asn1parse/f46e628ba2a0c6aa20f63b991305c2b28a699f07 differ
-diff --git a/fuzz/corpora/asn1parse/f4e6841dcaca0354f22895fbbc5ee12c0880948a b/fuzz/corpora/asn1parse/f4e6841dcaca0354f22895fbbc5ee12c0880948a
+index 0000000..eb5afe4
+Binary files /dev/null and b/fuzz/corpora/bignum/6dab0a0bfb136e26f61c29940c12a5a9dd61a64c differ
+diff --git a/fuzz/corpora/bignum/6ede9a631d07a81e2cb6b89e85690e9ba3d8ef2e b/fuzz/corpora/bignum/6ede9a631d07a81e2cb6b89e85690e9ba3d8ef2e
 new file mode 100644
-index 000000000000..43415f4a35b1
-Binary files /dev/null and b/fuzz/corpora/asn1parse/f4e6841dcaca0354f22895fbbc5ee12c0880948a differ
-diff --git a/fuzz/corpora/asn1parse/f86aa454cf580728b8040bdbf7ab50612599ea9f b/fuzz/corpora/asn1parse/f86aa454cf580728b8040bdbf7ab50612599ea9f
+index 0000000..da92424
+Binary files /dev/null and b/fuzz/corpora/bignum/6ede9a631d07a81e2cb6b89e85690e9ba3d8ef2e differ
+diff --git a/fuzz/corpora/bignum/7006b9ee1d820603eb6a3b6e950efda465d4597c b/fuzz/corpora/bignum/7006b9ee1d820603eb6a3b6e950efda465d4597c
 new file mode 100644
-index 000000000000..89baf2a1661b
-Binary files /dev/null and b/fuzz/corpora/asn1parse/f86aa454cf580728b8040bdbf7ab50612599ea9f differ
-diff --git a/fuzz/corpora/asn1parse/fb1f4388dbab935a9b62bef9c3b76b5fc4074537 b/fuzz/corpora/asn1parse/fb1f4388dbab935a9b62bef9c3b76b5fc4074537
+index 0000000..db8a445
+Binary files /dev/null and b/fuzz/corpora/bignum/7006b9ee1d820603eb6a3b6e950efda465d4597c differ
+diff --git a/fuzz/corpora/bignum/701843327f24e08a36b21dd5cab28f46e9578527 b/fuzz/corpora/bignum/701843327f24e08a36b21dd5cab28f46e9578527
 new file mode 100644
-index 000000000000..b40d11c1460d
-Binary files /dev/null and b/fuzz/corpora/asn1parse/fb1f4388dbab935a9b62bef9c3b76b5fc4074537 differ
-diff --git a/fuzz/corpora/asn1parse/fef17ab1380b25a7266a32588ec04779cff2e081 b/fuzz/corpora/asn1parse/fef17ab1380b25a7266a32588ec04779cff2e081
+index 0000000..e567451
+Binary files /dev/null and b/fuzz/corpora/bignum/701843327f24e08a36b21dd5cab28f46e9578527 differ
+diff --git a/fuzz/corpora/bignum/70713a43e88a51e0312ac282b4c4baecde10780f b/fuzz/corpora/bignum/70713a43e88a51e0312ac282b4c4baecde10780f
 new file mode 100644
-index 000000000000..4f8c5e9faa51
-Binary files /dev/null and b/fuzz/corpora/asn1parse/fef17ab1380b25a7266a32588ec04779cff2e081 differ
-diff --git a/fuzz/corpora/bignum/0728713e8df5f3960d98461361fb03c2bd3b756c b/fuzz/corpora/bignum/0728713e8df5f3960d98461361fb03c2bd3b756c
+index 0000000..134e5d7
+Binary files /dev/null and b/fuzz/corpora/bignum/70713a43e88a51e0312ac282b4c4baecde10780f differ
+diff --git a/fuzz/corpora/bignum/723c5a448aed95b9b56565845fc325ea42c9c23b b/fuzz/corpora/bignum/723c5a448aed95b9b56565845fc325ea42c9c23b
 new file mode 100644
-index 000000000000..0de8c4de3ef9
-Binary files /dev/null and b/fuzz/corpora/bignum/0728713e8df5f3960d98461361fb03c2bd3b756c differ
-diff --git a/fuzz/corpora/bignum/0f1cf91268ea81dc15ef7cbf4fa9b506950913e5 b/fuzz/corpora/bignum/0f1cf91268ea81dc15ef7cbf4fa9b506950913e5
+index 0000000..a87f993
+Binary files /dev/null and b/fuzz/corpora/bignum/723c5a448aed95b9b56565845fc325ea42c9c23b differ
+diff --git a/fuzz/corpora/bignum/73fd5ba4981316eef8f940845cebb4019c52dbdc b/fuzz/corpora/bignum/73fd5ba4981316eef8f940845cebb4019c52dbdc
 new file mode 100644
-index 000000000000..84b978435f8f
-Binary files /dev/null and b/fuzz/corpora/bignum/0f1cf91268ea81dc15ef7cbf4fa9b506950913e5 differ
-diff --git a/fuzz/corpora/bignum/177faa33471e0c4089d63bb5f759519d943977c6 b/fuzz/corpora/bignum/177faa33471e0c4089d63bb5f759519d943977c6
+index 0000000..12f4865
+Binary files /dev/null and b/fuzz/corpora/bignum/73fd5ba4981316eef8f940845cebb4019c52dbdc differ
+diff --git a/fuzz/corpora/bignum/7468def26d7e78b89e72998dfe9ea560559ec0b9 b/fuzz/corpora/bignum/7468def26d7e78b89e72998dfe9ea560559ec0b9
 new file mode 100644
-index 000000000000..7327ab44eb91
-Binary files /dev/null and b/fuzz/corpora/bignum/177faa33471e0c4089d63bb5f759519d943977c6 differ
-diff --git a/fuzz/corpora/bignum/1a1aa39a93522b16639db02bcfbb0a9a96fa6820 b/fuzz/corpora/bignum/1a1aa39a93522b16639db02bcfbb0a9a96fa6820
+index 0000000..7174234
+Binary files /dev/null and b/fuzz/corpora/bignum/7468def26d7e78b89e72998dfe9ea560559ec0b9 differ
+diff --git a/fuzz/corpora/bignum/75ff386887b24eb337eafee926103fe30caccbd5 b/fuzz/corpora/bignum/75ff386887b24eb337eafee926103fe30caccbd5
 new file mode 100644
-index 000000000000..1d98c50b6764
-Binary files /dev/null and b/fuzz/corpora/bignum/1a1aa39a93522b16639db02bcfbb0a9a96fa6820 differ
-diff --git a/fuzz/corpora/bignum/1d834830fe33eb7299f5294a839b23b761c683e9 b/fuzz/corpora/bignum/1d834830fe33eb7299f5294a839b23b761c683e9
+index 0000000..6e2a280
+Binary files /dev/null and b/fuzz/corpora/bignum/75ff386887b24eb337eafee926103fe30caccbd5 differ
+diff --git a/fuzz/corpora/bignum/7601a914b8aaa54cc03cfdc4c53571d7fce2ea1c b/fuzz/corpora/bignum/7601a914b8aaa54cc03cfdc4c53571d7fce2ea1c
 new file mode 100644
-index 000000000000..2d5c61e1bf8b
-Binary files /dev/null and b/fuzz/corpora/bignum/1d834830fe33eb7299f5294a839b23b761c683e9 differ
-diff --git a/fuzz/corpora/bignum/1e9b8cc6c10208adec5a96bb59f5888bfa8dbc5e b/fuzz/corpora/bignum/1e9b8cc6c10208adec5a96bb59f5888bfa8dbc5e
+index 0000000..b6e0d59
+Binary files /dev/null and b/fuzz/corpora/bignum/7601a914b8aaa54cc03cfdc4c53571d7fce2ea1c differ
+diff --git a/fuzz/corpora/bignum/77f3dc7df7ed04a5aa80a133caa12b6d938e7e08 b/fuzz/corpora/bignum/77f3dc7df7ed04a5aa80a133caa12b6d938e7e08
 new file mode 100644
-index 000000000000..0af41716bb8e
-Binary files /dev/null and b/fuzz/corpora/bignum/1e9b8cc6c10208adec5a96bb59f5888bfa8dbc5e differ
-diff --git a/fuzz/corpora/bignum/2705b5aa99394f9a2a4b400f381a2a20302f2a8b b/fuzz/corpora/bignum/2705b5aa99394f9a2a4b400f381a2a20302f2a8b
+index 0000000..0dc9fa6
+Binary files /dev/null and b/fuzz/corpora/bignum/77f3dc7df7ed04a5aa80a133caa12b6d938e7e08 differ
+diff --git a/fuzz/corpora/bignum/79338d11e647d9135518913e6adae90b2e72b8b8 b/fuzz/corpora/bignum/79338d11e647d9135518913e6adae90b2e72b8b8
 new file mode 100644
-index 000000000000..0d80270eff96
-Binary files /dev/null and b/fuzz/corpora/bignum/2705b5aa99394f9a2a4b400f381a2a20302f2a8b differ
-diff --git a/fuzz/corpora/bignum/285330c31558db5d8615f726fcc91cfaa80b6979 b/fuzz/corpora/bignum/285330c31558db5d8615f726fcc91cfaa80b6979
+index 0000000..03cf635
+Binary files /dev/null and b/fuzz/corpora/bignum/79338d11e647d9135518913e6adae90b2e72b8b8 differ
+diff --git a/fuzz/corpora/bignum/79c1b5f71a06600e64e5818bcb8f3e41b18e5321 b/fuzz/corpora/bignum/79c1b5f71a06600e64e5818bcb8f3e41b18e5321
 new file mode 100644
-index 000000000000..44bcead72d03
-Binary files /dev/null and b/fuzz/corpora/bignum/285330c31558db5d8615f726fcc91cfaa80b6979 differ
-diff --git a/fuzz/corpora/bignum/28729becd86d4dc9678d9201328ab440d100a00f b/fuzz/corpora/bignum/28729becd86d4dc9678d9201328ab440d100a00f
+index 0000000..a47817b
+Binary files /dev/null and b/fuzz/corpora/bignum/79c1b5f71a06600e64e5818bcb8f3e41b18e5321 differ
+diff --git a/fuzz/corpora/bignum/79e9cb4a8dad5fb14c851f8d41f1db9b5f938e00 b/fuzz/corpora/bignum/79e9cb4a8dad5fb14c851f8d41f1db9b5f938e00
 new file mode 100644
-index 000000000000..1ea41354914b
-Binary files /dev/null and b/fuzz/corpora/bignum/28729becd86d4dc9678d9201328ab440d100a00f differ
-diff --git a/fuzz/corpora/bignum/2927e1adfc42f99c05d689be487d43b2ea8f47f8 b/fuzz/corpora/bignum/2927e1adfc42f99c05d689be487d43b2ea8f47f8
+index 0000000..b36ae23
+Binary files /dev/null and b/fuzz/corpora/bignum/79e9cb4a8dad5fb14c851f8d41f1db9b5f938e00 differ
+diff --git a/fuzz/corpora/bignum/7a6353d83ccf1a4b5177d3c19f4fa1ef546081a7 b/fuzz/corpora/bignum/7a6353d83ccf1a4b5177d3c19f4fa1ef546081a7
 new file mode 100644
-index 000000000000..07e2df52cb92
-Binary files /dev/null and b/fuzz/corpora/bignum/2927e1adfc42f99c05d689be487d43b2ea8f47f8 differ
-diff --git a/fuzz/corpora/bignum/2f3272446cfb30d253bed48668a98ada167e67e9 b/fuzz/corpora/bignum/2f3272446cfb30d253bed48668a98ada167e67e9
+index 0000000..4772156
+Binary files /dev/null and b/fuzz/corpora/bignum/7a6353d83ccf1a4b5177d3c19f4fa1ef546081a7 differ
+diff --git a/fuzz/corpora/bignum/7ad115b225db1ff25f03e764eb86b20dcac23916 b/fuzz/corpora/bignum/7ad115b225db1ff25f03e764eb86b20dcac23916
 new file mode 100644
-index 000000000000..177424007239
-Binary files /dev/null and b/fuzz/corpora/bignum/2f3272446cfb30d253bed48668a98ada167e67e9 differ
-diff --git a/fuzz/corpora/bignum/309c35d23ea9b08586c34721f26d62366de7828b b/fuzz/corpora/bignum/309c35d23ea9b08586c34721f26d62366de7828b
+index 0000000..aebf398
+Binary files /dev/null and b/fuzz/corpora/bignum/7ad115b225db1ff25f03e764eb86b20dcac23916 differ
+diff --git a/fuzz/corpora/bignum/7ae93a888eb402e838a518a7c8ad8bafc6a698ce b/fuzz/corpora/bignum/7ae93a888eb402e838a518a7c8ad8bafc6a698ce
 new file mode 100644
-index 000000000000..8796b6d7477e
-Binary files /dev/null and b/fuzz/corpora/bignum/309c35d23ea9b08586c34721f26d62366de7828b differ
-diff --git a/fuzz/corpora/bignum/3145ed7854e27c3ae6487315053042a706b49d9b b/fuzz/corpora/bignum/3145ed7854e27c3ae6487315053042a706b49d9b
+index 0000000..58bc8b7
+Binary files /dev/null and b/fuzz/corpora/bignum/7ae93a888eb402e838a518a7c8ad8bafc6a698ce differ
+diff --git a/fuzz/corpora/bignum/7b487c78ea8b6c6c892652a932016a6f0d784c07 b/fuzz/corpora/bignum/7b487c78ea8b6c6c892652a932016a6f0d784c07
 new file mode 100644
-index 000000000000..c649d4a38a01
-Binary files /dev/null and b/fuzz/corpora/bignum/3145ed7854e27c3ae6487315053042a706b49d9b differ
-diff --git a/fuzz/corpora/bignum/35b67347bd2acfa9e5e0a5479d36c5e510f4be44 b/fuzz/corpora/bignum/35b67347bd2acfa9e5e0a5479d36c5e510f4be44
+index 0000000..e4484db
+Binary files /dev/null and b/fuzz/corpora/bignum/7b487c78ea8b6c6c892652a932016a6f0d784c07 differ
+diff --git a/fuzz/corpora/bignum/7b9ccfe541cd7e9280826b28f56d3954c13979dd b/fuzz/corpora/bignum/7b9ccfe541cd7e9280826b28f56d3954c13979dd
 new file mode 100644
-index 000000000000..e322b2e3e725
-Binary files /dev/null and b/fuzz/corpora/bignum/35b67347bd2acfa9e5e0a5479d36c5e510f4be44 differ
-diff --git a/fuzz/corpora/bignum/38bb89caf64e38125ed0f8d9ea86ac5ade6dfcd8 b/fuzz/corpora/bignum/38bb89caf64e38125ed0f8d9ea86ac5ade6dfcd8
+index 0000000..25407e3
+Binary files /dev/null and b/fuzz/corpora/bignum/7b9ccfe541cd7e9280826b28f56d3954c13979dd differ
+diff --git a/fuzz/corpora/bignum/7bc24baf5a8d936d44c13324c39848be10c4ac3c b/fuzz/corpora/bignum/7bc24baf5a8d936d44c13324c39848be10c4ac3c
 new file mode 100644
-index 000000000000..9ed54f84b8df
-Binary files /dev/null and b/fuzz/corpora/bignum/38bb89caf64e38125ed0f8d9ea86ac5ade6dfcd8 differ
-diff --git a/fuzz/corpora/bignum/3a2d683cd6dbdd214208918c98816c137dadaee8 b/fuzz/corpora/bignum/3a2d683cd6dbdd214208918c98816c137dadaee8
+index 0000000..1b98c9a
+Binary files /dev/null and b/fuzz/corpora/bignum/7bc24baf5a8d936d44c13324c39848be10c4ac3c differ
+diff --git a/fuzz/corpora/bignum/7c3beca641873ef96f71ec644f0021786b49d256 b/fuzz/corpora/bignum/7c3beca641873ef96f71ec644f0021786b49d256
 new file mode 100644
-index 000000000000..10660ce0498e
-Binary files /dev/null and b/fuzz/corpora/bignum/3a2d683cd6dbdd214208918c98816c137dadaee8 differ
-diff --git a/fuzz/corpora/bignum/4f925d76f15adfca36184a6f24d5420a3b9589fb b/fuzz/corpora/bignum/4f925d76f15adfca36184a6f24d5420a3b9589fb
+index 0000000..51c31f6
+Binary files /dev/null and b/fuzz/corpora/bignum/7c3beca641873ef96f71ec644f0021786b49d256 differ
+diff --git a/fuzz/corpora/bignum/7cd314ab0309529759dbf02c09cc0e7265c0dfe5 b/fuzz/corpora/bignum/7cd314ab0309529759dbf02c09cc0e7265c0dfe5
 new file mode 100644
-index 000000000000..7365416fe522
-Binary files /dev/null and b/fuzz/corpora/bignum/4f925d76f15adfca36184a6f24d5420a3b9589fb differ
-diff --git a/fuzz/corpora/bignum/534dabcc73b8ae2bf696eb9b51dee07539a58400 b/fuzz/corpora/bignum/534dabcc73b8ae2bf696eb9b51dee07539a58400
+index 0000000..3712cd7
+Binary files /dev/null and b/fuzz/corpora/bignum/7cd314ab0309529759dbf02c09cc0e7265c0dfe5 differ
+diff --git a/fuzz/corpora/bignum/7ebbd74d8de2c419a3a9df61812d91e22b4a3585 b/fuzz/corpora/bignum/7ebbd74d8de2c419a3a9df61812d91e22b4a3585
 new file mode 100644
-index 000000000000..62622ce9bdfd
-Binary files /dev/null and b/fuzz/corpora/bignum/534dabcc73b8ae2bf696eb9b51dee07539a58400 differ
-diff --git a/fuzz/corpora/bignum/5495e1f09d4809e1f99cc85aad55c6474a02f90c b/fuzz/corpora/bignum/5495e1f09d4809e1f99cc85aad55c6474a02f90c
+index 0000000..563f7d7
+Binary files /dev/null and b/fuzz/corpora/bignum/7ebbd74d8de2c419a3a9df61812d91e22b4a3585 differ
+diff --git a/fuzz/corpora/bignum/7ff2381e7c66501b11b3814fbe949ea348e99dab b/fuzz/corpora/bignum/7ff2381e7c66501b11b3814fbe949ea348e99dab
 new file mode 100644
-index 000000000000..8246a5de15f5
-Binary files /dev/null and b/fuzz/corpora/bignum/5495e1f09d4809e1f99cc85aad55c6474a02f90c differ
-diff --git a/fuzz/corpora/bignum/57b0e3125c85ae25b685e8905e2acd7039c435ea b/fuzz/corpora/bignum/57b0e3125c85ae25b685e8905e2acd7039c435ea
+index 0000000..f420ffa
+Binary files /dev/null and b/fuzz/corpora/bignum/7ff2381e7c66501b11b3814fbe949ea348e99dab differ
+diff --git a/fuzz/corpora/bignum/80872fe8e270e307b02bf7913b515e5b11919fde b/fuzz/corpora/bignum/80872fe8e270e307b02bf7913b515e5b11919fde
 new file mode 100644
-index 000000000000..c0af85f05267
-Binary files /dev/null and b/fuzz/corpora/bignum/57b0e3125c85ae25b685e8905e2acd7039c435ea differ
-diff --git a/fuzz/corpora/bignum/5811287cc6937704afee6761957b2cf0b6196bfa b/fuzz/corpora/bignum/5811287cc6937704afee6761957b2cf0b6196bfa
+index 0000000..0bf369a
+Binary files /dev/null and b/fuzz/corpora/bignum/80872fe8e270e307b02bf7913b515e5b11919fde differ
+diff --git a/fuzz/corpora/bignum/809f209a4f4e109e5d6b1ab7c8ed493eac03d096 b/fuzz/corpora/bignum/809f209a4f4e109e5d6b1ab7c8ed493eac03d096
 new file mode 100644
-index 000000000000..0f41b62f312e
-Binary files /dev/null and b/fuzz/corpora/bignum/5811287cc6937704afee6761957b2cf0b6196bfa differ
-diff --git a/fuzz/corpora/bignum/5d345fc6db6471637eca18aef128da61c02efc66 b/fuzz/corpora/bignum/5d345fc6db6471637eca18aef128da61c02efc66
+index 0000000..1425c57
+Binary files /dev/null and b/fuzz/corpora/bignum/809f209a4f4e109e5d6b1ab7c8ed493eac03d096 differ
+diff --git a/fuzz/corpora/bignum/81437bccf27af0a8ab0d6af02260956b105bfc63 b/fuzz/corpora/bignum/81437bccf27af0a8ab0d6af02260956b105bfc63
 new file mode 100644
-index 000000000000..d967c9e735f5
-Binary files /dev/null and b/fuzz/corpora/bignum/5d345fc6db6471637eca18aef128da61c02efc66 differ
-diff --git a/fuzz/corpora/bignum/5dcfdc0addb7edcf3c5b162a516b0c1cfa421e8b b/fuzz/corpora/bignum/5dcfdc0addb7edcf3c5b162a516b0c1cfa421e8b
+index 0000000..a7a3c42
+Binary files /dev/null and b/fuzz/corpora/bignum/81437bccf27af0a8ab0d6af02260956b105bfc63 differ
+diff --git a/fuzz/corpora/bignum/81e4e34139e367231e7c4017d70ec4daa6e566ba b/fuzz/corpora/bignum/81e4e34139e367231e7c4017d70ec4daa6e566ba
 new file mode 100644
-index 000000000000..1bec4c5d8a99
-Binary files /dev/null and b/fuzz/corpora/bignum/5dcfdc0addb7edcf3c5b162a516b0c1cfa421e8b differ
-diff --git a/fuzz/corpora/bignum/6386e32b2d2b5696a8f7434a050ebe9b344af664 b/fuzz/corpora/bignum/6386e32b2d2b5696a8f7434a050ebe9b344af664
+index 0000000..8e5a3c6
+Binary files /dev/null and b/fuzz/corpora/bignum/81e4e34139e367231e7c4017d70ec4daa6e566ba differ
+diff --git a/fuzz/corpora/bignum/8343e2e7acad75e615d9411eb6f20de595ffe0fb b/fuzz/corpora/bignum/8343e2e7acad75e615d9411eb6f20de595ffe0fb
 new file mode 100644
-index 000000000000..044a75d69540
-Binary files /dev/null and b/fuzz/corpora/bignum/6386e32b2d2b5696a8f7434a050ebe9b344af664 differ
-diff --git a/fuzz/corpora/bignum/65d589dc8186f86eeb6e33fa3eb0a96f6d13d7f7 b/fuzz/corpora/bignum/65d589dc8186f86eeb6e33fa3eb0a96f6d13d7f7
+index 0000000..4248e2a
+Binary files /dev/null and b/fuzz/corpora/bignum/8343e2e7acad75e615d9411eb6f20de595ffe0fb differ
+diff --git a/fuzz/corpora/bignum/846edaa19ffe7a1e55e9ebb29c2a4c29486359dd b/fuzz/corpora/bignum/846edaa19ffe7a1e55e9ebb29c2a4c29486359dd
 new file mode 100644
-index 000000000000..17232f33540c
-Binary files /dev/null and b/fuzz/corpora/bignum/65d589dc8186f86eeb6e33fa3eb0a96f6d13d7f7 differ
-diff --git a/fuzz/corpora/bignum/6a091b0c55cb40e226fba1dda032990560718ec6 b/fuzz/corpora/bignum/6a091b0c55cb40e226fba1dda032990560718ec6
+index 0000000..47ac2bf
+Binary files /dev/null and b/fuzz/corpora/bignum/846edaa19ffe7a1e55e9ebb29c2a4c29486359dd differ
+diff --git a/fuzz/corpora/bignum/850e7dc85f587658838bade1a5792a32df4f0f7f b/fuzz/corpora/bignum/850e7dc85f587658838bade1a5792a32df4f0f7f
 new file mode 100644
-index 000000000000..ad76e64c0942
-Binary files /dev/null and b/fuzz/corpora/bignum/6a091b0c55cb40e226fba1dda032990560718ec6 differ
-diff --git a/fuzz/corpora/bignum/6e247c64e26a01c619c0956b3f3ba7184c7832af b/fuzz/corpora/bignum/6e247c64e26a01c619c0956b3f3ba7184c7832af
+index 0000000..1ced029
+Binary files /dev/null and b/fuzz/corpora/bignum/850e7dc85f587658838bade1a5792a32df4f0f7f differ
+diff --git a/fuzz/corpora/bignum/850fd0a46819cbe65d9a1d26d7663bde2ef5423b b/fuzz/corpora/bignum/850fd0a46819cbe65d9a1d26d7663bde2ef5423b
 new file mode 100644
-index 000000000000..4cdd2f632778
-Binary files /dev/null and b/fuzz/corpora/bignum/6e247c64e26a01c619c0956b3f3ba7184c7832af differ
-diff --git a/fuzz/corpora/bignum/765bb2b65eabdb73a20740a8a164a3501914094b b/fuzz/corpora/bignum/765bb2b65eabdb73a20740a8a164a3501914094b
+index 0000000..684d600
+Binary files /dev/null and b/fuzz/corpora/bignum/850fd0a46819cbe65d9a1d26d7663bde2ef5423b differ
+diff --git a/fuzz/corpora/bignum/8564e156f7608f3eee7bc9f4a682c0095fbed947 b/fuzz/corpora/bignum/8564e156f7608f3eee7bc9f4a682c0095fbed947
 new file mode 100644
-index 000000000000..0db52b158ad8
-Binary files /dev/null and b/fuzz/corpora/bignum/765bb2b65eabdb73a20740a8a164a3501914094b differ
-diff --git a/fuzz/corpora/bignum/84d2f75f0be2a8e7eb7213087c21ad668b8de89f b/fuzz/corpora/bignum/84d2f75f0be2a8e7eb7213087c21ad668b8de89f
+index 0000000..ea9226c
+Binary files /dev/null and b/fuzz/corpora/bignum/8564e156f7608f3eee7bc9f4a682c0095fbed947 differ
+diff --git a/fuzz/corpora/bignum/8643c8cecc2726bb6eeee782a1989eece259d30b b/fuzz/corpora/bignum/8643c8cecc2726bb6eeee782a1989eece259d30b
 new file mode 100644
-index 000000000000..ca21a171f3ca
-Binary files /dev/null and b/fuzz/corpora/bignum/84d2f75f0be2a8e7eb7213087c21ad668b8de89f differ
-diff --git a/fuzz/corpora/bignum/8bdc6c43f835b628d206ba20dd096fd6b152dc05 b/fuzz/corpora/bignum/8bdc6c43f835b628d206ba20dd096fd6b152dc05
+index 0000000..b63c785
+Binary files /dev/null and b/fuzz/corpora/bignum/8643c8cecc2726bb6eeee782a1989eece259d30b differ
+diff --git a/fuzz/corpora/bignum/86a399e9e58bc49989cfc7ecd9fd68e0214d9a96 b/fuzz/corpora/bignum/86a399e9e58bc49989cfc7ecd9fd68e0214d9a96
 new file mode 100644
-index 000000000000..cfe299a0a912
-Binary files /dev/null and b/fuzz/corpora/bignum/8bdc6c43f835b628d206ba20dd096fd6b152dc05 differ
-diff --git a/fuzz/corpora/bignum/8c2f38d827889a408fddd7ba6c3732fa8e3035b1 b/fuzz/corpora/bignum/8c2f38d827889a408fddd7ba6c3732fa8e3035b1
+index 0000000..a6dccea
+Binary files /dev/null and b/fuzz/corpora/bignum/86a399e9e58bc49989cfc7ecd9fd68e0214d9a96 differ
+diff --git a/fuzz/corpora/bignum/873b549530599ef96cf0da41a4577a51074bccc6 b/fuzz/corpora/bignum/873b549530599ef96cf0da41a4577a51074bccc6
 new file mode 100644
-index 000000000000..4634515d9578
-Binary files /dev/null and b/fuzz/corpora/bignum/8c2f38d827889a408fddd7ba6c3732fa8e3035b1 differ
-diff --git a/fuzz/corpora/bignum/8f060e4815924d555a8781ab1373034dd361659b b/fuzz/corpora/bignum/8f060e4815924d555a8781ab1373034dd361659b
+index 0000000..0b6867f
+Binary files /dev/null and b/fuzz/corpora/bignum/873b549530599ef96cf0da41a4577a51074bccc6 differ
+diff --git a/fuzz/corpora/bignum/875a0573d14d7c0db32947f852d5572f3094d24a b/fuzz/corpora/bignum/875a0573d14d7c0db32947f852d5572f3094d24a
 new file mode 100644
-index 000000000000..1d502aaa6056
-Binary files /dev/null and b/fuzz/corpora/bignum/8f060e4815924d555a8781ab1373034dd361659b differ
-diff --git a/fuzz/corpora/bignum/910d1a73fe7a621474aeffc2617076d58dc80f5b b/fuzz/corpora/bignum/910d1a73fe7a621474aeffc2617076d58dc80f5b
+index 0000000..2b81f5c
+Binary files /dev/null and b/fuzz/corpora/bignum/875a0573d14d7c0db32947f852d5572f3094d24a differ
+diff --git a/fuzz/corpora/bignum/87d7a7e7f574a59952ea6d9f35222884e431476c b/fuzz/corpora/bignum/87d7a7e7f574a59952ea6d9f35222884e431476c
 new file mode 100644
-index 000000000000..7cbedc5d087d
-Binary files /dev/null and b/fuzz/corpora/bignum/910d1a73fe7a621474aeffc2617076d58dc80f5b differ
+index 0000000..356b7ba
+Binary files /dev/null and b/fuzz/corpora/bignum/87d7a7e7f574a59952ea6d9f35222884e431476c differ
+diff --git a/fuzz/corpora/bignum/888f0024b2fa65f660aca5e32fa1fd07f041282f b/fuzz/corpora/bignum/888f0024b2fa65f660aca5e32fa1fd07f041282f
+new file mode 100644
+index 0000000..f3dd05a
+Binary files /dev/null and b/fuzz/corpora/bignum/888f0024b2fa65f660aca5e32fa1fd07f041282f differ
+diff --git a/fuzz/corpora/bignum/88b3244421af6960fce4ff3059878f068a17e7e4 b/fuzz/corpora/bignum/88b3244421af6960fce4ff3059878f068a17e7e4
+new file mode 100644
+index 0000000..267be21
+Binary files /dev/null and b/fuzz/corpora/bignum/88b3244421af6960fce4ff3059878f068a17e7e4 differ
+diff --git a/fuzz/corpora/bignum/8963514e224558c06cd8b5ddacf2ae0ff2e7e4f3 b/fuzz/corpora/bignum/8963514e224558c06cd8b5ddacf2ae0ff2e7e4f3
+new file mode 100644
+index 0000000..12437ce
+Binary files /dev/null and b/fuzz/corpora/bignum/8963514e224558c06cd8b5ddacf2ae0ff2e7e4f3 differ
+diff --git a/fuzz/corpora/bignum/8a381fdd97dc5f70c7ad0fd55ab2ab71e02ad6d6 b/fuzz/corpora/bignum/8a381fdd97dc5f70c7ad0fd55ab2ab71e02ad6d6
+new file mode 100644
+index 0000000..1271bca
+Binary files /dev/null and b/fuzz/corpora/bignum/8a381fdd97dc5f70c7ad0fd55ab2ab71e02ad6d6 differ
+diff --git a/fuzz/corpora/bignum/8a4198cb150003d28bc39699bc76fad77aa83ee0 b/fuzz/corpora/bignum/8a4198cb150003d28bc39699bc76fad77aa83ee0
+new file mode 100644
+index 0000000..603f300
+Binary files /dev/null and b/fuzz/corpora/bignum/8a4198cb150003d28bc39699bc76fad77aa83ee0 differ
+diff --git a/fuzz/corpora/bignum/8b9b5edfdaae44c224bf3a59febaef5ddc8b30b1 b/fuzz/corpora/bignum/8b9b5edfdaae44c224bf3a59febaef5ddc8b30b1
+new file mode 100644
+index 0000000..1b05595
+Binary files /dev/null and b/fuzz/corpora/bignum/8b9b5edfdaae44c224bf3a59febaef5ddc8b30b1 differ
+diff --git a/fuzz/corpora/bignum/8c6dda8b405cdd3f78774f9eaf0f957b8281c20d b/fuzz/corpora/bignum/8c6dda8b405cdd3f78774f9eaf0f957b8281c20d
+new file mode 100644
+index 0000000..288f223
+Binary files /dev/null and b/fuzz/corpora/bignum/8c6dda8b405cdd3f78774f9eaf0f957b8281c20d differ
+diff --git a/fuzz/corpora/bignum/8de9cc9d2c4798bad1d4ceec36a142af03e7c988 b/fuzz/corpora/bignum/8de9cc9d2c4798bad1d4ceec36a142af03e7c988
+new file mode 100644
+index 0000000..3a2b166
+Binary files /dev/null and b/fuzz/corpora/bignum/8de9cc9d2c4798bad1d4ceec36a142af03e7c988 differ
+diff --git a/fuzz/corpora/bignum/8f1ee48f46c8a12ee373de90efd540eddf555ba9 b/fuzz/corpora/bignum/8f1ee48f46c8a12ee373de90efd540eddf555ba9
+new file mode 100644
+index 0000000..798beff
+Binary files /dev/null and b/fuzz/corpora/bignum/8f1ee48f46c8a12ee373de90efd540eddf555ba9 differ
+diff --git a/fuzz/corpora/bignum/9058a04d701cd6810535730ea03ede1a9f6fd90f b/fuzz/corpora/bignum/9058a04d701cd6810535730ea03ede1a9f6fd90f
+new file mode 100644
+index 0000000..db86929
+Binary files /dev/null and b/fuzz/corpora/bignum/9058a04d701cd6810535730ea03ede1a9f6fd90f differ
+diff --git a/fuzz/corpora/bignum/90de75065461372acb4cdfabe7a73f07f3f73b55 b/fuzz/corpora/bignum/90de75065461372acb4cdfabe7a73f07f3f73b55
+new file mode 100644
+index 0000000..9ecad35
+Binary files /dev/null and b/fuzz/corpora/bignum/90de75065461372acb4cdfabe7a73f07f3f73b55 differ
+diff --git a/fuzz/corpora/bignum/92fca6fef53b5afc598d21ce8b6ed7a3eb5c9442 b/fuzz/corpora/bignum/92fca6fef53b5afc598d21ce8b6ed7a3eb5c9442
+new file mode 100644
+index 0000000..db5a391
+Binary files /dev/null and b/fuzz/corpora/bignum/92fca6fef53b5afc598d21ce8b6ed7a3eb5c9442 differ
+diff --git a/fuzz/corpora/bignum/93df76a722901e69817a502ec316f01f26ff85a2 b/fuzz/corpora/bignum/93df76a722901e69817a502ec316f01f26ff85a2
+new file mode 100644
+index 0000000..c82befd
+Binary files /dev/null and b/fuzz/corpora/bignum/93df76a722901e69817a502ec316f01f26ff85a2 differ
+diff --git a/fuzz/corpora/bignum/94654b73567e989fa87ac3de92b875e1e17c5934 b/fuzz/corpora/bignum/94654b73567e989fa87ac3de92b875e1e17c5934
+new file mode 100644
+index 0000000..3649da6
+Binary files /dev/null and b/fuzz/corpora/bignum/94654b73567e989fa87ac3de92b875e1e17c5934 differ
 diff --git a/fuzz/corpora/bignum/949e1329a2d0596bd2ef36f46bab60bc9b0d9a3e b/fuzz/corpora/bignum/949e1329a2d0596bd2ef36f46bab60bc9b0d9a3e
 new file mode 100644
-index 000000000000..cac68bc84368
+index 0000000..cac68bc
 Binary files /dev/null and b/fuzz/corpora/bignum/949e1329a2d0596bd2ef36f46bab60bc9b0d9a3e differ
-diff --git a/fuzz/corpora/bignum/9618fa77bc853eebfb1f4db2d06e65fa2cbaab51 b/fuzz/corpora/bignum/9618fa77bc853eebfb1f4db2d06e65fa2cbaab51
+diff --git a/fuzz/corpora/bignum/956a5d320b32359f3e1edeef628fce677f4b3785 b/fuzz/corpora/bignum/956a5d320b32359f3e1edeef628fce677f4b3785
 new file mode 100644
-index 000000000000..838c67de87be
-Binary files /dev/null and b/fuzz/corpora/bignum/9618fa77bc853eebfb1f4db2d06e65fa2cbaab51 differ
-diff --git a/fuzz/corpora/bignum/979525ca2c3317a49a2cb39f52b03d777b8af741 b/fuzz/corpora/bignum/979525ca2c3317a49a2cb39f52b03d777b8af741
+index 0000000..8c69cbe
+Binary files /dev/null and b/fuzz/corpora/bignum/956a5d320b32359f3e1edeef628fce677f4b3785 differ
+diff --git a/fuzz/corpora/bignum/959e19a37954cd22e3c0f1d7a3734e585edd0d58 b/fuzz/corpora/bignum/959e19a37954cd22e3c0f1d7a3734e585edd0d58
 new file mode 100644
-index 000000000000..afc1e2618573
-Binary files /dev/null and b/fuzz/corpora/bignum/979525ca2c3317a49a2cb39f52b03d777b8af741 differ
-diff --git a/fuzz/corpora/bignum/9842926af7ca0a8cca12604f945414f07b01e13d b/fuzz/corpora/bignum/9842926af7ca0a8cca12604f945414f07b01e13d
+index 0000000..a23bc2d
+Binary files /dev/null and b/fuzz/corpora/bignum/959e19a37954cd22e3c0f1d7a3734e585edd0d58 differ
+diff --git a/fuzz/corpora/bignum/96a3c9b1e2a119e46d1a93d537eb4359cb7876bc b/fuzz/corpora/bignum/96a3c9b1e2a119e46d1a93d537eb4359cb7876bc
 new file mode 100644
-index 000000000000..fc2b5693e00b
-Binary files /dev/null and b/fuzz/corpora/bignum/9842926af7ca0a8cca12604f945414f07b01e13d differ
-diff --git a/fuzz/corpora/bignum/994b161242ac4c651e68769d752cc14843c609c8 b/fuzz/corpora/bignum/994b161242ac4c651e68769d752cc14843c609c8
+index 0000000..9c25189
+Binary files /dev/null and b/fuzz/corpora/bignum/96a3c9b1e2a119e46d1a93d537eb4359cb7876bc differ
+diff --git a/fuzz/corpora/bignum/976fa015ec637c38d9628b8c17595e9cd44eccdd b/fuzz/corpora/bignum/976fa015ec637c38d9628b8c17595e9cd44eccdd
 new file mode 100644
-index 000000000000..de7ffbbc89a2
-Binary files /dev/null and b/fuzz/corpora/bignum/994b161242ac4c651e68769d752cc14843c609c8 differ
-diff --git a/fuzz/corpora/bignum/9ab4d260127a3d6afb2db817105d4e1ee9ea3607 b/fuzz/corpora/bignum/9ab4d260127a3d6afb2db817105d4e1ee9ea3607
+index 0000000..ac5aaf5
+Binary files /dev/null and b/fuzz/corpora/bignum/976fa015ec637c38d9628b8c17595e9cd44eccdd differ
+diff --git a/fuzz/corpora/bignum/97b88bdbdb1a2671750879fc9a3127abc792138f b/fuzz/corpora/bignum/97b88bdbdb1a2671750879fc9a3127abc792138f
 new file mode 100644
-index 000000000000..2eabda8ec7f1
-Binary files /dev/null and b/fuzz/corpora/bignum/9ab4d260127a3d6afb2db817105d4e1ee9ea3607 differ
-diff --git a/fuzz/corpora/bignum/9e27ae2e4be753d9eedc360067e314e06121fbaf b/fuzz/corpora/bignum/9e27ae2e4be753d9eedc360067e314e06121fbaf
+index 0000000..c716b48
+Binary files /dev/null and b/fuzz/corpora/bignum/97b88bdbdb1a2671750879fc9a3127abc792138f differ
+diff --git a/fuzz/corpora/bignum/97e88ab5c619e5279012eed0cbcc26e1b70e7702 b/fuzz/corpora/bignum/97e88ab5c619e5279012eed0cbcc26e1b70e7702
 new file mode 100644
-index 000000000000..f940084b3f1c
-Binary files /dev/null and b/fuzz/corpora/bignum/9e27ae2e4be753d9eedc360067e314e06121fbaf differ
-diff --git a/fuzz/corpora/bignum/a84873a1eb1d53f13edc6381d03f6d43a4d5a9ff b/fuzz/corpora/bignum/a84873a1eb1d53f13edc6381d03f6d43a4d5a9ff
+index 0000000..09a32c8
+Binary files /dev/null and b/fuzz/corpora/bignum/97e88ab5c619e5279012eed0cbcc26e1b70e7702 differ
+diff --git a/fuzz/corpora/bignum/985b5f07b1360bb45d5dbd62bd4de08153bfd164 b/fuzz/corpora/bignum/985b5f07b1360bb45d5dbd62bd4de08153bfd164
 new file mode 100644
-index 000000000000..f4ede45e7506
-Binary files /dev/null and b/fuzz/corpora/bignum/a84873a1eb1d53f13edc6381d03f6d43a4d5a9ff differ
-diff --git a/fuzz/corpora/bignum/bbc981e11553ad0856ede92fd4aed89b1846f95f b/fuzz/corpora/bignum/bbc981e11553ad0856ede92fd4aed89b1846f95f
+index 0000000..9035880
+Binary files /dev/null and b/fuzz/corpora/bignum/985b5f07b1360bb45d5dbd62bd4de08153bfd164 differ
+diff --git a/fuzz/corpora/bignum/98c2b5caa9773cca45ad5ef977021bc8b805422f b/fuzz/corpora/bignum/98c2b5caa9773cca45ad5ef977021bc8b805422f
 new file mode 100644
-index 000000000000..728daa1080f5
-Binary files /dev/null and b/fuzz/corpora/bignum/bbc981e11553ad0856ede92fd4aed89b1846f95f differ
-diff --git a/fuzz/corpora/bignum/bf5957ba86ad17a7ce34b0389ac49046dafe1e76 b/fuzz/corpora/bignum/bf5957ba86ad17a7ce34b0389ac49046dafe1e76
+index 0000000..fd0eb81
+Binary files /dev/null and b/fuzz/corpora/bignum/98c2b5caa9773cca45ad5ef977021bc8b805422f differ
+diff --git a/fuzz/corpora/bignum/98e8db4f7774386f364ee1c62f576ebfe4bc59f4 b/fuzz/corpora/bignum/98e8db4f7774386f364ee1c62f576ebfe4bc59f4
 new file mode 100644
-index 000000000000..abacbb700365
-Binary files /dev/null and b/fuzz/corpora/bignum/bf5957ba86ad17a7ce34b0389ac49046dafe1e76 differ
-diff --git a/fuzz/corpora/bignum/c105f5fa1206756628911b3f2a6fa9880a3bc02b b/fuzz/corpora/bignum/c105f5fa1206756628911b3f2a6fa9880a3bc02b
+index 0000000..4549bd5
+Binary files /dev/null and b/fuzz/corpora/bignum/98e8db4f7774386f364ee1c62f576ebfe4bc59f4 differ
+diff --git a/fuzz/corpora/bignum/99069c6477c76a2cdbf2d026625dedd3ebdd4ed7 b/fuzz/corpora/bignum/99069c6477c76a2cdbf2d026625dedd3ebdd4ed7
 new file mode 100644
-index 000000000000..9985e513ce8a
-Binary files /dev/null and b/fuzz/corpora/bignum/c105f5fa1206756628911b3f2a6fa9880a3bc02b differ
-diff --git a/fuzz/corpora/bignum/c464483f4c9cec2ec01e8e65607bb026eb861c5d b/fuzz/corpora/bignum/c464483f4c9cec2ec01e8e65607bb026eb861c5d
+index 0000000..8036b40
+Binary files /dev/null and b/fuzz/corpora/bignum/99069c6477c76a2cdbf2d026625dedd3ebdd4ed7 differ
+diff --git a/fuzz/corpora/bignum/996e60f213c45483c0813403f84b14ce7a331fb6 b/fuzz/corpora/bignum/996e60f213c45483c0813403f84b14ce7a331fb6
 new file mode 100644
-index 000000000000..2f9f58219b35
-Binary files /dev/null and b/fuzz/corpora/bignum/c464483f4c9cec2ec01e8e65607bb026eb861c5d differ
-diff --git a/fuzz/corpora/bignum/c903774986dbf2d90f8d42a63b9b2bdd30544459 b/fuzz/corpora/bignum/c903774986dbf2d90f8d42a63b9b2bdd30544459
+index 0000000..4493cd8
+Binary files /dev/null and b/fuzz/corpora/bignum/996e60f213c45483c0813403f84b14ce7a331fb6 differ
+diff --git a/fuzz/corpora/bignum/9982388f8794a976fc2aaa793ccb5bfd5fd53a49 b/fuzz/corpora/bignum/9982388f8794a976fc2aaa793ccb5bfd5fd53a49
 new file mode 100644
-index 000000000000..7e363d448ebb
-Binary files /dev/null and b/fuzz/corpora/bignum/c903774986dbf2d90f8d42a63b9b2bdd30544459 differ
-diff --git a/fuzz/corpora/bignum/d90e132d21b58b341439c6e6755027a2f182cf1a b/fuzz/corpora/bignum/d90e132d21b58b341439c6e6755027a2f182cf1a
+index 0000000..568db36
+Binary files /dev/null and b/fuzz/corpora/bignum/9982388f8794a976fc2aaa793ccb5bfd5fd53a49 differ
+diff --git a/fuzz/corpora/bignum/9a5a64ecc2d018b4880efcf20bd4491a37566753 b/fuzz/corpora/bignum/9a5a64ecc2d018b4880efcf20bd4491a37566753
 new file mode 100644
-index 000000000000..4fb9e730fa81
-Binary files /dev/null and b/fuzz/corpora/bignum/d90e132d21b58b341439c6e6755027a2f182cf1a differ
-diff --git a/fuzz/corpora/bignum/df17a52fb8a65c2620980c4feb52e08bcf446c2e b/fuzz/corpora/bignum/df17a52fb8a65c2620980c4feb52e08bcf446c2e
+index 0000000..8e501cf
+Binary files /dev/null and b/fuzz/corpora/bignum/9a5a64ecc2d018b4880efcf20bd4491a37566753 differ
+diff --git a/fuzz/corpora/bignum/9ab8fc005381299528262cd0174e1e79aab7ff55 b/fuzz/corpora/bignum/9ab8fc005381299528262cd0174e1e79aab7ff55
 new file mode 100644
-index 000000000000..7896778004d0
-Binary files /dev/null and b/fuzz/corpora/bignum/df17a52fb8a65c2620980c4feb52e08bcf446c2e differ
-diff --git a/fuzz/corpora/bignum/ea20e7246e7887b459cc5efb02e08a30c2c1168a b/fuzz/corpora/bignum/ea20e7246e7887b459cc5efb02e08a30c2c1168a
+index 0000000..39258cc
+Binary files /dev/null and b/fuzz/corpora/bignum/9ab8fc005381299528262cd0174e1e79aab7ff55 differ
+diff --git a/fuzz/corpora/bignum/9bf4d1d1dbe55c4c3c9f810c6d8b3e5e973f91fa b/fuzz/corpora/bignum/9bf4d1d1dbe55c4c3c9f810c6d8b3e5e973f91fa
 new file mode 100644
-index 000000000000..38f6a2503314
-Binary files /dev/null and b/fuzz/corpora/bignum/ea20e7246e7887b459cc5efb02e08a30c2c1168a differ
-diff --git a/fuzz/corpora/bignum/eea5d647be7ae1e28e52de713eed53e9c641a642 b/fuzz/corpora/bignum/eea5d647be7ae1e28e52de713eed53e9c641a642
+index 0000000..00a141d
+Binary files /dev/null and b/fuzz/corpora/bignum/9bf4d1d1dbe55c4c3c9f810c6d8b3e5e973f91fa differ
+diff --git a/fuzz/corpora/bignum/9bfc4213aed7081179256cf1636bc5a9e6876b71 b/fuzz/corpora/bignum/9bfc4213aed7081179256cf1636bc5a9e6876b71
 new file mode 100644
-index 000000000000..a931b6e2caca
-Binary files /dev/null and b/fuzz/corpora/bignum/eea5d647be7ae1e28e52de713eed53e9c641a642 differ
-diff --git a/fuzz/corpora/bignum/f388be7f645353fdd5ba303a32c2a48940f88f5c b/fuzz/corpora/bignum/f388be7f645353fdd5ba303a32c2a48940f88f5c
+index 0000000..66eb657
+Binary files /dev/null and b/fuzz/corpora/bignum/9bfc4213aed7081179256cf1636bc5a9e6876b71 differ
+diff --git a/fuzz/corpora/bignum/9c032b532a4ceb9288ef440992f228049d0a52b9 b/fuzz/corpora/bignum/9c032b532a4ceb9288ef440992f228049d0a52b9
 new file mode 100644
-index 000000000000..d32cac6b9eb4
-Binary files /dev/null and b/fuzz/corpora/bignum/f388be7f645353fdd5ba303a32c2a48940f88f5c differ
-diff --git a/fuzz/corpora/bndiv-crash/crash-10b8fe318244b4897fbf60e325bc969f81313754 b/fuzz/corpora/bndiv-crash/crash-10b8fe318244b4897fbf60e325bc969f81313754
+index 0000000..fefbc60
+Binary files /dev/null and b/fuzz/corpora/bignum/9c032b532a4ceb9288ef440992f228049d0a52b9 differ
+diff --git a/fuzz/corpora/bignum/9c2033cbb7cdb4824ad7ba55f15176c7ee68f7f9 b/fuzz/corpora/bignum/9c2033cbb7cdb4824ad7ba55f15176c7ee68f7f9
 new file mode 100644
-index 000000000000..026d0ad2f721
-Binary files /dev/null and b/fuzz/corpora/bndiv-crash/crash-10b8fe318244b4897fbf60e325bc969f81313754 differ
-diff --git a/fuzz/corpora/bndiv-crash/crash-37cb66c8a9a87d8a20c1a170bdd1baf452792abd b/fuzz/corpora/bndiv-crash/crash-37cb66c8a9a87d8a20c1a170bdd1baf452792abd
+index 0000000..417927c
+Binary files /dev/null and b/fuzz/corpora/bignum/9c2033cbb7cdb4824ad7ba55f15176c7ee68f7f9 differ
+diff --git a/fuzz/corpora/bignum/9d41b7760c4a491041bf47fd34e9b0da4a82db96 b/fuzz/corpora/bignum/9d41b7760c4a491041bf47fd34e9b0da4a82db96
 new file mode 100644
-index 000000000000..60e86f1ebc38
-Binary files /dev/null and b/fuzz/corpora/bndiv-crash/crash-37cb66c8a9a87d8a20c1a170bdd1baf452792abd differ
-diff --git a/fuzz/corpora/bndiv-crash/crash-fc12e07ad9dbc5674678b2a782e2e1ae6d04b15a b/fuzz/corpora/bndiv-crash/crash-fc12e07ad9dbc5674678b2a782e2e1ae6d04b15a
+index 0000000..74cf8be
+Binary files /dev/null and b/fuzz/corpora/bignum/9d41b7760c4a491041bf47fd34e9b0da4a82db96 differ
+diff --git a/fuzz/corpora/bignum/9d4a78b0873cb7d0c46d614defb2b7d9ff62e4b4 b/fuzz/corpora/bignum/9d4a78b0873cb7d0c46d614defb2b7d9ff62e4b4
 new file mode 100644
-index 000000000000..b5be5ac274ec
-Binary files /dev/null and b/fuzz/corpora/bndiv-crash/crash-fc12e07ad9dbc5674678b2a782e2e1ae6d04b15a differ
-diff --git a/fuzz/corpora/bndiv/0025f06e7b7e1d48c8e71e5a02964d65e0d472af b/fuzz/corpora/bndiv/0025f06e7b7e1d48c8e71e5a02964d65e0d472af
+index 0000000..2df9d06
+Binary files /dev/null and b/fuzz/corpora/bignum/9d4a78b0873cb7d0c46d614defb2b7d9ff62e4b4 differ
+diff --git a/fuzz/corpora/bignum/9da0af593a71bf8e594cb8bdc8a89efdd5fb1c41 b/fuzz/corpora/bignum/9da0af593a71bf8e594cb8bdc8a89efdd5fb1c41
 new file mode 100644
-index 000000000000..a867c5ee764b
-Binary files /dev/null and b/fuzz/corpora/bndiv/0025f06e7b7e1d48c8e71e5a02964d65e0d472af differ
-diff --git a/fuzz/corpora/bndiv/10b8fe318244b4897fbf60e325bc969f81313754 b/fuzz/corpora/bndiv/10b8fe318244b4897fbf60e325bc969f81313754
+index 0000000..51df2f7
+Binary files /dev/null and b/fuzz/corpora/bignum/9da0af593a71bf8e594cb8bdc8a89efdd5fb1c41 differ
+diff --git a/fuzz/corpora/bignum/9dec452fd2081896106600017f9814cd972499d3 b/fuzz/corpora/bignum/9dec452fd2081896106600017f9814cd972499d3
 new file mode 100644
-index 000000000000..026d0ad2f721
-Binary files /dev/null and b/fuzz/corpora/bndiv/10b8fe318244b4897fbf60e325bc969f81313754 differ
-diff --git a/fuzz/corpora/bndiv/1f870191ef961adf3fcf8da1c49d8d0faab8e07d b/fuzz/corpora/bndiv/1f870191ef961adf3fcf8da1c49d8d0faab8e07d
+index 0000000..92059f6
+Binary files /dev/null and b/fuzz/corpora/bignum/9dec452fd2081896106600017f9814cd972499d3 differ
+diff --git a/fuzz/corpora/bignum/9e1c0583543d8f5d2b320657c4ed06abedb2aa85 b/fuzz/corpora/bignum/9e1c0583543d8f5d2b320657c4ed06abedb2aa85
 new file mode 100644
-index 000000000000..2506ad3aec19
-Binary files /dev/null and b/fuzz/corpora/bndiv/1f870191ef961adf3fcf8da1c49d8d0faab8e07d differ
-diff --git a/fuzz/corpora/bndiv/209bc71a174ce45b431f9606d22cf88b1b93ed59 b/fuzz/corpora/bndiv/209bc71a174ce45b431f9606d22cf88b1b93ed59
+index 0000000..52fc11c
+Binary files /dev/null and b/fuzz/corpora/bignum/9e1c0583543d8f5d2b320657c4ed06abedb2aa85 differ
+diff --git a/fuzz/corpora/bignum/9f2b852a9efc2247dbc964626a9ccfadc68e19df b/fuzz/corpora/bignum/9f2b852a9efc2247dbc964626a9ccfadc68e19df
 new file mode 100644
-index 000000000000..9cb5b4438885
-Binary files /dev/null and b/fuzz/corpora/bndiv/209bc71a174ce45b431f9606d22cf88b1b93ed59 differ
-diff --git a/fuzz/corpora/bndiv/21e0f227f537e66d2058f493f908faa6e5b6a21f b/fuzz/corpora/bndiv/21e0f227f537e66d2058f493f908faa6e5b6a21f
+index 0000000..5fac32f
+Binary files /dev/null and b/fuzz/corpora/bignum/9f2b852a9efc2247dbc964626a9ccfadc68e19df differ
+diff --git a/fuzz/corpora/bignum/a0dbdf498f4f44cc29a6f46bf262080138bf7220 b/fuzz/corpora/bignum/a0dbdf498f4f44cc29a6f46bf262080138bf7220
 new file mode 100644
-index 000000000000..04db463aefcd
-Binary files /dev/null and b/fuzz/corpora/bndiv/21e0f227f537e66d2058f493f908faa6e5b6a21f differ
-diff --git a/fuzz/corpora/bndiv/316e41cfe92634bf55ccb172994d5f4b54e464b7 b/fuzz/corpora/bndiv/316e41cfe92634bf55ccb172994d5f4b54e464b7
+index 0000000..3a5ccdb
+Binary files /dev/null and b/fuzz/corpora/bignum/a0dbdf498f4f44cc29a6f46bf262080138bf7220 differ
+diff --git a/fuzz/corpora/bignum/a11a589a67807e097144cb3029650aa7eec96783 b/fuzz/corpora/bignum/a11a589a67807e097144cb3029650aa7eec96783
 new file mode 100644
-index 000000000000..1e76cdc24146
-Binary files /dev/null and b/fuzz/corpora/bndiv/316e41cfe92634bf55ccb172994d5f4b54e464b7 differ
-diff --git a/fuzz/corpora/bndiv/31fac23c90fb962d2473f19751f7f6834d9673a1 b/fuzz/corpora/bndiv/31fac23c90fb962d2473f19751f7f6834d9673a1
+index 0000000..b0eedb6
+Binary files /dev/null and b/fuzz/corpora/bignum/a11a589a67807e097144cb3029650aa7eec96783 differ
+diff --git a/fuzz/corpora/bignum/a3f987ecce2c9f37c6d6fcc6436afa24d25d55f5 b/fuzz/corpora/bignum/a3f987ecce2c9f37c6d6fcc6436afa24d25d55f5
 new file mode 100644
-index 000000000000..a7dbf7658dc5
-Binary files /dev/null and b/fuzz/corpora/bndiv/31fac23c90fb962d2473f19751f7f6834d9673a1 differ
-diff --git a/fuzz/corpora/bndiv/37c9f80228f1c84ae327ef654371a553a8986271 b/fuzz/corpora/bndiv/37c9f80228f1c84ae327ef654371a553a8986271
+index 0000000..31e6a32
+Binary files /dev/null and b/fuzz/corpora/bignum/a3f987ecce2c9f37c6d6fcc6436afa24d25d55f5 differ
+diff --git a/fuzz/corpora/bignum/a4a236f9645d16e4bb313bccc0ed7eb0ca65bd34 b/fuzz/corpora/bignum/a4a236f9645d16e4bb313bccc0ed7eb0ca65bd34
 new file mode 100644
-index 000000000000..267ee2c82f48
-Binary files /dev/null and b/fuzz/corpora/bndiv/37c9f80228f1c84ae327ef654371a553a8986271 differ
-diff --git a/fuzz/corpora/bndiv/5351f82ed609bbf5ea35829ea9f396ffa63d2be4 b/fuzz/corpora/bndiv/5351f82ed609bbf5ea35829ea9f396ffa63d2be4
+index 0000000..093f8ab
+Binary files /dev/null and b/fuzz/corpora/bignum/a4a236f9645d16e4bb313bccc0ed7eb0ca65bd34 differ
+diff --git a/fuzz/corpora/bignum/a4a488ee3a307b94de3fffb5225b9ee140eaee71 b/fuzz/corpora/bignum/a4a488ee3a307b94de3fffb5225b9ee140eaee71
 new file mode 100644
-index 000000000000..5b5cc32b44fb
-Binary files /dev/null and b/fuzz/corpora/bndiv/5351f82ed609bbf5ea35829ea9f396ffa63d2be4 differ
-diff --git a/fuzz/corpora/bndiv/54bcabfd9adb8c223c2cebd955f4e83f057c22ac b/fuzz/corpora/bndiv/54bcabfd9adb8c223c2cebd955f4e83f057c22ac
+index 0000000..9ed3e90
+Binary files /dev/null and b/fuzz/corpora/bignum/a4a488ee3a307b94de3fffb5225b9ee140eaee71 differ
+diff --git a/fuzz/corpora/bignum/a4c26bc7a6e78b026de91d13cbf00290a3767ef1 b/fuzz/corpora/bignum/a4c26bc7a6e78b026de91d13cbf00290a3767ef1
 new file mode 100644
-index 000000000000..1db0be85a0bb
-Binary files /dev/null and b/fuzz/corpora/bndiv/54bcabfd9adb8c223c2cebd955f4e83f057c22ac differ
-diff --git a/fuzz/corpora/bndiv/59a8921e40b761e334ee6aba3a31d77c90e3adc5 b/fuzz/corpora/bndiv/59a8921e40b761e334ee6aba3a31d77c90e3adc5
+index 0000000..585b723
+Binary files /dev/null and b/fuzz/corpora/bignum/a4c26bc7a6e78b026de91d13cbf00290a3767ef1 differ
+diff --git a/fuzz/corpora/bignum/a65ebac4ff932ebb1c073838d708fe3d84191946 b/fuzz/corpora/bignum/a65ebac4ff932ebb1c073838d708fe3d84191946
 new file mode 100644
-index 000000000000..12ec39cf62fb
-Binary files /dev/null and b/fuzz/corpora/bndiv/59a8921e40b761e334ee6aba3a31d77c90e3adc5 differ
-diff --git a/fuzz/corpora/bndiv/5f322ba149d86572a73736a4df8b6adeaf8e1e99 b/fuzz/corpora/bndiv/5f322ba149d86572a73736a4df8b6adeaf8e1e99
+index 0000000..3d89b94
+Binary files /dev/null and b/fuzz/corpora/bignum/a65ebac4ff932ebb1c073838d708fe3d84191946 differ
+diff --git a/fuzz/corpora/bignum/a6e206d5ec4d3fe1bcd370586aab0cf77d90b5d4 b/fuzz/corpora/bignum/a6e206d5ec4d3fe1bcd370586aab0cf77d90b5d4
 new file mode 100644
-index 000000000000..0175ca44551d
-Binary files /dev/null and b/fuzz/corpora/bndiv/5f322ba149d86572a73736a4df8b6adeaf8e1e99 differ
-diff --git a/fuzz/corpora/bndiv/61de3a2f6367500194f020bc4a2bfd0459279360 b/fuzz/corpora/bndiv/61de3a2f6367500194f020bc4a2bfd0459279360
+index 0000000..8142345
+Binary files /dev/null and b/fuzz/corpora/bignum/a6e206d5ec4d3fe1bcd370586aab0cf77d90b5d4 differ
+diff --git a/fuzz/corpora/bignum/a6f514f0f142542619181ffda32107554ffb9603 b/fuzz/corpora/bignum/a6f514f0f142542619181ffda32107554ffb9603
 new file mode 100644
-index 000000000000..2b13d1e2f996
-Binary files /dev/null and b/fuzz/corpora/bndiv/61de3a2f6367500194f020bc4a2bfd0459279360 differ
-diff --git a/fuzz/corpora/bndiv/6233138e33022ad6d77315f5923e4c13af9a0d9c b/fuzz/corpora/bndiv/6233138e33022ad6d77315f5923e4c13af9a0d9c
+index 0000000..052055f
+Binary files /dev/null and b/fuzz/corpora/bignum/a6f514f0f142542619181ffda32107554ffb9603 differ
+diff --git a/fuzz/corpora/bignum/a724975343ef0b3756a931f1db6f860aa9ffc427 b/fuzz/corpora/bignum/a724975343ef0b3756a931f1db6f860aa9ffc427
 new file mode 100644
-index 000000000000..23f5005b1fe7
-Binary files /dev/null and b/fuzz/corpora/bndiv/6233138e33022ad6d77315f5923e4c13af9a0d9c differ
-diff --git a/fuzz/corpora/bndiv/77e6286d56b60ce8e3a88e060e8216bdf80a502c b/fuzz/corpora/bndiv/77e6286d56b60ce8e3a88e060e8216bdf80a502c
+index 0000000..9592bae
+Binary files /dev/null and b/fuzz/corpora/bignum/a724975343ef0b3756a931f1db6f860aa9ffc427 differ
+diff --git a/fuzz/corpora/bignum/a8692a410c698dcac314b1d6dd868a64f681c8df b/fuzz/corpora/bignum/a8692a410c698dcac314b1d6dd868a64f681c8df
 new file mode 100644
-index 000000000000..ef4b94459ef9
-Binary files /dev/null and b/fuzz/corpora/bndiv/77e6286d56b60ce8e3a88e060e8216bdf80a502c differ
-diff --git a/fuzz/corpora/bndiv/782276095ef10c8df90137008103764b2e4c17cd b/fuzz/corpora/bndiv/782276095ef10c8df90137008103764b2e4c17cd
+index 0000000..803d098
+Binary files /dev/null and b/fuzz/corpora/bignum/a8692a410c698dcac314b1d6dd868a64f681c8df differ
+diff --git a/fuzz/corpora/bignum/a94e2a7f4e1a3cfbd1e937ab29171f6c7215aeb2 b/fuzz/corpora/bignum/a94e2a7f4e1a3cfbd1e937ab29171f6c7215aeb2
 new file mode 100644
-index 000000000000..92acf550e0a8
-Binary files /dev/null and b/fuzz/corpora/bndiv/782276095ef10c8df90137008103764b2e4c17cd differ
-diff --git a/fuzz/corpora/bndiv/831a818c86cbbdb72d8f7b3637055968a3f2fcd4 b/fuzz/corpora/bndiv/831a818c86cbbdb72d8f7b3637055968a3f2fcd4
+index 0000000..e29ec86
+Binary files /dev/null and b/fuzz/corpora/bignum/a94e2a7f4e1a3cfbd1e937ab29171f6c7215aeb2 differ
+diff --git a/fuzz/corpora/bignum/aa5223bcbf7ec2fbae1f969ac2d2edb30dcedd68 b/fuzz/corpora/bignum/aa5223bcbf7ec2fbae1f969ac2d2edb30dcedd68
 new file mode 100644
-index 000000000000..82caa2332768
-Binary files /dev/null and b/fuzz/corpora/bndiv/831a818c86cbbdb72d8f7b3637055968a3f2fcd4 differ
-diff --git a/fuzz/corpora/bndiv/85583eff0876fb8b7f984462bc8014aeba29bd73 b/fuzz/corpora/bndiv/85583eff0876fb8b7f984462bc8014aeba29bd73
+index 0000000..371904b
+Binary files /dev/null and b/fuzz/corpora/bignum/aa5223bcbf7ec2fbae1f969ac2d2edb30dcedd68 differ
+diff --git a/fuzz/corpora/bignum/ab1ca6fa5cd2a9333e4bc3a55e5d63af31eeca4e b/fuzz/corpora/bignum/ab1ca6fa5cd2a9333e4bc3a55e5d63af31eeca4e
 new file mode 100644
-index 000000000000..72ca9afea6c8
-Binary files /dev/null and b/fuzz/corpora/bndiv/85583eff0876fb8b7f984462bc8014aeba29bd73 differ
-diff --git a/fuzz/corpora/bndiv/8802c01fa86f919f5cb239d84fb8b611d1a60efa b/fuzz/corpora/bndiv/8802c01fa86f919f5cb239d84fb8b611d1a60efa
+index 0000000..40a4aa5
+Binary files /dev/null and b/fuzz/corpora/bignum/ab1ca6fa5cd2a9333e4bc3a55e5d63af31eeca4e differ
+diff --git a/fuzz/corpora/bignum/ab5728b029fc5fb125abd79d5e00ccf27f0bbc24 b/fuzz/corpora/bignum/ab5728b029fc5fb125abd79d5e00ccf27f0bbc24
 new file mode 100644
-index 000000000000..381995735209
-Binary files /dev/null and b/fuzz/corpora/bndiv/8802c01fa86f919f5cb239d84fb8b611d1a60efa differ
-diff --git a/fuzz/corpora/bndiv/9a78211436f6d425ec38f5c4e02270801f3524f8 b/fuzz/corpora/bndiv/9a78211436f6d425ec38f5c4e02270801f3524f8
+index 0000000..84a2348
+Binary files /dev/null and b/fuzz/corpora/bignum/ab5728b029fc5fb125abd79d5e00ccf27f0bbc24 differ
+diff --git a/fuzz/corpora/bignum/ac46a2d8e2a7bf87a16360bd3e71a02017cde625 b/fuzz/corpora/bignum/ac46a2d8e2a7bf87a16360bd3e71a02017cde625
 new file mode 100644
-index 000000000000..b516b2c489f1
-Binary files /dev/null and b/fuzz/corpora/bndiv/9a78211436f6d425ec38f5c4e02270801f3524f8 differ
-diff --git a/fuzz/corpora/bndiv/9ed5fdf8b28586990e74936e0da35b82ce3383a6 b/fuzz/corpora/bndiv/9ed5fdf8b28586990e74936e0da35b82ce3383a6
+index 0000000..9005c8e
+Binary files /dev/null and b/fuzz/corpora/bignum/ac46a2d8e2a7bf87a16360bd3e71a02017cde625 differ
+diff --git a/fuzz/corpora/bignum/ac9bd4b75865c15cbdac63b1bca003f3b91a79ec b/fuzz/corpora/bignum/ac9bd4b75865c15cbdac63b1bca003f3b91a79ec
 new file mode 100644
-index 000000000000..265f00996d6e
-Binary files /dev/null and b/fuzz/corpora/bndiv/9ed5fdf8b28586990e74936e0da35b82ce3383a6 differ
-diff --git a/fuzz/corpora/bndiv/a5c65b20050ea84fb97e8e7fd1c96879a70569c5 b/fuzz/corpora/bndiv/a5c65b20050ea84fb97e8e7fd1c96879a70569c5
+index 0000000..1f317e9
+Binary files /dev/null and b/fuzz/corpora/bignum/ac9bd4b75865c15cbdac63b1bca003f3b91a79ec differ
+diff --git a/fuzz/corpora/bignum/acedb00640216b8e928ea1b44605b2fb2a2e1d1a b/fuzz/corpora/bignum/acedb00640216b8e928ea1b44605b2fb2a2e1d1a
 new file mode 100644
-index 000000000000..fa74d3304e90
-Binary files /dev/null and b/fuzz/corpora/bndiv/a5c65b20050ea84fb97e8e7fd1c96879a70569c5 differ
-diff --git a/fuzz/corpora/bndiv/ace89fa94c9cb27b14d615514c172943b3fc2452 b/fuzz/corpora/bndiv/ace89fa94c9cb27b14d615514c172943b3fc2452
+index 0000000..8cdd4c4
+Binary files /dev/null and b/fuzz/corpora/bignum/acedb00640216b8e928ea1b44605b2fb2a2e1d1a differ
+diff --git a/fuzz/corpora/bignum/ada80df2a2d6246cb299fcd997afa3910bbeab31 b/fuzz/corpora/bignum/ada80df2a2d6246cb299fcd997afa3910bbeab31
 new file mode 100644
-index 000000000000..04a9d9b1f63c
-Binary files /dev/null and b/fuzz/corpora/bndiv/ace89fa94c9cb27b14d615514c172943b3fc2452 differ
-diff --git a/fuzz/corpora/bndiv/b240eed4400fd9a7e1347e39e769b4abe009f27f b/fuzz/corpora/bndiv/b240eed4400fd9a7e1347e39e769b4abe009f27f
+index 0000000..35bd406
+Binary files /dev/null and b/fuzz/corpora/bignum/ada80df2a2d6246cb299fcd997afa3910bbeab31 differ
+diff --git a/fuzz/corpora/bignum/adcc0d3186263886e11b137cb5a7b3096b009852 b/fuzz/corpora/bignum/adcc0d3186263886e11b137cb5a7b3096b009852
 new file mode 100644
-index 000000000000..2338aaa0b33b
-Binary files /dev/null and b/fuzz/corpora/bndiv/b240eed4400fd9a7e1347e39e769b4abe009f27f differ
-diff --git a/fuzz/corpora/bndiv/bb3d1ea5b1a520c428a09ddbf5907668e6dae74a b/fuzz/corpora/bndiv/bb3d1ea5b1a520c428a09ddbf5907668e6dae74a
+index 0000000..45af844
+Binary files /dev/null and b/fuzz/corpora/bignum/adcc0d3186263886e11b137cb5a7b3096b009852 differ
+diff --git a/fuzz/corpora/bignum/ae4b3c2d3b7fb5bd35c569d987c7a019ae170bf2 b/fuzz/corpora/bignum/ae4b3c2d3b7fb5bd35c569d987c7a019ae170bf2
 new file mode 100644
-index 000000000000..5ceb0f1e0569
-Binary files /dev/null and b/fuzz/corpora/bndiv/bb3d1ea5b1a520c428a09ddbf5907668e6dae74a differ
-diff --git a/fuzz/corpora/bndiv/bd14a83c24780bbfdd18e9379bdadd015c4aa0c9 b/fuzz/corpora/bndiv/bd14a83c24780bbfdd18e9379bdadd015c4aa0c9
+index 0000000..56582a2
+Binary files /dev/null and b/fuzz/corpora/bignum/ae4b3c2d3b7fb5bd35c569d987c7a019ae170bf2 differ
+diff --git a/fuzz/corpora/bignum/ae9dffd38181b93b696d0831ff81e18a2aeb17ef b/fuzz/corpora/bignum/ae9dffd38181b93b696d0831ff81e18a2aeb17ef
 new file mode 100644
-index 000000000000..4793e58089f7
-Binary files /dev/null and b/fuzz/corpora/bndiv/bd14a83c24780bbfdd18e9379bdadd015c4aa0c9 differ
-diff --git a/fuzz/corpora/bndiv/c24004659b1dc93c1d422e27a7c03813772714ad b/fuzz/corpora/bndiv/c24004659b1dc93c1d422e27a7c03813772714ad
+index 0000000..e744359
+Binary files /dev/null and b/fuzz/corpora/bignum/ae9dffd38181b93b696d0831ff81e18a2aeb17ef differ
+diff --git a/fuzz/corpora/bignum/aeda1eedb74aa52d23a00a8ac81d76b0253d53c6 b/fuzz/corpora/bignum/aeda1eedb74aa52d23a00a8ac81d76b0253d53c6
 new file mode 100644
-index 000000000000..bb53bfe38137
-Binary files /dev/null and b/fuzz/corpora/bndiv/c24004659b1dc93c1d422e27a7c03813772714ad differ
-diff --git a/fuzz/corpora/bndiv/cfd07a01e951548e08f4c0a0fff92503ab3595c8 b/fuzz/corpora/bndiv/cfd07a01e951548e08f4c0a0fff92503ab3595c8
+index 0000000..59079dd
+Binary files /dev/null and b/fuzz/corpora/bignum/aeda1eedb74aa52d23a00a8ac81d76b0253d53c6 differ
+diff --git a/fuzz/corpora/bignum/af3caab87557dc1a275f79cec9f118144bec9bf8 b/fuzz/corpora/bignum/af3caab87557dc1a275f79cec9f118144bec9bf8
 new file mode 100644
-index 000000000000..d630671f4bd4
-Binary files /dev/null and b/fuzz/corpora/bndiv/cfd07a01e951548e08f4c0a0fff92503ab3595c8 differ
-diff --git a/fuzz/corpora/bndiv/d8ff92842d78cf863785bec5f652b1cbfebc538b b/fuzz/corpora/bndiv/d8ff92842d78cf863785bec5f652b1cbfebc538b
+index 0000000..db59807
+Binary files /dev/null and b/fuzz/corpora/bignum/af3caab87557dc1a275f79cec9f118144bec9bf8 differ
+diff --git a/fuzz/corpora/bignum/b0cb4eda2278df4f847f82ba57a84fe77400c9f1 b/fuzz/corpora/bignum/b0cb4eda2278df4f847f82ba57a84fe77400c9f1
 new file mode 100644
-index 000000000000..888276f22169
-Binary files /dev/null and b/fuzz/corpora/bndiv/d8ff92842d78cf863785bec5f652b1cbfebc538b differ
-diff --git a/fuzz/corpora/bndiv/d962753298161149a430ce191d3006056b95a3ec b/fuzz/corpora/bndiv/d962753298161149a430ce191d3006056b95a3ec
+index 0000000..807527f
+Binary files /dev/null and b/fuzz/corpora/bignum/b0cb4eda2278df4f847f82ba57a84fe77400c9f1 differ
+diff --git a/fuzz/corpora/bignum/b1868085865c7fa111a4cb6f86a87633b5886b0e b/fuzz/corpora/bignum/b1868085865c7fa111a4cb6f86a87633b5886b0e
 new file mode 100644
-index 000000000000..132e8930227a
-Binary files /dev/null and b/fuzz/corpora/bndiv/d962753298161149a430ce191d3006056b95a3ec differ
-diff --git a/fuzz/corpora/bndiv/da9d6b8403802420548ee28e446180647cfeefb2 b/fuzz/corpora/bndiv/da9d6b8403802420548ee28e446180647cfeefb2
+index 0000000..25c86bb
+Binary files /dev/null and b/fuzz/corpora/bignum/b1868085865c7fa111a4cb6f86a87633b5886b0e differ
+diff --git a/fuzz/corpora/bignum/b1e9a6832f1451091edb1a8ff0c906df7b02fbf9 b/fuzz/corpora/bignum/b1e9a6832f1451091edb1a8ff0c906df7b02fbf9
 new file mode 100644
-index 000000000000..e13beba54818
-Binary files /dev/null and b/fuzz/corpora/bndiv/da9d6b8403802420548ee28e446180647cfeefb2 differ
-diff --git a/fuzz/corpora/bndiv/e2430a77b271641aaf94790b6d40a419e5d51ac9 b/fuzz/corpora/bndiv/e2430a77b271641aaf94790b6d40a419e5d51ac9
+index 0000000..1adba58
+Binary files /dev/null and b/fuzz/corpora/bignum/b1e9a6832f1451091edb1a8ff0c906df7b02fbf9 differ
+diff --git a/fuzz/corpora/bignum/b2d67a9b6788b07459ddb856b6235aa765bbc590 b/fuzz/corpora/bignum/b2d67a9b6788b07459ddb856b6235aa765bbc590
 new file mode 100644
-index 000000000000..645c2d08b6d5
-Binary files /dev/null and b/fuzz/corpora/bndiv/e2430a77b271641aaf94790b6d40a419e5d51ac9 differ
-diff --git a/fuzz/corpora/bndiv/e6023494335fc8a67bd57aae6df0af5483ae024e b/fuzz/corpora/bndiv/e6023494335fc8a67bd57aae6df0af5483ae024e
+index 0000000..5e38ade
+Binary files /dev/null and b/fuzz/corpora/bignum/b2d67a9b6788b07459ddb856b6235aa765bbc590 differ
+diff --git a/fuzz/corpora/bignum/b2e3dbfa547e52ae0cb6af5974a2f66439e0df58 b/fuzz/corpora/bignum/b2e3dbfa547e52ae0cb6af5974a2f66439e0df58
 new file mode 100644
-index 000000000000..3b02d09440af
-Binary files /dev/null and b/fuzz/corpora/bndiv/e6023494335fc8a67bd57aae6df0af5483ae024e differ
-diff --git a/fuzz/corpora/bndiv/fb06185c69b424c90684c079e54f563ad11c6df9 b/fuzz/corpora/bndiv/fb06185c69b424c90684c079e54f563ad11c6df9
+index 0000000..f35aee3
+Binary files /dev/null and b/fuzz/corpora/bignum/b2e3dbfa547e52ae0cb6af5974a2f66439e0df58 differ
+diff --git a/fuzz/corpora/bignum/b3a9dbfc41322dabd63e934d3108df781c3e9f1d b/fuzz/corpora/bignum/b3a9dbfc41322dabd63e934d3108df781c3e9f1d
 new file mode 100644
-index 000000000000..37f763b52b0b
-Binary files /dev/null and b/fuzz/corpora/bndiv/fb06185c69b424c90684c079e54f563ad11c6df9 differ
-diff --git a/fuzz/corpora/bndiv/fca12ff909c503d5f29f8a90eeb6129246443f11 b/fuzz/corpora/bndiv/fca12ff909c503d5f29f8a90eeb6129246443f11
+index 0000000..ba3d419
+Binary files /dev/null and b/fuzz/corpora/bignum/b3a9dbfc41322dabd63e934d3108df781c3e9f1d differ
+diff --git a/fuzz/corpora/bignum/b4fbfcb5b3fd3af88f1908befd361fc555a824c8 b/fuzz/corpora/bignum/b4fbfcb5b3fd3af88f1908befd361fc555a824c8
 new file mode 100644
-index 000000000000..4253190e0624
-Binary files /dev/null and b/fuzz/corpora/bndiv/fca12ff909c503d5f29f8a90eeb6129246443f11 differ
-diff --git a/fuzz/corpora/bndiv/fefbc63f3e4aa05f755ed0f0fec119b6fd828650 b/fuzz/corpora/bndiv/fefbc63f3e4aa05f755ed0f0fec119b6fd828650
+index 0000000..acae996
+Binary files /dev/null and b/fuzz/corpora/bignum/b4fbfcb5b3fd3af88f1908befd361fc555a824c8 differ
+diff --git a/fuzz/corpora/bignum/b52a7dcb5f33719f2170fa9ef2dcb750d133ea8d b/fuzz/corpora/bignum/b52a7dcb5f33719f2170fa9ef2dcb750d133ea8d
 new file mode 100644
-index 000000000000..c78434046ea5
-Binary files /dev/null and b/fuzz/corpora/bndiv/fefbc63f3e4aa05f755ed0f0fec119b6fd828650 differ
-diff --git a/fuzz/corpora/cms/01b7109f441e7b388e2ee2d35c15e6c68299d868 b/fuzz/corpora/cms/01b7109f441e7b388e2ee2d35c15e6c68299d868
+index 0000000..eb1a82a
+Binary files /dev/null and b/fuzz/corpora/bignum/b52a7dcb5f33719f2170fa9ef2dcb750d133ea8d differ
+diff --git a/fuzz/corpora/bignum/b595cde7b9ee905b4ba6badcdc7a7866b0ad6f7c b/fuzz/corpora/bignum/b595cde7b9ee905b4ba6badcdc7a7866b0ad6f7c
 new file mode 100644
-index 000000000000..6b17032e593a
-Binary files /dev/null and b/fuzz/corpora/cms/01b7109f441e7b388e2ee2d35c15e6c68299d868 differ
-diff --git a/fuzz/corpora/cms/05164d7ba22d6487df90df7bc7f56fb57ec98154 b/fuzz/corpora/cms/05164d7ba22d6487df90df7bc7f56fb57ec98154
+index 0000000..2626c43
+Binary files /dev/null and b/fuzz/corpora/bignum/b595cde7b9ee905b4ba6badcdc7a7866b0ad6f7c differ
+diff --git a/fuzz/corpora/bignum/b67048c6f06c61b5867df86f4d0b4b407f4e2f87 b/fuzz/corpora/bignum/b67048c6f06c61b5867df86f4d0b4b407f4e2f87
 new file mode 100644
-index 000000000000..1a8e6eb8f6e8
-Binary files /dev/null and b/fuzz/corpora/cms/05164d7ba22d6487df90df7bc7f56fb57ec98154 differ
-diff --git a/fuzz/corpora/cms/0542fa36b90992e56503451e940baf784d62772d b/fuzz/corpora/cms/0542fa36b90992e56503451e940baf784d62772d
+index 0000000..c6989b4
+Binary files /dev/null and b/fuzz/corpora/bignum/b67048c6f06c61b5867df86f4d0b4b407f4e2f87 differ
+diff --git a/fuzz/corpora/bignum/b730d549c09235410129b2ecae056f8dbd461b1f b/fuzz/corpora/bignum/b730d549c09235410129b2ecae056f8dbd461b1f
 new file mode 100644
-index 000000000000..e927d7aae3c1
-Binary files /dev/null and b/fuzz/corpora/cms/0542fa36b90992e56503451e940baf784d62772d differ
-diff --git a/fuzz/corpora/cms/103b3808921398754cc7518f62d92be05b0abda6 b/fuzz/corpora/cms/103b3808921398754cc7518f62d92be05b0abda6
+index 0000000..30a2efe
+Binary files /dev/null and b/fuzz/corpora/bignum/b730d549c09235410129b2ecae056f8dbd461b1f differ
+diff --git a/fuzz/corpora/bignum/b86408442d9222cdc0c64870a9c0b7bca011acb7 b/fuzz/corpora/bignum/b86408442d9222cdc0c64870a9c0b7bca011acb7
 new file mode 100644
-index 000000000000..6030476bd5ae
-Binary files /dev/null and b/fuzz/corpora/cms/103b3808921398754cc7518f62d92be05b0abda6 differ
-diff --git a/fuzz/corpora/cms/1182ee7cd46826d3c295e78988ead54a8d72cb73 b/fuzz/corpora/cms/1182ee7cd46826d3c295e78988ead54a8d72cb73
+index 0000000..8c14960
+Binary files /dev/null and b/fuzz/corpora/bignum/b86408442d9222cdc0c64870a9c0b7bca011acb7 differ
+diff --git a/fuzz/corpora/bignum/b86e9787cb8d5ce41984fb7dee449f7aef638f88 b/fuzz/corpora/bignum/b86e9787cb8d5ce41984fb7dee449f7aef638f88
 new file mode 100644
-index 000000000000..28ab707200a6
-Binary files /dev/null and b/fuzz/corpora/cms/1182ee7cd46826d3c295e78988ead54a8d72cb73 differ
-diff --git a/fuzz/corpora/cms/11c290ea44ec7ba0adc1ff652e0a235a3694e208 b/fuzz/corpora/cms/11c290ea44ec7ba0adc1ff652e0a235a3694e208
+index 0000000..805e665
+Binary files /dev/null and b/fuzz/corpora/bignum/b86e9787cb8d5ce41984fb7dee449f7aef638f88 differ
+diff --git a/fuzz/corpora/bignum/b9c61eb6c57ad07579f58f79d5886e3a90bd590e b/fuzz/corpora/bignum/b9c61eb6c57ad07579f58f79d5886e3a90bd590e
 new file mode 100644
-index 000000000000..b942c743bc41
-Binary files /dev/null and b/fuzz/corpora/cms/11c290ea44ec7ba0adc1ff652e0a235a3694e208 differ
-diff --git a/fuzz/corpora/cms/1279bc859cda96a1317b886ce6a2bb597e62ecd0 b/fuzz/corpora/cms/1279bc859cda96a1317b886ce6a2bb597e62ecd0
+index 0000000..096077b
+Binary files /dev/null and b/fuzz/corpora/bignum/b9c61eb6c57ad07579f58f79d5886e3a90bd590e differ
+diff --git a/fuzz/corpora/bignum/bad27945ff0cbb12cd16cd7b4a369c83a298e7ae b/fuzz/corpora/bignum/bad27945ff0cbb12cd16cd7b4a369c83a298e7ae
 new file mode 100644
-index 000000000000..b69ab26822af
-Binary files /dev/null and b/fuzz/corpora/cms/1279bc859cda96a1317b886ce6a2bb597e62ecd0 differ
-diff --git a/fuzz/corpora/cms/15a2dbfca738d81ae19d9ced833c937c4304f2d4 b/fuzz/corpora/cms/15a2dbfca738d81ae19d9ced833c937c4304f2d4
+index 0000000..1e9b5b0
+Binary files /dev/null and b/fuzz/corpora/bignum/bad27945ff0cbb12cd16cd7b4a369c83a298e7ae differ
+diff --git a/fuzz/corpora/bignum/bae7d336ec4bd269bbae7d9cdb5b10f0a157eaaf b/fuzz/corpora/bignum/bae7d336ec4bd269bbae7d9cdb5b10f0a157eaaf
 new file mode 100644
-index 000000000000..5f754cde1344
-Binary files /dev/null and b/fuzz/corpora/cms/15a2dbfca738d81ae19d9ced833c937c4304f2d4 differ
-diff --git a/fuzz/corpora/cms/190a571ab4e42fe3470983905bc429747a74dcf9 b/fuzz/corpora/cms/190a571ab4e42fe3470983905bc429747a74dcf9
+index 0000000..9161a81
+Binary files /dev/null and b/fuzz/corpora/bignum/bae7d336ec4bd269bbae7d9cdb5b10f0a157eaaf differ
+diff --git a/fuzz/corpora/bignum/bbb4303aa041446fb406f6271610bee84df13699 b/fuzz/corpora/bignum/bbb4303aa041446fb406f6271610bee84df13699
 new file mode 100644
-index 000000000000..10c5807c6f75
-Binary files /dev/null and b/fuzz/corpora/cms/190a571ab4e42fe3470983905bc429747a74dcf9 differ
-diff --git a/fuzz/corpora/cms/1fa06fe619395e9bd01f19c20676691191161584 b/fuzz/corpora/cms/1fa06fe619395e9bd01f19c20676691191161584
+index 0000000..205ef75
+Binary files /dev/null and b/fuzz/corpora/bignum/bbb4303aa041446fb406f6271610bee84df13699 differ
+diff --git a/fuzz/corpora/bignum/bc569ce29a57303bdc8bf0b151d557287fad499b b/fuzz/corpora/bignum/bc569ce29a57303bdc8bf0b151d557287fad499b
 new file mode 100644
-index 000000000000..97a3757e182a
-Binary files /dev/null and b/fuzz/corpora/cms/1fa06fe619395e9bd01f19c20676691191161584 differ
-diff --git a/fuzz/corpora/cms/1facbd643ed191035deb0738c7e6629b9fdd19ae b/fuzz/corpora/cms/1facbd643ed191035deb0738c7e6629b9fdd19ae
+index 0000000..0fc440d
+Binary files /dev/null and b/fuzz/corpora/bignum/bc569ce29a57303bdc8bf0b151d557287fad499b differ
+diff --git a/fuzz/corpora/bignum/bc896b78d33d62724e5691c6096fcdd45d43ac6a b/fuzz/corpora/bignum/bc896b78d33d62724e5691c6096fcdd45d43ac6a
 new file mode 100644
-index 000000000000..965fb49c4fc6
-Binary files /dev/null and b/fuzz/corpora/cms/1facbd643ed191035deb0738c7e6629b9fdd19ae differ
-diff --git a/fuzz/corpora/cms/256dc8dc1c1e681c8ec1afaa9c8001b178e79e6a b/fuzz/corpora/cms/256dc8dc1c1e681c8ec1afaa9c8001b178e79e6a
+index 0000000..2ddd88e
+Binary files /dev/null and b/fuzz/corpora/bignum/bc896b78d33d62724e5691c6096fcdd45d43ac6a differ
+diff --git a/fuzz/corpora/bignum/bd93067db277b8dc2a3a29b2137a56cdc6b1ae9f b/fuzz/corpora/bignum/bd93067db277b8dc2a3a29b2137a56cdc6b1ae9f
 new file mode 100644
-index 000000000000..622f68e55033
-Binary files /dev/null and b/fuzz/corpora/cms/256dc8dc1c1e681c8ec1afaa9c8001b178e79e6a differ
-diff --git a/fuzz/corpora/cms/27e476e23ab20fdd530a8c6cbf6fccbdd7130ca5 b/fuzz/corpora/cms/27e476e23ab20fdd530a8c6cbf6fccbdd7130ca5
+index 0000000..44efa4a
+Binary files /dev/null and b/fuzz/corpora/bignum/bd93067db277b8dc2a3a29b2137a56cdc6b1ae9f differ
+diff --git a/fuzz/corpora/bignum/be36f88aa6cc80f1f6c614d0a38131da07b258de b/fuzz/corpora/bignum/be36f88aa6cc80f1f6c614d0a38131da07b258de
 new file mode 100644
-index 000000000000..d8afc5df46ad
-Binary files /dev/null and b/fuzz/corpora/cms/27e476e23ab20fdd530a8c6cbf6fccbdd7130ca5 differ
-diff --git a/fuzz/corpora/cms/2dba92de055c62b8edeb3adb1eac1a854c50d8e3 b/fuzz/corpora/cms/2dba92de055c62b8edeb3adb1eac1a854c50d8e3
+index 0000000..1cfdcea
+Binary files /dev/null and b/fuzz/corpora/bignum/be36f88aa6cc80f1f6c614d0a38131da07b258de differ
+diff --git a/fuzz/corpora/bignum/bfb9ac1d7078ae366c7f6abf3d447830d8bd3243 b/fuzz/corpora/bignum/bfb9ac1d7078ae366c7f6abf3d447830d8bd3243
 new file mode 100644
-index 000000000000..0d026cc0817a
-Binary files /dev/null and b/fuzz/corpora/cms/2dba92de055c62b8edeb3adb1eac1a854c50d8e3 differ
-diff --git a/fuzz/corpora/cms/2e71da225ce16f8362be5c00d860103b23e381b6 b/fuzz/corpora/cms/2e71da225ce16f8362be5c00d860103b23e381b6
+index 0000000..590dd03
+Binary files /dev/null and b/fuzz/corpora/bignum/bfb9ac1d7078ae366c7f6abf3d447830d8bd3243 differ
+diff --git a/fuzz/corpora/bignum/bfe99b92105e713b3e4e9af958ba558bbc9e4371 b/fuzz/corpora/bignum/bfe99b92105e713b3e4e9af958ba558bbc9e4371
 new file mode 100644
-index 000000000000..163496d7593f
-Binary files /dev/null and b/fuzz/corpora/cms/2e71da225ce16f8362be5c00d860103b23e381b6 differ
-diff --git a/fuzz/corpora/cms/2f45a3d554d7b6cc164c75c5a77259ae92c3c2fd b/fuzz/corpora/cms/2f45a3d554d7b6cc164c75c5a77259ae92c3c2fd
+index 0000000..d465b98
+Binary files /dev/null and b/fuzz/corpora/bignum/bfe99b92105e713b3e4e9af958ba558bbc9e4371 differ
+diff --git a/fuzz/corpora/bignum/c0a4185497eead63d7e7eda4b1a0a10ccb8b2879 b/fuzz/corpora/bignum/c0a4185497eead63d7e7eda4b1a0a10ccb8b2879
 new file mode 100644
-index 000000000000..aaedb3c2b254
-Binary files /dev/null and b/fuzz/corpora/cms/2f45a3d554d7b6cc164c75c5a77259ae92c3c2fd differ
-diff --git a/fuzz/corpora/cms/307ba61ee17b71edcf973f99b1541a67659a2ec2 b/fuzz/corpora/cms/307ba61ee17b71edcf973f99b1541a67659a2ec2
+index 0000000..dc347f2
+Binary files /dev/null and b/fuzz/corpora/bignum/c0a4185497eead63d7e7eda4b1a0a10ccb8b2879 differ
+diff --git a/fuzz/corpora/bignum/c0a90a79b5a172dff33e3b053d2f4700c6549740 b/fuzz/corpora/bignum/c0a90a79b5a172dff33e3b053d2f4700c6549740
 new file mode 100644
-index 000000000000..01b2b3d7c3f0
-Binary files /dev/null and b/fuzz/corpora/cms/307ba61ee17b71edcf973f99b1541a67659a2ec2 differ
-diff --git a/fuzz/corpora/cms/3103388059933b798284f178ddd8c9b17be0781c b/fuzz/corpora/cms/3103388059933b798284f178ddd8c9b17be0781c
+index 0000000..b8c8d5a
+Binary files /dev/null and b/fuzz/corpora/bignum/c0a90a79b5a172dff33e3b053d2f4700c6549740 differ
+diff --git a/fuzz/corpora/bignum/c0bccbae706d198a28ba5a2567b72124ccbb06f0 b/fuzz/corpora/bignum/c0bccbae706d198a28ba5a2567b72124ccbb06f0
 new file mode 100644
-index 000000000000..d9ea09b095cb
-Binary files /dev/null and b/fuzz/corpora/cms/3103388059933b798284f178ddd8c9b17be0781c differ
-diff --git a/fuzz/corpora/cms/315847d8692bce2b753031b8fcd9302a68da2e44 b/fuzz/corpora/cms/315847d8692bce2b753031b8fcd9302a68da2e44
+index 0000000..37ba7eb
+Binary files /dev/null and b/fuzz/corpora/bignum/c0bccbae706d198a28ba5a2567b72124ccbb06f0 differ
+diff --git a/fuzz/corpora/bignum/c1241a5bc797f9c955fda6e7fc2dffe67472304d b/fuzz/corpora/bignum/c1241a5bc797f9c955fda6e7fc2dffe67472304d
 new file mode 100644
-index 000000000000..667317df0dc6
-Binary files /dev/null and b/fuzz/corpora/cms/315847d8692bce2b753031b8fcd9302a68da2e44 differ
-diff --git a/fuzz/corpora/cms/34344f75f42e663954c7bef918fd05eeeb302748 b/fuzz/corpora/cms/34344f75f42e663954c7bef918fd05eeeb302748
+index 0000000..99bff9b
+Binary files /dev/null and b/fuzz/corpora/bignum/c1241a5bc797f9c955fda6e7fc2dffe67472304d differ
+diff --git a/fuzz/corpora/bignum/c220da597bb5869df7edb6628449d999b9111353 b/fuzz/corpora/bignum/c220da597bb5869df7edb6628449d999b9111353
 new file mode 100644
-index 000000000000..c9170faa136b
-Binary files /dev/null and b/fuzz/corpora/cms/34344f75f42e663954c7bef918fd05eeeb302748 differ
-diff --git a/fuzz/corpora/cms/38d62a30a6d834ff14d1342272f569830f896ed7 b/fuzz/corpora/cms/38d62a30a6d834ff14d1342272f569830f896ed7
+index 0000000..6e489c5
+Binary files /dev/null and b/fuzz/corpora/bignum/c220da597bb5869df7edb6628449d999b9111353 differ
+diff --git a/fuzz/corpora/bignum/c2d239075efe974b6b8b178cba6455e612760beb b/fuzz/corpora/bignum/c2d239075efe974b6b8b178cba6455e612760beb
 new file mode 100644
-index 000000000000..0bdd93cd0b7a
-Binary files /dev/null and b/fuzz/corpora/cms/38d62a30a6d834ff14d1342272f569830f896ed7 differ
-diff --git a/fuzz/corpora/cms/39ea5d5f734a66a48bf69fea68aaa8dad7dc0831 b/fuzz/corpora/cms/39ea5d5f734a66a48bf69fea68aaa8dad7dc0831
+index 0000000..f19496d
+Binary files /dev/null and b/fuzz/corpora/bignum/c2d239075efe974b6b8b178cba6455e612760beb differ
+diff --git a/fuzz/corpora/bignum/c4094266d21263d9d747b9fe6ff5a2630bb4bdf0 b/fuzz/corpora/bignum/c4094266d21263d9d747b9fe6ff5a2630bb4bdf0
 new file mode 100644
-index 000000000000..1fac962d4b05
-Binary files /dev/null and b/fuzz/corpora/cms/39ea5d5f734a66a48bf69fea68aaa8dad7dc0831 differ
-diff --git a/fuzz/corpora/cms/41e58422ea447945a44e078badd9bb3296ecde88 b/fuzz/corpora/cms/41e58422ea447945a44e078badd9bb3296ecde88
+index 0000000..3291d12
+Binary files /dev/null and b/fuzz/corpora/bignum/c4094266d21263d9d747b9fe6ff5a2630bb4bdf0 differ
+diff --git a/fuzz/corpora/bignum/c49c54f2200cf84b8344108682af07ed669ef769 b/fuzz/corpora/bignum/c49c54f2200cf84b8344108682af07ed669ef769
 new file mode 100644
-index 000000000000..a5158d8094ed
-Binary files /dev/null and b/fuzz/corpora/cms/41e58422ea447945a44e078badd9bb3296ecde88 differ
-diff --git a/fuzz/corpora/cms/446c4334ff381a8883635c4ad33de7a74a0354c9 b/fuzz/corpora/cms/446c4334ff381a8883635c4ad33de7a74a0354c9
+index 0000000..26c7a57
+Binary files /dev/null and b/fuzz/corpora/bignum/c49c54f2200cf84b8344108682af07ed669ef769 differ
+diff --git a/fuzz/corpora/bignum/c582d26ab53ebb3bd22941b3d6ba0f801ab92fc5 b/fuzz/corpora/bignum/c582d26ab53ebb3bd22941b3d6ba0f801ab92fc5
 new file mode 100644
-index 000000000000..46bd64540728
-Binary files /dev/null and b/fuzz/corpora/cms/446c4334ff381a8883635c4ad33de7a74a0354c9 differ
-diff --git a/fuzz/corpora/cms/4533459e899404d1710e5424756a8ea29bd41cdc b/fuzz/corpora/cms/4533459e899404d1710e5424756a8ea29bd41cdc
+index 0000000..2dbd6b7
+Binary files /dev/null and b/fuzz/corpora/bignum/c582d26ab53ebb3bd22941b3d6ba0f801ab92fc5 differ
+diff --git a/fuzz/corpora/bignum/c7761a99a65d35631394cdecd8573906c2e70941 b/fuzz/corpora/bignum/c7761a99a65d35631394cdecd8573906c2e70941
 new file mode 100644
-index 000000000000..0dc42962ddd0
-Binary files /dev/null and b/fuzz/corpora/cms/4533459e899404d1710e5424756a8ea29bd41cdc differ
-diff --git a/fuzz/corpora/cms/46c254df46673e95ca3d8953b63475ca626ae07b b/fuzz/corpora/cms/46c254df46673e95ca3d8953b63475ca626ae07b
+index 0000000..523eca4
+Binary files /dev/null and b/fuzz/corpora/bignum/c7761a99a65d35631394cdecd8573906c2e70941 differ
+diff --git a/fuzz/corpora/bignum/c8819124d2309d3c3113e71693a4a1de1eac715e b/fuzz/corpora/bignum/c8819124d2309d3c3113e71693a4a1de1eac715e
 new file mode 100644
-index 000000000000..e0835e789e1d
-Binary files /dev/null and b/fuzz/corpora/cms/46c254df46673e95ca3d8953b63475ca626ae07b differ
-diff --git a/fuzz/corpora/cms/47fbcee2713d2f08d3327752a077ecab6ff7345e b/fuzz/corpora/cms/47fbcee2713d2f08d3327752a077ecab6ff7345e
+index 0000000..f7e4cd2
+Binary files /dev/null and b/fuzz/corpora/bignum/c8819124d2309d3c3113e71693a4a1de1eac715e differ
+diff --git a/fuzz/corpora/bignum/c8c4af39849db822157a7b0404bd56f7c9ffe7a7 b/fuzz/corpora/bignum/c8c4af39849db822157a7b0404bd56f7c9ffe7a7
 new file mode 100644
-index 000000000000..f0b87ad6779c
-Binary files /dev/null and b/fuzz/corpora/cms/47fbcee2713d2f08d3327752a077ecab6ff7345e differ
-diff --git a/fuzz/corpora/cms/4890c33b8966a2d064c946556fc6ff23e80b978b b/fuzz/corpora/cms/4890c33b8966a2d064c946556fc6ff23e80b978b
+index 0000000..b6ef586
+Binary files /dev/null and b/fuzz/corpora/bignum/c8c4af39849db822157a7b0404bd56f7c9ffe7a7 differ
+diff --git a/fuzz/corpora/bignum/ca1004c966a1608ecba3f36a2430993fd0769b6e b/fuzz/corpora/bignum/ca1004c966a1608ecba3f36a2430993fd0769b6e
 new file mode 100644
-index 000000000000..f5d73f7a323c
-Binary files /dev/null and b/fuzz/corpora/cms/4890c33b8966a2d064c946556fc6ff23e80b978b differ
-diff --git a/fuzz/corpora/cms/497df2e130cee5690fac94f5651ca731d49ffc9d b/fuzz/corpora/cms/497df2e130cee5690fac94f5651ca731d49ffc9d
+index 0000000..1712931
+Binary files /dev/null and b/fuzz/corpora/bignum/ca1004c966a1608ecba3f36a2430993fd0769b6e differ
+diff --git a/fuzz/corpora/bignum/ca4122e206e057ab0056d4c63cd61092a2d6f601 b/fuzz/corpora/bignum/ca4122e206e057ab0056d4c63cd61092a2d6f601
 new file mode 100644
-index 000000000000..0a96a3c03b45
-Binary files /dev/null and b/fuzz/corpora/cms/497df2e130cee5690fac94f5651ca731d49ffc9d differ
-diff --git a/fuzz/corpora/cms/4a56107d0593e37d9100976aaba2b933c1b2b0f0 b/fuzz/corpora/cms/4a56107d0593e37d9100976aaba2b933c1b2b0f0
+index 0000000..b30212e
+Binary files /dev/null and b/fuzz/corpora/bignum/ca4122e206e057ab0056d4c63cd61092a2d6f601 differ
+diff --git a/fuzz/corpora/bignum/cadaeab164330e2ff62b8ff98b7e80a94d97642d b/fuzz/corpora/bignum/cadaeab164330e2ff62b8ff98b7e80a94d97642d
 new file mode 100644
-index 000000000000..49e362638248
-Binary files /dev/null and b/fuzz/corpora/cms/4a56107d0593e37d9100976aaba2b933c1b2b0f0 differ
-diff --git a/fuzz/corpora/cms/4ac026168d2602f027d9dfe2fbdb0abb1858ff88 b/fuzz/corpora/cms/4ac026168d2602f027d9dfe2fbdb0abb1858ff88
+index 0000000..b033ada
+Binary files /dev/null and b/fuzz/corpora/bignum/cadaeab164330e2ff62b8ff98b7e80a94d97642d differ
+diff --git a/fuzz/corpora/bignum/cbf52cea88b45fe80c820dad5b2760515c220f0f b/fuzz/corpora/bignum/cbf52cea88b45fe80c820dad5b2760515c220f0f
 new file mode 100644
-index 000000000000..8e577f163439
-Binary files /dev/null and b/fuzz/corpora/cms/4ac026168d2602f027d9dfe2fbdb0abb1858ff88 differ
-diff --git a/fuzz/corpora/cms/4cc37bc6ae8adb41a9f3188d6b1cd4d3d5d34991 b/fuzz/corpora/cms/4cc37bc6ae8adb41a9f3188d6b1cd4d3d5d34991
+index 0000000..5a4efb7
+Binary files /dev/null and b/fuzz/corpora/bignum/cbf52cea88b45fe80c820dad5b2760515c220f0f differ
+diff --git a/fuzz/corpora/bignum/cce74ca1e2bce5adf81d6b3e8fac1345526613b6 b/fuzz/corpora/bignum/cce74ca1e2bce5adf81d6b3e8fac1345526613b6
 new file mode 100644
-index 000000000000..44fd991855a6
-Binary files /dev/null and b/fuzz/corpora/cms/4cc37bc6ae8adb41a9f3188d6b1cd4d3d5d34991 differ
-diff --git a/fuzz/corpora/cms/4cfd609b7ce6e3fe479a0f5398ee25ce6befbd5c b/fuzz/corpora/cms/4cfd609b7ce6e3fe479a0f5398ee25ce6befbd5c
+index 0000000..596123c
+Binary files /dev/null and b/fuzz/corpora/bignum/cce74ca1e2bce5adf81d6b3e8fac1345526613b6 differ
+diff --git a/fuzz/corpora/bignum/cd4e0ea481c418a1b6be5ba23094f842b707c1b7 b/fuzz/corpora/bignum/cd4e0ea481c418a1b6be5ba23094f842b707c1b7
 new file mode 100644
-index 000000000000..5b03634e84a7
-Binary files /dev/null and b/fuzz/corpora/cms/4cfd609b7ce6e3fe479a0f5398ee25ce6befbd5c differ
-diff --git a/fuzz/corpora/cms/4ddfe4de8b36d83f1d9b8fb8db50bf1417a9f19b b/fuzz/corpora/cms/4ddfe4de8b36d83f1d9b8fb8db50bf1417a9f19b
+index 0000000..20ca13f
+Binary files /dev/null and b/fuzz/corpora/bignum/cd4e0ea481c418a1b6be5ba23094f842b707c1b7 differ
+diff --git a/fuzz/corpora/bignum/cf5e53925e1803230015d82ff80bb72a93a92ebe b/fuzz/corpora/bignum/cf5e53925e1803230015d82ff80bb72a93a92ebe
 new file mode 100644
-index 000000000000..469e2e39787c
-Binary files /dev/null and b/fuzz/corpora/cms/4ddfe4de8b36d83f1d9b8fb8db50bf1417a9f19b differ
-diff --git a/fuzz/corpora/cms/5125503a46edf9e6a36674ca1fc95b3d8c2eadbb b/fuzz/corpora/cms/5125503a46edf9e6a36674ca1fc95b3d8c2eadbb
+index 0000000..27515dd
+Binary files /dev/null and b/fuzz/corpora/bignum/cf5e53925e1803230015d82ff80bb72a93a92ebe differ
+diff --git a/fuzz/corpora/bignum/d0f09dea5c407a656e05cd85c7364705201b5bbb b/fuzz/corpora/bignum/d0f09dea5c407a656e05cd85c7364705201b5bbb
 new file mode 100644
-index 000000000000..c4463edabfa8
-Binary files /dev/null and b/fuzz/corpora/cms/5125503a46edf9e6a36674ca1fc95b3d8c2eadbb differ
-diff --git a/fuzz/corpora/cms/55e5a1832a2badbbdd54801dcc9ad1209ae4ea18 b/fuzz/corpora/cms/55e5a1832a2badbbdd54801dcc9ad1209ae4ea18
+index 0000000..622702d
+Binary files /dev/null and b/fuzz/corpora/bignum/d0f09dea5c407a656e05cd85c7364705201b5bbb differ
+diff --git a/fuzz/corpora/bignum/d1c3a495303caf0393bd46392680ed3f191e45b9 b/fuzz/corpora/bignum/d1c3a495303caf0393bd46392680ed3f191e45b9
 new file mode 100644
-index 000000000000..112bfc288caa
-Binary files /dev/null and b/fuzz/corpora/cms/55e5a1832a2badbbdd54801dcc9ad1209ae4ea18 differ
-diff --git a/fuzz/corpora/cms/565d9336e95032ff9f94f4f5f6ada7c365d0b421 b/fuzz/corpora/cms/565d9336e95032ff9f94f4f5f6ada7c365d0b421
+index 0000000..b4f6250
+Binary files /dev/null and b/fuzz/corpora/bignum/d1c3a495303caf0393bd46392680ed3f191e45b9 differ
+diff --git a/fuzz/corpora/bignum/d37d4338b259c6703ed7e1f689a648095577d10b b/fuzz/corpora/bignum/d37d4338b259c6703ed7e1f689a648095577d10b
 new file mode 100644
-index 000000000000..4103279beaa3
-Binary files /dev/null and b/fuzz/corpora/cms/565d9336e95032ff9f94f4f5f6ada7c365d0b421 differ
-diff --git a/fuzz/corpora/cms/577cf11aa17227bf4e9d84eed984aba3b0b0dce3 b/fuzz/corpora/cms/577cf11aa17227bf4e9d84eed984aba3b0b0dce3
+index 0000000..d88fe09
+Binary files /dev/null and b/fuzz/corpora/bignum/d37d4338b259c6703ed7e1f689a648095577d10b differ
+diff --git a/fuzz/corpora/bignum/d3aefac2d78b866ed49019cc62db145982505449 b/fuzz/corpora/bignum/d3aefac2d78b866ed49019cc62db145982505449
 new file mode 100644
-index 000000000000..9d7bdc602939
-Binary files /dev/null and b/fuzz/corpora/cms/577cf11aa17227bf4e9d84eed984aba3b0b0dce3 differ
-diff --git a/fuzz/corpora/cms/57ffbcd0ee614ac4ec33b3f6379b81f7b82ad206 b/fuzz/corpora/cms/57ffbcd0ee614ac4ec33b3f6379b81f7b82ad206
+index 0000000..167a95d
+Binary files /dev/null and b/fuzz/corpora/bignum/d3aefac2d78b866ed49019cc62db145982505449 differ
+diff --git a/fuzz/corpora/bignum/d4302ca1a16abcdb71f348f4f606d8eaa12473fe b/fuzz/corpora/bignum/d4302ca1a16abcdb71f348f4f606d8eaa12473fe
 new file mode 100644
-index 000000000000..a19fa0bcef85
-Binary files /dev/null and b/fuzz/corpora/cms/57ffbcd0ee614ac4ec33b3f6379b81f7b82ad206 differ
-diff --git a/fuzz/corpora/cms/5bd2fdd88eb217a1ef5764f09ef79df34ecf3035 b/fuzz/corpora/cms/5bd2fdd88eb217a1ef5764f09ef79df34ecf3035
+index 0000000..8e005f9
+Binary files /dev/null and b/fuzz/corpora/bignum/d4302ca1a16abcdb71f348f4f606d8eaa12473fe differ
+diff --git a/fuzz/corpora/bignum/d4dc97aa7dcbcf72f59bc8d1d2b154ea4d9e6ce3 b/fuzz/corpora/bignum/d4dc97aa7dcbcf72f59bc8d1d2b154ea4d9e6ce3
 new file mode 100644
-index 000000000000..0e8c589d4e44
-Binary files /dev/null and b/fuzz/corpora/cms/5bd2fdd88eb217a1ef5764f09ef79df34ecf3035 differ
-diff --git a/fuzz/corpora/cms/60d77c08d4aab46255e64be1c23baca55a80d55a b/fuzz/corpora/cms/60d77c08d4aab46255e64be1c23baca55a80d55a
+index 0000000..6a09abf
+Binary files /dev/null and b/fuzz/corpora/bignum/d4dc97aa7dcbcf72f59bc8d1d2b154ea4d9e6ce3 differ
+diff --git a/fuzz/corpora/bignum/d50eeff7da0e3935875579a4389fe7b4aa570d9a b/fuzz/corpora/bignum/d50eeff7da0e3935875579a4389fe7b4aa570d9a
 new file mode 100644
-index 000000000000..f215e896010b
-Binary files /dev/null and b/fuzz/corpora/cms/60d77c08d4aab46255e64be1c23baca55a80d55a differ
-diff --git a/fuzz/corpora/cms/62033000193524ee8a1ce645909e01dde859057a b/fuzz/corpora/cms/62033000193524ee8a1ce645909e01dde859057a
+index 0000000..bed6cdf
+Binary files /dev/null and b/fuzz/corpora/bignum/d50eeff7da0e3935875579a4389fe7b4aa570d9a differ
+diff --git a/fuzz/corpora/bignum/d54f61745afca52e5fb0d11c76f88b974901ef5c b/fuzz/corpora/bignum/d54f61745afca52e5fb0d11c76f88b974901ef5c
 new file mode 100644
-index 000000000000..1d138d501286
-Binary files /dev/null and b/fuzz/corpora/cms/62033000193524ee8a1ce645909e01dde859057a differ
+index 0000000..12a5143
+Binary files /dev/null and b/fuzz/corpora/bignum/d54f61745afca52e5fb0d11c76f88b974901ef5c differ
+diff --git a/fuzz/corpora/bignum/d55aa044953344d9a0a30662fa8b4ea83e0b1c53 b/fuzz/corpora/bignum/d55aa044953344d9a0a30662fa8b4ea83e0b1c53
+new file mode 100644
+index 0000000..c72339e
+Binary files /dev/null and b/fuzz/corpora/bignum/d55aa044953344d9a0a30662fa8b4ea83e0b1c53 differ
+diff --git a/fuzz/corpora/bignum/d58a8dd731693c3355345d20cc1010ee4857de06 b/fuzz/corpora/bignum/d58a8dd731693c3355345d20cc1010ee4857de06
+new file mode 100644
+index 0000000..36a5836
+Binary files /dev/null and b/fuzz/corpora/bignum/d58a8dd731693c3355345d20cc1010ee4857de06 differ
+diff --git a/fuzz/corpora/bignum/d60b57b6eb62f98ffc1e4aa34b384550daa3b2cf b/fuzz/corpora/bignum/d60b57b6eb62f98ffc1e4aa34b384550daa3b2cf
+new file mode 100644
+index 0000000..d7ef3f1
+Binary files /dev/null and b/fuzz/corpora/bignum/d60b57b6eb62f98ffc1e4aa34b384550daa3b2cf differ
+diff --git a/fuzz/corpora/bignum/d76f23fcf91c960b5b57342f417fcd05f884409f b/fuzz/corpora/bignum/d76f23fcf91c960b5b57342f417fcd05f884409f
+new file mode 100644
+index 0000000..62a4a72
+Binary files /dev/null and b/fuzz/corpora/bignum/d76f23fcf91c960b5b57342f417fcd05f884409f differ
+diff --git a/fuzz/corpora/bignum/d81149fef0561622dae60072c76dd6df7fd26b54 b/fuzz/corpora/bignum/d81149fef0561622dae60072c76dd6df7fd26b54
+new file mode 100644
+index 0000000..016b633
+Binary files /dev/null and b/fuzz/corpora/bignum/d81149fef0561622dae60072c76dd6df7fd26b54 differ
+diff --git a/fuzz/corpora/bignum/d835fd679d0ff5e68543ee63fa87bf164261ecb0 b/fuzz/corpora/bignum/d835fd679d0ff5e68543ee63fa87bf164261ecb0
+new file mode 100644
+index 0000000..f22d46a
+Binary files /dev/null and b/fuzz/corpora/bignum/d835fd679d0ff5e68543ee63fa87bf164261ecb0 differ
+diff --git a/fuzz/corpora/bignum/d88500f30cc868a87e1f13018f7e2fec9b71eb86 b/fuzz/corpora/bignum/d88500f30cc868a87e1f13018f7e2fec9b71eb86
+new file mode 100644
+index 0000000..716cff7
+Binary files /dev/null and b/fuzz/corpora/bignum/d88500f30cc868a87e1f13018f7e2fec9b71eb86 differ
+diff --git a/fuzz/corpora/bignum/d8d658f5043d7240d0e6b5174903394185531e09 b/fuzz/corpora/bignum/d8d658f5043d7240d0e6b5174903394185531e09
+new file mode 100644
+index 0000000..f314509
+Binary files /dev/null and b/fuzz/corpora/bignum/d8d658f5043d7240d0e6b5174903394185531e09 differ
+diff --git a/fuzz/corpora/bignum/d94272b3af87c591bccf22b647bc355b7fc50030 b/fuzz/corpora/bignum/d94272b3af87c591bccf22b647bc355b7fc50030
+new file mode 100644
+index 0000000..1a43b2e
+Binary files /dev/null and b/fuzz/corpora/bignum/d94272b3af87c591bccf22b647bc355b7fc50030 differ
+diff --git a/fuzz/corpora/bignum/d9b28ccd0d8f01d9c73575285342241713fee2ab b/fuzz/corpora/bignum/d9b28ccd0d8f01d9c73575285342241713fee2ab
+new file mode 100644
+index 0000000..64ef949
+Binary files /dev/null and b/fuzz/corpora/bignum/d9b28ccd0d8f01d9c73575285342241713fee2ab differ
+diff --git a/fuzz/corpora/bignum/da39a3ee5e6b4b0d3255bfef95601890afd80709 b/fuzz/corpora/bignum/da39a3ee5e6b4b0d3255bfef95601890afd80709
+new file mode 100644
+index 0000000..e69de29
+diff --git a/fuzz/corpora/bignum/da5370dcbd6ea928bf2772d5de6f8e6d6022c9e6 b/fuzz/corpora/bignum/da5370dcbd6ea928bf2772d5de6f8e6d6022c9e6
+new file mode 100644
+index 0000000..f2718bd
+Binary files /dev/null and b/fuzz/corpora/bignum/da5370dcbd6ea928bf2772d5de6f8e6d6022c9e6 differ
+diff --git a/fuzz/corpora/bignum/da551e52ae79f9c1aeb6a97aa61735c83eacb3b1 b/fuzz/corpora/bignum/da551e52ae79f9c1aeb6a97aa61735c83eacb3b1
+new file mode 100644
+index 0000000..4918ee2
+Binary files /dev/null and b/fuzz/corpora/bignum/da551e52ae79f9c1aeb6a97aa61735c83eacb3b1 differ
+diff --git a/fuzz/corpora/bignum/db7709a870d6940aacb1e6f33dd5d0defacbc7e5 b/fuzz/corpora/bignum/db7709a870d6940aacb1e6f33dd5d0defacbc7e5
+new file mode 100644
+index 0000000..25986b1
+Binary files /dev/null and b/fuzz/corpora/bignum/db7709a870d6940aacb1e6f33dd5d0defacbc7e5 differ
+diff --git a/fuzz/corpora/bignum/db86f8b3f1de261a583c7217640e03824d354ad3 b/fuzz/corpora/bignum/db86f8b3f1de261a583c7217640e03824d354ad3
+new file mode 100644
+index 0000000..c227346
+Binary files /dev/null and b/fuzz/corpora/bignum/db86f8b3f1de261a583c7217640e03824d354ad3 differ
+diff --git a/fuzz/corpora/bignum/dbd19f9740bc45f57f4d05ded88c1ecc7e6f5b86 b/fuzz/corpora/bignum/dbd19f9740bc45f57f4d05ded88c1ecc7e6f5b86
+new file mode 100644
+index 0000000..9153135
+Binary files /dev/null and b/fuzz/corpora/bignum/dbd19f9740bc45f57f4d05ded88c1ecc7e6f5b86 differ
+diff --git a/fuzz/corpora/bignum/dc68470229f7c1791168f3386688dbe5ef9259c3 b/fuzz/corpora/bignum/dc68470229f7c1791168f3386688dbe5ef9259c3
+new file mode 100644
+index 0000000..bcefd00
+Binary files /dev/null and b/fuzz/corpora/bignum/dc68470229f7c1791168f3386688dbe5ef9259c3 differ
+diff --git a/fuzz/corpora/bignum/dd5124b13f42e797169b89f8cde23589e0fb1350 b/fuzz/corpora/bignum/dd5124b13f42e797169b89f8cde23589e0fb1350
+new file mode 100644
+index 0000000..29202cf
+Binary files /dev/null and b/fuzz/corpora/bignum/dd5124b13f42e797169b89f8cde23589e0fb1350 differ
+diff --git a/fuzz/corpora/bignum/dedbe1f9b6005f34492db4e3375b57469659b99f b/fuzz/corpora/bignum/dedbe1f9b6005f34492db4e3375b57469659b99f
+new file mode 100644
+index 0000000..c8f4754
+Binary files /dev/null and b/fuzz/corpora/bignum/dedbe1f9b6005f34492db4e3375b57469659b99f differ
+diff --git a/fuzz/corpora/bignum/dfa12e8255a314a863127481591f32da00a1d3e5 b/fuzz/corpora/bignum/dfa12e8255a314a863127481591f32da00a1d3e5
+new file mode 100644
+index 0000000..59f7831
+Binary files /dev/null and b/fuzz/corpora/bignum/dfa12e8255a314a863127481591f32da00a1d3e5 differ
+diff --git a/fuzz/corpora/bignum/e02b09b3571e95aba869e9c6edfcea0e9d5e4acd b/fuzz/corpora/bignum/e02b09b3571e95aba869e9c6edfcea0e9d5e4acd
+new file mode 100644
+index 0000000..0af7d6d
+Binary files /dev/null and b/fuzz/corpora/bignum/e02b09b3571e95aba869e9c6edfcea0e9d5e4acd differ
+diff --git a/fuzz/corpora/bignum/e0c1183edf61500c4b318d3c52aa1a616e7d9bdb b/fuzz/corpora/bignum/e0c1183edf61500c4b318d3c52aa1a616e7d9bdb
+new file mode 100644
+index 0000000..a85a6f4
+Binary files /dev/null and b/fuzz/corpora/bignum/e0c1183edf61500c4b318d3c52aa1a616e7d9bdb differ
+diff --git a/fuzz/corpora/bignum/e1b35c61664ea0292a5ee4bd34833feea661fd05 b/fuzz/corpora/bignum/e1b35c61664ea0292a5ee4bd34833feea661fd05
+new file mode 100644
+index 0000000..554de1f
+Binary files /dev/null and b/fuzz/corpora/bignum/e1b35c61664ea0292a5ee4bd34833feea661fd05 differ
+diff --git a/fuzz/corpora/bignum/e1e284a78501c64be10f8a9af6075d06a901a145 b/fuzz/corpora/bignum/e1e284a78501c64be10f8a9af6075d06a901a145
+new file mode 100644
+index 0000000..79cb793
+Binary files /dev/null and b/fuzz/corpora/bignum/e1e284a78501c64be10f8a9af6075d06a901a145 differ
+diff --git a/fuzz/corpora/bignum/e3008f2711abe6e4cb2b94cb0260817c096a216e b/fuzz/corpora/bignum/e3008f2711abe6e4cb2b94cb0260817c096a216e
+new file mode 100644
+index 0000000..432c95e
+Binary files /dev/null and b/fuzz/corpora/bignum/e3008f2711abe6e4cb2b94cb0260817c096a216e differ
+diff --git a/fuzz/corpora/bignum/e39e4dca4106c45da078be7bf069591d722283a5 b/fuzz/corpora/bignum/e39e4dca4106c45da078be7bf069591d722283a5
+new file mode 100644
+index 0000000..bf3da25
+Binary files /dev/null and b/fuzz/corpora/bignum/e39e4dca4106c45da078be7bf069591d722283a5 differ
+diff --git a/fuzz/corpora/bignum/e53feb0e34ee30533a5bcea54a3687d56f55d3d6 b/fuzz/corpora/bignum/e53feb0e34ee30533a5bcea54a3687d56f55d3d6
+new file mode 100644
+index 0000000..3046f07
+Binary files /dev/null and b/fuzz/corpora/bignum/e53feb0e34ee30533a5bcea54a3687d56f55d3d6 differ
+diff --git a/fuzz/corpora/bignum/e59db76f924676be463c5aa68c13bb3457cfb020 b/fuzz/corpora/bignum/e59db76f924676be463c5aa68c13bb3457cfb020
+new file mode 100644
+index 0000000..9d8e5d9
+Binary files /dev/null and b/fuzz/corpora/bignum/e59db76f924676be463c5aa68c13bb3457cfb020 differ
+diff --git a/fuzz/corpora/bignum/e5da763f185c240ebcc5345207eca18a4f8194a4 b/fuzz/corpora/bignum/e5da763f185c240ebcc5345207eca18a4f8194a4
+new file mode 100644
+index 0000000..2c527f6
+Binary files /dev/null and b/fuzz/corpora/bignum/e5da763f185c240ebcc5345207eca18a4f8194a4 differ
+diff --git a/fuzz/corpora/bignum/e79a2a3370a4f7249af7995f776aea90e511c353 b/fuzz/corpora/bignum/e79a2a3370a4f7249af7995f776aea90e511c353
+new file mode 100644
+index 0000000..e404551
+Binary files /dev/null and b/fuzz/corpora/bignum/e79a2a3370a4f7249af7995f776aea90e511c353 differ
+diff --git a/fuzz/corpora/bignum/e83c97778c15858d4f19cce901eacbe1cddc83ea b/fuzz/corpora/bignum/e83c97778c15858d4f19cce901eacbe1cddc83ea
+new file mode 100644
+index 0000000..72682cc
+Binary files /dev/null and b/fuzz/corpora/bignum/e83c97778c15858d4f19cce901eacbe1cddc83ea differ
+diff --git a/fuzz/corpora/bignum/e8f5c5e7f18c0437992a9da521f7ce22c2db1573 b/fuzz/corpora/bignum/e8f5c5e7f18c0437992a9da521f7ce22c2db1573
+new file mode 100644
+index 0000000..f1c20c7
+Binary files /dev/null and b/fuzz/corpora/bignum/e8f5c5e7f18c0437992a9da521f7ce22c2db1573 differ
+diff --git a/fuzz/corpora/bignum/e9475c56725676a03c23602d810bf47fea49123c b/fuzz/corpora/bignum/e9475c56725676a03c23602d810bf47fea49123c
+new file mode 100644
+index 0000000..02c695e
+Binary files /dev/null and b/fuzz/corpora/bignum/e9475c56725676a03c23602d810bf47fea49123c differ
+diff --git a/fuzz/corpora/bignum/e9e2ca60d98b2915614de33bcd72a6da200021c0 b/fuzz/corpora/bignum/e9e2ca60d98b2915614de33bcd72a6da200021c0
+new file mode 100644
+index 0000000..ef6a897
+Binary files /dev/null and b/fuzz/corpora/bignum/e9e2ca60d98b2915614de33bcd72a6da200021c0 differ
+diff --git a/fuzz/corpora/bignum/e9e7b3a09582f6a0461027db07c74bacde736c82 b/fuzz/corpora/bignum/e9e7b3a09582f6a0461027db07c74bacde736c82
+new file mode 100644
+index 0000000..c8f1ef5
+Binary files /dev/null and b/fuzz/corpora/bignum/e9e7b3a09582f6a0461027db07c74bacde736c82 differ
+diff --git a/fuzz/corpora/bignum/ea56b6d83ae13bad869e9e608f328e923f61633a b/fuzz/corpora/bignum/ea56b6d83ae13bad869e9e608f328e923f61633a
+new file mode 100644
+index 0000000..bb9773b
+Binary files /dev/null and b/fuzz/corpora/bignum/ea56b6d83ae13bad869e9e608f328e923f61633a differ
+diff --git a/fuzz/corpora/bignum/ed1ee20c83540da17758a2d4997a0b81909fe599 b/fuzz/corpora/bignum/ed1ee20c83540da17758a2d4997a0b81909fe599
+new file mode 100644
+index 0000000..8875128
+Binary files /dev/null and b/fuzz/corpora/bignum/ed1ee20c83540da17758a2d4997a0b81909fe599 differ
+diff --git a/fuzz/corpora/bignum/ed2b64adb7df78895152aaaaa8ca947832a2a80e b/fuzz/corpora/bignum/ed2b64adb7df78895152aaaaa8ca947832a2a80e
+new file mode 100644
+index 0000000..cfebe80
+Binary files /dev/null and b/fuzz/corpora/bignum/ed2b64adb7df78895152aaaaa8ca947832a2a80e differ
+diff --git a/fuzz/corpora/bignum/edc71e2c67b839fa502a2334b637a9d8f732ab79 b/fuzz/corpora/bignum/edc71e2c67b839fa502a2334b637a9d8f732ab79
+new file mode 100644
+index 0000000..e45b5df
+Binary files /dev/null and b/fuzz/corpora/bignum/edc71e2c67b839fa502a2334b637a9d8f732ab79 differ
+diff --git a/fuzz/corpora/bignum/ef481a2c0d57cadea38f837f4c75f87cca73c8ee b/fuzz/corpora/bignum/ef481a2c0d57cadea38f837f4c75f87cca73c8ee
+new file mode 100644
+index 0000000..31d6a50
+Binary files /dev/null and b/fuzz/corpora/bignum/ef481a2c0d57cadea38f837f4c75f87cca73c8ee differ
+diff --git a/fuzz/corpora/bignum/ef7a76f7e015eb801cca9fe43ba019a9603bf1a2 b/fuzz/corpora/bignum/ef7a76f7e015eb801cca9fe43ba019a9603bf1a2
+new file mode 100644
+index 0000000..a8ddc80
+Binary files /dev/null and b/fuzz/corpora/bignum/ef7a76f7e015eb801cca9fe43ba019a9603bf1a2 differ
+diff --git a/fuzz/corpora/bignum/effd011cf8fdcad940578f6a027f74e86d18d6db b/fuzz/corpora/bignum/effd011cf8fdcad940578f6a027f74e86d18d6db
+new file mode 100644
+index 0000000..1bb07b5
+Binary files /dev/null and b/fuzz/corpora/bignum/effd011cf8fdcad940578f6a027f74e86d18d6db differ
+diff --git a/fuzz/corpora/bignum/f138135c81bedaae4659ea47bd5e788050cf25ef b/fuzz/corpora/bignum/f138135c81bedaae4659ea47bd5e788050cf25ef
+new file mode 100644
+index 0000000..3ad8a9c
+Binary files /dev/null and b/fuzz/corpora/bignum/f138135c81bedaae4659ea47bd5e788050cf25ef differ
+diff --git a/fuzz/corpora/bignum/f15c84ea4cb80ae05ed7d7c125bfcb8a12807a25 b/fuzz/corpora/bignum/f15c84ea4cb80ae05ed7d7c125bfcb8a12807a25
+new file mode 100644
+index 0000000..5246d88
+Binary files /dev/null and b/fuzz/corpora/bignum/f15c84ea4cb80ae05ed7d7c125bfcb8a12807a25 differ
+diff --git a/fuzz/corpora/bignum/f164f093a439aee7ea00bc0cba052fafb1d0f07c b/fuzz/corpora/bignum/f164f093a439aee7ea00bc0cba052fafb1d0f07c
+new file mode 100644
+index 0000000..e9f99c6
+Binary files /dev/null and b/fuzz/corpora/bignum/f164f093a439aee7ea00bc0cba052fafb1d0f07c differ
+diff --git a/fuzz/corpora/bignum/f2e62ef219669c455d8943d6fdf7892125cfea41 b/fuzz/corpora/bignum/f2e62ef219669c455d8943d6fdf7892125cfea41
+new file mode 100644
+index 0000000..9397e9f
+Binary files /dev/null and b/fuzz/corpora/bignum/f2e62ef219669c455d8943d6fdf7892125cfea41 differ
+diff --git a/fuzz/corpora/bignum/f366bed376017d8ea40a09d09da44f8e8224c88c b/fuzz/corpora/bignum/f366bed376017d8ea40a09d09da44f8e8224c88c
+new file mode 100644
+index 0000000..626c7f8
+Binary files /dev/null and b/fuzz/corpora/bignum/f366bed376017d8ea40a09d09da44f8e8224c88c differ
+diff --git a/fuzz/corpora/bignum/f3bba7334065c76aaf49fcc23c0481aeb3735a4a b/fuzz/corpora/bignum/f3bba7334065c76aaf49fcc23c0481aeb3735a4a
+new file mode 100644
+index 0000000..07b923d
+Binary files /dev/null and b/fuzz/corpora/bignum/f3bba7334065c76aaf49fcc23c0481aeb3735a4a differ
+diff --git a/fuzz/corpora/bignum/f53100b8bda05a3399f91c0866c94f1adcc5e629 b/fuzz/corpora/bignum/f53100b8bda05a3399f91c0866c94f1adcc5e629
+new file mode 100644
+index 0000000..9108fc1
+Binary files /dev/null and b/fuzz/corpora/bignum/f53100b8bda05a3399f91c0866c94f1adcc5e629 differ
+diff --git a/fuzz/corpora/bignum/f565309ce6077ac467273dc49b50c9664208c228 b/fuzz/corpora/bignum/f565309ce6077ac467273dc49b50c9664208c228
+new file mode 100644
+index 0000000..42e44fd
+Binary files /dev/null and b/fuzz/corpora/bignum/f565309ce6077ac467273dc49b50c9664208c228 differ
+diff --git a/fuzz/corpora/bignum/f62d4aa49791b84c2adf1a07766db25b130bf841 b/fuzz/corpora/bignum/f62d4aa49791b84c2adf1a07766db25b130bf841
+new file mode 100644
+index 0000000..5c7b2e4
+Binary files /dev/null and b/fuzz/corpora/bignum/f62d4aa49791b84c2adf1a07766db25b130bf841 differ
+diff --git a/fuzz/corpora/bignum/f644154f4e54cf898f679c0abf5b42ad7a19cc5c b/fuzz/corpora/bignum/f644154f4e54cf898f679c0abf5b42ad7a19cc5c
+new file mode 100644
+index 0000000..193a16d
+Binary files /dev/null and b/fuzz/corpora/bignum/f644154f4e54cf898f679c0abf5b42ad7a19cc5c differ
+diff --git a/fuzz/corpora/bignum/f8f6ea63840ca98cc7c864473a5c668dd869a4c0 b/fuzz/corpora/bignum/f8f6ea63840ca98cc7c864473a5c668dd869a4c0
+new file mode 100644
+index 0000000..379ff53
+Binary files /dev/null and b/fuzz/corpora/bignum/f8f6ea63840ca98cc7c864473a5c668dd869a4c0 differ
+diff --git a/fuzz/corpora/bignum/f9129fc8bacd59389223492d7abd3c9e5c8272cc b/fuzz/corpora/bignum/f9129fc8bacd59389223492d7abd3c9e5c8272cc
+new file mode 100644
+index 0000000..44a5879
+Binary files /dev/null and b/fuzz/corpora/bignum/f9129fc8bacd59389223492d7abd3c9e5c8272cc differ
+diff --git a/fuzz/corpora/bignum/f97dea3c7637f9efde63372cd0d3fff7ffc3d0ea b/fuzz/corpora/bignum/f97dea3c7637f9efde63372cd0d3fff7ffc3d0ea
+new file mode 100644
+index 0000000..0962e67
+Binary files /dev/null and b/fuzz/corpora/bignum/f97dea3c7637f9efde63372cd0d3fff7ffc3d0ea differ
+diff --git a/fuzz/corpora/bignum/f98f2e3e4df0ff9890ff838928e428d698e87f31 b/fuzz/corpora/bignum/f98f2e3e4df0ff9890ff838928e428d698e87f31
+new file mode 100644
+index 0000000..0fdb24d
+Binary files /dev/null and b/fuzz/corpora/bignum/f98f2e3e4df0ff9890ff838928e428d698e87f31 differ
+diff --git a/fuzz/corpora/bignum/fac3509f3b62f60fbc267220557f90ebdd5c587b b/fuzz/corpora/bignum/fac3509f3b62f60fbc267220557f90ebdd5c587b
+new file mode 100644
+index 0000000..901f4e5
+Binary files /dev/null and b/fuzz/corpora/bignum/fac3509f3b62f60fbc267220557f90ebdd5c587b differ
+diff --git a/fuzz/corpora/bignum/fb8f9f4ff8b7bfec73d4a47c48f9820a0e6e2721 b/fuzz/corpora/bignum/fb8f9f4ff8b7bfec73d4a47c48f9820a0e6e2721
+new file mode 100644
+index 0000000..30d2249
+Binary files /dev/null and b/fuzz/corpora/bignum/fb8f9f4ff8b7bfec73d4a47c48f9820a0e6e2721 differ
+diff --git a/fuzz/corpora/bignum/fc160e0b4b3b30969994514ff4ba8958866babd4 b/fuzz/corpora/bignum/fc160e0b4b3b30969994514ff4ba8958866babd4
+new file mode 100644
+index 0000000..ff00af9
+Binary files /dev/null and b/fuzz/corpora/bignum/fc160e0b4b3b30969994514ff4ba8958866babd4 differ
+diff --git a/fuzz/corpora/bignum/fc1c7db52ac1dbdb1e0a88c52c6fbaf6e19f0003 b/fuzz/corpora/bignum/fc1c7db52ac1dbdb1e0a88c52c6fbaf6e19f0003
+new file mode 100644
+index 0000000..01ea52c
+Binary files /dev/null and b/fuzz/corpora/bignum/fc1c7db52ac1dbdb1e0a88c52c6fbaf6e19f0003 differ
+diff --git a/fuzz/corpora/bignum/fe346f9985c50d852d07e13cf21c73dc9a486dc5 b/fuzz/corpora/bignum/fe346f9985c50d852d07e13cf21c73dc9a486dc5
+new file mode 100644
+index 0000000..a851043
+Binary files /dev/null and b/fuzz/corpora/bignum/fe346f9985c50d852d07e13cf21c73dc9a486dc5 differ
+diff --git a/fuzz/corpora/bignum/fe895191aa8a48014a0b2d932bef5e7223d53507 b/fuzz/corpora/bignum/fe895191aa8a48014a0b2d932bef5e7223d53507
+new file mode 100644
+index 0000000..714089c
+Binary files /dev/null and b/fuzz/corpora/bignum/fe895191aa8a48014a0b2d932bef5e7223d53507 differ
+diff --git a/fuzz/corpora/bignum/ff635957c92f17fd478794221afa83b3e9c06557 b/fuzz/corpora/bignum/ff635957c92f17fd478794221afa83b3e9c06557
+new file mode 100644
+index 0000000..365c67c
+Binary files /dev/null and b/fuzz/corpora/bignum/ff635957c92f17fd478794221afa83b3e9c06557 differ
+diff --git a/fuzz/corpora/bignum/ff7240dfbdf96586c558feef1aaf3208989032f0 b/fuzz/corpora/bignum/ff7240dfbdf96586c558feef1aaf3208989032f0
+new file mode 100644
+index 0000000..44ebb18
+Binary files /dev/null and b/fuzz/corpora/bignum/ff7240dfbdf96586c558feef1aaf3208989032f0 differ
+diff --git a/fuzz/corpora/bignum/ff966598b4d65277aac2b9ffc0deb102e24f5095 b/fuzz/corpora/bignum/ff966598b4d65277aac2b9ffc0deb102e24f5095
+new file mode 100644
+index 0000000..4dd91e9
+Binary files /dev/null and b/fuzz/corpora/bignum/ff966598b4d65277aac2b9ffc0deb102e24f5095 differ
+diff --git a/fuzz/corpora/bignum/ffbd1fba1279cf746dd7f4d33f966ebc24b4a225 b/fuzz/corpora/bignum/ffbd1fba1279cf746dd7f4d33f966ebc24b4a225
+new file mode 100644
+index 0000000..1c7aa6c
+Binary files /dev/null and b/fuzz/corpora/bignum/ffbd1fba1279cf746dd7f4d33f966ebc24b4a225 differ
+diff --git a/fuzz/corpora/bndiv/00a4391021a4b7faf18aa2ffeccf94240ec6435d b/fuzz/corpora/bndiv/00a4391021a4b7faf18aa2ffeccf94240ec6435d
+new file mode 100644
+index 0000000..52dfd98
+Binary files /dev/null and b/fuzz/corpora/bndiv/00a4391021a4b7faf18aa2ffeccf94240ec6435d differ
+diff --git a/fuzz/corpora/bndiv/0172e8d2d0f74f9ab80de8ff716098022b3584ca b/fuzz/corpora/bndiv/0172e8d2d0f74f9ab80de8ff716098022b3584ca
+new file mode 100644
+index 0000000..ad9688f
+Binary files /dev/null and b/fuzz/corpora/bndiv/0172e8d2d0f74f9ab80de8ff716098022b3584ca differ
+diff --git a/fuzz/corpora/bndiv/022882c0711914a328451bc0aa60287609c1c91d b/fuzz/corpora/bndiv/022882c0711914a328451bc0aa60287609c1c91d
+new file mode 100644
+index 0000000..5c1ed48
+Binary files /dev/null and b/fuzz/corpora/bndiv/022882c0711914a328451bc0aa60287609c1c91d differ
+diff --git a/fuzz/corpora/bndiv/04291fea732292dfe6ef8f01d09e5a39055f550e b/fuzz/corpora/bndiv/04291fea732292dfe6ef8f01d09e5a39055f550e
+new file mode 100644
+index 0000000..36f6789
+Binary files /dev/null and b/fuzz/corpora/bndiv/04291fea732292dfe6ef8f01d09e5a39055f550e differ
+diff --git a/fuzz/corpora/bndiv/04ade4986288fdde3a53533e5439eaeee6f5b2f1 b/fuzz/corpora/bndiv/04ade4986288fdde3a53533e5439eaeee6f5b2f1
+new file mode 100644
+index 0000000..a30c409
+Binary files /dev/null and b/fuzz/corpora/bndiv/04ade4986288fdde3a53533e5439eaeee6f5b2f1 differ
+diff --git a/fuzz/corpora/bndiv/08c78177b063da5570aee27e16917935bb988756 b/fuzz/corpora/bndiv/08c78177b063da5570aee27e16917935bb988756
+new file mode 100644
+index 0000000..2aa6be4
+Binary files /dev/null and b/fuzz/corpora/bndiv/08c78177b063da5570aee27e16917935bb988756 differ
+diff --git a/fuzz/corpora/bndiv/092c0a40cbb2af70c447cbce348490c44ab11257 b/fuzz/corpora/bndiv/092c0a40cbb2af70c447cbce348490c44ab11257
+new file mode 100644
+index 0000000..803c3d4
+Binary files /dev/null and b/fuzz/corpora/bndiv/092c0a40cbb2af70c447cbce348490c44ab11257 differ
+diff --git a/fuzz/corpora/bndiv/0a9a3cd8cfbcad724c4601cf81555498d7072714 b/fuzz/corpora/bndiv/0a9a3cd8cfbcad724c4601cf81555498d7072714
+new file mode 100644
+index 0000000..3c82e0f
+Binary files /dev/null and b/fuzz/corpora/bndiv/0a9a3cd8cfbcad724c4601cf81555498d7072714 differ
+diff --git a/fuzz/corpora/bndiv/0bddb4e8b56c948c73496431b890746adc831067 b/fuzz/corpora/bndiv/0bddb4e8b56c948c73496431b890746adc831067
+new file mode 100644
+index 0000000..73ba911
+Binary files /dev/null and b/fuzz/corpora/bndiv/0bddb4e8b56c948c73496431b890746adc831067 differ
+diff --git a/fuzz/corpora/bndiv/0e74182a473f1cca80d19f902e5fc05e66aa8df0 b/fuzz/corpora/bndiv/0e74182a473f1cca80d19f902e5fc05e66aa8df0
+new file mode 100644
+index 0000000..151659b
+Binary files /dev/null and b/fuzz/corpora/bndiv/0e74182a473f1cca80d19f902e5fc05e66aa8df0 differ
+diff --git a/fuzz/corpora/bndiv/1091f85efb8316d007d0c71cfb247cf8020dff64 b/fuzz/corpora/bndiv/1091f85efb8316d007d0c71cfb247cf8020dff64
+new file mode 100644
+index 0000000..1d8cf4a
+Binary files /dev/null and b/fuzz/corpora/bndiv/1091f85efb8316d007d0c71cfb247cf8020dff64 differ
+diff --git a/fuzz/corpora/bndiv/1229e240647323af5cac0e93db35ca9a0f9ae229 b/fuzz/corpora/bndiv/1229e240647323af5cac0e93db35ca9a0f9ae229
+new file mode 100644
+index 0000000..7341a8c
+Binary files /dev/null and b/fuzz/corpora/bndiv/1229e240647323af5cac0e93db35ca9a0f9ae229 differ
+diff --git a/fuzz/corpora/bndiv/12bdd00fd4038756cbcf8ecdad1b0cd862603cd8 b/fuzz/corpora/bndiv/12bdd00fd4038756cbcf8ecdad1b0cd862603cd8
+new file mode 100644
+index 0000000..9de2941
+Binary files /dev/null and b/fuzz/corpora/bndiv/12bdd00fd4038756cbcf8ecdad1b0cd862603cd8 differ
+diff --git a/fuzz/corpora/bndiv/13a35b9248a978527c14224774941fc9b7468f7c b/fuzz/corpora/bndiv/13a35b9248a978527c14224774941fc9b7468f7c
+new file mode 100644
+index 0000000..f263133
+Binary files /dev/null and b/fuzz/corpora/bndiv/13a35b9248a978527c14224774941fc9b7468f7c differ
+diff --git a/fuzz/corpora/bndiv/179c24968f78d3417f730bbe12b8210977b901bc b/fuzz/corpora/bndiv/179c24968f78d3417f730bbe12b8210977b901bc
+new file mode 100644
+index 0000000..760a4ea
+Binary files /dev/null and b/fuzz/corpora/bndiv/179c24968f78d3417f730bbe12b8210977b901bc differ
+diff --git a/fuzz/corpora/bndiv/17a02eb3490e07f04d1a79ebbc36d67bd6cc1b44 b/fuzz/corpora/bndiv/17a02eb3490e07f04d1a79ebbc36d67bd6cc1b44
+new file mode 100644
+index 0000000..4d2f176
+Binary files /dev/null and b/fuzz/corpora/bndiv/17a02eb3490e07f04d1a79ebbc36d67bd6cc1b44 differ
+diff --git a/fuzz/corpora/bndiv/18dcb593b08a0dbf137a54cc7ac3a9b279f2a356 b/fuzz/corpora/bndiv/18dcb593b08a0dbf137a54cc7ac3a9b279f2a356
+new file mode 100644
+index 0000000..d65639c
+Binary files /dev/null and b/fuzz/corpora/bndiv/18dcb593b08a0dbf137a54cc7ac3a9b279f2a356 differ
+diff --git a/fuzz/corpora/bndiv/1c86250e4dd50f51b90fb2197ae308dd8c0da288 b/fuzz/corpora/bndiv/1c86250e4dd50f51b90fb2197ae308dd8c0da288
+new file mode 100644
+index 0000000..7b8f925
+Binary files /dev/null and b/fuzz/corpora/bndiv/1c86250e4dd50f51b90fb2197ae308dd8c0da288 differ
+diff --git a/fuzz/corpora/bndiv/1ea20e2761bcd8107882905b07c5dd7967c837c7 b/fuzz/corpora/bndiv/1ea20e2761bcd8107882905b07c5dd7967c837c7
+new file mode 100644
+index 0000000..5dcc3a6
+Binary files /dev/null and b/fuzz/corpora/bndiv/1ea20e2761bcd8107882905b07c5dd7967c837c7 differ
+diff --git a/fuzz/corpora/bndiv/1fd771718246d11b926bd90795d0a305f0483afd b/fuzz/corpora/bndiv/1fd771718246d11b926bd90795d0a305f0483afd
+new file mode 100644
+index 0000000..90154fc
+Binary files /dev/null and b/fuzz/corpora/bndiv/1fd771718246d11b926bd90795d0a305f0483afd differ
+diff --git a/fuzz/corpora/bndiv/200ef8aa067a701528d079ddf5ac44e158df9fed b/fuzz/corpora/bndiv/200ef8aa067a701528d079ddf5ac44e158df9fed
+new file mode 100644
+index 0000000..69cbc1d
+Binary files /dev/null and b/fuzz/corpora/bndiv/200ef8aa067a701528d079ddf5ac44e158df9fed differ
+diff --git a/fuzz/corpora/bndiv/220f09642702ac4c14ae347aba995f04023cb956 b/fuzz/corpora/bndiv/220f09642702ac4c14ae347aba995f04023cb956
+new file mode 100644
+index 0000000..7f1fccb
+Binary files /dev/null and b/fuzz/corpora/bndiv/220f09642702ac4c14ae347aba995f04023cb956 differ
+diff --git a/fuzz/corpora/bndiv/227712a3bb59a424ba26261a09a93b431a79bd43 b/fuzz/corpora/bndiv/227712a3bb59a424ba26261a09a93b431a79bd43
+new file mode 100644
+index 0000000..55de52b
+Binary files /dev/null and b/fuzz/corpora/bndiv/227712a3bb59a424ba26261a09a93b431a79bd43 differ
+diff --git a/fuzz/corpora/bndiv/23aac9e429789a651302a63b4258cf5ecac336fd b/fuzz/corpora/bndiv/23aac9e429789a651302a63b4258cf5ecac336fd
+new file mode 100644
+index 0000000..89029dc
+Binary files /dev/null and b/fuzz/corpora/bndiv/23aac9e429789a651302a63b4258cf5ecac336fd differ
+diff --git a/fuzz/corpora/bndiv/24eb6d22462609aa45ce4e01d071f69f01298518 b/fuzz/corpora/bndiv/24eb6d22462609aa45ce4e01d071f69f01298518
+new file mode 100644
+index 0000000..ea24d00
+Binary files /dev/null and b/fuzz/corpora/bndiv/24eb6d22462609aa45ce4e01d071f69f01298518 differ
+diff --git a/fuzz/corpora/bndiv/2667c9b7b024ce57e2e434d7f48238d0a16d1901 b/fuzz/corpora/bndiv/2667c9b7b024ce57e2e434d7f48238d0a16d1901
+new file mode 100644
+index 0000000..6c4bef8
+Binary files /dev/null and b/fuzz/corpora/bndiv/2667c9b7b024ce57e2e434d7f48238d0a16d1901 differ
+diff --git a/fuzz/corpora/bndiv/29a7a95bffb1df09f915f3f123e48ce0bc9bad9d b/fuzz/corpora/bndiv/29a7a95bffb1df09f915f3f123e48ce0bc9bad9d
+new file mode 100644
+index 0000000..6422873
+Binary files /dev/null and b/fuzz/corpora/bndiv/29a7a95bffb1df09f915f3f123e48ce0bc9bad9d differ
+diff --git a/fuzz/corpora/bndiv/2ae0b4465404d8512fb476cd6b8ccf8ab0a6dd60 b/fuzz/corpora/bndiv/2ae0b4465404d8512fb476cd6b8ccf8ab0a6dd60
+new file mode 100644
+index 0000000..0d209d9
+Binary files /dev/null and b/fuzz/corpora/bndiv/2ae0b4465404d8512fb476cd6b8ccf8ab0a6dd60 differ
+diff --git a/fuzz/corpora/bndiv/3035ec0874e44fe9f6e8d7bd0a909db80b230625 b/fuzz/corpora/bndiv/3035ec0874e44fe9f6e8d7bd0a909db80b230625
+new file mode 100644
+index 0000000..3b83a27
+Binary files /dev/null and b/fuzz/corpora/bndiv/3035ec0874e44fe9f6e8d7bd0a909db80b230625 differ
+diff --git a/fuzz/corpora/bndiv/311e82be75434fc5602731f6aee79c7d3111248c b/fuzz/corpora/bndiv/311e82be75434fc5602731f6aee79c7d3111248c
+new file mode 100644
+index 0000000..aa6df4e
+Binary files /dev/null and b/fuzz/corpora/bndiv/311e82be75434fc5602731f6aee79c7d3111248c differ
+diff --git a/fuzz/corpora/bndiv/320cb258a8f9598bcc38d5ffdb2aff6805197d6d b/fuzz/corpora/bndiv/320cb258a8f9598bcc38d5ffdb2aff6805197d6d
+new file mode 100644
+index 0000000..b0b4a5c
+Binary files /dev/null and b/fuzz/corpora/bndiv/320cb258a8f9598bcc38d5ffdb2aff6805197d6d differ
+diff --git a/fuzz/corpora/bndiv/322c493fc8f43154ef4e53a020ffd594209320a9 b/fuzz/corpora/bndiv/322c493fc8f43154ef4e53a020ffd594209320a9
+new file mode 100644
+index 0000000..404c95d
+Binary files /dev/null and b/fuzz/corpora/bndiv/322c493fc8f43154ef4e53a020ffd594209320a9 differ
+diff --git a/fuzz/corpora/bndiv/357e3c15f01b1f6271557e5304c222944dedb35c b/fuzz/corpora/bndiv/357e3c15f01b1f6271557e5304c222944dedb35c
+new file mode 100644
+index 0000000..bd62c8e
+Binary files /dev/null and b/fuzz/corpora/bndiv/357e3c15f01b1f6271557e5304c222944dedb35c differ
+diff --git a/fuzz/corpora/bndiv/37a8d9b70c83c97db16dadbae79f3d7d0f300168 b/fuzz/corpora/bndiv/37a8d9b70c83c97db16dadbae79f3d7d0f300168
+new file mode 100644
+index 0000000..b43f30b
+Binary files /dev/null and b/fuzz/corpora/bndiv/37a8d9b70c83c97db16dadbae79f3d7d0f300168 differ
+diff --git a/fuzz/corpora/bndiv/39018d655a1db047fd6031ba2963758f6b1634fb b/fuzz/corpora/bndiv/39018d655a1db047fd6031ba2963758f6b1634fb
+new file mode 100644
+index 0000000..4f26ead
+Binary files /dev/null and b/fuzz/corpora/bndiv/39018d655a1db047fd6031ba2963758f6b1634fb differ
+diff --git a/fuzz/corpora/bndiv/395a58f26f035fb3f08a0155d27a9bf385bbd5ac b/fuzz/corpora/bndiv/395a58f26f035fb3f08a0155d27a9bf385bbd5ac
+new file mode 100644
+index 0000000..ab2c03c
+Binary files /dev/null and b/fuzz/corpora/bndiv/395a58f26f035fb3f08a0155d27a9bf385bbd5ac differ
+diff --git a/fuzz/corpora/bndiv/3b8aeae736084a86a1aee7dd31319e7d8a98999c b/fuzz/corpora/bndiv/3b8aeae736084a86a1aee7dd31319e7d8a98999c
+new file mode 100644
+index 0000000..69abf7b
+Binary files /dev/null and b/fuzz/corpora/bndiv/3b8aeae736084a86a1aee7dd31319e7d8a98999c differ
+diff --git a/fuzz/corpora/bndiv/3e6d1dbf8d8b5aae5b9c368baafa3f6329220892 b/fuzz/corpora/bndiv/3e6d1dbf8d8b5aae5b9c368baafa3f6329220892
+new file mode 100644
+index 0000000..58b654a
+Binary files /dev/null and b/fuzz/corpora/bndiv/3e6d1dbf8d8b5aae5b9c368baafa3f6329220892 differ
+diff --git a/fuzz/corpora/bndiv/3edaea2a15a1724dbdf97a0ca4796e61641d14a6 b/fuzz/corpora/bndiv/3edaea2a15a1724dbdf97a0ca4796e61641d14a6
+new file mode 100644
+index 0000000..e1a187b
+Binary files /dev/null and b/fuzz/corpora/bndiv/3edaea2a15a1724dbdf97a0ca4796e61641d14a6 differ
+diff --git a/fuzz/corpora/bndiv/3edfe58eebce00eb960eb2b71e0166dc9ce2dfe4 b/fuzz/corpora/bndiv/3edfe58eebce00eb960eb2b71e0166dc9ce2dfe4
+new file mode 100644
+index 0000000..f7223bd
+Binary files /dev/null and b/fuzz/corpora/bndiv/3edfe58eebce00eb960eb2b71e0166dc9ce2dfe4 differ
+diff --git a/fuzz/corpora/bndiv/43b1bc9b15446fd7945528a361f2f1229b91241c b/fuzz/corpora/bndiv/43b1bc9b15446fd7945528a361f2f1229b91241c
+new file mode 100644
+index 0000000..2f97d48
+Binary files /dev/null and b/fuzz/corpora/bndiv/43b1bc9b15446fd7945528a361f2f1229b91241c differ
+diff --git a/fuzz/corpora/bndiv/44854033d6601abc1ed0c5606a5cda68f2363296 b/fuzz/corpora/bndiv/44854033d6601abc1ed0c5606a5cda68f2363296
+new file mode 100644
+index 0000000..3b6e1c8
+Binary files /dev/null and b/fuzz/corpora/bndiv/44854033d6601abc1ed0c5606a5cda68f2363296 differ
+diff --git a/fuzz/corpora/bndiv/45470ba97e24fc59c34fb8fb93460d417d1534df b/fuzz/corpora/bndiv/45470ba97e24fc59c34fb8fb93460d417d1534df
+new file mode 100644
+index 0000000..1245ad9
+Binary files /dev/null and b/fuzz/corpora/bndiv/45470ba97e24fc59c34fb8fb93460d417d1534df differ
+diff --git a/fuzz/corpora/bndiv/4658a5cf1189f7e7cf86a95c2ce0688d752ea99c b/fuzz/corpora/bndiv/4658a5cf1189f7e7cf86a95c2ce0688d752ea99c
+new file mode 100644
+index 0000000..07dd117
+Binary files /dev/null and b/fuzz/corpora/bndiv/4658a5cf1189f7e7cf86a95c2ce0688d752ea99c differ
+diff --git a/fuzz/corpora/bndiv/47966932642ab6eb7ad91c8147adee23231b8d7f b/fuzz/corpora/bndiv/47966932642ab6eb7ad91c8147adee23231b8d7f
+new file mode 100644
+index 0000000..b0c93aa
+Binary files /dev/null and b/fuzz/corpora/bndiv/47966932642ab6eb7ad91c8147adee23231b8d7f differ
+diff --git a/fuzz/corpora/bndiv/49b8c47f97f75f82263e05cb551f4a871b8ca979 b/fuzz/corpora/bndiv/49b8c47f97f75f82263e05cb551f4a871b8ca979
+new file mode 100644
+index 0000000..4ec92e0
+Binary files /dev/null and b/fuzz/corpora/bndiv/49b8c47f97f75f82263e05cb551f4a871b8ca979 differ
+diff --git a/fuzz/corpora/bndiv/4a5c55a6aaeaa9c46ba1cd9a8da91ff52c6612ab b/fuzz/corpora/bndiv/4a5c55a6aaeaa9c46ba1cd9a8da91ff52c6612ab
+new file mode 100644
+index 0000000..a9f3ed6
+Binary files /dev/null and b/fuzz/corpora/bndiv/4a5c55a6aaeaa9c46ba1cd9a8da91ff52c6612ab differ
+diff --git a/fuzz/corpora/bndiv/4b08c2aff33987e086f046d1e5788bc9d95ec2c3 b/fuzz/corpora/bndiv/4b08c2aff33987e086f046d1e5788bc9d95ec2c3
+new file mode 100644
+index 0000000..26e605d
+Binary files /dev/null and b/fuzz/corpora/bndiv/4b08c2aff33987e086f046d1e5788bc9d95ec2c3 differ
+diff --git a/fuzz/corpora/bndiv/4b6e2fd91dfc2aa9051c089fa0a9cc3c30e147b6 b/fuzz/corpora/bndiv/4b6e2fd91dfc2aa9051c089fa0a9cc3c30e147b6
+new file mode 100644
+index 0000000..25a1876
+Binary files /dev/null and b/fuzz/corpora/bndiv/4b6e2fd91dfc2aa9051c089fa0a9cc3c30e147b6 differ
+diff --git a/fuzz/corpora/bndiv/4bb9b051731a6ce1999a9ba6a807cf7637ffb0d5 b/fuzz/corpora/bndiv/4bb9b051731a6ce1999a9ba6a807cf7637ffb0d5
+new file mode 100644
+index 0000000..07e79b9
+Binary files /dev/null and b/fuzz/corpora/bndiv/4bb9b051731a6ce1999a9ba6a807cf7637ffb0d5 differ
+diff --git a/fuzz/corpora/bndiv/4dc223f7703d4d5a6446ca86047557d105977259 b/fuzz/corpora/bndiv/4dc223f7703d4d5a6446ca86047557d105977259
+new file mode 100644
+index 0000000..42e9508
+Binary files /dev/null and b/fuzz/corpora/bndiv/4dc223f7703d4d5a6446ca86047557d105977259 differ
+diff --git a/fuzz/corpora/bndiv/4e5e8520610c56b6379600fd52a2d47ca5376d0e b/fuzz/corpora/bndiv/4e5e8520610c56b6379600fd52a2d47ca5376d0e
+new file mode 100644
+index 0000000..f9e78e0
+Binary files /dev/null and b/fuzz/corpora/bndiv/4e5e8520610c56b6379600fd52a2d47ca5376d0e differ
+diff --git a/fuzz/corpora/bndiv/50fe9ecc00ada6f25550c78238e65c49a17b3003 b/fuzz/corpora/bndiv/50fe9ecc00ada6f25550c78238e65c49a17b3003
+new file mode 100644
+index 0000000..772c1ae
+Binary files /dev/null and b/fuzz/corpora/bndiv/50fe9ecc00ada6f25550c78238e65c49a17b3003 differ
+diff --git a/fuzz/corpora/bndiv/51ffcc7e932af87eb9fcbc710db82c5dde848c3b b/fuzz/corpora/bndiv/51ffcc7e932af87eb9fcbc710db82c5dde848c3b
+new file mode 100644
+index 0000000..4692bb0
+Binary files /dev/null and b/fuzz/corpora/bndiv/51ffcc7e932af87eb9fcbc710db82c5dde848c3b differ
+diff --git a/fuzz/corpora/bndiv/53d5adc15e1a5fe89aeb452a247349c99b280522 b/fuzz/corpora/bndiv/53d5adc15e1a5fe89aeb452a247349c99b280522
+new file mode 100644
+index 0000000..9379893
+Binary files /dev/null and b/fuzz/corpora/bndiv/53d5adc15e1a5fe89aeb452a247349c99b280522 differ
+diff --git a/fuzz/corpora/bndiv/5426ae7492507942ec6fdd74a247a63788ccdcc3 b/fuzz/corpora/bndiv/5426ae7492507942ec6fdd74a247a63788ccdcc3
+new file mode 100644
+index 0000000..46ab6eb
+Binary files /dev/null and b/fuzz/corpora/bndiv/5426ae7492507942ec6fdd74a247a63788ccdcc3 differ
+diff --git a/fuzz/corpora/bndiv/54714bf0285e7c78399a768bf953224e982543ea b/fuzz/corpora/bndiv/54714bf0285e7c78399a768bf953224e982543ea
+new file mode 100644
+index 0000000..3fda648
+Binary files /dev/null and b/fuzz/corpora/bndiv/54714bf0285e7c78399a768bf953224e982543ea differ
+diff --git a/fuzz/corpora/bndiv/56240e5f05dffe0086ed820c497b1c9c899387f9 b/fuzz/corpora/bndiv/56240e5f05dffe0086ed820c497b1c9c899387f9
+new file mode 100644
+index 0000000..5269e03
+Binary files /dev/null and b/fuzz/corpora/bndiv/56240e5f05dffe0086ed820c497b1c9c899387f9 differ
+diff --git a/fuzz/corpora/bndiv/591b8db8c1880ec300914fff8598b6bcf8747b34 b/fuzz/corpora/bndiv/591b8db8c1880ec300914fff8598b6bcf8747b34
+new file mode 100644
+index 0000000..79e4da7
+Binary files /dev/null and b/fuzz/corpora/bndiv/591b8db8c1880ec300914fff8598b6bcf8747b34 differ
+diff --git a/fuzz/corpora/bndiv/59a08bc6e67744082a70b766139de8d3da4f2bab b/fuzz/corpora/bndiv/59a08bc6e67744082a70b766139de8d3da4f2bab
+new file mode 100644
+index 0000000..cf97ea0
+Binary files /dev/null and b/fuzz/corpora/bndiv/59a08bc6e67744082a70b766139de8d3da4f2bab differ
+diff --git a/fuzz/corpora/bndiv/5b661f290853c677810c67b845d3030ae5c0790e b/fuzz/corpora/bndiv/5b661f290853c677810c67b845d3030ae5c0790e
+new file mode 100644
+index 0000000..6542018
+Binary files /dev/null and b/fuzz/corpora/bndiv/5b661f290853c677810c67b845d3030ae5c0790e differ
+diff --git a/fuzz/corpora/bndiv/5c58654951d76ca5193c07e1f00094012400e098 b/fuzz/corpora/bndiv/5c58654951d76ca5193c07e1f00094012400e098
+new file mode 100644
+index 0000000..4ec70a8
+Binary files /dev/null and b/fuzz/corpora/bndiv/5c58654951d76ca5193c07e1f00094012400e098 differ
+diff --git a/fuzz/corpora/bndiv/5ca0765b0f12165d1d9a97e73438e87e0014b2f3 b/fuzz/corpora/bndiv/5ca0765b0f12165d1d9a97e73438e87e0014b2f3
+new file mode 100644
+index 0000000..94b79e0
+Binary files /dev/null and b/fuzz/corpora/bndiv/5ca0765b0f12165d1d9a97e73438e87e0014b2f3 differ
+diff --git a/fuzz/corpora/bndiv/5caf1b331d1346c1b096f65ebd885b8d3a18e873 b/fuzz/corpora/bndiv/5caf1b331d1346c1b096f65ebd885b8d3a18e873
+new file mode 100644
+index 0000000..0a1b32d
+Binary files /dev/null and b/fuzz/corpora/bndiv/5caf1b331d1346c1b096f65ebd885b8d3a18e873 differ
+diff --git a/fuzz/corpora/bndiv/60feb07e3a20177a77974db885180844fcc8fa7b b/fuzz/corpora/bndiv/60feb07e3a20177a77974db885180844fcc8fa7b
+new file mode 100644
+index 0000000..091ca90
+Binary files /dev/null and b/fuzz/corpora/bndiv/60feb07e3a20177a77974db885180844fcc8fa7b differ
+diff --git a/fuzz/corpora/bndiv/61a68425c4221c61815ce8fe579b1441785b1c8f b/fuzz/corpora/bndiv/61a68425c4221c61815ce8fe579b1441785b1c8f
+new file mode 100644
+index 0000000..3553834
+Binary files /dev/null and b/fuzz/corpora/bndiv/61a68425c4221c61815ce8fe579b1441785b1c8f differ
+diff --git a/fuzz/corpora/bndiv/62720164bb76362a5ed382bcf602041d0a0305cc b/fuzz/corpora/bndiv/62720164bb76362a5ed382bcf602041d0a0305cc
+new file mode 100644
+index 0000000..f86edc2
+Binary files /dev/null and b/fuzz/corpora/bndiv/62720164bb76362a5ed382bcf602041d0a0305cc differ
+diff --git a/fuzz/corpora/bndiv/62f57201b37d3bc4f3337340ca3ff8a66498dd10 b/fuzz/corpora/bndiv/62f57201b37d3bc4f3337340ca3ff8a66498dd10
+new file mode 100644
+index 0000000..793b56e
+Binary files /dev/null and b/fuzz/corpora/bndiv/62f57201b37d3bc4f3337340ca3ff8a66498dd10 differ
+diff --git a/fuzz/corpora/bndiv/63ad6c852df126137e8e6dc59f488fa0df175241 b/fuzz/corpora/bndiv/63ad6c852df126137e8e6dc59f488fa0df175241
+new file mode 100644
+index 0000000..b4a56af
+Binary files /dev/null and b/fuzz/corpora/bndiv/63ad6c852df126137e8e6dc59f488fa0df175241 differ
+diff --git a/fuzz/corpora/bndiv/665dfaf50d569bd2da903954d18091001305d18c b/fuzz/corpora/bndiv/665dfaf50d569bd2da903954d18091001305d18c
+new file mode 100644
+index 0000000..f2ab224
+Binary files /dev/null and b/fuzz/corpora/bndiv/665dfaf50d569bd2da903954d18091001305d18c differ
+diff --git a/fuzz/corpora/bndiv/66cba355a88ef6ed3669e127130595d2912813c3 b/fuzz/corpora/bndiv/66cba355a88ef6ed3669e127130595d2912813c3
+new file mode 100644
+index 0000000..7d8afe8
+Binary files /dev/null and b/fuzz/corpora/bndiv/66cba355a88ef6ed3669e127130595d2912813c3 differ
+diff --git a/fuzz/corpora/bndiv/6810d21237efb46876ee55529a0bd16181c8e7b9 b/fuzz/corpora/bndiv/6810d21237efb46876ee55529a0bd16181c8e7b9
+new file mode 100644
+index 0000000..dc42496
+Binary files /dev/null and b/fuzz/corpora/bndiv/6810d21237efb46876ee55529a0bd16181c8e7b9 differ
+diff --git a/fuzz/corpora/bndiv/68c8bb143b10b9b31420a897bf78ab2cf94cacb7 b/fuzz/corpora/bndiv/68c8bb143b10b9b31420a897bf78ab2cf94cacb7
+new file mode 100644
+index 0000000..b7e7dc1
+Binary files /dev/null and b/fuzz/corpora/bndiv/68c8bb143b10b9b31420a897bf78ab2cf94cacb7 differ
+diff --git a/fuzz/corpora/bndiv/6a544b7ad8f77d1395adff499ecf2a135ea3c7d0 b/fuzz/corpora/bndiv/6a544b7ad8f77d1395adff499ecf2a135ea3c7d0
+new file mode 100644
+index 0000000..cc68b58
+Binary files /dev/null and b/fuzz/corpora/bndiv/6a544b7ad8f77d1395adff499ecf2a135ea3c7d0 differ
+diff --git a/fuzz/corpora/bndiv/6ae8a0cfc75bca680af03b8c79cf144fb61ccc8f b/fuzz/corpora/bndiv/6ae8a0cfc75bca680af03b8c79cf144fb61ccc8f
+new file mode 100644
+index 0000000..9473b5d
+Binary files /dev/null and b/fuzz/corpora/bndiv/6ae8a0cfc75bca680af03b8c79cf144fb61ccc8f differ
+diff --git a/fuzz/corpora/bndiv/6cc9d50ad85ac94ded38028abc7010f0c4ed4f41 b/fuzz/corpora/bndiv/6cc9d50ad85ac94ded38028abc7010f0c4ed4f41
+new file mode 100644
+index 0000000..2e2557b
+Binary files /dev/null and b/fuzz/corpora/bndiv/6cc9d50ad85ac94ded38028abc7010f0c4ed4f41 differ
+diff --git a/fuzz/corpora/bndiv/70398a1c546f4dcbfc8150bc08396e72dcec480e b/fuzz/corpora/bndiv/70398a1c546f4dcbfc8150bc08396e72dcec480e
+new file mode 100644
+index 0000000..22e4318
+Binary files /dev/null and b/fuzz/corpora/bndiv/70398a1c546f4dcbfc8150bc08396e72dcec480e differ
+diff --git a/fuzz/corpora/bndiv/7083de0ee1f5197c2e8b601e3a5ed52ad92d0779 b/fuzz/corpora/bndiv/7083de0ee1f5197c2e8b601e3a5ed52ad92d0779
+new file mode 100644
+index 0000000..b5f2e5b
+Binary files /dev/null and b/fuzz/corpora/bndiv/7083de0ee1f5197c2e8b601e3a5ed52ad92d0779 differ
+diff --git a/fuzz/corpora/bndiv/722997b0a95bda87d761ecbf47e2bebbac68de88 b/fuzz/corpora/bndiv/722997b0a95bda87d761ecbf47e2bebbac68de88
+new file mode 100644
+index 0000000..77f6b0c
+Binary files /dev/null and b/fuzz/corpora/bndiv/722997b0a95bda87d761ecbf47e2bebbac68de88 differ
+diff --git a/fuzz/corpora/bndiv/757576f5b8c4ee24ba49854212ec747dea195c21 b/fuzz/corpora/bndiv/757576f5b8c4ee24ba49854212ec747dea195c21
+new file mode 100644
+index 0000000..5d18c8c
+Binary files /dev/null and b/fuzz/corpora/bndiv/757576f5b8c4ee24ba49854212ec747dea195c21 differ
+diff --git a/fuzz/corpora/bndiv/75f1b7f39ea19d555cf998bfdb38e142b5113625 b/fuzz/corpora/bndiv/75f1b7f39ea19d555cf998bfdb38e142b5113625
+new file mode 100644
+index 0000000..6e76965
+Binary files /dev/null and b/fuzz/corpora/bndiv/75f1b7f39ea19d555cf998bfdb38e142b5113625 differ
+diff --git a/fuzz/corpora/bndiv/75f43ca2a3f4ee6d69a8fd89e327e98e2620b1eb b/fuzz/corpora/bndiv/75f43ca2a3f4ee6d69a8fd89e327e98e2620b1eb
+new file mode 100644
+index 0000000..34728e6
+Binary files /dev/null and b/fuzz/corpora/bndiv/75f43ca2a3f4ee6d69a8fd89e327e98e2620b1eb differ
+diff --git a/fuzz/corpora/bndiv/780d387f18af7508e151ac98ae25d720cd617af1 b/fuzz/corpora/bndiv/780d387f18af7508e151ac98ae25d720cd617af1
+new file mode 100644
+index 0000000..6097839
+Binary files /dev/null and b/fuzz/corpora/bndiv/780d387f18af7508e151ac98ae25d720cd617af1 differ
+diff --git a/fuzz/corpora/bndiv/7a460727621724eb63e3d891b780213b2ddf8c9e b/fuzz/corpora/bndiv/7a460727621724eb63e3d891b780213b2ddf8c9e
+new file mode 100644
+index 0000000..8934d12
+Binary files /dev/null and b/fuzz/corpora/bndiv/7a460727621724eb63e3d891b780213b2ddf8c9e differ
+diff --git a/fuzz/corpora/bndiv/7d80e4a509aab45ad255eaf70c55e283d8bc3a8c b/fuzz/corpora/bndiv/7d80e4a509aab45ad255eaf70c55e283d8bc3a8c
+new file mode 100644
+index 0000000..7e2f267
+Binary files /dev/null and b/fuzz/corpora/bndiv/7d80e4a509aab45ad255eaf70c55e283d8bc3a8c differ
+diff --git a/fuzz/corpora/bndiv/7dfa7b2982f30889332a46ab1c156f2fb028d3c2 b/fuzz/corpora/bndiv/7dfa7b2982f30889332a46ab1c156f2fb028d3c2
+new file mode 100644
+index 0000000..8cd385a
+Binary files /dev/null and b/fuzz/corpora/bndiv/7dfa7b2982f30889332a46ab1c156f2fb028d3c2 differ
+diff --git a/fuzz/corpora/bndiv/80dfa4640b4fb70512f32b3935f1b4fbd56bb027 b/fuzz/corpora/bndiv/80dfa4640b4fb70512f32b3935f1b4fbd56bb027
+new file mode 100644
+index 0000000..c7b059e
+Binary files /dev/null and b/fuzz/corpora/bndiv/80dfa4640b4fb70512f32b3935f1b4fbd56bb027 differ
+diff --git a/fuzz/corpora/bndiv/83cc008b2f03b442ab56a1bac2c7a98b586da96c b/fuzz/corpora/bndiv/83cc008b2f03b442ab56a1bac2c7a98b586da96c
+new file mode 100644
+index 0000000..d82827a
+Binary files /dev/null and b/fuzz/corpora/bndiv/83cc008b2f03b442ab56a1bac2c7a98b586da96c differ
+diff --git a/fuzz/corpora/bndiv/84e13713a3c3b63bdce4dca80212bca7bf8c169a b/fuzz/corpora/bndiv/84e13713a3c3b63bdce4dca80212bca7bf8c169a
+new file mode 100644
+index 0000000..b31ae61
+Binary files /dev/null and b/fuzz/corpora/bndiv/84e13713a3c3b63bdce4dca80212bca7bf8c169a differ
+diff --git a/fuzz/corpora/bndiv/8568f6cbf7f27694894008975ea41f63de5a1013 b/fuzz/corpora/bndiv/8568f6cbf7f27694894008975ea41f63de5a1013
+new file mode 100644
+index 0000000..783e4cc
+Binary files /dev/null and b/fuzz/corpora/bndiv/8568f6cbf7f27694894008975ea41f63de5a1013 differ
+diff --git a/fuzz/corpora/bndiv/858f9ff9c8890266ef6686a24145ba26052a3108 b/fuzz/corpora/bndiv/858f9ff9c8890266ef6686a24145ba26052a3108
+new file mode 100644
+index 0000000..8f58496
+Binary files /dev/null and b/fuzz/corpora/bndiv/858f9ff9c8890266ef6686a24145ba26052a3108 differ
+diff --git a/fuzz/corpora/bndiv/85b287d551b5b5e10ad01afec14429ac0683d01c b/fuzz/corpora/bndiv/85b287d551b5b5e10ad01afec14429ac0683d01c
+new file mode 100644
+index 0000000..2724ada
+Binary files /dev/null and b/fuzz/corpora/bndiv/85b287d551b5b5e10ad01afec14429ac0683d01c differ
+diff --git a/fuzz/corpora/bndiv/870d5833dc65c984d4bd40fea6a3ce43c946663a b/fuzz/corpora/bndiv/870d5833dc65c984d4bd40fea6a3ce43c946663a
+new file mode 100644
+index 0000000..9fd75ab
+Binary files /dev/null and b/fuzz/corpora/bndiv/870d5833dc65c984d4bd40fea6a3ce43c946663a differ
+diff --git a/fuzz/corpora/bndiv/8981900dbb68e906264c8f7037292201c73b3047 b/fuzz/corpora/bndiv/8981900dbb68e906264c8f7037292201c73b3047
+new file mode 100644
+index 0000000..76bdbe7
+Binary files /dev/null and b/fuzz/corpora/bndiv/8981900dbb68e906264c8f7037292201c73b3047 differ
+diff --git a/fuzz/corpora/bndiv/8a59b665f31f947b79869ea0e40628efea54e60a b/fuzz/corpora/bndiv/8a59b665f31f947b79869ea0e40628efea54e60a
+new file mode 100644
+index 0000000..c7c8956
+Binary files /dev/null and b/fuzz/corpora/bndiv/8a59b665f31f947b79869ea0e40628efea54e60a differ
+diff --git a/fuzz/corpora/bndiv/8abf22e50a61dbe2c8f8995ffd621f8eb048ec53 b/fuzz/corpora/bndiv/8abf22e50a61dbe2c8f8995ffd621f8eb048ec53
+new file mode 100644
+index 0000000..4ed23fa
+Binary files /dev/null and b/fuzz/corpora/bndiv/8abf22e50a61dbe2c8f8995ffd621f8eb048ec53 differ
+diff --git a/fuzz/corpora/bndiv/8bb9dae6420c9994c388c72b71e6853bff121d4b b/fuzz/corpora/bndiv/8bb9dae6420c9994c388c72b71e6853bff121d4b
+new file mode 100644
+index 0000000..2de2b14
+Binary files /dev/null and b/fuzz/corpora/bndiv/8bb9dae6420c9994c388c72b71e6853bff121d4b differ
+diff --git a/fuzz/corpora/bndiv/8c1010f7c041f2ef9f16181cfc490f8acd6bca37 b/fuzz/corpora/bndiv/8c1010f7c041f2ef9f16181cfc490f8acd6bca37
+new file mode 100644
+index 0000000..7f167ba
+Binary files /dev/null and b/fuzz/corpora/bndiv/8c1010f7c041f2ef9f16181cfc490f8acd6bca37 differ
+diff --git a/fuzz/corpora/bndiv/8c6b43ff095ec92f6d302fc711cc62dedcd2eaa3 b/fuzz/corpora/bndiv/8c6b43ff095ec92f6d302fc711cc62dedcd2eaa3
+new file mode 100644
+index 0000000..dc76939
+Binary files /dev/null and b/fuzz/corpora/bndiv/8c6b43ff095ec92f6d302fc711cc62dedcd2eaa3 differ
+diff --git a/fuzz/corpora/bndiv/8e7f153d6f09bf8b6e67697c9c8333d58583beee b/fuzz/corpora/bndiv/8e7f153d6f09bf8b6e67697c9c8333d58583beee
+new file mode 100644
+index 0000000..c12d7c5
+Binary files /dev/null and b/fuzz/corpora/bndiv/8e7f153d6f09bf8b6e67697c9c8333d58583beee differ
+diff --git a/fuzz/corpora/bndiv/9088b68499089d8fbedf1a0b06627d02e4823d1e b/fuzz/corpora/bndiv/9088b68499089d8fbedf1a0b06627d02e4823d1e
+new file mode 100644
+index 0000000..0396b3d
+Binary files /dev/null and b/fuzz/corpora/bndiv/9088b68499089d8fbedf1a0b06627d02e4823d1e differ
+diff --git a/fuzz/corpora/bndiv/940a04f6f32b60c2feb43666dd29b72387938eec b/fuzz/corpora/bndiv/940a04f6f32b60c2feb43666dd29b72387938eec
+new file mode 100644
+index 0000000..d4a017f
+Binary files /dev/null and b/fuzz/corpora/bndiv/940a04f6f32b60c2feb43666dd29b72387938eec differ
+diff --git a/fuzz/corpora/bndiv/951f7e75731c619d8302b204d53200bc0f6f5722 b/fuzz/corpora/bndiv/951f7e75731c619d8302b204d53200bc0f6f5722
+new file mode 100644
+index 0000000..6d8ac3d
+Binary files /dev/null and b/fuzz/corpora/bndiv/951f7e75731c619d8302b204d53200bc0f6f5722 differ
+diff --git a/fuzz/corpora/bndiv/955c154af6a2cf84af3b08fca48e1dfe7cbb4c1a b/fuzz/corpora/bndiv/955c154af6a2cf84af3b08fca48e1dfe7cbb4c1a
+new file mode 100644
+index 0000000..484f239
+Binary files /dev/null and b/fuzz/corpora/bndiv/955c154af6a2cf84af3b08fca48e1dfe7cbb4c1a differ
+diff --git a/fuzz/corpora/bndiv/95d6379ea58b799ba54425f33bae45bcbaa3d317 b/fuzz/corpora/bndiv/95d6379ea58b799ba54425f33bae45bcbaa3d317
+new file mode 100644
+index 0000000..19e5a77
+Binary files /dev/null and b/fuzz/corpora/bndiv/95d6379ea58b799ba54425f33bae45bcbaa3d317 differ
+diff --git a/fuzz/corpora/bndiv/994cb26e441054f6edd618405777fe3c7de1ecbc b/fuzz/corpora/bndiv/994cb26e441054f6edd618405777fe3c7de1ecbc
+new file mode 100644
+index 0000000..fcb3466
+Binary files /dev/null and b/fuzz/corpora/bndiv/994cb26e441054f6edd618405777fe3c7de1ecbc differ
+diff --git a/fuzz/corpora/bndiv/9b55624a875b903b61596988e5bd60c7f1b2451a b/fuzz/corpora/bndiv/9b55624a875b903b61596988e5bd60c7f1b2451a
+new file mode 100644
+index 0000000..2795c93
+Binary files /dev/null and b/fuzz/corpora/bndiv/9b55624a875b903b61596988e5bd60c7f1b2451a differ
+diff --git a/fuzz/corpora/bndiv/9d79720db949c75a3e03870dd36723a55c221684 b/fuzz/corpora/bndiv/9d79720db949c75a3e03870dd36723a55c221684
+new file mode 100644
+index 0000000..3df0377
+Binary files /dev/null and b/fuzz/corpora/bndiv/9d79720db949c75a3e03870dd36723a55c221684 differ
+diff --git a/fuzz/corpora/bndiv/a3f73dc92096d21d502b9a8546261a74372f1a71 b/fuzz/corpora/bndiv/a3f73dc92096d21d502b9a8546261a74372f1a71
+new file mode 100644
+index 0000000..8440e63
+Binary files /dev/null and b/fuzz/corpora/bndiv/a3f73dc92096d21d502b9a8546261a74372f1a71 differ
+diff --git a/fuzz/corpora/bndiv/a6a176c46fea452190990c1263e213d5f3743050 b/fuzz/corpora/bndiv/a6a176c46fea452190990c1263e213d5f3743050
+new file mode 100644
+index 0000000..da2d7c5
+Binary files /dev/null and b/fuzz/corpora/bndiv/a6a176c46fea452190990c1263e213d5f3743050 differ
+diff --git a/fuzz/corpora/bndiv/a7463b57a3bf2db86a798f26e9ec939965643183 b/fuzz/corpora/bndiv/a7463b57a3bf2db86a798f26e9ec939965643183
+new file mode 100644
+index 0000000..8c081af
+Binary files /dev/null and b/fuzz/corpora/bndiv/a7463b57a3bf2db86a798f26e9ec939965643183 differ
+diff --git a/fuzz/corpora/bndiv/a95761fe9b239c68e07f5bafba71c4a21befe4e9 b/fuzz/corpora/bndiv/a95761fe9b239c68e07f5bafba71c4a21befe4e9
+new file mode 100644
+index 0000000..82054b9
+Binary files /dev/null and b/fuzz/corpora/bndiv/a95761fe9b239c68e07f5bafba71c4a21befe4e9 differ
+diff --git a/fuzz/corpora/bndiv/a9d3b6f9ce1062f128a1e014c43f96985deb4cb6 b/fuzz/corpora/bndiv/a9d3b6f9ce1062f128a1e014c43f96985deb4cb6
+new file mode 100644
+index 0000000..55ee30f
+Binary files /dev/null and b/fuzz/corpora/bndiv/a9d3b6f9ce1062f128a1e014c43f96985deb4cb6 differ
+diff --git a/fuzz/corpora/bndiv/aaac8acbc19d3105c01a0ae20b367dca81f2308d b/fuzz/corpora/bndiv/aaac8acbc19d3105c01a0ae20b367dca81f2308d
+new file mode 100644
+index 0000000..9095189
+Binary files /dev/null and b/fuzz/corpora/bndiv/aaac8acbc19d3105c01a0ae20b367dca81f2308d differ
+diff --git a/fuzz/corpora/bndiv/aceef69d7cea5f18ce634dfd2dbb1212727898e5 b/fuzz/corpora/bndiv/aceef69d7cea5f18ce634dfd2dbb1212727898e5
+new file mode 100644
+index 0000000..767bd11
+Binary files /dev/null and b/fuzz/corpora/bndiv/aceef69d7cea5f18ce634dfd2dbb1212727898e5 differ
+diff --git a/fuzz/corpora/bndiv/adb872f984cb7058234725640be82b94dc1703e0 b/fuzz/corpora/bndiv/adb872f984cb7058234725640be82b94dc1703e0
+new file mode 100644
+index 0000000..4b0959f
+Binary files /dev/null and b/fuzz/corpora/bndiv/adb872f984cb7058234725640be82b94dc1703e0 differ
+diff --git a/fuzz/corpora/bndiv/b4880ee2d8e1f67896696e94d5ddae323628f993 b/fuzz/corpora/bndiv/b4880ee2d8e1f67896696e94d5ddae323628f993
+new file mode 100644
+index 0000000..ce6f76d
+Binary files /dev/null and b/fuzz/corpora/bndiv/b4880ee2d8e1f67896696e94d5ddae323628f993 differ
+diff --git a/fuzz/corpora/bndiv/b4b179e18ca58809359875a2c1e228f4d5cc7f0f b/fuzz/corpora/bndiv/b4b179e18ca58809359875a2c1e228f4d5cc7f0f
+new file mode 100644
+index 0000000..398ed9b
+Binary files /dev/null and b/fuzz/corpora/bndiv/b4b179e18ca58809359875a2c1e228f4d5cc7f0f differ
+diff --git a/fuzz/corpora/bndiv/b6079e2a45a91472dce11a59d56665173526f020 b/fuzz/corpora/bndiv/b6079e2a45a91472dce11a59d56665173526f020
+new file mode 100644
+index 0000000..db4e012
+Binary files /dev/null and b/fuzz/corpora/bndiv/b6079e2a45a91472dce11a59d56665173526f020 differ
+diff --git a/fuzz/corpora/bndiv/b64460520fb69de4d3994dd347cdb6e484661775 b/fuzz/corpora/bndiv/b64460520fb69de4d3994dd347cdb6e484661775
+new file mode 100644
+index 0000000..e1c956a
+Binary files /dev/null and b/fuzz/corpora/bndiv/b64460520fb69de4d3994dd347cdb6e484661775 differ
+diff --git a/fuzz/corpora/bndiv/ba46026e915894d9fe1f4d4ceaea13002af2b360 b/fuzz/corpora/bndiv/ba46026e915894d9fe1f4d4ceaea13002af2b360
+new file mode 100644
+index 0000000..57b2ba9
+Binary files /dev/null and b/fuzz/corpora/bndiv/ba46026e915894d9fe1f4d4ceaea13002af2b360 differ
+diff --git a/fuzz/corpora/bndiv/bb1b8f57b2ee2640740802f7dbc6dd830050203d b/fuzz/corpora/bndiv/bb1b8f57b2ee2640740802f7dbc6dd830050203d
+new file mode 100644
+index 0000000..fbab862
+Binary files /dev/null and b/fuzz/corpora/bndiv/bb1b8f57b2ee2640740802f7dbc6dd830050203d differ
+diff --git a/fuzz/corpora/bndiv/bc351aa1c2dbd0717311a47e7055618957362c8f b/fuzz/corpora/bndiv/bc351aa1c2dbd0717311a47e7055618957362c8f
+new file mode 100644
+index 0000000..483e5fd
+Binary files /dev/null and b/fuzz/corpora/bndiv/bc351aa1c2dbd0717311a47e7055618957362c8f differ
+diff --git a/fuzz/corpora/bndiv/bd25a6b28bc81dc545846a34bfe1a4d67d1841f9 b/fuzz/corpora/bndiv/bd25a6b28bc81dc545846a34bfe1a4d67d1841f9
+new file mode 100644
+index 0000000..12b287e
+Binary files /dev/null and b/fuzz/corpora/bndiv/bd25a6b28bc81dc545846a34bfe1a4d67d1841f9 differ
+diff --git a/fuzz/corpora/bndiv/bd2788635245ee407a282f3bfed29b1adbf0febb b/fuzz/corpora/bndiv/bd2788635245ee407a282f3bfed29b1adbf0febb
+new file mode 100644
+index 0000000..0452fb7
+Binary files /dev/null and b/fuzz/corpora/bndiv/bd2788635245ee407a282f3bfed29b1adbf0febb differ
+diff --git a/fuzz/corpora/bndiv/c1b91b5cbcb97112dcc382a3b3f88494f3494021 b/fuzz/corpora/bndiv/c1b91b5cbcb97112dcc382a3b3f88494f3494021
+new file mode 100644
+index 0000000..064b8f2
+Binary files /dev/null and b/fuzz/corpora/bndiv/c1b91b5cbcb97112dcc382a3b3f88494f3494021 differ
+diff --git a/fuzz/corpora/bndiv/c23b9c05aea82e1646f1ac3e0b6756baa2fb48b7 b/fuzz/corpora/bndiv/c23b9c05aea82e1646f1ac3e0b6756baa2fb48b7
+new file mode 100644
+index 0000000..9d93b81
+Binary files /dev/null and b/fuzz/corpora/bndiv/c23b9c05aea82e1646f1ac3e0b6756baa2fb48b7 differ
+diff --git a/fuzz/corpora/bndiv/c358045a294d116c315ff56aabc4fe7e4e62c480 b/fuzz/corpora/bndiv/c358045a294d116c315ff56aabc4fe7e4e62c480
+new file mode 100644
+index 0000000..84494e1
+Binary files /dev/null and b/fuzz/corpora/bndiv/c358045a294d116c315ff56aabc4fe7e4e62c480 differ
+diff --git a/fuzz/corpora/bndiv/c38089264931877f9972924b51a38a6fe3a8785c b/fuzz/corpora/bndiv/c38089264931877f9972924b51a38a6fe3a8785c
+new file mode 100644
+index 0000000..d868e96
+Binary files /dev/null and b/fuzz/corpora/bndiv/c38089264931877f9972924b51a38a6fe3a8785c differ
+diff --git a/fuzz/corpora/bndiv/c55af0abdf3e4f0db52bdf9e9dacf555045a54de b/fuzz/corpora/bndiv/c55af0abdf3e4f0db52bdf9e9dacf555045a54de
+new file mode 100644
+index 0000000..9b570d5
+Binary files /dev/null and b/fuzz/corpora/bndiv/c55af0abdf3e4f0db52bdf9e9dacf555045a54de differ
+diff --git a/fuzz/corpora/bndiv/c56fca23a44ba369039aa177608b6b1da73533a1 b/fuzz/corpora/bndiv/c56fca23a44ba369039aa177608b6b1da73533a1
+new file mode 100644
+index 0000000..d14c6d3
+Binary files /dev/null and b/fuzz/corpora/bndiv/c56fca23a44ba369039aa177608b6b1da73533a1 differ
+diff --git a/fuzz/corpora/bndiv/c59a984cd4e26d46affb13d9acd868606ee8f091 b/fuzz/corpora/bndiv/c59a984cd4e26d46affb13d9acd868606ee8f091
+new file mode 100644
+index 0000000..3bc528c
+Binary files /dev/null and b/fuzz/corpora/bndiv/c59a984cd4e26d46affb13d9acd868606ee8f091 differ
+diff --git a/fuzz/corpora/bndiv/cca37b71d54143547e75631c96e8f337dd8d04d3 b/fuzz/corpora/bndiv/cca37b71d54143547e75631c96e8f337dd8d04d3
+new file mode 100644
+index 0000000..c6a210b
+Binary files /dev/null and b/fuzz/corpora/bndiv/cca37b71d54143547e75631c96e8f337dd8d04d3 differ
+diff --git a/fuzz/corpora/bndiv/d329b76f5c2df6a9944917b26b38deaaec2a0666 b/fuzz/corpora/bndiv/d329b76f5c2df6a9944917b26b38deaaec2a0666
+new file mode 100644
+index 0000000..db79475
+Binary files /dev/null and b/fuzz/corpora/bndiv/d329b76f5c2df6a9944917b26b38deaaec2a0666 differ
+diff --git a/fuzz/corpora/bndiv/d34ad7b5d248e34a170fe10f10fa97a97c8adec3 b/fuzz/corpora/bndiv/d34ad7b5d248e34a170fe10f10fa97a97c8adec3
+new file mode 100644
+index 0000000..93ca5cb
+Binary files /dev/null and b/fuzz/corpora/bndiv/d34ad7b5d248e34a170fe10f10fa97a97c8adec3 differ
+diff --git a/fuzz/corpora/bndiv/d52521be6f858377528b72b948c39bc8be348fd5 b/fuzz/corpora/bndiv/d52521be6f858377528b72b948c39bc8be348fd5
+new file mode 100644
+index 0000000..bfc56e5
+Binary files /dev/null and b/fuzz/corpora/bndiv/d52521be6f858377528b72b948c39bc8be348fd5 differ
+diff --git a/fuzz/corpora/bndiv/d9eac491478623200cf6605873d0e2bac27a2461 b/fuzz/corpora/bndiv/d9eac491478623200cf6605873d0e2bac27a2461
+new file mode 100644
+index 0000000..3ee0b4e
+Binary files /dev/null and b/fuzz/corpora/bndiv/d9eac491478623200cf6605873d0e2bac27a2461 differ
+diff --git a/fuzz/corpora/bndiv/def1e8a1d7d9366672fbda0a583b692fc0c32c46 b/fuzz/corpora/bndiv/def1e8a1d7d9366672fbda0a583b692fc0c32c46
+new file mode 100644
+index 0000000..d7cd26e
+Binary files /dev/null and b/fuzz/corpora/bndiv/def1e8a1d7d9366672fbda0a583b692fc0c32c46 differ
+diff --git a/fuzz/corpora/bndiv/dfb4a982eabc7a659f1273b32598f150162a69b8 b/fuzz/corpora/bndiv/dfb4a982eabc7a659f1273b32598f150162a69b8
+new file mode 100644
+index 0000000..f3587c7
+Binary files /dev/null and b/fuzz/corpora/bndiv/dfb4a982eabc7a659f1273b32598f150162a69b8 differ
+diff --git a/fuzz/corpora/bndiv/e00abb54d0fe8d11ed63951a407757de2e94a81c b/fuzz/corpora/bndiv/e00abb54d0fe8d11ed63951a407757de2e94a81c
+new file mode 100644
+index 0000000..497a62e
+Binary files /dev/null and b/fuzz/corpora/bndiv/e00abb54d0fe8d11ed63951a407757de2e94a81c differ
+diff --git a/fuzz/corpora/bndiv/e23bffaba03c0778aea4490ce79fdacd03fa1477 b/fuzz/corpora/bndiv/e23bffaba03c0778aea4490ce79fdacd03fa1477
+new file mode 100644
+index 0000000..e8a1dc0
+Binary files /dev/null and b/fuzz/corpora/bndiv/e23bffaba03c0778aea4490ce79fdacd03fa1477 differ
+diff --git a/fuzz/corpora/bndiv/e2523d20cafb2b423f3d88e712a9e5665e6bc48a b/fuzz/corpora/bndiv/e2523d20cafb2b423f3d88e712a9e5665e6bc48a
+new file mode 100644
+index 0000000..cc1561c
+Binary files /dev/null and b/fuzz/corpora/bndiv/e2523d20cafb2b423f3d88e712a9e5665e6bc48a differ
+diff --git a/fuzz/corpora/bndiv/e73ff44782cdf3fbe87ee976fb06a09633e8c4d9 b/fuzz/corpora/bndiv/e73ff44782cdf3fbe87ee976fb06a09633e8c4d9
+new file mode 100644
+index 0000000..20e637e
+Binary files /dev/null and b/fuzz/corpora/bndiv/e73ff44782cdf3fbe87ee976fb06a09633e8c4d9 differ
+diff --git a/fuzz/corpora/bndiv/e74bd53000909087103da03415dc4dd09af11b67 b/fuzz/corpora/bndiv/e74bd53000909087103da03415dc4dd09af11b67
+new file mode 100644
+index 0000000..4cff904
+Binary files /dev/null and b/fuzz/corpora/bndiv/e74bd53000909087103da03415dc4dd09af11b67 differ
+diff --git a/fuzz/corpora/bndiv/e9974c58cdd7dd42b835f16b65e5feff848f0920 b/fuzz/corpora/bndiv/e9974c58cdd7dd42b835f16b65e5feff848f0920
+new file mode 100644
+index 0000000..0775e88
+Binary files /dev/null and b/fuzz/corpora/bndiv/e9974c58cdd7dd42b835f16b65e5feff848f0920 differ
+diff --git a/fuzz/corpora/bndiv/edddcb660ba75b99edb3e12bcdb3fe0fcc55ba81 b/fuzz/corpora/bndiv/edddcb660ba75b99edb3e12bcdb3fe0fcc55ba81
+new file mode 100644
+index 0000000..a677cfe
+Binary files /dev/null and b/fuzz/corpora/bndiv/edddcb660ba75b99edb3e12bcdb3fe0fcc55ba81 differ
+diff --git a/fuzz/corpora/bndiv/ee6367f4b155aaf1d4d3c805576fced110f6de64 b/fuzz/corpora/bndiv/ee6367f4b155aaf1d4d3c805576fced110f6de64
+new file mode 100644
+index 0000000..cc56310
+Binary files /dev/null and b/fuzz/corpora/bndiv/ee6367f4b155aaf1d4d3c805576fced110f6de64 differ
+diff --git a/fuzz/corpora/bndiv/f1a40865f93e75b68c10eb19b8905750a5ed22ad b/fuzz/corpora/bndiv/f1a40865f93e75b68c10eb19b8905750a5ed22ad
+new file mode 100644
+index 0000000..21da658
+Binary files /dev/null and b/fuzz/corpora/bndiv/f1a40865f93e75b68c10eb19b8905750a5ed22ad differ
+diff --git a/fuzz/corpora/bndiv/f2781d83503fc623370404ba2221807d6410f17b b/fuzz/corpora/bndiv/f2781d83503fc623370404ba2221807d6410f17b
+new file mode 100644
+index 0000000..7bbd6e2
+Binary files /dev/null and b/fuzz/corpora/bndiv/f2781d83503fc623370404ba2221807d6410f17b differ
+diff --git a/fuzz/corpora/bndiv/f283157a26e9c36bff5d442440f504382fc632b6 b/fuzz/corpora/bndiv/f283157a26e9c36bff5d442440f504382fc632b6
+new file mode 100644
+index 0000000..d8aa91b
+Binary files /dev/null and b/fuzz/corpora/bndiv/f283157a26e9c36bff5d442440f504382fc632b6 differ
+diff --git a/fuzz/corpora/bndiv/f2cce82b05b8f53f08221a2481082d31e9cc6b51 b/fuzz/corpora/bndiv/f2cce82b05b8f53f08221a2481082d31e9cc6b51
+new file mode 100644
+index 0000000..6bd2cab
+Binary files /dev/null and b/fuzz/corpora/bndiv/f2cce82b05b8f53f08221a2481082d31e9cc6b51 differ
+diff --git a/fuzz/corpora/bndiv/f371e628c2313f381c57918da53bf71ec8c9c277 b/fuzz/corpora/bndiv/f371e628c2313f381c57918da53bf71ec8c9c277
+new file mode 100644
+index 0000000..cf579d1
+Binary files /dev/null and b/fuzz/corpora/bndiv/f371e628c2313f381c57918da53bf71ec8c9c277 differ
+diff --git a/fuzz/corpora/bndiv/f39293903321bea7c8a9433139fc78760b9d40d8 b/fuzz/corpora/bndiv/f39293903321bea7c8a9433139fc78760b9d40d8
+new file mode 100644
+index 0000000..c025671
+Binary files /dev/null and b/fuzz/corpora/bndiv/f39293903321bea7c8a9433139fc78760b9d40d8 differ
+diff --git a/fuzz/corpora/bndiv/f4636445dc7450f2422b4a3255c335e809329772 b/fuzz/corpora/bndiv/f4636445dc7450f2422b4a3255c335e809329772
+new file mode 100644
+index 0000000..ccd1a62
+Binary files /dev/null and b/fuzz/corpora/bndiv/f4636445dc7450f2422b4a3255c335e809329772 differ
+diff --git a/fuzz/corpora/bndiv/f743f3439f37a3f3503f6cce0524303fea29566a b/fuzz/corpora/bndiv/f743f3439f37a3f3503f6cce0524303fea29566a
+new file mode 100644
+index 0000000..dcccf12
+Binary files /dev/null and b/fuzz/corpora/bndiv/f743f3439f37a3f3503f6cce0524303fea29566a differ
+diff --git a/fuzz/corpora/bndiv/fa146f33103edadb91b3eb80ab601ffb072d9b4a b/fuzz/corpora/bndiv/fa146f33103edadb91b3eb80ab601ffb072d9b4a
+new file mode 100644
+index 0000000..8fefd3e
+Binary files /dev/null and b/fuzz/corpora/bndiv/fa146f33103edadb91b3eb80ab601ffb072d9b4a differ
+diff --git a/fuzz/corpora/bndiv/fcfd9398956bf8a0149d82bcb8a159272e9e7e46 b/fuzz/corpora/bndiv/fcfd9398956bf8a0149d82bcb8a159272e9e7e46
+new file mode 100644
+index 0000000..0faac0b
+Binary files /dev/null and b/fuzz/corpora/bndiv/fcfd9398956bf8a0149d82bcb8a159272e9e7e46 differ
+diff --git a/fuzz/corpora/bndiv/fda907bde85e1c335a67508432d0952f8338a30a b/fuzz/corpora/bndiv/fda907bde85e1c335a67508432d0952f8338a30a
+new file mode 100644
+index 0000000..c3221d3
+Binary files /dev/null and b/fuzz/corpora/bndiv/fda907bde85e1c335a67508432d0952f8338a30a differ
+diff --git a/fuzz/corpora/bndiv/ff4937baf5a845b14580e0c331ff85c9039bb287 b/fuzz/corpora/bndiv/ff4937baf5a845b14580e0c331ff85c9039bb287
+new file mode 100644
+index 0000000..ad3198b
+Binary files /dev/null and b/fuzz/corpora/bndiv/ff4937baf5a845b14580e0c331ff85c9039bb287 differ
+diff --git a/fuzz/corpora/bndiv/ffb4c1505b3a3b27a06bc931e8013e89b692eeaa b/fuzz/corpora/bndiv/ffb4c1505b3a3b27a06bc931e8013e89b692eeaa
+new file mode 100644
+index 0000000..62e0e6e
+Binary files /dev/null and b/fuzz/corpora/bndiv/ffb4c1505b3a3b27a06bc931e8013e89b692eeaa differ
+diff --git a/fuzz/corpora/cms/008588f8b942da8fba2812c05522f0f0328d233a b/fuzz/corpora/cms/008588f8b942da8fba2812c05522f0f0328d233a
+new file mode 100644
+index 0000000..4685f85
+Binary files /dev/null and b/fuzz/corpora/cms/008588f8b942da8fba2812c05522f0f0328d233a differ
+diff --git a/fuzz/corpora/cms/008936f1f293b9f495979c3cfc0595d7e273ca65 b/fuzz/corpora/cms/008936f1f293b9f495979c3cfc0595d7e273ca65
+new file mode 100644
+index 0000000..e8f1dc2
+Binary files /dev/null and b/fuzz/corpora/cms/008936f1f293b9f495979c3cfc0595d7e273ca65 differ
+diff --git a/fuzz/corpora/cms/00cd53fdf6a72d35571d3882fb3c74862debc331 b/fuzz/corpora/cms/00cd53fdf6a72d35571d3882fb3c74862debc331
+new file mode 100644
+index 0000000..0279976
+Binary files /dev/null and b/fuzz/corpora/cms/00cd53fdf6a72d35571d3882fb3c74862debc331 differ
+diff --git a/fuzz/corpora/cms/05fb8071206bf0ecd7a2a771e6ba1a77a789ef96 b/fuzz/corpora/cms/05fb8071206bf0ecd7a2a771e6ba1a77a789ef96
+new file mode 100644
+index 0000000..2933a2c
+Binary files /dev/null and b/fuzz/corpora/cms/05fb8071206bf0ecd7a2a771e6ba1a77a789ef96 differ
+diff --git a/fuzz/corpora/cms/0f15db777a0272c5e089f1508a6cd2e064df7b7e b/fuzz/corpora/cms/0f15db777a0272c5e089f1508a6cd2e064df7b7e
+new file mode 100644
+index 0000000..a601a5c
+Binary files /dev/null and b/fuzz/corpora/cms/0f15db777a0272c5e089f1508a6cd2e064df7b7e differ
+diff --git a/fuzz/corpora/cms/111f267698d1cbac816dc35ace482b466b029a9a b/fuzz/corpora/cms/111f267698d1cbac816dc35ace482b466b029a9a
+new file mode 100644
+index 0000000..e817326
+Binary files /dev/null and b/fuzz/corpora/cms/111f267698d1cbac816dc35ace482b466b029a9a differ
+diff --git a/fuzz/corpora/cms/13eb274212ad5e416ba9c1a22e0a502aa9ca8141 b/fuzz/corpora/cms/13eb274212ad5e416ba9c1a22e0a502aa9ca8141
+new file mode 100644
+index 0000000..6208939
+Binary files /dev/null and b/fuzz/corpora/cms/13eb274212ad5e416ba9c1a22e0a502aa9ca8141 differ
+diff --git a/fuzz/corpora/cms/17480c205d8e14d241319419647b4f750f70deff b/fuzz/corpora/cms/17480c205d8e14d241319419647b4f750f70deff
+new file mode 100644
+index 0000000..2b4ad4f
+Binary files /dev/null and b/fuzz/corpora/cms/17480c205d8e14d241319419647b4f750f70deff differ
+diff --git a/fuzz/corpora/cms/17ba378b0b6339b8cc7b620b1b6dd52190758346 b/fuzz/corpora/cms/17ba378b0b6339b8cc7b620b1b6dd52190758346
+new file mode 100644
+index 0000000..8a5e6be
+Binary files /dev/null and b/fuzz/corpora/cms/17ba378b0b6339b8cc7b620b1b6dd52190758346 differ
+diff --git a/fuzz/corpora/cms/1a6e8eb2614c5fc362e1ea2e8eef2b8c6b9d9b40 b/fuzz/corpora/cms/1a6e8eb2614c5fc362e1ea2e8eef2b8c6b9d9b40
+new file mode 100644
+index 0000000..1822470
+Binary files /dev/null and b/fuzz/corpora/cms/1a6e8eb2614c5fc362e1ea2e8eef2b8c6b9d9b40 differ
+diff --git a/fuzz/corpora/cms/1b47e3a0a9c94594e4a9547687ffad954582e473 b/fuzz/corpora/cms/1b47e3a0a9c94594e4a9547687ffad954582e473
+new file mode 100644
+index 0000000..86bff32
+Binary files /dev/null and b/fuzz/corpora/cms/1b47e3a0a9c94594e4a9547687ffad954582e473 differ
+diff --git a/fuzz/corpora/cms/1c95f2671c37c29b4648e148628be77c8b580c55 b/fuzz/corpora/cms/1c95f2671c37c29b4648e148628be77c8b580c55
+new file mode 100644
+index 0000000..2ee0459
+Binary files /dev/null and b/fuzz/corpora/cms/1c95f2671c37c29b4648e148628be77c8b580c55 differ
+diff --git a/fuzz/corpora/cms/1cc1ac7f8b6d10e6d1f91d41f4dee1461b21b614 b/fuzz/corpora/cms/1cc1ac7f8b6d10e6d1f91d41f4dee1461b21b614
+new file mode 100644
+index 0000000..f1e9ce3
+Binary files /dev/null and b/fuzz/corpora/cms/1cc1ac7f8b6d10e6d1f91d41f4dee1461b21b614 differ
+diff --git a/fuzz/corpora/cms/1e1192142dd3e5c9e3652d090547e8931656eaff b/fuzz/corpora/cms/1e1192142dd3e5c9e3652d090547e8931656eaff
+new file mode 100644
+index 0000000..e3dd275
+Binary files /dev/null and b/fuzz/corpora/cms/1e1192142dd3e5c9e3652d090547e8931656eaff differ
+diff --git a/fuzz/corpora/cms/1ee8df2e1477caa935372d96b92062b2070bca6f b/fuzz/corpora/cms/1ee8df2e1477caa935372d96b92062b2070bca6f
+new file mode 100644
+index 0000000..a012145
+Binary files /dev/null and b/fuzz/corpora/cms/1ee8df2e1477caa935372d96b92062b2070bca6f differ
+diff --git a/fuzz/corpora/cms/2220a887761b68984fdc55456edc02e2c84c8b84 b/fuzz/corpora/cms/2220a887761b68984fdc55456edc02e2c84c8b84
+new file mode 100644
+index 0000000..a6a68fb
+Binary files /dev/null and b/fuzz/corpora/cms/2220a887761b68984fdc55456edc02e2c84c8b84 differ
+diff --git a/fuzz/corpora/cms/22eac974c6250817f5976a80d7be85b498fe3c8c b/fuzz/corpora/cms/22eac974c6250817f5976a80d7be85b498fe3c8c
+new file mode 100644
+index 0000000..d3bb72b
+Binary files /dev/null and b/fuzz/corpora/cms/22eac974c6250817f5976a80d7be85b498fe3c8c differ
+diff --git a/fuzz/corpora/cms/29ba133f7cd81aeb0aeafc0874e215fa06bc15fe b/fuzz/corpora/cms/29ba133f7cd81aeb0aeafc0874e215fa06bc15fe
+new file mode 100644
+index 0000000..5d1ff86
+Binary files /dev/null and b/fuzz/corpora/cms/29ba133f7cd81aeb0aeafc0874e215fa06bc15fe differ
+diff --git a/fuzz/corpora/cms/2c2042540c0193350aabec68d9af25d8bbc7c0bd b/fuzz/corpora/cms/2c2042540c0193350aabec68d9af25d8bbc7c0bd
+new file mode 100644
+index 0000000..6ec8d9e
+Binary files /dev/null and b/fuzz/corpora/cms/2c2042540c0193350aabec68d9af25d8bbc7c0bd differ
+diff --git a/fuzz/corpora/cms/2e2f353cfa042160460167ce952bb38e3b4d6039 b/fuzz/corpora/cms/2e2f353cfa042160460167ce952bb38e3b4d6039
+new file mode 100644
+index 0000000..a1de5b2
+Binary files /dev/null and b/fuzz/corpora/cms/2e2f353cfa042160460167ce952bb38e3b4d6039 differ
+diff --git a/fuzz/corpora/cms/30c399c9612c18c7332320341c072b2d61124331 b/fuzz/corpora/cms/30c399c9612c18c7332320341c072b2d61124331
+new file mode 100644
+index 0000000..58ebe50
+Binary files /dev/null and b/fuzz/corpora/cms/30c399c9612c18c7332320341c072b2d61124331 differ
+diff --git a/fuzz/corpora/cms/334d568b5edb44b72ba46b83f5c5a9842fb6cad2 b/fuzz/corpora/cms/334d568b5edb44b72ba46b83f5c5a9842fb6cad2
+new file mode 100644
+index 0000000..266160d
+Binary files /dev/null and b/fuzz/corpora/cms/334d568b5edb44b72ba46b83f5c5a9842fb6cad2 differ
+diff --git a/fuzz/corpora/cms/345bd68388e09b501c9e657174ac839b08490684 b/fuzz/corpora/cms/345bd68388e09b501c9e657174ac839b08490684
+new file mode 100644
+index 0000000..df6b39b
+Binary files /dev/null and b/fuzz/corpora/cms/345bd68388e09b501c9e657174ac839b08490684 differ
+diff --git a/fuzz/corpora/cms/34b45b04ac3e8931f52fb22b786f092f3f349bc8 b/fuzz/corpora/cms/34b45b04ac3e8931f52fb22b786f092f3f349bc8
+new file mode 100644
+index 0000000..29e4ce9
+Binary files /dev/null and b/fuzz/corpora/cms/34b45b04ac3e8931f52fb22b786f092f3f349bc8 differ
+diff --git a/fuzz/corpora/cms/34e5a56abf01b46be37a37e394aa63db5c57f5a1 b/fuzz/corpora/cms/34e5a56abf01b46be37a37e394aa63db5c57f5a1
+new file mode 100644
+index 0000000..d719c15
+Binary files /dev/null and b/fuzz/corpora/cms/34e5a56abf01b46be37a37e394aa63db5c57f5a1 differ
+diff --git a/fuzz/corpora/cms/35b327afa395b5a527da2c60aa55198ae95e12fd b/fuzz/corpora/cms/35b327afa395b5a527da2c60aa55198ae95e12fd
+new file mode 100644
+index 0000000..49757b9
+Binary files /dev/null and b/fuzz/corpora/cms/35b327afa395b5a527da2c60aa55198ae95e12fd differ
+diff --git a/fuzz/corpora/cms/3637fe4634e7ed74df9ff008a9397387bebc133c b/fuzz/corpora/cms/3637fe4634e7ed74df9ff008a9397387bebc133c
+new file mode 100644
+index 0000000..484af4b
+Binary files /dev/null and b/fuzz/corpora/cms/3637fe4634e7ed74df9ff008a9397387bebc133c differ
+diff --git a/fuzz/corpora/cms/37f19198b8e2c1151fbf1c2fb3e233acbc41744a b/fuzz/corpora/cms/37f19198b8e2c1151fbf1c2fb3e233acbc41744a
+new file mode 100644
+index 0000000..49fdb5b
+Binary files /dev/null and b/fuzz/corpora/cms/37f19198b8e2c1151fbf1c2fb3e233acbc41744a differ
+diff --git a/fuzz/corpora/cms/381832e3161e655e2bb4e83d9436134b25e4bc5e b/fuzz/corpora/cms/381832e3161e655e2bb4e83d9436134b25e4bc5e
+new file mode 100644
+index 0000000..42bf122
+Binary files /dev/null and b/fuzz/corpora/cms/381832e3161e655e2bb4e83d9436134b25e4bc5e differ
+diff --git a/fuzz/corpora/cms/3cda064cd26db41a8705b2505e42d67a77f128cf b/fuzz/corpora/cms/3cda064cd26db41a8705b2505e42d67a77f128cf
+new file mode 100644
+index 0000000..b70a1e1
+Binary files /dev/null and b/fuzz/corpora/cms/3cda064cd26db41a8705b2505e42d67a77f128cf differ
+diff --git a/fuzz/corpora/cms/3e1ee8cebe894b30ed5a1a7cbe7bec4c4af2e1db b/fuzz/corpora/cms/3e1ee8cebe894b30ed5a1a7cbe7bec4c4af2e1db
+new file mode 100644
+index 0000000..04ec33e
+Binary files /dev/null and b/fuzz/corpora/cms/3e1ee8cebe894b30ed5a1a7cbe7bec4c4af2e1db differ
+diff --git a/fuzz/corpora/cms/3fa4f3b396722595eb64469fce6eb9f10387be35 b/fuzz/corpora/cms/3fa4f3b396722595eb64469fce6eb9f10387be35
+new file mode 100644
+index 0000000..d73d538
+Binary files /dev/null and b/fuzz/corpora/cms/3fa4f3b396722595eb64469fce6eb9f10387be35 differ
+diff --git a/fuzz/corpora/cms/400bda580ee61c008925f6f84147c4126797afa8 b/fuzz/corpora/cms/400bda580ee61c008925f6f84147c4126797afa8
+new file mode 100644
+index 0000000..b5226b1
+Binary files /dev/null and b/fuzz/corpora/cms/400bda580ee61c008925f6f84147c4126797afa8 differ
+diff --git a/fuzz/corpora/cms/4221d117d1cc60ed3bf9df8521fe41fff9b5f4f1 b/fuzz/corpora/cms/4221d117d1cc60ed3bf9df8521fe41fff9b5f4f1
+new file mode 100644
+index 0000000..8bad434
+Binary files /dev/null and b/fuzz/corpora/cms/4221d117d1cc60ed3bf9df8521fe41fff9b5f4f1 differ
+diff --git a/fuzz/corpora/cms/435b6d3643b613a79fcfbb165c4b7760c5c797ee b/fuzz/corpora/cms/435b6d3643b613a79fcfbb165c4b7760c5c797ee
+new file mode 100644
+index 0000000..91303a7
+Binary files /dev/null and b/fuzz/corpora/cms/435b6d3643b613a79fcfbb165c4b7760c5c797ee differ
+diff --git a/fuzz/corpora/cms/4415864188a309e4bea39e4978a2746b92344947 b/fuzz/corpora/cms/4415864188a309e4bea39e4978a2746b92344947
+new file mode 100644
+index 0000000..f54e9ec
+Binary files /dev/null and b/fuzz/corpora/cms/4415864188a309e4bea39e4978a2746b92344947 differ
+diff --git a/fuzz/corpora/cms/473d52f5773cc6b9e317d366b89d874dadd7ee9a b/fuzz/corpora/cms/473d52f5773cc6b9e317d366b89d874dadd7ee9a
+new file mode 100644
+index 0000000..e866040
+Binary files /dev/null and b/fuzz/corpora/cms/473d52f5773cc6b9e317d366b89d874dadd7ee9a differ
+diff --git a/fuzz/corpora/cms/4748ac55cca483a07dfe6bcceea4890c6092d891 b/fuzz/corpora/cms/4748ac55cca483a07dfe6bcceea4890c6092d891
+new file mode 100644
+index 0000000..a581e7c
+Binary files /dev/null and b/fuzz/corpora/cms/4748ac55cca483a07dfe6bcceea4890c6092d891 differ
+diff --git a/fuzz/corpora/cms/499b514a646a97eb238f27e70ddaf77a2b706de1 b/fuzz/corpora/cms/499b514a646a97eb238f27e70ddaf77a2b706de1
+new file mode 100644
+index 0000000..4a19572
+Binary files /dev/null and b/fuzz/corpora/cms/499b514a646a97eb238f27e70ddaf77a2b706de1 differ
+diff --git a/fuzz/corpora/cms/4cade5da961a5730a28ef9035ecb34b143b1099e b/fuzz/corpora/cms/4cade5da961a5730a28ef9035ecb34b143b1099e
+new file mode 100644
+index 0000000..a518863
+Binary files /dev/null and b/fuzz/corpora/cms/4cade5da961a5730a28ef9035ecb34b143b1099e differ
+diff --git a/fuzz/corpora/cms/4ce0ff06f4588fcefecc113b43115b4ec5ab3912 b/fuzz/corpora/cms/4ce0ff06f4588fcefecc113b43115b4ec5ab3912
+new file mode 100644
+index 0000000..2daf62a
+Binary files /dev/null and b/fuzz/corpora/cms/4ce0ff06f4588fcefecc113b43115b4ec5ab3912 differ
+diff --git a/fuzz/corpora/cms/4dbee9f1ffb494161790ac1fd79d78882c923818 b/fuzz/corpora/cms/4dbee9f1ffb494161790ac1fd79d78882c923818
+new file mode 100644
+index 0000000..99ed076
+Binary files /dev/null and b/fuzz/corpora/cms/4dbee9f1ffb494161790ac1fd79d78882c923818 differ
+diff --git a/fuzz/corpora/cms/4fd63f772b571fd8a354a3f20b60756770817f14 b/fuzz/corpora/cms/4fd63f772b571fd8a354a3f20b60756770817f14
+new file mode 100644
+index 0000000..f62be49
+Binary files /dev/null and b/fuzz/corpora/cms/4fd63f772b571fd8a354a3f20b60756770817f14 differ
+diff --git a/fuzz/corpora/cms/5511d5ca205f5285fb8f2cf64831b8fb0efcd501 b/fuzz/corpora/cms/5511d5ca205f5285fb8f2cf64831b8fb0efcd501
+new file mode 100644
+index 0000000..4183013
+Binary files /dev/null and b/fuzz/corpora/cms/5511d5ca205f5285fb8f2cf64831b8fb0efcd501 differ
+diff --git a/fuzz/corpora/cms/55a5c7054893c48091b370af5fe0a415ea04abaa b/fuzz/corpora/cms/55a5c7054893c48091b370af5fe0a415ea04abaa
+new file mode 100644
+index 0000000..30d653e
+Binary files /dev/null and b/fuzz/corpora/cms/55a5c7054893c48091b370af5fe0a415ea04abaa differ
+diff --git a/fuzz/corpora/cms/5744861a64fd90282b4edfbb8fc558a28d389791 b/fuzz/corpora/cms/5744861a64fd90282b4edfbb8fc558a28d389791
+new file mode 100644
+index 0000000..690b062
+Binary files /dev/null and b/fuzz/corpora/cms/5744861a64fd90282b4edfbb8fc558a28d389791 differ
+diff --git a/fuzz/corpora/cms/57c184a24bdd704ba98e57d1279b24891368ab97 b/fuzz/corpora/cms/57c184a24bdd704ba98e57d1279b24891368ab97
+new file mode 100644
+index 0000000..c898ad2
+Binary files /dev/null and b/fuzz/corpora/cms/57c184a24bdd704ba98e57d1279b24891368ab97 differ
+diff --git a/fuzz/corpora/cms/59b95860da326b260ed7584ffd81a0b02fcc8290 b/fuzz/corpora/cms/59b95860da326b260ed7584ffd81a0b02fcc8290
+new file mode 100644
+index 0000000..38a05fe
+Binary files /dev/null and b/fuzz/corpora/cms/59b95860da326b260ed7584ffd81a0b02fcc8290 differ
+diff --git a/fuzz/corpora/cms/5a37f049dfb23d3dafbb3eee8015957b569efbd6 b/fuzz/corpora/cms/5a37f049dfb23d3dafbb3eee8015957b569efbd6
+new file mode 100644
+index 0000000..a539205
+Binary files /dev/null and b/fuzz/corpora/cms/5a37f049dfb23d3dafbb3eee8015957b569efbd6 differ
+diff --git a/fuzz/corpora/cms/5a4b0a33d668c8a583c8baf37b320444633473e4 b/fuzz/corpora/cms/5a4b0a33d668c8a583c8baf37b320444633473e4
+new file mode 100644
+index 0000000..dbf4d88
+Binary files /dev/null and b/fuzz/corpora/cms/5a4b0a33d668c8a583c8baf37b320444633473e4 differ
+diff --git a/fuzz/corpora/cms/5a95bfce7900eec07c5c2f311d8e0ee2354f3c73 b/fuzz/corpora/cms/5a95bfce7900eec07c5c2f311d8e0ee2354f3c73
+new file mode 100644
+index 0000000..cff1dfa
+Binary files /dev/null and b/fuzz/corpora/cms/5a95bfce7900eec07c5c2f311d8e0ee2354f3c73 differ
+diff --git a/fuzz/corpora/cms/5b5b308ff54ee711f41f06e8e9280544fb8ba903 b/fuzz/corpora/cms/5b5b308ff54ee711f41f06e8e9280544fb8ba903
+new file mode 100644
+index 0000000..d173c92
+Binary files /dev/null and b/fuzz/corpora/cms/5b5b308ff54ee711f41f06e8e9280544fb8ba903 differ
+diff --git a/fuzz/corpora/cms/5be232f372108e0e13b9167710b25937da9c9225 b/fuzz/corpora/cms/5be232f372108e0e13b9167710b25937da9c9225
+new file mode 100644
+index 0000000..0452a7b
+Binary files /dev/null and b/fuzz/corpora/cms/5be232f372108e0e13b9167710b25937da9c9225 differ
+diff --git a/fuzz/corpora/cms/5cd4067458e607443cdc92fac7452e3b733735ff b/fuzz/corpora/cms/5cd4067458e607443cdc92fac7452e3b733735ff
+new file mode 100644
+index 0000000..ea797cf
+Binary files /dev/null and b/fuzz/corpora/cms/5cd4067458e607443cdc92fac7452e3b733735ff differ
+diff --git a/fuzz/corpora/cms/60ca2974be91ab1e368782b208097c67e7e97f8c b/fuzz/corpora/cms/60ca2974be91ab1e368782b208097c67e7e97f8c
+new file mode 100644
+index 0000000..5192e93
+Binary files /dev/null and b/fuzz/corpora/cms/60ca2974be91ab1e368782b208097c67e7e97f8c differ
 diff --git a/fuzz/corpora/cms/62bf1a2c54f6284043c268e7e738b9895be0c101 b/fuzz/corpora/cms/62bf1a2c54f6284043c268e7e738b9895be0c101
 new file mode 100644
-index 000000000000..ebddbd033033
+index 0000000..ebddbd0
 Binary files /dev/null and b/fuzz/corpora/cms/62bf1a2c54f6284043c268e7e738b9895be0c101 differ
-diff --git a/fuzz/corpora/cms/670756818af3613a6cd2d2d745569dc25f8945b2 b/fuzz/corpora/cms/670756818af3613a6cd2d2d745569dc25f8945b2
+diff --git a/fuzz/corpora/cms/6435dde42831698ca72962c7bf7678f69e76bb24 b/fuzz/corpora/cms/6435dde42831698ca72962c7bf7678f69e76bb24
 new file mode 100644
-index 000000000000..36299205cf50
-Binary files /dev/null and b/fuzz/corpora/cms/670756818af3613a6cd2d2d745569dc25f8945b2 differ
-diff --git a/fuzz/corpora/cms/6c896885a0f269a0e43fc277a494d84133bdc429 b/fuzz/corpora/cms/6c896885a0f269a0e43fc277a494d84133bdc429
+index 0000000..de7e4ea
+Binary files /dev/null and b/fuzz/corpora/cms/6435dde42831698ca72962c7bf7678f69e76bb24 differ
+diff --git a/fuzz/corpora/cms/64e074c604b1b3f63259926241dc9fefc7baaa26 b/fuzz/corpora/cms/64e074c604b1b3f63259926241dc9fefc7baaa26
 new file mode 100644
-index 000000000000..05fbaf73e108
-Binary files /dev/null and b/fuzz/corpora/cms/6c896885a0f269a0e43fc277a494d84133bdc429 differ
-diff --git a/fuzz/corpora/cms/6e3ecaee446d90a6b8c38da7d393b7b5344de742 b/fuzz/corpora/cms/6e3ecaee446d90a6b8c38da7d393b7b5344de742
+index 0000000..4831dba
+Binary files /dev/null and b/fuzz/corpora/cms/64e074c604b1b3f63259926241dc9fefc7baaa26 differ
+diff --git a/fuzz/corpora/cms/664b1216a36428546e88518468a2cc865100b095 b/fuzz/corpora/cms/664b1216a36428546e88518468a2cc865100b095
 new file mode 100644
-index 000000000000..249e87916b66
-Binary files /dev/null and b/fuzz/corpora/cms/6e3ecaee446d90a6b8c38da7d393b7b5344de742 differ
-diff --git a/fuzz/corpora/cms/6ec0a950818f1d1bba39fa951c9099e39257fe30 b/fuzz/corpora/cms/6ec0a950818f1d1bba39fa951c9099e39257fe30
+index 0000000..63e97122
+Binary files /dev/null and b/fuzz/corpora/cms/664b1216a36428546e88518468a2cc865100b095 differ
+diff --git a/fuzz/corpora/cms/666850a1ee7e548c1434467c899b28b4762ecffb b/fuzz/corpora/cms/666850a1ee7e548c1434467c899b28b4762ecffb
 new file mode 100644
-index 000000000000..890103cf9cc8
-Binary files /dev/null and b/fuzz/corpora/cms/6ec0a950818f1d1bba39fa951c9099e39257fe30 differ
-diff --git a/fuzz/corpora/cms/6f1d68cbd065b9c443a8ee6b5aa9ae4ee5acfb82 b/fuzz/corpora/cms/6f1d68cbd065b9c443a8ee6b5aa9ae4ee5acfb82
+index 0000000..ec82010
+Binary files /dev/null and b/fuzz/corpora/cms/666850a1ee7e548c1434467c899b28b4762ecffb differ
+diff --git a/fuzz/corpora/cms/66f832e45d51bfb233d3604ed49837067f147efc b/fuzz/corpora/cms/66f832e45d51bfb233d3604ed49837067f147efc
 new file mode 100644
-index 000000000000..124378be149b
-Binary files /dev/null and b/fuzz/corpora/cms/6f1d68cbd065b9c443a8ee6b5aa9ae4ee5acfb82 differ
-diff --git a/fuzz/corpora/cms/70d38c5d967fd792d09e02e0a787ab77f3a147db b/fuzz/corpora/cms/70d38c5d967fd792d09e02e0a787ab77f3a147db
+index 0000000..910e481
+Binary files /dev/null and b/fuzz/corpora/cms/66f832e45d51bfb233d3604ed49837067f147efc differ
+diff --git a/fuzz/corpora/cms/67487355e4056f3e308e21dd79b6ea9954fc098f b/fuzz/corpora/cms/67487355e4056f3e308e21dd79b6ea9954fc098f
 new file mode 100644
-index 000000000000..8cfab18a16c5
-Binary files /dev/null and b/fuzz/corpora/cms/70d38c5d967fd792d09e02e0a787ab77f3a147db differ
+index 0000000..ded3fc3
+Binary files /dev/null and b/fuzz/corpora/cms/67487355e4056f3e308e21dd79b6ea9954fc098f differ
+diff --git a/fuzz/corpora/cms/675e3131790c9f81bf3d4c4e67fef8ace7a92d6b b/fuzz/corpora/cms/675e3131790c9f81bf3d4c4e67fef8ace7a92d6b
+new file mode 100644
+index 0000000..78e917d
+Binary files /dev/null and b/fuzz/corpora/cms/675e3131790c9f81bf3d4c4e67fef8ace7a92d6b differ
+diff --git a/fuzz/corpora/cms/689ac33ca010339b32083571c4d697fc5108f8cc b/fuzz/corpora/cms/689ac33ca010339b32083571c4d697fc5108f8cc
+new file mode 100644
+index 0000000..2c8f4fc
+Binary files /dev/null and b/fuzz/corpora/cms/689ac33ca010339b32083571c4d697fc5108f8cc differ
+diff --git a/fuzz/corpora/cms/6955f5c1359e1fe3fe99ec6b786c05e9ff9a09cc b/fuzz/corpora/cms/6955f5c1359e1fe3fe99ec6b786c05e9ff9a09cc
+new file mode 100644
+index 0000000..85ba98e
+Binary files /dev/null and b/fuzz/corpora/cms/6955f5c1359e1fe3fe99ec6b786c05e9ff9a09cc differ
+diff --git a/fuzz/corpora/cms/6dda2b5e9c9bf39396bfb598fecb96be87949f07 b/fuzz/corpora/cms/6dda2b5e9c9bf39396bfb598fecb96be87949f07
+new file mode 100644
+index 0000000..051cde4
+Binary files /dev/null and b/fuzz/corpora/cms/6dda2b5e9c9bf39396bfb598fecb96be87949f07 differ
+diff --git a/fuzz/corpora/cms/6fe8dcdc789295233a78295ccd80c0ac1ac7478a b/fuzz/corpora/cms/6fe8dcdc789295233a78295ccd80c0ac1ac7478a
+new file mode 100644
+index 0000000..913cdc5
+Binary files /dev/null and b/fuzz/corpora/cms/6fe8dcdc789295233a78295ccd80c0ac1ac7478a differ
 diff --git a/fuzz/corpora/cms/70f006272146c12e91b7a03e28905b8d82fd41d5 b/fuzz/corpora/cms/70f006272146c12e91b7a03e28905b8d82fd41d5
 new file mode 100644
-index 000000000000..4c30a40d6e5d
+index 0000000..4c30a40
 Binary files /dev/null and b/fuzz/corpora/cms/70f006272146c12e91b7a03e28905b8d82fd41d5 differ
-diff --git a/fuzz/corpora/cms/72499a7838a9674faaf8659dc27c28cf4f8372e2 b/fuzz/corpora/cms/72499a7838a9674faaf8659dc27c28cf4f8372e2
+diff --git a/fuzz/corpora/cms/72f31b6c603f132bbed55ae084684dd96d83b42d b/fuzz/corpora/cms/72f31b6c603f132bbed55ae084684dd96d83b42d
 new file mode 100644
-index 000000000000..49498f19efb7
-Binary files /dev/null and b/fuzz/corpora/cms/72499a7838a9674faaf8659dc27c28cf4f8372e2 differ
-diff --git a/fuzz/corpora/cms/747349ef73f57b4699bac2a4e8963e9e10e00c76 b/fuzz/corpora/cms/747349ef73f57b4699bac2a4e8963e9e10e00c76
+index 0000000..84e4905
+Binary files /dev/null and b/fuzz/corpora/cms/72f31b6c603f132bbed55ae084684dd96d83b42d differ
+diff --git a/fuzz/corpora/cms/759e934de8a5b9aafd8138925f932b8475b20bde b/fuzz/corpora/cms/759e934de8a5b9aafd8138925f932b8475b20bde
 new file mode 100644
-index 000000000000..1e4f1959b446
-Binary files /dev/null and b/fuzz/corpora/cms/747349ef73f57b4699bac2a4e8963e9e10e00c76 differ
-diff --git a/fuzz/corpora/cms/75b36b6e9ec783cfacad75cf8fb862b84793a39c b/fuzz/corpora/cms/75b36b6e9ec783cfacad75cf8fb862b84793a39c
+index 0000000..712fc15
+Binary files /dev/null and b/fuzz/corpora/cms/759e934de8a5b9aafd8138925f932b8475b20bde differ
+diff --git a/fuzz/corpora/cms/766eb2bb2097097a45dc91d5a2d9d549d0003fa4 b/fuzz/corpora/cms/766eb2bb2097097a45dc91d5a2d9d549d0003fa4
 new file mode 100644
-index 000000000000..c2a3be7ae760
-Binary files /dev/null and b/fuzz/corpora/cms/75b36b6e9ec783cfacad75cf8fb862b84793a39c differ
-diff --git a/fuzz/corpora/cms/7843a1a946744eb286aaef9387bae6c29a36b20d b/fuzz/corpora/cms/7843a1a946744eb286aaef9387bae6c29a36b20d
+index 0000000..efb323a
+Binary files /dev/null and b/fuzz/corpora/cms/766eb2bb2097097a45dc91d5a2d9d549d0003fa4 differ
+diff --git a/fuzz/corpora/cms/768fe6ad43c6cc97a35c21d3d2b54d6bc8a583b9 b/fuzz/corpora/cms/768fe6ad43c6cc97a35c21d3d2b54d6bc8a583b9
 new file mode 100644
-index 000000000000..9410009b5ea7
-Binary files /dev/null and b/fuzz/corpora/cms/7843a1a946744eb286aaef9387bae6c29a36b20d differ
-diff --git a/fuzz/corpora/cms/7918146dfe47a1afe269154739281fa4e3eacc95 b/fuzz/corpora/cms/7918146dfe47a1afe269154739281fa4e3eacc95
+index 0000000..f01362d
+Binary files /dev/null and b/fuzz/corpora/cms/768fe6ad43c6cc97a35c21d3d2b54d6bc8a583b9 differ
+diff --git a/fuzz/corpora/cms/76d91fd5e48d5d7b44184af3fb1fb22245537180 b/fuzz/corpora/cms/76d91fd5e48d5d7b44184af3fb1fb22245537180
 new file mode 100644
-index 000000000000..c0776f9a000a
-Binary files /dev/null and b/fuzz/corpora/cms/7918146dfe47a1afe269154739281fa4e3eacc95 differ
-diff --git a/fuzz/corpora/cms/7b372ef935f8f46e86596245b2cc723e48c1ce22 b/fuzz/corpora/cms/7b372ef935f8f46e86596245b2cc723e48c1ce22
+index 0000000..75c1f88
+Binary files /dev/null and b/fuzz/corpora/cms/76d91fd5e48d5d7b44184af3fb1fb22245537180 differ
+diff --git a/fuzz/corpora/cms/76f5fbbe0340445a16ed71b8b3f1d2af6393d50b b/fuzz/corpora/cms/76f5fbbe0340445a16ed71b8b3f1d2af6393d50b
 new file mode 100644
-index 000000000000..aa0aeb1c08a5
-Binary files /dev/null and b/fuzz/corpora/cms/7b372ef935f8f46e86596245b2cc723e48c1ce22 differ
-diff --git a/fuzz/corpora/cms/7fcd07a56c073c66eb0edfa5c431112e706ff75f b/fuzz/corpora/cms/7fcd07a56c073c66eb0edfa5c431112e706ff75f
+index 0000000..cf49ddb
+Binary files /dev/null and b/fuzz/corpora/cms/76f5fbbe0340445a16ed71b8b3f1d2af6393d50b differ
+diff --git a/fuzz/corpora/cms/775d61379491e87335fe0a28a5c62750c4155401 b/fuzz/corpora/cms/775d61379491e87335fe0a28a5c62750c4155401
 new file mode 100644
-index 000000000000..ee8f8a0efad3
-Binary files /dev/null and b/fuzz/corpora/cms/7fcd07a56c073c66eb0edfa5c431112e706ff75f differ
-diff --git a/fuzz/corpora/cms/803d7ccf6c210402eca2798dc03d5bd6d3e5ba49 b/fuzz/corpora/cms/803d7ccf6c210402eca2798dc03d5bd6d3e5ba49
+index 0000000..d587331
+Binary files /dev/null and b/fuzz/corpora/cms/775d61379491e87335fe0a28a5c62750c4155401 differ
+diff --git a/fuzz/corpora/cms/7a3708efa6f4f79aa782edb03582584a557728a2 b/fuzz/corpora/cms/7a3708efa6f4f79aa782edb03582584a557728a2
 new file mode 100644
-index 000000000000..21d4a0eade7e
-Binary files /dev/null and b/fuzz/corpora/cms/803d7ccf6c210402eca2798dc03d5bd6d3e5ba49 differ
-diff --git a/fuzz/corpora/cms/805225c5c081e618e88b6ef8a7007b91d50fb052 b/fuzz/corpora/cms/805225c5c081e618e88b6ef8a7007b91d50fb052
+index 0000000..4183707
+Binary files /dev/null and b/fuzz/corpora/cms/7a3708efa6f4f79aa782edb03582584a557728a2 differ
+diff --git a/fuzz/corpora/cms/7a970e89c169f03ead4ff1d76531d85d04cf9786 b/fuzz/corpora/cms/7a970e89c169f03ead4ff1d76531d85d04cf9786
 new file mode 100644
-index 000000000000..eb6591e8b35a
-Binary files /dev/null and b/fuzz/corpora/cms/805225c5c081e618e88b6ef8a7007b91d50fb052 differ
-diff --git a/fuzz/corpora/cms/8589a5bfb8448257f7cf78d63693d1c9e1ca5e3a b/fuzz/corpora/cms/8589a5bfb8448257f7cf78d63693d1c9e1ca5e3a
+index 0000000..480b6d3
+Binary files /dev/null and b/fuzz/corpora/cms/7a970e89c169f03ead4ff1d76531d85d04cf9786 differ
+diff --git a/fuzz/corpora/cms/7b47ca13f1b515dd3ce54630933bd7c3998b109c b/fuzz/corpora/cms/7b47ca13f1b515dd3ce54630933bd7c3998b109c
 new file mode 100644
-index 000000000000..f5a63e4eb745
-Binary files /dev/null and b/fuzz/corpora/cms/8589a5bfb8448257f7cf78d63693d1c9e1ca5e3a differ
-diff --git a/fuzz/corpora/cms/85e53271e14006f0265921d02d4d736cdc580b0b b/fuzz/corpora/cms/85e53271e14006f0265921d02d4d736cdc580b0b
+index 0000000..4e6613e
+Binary files /dev/null and b/fuzz/corpora/cms/7b47ca13f1b515dd3ce54630933bd7c3998b109c differ
+diff --git a/fuzz/corpora/cms/7b59ec7b0f34cc2a736cf8add2a2da27e26f5922 b/fuzz/corpora/cms/7b59ec7b0f34cc2a736cf8add2a2da27e26f5922
 new file mode 100644
-index 000000000000..ce542efaa512
-Binary files /dev/null and b/fuzz/corpora/cms/85e53271e14006f0265921d02d4d736cdc580b0b differ
-diff --git a/fuzz/corpora/cms/877a4e6f29e547c8df20462c8da7bb8917fa15c8 b/fuzz/corpora/cms/877a4e6f29e547c8df20462c8da7bb8917fa15c8
+index 0000000..0e06346
+Binary files /dev/null and b/fuzz/corpora/cms/7b59ec7b0f34cc2a736cf8add2a2da27e26f5922 differ
+diff --git a/fuzz/corpora/cms/7be9713c5eb8abd83f7663b30c679911c1ad13c4 b/fuzz/corpora/cms/7be9713c5eb8abd83f7663b30c679911c1ad13c4
 new file mode 100644
-index 000000000000..7674d548aa27
-Binary files /dev/null and b/fuzz/corpora/cms/877a4e6f29e547c8df20462c8da7bb8917fa15c8 differ
-diff --git a/fuzz/corpora/cms/8b60e9db4dabe5f6d9c181d7d109823cf1425bc4 b/fuzz/corpora/cms/8b60e9db4dabe5f6d9c181d7d109823cf1425bc4
+index 0000000..765b8af
+Binary files /dev/null and b/fuzz/corpora/cms/7be9713c5eb8abd83f7663b30c679911c1ad13c4 differ
+diff --git a/fuzz/corpora/cms/7dd75785c77dc91df1b8d795e4e75c5af27a318d b/fuzz/corpora/cms/7dd75785c77dc91df1b8d795e4e75c5af27a318d
 new file mode 100644
-index 000000000000..b56884b92020
-Binary files /dev/null and b/fuzz/corpora/cms/8b60e9db4dabe5f6d9c181d7d109823cf1425bc4 differ
-diff --git a/fuzz/corpora/cms/929355fe9c63dc75894ce099713630aed9b7cdec b/fuzz/corpora/cms/929355fe9c63dc75894ce099713630aed9b7cdec
+index 0000000..0fd5b45
+Binary files /dev/null and b/fuzz/corpora/cms/7dd75785c77dc91df1b8d795e4e75c5af27a318d differ
+diff --git a/fuzz/corpora/cms/7dfa7b2982f30889332a46ab1c156f2fb028d3c2 b/fuzz/corpora/cms/7dfa7b2982f30889332a46ab1c156f2fb028d3c2
 new file mode 100644
-index 000000000000..b6553c8e6ac5
-Binary files /dev/null and b/fuzz/corpora/cms/929355fe9c63dc75894ce099713630aed9b7cdec differ
-diff --git a/fuzz/corpora/cms/9476b99b6e95f1a8290381fc907969c734c3486f b/fuzz/corpora/cms/9476b99b6e95f1a8290381fc907969c734c3486f
+index 0000000..8cd385a
+Binary files /dev/null and b/fuzz/corpora/cms/7dfa7b2982f30889332a46ab1c156f2fb028d3c2 differ
+diff --git a/fuzz/corpora/cms/7faac4ed856459ea622f0eb0666462eb295e3d9c b/fuzz/corpora/cms/7faac4ed856459ea622f0eb0666462eb295e3d9c
 new file mode 100644
-index 000000000000..b6b8940ee213
-Binary files /dev/null and b/fuzz/corpora/cms/9476b99b6e95f1a8290381fc907969c734c3486f differ
-diff --git a/fuzz/corpora/cms/956dd8e9904f1e38281e70b020c48f26073d13c5 b/fuzz/corpora/cms/956dd8e9904f1e38281e70b020c48f26073d13c5
+index 0000000..4deb8af
+Binary files /dev/null and b/fuzz/corpora/cms/7faac4ed856459ea622f0eb0666462eb295e3d9c differ
+diff --git a/fuzz/corpora/cms/8149ab1c831c074ef9969b8b73e9075f3c615557 b/fuzz/corpora/cms/8149ab1c831c074ef9969b8b73e9075f3c615557
 new file mode 100644
-index 000000000000..6b6eed0e145b
-Binary files /dev/null and b/fuzz/corpora/cms/956dd8e9904f1e38281e70b020c48f26073d13c5 differ
-diff --git a/fuzz/corpora/cms/987f8e452e7167a24ded65ba45d5fdc375c1101d b/fuzz/corpora/cms/987f8e452e7167a24ded65ba45d5fdc375c1101d
+index 0000000..2ff5e2e
+Binary files /dev/null and b/fuzz/corpora/cms/8149ab1c831c074ef9969b8b73e9075f3c615557 differ
+diff --git a/fuzz/corpora/cms/815b878d00b81229ba5c75546593f5db0149346f b/fuzz/corpora/cms/815b878d00b81229ba5c75546593f5db0149346f
 new file mode 100644
-index 000000000000..033f046f9805
-Binary files /dev/null and b/fuzz/corpora/cms/987f8e452e7167a24ded65ba45d5fdc375c1101d differ
-diff --git a/fuzz/corpora/cms/988e9d78c57bafd11d92e7af48b96d1a934028ba b/fuzz/corpora/cms/988e9d78c57bafd11d92e7af48b96d1a934028ba
+index 0000000..453bc5b
+Binary files /dev/null and b/fuzz/corpora/cms/815b878d00b81229ba5c75546593f5db0149346f differ
+diff --git a/fuzz/corpora/cms/83084472b76d4ea4a688317381f55421db83a6f1 b/fuzz/corpora/cms/83084472b76d4ea4a688317381f55421db83a6f1
 new file mode 100644
-index 000000000000..9eb7b6495639
-Binary files /dev/null and b/fuzz/corpora/cms/988e9d78c57bafd11d92e7af48b96d1a934028ba differ
-diff --git a/fuzz/corpora/cms/a0223aad1a02aa9e11ea988186a02936aec5f39c b/fuzz/corpora/cms/a0223aad1a02aa9e11ea988186a02936aec5f39c
+index 0000000..bf5a735
+Binary files /dev/null and b/fuzz/corpora/cms/83084472b76d4ea4a688317381f55421db83a6f1 differ
+diff --git a/fuzz/corpora/cms/86a50e4e2de524d3ee4782f304a257934eed0b14 b/fuzz/corpora/cms/86a50e4e2de524d3ee4782f304a257934eed0b14
 new file mode 100644
-index 000000000000..af7edc6cd0df
-Binary files /dev/null and b/fuzz/corpora/cms/a0223aad1a02aa9e11ea988186a02936aec5f39c differ
-diff --git a/fuzz/corpora/cms/a479b7bd1299cd731e5ea3e46b39a1bc8976b6bc b/fuzz/corpora/cms/a479b7bd1299cd731e5ea3e46b39a1bc8976b6bc
+index 0000000..ef814d9
+Binary files /dev/null and b/fuzz/corpora/cms/86a50e4e2de524d3ee4782f304a257934eed0b14 differ
+diff --git a/fuzz/corpora/cms/874fe2b05110e7be0a1316a07a321c2e7328a02b b/fuzz/corpora/cms/874fe2b05110e7be0a1316a07a321c2e7328a02b
 new file mode 100644
-index 000000000000..0f9c7bbc6f75
-Binary files /dev/null and b/fuzz/corpora/cms/a479b7bd1299cd731e5ea3e46b39a1bc8976b6bc differ
-diff --git a/fuzz/corpora/cms/a66ff59f745dd9bfaa0a269c37d64d663c9f8cd1 b/fuzz/corpora/cms/a66ff59f745dd9bfaa0a269c37d64d663c9f8cd1
+index 0000000..3d5ebd6
+Binary files /dev/null and b/fuzz/corpora/cms/874fe2b05110e7be0a1316a07a321c2e7328a02b differ
+diff --git a/fuzz/corpora/cms/893b869ac6d54477a7873a21bdaf531bf9dbbfc2 b/fuzz/corpora/cms/893b869ac6d54477a7873a21bdaf531bf9dbbfc2
 new file mode 100644
-index 000000000000..01840ed648cf
-Binary files /dev/null and b/fuzz/corpora/cms/a66ff59f745dd9bfaa0a269c37d64d663c9f8cd1 differ
-diff --git a/fuzz/corpora/cms/a730079cff218f5d3d9ed7c5e4db2dc513b59467 b/fuzz/corpora/cms/a730079cff218f5d3d9ed7c5e4db2dc513b59467
+index 0000000..33c4900
+Binary files /dev/null and b/fuzz/corpora/cms/893b869ac6d54477a7873a21bdaf531bf9dbbfc2 differ
+diff --git a/fuzz/corpora/cms/8b3a902bc1c56b0938dbc34b3e32e2d9f293dc82 b/fuzz/corpora/cms/8b3a902bc1c56b0938dbc34b3e32e2d9f293dc82
 new file mode 100644
-index 000000000000..035d7bf98d0b
-Binary files /dev/null and b/fuzz/corpora/cms/a730079cff218f5d3d9ed7c5e4db2dc513b59467 differ
-diff --git a/fuzz/corpora/cms/ab4f73f2fa117ef18a8a39a7e65bd854debfd936 b/fuzz/corpora/cms/ab4f73f2fa117ef18a8a39a7e65bd854debfd936
+index 0000000..47ff9f8
+Binary files /dev/null and b/fuzz/corpora/cms/8b3a902bc1c56b0938dbc34b3e32e2d9f293dc82 differ
+diff --git a/fuzz/corpora/cms/8c645cac2204b09abaa628d187cc1416abe6a934 b/fuzz/corpora/cms/8c645cac2204b09abaa628d187cc1416abe6a934
 new file mode 100644
-index 000000000000..9e045f10208a
-Binary files /dev/null and b/fuzz/corpora/cms/ab4f73f2fa117ef18a8a39a7e65bd854debfd936 differ
-diff --git a/fuzz/corpora/cms/ab911f7babc6fbb0ed98fff2952f88916be32214 b/fuzz/corpora/cms/ab911f7babc6fbb0ed98fff2952f88916be32214
+index 0000000..6a9d34d
+Binary files /dev/null and b/fuzz/corpora/cms/8c645cac2204b09abaa628d187cc1416abe6a934 differ
+diff --git a/fuzz/corpora/cms/917d36d2030a45f3ee0483f95565a3f1fa38f49d b/fuzz/corpora/cms/917d36d2030a45f3ee0483f95565a3f1fa38f49d
 new file mode 100644
-index 000000000000..5d215da86f96
-Binary files /dev/null and b/fuzz/corpora/cms/ab911f7babc6fbb0ed98fff2952f88916be32214 differ
-diff --git a/fuzz/corpora/cms/abb60d0eadd4321ee880248f1edb6dd0afcbe78d b/fuzz/corpora/cms/abb60d0eadd4321ee880248f1edb6dd0afcbe78d
+index 0000000..a3806b2
+Binary files /dev/null and b/fuzz/corpora/cms/917d36d2030a45f3ee0483f95565a3f1fa38f49d differ
+diff --git a/fuzz/corpora/cms/920f10af8f41df8a9995395a43f49f0fd96c6e58 b/fuzz/corpora/cms/920f10af8f41df8a9995395a43f49f0fd96c6e58
 new file mode 100644
-index 000000000000..b12ba2645cc1
-Binary files /dev/null and b/fuzz/corpora/cms/abb60d0eadd4321ee880248f1edb6dd0afcbe78d differ
-diff --git a/fuzz/corpora/cms/b5cb60d37bfb7df151144ef617118f4b558cf5ad b/fuzz/corpora/cms/b5cb60d37bfb7df151144ef617118f4b558cf5ad
+index 0000000..e257b40
+Binary files /dev/null and b/fuzz/corpora/cms/920f10af8f41df8a9995395a43f49f0fd96c6e58 differ
+diff --git a/fuzz/corpora/cms/953efe8f531a5a87f6d2d5a65b78b05e55599abc b/fuzz/corpora/cms/953efe8f531a5a87f6d2d5a65b78b05e55599abc
 new file mode 100644
-index 000000000000..ca83a9fc58bf
-Binary files /dev/null and b/fuzz/corpora/cms/b5cb60d37bfb7df151144ef617118f4b558cf5ad differ
-diff --git a/fuzz/corpora/cms/bbce253c192821a8510036e9dbc00acfc3f98a61 b/fuzz/corpora/cms/bbce253c192821a8510036e9dbc00acfc3f98a61
+index 0000000..1d79949
+Binary files /dev/null and b/fuzz/corpora/cms/953efe8f531a5a87f6d2d5a65b78b05e55599abc differ
+diff --git a/fuzz/corpora/cms/95ae794899a46a3cfae1ee8feeee0bd955082c57 b/fuzz/corpora/cms/95ae794899a46a3cfae1ee8feeee0bd955082c57
 new file mode 100644
-index 000000000000..b00d13805f36
-Binary files /dev/null and b/fuzz/corpora/cms/bbce253c192821a8510036e9dbc00acfc3f98a61 differ
-diff --git a/fuzz/corpora/cms/bfe17d837974acb1d6a6403d5b12e32b3086c387 b/fuzz/corpora/cms/bfe17d837974acb1d6a6403d5b12e32b3086c387
+index 0000000..8b2c567
+Binary files /dev/null and b/fuzz/corpora/cms/95ae794899a46a3cfae1ee8feeee0bd955082c57 differ
+diff --git a/fuzz/corpora/cms/97dc59c7b16aaa8181687f07c21dcfa8a1099085 b/fuzz/corpora/cms/97dc59c7b16aaa8181687f07c21dcfa8a1099085
 new file mode 100644
-index 000000000000..4f16da370f74
-Binary files /dev/null and b/fuzz/corpora/cms/bfe17d837974acb1d6a6403d5b12e32b3086c387 differ
-diff --git a/fuzz/corpora/cms/c00dc0bbd6e48c93860eae27f1bd720d61a2df27 b/fuzz/corpora/cms/c00dc0bbd6e48c93860eae27f1bd720d61a2df27
+index 0000000..635708a
+Binary files /dev/null and b/fuzz/corpora/cms/97dc59c7b16aaa8181687f07c21dcfa8a1099085 differ
+diff --git a/fuzz/corpora/cms/9947b6bf8c0024f6846eb3e62f0cd59ea839bc75 b/fuzz/corpora/cms/9947b6bf8c0024f6846eb3e62f0cd59ea839bc75
 new file mode 100644
-index 000000000000..bda70eab060c
-Binary files /dev/null and b/fuzz/corpora/cms/c00dc0bbd6e48c93860eae27f1bd720d61a2df27 differ
-diff --git a/fuzz/corpora/cms/c2c9f29931c46877758d0643e3b7b0114477ef4a b/fuzz/corpora/cms/c2c9f29931c46877758d0643e3b7b0114477ef4a
+index 0000000..f92e126
+Binary files /dev/null and b/fuzz/corpora/cms/9947b6bf8c0024f6846eb3e62f0cd59ea839bc75 differ
+diff --git a/fuzz/corpora/cms/9a6a65622129d86f342231da907b10cb4ff6bdc8 b/fuzz/corpora/cms/9a6a65622129d86f342231da907b10cb4ff6bdc8
 new file mode 100644
-index 000000000000..31309f6b8b9e
-Binary files /dev/null and b/fuzz/corpora/cms/c2c9f29931c46877758d0643e3b7b0114477ef4a differ
-diff --git a/fuzz/corpora/cms/c76cfec5956039f2ad2463f2f3ea6f964f9aed53 b/fuzz/corpora/cms/c76cfec5956039f2ad2463f2f3ea6f964f9aed53
+index 0000000..59fc29d
+Binary files /dev/null and b/fuzz/corpora/cms/9a6a65622129d86f342231da907b10cb4ff6bdc8 differ
+diff --git a/fuzz/corpora/cms/9ab084eacc968e9a03b96419a0880e442afdf1e9 b/fuzz/corpora/cms/9ab084eacc968e9a03b96419a0880e442afdf1e9
 new file mode 100644
-index 000000000000..b0495fb65cb6
-Binary files /dev/null and b/fuzz/corpora/cms/c76cfec5956039f2ad2463f2f3ea6f964f9aed53 differ
-diff --git a/fuzz/corpora/cms/c9aac337c2d4316bc1b88ea6e23d0d65d2b4de43 b/fuzz/corpora/cms/c9aac337c2d4316bc1b88ea6e23d0d65d2b4de43
+index 0000000..5d245f0
+Binary files /dev/null and b/fuzz/corpora/cms/9ab084eacc968e9a03b96419a0880e442afdf1e9 differ
+diff --git a/fuzz/corpora/cms/9c42cb07f9803082c1480a5682a177ead937542c b/fuzz/corpora/cms/9c42cb07f9803082c1480a5682a177ead937542c
 new file mode 100644
-index 000000000000..b3a381e12a8c
-Binary files /dev/null and b/fuzz/corpora/cms/c9aac337c2d4316bc1b88ea6e23d0d65d2b4de43 differ
-diff --git a/fuzz/corpora/cms/cae69cb52df30e0c2889897d250376016978a4b9 b/fuzz/corpora/cms/cae69cb52df30e0c2889897d250376016978a4b9
+index 0000000..0d6ba39
+Binary files /dev/null and b/fuzz/corpora/cms/9c42cb07f9803082c1480a5682a177ead937542c differ
+diff --git a/fuzz/corpora/cms/9df838e7ac69313b82ac292aac962a6dbec50937 b/fuzz/corpora/cms/9df838e7ac69313b82ac292aac962a6dbec50937
 new file mode 100644
-index 000000000000..bd06f053a69d
-Binary files /dev/null and b/fuzz/corpora/cms/cae69cb52df30e0c2889897d250376016978a4b9 differ
-diff --git a/fuzz/corpora/cms/cd9aeb9f43d9aadb4e36572c8a6b81aebdd52c15 b/fuzz/corpora/cms/cd9aeb9f43d9aadb4e36572c8a6b81aebdd52c15
+index 0000000..690520f
+Binary files /dev/null and b/fuzz/corpora/cms/9df838e7ac69313b82ac292aac962a6dbec50937 differ
+diff --git a/fuzz/corpora/cms/9e6828ccee7f415b353d9007420e9840ad4f2c94 b/fuzz/corpora/cms/9e6828ccee7f415b353d9007420e9840ad4f2c94
 new file mode 100644
-index 000000000000..fc28e53a9054
-Binary files /dev/null and b/fuzz/corpora/cms/cd9aeb9f43d9aadb4e36572c8a6b81aebdd52c15 differ
-diff --git a/fuzz/corpora/cms/d13c39b56984457f206cdec2bd6fd79ae9684880 b/fuzz/corpora/cms/d13c39b56984457f206cdec2bd6fd79ae9684880
+index 0000000..a17ed6b
+Binary files /dev/null and b/fuzz/corpora/cms/9e6828ccee7f415b353d9007420e9840ad4f2c94 differ
+diff --git a/fuzz/corpora/cms/a129e2b896dc5cb3664d711c257d3432a0445a3b b/fuzz/corpora/cms/a129e2b896dc5cb3664d711c257d3432a0445a3b
 new file mode 100644
-index 000000000000..8ba2babf94f3
-Binary files /dev/null and b/fuzz/corpora/cms/d13c39b56984457f206cdec2bd6fd79ae9684880 differ
-diff --git a/fuzz/corpora/cms/d21e8a7afdf4a8b202df243e5cd0d9b59ec43315 b/fuzz/corpora/cms/d21e8a7afdf4a8b202df243e5cd0d9b59ec43315
+index 0000000..01b2f00
+Binary files /dev/null and b/fuzz/corpora/cms/a129e2b896dc5cb3664d711c257d3432a0445a3b differ
+diff --git a/fuzz/corpora/cms/a2348469cb708f26fb2a88e11274848e7e5eaaad b/fuzz/corpora/cms/a2348469cb708f26fb2a88e11274848e7e5eaaad
 new file mode 100644
-index 000000000000..65cc5d1d7655
-Binary files /dev/null and b/fuzz/corpora/cms/d21e8a7afdf4a8b202df243e5cd0d9b59ec43315 differ
-diff --git a/fuzz/corpora/cms/d37a557533ca5df9131c96a0c38310813886621e b/fuzz/corpora/cms/d37a557533ca5df9131c96a0c38310813886621e
+index 0000000..5ae7113
+Binary files /dev/null and b/fuzz/corpora/cms/a2348469cb708f26fb2a88e11274848e7e5eaaad differ
+diff --git a/fuzz/corpora/cms/a2538d388f37ca721150973f74692afa5da6549c b/fuzz/corpora/cms/a2538d388f37ca721150973f74692afa5da6549c
 new file mode 100644
-index 000000000000..183a66a9e74d
-Binary files /dev/null and b/fuzz/corpora/cms/d37a557533ca5df9131c96a0c38310813886621e differ
-diff --git a/fuzz/corpora/cms/d4687f8090b93bb2b8add0c4c4163a2551fffd32 b/fuzz/corpora/cms/d4687f8090b93bb2b8add0c4c4163a2551fffd32
+index 0000000..88b9214
+Binary files /dev/null and b/fuzz/corpora/cms/a2538d388f37ca721150973f74692afa5da6549c differ
+diff --git a/fuzz/corpora/cms/a344fcae688e7638806476d95bee7d9bad566c10 b/fuzz/corpora/cms/a344fcae688e7638806476d95bee7d9bad566c10
 new file mode 100644
-index 000000000000..ba5460d7bb77
-Binary files /dev/null and b/fuzz/corpora/cms/d4687f8090b93bb2b8add0c4c4163a2551fffd32 differ
-diff --git a/fuzz/corpora/cms/d47f7c250cbd72ae0cfa3f4b52a7965c88ddaede b/fuzz/corpora/cms/d47f7c250cbd72ae0cfa3f4b52a7965c88ddaede
+index 0000000..84d16b7
+Binary files /dev/null and b/fuzz/corpora/cms/a344fcae688e7638806476d95bee7d9bad566c10 differ
+diff --git a/fuzz/corpora/cms/a46997295152a95339e5f8641946db559ae535b8 b/fuzz/corpora/cms/a46997295152a95339e5f8641946db559ae535b8
 new file mode 100644
-index 000000000000..5e5d3a4831b2
-Binary files /dev/null and b/fuzz/corpora/cms/d47f7c250cbd72ae0cfa3f4b52a7965c88ddaede differ
-diff --git a/fuzz/corpora/cms/d98dbb19817891687dc5efb49e5280d57f86443e b/fuzz/corpora/cms/d98dbb19817891687dc5efb49e5280d57f86443e
+index 0000000..5d8ed0b
+Binary files /dev/null and b/fuzz/corpora/cms/a46997295152a95339e5f8641946db559ae535b8 differ
+diff --git a/fuzz/corpora/cms/a54b5c43b9bec701f7d271b08e8281002dbbe4b9 b/fuzz/corpora/cms/a54b5c43b9bec701f7d271b08e8281002dbbe4b9
 new file mode 100644
-index 000000000000..4d1e72f2302c
-Binary files /dev/null and b/fuzz/corpora/cms/d98dbb19817891687dc5efb49e5280d57f86443e differ
-diff --git a/fuzz/corpora/cms/dc542fdae3aeb51b9148a2112cdb8999fd2b9750 b/fuzz/corpora/cms/dc542fdae3aeb51b9148a2112cdb8999fd2b9750
+index 0000000..888258f
+Binary files /dev/null and b/fuzz/corpora/cms/a54b5c43b9bec701f7d271b08e8281002dbbe4b9 differ
+diff --git a/fuzz/corpora/cms/a69ca92b3b1d77dc45e067717f89d4c889db60f2 b/fuzz/corpora/cms/a69ca92b3b1d77dc45e067717f89d4c889db60f2
 new file mode 100644
-index 000000000000..83d4b272d3cf
-Binary files /dev/null and b/fuzz/corpora/cms/dc542fdae3aeb51b9148a2112cdb8999fd2b9750 differ
-diff --git a/fuzz/corpora/cms/dd2b26eb1b9c43194c9d096e6fe6b26635b275f5 b/fuzz/corpora/cms/dd2b26eb1b9c43194c9d096e6fe6b26635b275f5
+index 0000000..386cef3
+Binary files /dev/null and b/fuzz/corpora/cms/a69ca92b3b1d77dc45e067717f89d4c889db60f2 differ
+diff --git a/fuzz/corpora/cms/a826cb1fe0990fd46959b8e2a9ea03b960014993 b/fuzz/corpora/cms/a826cb1fe0990fd46959b8e2a9ea03b960014993
 new file mode 100644
-index 000000000000..9ec4ed589629
-Binary files /dev/null and b/fuzz/corpora/cms/dd2b26eb1b9c43194c9d096e6fe6b26635b275f5 differ
-diff --git a/fuzz/corpora/cms/dd3e41a7a148c8b246ac1e5b4fc35eef0cc0782b b/fuzz/corpora/cms/dd3e41a7a148c8b246ac1e5b4fc35eef0cc0782b
+index 0000000..5f08b49
+Binary files /dev/null and b/fuzz/corpora/cms/a826cb1fe0990fd46959b8e2a9ea03b960014993 differ
+diff --git a/fuzz/corpora/cms/a933461425fc1e8535a3a37a0ef45f605bb93c98 b/fuzz/corpora/cms/a933461425fc1e8535a3a37a0ef45f605bb93c98
 new file mode 100644
-index 000000000000..916b91e33c56
-Binary files /dev/null and b/fuzz/corpora/cms/dd3e41a7a148c8b246ac1e5b4fc35eef0cc0782b differ
-diff --git a/fuzz/corpora/cms/df58248c414f342c81e056b40bee12d17a08bf61 b/fuzz/corpora/cms/df58248c414f342c81e056b40bee12d17a08bf61
+index 0000000..3e4f142
+Binary files /dev/null and b/fuzz/corpora/cms/a933461425fc1e8535a3a37a0ef45f605bb93c98 differ
+diff --git a/fuzz/corpora/cms/a965cde0e7eb4e19a4030e18a8369fbbc3397d4f b/fuzz/corpora/cms/a965cde0e7eb4e19a4030e18a8369fbbc3397d4f
 new file mode 100644
-index 000000000000..f59ec20aabf5
-Binary files /dev/null and b/fuzz/corpora/cms/df58248c414f342c81e056b40bee12d17a08bf61 differ
-diff --git a/fuzz/corpora/cms/dfeb7a71beac181cca5950b44cc116fa03a97fd4 b/fuzz/corpora/cms/dfeb7a71beac181cca5950b44cc116fa03a97fd4
+index 0000000..977cc15
+Binary files /dev/null and b/fuzz/corpora/cms/a965cde0e7eb4e19a4030e18a8369fbbc3397d4f differ
+diff --git a/fuzz/corpora/cms/adc9f81e2d90f085df4fec21bf42d91b4b87d738 b/fuzz/corpora/cms/adc9f81e2d90f085df4fec21bf42d91b4b87d738
 new file mode 100644
-index 000000000000..76e1ec3654a7
-Binary files /dev/null and b/fuzz/corpora/cms/dfeb7a71beac181cca5950b44cc116fa03a97fd4 differ
-diff --git a/fuzz/corpora/cms/e200c8fb65670dc5e7421cbed0d90f277351b916 b/fuzz/corpora/cms/e200c8fb65670dc5e7421cbed0d90f277351b916
+index 0000000..49a986b
+Binary files /dev/null and b/fuzz/corpora/cms/adc9f81e2d90f085df4fec21bf42d91b4b87d738 differ
+diff --git a/fuzz/corpora/cms/afd5691611aa425eb851c4242d05849a28089ac7 b/fuzz/corpora/cms/afd5691611aa425eb851c4242d05849a28089ac7
 new file mode 100644
-index 000000000000..a0a70bac04bc
-Binary files /dev/null and b/fuzz/corpora/cms/e200c8fb65670dc5e7421cbed0d90f277351b916 differ
-diff --git a/fuzz/corpora/cms/e43e4a2bb2ad2dda58e6a6f51af2560e81b0c6ce b/fuzz/corpora/cms/e43e4a2bb2ad2dda58e6a6f51af2560e81b0c6ce
+index 0000000..bb0a92a
+Binary files /dev/null and b/fuzz/corpora/cms/afd5691611aa425eb851c4242d05849a28089ac7 differ
+diff --git a/fuzz/corpora/cms/b1c0d358ac20a7227b8b97784b58eb476327795e b/fuzz/corpora/cms/b1c0d358ac20a7227b8b97784b58eb476327795e
 new file mode 100644
-index 000000000000..1cf8fe35e8a3
-Binary files /dev/null and b/fuzz/corpora/cms/e43e4a2bb2ad2dda58e6a6f51af2560e81b0c6ce differ
-diff --git a/fuzz/corpora/cms/e5acb91badd6635ef8d1c09e75433d3b51575f0c b/fuzz/corpora/cms/e5acb91badd6635ef8d1c09e75433d3b51575f0c
+index 0000000..ffa0e70
+Binary files /dev/null and b/fuzz/corpora/cms/b1c0d358ac20a7227b8b97784b58eb476327795e differ
+diff --git a/fuzz/corpora/cms/b4f88268483923da54627c6e568fc61b7a1d042a b/fuzz/corpora/cms/b4f88268483923da54627c6e568fc61b7a1d042a
 new file mode 100644
-index 000000000000..b81b95673c4e
-Binary files /dev/null and b/fuzz/corpora/cms/e5acb91badd6635ef8d1c09e75433d3b51575f0c differ
-diff --git a/fuzz/corpora/cms/e5d7433f55867900a77a5a0e998c111b8917fe24 b/fuzz/corpora/cms/e5d7433f55867900a77a5a0e998c111b8917fe24
+index 0000000..51f4036
+Binary files /dev/null and b/fuzz/corpora/cms/b4f88268483923da54627c6e568fc61b7a1d042a differ
+diff --git a/fuzz/corpora/cms/b62f98976c11d79674b019ea78a7ce4d6d78b479 b/fuzz/corpora/cms/b62f98976c11d79674b019ea78a7ce4d6d78b479
 new file mode 100644
-index 000000000000..1afe096c45a6
-Binary files /dev/null and b/fuzz/corpora/cms/e5d7433f55867900a77a5a0e998c111b8917fe24 differ
-diff --git a/fuzz/corpora/cms/e5d834c31857814cabfe8608f18fd5e28fbb98d8 b/fuzz/corpora/cms/e5d834c31857814cabfe8608f18fd5e28fbb98d8
+index 0000000..6a4f186
+Binary files /dev/null and b/fuzz/corpora/cms/b62f98976c11d79674b019ea78a7ce4d6d78b479 differ
+diff --git a/fuzz/corpora/cms/b91924b09cd8a573ce5a116f294fa3d423f0c958 b/fuzz/corpora/cms/b91924b09cd8a573ce5a116f294fa3d423f0c958
 new file mode 100644
-index 000000000000..3932075ae3d2
-Binary files /dev/null and b/fuzz/corpora/cms/e5d834c31857814cabfe8608f18fd5e28fbb98d8 differ
-diff --git a/fuzz/corpora/cms/ef37f7a612717a1b2967d7efd19ff05d5f49bd85 b/fuzz/corpora/cms/ef37f7a612717a1b2967d7efd19ff05d5f49bd85
+index 0000000..ac7e998
+Binary files /dev/null and b/fuzz/corpora/cms/b91924b09cd8a573ce5a116f294fa3d423f0c958 differ
+diff --git a/fuzz/corpora/cms/bca1836b62613649efad3d7f4b492538cd103ec5 b/fuzz/corpora/cms/bca1836b62613649efad3d7f4b492538cd103ec5
 new file mode 100644
-index 000000000000..32bf6775b85e
-Binary files /dev/null and b/fuzz/corpora/cms/ef37f7a612717a1b2967d7efd19ff05d5f49bd85 differ
-diff --git a/fuzz/corpora/cms/efe8c53f84a8d60f41064d761d6e83e3f75e1346 b/fuzz/corpora/cms/efe8c53f84a8d60f41064d761d6e83e3f75e1346
+index 0000000..599182c
+Binary files /dev/null and b/fuzz/corpora/cms/bca1836b62613649efad3d7f4b492538cd103ec5 differ
+diff --git a/fuzz/corpora/cms/bfccbadc0a3dac59dc41c092b334ebe1f7e0ab30 b/fuzz/corpora/cms/bfccbadc0a3dac59dc41c092b334ebe1f7e0ab30
 new file mode 100644
-index 000000000000..6c2e301caf96
-Binary files /dev/null and b/fuzz/corpora/cms/efe8c53f84a8d60f41064d761d6e83e3f75e1346 differ
-diff --git a/fuzz/corpora/cms/f0ce4f1bcfb7cd27a277c891b586f964f0fe099a b/fuzz/corpora/cms/f0ce4f1bcfb7cd27a277c891b586f964f0fe099a
+index 0000000..0e519f8
+Binary files /dev/null and b/fuzz/corpora/cms/bfccbadc0a3dac59dc41c092b334ebe1f7e0ab30 differ
+diff --git a/fuzz/corpora/cms/c139bde465e7cb5b84f1b5f72f2d2c2fb456146f b/fuzz/corpora/cms/c139bde465e7cb5b84f1b5f72f2d2c2fb456146f
 new file mode 100644
-index 000000000000..54fd53ed8894
-Binary files /dev/null and b/fuzz/corpora/cms/f0ce4f1bcfb7cd27a277c891b586f964f0fe099a differ
-diff --git a/fuzz/corpora/cms/f34c51ab1e8e277aa1afce9d0b6d475f89985fd9 b/fuzz/corpora/cms/f34c51ab1e8e277aa1afce9d0b6d475f89985fd9
+index 0000000..9c56d8f
+Binary files /dev/null and b/fuzz/corpora/cms/c139bde465e7cb5b84f1b5f72f2d2c2fb456146f differ
+diff --git a/fuzz/corpora/cms/c335137d428c70c80a6a203592033b3daab5fa63 b/fuzz/corpora/cms/c335137d428c70c80a6a203592033b3daab5fa63
 new file mode 100644
-index 000000000000..c14c9941b230
-Binary files /dev/null and b/fuzz/corpora/cms/f34c51ab1e8e277aa1afce9d0b6d475f89985fd9 differ
-diff --git a/fuzz/corpora/cms/f3624f94382dd504c3d1ac99640362d85c06f0eb b/fuzz/corpora/cms/f3624f94382dd504c3d1ac99640362d85c06f0eb
+index 0000000..c2ae826
+Binary files /dev/null and b/fuzz/corpora/cms/c335137d428c70c80a6a203592033b3daab5fa63 differ
+diff --git a/fuzz/corpora/cms/c3fa4e681744fb2fe3517f46c268f0ac31ed81f9 b/fuzz/corpora/cms/c3fa4e681744fb2fe3517f46c268f0ac31ed81f9
 new file mode 100644
-index 000000000000..9593b4031db1
-Binary files /dev/null and b/fuzz/corpora/cms/f3624f94382dd504c3d1ac99640362d85c06f0eb differ
-diff --git a/fuzz/corpora/cms/f7a715864848d87418e7c801187895e7f661d3db b/fuzz/corpora/cms/f7a715864848d87418e7c801187895e7f661d3db
+index 0000000..1f23fdf
+Binary files /dev/null and b/fuzz/corpora/cms/c3fa4e681744fb2fe3517f46c268f0ac31ed81f9 differ
+diff --git a/fuzz/corpora/cms/c47f700424640143955162ef4b4c016717d70476 b/fuzz/corpora/cms/c47f700424640143955162ef4b4c016717d70476
 new file mode 100644
-index 000000000000..722c3db84490
-Binary files /dev/null and b/fuzz/corpora/cms/f7a715864848d87418e7c801187895e7f661d3db differ
-diff --git a/fuzz/corpora/cms/f7b7512067890c46db13a6cbb86b5e6f168bad09 b/fuzz/corpora/cms/f7b7512067890c46db13a6cbb86b5e6f168bad09
+index 0000000..f168069
+Binary files /dev/null and b/fuzz/corpora/cms/c47f700424640143955162ef4b4c016717d70476 differ
+diff --git a/fuzz/corpora/cms/c624b1f2d0c74a70d96e980e2cf2b01ca84187d8 b/fuzz/corpora/cms/c624b1f2d0c74a70d96e980e2cf2b01ca84187d8
 new file mode 100644
-index 000000000000..9188d738266f
-Binary files /dev/null and b/fuzz/corpora/cms/f7b7512067890c46db13a6cbb86b5e6f168bad09 differ
-diff --git a/fuzz/corpora/cms/fa27848680453380b96c84eeaabc8b9474086bd3 b/fuzz/corpora/cms/fa27848680453380b96c84eeaabc8b9474086bd3
+index 0000000..b4a264d
+Binary files /dev/null and b/fuzz/corpora/cms/c624b1f2d0c74a70d96e980e2cf2b01ca84187d8 differ
+diff --git a/fuzz/corpora/cms/c67a989bc86e6042327bbc4bb12a52106a9ed256 b/fuzz/corpora/cms/c67a989bc86e6042327bbc4bb12a52106a9ed256
 new file mode 100644
-index 000000000000..276ca4c08631
-Binary files /dev/null and b/fuzz/corpora/cms/fa27848680453380b96c84eeaabc8b9474086bd3 differ
-diff --git a/fuzz/corpora/cms/fb51fba3a9a8fb327de4adaf17fac6fc7ba7aeb9 b/fuzz/corpora/cms/fb51fba3a9a8fb327de4adaf17fac6fc7ba7aeb9
+index 0000000..6ae26e8
+Binary files /dev/null and b/fuzz/corpora/cms/c67a989bc86e6042327bbc4bb12a52106a9ed256 differ
+diff --git a/fuzz/corpora/cms/c69d7d99ff74598932b3df92a44bb6c0f6e5532a b/fuzz/corpora/cms/c69d7d99ff74598932b3df92a44bb6c0f6e5532a
 new file mode 100644
-index 000000000000..87ff73021b78
-Binary files /dev/null and b/fuzz/corpora/cms/fb51fba3a9a8fb327de4adaf17fac6fc7ba7aeb9 differ
-diff --git a/fuzz/corpora/cms/fc13cd6e1c596942973faf3e711d374b2705911e b/fuzz/corpora/cms/fc13cd6e1c596942973faf3e711d374b2705911e
+index 0000000..dffa160
+Binary files /dev/null and b/fuzz/corpora/cms/c69d7d99ff74598932b3df92a44bb6c0f6e5532a differ
+diff --git a/fuzz/corpora/cms/c9f424d63600220117bef03f9746abc31601c799 b/fuzz/corpora/cms/c9f424d63600220117bef03f9746abc31601c799
 new file mode 100644
-index 000000000000..7acf211e2f62
-Binary files /dev/null and b/fuzz/corpora/cms/fc13cd6e1c596942973faf3e711d374b2705911e differ
-diff --git a/fuzz/corpora/conf/008ac1cb880b3ca2172d3229a030e2407f2324e9 b/fuzz/corpora/conf/008ac1cb880b3ca2172d3229a030e2407f2324e9
+index 0000000..a28ec7e
+Binary files /dev/null and b/fuzz/corpora/cms/c9f424d63600220117bef03f9746abc31601c799 differ
+diff --git a/fuzz/corpora/cms/ce535de93536acd130b8e8c973b77d63be5bb27b b/fuzz/corpora/cms/ce535de93536acd130b8e8c973b77d63be5bb27b
 new file mode 100644
-index 000000000000..f1228747d7ce
-Binary files /dev/null and b/fuzz/corpora/conf/008ac1cb880b3ca2172d3229a030e2407f2324e9 differ
-diff --git a/fuzz/corpora/conf/024154c2a705c1ef0b6f5e3be6f9e50bf0943666 b/fuzz/corpora/conf/024154c2a705c1ef0b6f5e3be6f9e50bf0943666
+index 0000000..d03636a
+Binary files /dev/null and b/fuzz/corpora/cms/ce535de93536acd130b8e8c973b77d63be5bb27b differ
+diff --git a/fuzz/corpora/cms/cf471b674c79f6cab6c477f21a492f43e51d5411 b/fuzz/corpora/cms/cf471b674c79f6cab6c477f21a492f43e51d5411
 new file mode 100644
-index 000000000000..12a32f3f389d
-Binary files /dev/null and b/fuzz/corpora/conf/024154c2a705c1ef0b6f5e3be6f9e50bf0943666 differ
-diff --git a/fuzz/corpora/conf/02a23a5c706734d4fd3024f3d83df1b9178c1a0e b/fuzz/corpora/conf/02a23a5c706734d4fd3024f3d83df1b9178c1a0e
+index 0000000..7af7136
+Binary files /dev/null and b/fuzz/corpora/cms/cf471b674c79f6cab6c477f21a492f43e51d5411 differ
+diff --git a/fuzz/corpora/cms/cf8659bd24f4fc6a7e6c19fa72f791b5858fb6ff b/fuzz/corpora/cms/cf8659bd24f4fc6a7e6c19fa72f791b5858fb6ff
 new file mode 100644
-index 000000000000..394e41f80833
-Binary files /dev/null and b/fuzz/corpora/conf/02a23a5c706734d4fd3024f3d83df1b9178c1a0e differ
-diff --git a/fuzz/corpora/conf/05c092df5713788a1be3295c5b9379319d324447 b/fuzz/corpora/conf/05c092df5713788a1be3295c5b9379319d324447
+index 0000000..fd6c628
+Binary files /dev/null and b/fuzz/corpora/cms/cf8659bd24f4fc6a7e6c19fa72f791b5858fb6ff differ
+diff --git a/fuzz/corpora/cms/cfa1351340249433ef3072bb7ab01efd3b063014 b/fuzz/corpora/cms/cfa1351340249433ef3072bb7ab01efd3b063014
 new file mode 100644
-index 000000000000..eb99b921ff99
-Binary files /dev/null and b/fuzz/corpora/conf/05c092df5713788a1be3295c5b9379319d324447 differ
+index 0000000..0f54bd3
+Binary files /dev/null and b/fuzz/corpora/cms/cfa1351340249433ef3072bb7ab01efd3b063014 differ
+diff --git a/fuzz/corpora/cms/d3178ff5ed6fb314803a0881d4f7b3f634c6339a b/fuzz/corpora/cms/d3178ff5ed6fb314803a0881d4f7b3f634c6339a
+new file mode 100644
+index 0000000..d9a212f
+Binary files /dev/null and b/fuzz/corpora/cms/d3178ff5ed6fb314803a0881d4f7b3f634c6339a differ
+diff --git a/fuzz/corpora/cms/d37583eadc874662ef21ad71ac9de112b5b67a9c b/fuzz/corpora/cms/d37583eadc874662ef21ad71ac9de112b5b67a9c
+new file mode 100644
+index 0000000..465d1ab
+Binary files /dev/null and b/fuzz/corpora/cms/d37583eadc874662ef21ad71ac9de112b5b67a9c differ
+diff --git a/fuzz/corpora/cms/d5a95a4f94d9bc6b4856e5eaf1ce47fbdcad4bd7 b/fuzz/corpora/cms/d5a95a4f94d9bc6b4856e5eaf1ce47fbdcad4bd7
+new file mode 100644
+index 0000000..b13f766
+Binary files /dev/null and b/fuzz/corpora/cms/d5a95a4f94d9bc6b4856e5eaf1ce47fbdcad4bd7 differ
+diff --git a/fuzz/corpora/cms/d681abcc3744d3de74999f75815b2e3721a3f9c0 b/fuzz/corpora/cms/d681abcc3744d3de74999f75815b2e3721a3f9c0
+new file mode 100644
+index 0000000..f39c209
+Binary files /dev/null and b/fuzz/corpora/cms/d681abcc3744d3de74999f75815b2e3721a3f9c0 differ
+diff --git a/fuzz/corpora/cms/d81548ae9d2c501f03732c62142ac4116f4a4699 b/fuzz/corpora/cms/d81548ae9d2c501f03732c62142ac4116f4a4699
+new file mode 100644
+index 0000000..2e63daa
+Binary files /dev/null and b/fuzz/corpora/cms/d81548ae9d2c501f03732c62142ac4116f4a4699 differ
+diff --git a/fuzz/corpora/cms/d95f911bbe787953dc65b0ea04732f2879153e40 b/fuzz/corpora/cms/d95f911bbe787953dc65b0ea04732f2879153e40
+new file mode 100644
+index 0000000..1980dd1
+Binary files /dev/null and b/fuzz/corpora/cms/d95f911bbe787953dc65b0ea04732f2879153e40 differ
+diff --git a/fuzz/corpora/cms/da6b347cf9de6983719b7bd68f070c3b192e1739 b/fuzz/corpora/cms/da6b347cf9de6983719b7bd68f070c3b192e1739
+new file mode 100644
+index 0000000..6e91faf
+Binary files /dev/null and b/fuzz/corpora/cms/da6b347cf9de6983719b7bd68f070c3b192e1739 differ
+diff --git a/fuzz/corpora/cms/db7822260a45dc627a03528e6b48d745d8c62585 b/fuzz/corpora/cms/db7822260a45dc627a03528e6b48d745d8c62585
+new file mode 100644
+index 0000000..4f7f32b
+Binary files /dev/null and b/fuzz/corpora/cms/db7822260a45dc627a03528e6b48d745d8c62585 differ
+diff --git a/fuzz/corpora/cms/e1a36478e56f0c247bcd7a7e8d893637e02a3cac b/fuzz/corpora/cms/e1a36478e56f0c247bcd7a7e8d893637e02a3cac
+new file mode 100644
+index 0000000..29bd88f
+Binary files /dev/null and b/fuzz/corpora/cms/e1a36478e56f0c247bcd7a7e8d893637e02a3cac differ
+diff --git a/fuzz/corpora/cms/e4ea7bf4df18b529da0e7ccfa63d3444a3e64fc0 b/fuzz/corpora/cms/e4ea7bf4df18b529da0e7ccfa63d3444a3e64fc0
+new file mode 100644
+index 0000000..d0509af
+Binary files /dev/null and b/fuzz/corpora/cms/e4ea7bf4df18b529da0e7ccfa63d3444a3e64fc0 differ
+diff --git a/fuzz/corpora/cms/e5779fd34fad0de62cea25044d7d28233f3d8160 b/fuzz/corpora/cms/e5779fd34fad0de62cea25044d7d28233f3d8160
+new file mode 100644
+index 0000000..ff1b02d
+Binary files /dev/null and b/fuzz/corpora/cms/e5779fd34fad0de62cea25044d7d28233f3d8160 differ
+diff --git a/fuzz/corpora/cms/e61b2d9ebd609bf46cf336b9f706f708a9c149e0 b/fuzz/corpora/cms/e61b2d9ebd609bf46cf336b9f706f708a9c149e0
+new file mode 100644
+index 0000000..f145467
+Binary files /dev/null and b/fuzz/corpora/cms/e61b2d9ebd609bf46cf336b9f706f708a9c149e0 differ
+diff --git a/fuzz/corpora/cms/ebb9dcce4c09d753f4ad58952ca79fd9e75b410b b/fuzz/corpora/cms/ebb9dcce4c09d753f4ad58952ca79fd9e75b410b
+new file mode 100644
+index 0000000..fe0f58c
+Binary files /dev/null and b/fuzz/corpora/cms/ebb9dcce4c09d753f4ad58952ca79fd9e75b410b differ
+diff --git a/fuzz/corpora/cms/ec136e74741602be306adccd947b90be475a9e23 b/fuzz/corpora/cms/ec136e74741602be306adccd947b90be475a9e23
+new file mode 100644
+index 0000000..5d2d14b
+Binary files /dev/null and b/fuzz/corpora/cms/ec136e74741602be306adccd947b90be475a9e23 differ
+diff --git a/fuzz/corpora/cms/ec4b1d63abf02c131bf09ae3f29dc9bab2d7864f b/fuzz/corpora/cms/ec4b1d63abf02c131bf09ae3f29dc9bab2d7864f
+new file mode 100644
+index 0000000..2cd2d93
+Binary files /dev/null and b/fuzz/corpora/cms/ec4b1d63abf02c131bf09ae3f29dc9bab2d7864f differ
+diff --git a/fuzz/corpora/cms/ed3efd5d3bebef9e3a2f5321dc43fe46832b9cd0 b/fuzz/corpora/cms/ed3efd5d3bebef9e3a2f5321dc43fe46832b9cd0
+new file mode 100644
+index 0000000..18924a4
+Binary files /dev/null and b/fuzz/corpora/cms/ed3efd5d3bebef9e3a2f5321dc43fe46832b9cd0 differ
+diff --git a/fuzz/corpora/cms/f350bb36daa2f701a6b5a62871f4a64ad5ebce6b b/fuzz/corpora/cms/f350bb36daa2f701a6b5a62871f4a64ad5ebce6b
+new file mode 100644
+index 0000000..d1f8d2a
+Binary files /dev/null and b/fuzz/corpora/cms/f350bb36daa2f701a6b5a62871f4a64ad5ebce6b differ
+diff --git a/fuzz/corpora/cms/f46dcce21b42b5812457cc75656f42d47b8e1aea b/fuzz/corpora/cms/f46dcce21b42b5812457cc75656f42d47b8e1aea
+new file mode 100644
+index 0000000..c762289
+Binary files /dev/null and b/fuzz/corpora/cms/f46dcce21b42b5812457cc75656f42d47b8e1aea differ
+diff --git a/fuzz/corpora/cms/f502c4a89952fb88153f28db6628d21459f28c7e b/fuzz/corpora/cms/f502c4a89952fb88153f28db6628d21459f28c7e
+new file mode 100644
+index 0000000..23028e8
+Binary files /dev/null and b/fuzz/corpora/cms/f502c4a89952fb88153f28db6628d21459f28c7e differ
+diff --git a/fuzz/corpora/cms/f6fc3ea2878bfcbdbfdc0c768e5d760e19cf3dc0 b/fuzz/corpora/cms/f6fc3ea2878bfcbdbfdc0c768e5d760e19cf3dc0
+new file mode 100644
+index 0000000..4040446
+Binary files /dev/null and b/fuzz/corpora/cms/f6fc3ea2878bfcbdbfdc0c768e5d760e19cf3dc0 differ
+diff --git a/fuzz/corpora/cms/f8ac46c04c63316ee6bbbc477edc5ed1d3939821 b/fuzz/corpora/cms/f8ac46c04c63316ee6bbbc477edc5ed1d3939821
+new file mode 100644
+index 0000000..3155a3f
+Binary files /dev/null and b/fuzz/corpora/cms/f8ac46c04c63316ee6bbbc477edc5ed1d3939821 differ
+diff --git a/fuzz/corpora/cms/f9dc496e898fe6a15bc09ab3cdba0dee74b600b7 b/fuzz/corpora/cms/f9dc496e898fe6a15bc09ab3cdba0dee74b600b7
+new file mode 100644
+index 0000000..a016250
+Binary files /dev/null and b/fuzz/corpora/cms/f9dc496e898fe6a15bc09ab3cdba0dee74b600b7 differ
+diff --git a/fuzz/corpora/cms/fae0ce671456a22f64fab7de34188eb09daa0c1a b/fuzz/corpora/cms/fae0ce671456a22f64fab7de34188eb09daa0c1a
+new file mode 100644
+index 0000000..f22a508
+Binary files /dev/null and b/fuzz/corpora/cms/fae0ce671456a22f64fab7de34188eb09daa0c1a differ
+diff --git a/fuzz/corpora/cms/fbfac32c6f0d76631ad8158d6e91becb6dae3db2 b/fuzz/corpora/cms/fbfac32c6f0d76631ad8158d6e91becb6dae3db2
+new file mode 100644
+index 0000000..99cd148
+Binary files /dev/null and b/fuzz/corpora/cms/fbfac32c6f0d76631ad8158d6e91becb6dae3db2 differ
+diff --git a/fuzz/corpora/conf/00e9a2b1f1d902b878f3ce9f8d7ade4c736902bb b/fuzz/corpora/conf/00e9a2b1f1d902b878f3ce9f8d7ade4c736902bb
+new file mode 100644
+index 0000000..9cf40d1
+Binary files /dev/null and b/fuzz/corpora/conf/00e9a2b1f1d902b878f3ce9f8d7ade4c736902bb differ
+diff --git a/fuzz/corpora/conf/0317c76b5d09f4b40ec234cec6f77b152cb453d5 b/fuzz/corpora/conf/0317c76b5d09f4b40ec234cec6f77b152cb453d5
+new file mode 100644
+index 0000000..ea4a362
+Binary files /dev/null and b/fuzz/corpora/conf/0317c76b5d09f4b40ec234cec6f77b152cb453d5 differ
+diff --git a/fuzz/corpora/conf/031c89c13674f1746f0c43b2247a30ab85b43ee9 b/fuzz/corpora/conf/031c89c13674f1746f0c43b2247a30ab85b43ee9
+new file mode 100644
+index 0000000..2cdd0f5
+Binary files /dev/null and b/fuzz/corpora/conf/031c89c13674f1746f0c43b2247a30ab85b43ee9 differ
+diff --git a/fuzz/corpora/conf/03a2f9836be3c0042e47ebddf64ff4ccd7c54486 b/fuzz/corpora/conf/03a2f9836be3c0042e47ebddf64ff4ccd7c54486
+new file mode 100644
+index 0000000..350873a
+Binary files /dev/null and b/fuzz/corpora/conf/03a2f9836be3c0042e47ebddf64ff4ccd7c54486 differ
+diff --git a/fuzz/corpora/conf/057f8b0cc9cb0f5e5a4e69e8bcae2b86b2a5f354 b/fuzz/corpora/conf/057f8b0cc9cb0f5e5a4e69e8bcae2b86b2a5f354
+new file mode 100644
+index 0000000..68ce1ca
+Binary files /dev/null and b/fuzz/corpora/conf/057f8b0cc9cb0f5e5a4e69e8bcae2b86b2a5f354 differ
+diff --git a/fuzz/corpora/conf/05827d1ef2dbef598effe784d66591c466cf959a b/fuzz/corpora/conf/05827d1ef2dbef598effe784d66591c466cf959a
+new file mode 100644
+index 0000000..688ed8b
+Binary files /dev/null and b/fuzz/corpora/conf/05827d1ef2dbef598effe784d66591c466cf959a differ
+diff --git a/fuzz/corpora/conf/05f0531575c104431c441ee7d458399905d14712 b/fuzz/corpora/conf/05f0531575c104431c441ee7d458399905d14712
+new file mode 100644
+index 0000000..13325a4
+Binary files /dev/null and b/fuzz/corpora/conf/05f0531575c104431c441ee7d458399905d14712 differ
+diff --git a/fuzz/corpora/conf/06aadf5517ac4f0c5cc36a4aa2cca76f9d7ef409 b/fuzz/corpora/conf/06aadf5517ac4f0c5cc36a4aa2cca76f9d7ef409
+new file mode 100644
+index 0000000..f671f3a
+Binary files /dev/null and b/fuzz/corpora/conf/06aadf5517ac4f0c5cc36a4aa2cca76f9d7ef409 differ
 diff --git a/fuzz/corpora/conf/08534f33c201a45017b502e90a800f1b708ebcb3 b/fuzz/corpora/conf/08534f33c201a45017b502e90a800f1b708ebcb3
 new file mode 100644
-index 000000000000..b7d5379f9e3b
+index 0000000..b7d5379
 Binary files /dev/null and b/fuzz/corpora/conf/08534f33c201a45017b502e90a800f1b708ebcb3 differ
-diff --git a/fuzz/corpora/conf/11f4de6b8b45cf8051b1d17fa4cde9ad935cea41 b/fuzz/corpora/conf/11f4de6b8b45cf8051b1d17fa4cde9ad935cea41
+diff --git a/fuzz/corpora/conf/09d8e5f13e11301cd1a81460e73282f2880758eb b/fuzz/corpora/conf/09d8e5f13e11301cd1a81460e73282f2880758eb
 new file mode 100644
-index 000000000000..67c329761145
-Binary files /dev/null and b/fuzz/corpora/conf/11f4de6b8b45cf8051b1d17fa4cde9ad935cea41 differ
-diff --git a/fuzz/corpora/conf/122ffbbf626670f241c6cd6a01d390d214af164e b/fuzz/corpora/conf/122ffbbf626670f241c6cd6a01d390d214af164e
+index 0000000..217ae43
+Binary files /dev/null and b/fuzz/corpora/conf/09d8e5f13e11301cd1a81460e73282f2880758eb differ
+diff --git a/fuzz/corpora/conf/0a931941ecf0401b98a3198b2d2681fcf2b62483 b/fuzz/corpora/conf/0a931941ecf0401b98a3198b2d2681fcf2b62483
 new file mode 100644
-index 000000000000..e173c9de694d
-Binary files /dev/null and b/fuzz/corpora/conf/122ffbbf626670f241c6cd6a01d390d214af164e differ
-diff --git a/fuzz/corpora/conf/21606782c65e44cac7afbb90977d8b6f82140e76 b/fuzz/corpora/conf/21606782c65e44cac7afbb90977d8b6f82140e76
+index 0000000..3997a5f
+Binary files /dev/null and b/fuzz/corpora/conf/0a931941ecf0401b98a3198b2d2681fcf2b62483 differ
+diff --git a/fuzz/corpora/conf/0ab87850197bf8ab520ca7b11a2db4654d6fe466 b/fuzz/corpora/conf/0ab87850197bf8ab520ca7b11a2db4654d6fe466
 new file mode 100644
-index 000000000000..851c75cc5e74
-Binary files /dev/null and b/fuzz/corpora/conf/21606782c65e44cac7afbb90977d8b6f82140e76 differ
-diff --git a/fuzz/corpora/conf/25c4a3455786d718c4dc6edae3e6d5aa49a83706 b/fuzz/corpora/conf/25c4a3455786d718c4dc6edae3e6d5aa49a83706
+index 0000000..b59b13c
+Binary files /dev/null and b/fuzz/corpora/conf/0ab87850197bf8ab520ca7b11a2db4654d6fe466 differ
+diff --git a/fuzz/corpora/conf/0cefd58a8120aa3a813d6ee6fe2a6d87fadb5759 b/fuzz/corpora/conf/0cefd58a8120aa3a813d6ee6fe2a6d87fadb5759
 new file mode 100644
-index 000000000000..1e0746c01e12
-Binary files /dev/null and b/fuzz/corpora/conf/25c4a3455786d718c4dc6edae3e6d5aa49a83706 differ
-diff --git a/fuzz/corpora/conf/260d5b14aec9c1fc4eef6ed6e961c30cd9430430 b/fuzz/corpora/conf/260d5b14aec9c1fc4eef6ed6e961c30cd9430430
+index 0000000..e8c8881
+Binary files /dev/null and b/fuzz/corpora/conf/0cefd58a8120aa3a813d6ee6fe2a6d87fadb5759 differ
+diff --git a/fuzz/corpora/conf/0d54604a236902ea54f6d121698d95e2d8a78711 b/fuzz/corpora/conf/0d54604a236902ea54f6d121698d95e2d8a78711
 new file mode 100644
-index 000000000000..07129618bc1d
-Binary files /dev/null and b/fuzz/corpora/conf/260d5b14aec9c1fc4eef6ed6e961c30cd9430430 differ
-diff --git a/fuzz/corpora/conf/2c4a385b84830d0df8c768ac384795e48004f233 b/fuzz/corpora/conf/2c4a385b84830d0df8c768ac384795e48004f233
+index 0000000..8794b03
+Binary files /dev/null and b/fuzz/corpora/conf/0d54604a236902ea54f6d121698d95e2d8a78711 differ
+diff --git a/fuzz/corpora/conf/0fe6e12156bc2d644b12d0df41120d93e57b683b b/fuzz/corpora/conf/0fe6e12156bc2d644b12d0df41120d93e57b683b
 new file mode 100644
-index 000000000000..9f05713eb021
-Binary files /dev/null and b/fuzz/corpora/conf/2c4a385b84830d0df8c768ac384795e48004f233 differ
-diff --git a/fuzz/corpora/conf/36f4f185884d88eb2b65467de504ab736c9ad39e b/fuzz/corpora/conf/36f4f185884d88eb2b65467de504ab736c9ad39e
+index 0000000..c70c43b
+Binary files /dev/null and b/fuzz/corpora/conf/0fe6e12156bc2d644b12d0df41120d93e57b683b differ
+diff --git a/fuzz/corpora/conf/103330ce0ee3a69a079be3dbddb6c932c3538670 b/fuzz/corpora/conf/103330ce0ee3a69a079be3dbddb6c932c3538670
 new file mode 100644
-index 000000000000..1b8166e82a89
-Binary files /dev/null and b/fuzz/corpora/conf/36f4f185884d88eb2b65467de504ab736c9ad39e differ
-diff --git a/fuzz/corpora/conf/39a138e37f2127d4a058f778463d521d6242a2af b/fuzz/corpora/conf/39a138e37f2127d4a058f778463d521d6242a2af
+index 0000000..c796d77
+Binary files /dev/null and b/fuzz/corpora/conf/103330ce0ee3a69a079be3dbddb6c932c3538670 differ
+diff --git a/fuzz/corpora/conf/11aa9ba6a328b46ca5c36596c3db5536bc697a50 b/fuzz/corpora/conf/11aa9ba6a328b46ca5c36596c3db5536bc697a50
 new file mode 100644
-index 000000000000..08fcf083c290
-Binary files /dev/null and b/fuzz/corpora/conf/39a138e37f2127d4a058f778463d521d6242a2af differ
-diff --git a/fuzz/corpora/conf/3c170252e3196c80ea870916ae12c164971e2749 b/fuzz/corpora/conf/3c170252e3196c80ea870916ae12c164971e2749
+index 0000000..d5c244f
+Binary files /dev/null and b/fuzz/corpora/conf/11aa9ba6a328b46ca5c36596c3db5536bc697a50 differ
+diff --git a/fuzz/corpora/conf/11b6ab7b3398a65b0cf5c82408adaf4716bde5a4 b/fuzz/corpora/conf/11b6ab7b3398a65b0cf5c82408adaf4716bde5a4
 new file mode 100644
-index 000000000000..002c0ebbeafe
-Binary files /dev/null and b/fuzz/corpora/conf/3c170252e3196c80ea870916ae12c164971e2749 differ
-diff --git a/fuzz/corpora/conf/3eff67cb446fea8c249b872a4d020fb66cb62123 b/fuzz/corpora/conf/3eff67cb446fea8c249b872a4d020fb66cb62123
+index 0000000..aedd49d
+Binary files /dev/null and b/fuzz/corpora/conf/11b6ab7b3398a65b0cf5c82408adaf4716bde5a4 differ
+diff --git a/fuzz/corpora/conf/125e764c4ec81a7092980d2108df00ec190fdca2 b/fuzz/corpora/conf/125e764c4ec81a7092980d2108df00ec190fdca2
 new file mode 100644
-index 000000000000..9a82d9bff3fb
-Binary files /dev/null and b/fuzz/corpora/conf/3eff67cb446fea8c249b872a4d020fb66cb62123 differ
-diff --git a/fuzz/corpora/conf/3fb229d43c1d22ed87f1f1d0652fe15b1a7b7b24 b/fuzz/corpora/conf/3fb229d43c1d22ed87f1f1d0652fe15b1a7b7b24
+index 0000000..2185bd7
+Binary files /dev/null and b/fuzz/corpora/conf/125e764c4ec81a7092980d2108df00ec190fdca2 differ
+diff --git a/fuzz/corpora/conf/12d3b215d6286e315dea5dc34c69b70c5ab78a19 b/fuzz/corpora/conf/12d3b215d6286e315dea5dc34c69b70c5ab78a19
 new file mode 100644
-index 000000000000..8f5d4d14c042
-Binary files /dev/null and b/fuzz/corpora/conf/3fb229d43c1d22ed87f1f1d0652fe15b1a7b7b24 differ
-diff --git a/fuzz/corpora/conf/436ccfb3a297438512cb1cade4e12bba60c040b9 b/fuzz/corpora/conf/436ccfb3a297438512cb1cade4e12bba60c040b9
+index 0000000..c97f077
+Binary files /dev/null and b/fuzz/corpora/conf/12d3b215d6286e315dea5dc34c69b70c5ab78a19 differ
+diff --git a/fuzz/corpora/conf/13674cc8b2665c6a612dc6388c85816fcb399625 b/fuzz/corpora/conf/13674cc8b2665c6a612dc6388c85816fcb399625
 new file mode 100644
-index 000000000000..76b2f8c5c162
-Binary files /dev/null and b/fuzz/corpora/conf/436ccfb3a297438512cb1cade4e12bba60c040b9 differ
-diff --git a/fuzz/corpora/conf/4882750dcb3a207d6992f96b50597b90230d4d7e b/fuzz/corpora/conf/4882750dcb3a207d6992f96b50597b90230d4d7e
+index 0000000..ae03e7a
+Binary files /dev/null and b/fuzz/corpora/conf/13674cc8b2665c6a612dc6388c85816fcb399625 differ
+diff --git a/fuzz/corpora/conf/13bf849b7c51abedb4ecaf2372e43672deda7a53 b/fuzz/corpora/conf/13bf849b7c51abedb4ecaf2372e43672deda7a53
 new file mode 100644
-index 000000000000..a5c70fbdf253
-Binary files /dev/null and b/fuzz/corpora/conf/4882750dcb3a207d6992f96b50597b90230d4d7e differ
-diff --git a/fuzz/corpora/conf/4d155dee0c6879b034fb6b81fa37f71d9076ad85 b/fuzz/corpora/conf/4d155dee0c6879b034fb6b81fa37f71d9076ad85
+index 0000000..1bcab9a
+Binary files /dev/null and b/fuzz/corpora/conf/13bf849b7c51abedb4ecaf2372e43672deda7a53 differ
+diff --git a/fuzz/corpora/conf/13cac760a129af1523cbacbefe150b08978a3113 b/fuzz/corpora/conf/13cac760a129af1523cbacbefe150b08978a3113
 new file mode 100644
-index 000000000000..40ca4175f422
-Binary files /dev/null and b/fuzz/corpora/conf/4d155dee0c6879b034fb6b81fa37f71d9076ad85 differ
-diff --git a/fuzz/corpora/conf/4d80ae066b71ba38927c12652761b5ca21c3f92f b/fuzz/corpora/conf/4d80ae066b71ba38927c12652761b5ca21c3f92f
+index 0000000..48bae77
+Binary files /dev/null and b/fuzz/corpora/conf/13cac760a129af1523cbacbefe150b08978a3113 differ
+diff --git a/fuzz/corpora/conf/1579249a889e3745d2c8e93e024cc46879f428a6 b/fuzz/corpora/conf/1579249a889e3745d2c8e93e024cc46879f428a6
 new file mode 100644
-index 000000000000..b057d9467225
-Binary files /dev/null and b/fuzz/corpora/conf/4d80ae066b71ba38927c12652761b5ca21c3f92f differ
-diff --git a/fuzz/corpora/conf/59bc0463397be274d46a30291b5d09bbf817a64c b/fuzz/corpora/conf/59bc0463397be274d46a30291b5d09bbf817a64c
+index 0000000..19150d3
+Binary files /dev/null and b/fuzz/corpora/conf/1579249a889e3745d2c8e93e024cc46879f428a6 differ
+diff --git a/fuzz/corpora/conf/159492e9b362d14fd27a2423a4ef9736e7b09416 b/fuzz/corpora/conf/159492e9b362d14fd27a2423a4ef9736e7b09416
 new file mode 100644
-index 000000000000..d68ed382c596
-Binary files /dev/null and b/fuzz/corpora/conf/59bc0463397be274d46a30291b5d09bbf817a64c differ
-diff --git a/fuzz/corpora/conf/62eb09ac12daaf3fbb2dc01e0dbdb5c294aff9d1 b/fuzz/corpora/conf/62eb09ac12daaf3fbb2dc01e0dbdb5c294aff9d1
+index 0000000..c6dd9ce
+Binary files /dev/null and b/fuzz/corpora/conf/159492e9b362d14fd27a2423a4ef9736e7b09416 differ
+diff --git a/fuzz/corpora/conf/15eff4e20d80de04d55baefebc960e0062cd60ae b/fuzz/corpora/conf/15eff4e20d80de04d55baefebc960e0062cd60ae
 new file mode 100644
-index 000000000000..00f2ca41d187
-Binary files /dev/null and b/fuzz/corpora/conf/62eb09ac12daaf3fbb2dc01e0dbdb5c294aff9d1 differ
-diff --git a/fuzz/corpora/conf/636cc0d16fdb21b9a6a58a71c0271cc83d3ea97c b/fuzz/corpora/conf/636cc0d16fdb21b9a6a58a71c0271cc83d3ea97c
+index 0000000..90648d3
+Binary files /dev/null and b/fuzz/corpora/conf/15eff4e20d80de04d55baefebc960e0062cd60ae differ
+diff --git a/fuzz/corpora/conf/168ae6002c92d886bd954300ec8a0b8d05418752 b/fuzz/corpora/conf/168ae6002c92d886bd954300ec8a0b8d05418752
 new file mode 100644
-index 000000000000..4a7b51c76dd4
-Binary files /dev/null and b/fuzz/corpora/conf/636cc0d16fdb21b9a6a58a71c0271cc83d3ea97c differ
-diff --git a/fuzz/corpora/conf/6654a14c8a84003250fa5c053838ee99a6238993 b/fuzz/corpora/conf/6654a14c8a84003250fa5c053838ee99a6238993
+index 0000000..76e469c
+Binary files /dev/null and b/fuzz/corpora/conf/168ae6002c92d886bd954300ec8a0b8d05418752 differ
+diff --git a/fuzz/corpora/conf/16e94858b9a607d182cbe5fafed8a0b27da05f9f b/fuzz/corpora/conf/16e94858b9a607d182cbe5fafed8a0b27da05f9f
 new file mode 100644
-index 000000000000..a9ec9895478e
-Binary files /dev/null and b/fuzz/corpora/conf/6654a14c8a84003250fa5c053838ee99a6238993 differ
-diff --git a/fuzz/corpora/conf/66a05a967342927a7cfc9017db5dfdb2109ca91f b/fuzz/corpora/conf/66a05a967342927a7cfc9017db5dfdb2109ca91f
+index 0000000..34d65a8
+Binary files /dev/null and b/fuzz/corpora/conf/16e94858b9a607d182cbe5fafed8a0b27da05f9f differ
+diff --git a/fuzz/corpora/conf/179a818455fb811e06185c6fe59a5439c60df4cd b/fuzz/corpora/conf/179a818455fb811e06185c6fe59a5439c60df4cd
 new file mode 100644
-index 000000000000..10fad9fbdf2c
-Binary files /dev/null and b/fuzz/corpora/conf/66a05a967342927a7cfc9017db5dfdb2109ca91f differ
-diff --git a/fuzz/corpora/conf/7be71edab48092359b8b529aed8078651fe55989 b/fuzz/corpora/conf/7be71edab48092359b8b529aed8078651fe55989
+index 0000000..9aa92a9
+Binary files /dev/null and b/fuzz/corpora/conf/179a818455fb811e06185c6fe59a5439c60df4cd differ
+diff --git a/fuzz/corpora/conf/1e41b52889772c0906675829d04f26b8cc5c2e30 b/fuzz/corpora/conf/1e41b52889772c0906675829d04f26b8cc5c2e30
 new file mode 100644
-index 000000000000..9b5523336acd
-Binary files /dev/null and b/fuzz/corpora/conf/7be71edab48092359b8b529aed8078651fe55989 differ
-diff --git a/fuzz/corpora/conf/7d3ef4c1a5a8a57fc8ceb33504f4189c058af97c b/fuzz/corpora/conf/7d3ef4c1a5a8a57fc8ceb33504f4189c058af97c
+index 0000000..375331c
+Binary files /dev/null and b/fuzz/corpora/conf/1e41b52889772c0906675829d04f26b8cc5c2e30 differ
+diff --git a/fuzz/corpora/conf/1f483c52af07cb9b99afbce907a18fba309c641d b/fuzz/corpora/conf/1f483c52af07cb9b99afbce907a18fba309c641d
 new file mode 100644
-index 000000000000..1c140d1f3cd1
-Binary files /dev/null and b/fuzz/corpora/conf/7d3ef4c1a5a8a57fc8ceb33504f4189c058af97c differ
-diff --git a/fuzz/corpora/conf/843b262a89a395b83ae81aab67d18b7615b09edd b/fuzz/corpora/conf/843b262a89a395b83ae81aab67d18b7615b09edd
+index 0000000..cbe29f9
+Binary files /dev/null and b/fuzz/corpora/conf/1f483c52af07cb9b99afbce907a18fba309c641d differ
+diff --git a/fuzz/corpora/conf/2196ca595cd5b53a959384614f30509ad0799bb8 b/fuzz/corpora/conf/2196ca595cd5b53a959384614f30509ad0799bb8
 new file mode 100644
-index 000000000000..f97e0a25f5e6
-Binary files /dev/null and b/fuzz/corpora/conf/843b262a89a395b83ae81aab67d18b7615b09edd differ
-diff --git a/fuzz/corpora/conf/870ce81562677caaec04f9fad25675948ada4548 b/fuzz/corpora/conf/870ce81562677caaec04f9fad25675948ada4548
+index 0000000..1ce6bd5
+Binary files /dev/null and b/fuzz/corpora/conf/2196ca595cd5b53a959384614f30509ad0799bb8 differ
+diff --git a/fuzz/corpora/conf/21cd6d534f12ebd26b68782141edb81316afa004 b/fuzz/corpora/conf/21cd6d534f12ebd26b68782141edb81316afa004
 new file mode 100644
-index 000000000000..106d2b738bdd
-Binary files /dev/null and b/fuzz/corpora/conf/870ce81562677caaec04f9fad25675948ada4548 differ
-diff --git a/fuzz/corpora/conf/8741ff9930c2ed2581fceba48bc18dc196406f2d b/fuzz/corpora/conf/8741ff9930c2ed2581fceba48bc18dc196406f2d
+index 0000000..2daa27e
+Binary files /dev/null and b/fuzz/corpora/conf/21cd6d534f12ebd26b68782141edb81316afa004 differ
+diff --git a/fuzz/corpora/conf/2278b1bffd494aa44bb4af69f56e1861fbf14a34 b/fuzz/corpora/conf/2278b1bffd494aa44bb4af69f56e1861fbf14a34
 new file mode 100644
-index 000000000000..7287582bd3b9
-Binary files /dev/null and b/fuzz/corpora/conf/8741ff9930c2ed2581fceba48bc18dc196406f2d differ
-diff --git a/fuzz/corpora/conf/88b6ec59fafc68b3147e18276b82141fe2af0a8a b/fuzz/corpora/conf/88b6ec59fafc68b3147e18276b82141fe2af0a8a
+index 0000000..b94c449
+Binary files /dev/null and b/fuzz/corpora/conf/2278b1bffd494aa44bb4af69f56e1861fbf14a34 differ
+diff --git a/fuzz/corpora/conf/23a42830872c60f84bc3d4e767f65d79539577c6 b/fuzz/corpora/conf/23a42830872c60f84bc3d4e767f65d79539577c6
 new file mode 100644
-index 000000000000..0b100ce93cb2
-Binary files /dev/null and b/fuzz/corpora/conf/88b6ec59fafc68b3147e18276b82141fe2af0a8a differ
-diff --git a/fuzz/corpora/conf/8aab6417743364f4ccfb7211396b2eaad96f3eb9 b/fuzz/corpora/conf/8aab6417743364f4ccfb7211396b2eaad96f3eb9
+index 0000000..e657eef
+Binary files /dev/null and b/fuzz/corpora/conf/23a42830872c60f84bc3d4e767f65d79539577c6 differ
+diff --git a/fuzz/corpora/conf/254778a8717a4ee769133f17e510cc02a318c5a9 b/fuzz/corpora/conf/254778a8717a4ee769133f17e510cc02a318c5a9
 new file mode 100644
-index 000000000000..ccc2574e9246
-Binary files /dev/null and b/fuzz/corpora/conf/8aab6417743364f4ccfb7211396b2eaad96f3eb9 differ
-diff --git a/fuzz/corpora/conf/8b791898f08e0f0809b7f986f6817241bb2da455 b/fuzz/corpora/conf/8b791898f08e0f0809b7f986f6817241bb2da455
+index 0000000..8b930b7
+Binary files /dev/null and b/fuzz/corpora/conf/254778a8717a4ee769133f17e510cc02a318c5a9 differ
+diff --git a/fuzz/corpora/conf/2731a89539eb4dc84dbb42a62be548123bbf4aab b/fuzz/corpora/conf/2731a89539eb4dc84dbb42a62be548123bbf4aab
 new file mode 100644
-index 000000000000..7ac8d2d9bec6
-Binary files /dev/null and b/fuzz/corpora/conf/8b791898f08e0f0809b7f986f6817241bb2da455 differ
-diff --git a/fuzz/corpora/conf/9188d52ce29d7290551198bda22bbfa44bdfe81e b/fuzz/corpora/conf/9188d52ce29d7290551198bda22bbfa44bdfe81e
+index 0000000..8011507
+Binary files /dev/null and b/fuzz/corpora/conf/2731a89539eb4dc84dbb42a62be548123bbf4aab differ
+diff --git a/fuzz/corpora/conf/274e93788bd77f2351130df347d4d2dfb39d1a1b b/fuzz/corpora/conf/274e93788bd77f2351130df347d4d2dfb39d1a1b
 new file mode 100644
-index 000000000000..0f4a21924892
-Binary files /dev/null and b/fuzz/corpora/conf/9188d52ce29d7290551198bda22bbfa44bdfe81e differ
-diff --git a/fuzz/corpora/conf/9b269f988b4200de4f02c320f140aeaadc539a02 b/fuzz/corpora/conf/9b269f988b4200de4f02c320f140aeaadc539a02
+index 0000000..acb8e0d
+Binary files /dev/null and b/fuzz/corpora/conf/274e93788bd77f2351130df347d4d2dfb39d1a1b differ
+diff --git a/fuzz/corpora/conf/28b42e459db719cc7135614828520d44385229ab b/fuzz/corpora/conf/28b42e459db719cc7135614828520d44385229ab
 new file mode 100644
-index 000000000000..c84667d1f34b
-Binary files /dev/null and b/fuzz/corpora/conf/9b269f988b4200de4f02c320f140aeaadc539a02 differ
-diff --git a/fuzz/corpora/conf/9deb7180c9390c34a85f348792c30a20760f92ff b/fuzz/corpora/conf/9deb7180c9390c34a85f348792c30a20760f92ff
+index 0000000..39405f5
+Binary files /dev/null and b/fuzz/corpora/conf/28b42e459db719cc7135614828520d44385229ab differ
+diff --git a/fuzz/corpora/conf/2950d5d8dfe23fce6214aea50bbf21f9ae534bc9 b/fuzz/corpora/conf/2950d5d8dfe23fce6214aea50bbf21f9ae534bc9
 new file mode 100644
-index 000000000000..55d92638e0b4
-Binary files /dev/null and b/fuzz/corpora/conf/9deb7180c9390c34a85f348792c30a20760f92ff differ
-diff --git a/fuzz/corpora/conf/a26f953c8f4679f53a59fc7e49bbdaa49e930ff1 b/fuzz/corpora/conf/a26f953c8f4679f53a59fc7e49bbdaa49e930ff1
+index 0000000..ff45715
+Binary files /dev/null and b/fuzz/corpora/conf/2950d5d8dfe23fce6214aea50bbf21f9ae534bc9 differ
+diff --git a/fuzz/corpora/conf/296470254f4b0902fe9602c48db217a46b94c806 b/fuzz/corpora/conf/296470254f4b0902fe9602c48db217a46b94c806
 new file mode 100644
-index 000000000000..02fed96fcda6
-Binary files /dev/null and b/fuzz/corpora/conf/a26f953c8f4679f53a59fc7e49bbdaa49e930ff1 differ
-diff --git a/fuzz/corpora/conf/a4ff87829e3539e046d926395a4f1c57794b8434 b/fuzz/corpora/conf/a4ff87829e3539e046d926395a4f1c57794b8434
+index 0000000..55691d8
+Binary files /dev/null and b/fuzz/corpora/conf/296470254f4b0902fe9602c48db217a46b94c806 differ
+diff --git a/fuzz/corpora/conf/2af5ceebe9e884c1d5be232740198a624fc51c7f b/fuzz/corpora/conf/2af5ceebe9e884c1d5be232740198a624fc51c7f
 new file mode 100644
-index 000000000000..9d19859a9521
-Binary files /dev/null and b/fuzz/corpora/conf/a4ff87829e3539e046d926395a4f1c57794b8434 differ
-diff --git a/fuzz/corpora/conf/a7660ee00618029b2f15f5c6a2bb1022af091217 b/fuzz/corpora/conf/a7660ee00618029b2f15f5c6a2bb1022af091217
+index 0000000..556de0d
+Binary files /dev/null and b/fuzz/corpora/conf/2af5ceebe9e884c1d5be232740198a624fc51c7f differ
+diff --git a/fuzz/corpora/conf/2c2c32bebdea305e9a4a4dd4b5e02e72c042a0d9 b/fuzz/corpora/conf/2c2c32bebdea305e9a4a4dd4b5e02e72c042a0d9
 new file mode 100644
-index 000000000000..bf5657f6e97b
-Binary files /dev/null and b/fuzz/corpora/conf/a7660ee00618029b2f15f5c6a2bb1022af091217 differ
-diff --git a/fuzz/corpora/conf/a830e58da3c476118834c276e133bdbcbdeed6a2 b/fuzz/corpora/conf/a830e58da3c476118834c276e133bdbcbdeed6a2
+index 0000000..7c2cb9c
+Binary files /dev/null and b/fuzz/corpora/conf/2c2c32bebdea305e9a4a4dd4b5e02e72c042a0d9 differ
+diff --git a/fuzz/corpora/conf/2c40dba8bde4314318386d15ba22bbdc85a2a7ab b/fuzz/corpora/conf/2c40dba8bde4314318386d15ba22bbdc85a2a7ab
 new file mode 100644
-index 000000000000..cda36dd4a38d
-Binary files /dev/null and b/fuzz/corpora/conf/a830e58da3c476118834c276e133bdbcbdeed6a2 differ
-diff --git a/fuzz/corpora/conf/aa4921e7aa9eb14194afdcbe81a916e4f0cae0c8 b/fuzz/corpora/conf/aa4921e7aa9eb14194afdcbe81a916e4f0cae0c8
+index 0000000..f4b6d85
+Binary files /dev/null and b/fuzz/corpora/conf/2c40dba8bde4314318386d15ba22bbdc85a2a7ab differ
+diff --git a/fuzz/corpora/conf/2c9c8848be51cba70cd0c7aa9529b992fbe9a9b4 b/fuzz/corpora/conf/2c9c8848be51cba70cd0c7aa9529b992fbe9a9b4
 new file mode 100644
-index 000000000000..9feff6f3a3a4
-Binary files /dev/null and b/fuzz/corpora/conf/aa4921e7aa9eb14194afdcbe81a916e4f0cae0c8 differ
-diff --git a/fuzz/corpora/conf/b1eb86e3f5dede22e97d841c1750eaa3214b04d0 b/fuzz/corpora/conf/b1eb86e3f5dede22e97d841c1750eaa3214b04d0
+index 0000000..525759b
+Binary files /dev/null and b/fuzz/corpora/conf/2c9c8848be51cba70cd0c7aa9529b992fbe9a9b4 differ
+diff --git a/fuzz/corpora/conf/2d69b7cdfc2d8c9ced8a68e84d329e2849955e80 b/fuzz/corpora/conf/2d69b7cdfc2d8c9ced8a68e84d329e2849955e80
 new file mode 100644
-index 000000000000..ce6bec266015
-Binary files /dev/null and b/fuzz/corpora/conf/b1eb86e3f5dede22e97d841c1750eaa3214b04d0 differ
-diff --git a/fuzz/corpora/conf/b26895be07a576d435ccb9203c1090536dc050ab b/fuzz/corpora/conf/b26895be07a576d435ccb9203c1090536dc050ab
+index 0000000..5a80a65
+Binary files /dev/null and b/fuzz/corpora/conf/2d69b7cdfc2d8c9ced8a68e84d329e2849955e80 differ
+diff --git a/fuzz/corpora/conf/2da3d22d2c98fd2b339257442e2bd3a69bada418 b/fuzz/corpora/conf/2da3d22d2c98fd2b339257442e2bd3a69bada418
 new file mode 100644
-index 000000000000..93524c6c84b1
-Binary files /dev/null and b/fuzz/corpora/conf/b26895be07a576d435ccb9203c1090536dc050ab differ
-diff --git a/fuzz/corpora/conf/b2a3ebaf7ac33c0ca99cc79a46878b8e9532a32b b/fuzz/corpora/conf/b2a3ebaf7ac33c0ca99cc79a46878b8e9532a32b
+index 0000000..1fa3b31
+Binary files /dev/null and b/fuzz/corpora/conf/2da3d22d2c98fd2b339257442e2bd3a69bada418 differ
+diff --git a/fuzz/corpora/conf/2e861315484dc786b2db7ecd198982a9988c4448 b/fuzz/corpora/conf/2e861315484dc786b2db7ecd198982a9988c4448
 new file mode 100644
-index 000000000000..8d3f94008848
-Binary files /dev/null and b/fuzz/corpora/conf/b2a3ebaf7ac33c0ca99cc79a46878b8e9532a32b differ
-diff --git a/fuzz/corpora/conf/b3c742415434b1fb8b5ac8a9c58f759041ddca3d b/fuzz/corpora/conf/b3c742415434b1fb8b5ac8a9c58f759041ddca3d
+index 0000000..9283675
+Binary files /dev/null and b/fuzz/corpora/conf/2e861315484dc786b2db7ecd198982a9988c4448 differ
+diff --git a/fuzz/corpora/conf/2f23bbc55d4529cae43a4b7c677351074f8749cf b/fuzz/corpora/conf/2f23bbc55d4529cae43a4b7c677351074f8749cf
 new file mode 100644
-index 000000000000..cf46147a0f33
-Binary files /dev/null and b/fuzz/corpora/conf/b3c742415434b1fb8b5ac8a9c58f759041ddca3d differ
-diff --git a/fuzz/corpora/conf/b751ddf8d50616d03bbf1d065fb2fb8a35a81628 b/fuzz/corpora/conf/b751ddf8d50616d03bbf1d065fb2fb8a35a81628
+index 0000000..c841047
+Binary files /dev/null and b/fuzz/corpora/conf/2f23bbc55d4529cae43a4b7c677351074f8749cf differ
+diff --git a/fuzz/corpora/conf/2f4a40bead0fa12111a6b1e9ce39985b08e36358 b/fuzz/corpora/conf/2f4a40bead0fa12111a6b1e9ce39985b08e36358
 new file mode 100644
-index 000000000000..87fd00a7b510
-Binary files /dev/null and b/fuzz/corpora/conf/b751ddf8d50616d03bbf1d065fb2fb8a35a81628 differ
-diff --git a/fuzz/corpora/conf/b84ca24d2485310906dcbbfd999afab549181f24 b/fuzz/corpora/conf/b84ca24d2485310906dcbbfd999afab549181f24
+index 0000000..c68c68a
+Binary files /dev/null and b/fuzz/corpora/conf/2f4a40bead0fa12111a6b1e9ce39985b08e36358 differ
+diff --git a/fuzz/corpora/conf/345503fa580e4c55304b62e0a6f3ae47920f0150 b/fuzz/corpora/conf/345503fa580e4c55304b62e0a6f3ae47920f0150
 new file mode 100644
-index 000000000000..b6f3c95d3082
-Binary files /dev/null and b/fuzz/corpora/conf/b84ca24d2485310906dcbbfd999afab549181f24 differ
-diff --git a/fuzz/corpora/conf/bd0068438d2b1052914c21ba6a93a0719de63b47 b/fuzz/corpora/conf/bd0068438d2b1052914c21ba6a93a0719de63b47
+index 0000000..5e2b233
+Binary files /dev/null and b/fuzz/corpora/conf/345503fa580e4c55304b62e0a6f3ae47920f0150 differ
+diff --git a/fuzz/corpora/conf/3526c79af1f9a49ebd79eff7861fa8fda26bf087 b/fuzz/corpora/conf/3526c79af1f9a49ebd79eff7861fa8fda26bf087
 new file mode 100644
-index 000000000000..447200dd536b
-Binary files /dev/null and b/fuzz/corpora/conf/bd0068438d2b1052914c21ba6a93a0719de63b47 differ
-diff --git a/fuzz/corpora/conf/bdec413475dad1f667177c5b31336c0c1c5762ab b/fuzz/corpora/conf/bdec413475dad1f667177c5b31336c0c1c5762ab
+index 0000000..12cd9b4
+Binary files /dev/null and b/fuzz/corpora/conf/3526c79af1f9a49ebd79eff7861fa8fda26bf087 differ
+diff --git a/fuzz/corpora/conf/355b2714c04bf27031c0db6563a3ac47f9e57414 b/fuzz/corpora/conf/355b2714c04bf27031c0db6563a3ac47f9e57414
 new file mode 100644
-index 000000000000..5c22c0d954b7
-Binary files /dev/null and b/fuzz/corpora/conf/bdec413475dad1f667177c5b31336c0c1c5762ab differ
-diff --git a/fuzz/corpora/conf/bfb51ca75e669248eaf4800ef7cd3295b43e9149 b/fuzz/corpora/conf/bfb51ca75e669248eaf4800ef7cd3295b43e9149
+index 0000000..3901d74
+Binary files /dev/null and b/fuzz/corpora/conf/355b2714c04bf27031c0db6563a3ac47f9e57414 differ
+diff --git a/fuzz/corpora/conf/371dd184aaf659e2d79f9bde7ff3468eb5da6200 b/fuzz/corpora/conf/371dd184aaf659e2d79f9bde7ff3468eb5da6200
 new file mode 100644
-index 000000000000..c651cf3daa52
-Binary files /dev/null and b/fuzz/corpora/conf/bfb51ca75e669248eaf4800ef7cd3295b43e9149 differ
-diff --git a/fuzz/corpora/conf/c1a437e45bb2364a9e773714798b3211b123046c b/fuzz/corpora/conf/c1a437e45bb2364a9e773714798b3211b123046c
+index 0000000..2949d1c
+Binary files /dev/null and b/fuzz/corpora/conf/371dd184aaf659e2d79f9bde7ff3468eb5da6200 differ
+diff --git a/fuzz/corpora/conf/38984c3512b1745a0a41ffb4b7e73683031c10f0 b/fuzz/corpora/conf/38984c3512b1745a0a41ffb4b7e73683031c10f0
 new file mode 100644
-index 000000000000..24fda00306b1
-Binary files /dev/null and b/fuzz/corpora/conf/c1a437e45bb2364a9e773714798b3211b123046c differ
-diff --git a/fuzz/corpora/conf/c1af8bfa945129dca428a263e75404d0661c79b4 b/fuzz/corpora/conf/c1af8bfa945129dca428a263e75404d0661c79b4
+index 0000000..cba8d58
+Binary files /dev/null and b/fuzz/corpora/conf/38984c3512b1745a0a41ffb4b7e73683031c10f0 differ
+diff --git a/fuzz/corpora/conf/398f511daf28561a637b3bff7ff758063b489db8 b/fuzz/corpora/conf/398f511daf28561a637b3bff7ff758063b489db8
 new file mode 100644
-index 000000000000..16eb080856df
-Binary files /dev/null and b/fuzz/corpora/conf/c1af8bfa945129dca428a263e75404d0661c79b4 differ
-diff --git a/fuzz/corpora/conf/c74e49cd79f1707f3ecb5d0db943f88fdba771c2 b/fuzz/corpora/conf/c74e49cd79f1707f3ecb5d0db943f88fdba771c2
+index 0000000..46f14f9
+Binary files /dev/null and b/fuzz/corpora/conf/398f511daf28561a637b3bff7ff758063b489db8 differ
+diff --git a/fuzz/corpora/conf/3b262c69d19aa76c5d4e9563790190c4e58ee283 b/fuzz/corpora/conf/3b262c69d19aa76c5d4e9563790190c4e58ee283
 new file mode 100644
-index 000000000000..40fc9f4b0d50
-Binary files /dev/null and b/fuzz/corpora/conf/c74e49cd79f1707f3ecb5d0db943f88fdba771c2 differ
-diff --git a/fuzz/corpora/conf/d548e836721c7c71da7b21cff50e036a6298a5b5 b/fuzz/corpora/conf/d548e836721c7c71da7b21cff50e036a6298a5b5
+index 0000000..b510e96
+Binary files /dev/null and b/fuzz/corpora/conf/3b262c69d19aa76c5d4e9563790190c4e58ee283 differ
+diff --git a/fuzz/corpora/conf/3bd0acb1edbcc0b62b9224a709a765e5ee09d179 b/fuzz/corpora/conf/3bd0acb1edbcc0b62b9224a709a765e5ee09d179
 new file mode 100644
-index 000000000000..8bfe2428babf
-Binary files /dev/null and b/fuzz/corpora/conf/d548e836721c7c71da7b21cff50e036a6298a5b5 differ
-diff --git a/fuzz/corpora/conf/d6f8126dc3deaa249de103e67ff709f02d7fc9f7 b/fuzz/corpora/conf/d6f8126dc3deaa249de103e67ff709f02d7fc9f7
+index 0000000..14bd77f
+Binary files /dev/null and b/fuzz/corpora/conf/3bd0acb1edbcc0b62b9224a709a765e5ee09d179 differ
+diff --git a/fuzz/corpora/conf/3c1e8db7c63b5833416c8569efb37dd29c953835 b/fuzz/corpora/conf/3c1e8db7c63b5833416c8569efb37dd29c953835
 new file mode 100644
-index 000000000000..534192ef5d6d
-Binary files /dev/null and b/fuzz/corpora/conf/d6f8126dc3deaa249de103e67ff709f02d7fc9f7 differ
-diff --git a/fuzz/corpora/conf/d9ab972e041f2dc0c83aa0b41480611f7444f699 b/fuzz/corpora/conf/d9ab972e041f2dc0c83aa0b41480611f7444f699
+index 0000000..3f700e3
+Binary files /dev/null and b/fuzz/corpora/conf/3c1e8db7c63b5833416c8569efb37dd29c953835 differ
+diff --git a/fuzz/corpora/conf/3c81208adb3584e7f20e88b02335665fcf6386be b/fuzz/corpora/conf/3c81208adb3584e7f20e88b02335665fcf6386be
 new file mode 100644
-index 000000000000..f36cbfae9d14
-Binary files /dev/null and b/fuzz/corpora/conf/d9ab972e041f2dc0c83aa0b41480611f7444f699 differ
-diff --git a/fuzz/corpora/conf/db84bbe10f7e4e1b27114feb020b764eea28289f b/fuzz/corpora/conf/db84bbe10f7e4e1b27114feb020b764eea28289f
+index 0000000..d8bec79
+Binary files /dev/null and b/fuzz/corpora/conf/3c81208adb3584e7f20e88b02335665fcf6386be differ
+diff --git a/fuzz/corpora/conf/3c84ef2ebaec4b1a06a6fd0d9c44a90c828ec932 b/fuzz/corpora/conf/3c84ef2ebaec4b1a06a6fd0d9c44a90c828ec932
 new file mode 100644
-index 000000000000..77b054a92bfb
-Binary files /dev/null and b/fuzz/corpora/conf/db84bbe10f7e4e1b27114feb020b764eea28289f differ
-diff --git a/fuzz/corpora/conf/dd46a51ce6526eec344a7c90e55c3bdb9f3c5ebd b/fuzz/corpora/conf/dd46a51ce6526eec344a7c90e55c3bdb9f3c5ebd
+index 0000000..1289db3
+Binary files /dev/null and b/fuzz/corpora/conf/3c84ef2ebaec4b1a06a6fd0d9c44a90c828ec932 differ
+diff --git a/fuzz/corpora/conf/3d58b4189c84c739fb7c8bb510f3a35c437dc358 b/fuzz/corpora/conf/3d58b4189c84c739fb7c8bb510f3a35c437dc358
 new file mode 100644
-index 000000000000..45f017c08139
-Binary files /dev/null and b/fuzz/corpora/conf/dd46a51ce6526eec344a7c90e55c3bdb9f3c5ebd differ
-diff --git a/fuzz/corpora/conf/e12a34439a29987515c3103b3ba4a3a74464c63a b/fuzz/corpora/conf/e12a34439a29987515c3103b3ba4a3a74464c63a
+index 0000000..7a578a8
+Binary files /dev/null and b/fuzz/corpora/conf/3d58b4189c84c739fb7c8bb510f3a35c437dc358 differ
+diff --git a/fuzz/corpora/conf/3db997f88bdb06970b6d01b723d355b4649fd5b2 b/fuzz/corpora/conf/3db997f88bdb06970b6d01b723d355b4649fd5b2
 new file mode 100644
-index 000000000000..42b9d260dc3c
-Binary files /dev/null and b/fuzz/corpora/conf/e12a34439a29987515c3103b3ba4a3a74464c63a differ
-diff --git a/fuzz/corpora/conf/ea868097fc454660f068e4e326452d40e5f0cb1c b/fuzz/corpora/conf/ea868097fc454660f068e4e326452d40e5f0cb1c
+index 0000000..d81419b
+Binary files /dev/null and b/fuzz/corpora/conf/3db997f88bdb06970b6d01b723d355b4649fd5b2 differ
+diff --git a/fuzz/corpora/conf/3fc1025965b9a906fccb68f6390a64b0a39c28d7 b/fuzz/corpora/conf/3fc1025965b9a906fccb68f6390a64b0a39c28d7
 new file mode 100644
-index 000000000000..002c8f169e9d
-Binary files /dev/null and b/fuzz/corpora/conf/ea868097fc454660f068e4e326452d40e5f0cb1c differ
-diff --git a/fuzz/corpora/conf/f1057a26b702ab798551e912e6adc60da339cdc8 b/fuzz/corpora/conf/f1057a26b702ab798551e912e6adc60da339cdc8
+index 0000000..3e4ad24
+Binary files /dev/null and b/fuzz/corpora/conf/3fc1025965b9a906fccb68f6390a64b0a39c28d7 differ
+diff --git a/fuzz/corpora/conf/3fc620949348a5819bf1aa4cbdcef56ad87163f7 b/fuzz/corpora/conf/3fc620949348a5819bf1aa4cbdcef56ad87163f7
 new file mode 100644
-index 000000000000..7dc0c1974a3c
-Binary files /dev/null and b/fuzz/corpora/conf/f1057a26b702ab798551e912e6adc60da339cdc8 differ
-diff --git a/fuzz/corpora/conf/f9ccb39b87d7161abee5f2b857650f8ef76d97b6 b/fuzz/corpora/conf/f9ccb39b87d7161abee5f2b857650f8ef76d97b6
+index 0000000..9f3df39
+Binary files /dev/null and b/fuzz/corpora/conf/3fc620949348a5819bf1aa4cbdcef56ad87163f7 differ
+diff --git a/fuzz/corpora/conf/400ca19d56803e7f1b795c111626c22451af9fba b/fuzz/corpora/conf/400ca19d56803e7f1b795c111626c22451af9fba
 new file mode 100644
-index 000000000000..9ac5131a5ace
-Binary files /dev/null and b/fuzz/corpora/conf/f9ccb39b87d7161abee5f2b857650f8ef76d97b6 differ
-diff --git a/fuzz/corpora/conf/fee886c817c6f68f1d974747449c552c9daf4481 b/fuzz/corpora/conf/fee886c817c6f68f1d974747449c552c9daf4481
+index 0000000..42579cf
+Binary files /dev/null and b/fuzz/corpora/conf/400ca19d56803e7f1b795c111626c22451af9fba differ
+diff --git a/fuzz/corpora/conf/423fce2bd177a3e9da1f7d5d17af9c315d4cbab6 b/fuzz/corpora/conf/423fce2bd177a3e9da1f7d5d17af9c315d4cbab6
 new file mode 100644
-index 000000000000..26ac10a44787
-Binary files /dev/null and b/fuzz/corpora/conf/fee886c817c6f68f1d974747449c552c9daf4481 differ
+index 0000000..a9b087a
+Binary files /dev/null and b/fuzz/corpora/conf/423fce2bd177a3e9da1f7d5d17af9c315d4cbab6 differ
+diff --git a/fuzz/corpora/conf/428df981d37999073b1970800ed48e7b42aa88b9 b/fuzz/corpora/conf/428df981d37999073b1970800ed48e7b42aa88b9
+new file mode 100644
+index 0000000..b531851
+Binary files /dev/null and b/fuzz/corpora/conf/428df981d37999073b1970800ed48e7b42aa88b9 differ
+diff --git a/fuzz/corpora/conf/462ce3e0b85b3c956898fff2f6c1d0822ba5dd61 b/fuzz/corpora/conf/462ce3e0b85b3c956898fff2f6c1d0822ba5dd61
+new file mode 100644
+index 0000000..c5f9373
+Binary files /dev/null and b/fuzz/corpora/conf/462ce3e0b85b3c956898fff2f6c1d0822ba5dd61 differ
+diff --git a/fuzz/corpora/conf/470af8e1da896e8fc3e199443b7d7031629091be b/fuzz/corpora/conf/470af8e1da896e8fc3e199443b7d7031629091be
+new file mode 100644
+index 0000000..b851472
+Binary files /dev/null and b/fuzz/corpora/conf/470af8e1da896e8fc3e199443b7d7031629091be differ
+diff --git a/fuzz/corpora/conf/4c38e4ac639dcaecb2f879aff86f6190bf555991 b/fuzz/corpora/conf/4c38e4ac639dcaecb2f879aff86f6190bf555991
+new file mode 100644
+index 0000000..45db0c4
+Binary files /dev/null and b/fuzz/corpora/conf/4c38e4ac639dcaecb2f879aff86f6190bf555991 differ
+diff --git a/fuzz/corpora/conf/4d4a614308fb1069ad8f73868bdcd281e064f44d b/fuzz/corpora/conf/4d4a614308fb1069ad8f73868bdcd281e064f44d
+new file mode 100644
+index 0000000..e1cbb76
+Binary files /dev/null and b/fuzz/corpora/conf/4d4a614308fb1069ad8f73868bdcd281e064f44d differ
+diff --git a/fuzz/corpora/conf/4e741ccc1d92e1687c12c4d9dd0412540420cbec b/fuzz/corpora/conf/4e741ccc1d92e1687c12c4d9dd0412540420cbec
+new file mode 100644
+index 0000000..1594e76
+Binary files /dev/null and b/fuzz/corpora/conf/4e741ccc1d92e1687c12c4d9dd0412540420cbec differ
+diff --git a/fuzz/corpora/conf/4efd91ba727489e2fc7d8fe532ed80538659ef52 b/fuzz/corpora/conf/4efd91ba727489e2fc7d8fe532ed80538659ef52
+new file mode 100644
+index 0000000..326a973
+Binary files /dev/null and b/fuzz/corpora/conf/4efd91ba727489e2fc7d8fe532ed80538659ef52 differ
+diff --git a/fuzz/corpora/conf/52e153ad39af464e9a4c8e3e9b24c50c255305f0 b/fuzz/corpora/conf/52e153ad39af464e9a4c8e3e9b24c50c255305f0
+new file mode 100644
+index 0000000..8c64b40
+Binary files /dev/null and b/fuzz/corpora/conf/52e153ad39af464e9a4c8e3e9b24c50c255305f0 differ
+diff --git a/fuzz/corpora/conf/53b48739efd26b03f4fc8598bf65e0fb6d1cc268 b/fuzz/corpora/conf/53b48739efd26b03f4fc8598bf65e0fb6d1cc268
+new file mode 100644
+index 0000000..34c4bd9
+Binary files /dev/null and b/fuzz/corpora/conf/53b48739efd26b03f4fc8598bf65e0fb6d1cc268 differ
+diff --git a/fuzz/corpora/conf/543b5625a6e4a27827cba3846a4e4565fa165581 b/fuzz/corpora/conf/543b5625a6e4a27827cba3846a4e4565fa165581
+new file mode 100644
+index 0000000..564717c
+Binary files /dev/null and b/fuzz/corpora/conf/543b5625a6e4a27827cba3846a4e4565fa165581 differ
+diff --git a/fuzz/corpora/conf/5460a41cf43972f1493aeca60ac3bd4f8dc330f2 b/fuzz/corpora/conf/5460a41cf43972f1493aeca60ac3bd4f8dc330f2
+new file mode 100644
+index 0000000..036ae29
+Binary files /dev/null and b/fuzz/corpora/conf/5460a41cf43972f1493aeca60ac3bd4f8dc330f2 differ
+diff --git a/fuzz/corpora/conf/5548deeb862e559b8bd0734b84845f79463f5467 b/fuzz/corpora/conf/5548deeb862e559b8bd0734b84845f79463f5467
+new file mode 100644
+index 0000000..e538162
+Binary files /dev/null and b/fuzz/corpora/conf/5548deeb862e559b8bd0734b84845f79463f5467 differ
+diff --git a/fuzz/corpora/conf/55bfe4ad66c93473328435284c783c8408ac0614 b/fuzz/corpora/conf/55bfe4ad66c93473328435284c783c8408ac0614
+new file mode 100644
+index 0000000..507ecae
+Binary files /dev/null and b/fuzz/corpora/conf/55bfe4ad66c93473328435284c783c8408ac0614 differ
+diff --git a/fuzz/corpora/conf/57351a2a20da075dcb9f8abfecdaee40235042c0 b/fuzz/corpora/conf/57351a2a20da075dcb9f8abfecdaee40235042c0
+new file mode 100644
+index 0000000..f29d35e
+Binary files /dev/null and b/fuzz/corpora/conf/57351a2a20da075dcb9f8abfecdaee40235042c0 differ
+diff --git a/fuzz/corpora/conf/58021be17dcef5b082f1746f0fbd70540ed94f49 b/fuzz/corpora/conf/58021be17dcef5b082f1746f0fbd70540ed94f49
+new file mode 100644
+index 0000000..f8780f1
+Binary files /dev/null and b/fuzz/corpora/conf/58021be17dcef5b082f1746f0fbd70540ed94f49 differ
+diff --git a/fuzz/corpora/conf/59904393d0f60322a189824a0b7e6bcfb13d44d1 b/fuzz/corpora/conf/59904393d0f60322a189824a0b7e6bcfb13d44d1
+new file mode 100644
+index 0000000..b882008
+Binary files /dev/null and b/fuzz/corpora/conf/59904393d0f60322a189824a0b7e6bcfb13d44d1 differ
+diff --git a/fuzz/corpora/conf/5a4d2106376deb6fdda3e97bbdbf6e56c3b3c720 b/fuzz/corpora/conf/5a4d2106376deb6fdda3e97bbdbf6e56c3b3c720
+new file mode 100644
+index 0000000..bea29de
+Binary files /dev/null and b/fuzz/corpora/conf/5a4d2106376deb6fdda3e97bbdbf6e56c3b3c720 differ
+diff --git a/fuzz/corpora/conf/5dbc66f84f1f68c04066a9104f0f59d60f281cd5 b/fuzz/corpora/conf/5dbc66f84f1f68c04066a9104f0f59d60f281cd5
+new file mode 100644
+index 0000000..7108906
+Binary files /dev/null and b/fuzz/corpora/conf/5dbc66f84f1f68c04066a9104f0f59d60f281cd5 differ
+diff --git a/fuzz/corpora/conf/5de6527ce4cbedc54d601da54f2f1f0b67aeea17 b/fuzz/corpora/conf/5de6527ce4cbedc54d601da54f2f1f0b67aeea17
+new file mode 100644
+index 0000000..fc2e9ae
+Binary files /dev/null and b/fuzz/corpora/conf/5de6527ce4cbedc54d601da54f2f1f0b67aeea17 differ
+diff --git a/fuzz/corpora/conf/5e177f1cca848cb1d5e27dbc36612b5fafd1dabb b/fuzz/corpora/conf/5e177f1cca848cb1d5e27dbc36612b5fafd1dabb
+new file mode 100644
+index 0000000..d368c01
+Binary files /dev/null and b/fuzz/corpora/conf/5e177f1cca848cb1d5e27dbc36612b5fafd1dabb differ
+diff --git a/fuzz/corpora/conf/60a1ec1ff9ddf27b1b6b5db10b85f8b320956cf7 b/fuzz/corpora/conf/60a1ec1ff9ddf27b1b6b5db10b85f8b320956cf7
+new file mode 100644
+index 0000000..9461be4
+Binary files /dev/null and b/fuzz/corpora/conf/60a1ec1ff9ddf27b1b6b5db10b85f8b320956cf7 differ
+diff --git a/fuzz/corpora/conf/64434837b4ae8f44f826d7a17721fb3ccc42edde b/fuzz/corpora/conf/64434837b4ae8f44f826d7a17721fb3ccc42edde
+new file mode 100644
+index 0000000..eb7808d
+Binary files /dev/null and b/fuzz/corpora/conf/64434837b4ae8f44f826d7a17721fb3ccc42edde differ
+diff --git a/fuzz/corpora/conf/658faa7cc6f0438faf33a1927641f792b7ad3895 b/fuzz/corpora/conf/658faa7cc6f0438faf33a1927641f792b7ad3895
+new file mode 100644
+index 0000000..3fc52c5
+Binary files /dev/null and b/fuzz/corpora/conf/658faa7cc6f0438faf33a1927641f792b7ad3895 differ
+diff --git a/fuzz/corpora/conf/66da3693cd4c2498ecc7c90625cdbd92ace6c2b1 b/fuzz/corpora/conf/66da3693cd4c2498ecc7c90625cdbd92ace6c2b1
+new file mode 100644
+index 0000000..ad27218
+Binary files /dev/null and b/fuzz/corpora/conf/66da3693cd4c2498ecc7c90625cdbd92ace6c2b1 differ
+diff --git a/fuzz/corpora/conf/679670d561a15a31dfe9d1cf76b49926149e72ea b/fuzz/corpora/conf/679670d561a15a31dfe9d1cf76b49926149e72ea
+new file mode 100644
+index 0000000..481b009
+Binary files /dev/null and b/fuzz/corpora/conf/679670d561a15a31dfe9d1cf76b49926149e72ea differ
+diff --git a/fuzz/corpora/conf/690e824e960bfb72b2c920d885d19a59f40da452 b/fuzz/corpora/conf/690e824e960bfb72b2c920d885d19a59f40da452
+new file mode 100644
+index 0000000..4ae6b98
+Binary files /dev/null and b/fuzz/corpora/conf/690e824e960bfb72b2c920d885d19a59f40da452 differ
+diff --git a/fuzz/corpora/conf/6ae4142481e067d74ef8cbc764664297c5b92a23 b/fuzz/corpora/conf/6ae4142481e067d74ef8cbc764664297c5b92a23
+new file mode 100644
+index 0000000..4e87668
+Binary files /dev/null and b/fuzz/corpora/conf/6ae4142481e067d74ef8cbc764664297c5b92a23 differ
+diff --git a/fuzz/corpora/conf/6aed8e12f8dda79c94bcafe0b654842cfd047bba b/fuzz/corpora/conf/6aed8e12f8dda79c94bcafe0b654842cfd047bba
+new file mode 100644
+index 0000000..2bdc457
+Binary files /dev/null and b/fuzz/corpora/conf/6aed8e12f8dda79c94bcafe0b654842cfd047bba differ
+diff --git a/fuzz/corpora/conf/6b747272cdf1f4a8f3f94729be2813b2fe724295 b/fuzz/corpora/conf/6b747272cdf1f4a8f3f94729be2813b2fe724295
+new file mode 100644
+index 0000000..2015450
+Binary files /dev/null and b/fuzz/corpora/conf/6b747272cdf1f4a8f3f94729be2813b2fe724295 differ
+diff --git a/fuzz/corpora/conf/6c5dbd8ad3468876f42373487698b3d136aeb32c b/fuzz/corpora/conf/6c5dbd8ad3468876f42373487698b3d136aeb32c
+new file mode 100644
+index 0000000..ffb8169
+Binary files /dev/null and b/fuzz/corpora/conf/6c5dbd8ad3468876f42373487698b3d136aeb32c differ
+diff --git a/fuzz/corpora/conf/6ef6b86cd22d6e5eceb4061d706b0d3f56ed1863 b/fuzz/corpora/conf/6ef6b86cd22d6e5eceb4061d706b0d3f56ed1863
+new file mode 100644
+index 0000000..46db25f
+Binary files /dev/null and b/fuzz/corpora/conf/6ef6b86cd22d6e5eceb4061d706b0d3f56ed1863 differ
+diff --git a/fuzz/corpora/conf/6faecd6ee5ecb838d27540410e192519e60bbf24 b/fuzz/corpora/conf/6faecd6ee5ecb838d27540410e192519e60bbf24
+new file mode 100644
+index 0000000..7683dd1
+Binary files /dev/null and b/fuzz/corpora/conf/6faecd6ee5ecb838d27540410e192519e60bbf24 differ
+diff --git a/fuzz/corpora/conf/6fe9763507187df67058c922db6e53cd2108c85d b/fuzz/corpora/conf/6fe9763507187df67058c922db6e53cd2108c85d
+new file mode 100644
+index 0000000..69b0465
+Binary files /dev/null and b/fuzz/corpora/conf/6fe9763507187df67058c922db6e53cd2108c85d differ
+diff --git a/fuzz/corpora/conf/70e78e890f7f9ac768215c3fd10f1c8f407f67cf b/fuzz/corpora/conf/70e78e890f7f9ac768215c3fd10f1c8f407f67cf
+new file mode 100644
+index 0000000..dc02610
+Binary files /dev/null and b/fuzz/corpora/conf/70e78e890f7f9ac768215c3fd10f1c8f407f67cf differ
+diff --git a/fuzz/corpora/conf/71014343fd0fc0678702f24bf07e4810f554e644 b/fuzz/corpora/conf/71014343fd0fc0678702f24bf07e4810f554e644
+new file mode 100644
+index 0000000..16938b5
+Binary files /dev/null and b/fuzz/corpora/conf/71014343fd0fc0678702f24bf07e4810f554e644 differ
+diff --git a/fuzz/corpora/conf/71297df83d7e630f52d5e79742df4c8a8129207f b/fuzz/corpora/conf/71297df83d7e630f52d5e79742df4c8a8129207f
+new file mode 100644
+index 0000000..2921dcb
+Binary files /dev/null and b/fuzz/corpora/conf/71297df83d7e630f52d5e79742df4c8a8129207f differ
+diff --git a/fuzz/corpora/conf/71456a0a3bcdd830d2b95e203d002da9578833f0 b/fuzz/corpora/conf/71456a0a3bcdd830d2b95e203d002da9578833f0
+new file mode 100644
+index 0000000..f592aab
+Binary files /dev/null and b/fuzz/corpora/conf/71456a0a3bcdd830d2b95e203d002da9578833f0 differ
+diff --git a/fuzz/corpora/conf/719d708649871814181291db70291f94636d17d5 b/fuzz/corpora/conf/719d708649871814181291db70291f94636d17d5
+new file mode 100644
+index 0000000..6396ffe
+Binary files /dev/null and b/fuzz/corpora/conf/719d708649871814181291db70291f94636d17d5 differ
+diff --git a/fuzz/corpora/conf/71e868d8b84d7f33ba22ce6708fc23bec2199515 b/fuzz/corpora/conf/71e868d8b84d7f33ba22ce6708fc23bec2199515
+new file mode 100644
+index 0000000..81a0df1
+Binary files /dev/null and b/fuzz/corpora/conf/71e868d8b84d7f33ba22ce6708fc23bec2199515 differ
+diff --git a/fuzz/corpora/conf/7270dbae4f76826e3810af56a1197df9b0b316e7 b/fuzz/corpora/conf/7270dbae4f76826e3810af56a1197df9b0b316e7
+new file mode 100644
+index 0000000..2691a5c
+Binary files /dev/null and b/fuzz/corpora/conf/7270dbae4f76826e3810af56a1197df9b0b316e7 differ
+diff --git a/fuzz/corpora/conf/728419a78db968c1ef3f530b634bc7f587afbf97 b/fuzz/corpora/conf/728419a78db968c1ef3f530b634bc7f587afbf97
+new file mode 100644
+index 0000000..f204b99
+Binary files /dev/null and b/fuzz/corpora/conf/728419a78db968c1ef3f530b634bc7f587afbf97 differ
+diff --git a/fuzz/corpora/conf/749e95ddcc3c2df6746ac8d6c52704502a456393 b/fuzz/corpora/conf/749e95ddcc3c2df6746ac8d6c52704502a456393
+new file mode 100644
+index 0000000..a9d5ab4
+Binary files /dev/null and b/fuzz/corpora/conf/749e95ddcc3c2df6746ac8d6c52704502a456393 differ
+diff --git a/fuzz/corpora/conf/74d357f44d1ccef694bbe3870caac173021515c5 b/fuzz/corpora/conf/74d357f44d1ccef694bbe3870caac173021515c5
+new file mode 100644
+index 0000000..4c0b1bb
+Binary files /dev/null and b/fuzz/corpora/conf/74d357f44d1ccef694bbe3870caac173021515c5 differ
+diff --git a/fuzz/corpora/conf/753cdfe9f6f842a72ab2bf4f37b73777fb2bbd3d b/fuzz/corpora/conf/753cdfe9f6f842a72ab2bf4f37b73777fb2bbd3d
+new file mode 100644
+index 0000000..7ecc739
+Binary files /dev/null and b/fuzz/corpora/conf/753cdfe9f6f842a72ab2bf4f37b73777fb2bbd3d differ
+diff --git a/fuzz/corpora/conf/759794d96ad7023f4f535bd378ef600f75472e96 b/fuzz/corpora/conf/759794d96ad7023f4f535bd378ef600f75472e96
+new file mode 100644
+index 0000000..4961a9f
+Binary files /dev/null and b/fuzz/corpora/conf/759794d96ad7023f4f535bd378ef600f75472e96 differ
+diff --git a/fuzz/corpora/conf/76560f668c1900d645d7b0a9c93d8735f721fdf6 b/fuzz/corpora/conf/76560f668c1900d645d7b0a9c93d8735f721fdf6
+new file mode 100644
+index 0000000..43be197
+Binary files /dev/null and b/fuzz/corpora/conf/76560f668c1900d645d7b0a9c93d8735f721fdf6 differ
+diff --git a/fuzz/corpora/conf/77c58f366322a120af79e12dd3e4522f446252e9 b/fuzz/corpora/conf/77c58f366322a120af79e12dd3e4522f446252e9
+new file mode 100644
+index 0000000..51b2628
+Binary files /dev/null and b/fuzz/corpora/conf/77c58f366322a120af79e12dd3e4522f446252e9 differ
+diff --git a/fuzz/corpora/conf/7885cb129a5b88324e99d804336452020d0d1b9d b/fuzz/corpora/conf/7885cb129a5b88324e99d804336452020d0d1b9d
+new file mode 100644
+index 0000000..077cba9
+Binary files /dev/null and b/fuzz/corpora/conf/7885cb129a5b88324e99d804336452020d0d1b9d differ
+diff --git a/fuzz/corpora/conf/78a07d654d410dc97763d3946e815e930a3c089b b/fuzz/corpora/conf/78a07d654d410dc97763d3946e815e930a3c089b
+new file mode 100644
+index 0000000..214391d
+Binary files /dev/null and b/fuzz/corpora/conf/78a07d654d410dc97763d3946e815e930a3c089b differ
+diff --git a/fuzz/corpora/conf/7906c2ec01167f2d13ba9a6d5b46f892e7f3ce92 b/fuzz/corpora/conf/7906c2ec01167f2d13ba9a6d5b46f892e7f3ce92
+new file mode 100644
+index 0000000..f03baf8
+Binary files /dev/null and b/fuzz/corpora/conf/7906c2ec01167f2d13ba9a6d5b46f892e7f3ce92 differ
+diff --git a/fuzz/corpora/conf/79edcdfbdb120e51ce85833db13142d7eacf6dce b/fuzz/corpora/conf/79edcdfbdb120e51ce85833db13142d7eacf6dce
+new file mode 100644
+index 0000000..9cb991d
+Binary files /dev/null and b/fuzz/corpora/conf/79edcdfbdb120e51ce85833db13142d7eacf6dce differ
+diff --git a/fuzz/corpora/conf/7b4c2b5c8dcdb415df4cc4f1a50b983c94e413e8 b/fuzz/corpora/conf/7b4c2b5c8dcdb415df4cc4f1a50b983c94e413e8
+new file mode 100644
+index 0000000..b824400
+Binary files /dev/null and b/fuzz/corpora/conf/7b4c2b5c8dcdb415df4cc4f1a50b983c94e413e8 differ
+diff --git a/fuzz/corpora/conf/7d2e3a6d9453d786efdca4b1de7629d31848b89f b/fuzz/corpora/conf/7d2e3a6d9453d786efdca4b1de7629d31848b89f
+new file mode 100644
+index 0000000..f40ef9e
+Binary files /dev/null and b/fuzz/corpora/conf/7d2e3a6d9453d786efdca4b1de7629d31848b89f differ
+diff --git a/fuzz/corpora/conf/7ecacd37fc66925d7d95bd91dc5d4eccd069c6f2 b/fuzz/corpora/conf/7ecacd37fc66925d7d95bd91dc5d4eccd069c6f2
+new file mode 100644
+index 0000000..52fc546
+Binary files /dev/null and b/fuzz/corpora/conf/7ecacd37fc66925d7d95bd91dc5d4eccd069c6f2 differ
+diff --git a/fuzz/corpora/conf/7efe16907681e363e7dec6c8d876fe9fb9b5479b b/fuzz/corpora/conf/7efe16907681e363e7dec6c8d876fe9fb9b5479b
+new file mode 100644
+index 0000000..53ef779
+Binary files /dev/null and b/fuzz/corpora/conf/7efe16907681e363e7dec6c8d876fe9fb9b5479b differ
+diff --git a/fuzz/corpora/conf/800506d2d5701894ab9ed2937c394c5e301033cc b/fuzz/corpora/conf/800506d2d5701894ab9ed2937c394c5e301033cc
+new file mode 100644
+index 0000000..a7430d1
+Binary files /dev/null and b/fuzz/corpora/conf/800506d2d5701894ab9ed2937c394c5e301033cc differ
+diff --git a/fuzz/corpora/conf/816ebeab084b18e328dcdcc77c296737ca0676db b/fuzz/corpora/conf/816ebeab084b18e328dcdcc77c296737ca0676db
+new file mode 100644
+index 0000000..fac8f99
+Binary files /dev/null and b/fuzz/corpora/conf/816ebeab084b18e328dcdcc77c296737ca0676db differ
+diff --git a/fuzz/corpora/conf/8269372b8a9e720f49c6a26bcc7bbaa1add4f171 b/fuzz/corpora/conf/8269372b8a9e720f49c6a26bcc7bbaa1add4f171
+new file mode 100644
+index 0000000..3549342
+Binary files /dev/null and b/fuzz/corpora/conf/8269372b8a9e720f49c6a26bcc7bbaa1add4f171 differ
+diff --git a/fuzz/corpora/conf/8271ba0a6a595d9f1d10fa8d33ba3cad17391dd4 b/fuzz/corpora/conf/8271ba0a6a595d9f1d10fa8d33ba3cad17391dd4
+new file mode 100644
+index 0000000..d178697
+Binary files /dev/null and b/fuzz/corpora/conf/8271ba0a6a595d9f1d10fa8d33ba3cad17391dd4 differ
+diff --git a/fuzz/corpora/conf/82ca6a93d298f1c831baa7e7cffcdde7bc0fc918 b/fuzz/corpora/conf/82ca6a93d298f1c831baa7e7cffcdde7bc0fc918
+new file mode 100644
+index 0000000..e3e361b
+Binary files /dev/null and b/fuzz/corpora/conf/82ca6a93d298f1c831baa7e7cffcdde7bc0fc918 differ
+diff --git a/fuzz/corpora/conf/8302247975355e6bffcd5c9a3d3a13bb5327cdb7 b/fuzz/corpora/conf/8302247975355e6bffcd5c9a3d3a13bb5327cdb7
+new file mode 100644
+index 0000000..7f36d21
+Binary files /dev/null and b/fuzz/corpora/conf/8302247975355e6bffcd5c9a3d3a13bb5327cdb7 differ
+diff --git a/fuzz/corpora/conf/83fa5e39243ca6b3976a28d1546c25dc47ce7881 b/fuzz/corpora/conf/83fa5e39243ca6b3976a28d1546c25dc47ce7881
+new file mode 100644
+index 0000000..bd08fe0
+Binary files /dev/null and b/fuzz/corpora/conf/83fa5e39243ca6b3976a28d1546c25dc47ce7881 differ
+diff --git a/fuzz/corpora/conf/846c8f10459bfd59f5bffce6d046cfdf132f9a7d b/fuzz/corpora/conf/846c8f10459bfd59f5bffce6d046cfdf132f9a7d
+new file mode 100644
+index 0000000..b8855ef
+Binary files /dev/null and b/fuzz/corpora/conf/846c8f10459bfd59f5bffce6d046cfdf132f9a7d differ
+diff --git a/fuzz/corpora/conf/84909f4887762b02eb4926303731b12e52b429f2 b/fuzz/corpora/conf/84909f4887762b02eb4926303731b12e52b429f2
+new file mode 100644
+index 0000000..9e4b992
+Binary files /dev/null and b/fuzz/corpora/conf/84909f4887762b02eb4926303731b12e52b429f2 differ
+diff --git a/fuzz/corpora/conf/870938e9641f2387c5b1391b2c82b7d7ad4c1d9d b/fuzz/corpora/conf/870938e9641f2387c5b1391b2c82b7d7ad4c1d9d
+new file mode 100644
+index 0000000..6c950d3
+Binary files /dev/null and b/fuzz/corpora/conf/870938e9641f2387c5b1391b2c82b7d7ad4c1d9d differ
+diff --git a/fuzz/corpora/conf/871931f6c9e58e2cc547301bf70f0b61a4e68699 b/fuzz/corpora/conf/871931f6c9e58e2cc547301bf70f0b61a4e68699
+new file mode 100644
+index 0000000..e11b453
+Binary files /dev/null and b/fuzz/corpora/conf/871931f6c9e58e2cc547301bf70f0b61a4e68699 differ
+diff --git a/fuzz/corpora/conf/8752518811ab23974effe02c38218b72ee974a64 b/fuzz/corpora/conf/8752518811ab23974effe02c38218b72ee974a64
+new file mode 100644
+index 0000000..abeb052
+Binary files /dev/null and b/fuzz/corpora/conf/8752518811ab23974effe02c38218b72ee974a64 differ
+diff --git a/fuzz/corpora/conf/87fa4341a14e6672fae8b24a0bd5de52be582799 b/fuzz/corpora/conf/87fa4341a14e6672fae8b24a0bd5de52be582799
+new file mode 100644
+index 0000000..44189fc
+Binary files /dev/null and b/fuzz/corpora/conf/87fa4341a14e6672fae8b24a0bd5de52be582799 differ
+diff --git a/fuzz/corpora/conf/881fd16f16bed72d4c0daee67aee66a2fdc4b77c b/fuzz/corpora/conf/881fd16f16bed72d4c0daee67aee66a2fdc4b77c
+new file mode 100644
+index 0000000..edddf9b
+Binary files /dev/null and b/fuzz/corpora/conf/881fd16f16bed72d4c0daee67aee66a2fdc4b77c differ
+diff --git a/fuzz/corpora/conf/89764fc4308e3d4e6f307bd4039ba83c2e193935 b/fuzz/corpora/conf/89764fc4308e3d4e6f307bd4039ba83c2e193935
+new file mode 100644
+index 0000000..3821918
+Binary files /dev/null and b/fuzz/corpora/conf/89764fc4308e3d4e6f307bd4039ba83c2e193935 differ
+diff --git a/fuzz/corpora/conf/8b1b25dae4d2b129c88927f4bec1e257f1f8cb68 b/fuzz/corpora/conf/8b1b25dae4d2b129c88927f4bec1e257f1f8cb68
+new file mode 100644
+index 0000000..5b6f362
+Binary files /dev/null and b/fuzz/corpora/conf/8b1b25dae4d2b129c88927f4bec1e257f1f8cb68 differ
+diff --git a/fuzz/corpora/conf/8baa7501533645e5b16d3eb704f442883de2f70b b/fuzz/corpora/conf/8baa7501533645e5b16d3eb704f442883de2f70b
+new file mode 100644
+index 0000000..67790b9
+Binary files /dev/null and b/fuzz/corpora/conf/8baa7501533645e5b16d3eb704f442883de2f70b differ
+diff --git a/fuzz/corpora/conf/8dd350bec61c3da42c28ab04869385a2bdd8614a b/fuzz/corpora/conf/8dd350bec61c3da42c28ab04869385a2bdd8614a
+new file mode 100644
+index 0000000..4784a9b
+Binary files /dev/null and b/fuzz/corpora/conf/8dd350bec61c3da42c28ab04869385a2bdd8614a differ
+diff --git a/fuzz/corpora/conf/8eac397fe0fbd47d624785dfde2b6617d7240e3c b/fuzz/corpora/conf/8eac397fe0fbd47d624785dfde2b6617d7240e3c
+new file mode 100644
+index 0000000..600fa59
+Binary files /dev/null and b/fuzz/corpora/conf/8eac397fe0fbd47d624785dfde2b6617d7240e3c differ
+diff --git a/fuzz/corpora/conf/8ef3dedc082532ce62063e2b9bd124e7c7878e95 b/fuzz/corpora/conf/8ef3dedc082532ce62063e2b9bd124e7c7878e95
+new file mode 100644
+index 0000000..ff26919
+Binary files /dev/null and b/fuzz/corpora/conf/8ef3dedc082532ce62063e2b9bd124e7c7878e95 differ
+diff --git a/fuzz/corpora/conf/8f402c6ca56faf0af9eb22595008a283d487d5c5 b/fuzz/corpora/conf/8f402c6ca56faf0af9eb22595008a283d487d5c5
+new file mode 100644
+index 0000000..95a6ab7
+Binary files /dev/null and b/fuzz/corpora/conf/8f402c6ca56faf0af9eb22595008a283d487d5c5 differ
+diff --git a/fuzz/corpora/conf/90f7796d512840082e997dfc8560bbdc589db441 b/fuzz/corpora/conf/90f7796d512840082e997dfc8560bbdc589db441
+new file mode 100644
+index 0000000..9600c7c
+Binary files /dev/null and b/fuzz/corpora/conf/90f7796d512840082e997dfc8560bbdc589db441 differ
+diff --git a/fuzz/corpora/conf/912a335eefeac23e4079f2f74bec398466e581a6 b/fuzz/corpora/conf/912a335eefeac23e4079f2f74bec398466e581a6
+new file mode 100644
+index 0000000..9967744
+Binary files /dev/null and b/fuzz/corpora/conf/912a335eefeac23e4079f2f74bec398466e581a6 differ
+diff --git a/fuzz/corpora/conf/9142e5d26f499780d2240d2c23843f2b3a55f058 b/fuzz/corpora/conf/9142e5d26f499780d2240d2c23843f2b3a55f058
+new file mode 100644
+index 0000000..7d62326
+Binary files /dev/null and b/fuzz/corpora/conf/9142e5d26f499780d2240d2c23843f2b3a55f058 differ
+diff --git a/fuzz/corpora/conf/9550b31643f4babcc42b52c1d5a802ee7c0d95e9 b/fuzz/corpora/conf/9550b31643f4babcc42b52c1d5a802ee7c0d95e9
+new file mode 100644
+index 0000000..20ad8e4
+Binary files /dev/null and b/fuzz/corpora/conf/9550b31643f4babcc42b52c1d5a802ee7c0d95e9 differ
+diff --git a/fuzz/corpora/conf/97726879f908ab85357bf2135ac91805386947b4 b/fuzz/corpora/conf/97726879f908ab85357bf2135ac91805386947b4
+new file mode 100644
+index 0000000..3ace819
+Binary files /dev/null and b/fuzz/corpora/conf/97726879f908ab85357bf2135ac91805386947b4 differ
+diff --git a/fuzz/corpora/conf/97f7e229043ca9c91cc3b5e09a370ce26dee5075 b/fuzz/corpora/conf/97f7e229043ca9c91cc3b5e09a370ce26dee5075
+new file mode 100644
+index 0000000..b12987e
+Binary files /dev/null and b/fuzz/corpora/conf/97f7e229043ca9c91cc3b5e09a370ce26dee5075 differ
+diff --git a/fuzz/corpora/conf/98b9cc9368017a2fddaafe876ba0566f9928e0ab b/fuzz/corpora/conf/98b9cc9368017a2fddaafe876ba0566f9928e0ab
+new file mode 100644
+index 0000000..f1c37b0
+Binary files /dev/null and b/fuzz/corpora/conf/98b9cc9368017a2fddaafe876ba0566f9928e0ab differ
+diff --git a/fuzz/corpora/conf/98be96bea6428a2ab7db5dc20f3cdf9b9621c10f b/fuzz/corpora/conf/98be96bea6428a2ab7db5dc20f3cdf9b9621c10f
+new file mode 100644
+index 0000000..c132678
+Binary files /dev/null and b/fuzz/corpora/conf/98be96bea6428a2ab7db5dc20f3cdf9b9621c10f differ
+diff --git a/fuzz/corpora/conf/992a1d4132ab9d6b4926fe7714fd152de87fb22c b/fuzz/corpora/conf/992a1d4132ab9d6b4926fe7714fd152de87fb22c
+new file mode 100644
+index 0000000..0868ae5
+Binary files /dev/null and b/fuzz/corpora/conf/992a1d4132ab9d6b4926fe7714fd152de87fb22c differ
+diff --git a/fuzz/corpora/conf/99ef6e39e35be679d5d9e8f89e1fb302747f502c b/fuzz/corpora/conf/99ef6e39e35be679d5d9e8f89e1fb302747f502c
+new file mode 100644
+index 0000000..58c478a
+Binary files /dev/null and b/fuzz/corpora/conf/99ef6e39e35be679d5d9e8f89e1fb302747f502c differ
+diff --git a/fuzz/corpora/conf/9a390db3e36257903a44e64ae3d5e932706ef0a1 b/fuzz/corpora/conf/9a390db3e36257903a44e64ae3d5e932706ef0a1
+new file mode 100644
+index 0000000..30f18be
+Binary files /dev/null and b/fuzz/corpora/conf/9a390db3e36257903a44e64ae3d5e932706ef0a1 differ
+diff --git a/fuzz/corpora/conf/9b6b45a6cdeed4481761928cfb8a71b0674a156b b/fuzz/corpora/conf/9b6b45a6cdeed4481761928cfb8a71b0674a156b
+new file mode 100644
+index 0000000..e38b27c
+Binary files /dev/null and b/fuzz/corpora/conf/9b6b45a6cdeed4481761928cfb8a71b0674a156b differ
+diff --git a/fuzz/corpora/conf/9c57b38417fdde3e92126857475da5b3ed4e2b1d b/fuzz/corpora/conf/9c57b38417fdde3e92126857475da5b3ed4e2b1d
+new file mode 100644
+index 0000000..57c1933
+Binary files /dev/null and b/fuzz/corpora/conf/9c57b38417fdde3e92126857475da5b3ed4e2b1d differ
+diff --git a/fuzz/corpora/conf/9c9e56db906233386d60f972d6883da1d73a02b1 b/fuzz/corpora/conf/9c9e56db906233386d60f972d6883da1d73a02b1
+new file mode 100644
+index 0000000..97bda9d
+Binary files /dev/null and b/fuzz/corpora/conf/9c9e56db906233386d60f972d6883da1d73a02b1 differ
+diff --git a/fuzz/corpora/conf/9ceebe3ba73b0ba1f9ef410319a184336d70c270 b/fuzz/corpora/conf/9ceebe3ba73b0ba1f9ef410319a184336d70c270
+new file mode 100644
+index 0000000..ecd8681
+Binary files /dev/null and b/fuzz/corpora/conf/9ceebe3ba73b0ba1f9ef410319a184336d70c270 differ
+diff --git a/fuzz/corpora/conf/a010727da617830d365ad089c092269eb755059e b/fuzz/corpora/conf/a010727da617830d365ad089c092269eb755059e
+new file mode 100644
+index 0000000..e39ddd8
+Binary files /dev/null and b/fuzz/corpora/conf/a010727da617830d365ad089c092269eb755059e differ
+diff --git a/fuzz/corpora/conf/a0b5d4304cbcbb5816438a8a4247f5fb8dd63cdc b/fuzz/corpora/conf/a0b5d4304cbcbb5816438a8a4247f5fb8dd63cdc
+new file mode 100644
+index 0000000..51d33e6
+Binary files /dev/null and b/fuzz/corpora/conf/a0b5d4304cbcbb5816438a8a4247f5fb8dd63cdc differ
+diff --git a/fuzz/corpora/conf/a1f2fcfbbd4be92e3168649b882e8d41add184d6 b/fuzz/corpora/conf/a1f2fcfbbd4be92e3168649b882e8d41add184d6
+new file mode 100644
+index 0000000..40bf662
+Binary files /dev/null and b/fuzz/corpora/conf/a1f2fcfbbd4be92e3168649b882e8d41add184d6 differ
+diff --git a/fuzz/corpora/conf/a2371200959ce74cb39e846f6c97577dde61a101 b/fuzz/corpora/conf/a2371200959ce74cb39e846f6c97577dde61a101
+new file mode 100644
+index 0000000..76af9e6
+Binary files /dev/null and b/fuzz/corpora/conf/a2371200959ce74cb39e846f6c97577dde61a101 differ
+diff --git a/fuzz/corpora/conf/a23c85d5dcc418e54bf7b3e76717aea7c58873df b/fuzz/corpora/conf/a23c85d5dcc418e54bf7b3e76717aea7c58873df
+new file mode 100644
+index 0000000..d66ef45
+Binary files /dev/null and b/fuzz/corpora/conf/a23c85d5dcc418e54bf7b3e76717aea7c58873df differ
+diff --git a/fuzz/corpora/conf/a3139cac94f5e3b722cfc5d52e788837d4b0c920 b/fuzz/corpora/conf/a3139cac94f5e3b722cfc5d52e788837d4b0c920
+new file mode 100644
+index 0000000..b4c678f
+Binary files /dev/null and b/fuzz/corpora/conf/a3139cac94f5e3b722cfc5d52e788837d4b0c920 differ
+diff --git a/fuzz/corpora/conf/a525caba82fd976ff9e0592b7d7185df3cffa1fd b/fuzz/corpora/conf/a525caba82fd976ff9e0592b7d7185df3cffa1fd
+new file mode 100644
+index 0000000..7d1f8a3
+Binary files /dev/null and b/fuzz/corpora/conf/a525caba82fd976ff9e0592b7d7185df3cffa1fd differ
+diff --git a/fuzz/corpora/conf/a8bf03d9fe07017a8629ec7c33be02dce87276b9 b/fuzz/corpora/conf/a8bf03d9fe07017a8629ec7c33be02dce87276b9
+new file mode 100644
+index 0000000..9099b85
+Binary files /dev/null and b/fuzz/corpora/conf/a8bf03d9fe07017a8629ec7c33be02dce87276b9 differ
+diff --git a/fuzz/corpora/conf/a9c39177c19839d3a4d905b8ae4ce390727d1ea0 b/fuzz/corpora/conf/a9c39177c19839d3a4d905b8ae4ce390727d1ea0
+new file mode 100644
+index 0000000..8c322a7
+Binary files /dev/null and b/fuzz/corpora/conf/a9c39177c19839d3a4d905b8ae4ce390727d1ea0 differ
+diff --git a/fuzz/corpora/conf/aa2b8e735c2ffc22b64650fd7e420bda9d02278a b/fuzz/corpora/conf/aa2b8e735c2ffc22b64650fd7e420bda9d02278a
+new file mode 100644
+index 0000000..7a11283
+Binary files /dev/null and b/fuzz/corpora/conf/aa2b8e735c2ffc22b64650fd7e420bda9d02278a differ
+diff --git a/fuzz/corpora/conf/aa9f87e3a327c2d20b82f50cfee62ae652e8cd8b b/fuzz/corpora/conf/aa9f87e3a327c2d20b82f50cfee62ae652e8cd8b
+new file mode 100644
+index 0000000..96472f3
+Binary files /dev/null and b/fuzz/corpora/conf/aa9f87e3a327c2d20b82f50cfee62ae652e8cd8b differ
+diff --git a/fuzz/corpora/conf/aaa3a69a807f93701f189d513b1d65862a57a1a7 b/fuzz/corpora/conf/aaa3a69a807f93701f189d513b1d65862a57a1a7
+new file mode 100644
+index 0000000..6a8bec8
+Binary files /dev/null and b/fuzz/corpora/conf/aaa3a69a807f93701f189d513b1d65862a57a1a7 differ
+diff --git a/fuzz/corpora/conf/abc2ea3c3e206c8e5134d69a8b11f590ee81c6d1 b/fuzz/corpora/conf/abc2ea3c3e206c8e5134d69a8b11f590ee81c6d1
+new file mode 100644
+index 0000000..6609e25
+Binary files /dev/null and b/fuzz/corpora/conf/abc2ea3c3e206c8e5134d69a8b11f590ee81c6d1 differ
+diff --git a/fuzz/corpora/conf/acbe61ca7553944c0c658129483c4fd5cd7be8ae b/fuzz/corpora/conf/acbe61ca7553944c0c658129483c4fd5cd7be8ae
+new file mode 100644
+index 0000000..45c8184
+Binary files /dev/null and b/fuzz/corpora/conf/acbe61ca7553944c0c658129483c4fd5cd7be8ae differ
+diff --git a/fuzz/corpora/conf/adb9319118f7e01c24d702820038b497facf18f8 b/fuzz/corpora/conf/adb9319118f7e01c24d702820038b497facf18f8
+new file mode 100644
+index 0000000..ef67676
+Binary files /dev/null and b/fuzz/corpora/conf/adb9319118f7e01c24d702820038b497facf18f8 differ
+diff --git a/fuzz/corpora/conf/aeccb9e3d3138740a2fc2dee0c2474ecfb200904 b/fuzz/corpora/conf/aeccb9e3d3138740a2fc2dee0c2474ecfb200904
+new file mode 100644
+index 0000000..abe3fc1
+Binary files /dev/null and b/fuzz/corpora/conf/aeccb9e3d3138740a2fc2dee0c2474ecfb200904 differ
+diff --git a/fuzz/corpora/conf/b0f06ff41181e12d89b44d81fd5c030d8d5e087e b/fuzz/corpora/conf/b0f06ff41181e12d89b44d81fd5c030d8d5e087e
+new file mode 100644
+index 0000000..755ddda
+Binary files /dev/null and b/fuzz/corpora/conf/b0f06ff41181e12d89b44d81fd5c030d8d5e087e differ
+diff --git a/fuzz/corpora/conf/b4a63fc7b62826aeee463beaf29f5773d342f8ac b/fuzz/corpora/conf/b4a63fc7b62826aeee463beaf29f5773d342f8ac
+new file mode 100644
+index 0000000..c07b969
+Binary files /dev/null and b/fuzz/corpora/conf/b4a63fc7b62826aeee463beaf29f5773d342f8ac differ
+diff --git a/fuzz/corpora/conf/b4ee157ca414e52dc118dfc874ddcb2f6e58642c b/fuzz/corpora/conf/b4ee157ca414e52dc118dfc874ddcb2f6e58642c
+new file mode 100644
+index 0000000..39f27b0
+Binary files /dev/null and b/fuzz/corpora/conf/b4ee157ca414e52dc118dfc874ddcb2f6e58642c differ
+diff --git a/fuzz/corpora/conf/b57cc7629c8ab28e0c3a2684a0d6bd77d1a5fa21 b/fuzz/corpora/conf/b57cc7629c8ab28e0c3a2684a0d6bd77d1a5fa21
+new file mode 100644
+index 0000000..990b9bc
+Binary files /dev/null and b/fuzz/corpora/conf/b57cc7629c8ab28e0c3a2684a0d6bd77d1a5fa21 differ
+diff --git a/fuzz/corpora/conf/b7cb7a3ff3a75ed0e308dc125f0c9e89f8b39941 b/fuzz/corpora/conf/b7cb7a3ff3a75ed0e308dc125f0c9e89f8b39941
+new file mode 100644
+index 0000000..ec2c35f
+Binary files /dev/null and b/fuzz/corpora/conf/b7cb7a3ff3a75ed0e308dc125f0c9e89f8b39941 differ
+diff --git a/fuzz/corpora/conf/b8eb2255eb1d75a04634728bd40e2c170236e016 b/fuzz/corpora/conf/b8eb2255eb1d75a04634728bd40e2c170236e016
+new file mode 100644
+index 0000000..b26fdf4
+Binary files /dev/null and b/fuzz/corpora/conf/b8eb2255eb1d75a04634728bd40e2c170236e016 differ
+diff --git a/fuzz/corpora/conf/b95e7ca2baf215e140bd4f8493f55fa09256d975 b/fuzz/corpora/conf/b95e7ca2baf215e140bd4f8493f55fa09256d975
+new file mode 100644
+index 0000000..84c2b6a
+Binary files /dev/null and b/fuzz/corpora/conf/b95e7ca2baf215e140bd4f8493f55fa09256d975 differ
+diff --git a/fuzz/corpora/conf/ba1580299c94c696b5f35d12cf1fbdaca271f0d3 b/fuzz/corpora/conf/ba1580299c94c696b5f35d12cf1fbdaca271f0d3
+new file mode 100644
+index 0000000..188fd53
+Binary files /dev/null and b/fuzz/corpora/conf/ba1580299c94c696b5f35d12cf1fbdaca271f0d3 differ
+diff --git a/fuzz/corpora/conf/bafd7ad1287780eda3f1c1467b0aefede4c00d44 b/fuzz/corpora/conf/bafd7ad1287780eda3f1c1467b0aefede4c00d44
+new file mode 100644
+index 0000000..e9ba9e1
+Binary files /dev/null and b/fuzz/corpora/conf/bafd7ad1287780eda3f1c1467b0aefede4c00d44 differ
+diff --git a/fuzz/corpora/conf/bcbb6d0dff89387931c8766d7a48684cf3f03d43 b/fuzz/corpora/conf/bcbb6d0dff89387931c8766d7a48684cf3f03d43
+new file mode 100644
+index 0000000..745fee9
+Binary files /dev/null and b/fuzz/corpora/conf/bcbb6d0dff89387931c8766d7a48684cf3f03d43 differ
+diff --git a/fuzz/corpora/conf/bed2977f4e308333b5c4ec87688266039dc907df b/fuzz/corpora/conf/bed2977f4e308333b5c4ec87688266039dc907df
+new file mode 100644
+index 0000000..4bf7806
+Binary files /dev/null and b/fuzz/corpora/conf/bed2977f4e308333b5c4ec87688266039dc907df differ
+diff --git a/fuzz/corpora/conf/bfb326e7aa0df5ef957f925f31d66206e18b2e3e b/fuzz/corpora/conf/bfb326e7aa0df5ef957f925f31d66206e18b2e3e
+new file mode 100644
+index 0000000..676817c
+Binary files /dev/null and b/fuzz/corpora/conf/bfb326e7aa0df5ef957f925f31d66206e18b2e3e differ
+diff --git a/fuzz/corpora/conf/c44ec749619d6dd4f4e9c76b06bc2e4b0bee7aa1 b/fuzz/corpora/conf/c44ec749619d6dd4f4e9c76b06bc2e4b0bee7aa1
+new file mode 100644
+index 0000000..2797b86
+Binary files /dev/null and b/fuzz/corpora/conf/c44ec749619d6dd4f4e9c76b06bc2e4b0bee7aa1 differ
+diff --git a/fuzz/corpora/conf/c65602bb37160c00abf041d1aac1f4f53d24d5a5 b/fuzz/corpora/conf/c65602bb37160c00abf041d1aac1f4f53d24d5a5
+new file mode 100644
+index 0000000..9f1ac06
+Binary files /dev/null and b/fuzz/corpora/conf/c65602bb37160c00abf041d1aac1f4f53d24d5a5 differ
+diff --git a/fuzz/corpora/conf/c66f787b184283a1aaf49e4829c597a5ccbdc1cb b/fuzz/corpora/conf/c66f787b184283a1aaf49e4829c597a5ccbdc1cb
+new file mode 100644
+index 0000000..7b42a6f
+Binary files /dev/null and b/fuzz/corpora/conf/c66f787b184283a1aaf49e4829c597a5ccbdc1cb differ
+diff --git a/fuzz/corpora/conf/c91760d6340b79fc01a0bc223f22b167cf664cb1 b/fuzz/corpora/conf/c91760d6340b79fc01a0bc223f22b167cf664cb1
+new file mode 100644
+index 0000000..96f434b
+Binary files /dev/null and b/fuzz/corpora/conf/c91760d6340b79fc01a0bc223f22b167cf664cb1 differ
+diff --git a/fuzz/corpora/conf/c97e80076776df8ab0f6551eae940c7851e7245a b/fuzz/corpora/conf/c97e80076776df8ab0f6551eae940c7851e7245a
+new file mode 100644
+index 0000000..142e3ef
+Binary files /dev/null and b/fuzz/corpora/conf/c97e80076776df8ab0f6551eae940c7851e7245a differ
+diff --git a/fuzz/corpora/conf/c98227d1cb0e4747ac0f91413a572b4c452b4f61 b/fuzz/corpora/conf/c98227d1cb0e4747ac0f91413a572b4c452b4f61
+new file mode 100644
+index 0000000..934d3d9
+Binary files /dev/null and b/fuzz/corpora/conf/c98227d1cb0e4747ac0f91413a572b4c452b4f61 differ
+diff --git a/fuzz/corpora/conf/cb1494c5154997649183e46688b9759da5fad42b b/fuzz/corpora/conf/cb1494c5154997649183e46688b9759da5fad42b
+new file mode 100644
+index 0000000..b4d6df2
+Binary files /dev/null and b/fuzz/corpora/conf/cb1494c5154997649183e46688b9759da5fad42b differ
+diff --git a/fuzz/corpora/conf/cc2d3520b7510fadc44d18fb9b1d769687470994 b/fuzz/corpora/conf/cc2d3520b7510fadc44d18fb9b1d769687470994
+new file mode 100644
+index 0000000..899bb5e
+Binary files /dev/null and b/fuzz/corpora/conf/cc2d3520b7510fadc44d18fb9b1d769687470994 differ
+diff --git a/fuzz/corpora/conf/cc3f202d0871f1b36e33f3b08c0b96f7ab3ab633 b/fuzz/corpora/conf/cc3f202d0871f1b36e33f3b08c0b96f7ab3ab633
+new file mode 100644
+index 0000000..5c26dcc
+Binary files /dev/null and b/fuzz/corpora/conf/cc3f202d0871f1b36e33f3b08c0b96f7ab3ab633 differ
+diff --git a/fuzz/corpora/conf/cd0a5a47144c4e7ab62ce0b43690a4eafcc5ffa7 b/fuzz/corpora/conf/cd0a5a47144c4e7ab62ce0b43690a4eafcc5ffa7
+new file mode 100644
+index 0000000..2afeb7f
+Binary files /dev/null and b/fuzz/corpora/conf/cd0a5a47144c4e7ab62ce0b43690a4eafcc5ffa7 differ
+diff --git a/fuzz/corpora/conf/cdecf521f7c7876d9b07cb6c04aa901d20a6f234 b/fuzz/corpora/conf/cdecf521f7c7876d9b07cb6c04aa901d20a6f234
+new file mode 100644
+index 0000000..69f66b5
+Binary files /dev/null and b/fuzz/corpora/conf/cdecf521f7c7876d9b07cb6c04aa901d20a6f234 differ
+diff --git a/fuzz/corpora/conf/cf009d29d63b4afd898fecd32ec55b3ca3f1d86c b/fuzz/corpora/conf/cf009d29d63b4afd898fecd32ec55b3ca3f1d86c
+new file mode 100644
+index 0000000..0bbedb6
+Binary files /dev/null and b/fuzz/corpora/conf/cf009d29d63b4afd898fecd32ec55b3ca3f1d86c differ
+diff --git a/fuzz/corpora/conf/cf33f672d0a9f23c0d2343b1ef8dfed14c1ac1d9 b/fuzz/corpora/conf/cf33f672d0a9f23c0d2343b1ef8dfed14c1ac1d9
+new file mode 100644
+index 0000000..9ca3aab
+Binary files /dev/null and b/fuzz/corpora/conf/cf33f672d0a9f23c0d2343b1ef8dfed14c1ac1d9 differ
+diff --git a/fuzz/corpora/conf/cf5125354d626ab782f3783196850473d41cc2eb b/fuzz/corpora/conf/cf5125354d626ab782f3783196850473d41cc2eb
+new file mode 100644
+index 0000000..7dbe7dd
+Binary files /dev/null and b/fuzz/corpora/conf/cf5125354d626ab782f3783196850473d41cc2eb differ
+diff --git a/fuzz/corpora/conf/cf772f067a3872fcdd1272e18c40bd3e0e954572 b/fuzz/corpora/conf/cf772f067a3872fcdd1272e18c40bd3e0e954572
+new file mode 100644
+index 0000000..52d41d1
+Binary files /dev/null and b/fuzz/corpora/conf/cf772f067a3872fcdd1272e18c40bd3e0e954572 differ
+diff --git a/fuzz/corpora/conf/cfdd04d741257e6dd5c18cb23ac7fca60a944f6b b/fuzz/corpora/conf/cfdd04d741257e6dd5c18cb23ac7fca60a944f6b
+new file mode 100644
+index 0000000..92638ec
+Binary files /dev/null and b/fuzz/corpora/conf/cfdd04d741257e6dd5c18cb23ac7fca60a944f6b differ
+diff --git a/fuzz/corpora/conf/d09122c3030f33f4896bd4a6b820b8d472ab10bb b/fuzz/corpora/conf/d09122c3030f33f4896bd4a6b820b8d472ab10bb
+new file mode 100644
+index 0000000..bd3f633
+Binary files /dev/null and b/fuzz/corpora/conf/d09122c3030f33f4896bd4a6b820b8d472ab10bb differ
+diff --git a/fuzz/corpora/conf/d123ad11a86cc0f5ceb9aa3d117ec902e15857fb b/fuzz/corpora/conf/d123ad11a86cc0f5ceb9aa3d117ec902e15857fb
+new file mode 100644
+index 0000000..4cf60d5
+Binary files /dev/null and b/fuzz/corpora/conf/d123ad11a86cc0f5ceb9aa3d117ec902e15857fb differ
+diff --git a/fuzz/corpora/conf/d440a8895f240e5d9031b06e9352e4a3a76e04fc b/fuzz/corpora/conf/d440a8895f240e5d9031b06e9352e4a3a76e04fc
+new file mode 100644
+index 0000000..68f5480
+Binary files /dev/null and b/fuzz/corpora/conf/d440a8895f240e5d9031b06e9352e4a3a76e04fc differ
+diff --git a/fuzz/corpora/conf/d537869d65fa5d80c81deec73dfc9558ee8a257e b/fuzz/corpora/conf/d537869d65fa5d80c81deec73dfc9558ee8a257e
+new file mode 100644
+index 0000000..a366a5e
+Binary files /dev/null and b/fuzz/corpora/conf/d537869d65fa5d80c81deec73dfc9558ee8a257e differ
+diff --git a/fuzz/corpora/conf/d579e70768f3384771716436a35b4fc165c2cd2c b/fuzz/corpora/conf/d579e70768f3384771716436a35b4fc165c2cd2c
+new file mode 100644
+index 0000000..64e1dc8
+Binary files /dev/null and b/fuzz/corpora/conf/d579e70768f3384771716436a35b4fc165c2cd2c differ
+diff --git a/fuzz/corpora/conf/d6d0dc412a9b64966118516ac9d174bfd9576c5a b/fuzz/corpora/conf/d6d0dc412a9b64966118516ac9d174bfd9576c5a
+new file mode 100644
+index 0000000..176c225
+Binary files /dev/null and b/fuzz/corpora/conf/d6d0dc412a9b64966118516ac9d174bfd9576c5a differ
+diff --git a/fuzz/corpora/conf/d80ab759b8c782658beae04ae904c1239efd99fe b/fuzz/corpora/conf/d80ab759b8c782658beae04ae904c1239efd99fe
+new file mode 100644
+index 0000000..209c3f3
+Binary files /dev/null and b/fuzz/corpora/conf/d80ab759b8c782658beae04ae904c1239efd99fe differ
+diff --git a/fuzz/corpora/conf/d9816eb8dc4127850a18e1ea2853f04b40010ee3 b/fuzz/corpora/conf/d9816eb8dc4127850a18e1ea2853f04b40010ee3
+new file mode 100644
+index 0000000..144d111
+Binary files /dev/null and b/fuzz/corpora/conf/d9816eb8dc4127850a18e1ea2853f04b40010ee3 differ
+diff --git a/fuzz/corpora/conf/db54f027f58cbb10e7ec5db3d3cbf09ee2b3f5be b/fuzz/corpora/conf/db54f027f58cbb10e7ec5db3d3cbf09ee2b3f5be
+new file mode 100644
+index 0000000..c4a50c4
+Binary files /dev/null and b/fuzz/corpora/conf/db54f027f58cbb10e7ec5db3d3cbf09ee2b3f5be differ
+diff --git a/fuzz/corpora/conf/db87e25062aec29e8256cc57f76283393edc4eb9 b/fuzz/corpora/conf/db87e25062aec29e8256cc57f76283393edc4eb9
+new file mode 100644
+index 0000000..c2316b5
+Binary files /dev/null and b/fuzz/corpora/conf/db87e25062aec29e8256cc57f76283393edc4eb9 differ
+diff --git a/fuzz/corpora/conf/dbb87028ac6abc4544dec3743bd87bee3255831a b/fuzz/corpora/conf/dbb87028ac6abc4544dec3743bd87bee3255831a
+new file mode 100644
+index 0000000..ac3e674
+Binary files /dev/null and b/fuzz/corpora/conf/dbb87028ac6abc4544dec3743bd87bee3255831a differ
+diff --git a/fuzz/corpora/conf/dd42b5e743e22e25963935492d1ac67aa074483d b/fuzz/corpora/conf/dd42b5e743e22e25963935492d1ac67aa074483d
+new file mode 100644
+index 0000000..2474a2a
+Binary files /dev/null and b/fuzz/corpora/conf/dd42b5e743e22e25963935492d1ac67aa074483d differ
+diff --git a/fuzz/corpora/conf/e1996cfb7a3dd03e1ea52d34eec90f487075c396 b/fuzz/corpora/conf/e1996cfb7a3dd03e1ea52d34eec90f487075c396
+new file mode 100644
+index 0000000..fc74436
+Binary files /dev/null and b/fuzz/corpora/conf/e1996cfb7a3dd03e1ea52d34eec90f487075c396 differ
+diff --git a/fuzz/corpora/conf/e2e5b9e7f5d3d9b3d3fea4601e66fc1db067dbe7 b/fuzz/corpora/conf/e2e5b9e7f5d3d9b3d3fea4601e66fc1db067dbe7
+new file mode 100644
+index 0000000..360a9e8
+Binary files /dev/null and b/fuzz/corpora/conf/e2e5b9e7f5d3d9b3d3fea4601e66fc1db067dbe7 differ
+diff --git a/fuzz/corpora/conf/e4bb472cf4dcb1d8a555661a2a6bac3a8360b826 b/fuzz/corpora/conf/e4bb472cf4dcb1d8a555661a2a6bac3a8360b826
+new file mode 100644
+index 0000000..2a3d48e
+Binary files /dev/null and b/fuzz/corpora/conf/e4bb472cf4dcb1d8a555661a2a6bac3a8360b826 differ
+diff --git a/fuzz/corpora/conf/e53054b516bd051e210c09119f4aa8707e063c91 b/fuzz/corpora/conf/e53054b516bd051e210c09119f4aa8707e063c91
+new file mode 100644
+index 0000000..3a987f2
+Binary files /dev/null and b/fuzz/corpora/conf/e53054b516bd051e210c09119f4aa8707e063c91 differ
+diff --git a/fuzz/corpora/conf/e593aee956a74713e78b363092c17948ecafe5a7 b/fuzz/corpora/conf/e593aee956a74713e78b363092c17948ecafe5a7
+new file mode 100644
+index 0000000..49dd68a
+Binary files /dev/null and b/fuzz/corpora/conf/e593aee956a74713e78b363092c17948ecafe5a7 differ
+diff --git a/fuzz/corpora/conf/e8f7de3d48c5f3f6474ad86ee6f23612bd352376 b/fuzz/corpora/conf/e8f7de3d48c5f3f6474ad86ee6f23612bd352376
+new file mode 100644
+index 0000000..823ce9c
+Binary files /dev/null and b/fuzz/corpora/conf/e8f7de3d48c5f3f6474ad86ee6f23612bd352376 differ
+diff --git a/fuzz/corpora/conf/e9197a55ea4a9d27eb2d6116a74ea18aae61ef16 b/fuzz/corpora/conf/e9197a55ea4a9d27eb2d6116a74ea18aae61ef16
+new file mode 100644
+index 0000000..923d41f
+Binary files /dev/null and b/fuzz/corpora/conf/e9197a55ea4a9d27eb2d6116a74ea18aae61ef16 differ
+diff --git a/fuzz/corpora/conf/e925b1f89ef44ad20358082c6150c4f104ddb8e0 b/fuzz/corpora/conf/e925b1f89ef44ad20358082c6150c4f104ddb8e0
+new file mode 100644
+index 0000000..e0c7ca5
+Binary files /dev/null and b/fuzz/corpora/conf/e925b1f89ef44ad20358082c6150c4f104ddb8e0 differ
+diff --git a/fuzz/corpora/conf/ea1fc46400dd2e98ac17d63e60410c7acfa129de b/fuzz/corpora/conf/ea1fc46400dd2e98ac17d63e60410c7acfa129de
+new file mode 100644
+index 0000000..6139ec9
+Binary files /dev/null and b/fuzz/corpora/conf/ea1fc46400dd2e98ac17d63e60410c7acfa129de differ
+diff --git a/fuzz/corpora/conf/eb28f35b84ae5e1dbf77daf8899d994863c3f641 b/fuzz/corpora/conf/eb28f35b84ae5e1dbf77daf8899d994863c3f641
+new file mode 100644
+index 0000000..825ac2d
+Binary files /dev/null and b/fuzz/corpora/conf/eb28f35b84ae5e1dbf77daf8899d994863c3f641 differ
+diff --git a/fuzz/corpora/conf/ec0f773bb9681f296a06fd86bfd02e2dee7c2688 b/fuzz/corpora/conf/ec0f773bb9681f296a06fd86bfd02e2dee7c2688
+new file mode 100644
+index 0000000..978dbf1
+Binary files /dev/null and b/fuzz/corpora/conf/ec0f773bb9681f296a06fd86bfd02e2dee7c2688 differ
+diff --git a/fuzz/corpora/conf/edb270450fa97d63d5a637074e59cb2b229d01bd b/fuzz/corpora/conf/edb270450fa97d63d5a637074e59cb2b229d01bd
+new file mode 100644
+index 0000000..ea82af4
+Binary files /dev/null and b/fuzz/corpora/conf/edb270450fa97d63d5a637074e59cb2b229d01bd differ
+diff --git a/fuzz/corpora/conf/eeba4c0e1e3c86edce7d070d3b2ef4c3a34dc2d8 b/fuzz/corpora/conf/eeba4c0e1e3c86edce7d070d3b2ef4c3a34dc2d8
+new file mode 100644
+index 0000000..3dc621b
+Binary files /dev/null and b/fuzz/corpora/conf/eeba4c0e1e3c86edce7d070d3b2ef4c3a34dc2d8 differ
+diff --git a/fuzz/corpora/conf/eececa30b66fdb137936cc508ed1e55aee0d7c36 b/fuzz/corpora/conf/eececa30b66fdb137936cc508ed1e55aee0d7c36
+new file mode 100644
+index 0000000..65a23fd
+Binary files /dev/null and b/fuzz/corpora/conf/eececa30b66fdb137936cc508ed1e55aee0d7c36 differ
+diff --git a/fuzz/corpora/conf/f08254978ad9d3c7b9eb27124efffec8feb53d3c b/fuzz/corpora/conf/f08254978ad9d3c7b9eb27124efffec8feb53d3c
+new file mode 100644
+index 0000000..c9dd4a3
+Binary files /dev/null and b/fuzz/corpora/conf/f08254978ad9d3c7b9eb27124efffec8feb53d3c differ
+diff --git a/fuzz/corpora/conf/f0dee9660c3ddb54c4c865d7223cdfe9bc56f4c9 b/fuzz/corpora/conf/f0dee9660c3ddb54c4c865d7223cdfe9bc56f4c9
+new file mode 100644
+index 0000000..74d301d
+Binary files /dev/null and b/fuzz/corpora/conf/f0dee9660c3ddb54c4c865d7223cdfe9bc56f4c9 differ
+diff --git a/fuzz/corpora/conf/f3a8121e88caf942b2dcac606bc385a13c18850a b/fuzz/corpora/conf/f3a8121e88caf942b2dcac606bc385a13c18850a
+new file mode 100644
+index 0000000..6a445fd
+Binary files /dev/null and b/fuzz/corpora/conf/f3a8121e88caf942b2dcac606bc385a13c18850a differ
+diff --git a/fuzz/corpora/conf/f3f388fcf146d2bcafcfc96e6a8218668d501014 b/fuzz/corpora/conf/f3f388fcf146d2bcafcfc96e6a8218668d501014
+new file mode 100644
+index 0000000..66b6e31
+Binary files /dev/null and b/fuzz/corpora/conf/f3f388fcf146d2bcafcfc96e6a8218668d501014 differ
+diff --git a/fuzz/corpora/conf/f5f5f78d95d53a2256356c3f7d479fec3a2927d6 b/fuzz/corpora/conf/f5f5f78d95d53a2256356c3f7d479fec3a2927d6
+new file mode 100644
+index 0000000..bde49b4
+Binary files /dev/null and b/fuzz/corpora/conf/f5f5f78d95d53a2256356c3f7d479fec3a2927d6 differ
+diff --git a/fuzz/corpora/conf/f66396c9abf4c94d631fd99c65ad36f85d665d80 b/fuzz/corpora/conf/f66396c9abf4c94d631fd99c65ad36f85d665d80
+new file mode 100644
+index 0000000..07070eb
+Binary files /dev/null and b/fuzz/corpora/conf/f66396c9abf4c94d631fd99c65ad36f85d665d80 differ
+diff --git a/fuzz/corpora/conf/f73524921de0d86388da453d5c78cc3ef25985bb b/fuzz/corpora/conf/f73524921de0d86388da453d5c78cc3ef25985bb
+new file mode 100644
+index 0000000..1639112
+Binary files /dev/null and b/fuzz/corpora/conf/f73524921de0d86388da453d5c78cc3ef25985bb differ
+diff --git a/fuzz/corpora/conf/f78ca9d423edf24c1b509373867ea0aa5d841a61 b/fuzz/corpora/conf/f78ca9d423edf24c1b509373867ea0aa5d841a61
+new file mode 100644
+index 0000000..e30c713
+Binary files /dev/null and b/fuzz/corpora/conf/f78ca9d423edf24c1b509373867ea0aa5d841a61 differ
+diff --git a/fuzz/corpora/conf/f9b49fe6e611d05a851f1cdaaf14de2d4db4953a b/fuzz/corpora/conf/f9b49fe6e611d05a851f1cdaaf14de2d4db4953a
+new file mode 100644
+index 0000000..1ce24ce
+Binary files /dev/null and b/fuzz/corpora/conf/f9b49fe6e611d05a851f1cdaaf14de2d4db4953a differ
+diff --git a/fuzz/corpora/conf/f9b9b5d90f5bbfd0f24f9f236d6e4eeb881e65af b/fuzz/corpora/conf/f9b9b5d90f5bbfd0f24f9f236d6e4eeb881e65af
+new file mode 100644
+index 0000000..abfc80d
+Binary files /dev/null and b/fuzz/corpora/conf/f9b9b5d90f5bbfd0f24f9f236d6e4eeb881e65af differ
+diff --git a/fuzz/corpora/conf/fa31b2321b6bcf6cc34604b96a731623a9d12c53 b/fuzz/corpora/conf/fa31b2321b6bcf6cc34604b96a731623a9d12c53
+new file mode 100644
+index 0000000..f915510
+Binary files /dev/null and b/fuzz/corpora/conf/fa31b2321b6bcf6cc34604b96a731623a9d12c53 differ
+diff --git a/fuzz/corpora/conf/fd15a2492c5b5215a29489db423b414cdc41a16b b/fuzz/corpora/conf/fd15a2492c5b5215a29489db423b414cdc41a16b
+new file mode 100644
+index 0000000..9b1c82a
+Binary files /dev/null and b/fuzz/corpora/conf/fd15a2492c5b5215a29489db423b414cdc41a16b differ
+diff --git a/fuzz/corpora/conf/fde02f8a28ee8eeb78c6845f699613030637550d b/fuzz/corpora/conf/fde02f8a28ee8eeb78c6845f699613030637550d
+new file mode 100644
+index 0000000..ed390b1
+Binary files /dev/null and b/fuzz/corpora/conf/fde02f8a28ee8eeb78c6845f699613030637550d differ
+diff --git a/fuzz/corpora/conf/fdf04fc6b41fe9e852f737ade70f3ec56a0014ee b/fuzz/corpora/conf/fdf04fc6b41fe9e852f737ade70f3ec56a0014ee
+new file mode 100644
+index 0000000..0adfeaa
+Binary files /dev/null and b/fuzz/corpora/conf/fdf04fc6b41fe9e852f737ade70f3ec56a0014ee differ
+diff --git a/fuzz/corpora/crl/006837abf283c1dc7a8cd828f15c76a04dae1e69 b/fuzz/corpora/crl/006837abf283c1dc7a8cd828f15c76a04dae1e69
+new file mode 100644
+index 0000000..56a6c16
+Binary files /dev/null and b/fuzz/corpora/crl/006837abf283c1dc7a8cd828f15c76a04dae1e69 differ
+diff --git a/fuzz/corpora/crl/0271791aaf4470d9dd8a7e73a276bcf89656d28f b/fuzz/corpora/crl/0271791aaf4470d9dd8a7e73a276bcf89656d28f
+new file mode 100644
+index 0000000..c8fe35a
+Binary files /dev/null and b/fuzz/corpora/crl/0271791aaf4470d9dd8a7e73a276bcf89656d28f differ
+diff --git a/fuzz/corpora/crl/033e3973c4e1f4eb94860a814bccb5a7fa69f992 b/fuzz/corpora/crl/033e3973c4e1f4eb94860a814bccb5a7fa69f992
+new file mode 100644
+index 0000000..b234e1b
+Binary files /dev/null and b/fuzz/corpora/crl/033e3973c4e1f4eb94860a814bccb5a7fa69f992 differ
+diff --git a/fuzz/corpora/crl/03b23fad5e45c9c6c3e4c9f01fe9f921111e968a b/fuzz/corpora/crl/03b23fad5e45c9c6c3e4c9f01fe9f921111e968a
+new file mode 100644
+index 0000000..19661ee
+Binary files /dev/null and b/fuzz/corpora/crl/03b23fad5e45c9c6c3e4c9f01fe9f921111e968a differ
+diff --git a/fuzz/corpora/crl/03f308d20986ae70cfef84e25abec9401b780b93 b/fuzz/corpora/crl/03f308d20986ae70cfef84e25abec9401b780b93
+new file mode 100644
+index 0000000..9a6a911
+Binary files /dev/null and b/fuzz/corpora/crl/03f308d20986ae70cfef84e25abec9401b780b93 differ
+diff --git a/fuzz/corpora/crl/0427211c2c66fd8f878de01478ff220d67241104 b/fuzz/corpora/crl/0427211c2c66fd8f878de01478ff220d67241104
+new file mode 100644
+index 0000000..56c20c7
+Binary files /dev/null and b/fuzz/corpora/crl/0427211c2c66fd8f878de01478ff220d67241104 differ
+diff --git a/fuzz/corpora/crl/043fe4d78e826deb41c8b7da8bedee849a758670 b/fuzz/corpora/crl/043fe4d78e826deb41c8b7da8bedee849a758670
+new file mode 100644
+index 0000000..3aa43f2
+Binary files /dev/null and b/fuzz/corpora/crl/043fe4d78e826deb41c8b7da8bedee849a758670 differ
+diff --git a/fuzz/corpora/crl/04b0f5f9c1dba2d7a8a5740a85369c4a33c08163 b/fuzz/corpora/crl/04b0f5f9c1dba2d7a8a5740a85369c4a33c08163
+new file mode 100644
+index 0000000..9a2bcd0
+Binary files /dev/null and b/fuzz/corpora/crl/04b0f5f9c1dba2d7a8a5740a85369c4a33c08163 differ
+diff --git a/fuzz/corpora/crl/057b0698fd7a02fdd46e34ddbb34a023854246a6 b/fuzz/corpora/crl/057b0698fd7a02fdd46e34ddbb34a023854246a6
+new file mode 100644
+index 0000000..205df7d
+Binary files /dev/null and b/fuzz/corpora/crl/057b0698fd7a02fdd46e34ddbb34a023854246a6 differ
+diff --git a/fuzz/corpora/crl/075f71fc201530c9eb1a9b813afc7d74d18c989b b/fuzz/corpora/crl/075f71fc201530c9eb1a9b813afc7d74d18c989b
+new file mode 100644
+index 0000000..8083ab0
+Binary files /dev/null and b/fuzz/corpora/crl/075f71fc201530c9eb1a9b813afc7d74d18c989b differ
+diff --git a/fuzz/corpora/crl/0784e298b4eff0ed2d867b4dc4069a4d0d16e10a b/fuzz/corpora/crl/0784e298b4eff0ed2d867b4dc4069a4d0d16e10a
+new file mode 100644
+index 0000000..64e3b1a
+Binary files /dev/null and b/fuzz/corpora/crl/0784e298b4eff0ed2d867b4dc4069a4d0d16e10a differ
+diff --git a/fuzz/corpora/crl/07eb363a10cefd0bdb7612450830090e7eae585b b/fuzz/corpora/crl/07eb363a10cefd0bdb7612450830090e7eae585b
+new file mode 100644
+index 0000000..1ac72a7
+Binary files /dev/null and b/fuzz/corpora/crl/07eb363a10cefd0bdb7612450830090e7eae585b differ
+diff --git a/fuzz/corpora/crl/0986878474de377d637a8bc65c6616a6b7bf2faa b/fuzz/corpora/crl/0986878474de377d637a8bc65c6616a6b7bf2faa
+new file mode 100644
+index 0000000..b655dae
+Binary files /dev/null and b/fuzz/corpora/crl/0986878474de377d637a8bc65c6616a6b7bf2faa differ
+diff --git a/fuzz/corpora/crl/09acda81cc290dd019e6602fc8c150bde6fa866a b/fuzz/corpora/crl/09acda81cc290dd019e6602fc8c150bde6fa866a
+new file mode 100644
+index 0000000..cecaa43
+Binary files /dev/null and b/fuzz/corpora/crl/09acda81cc290dd019e6602fc8c150bde6fa866a differ
+diff --git a/fuzz/corpora/crl/09cf29fe5b9c31b272780c9ef81fb3847fdc084d b/fuzz/corpora/crl/09cf29fe5b9c31b272780c9ef81fb3847fdc084d
+new file mode 100644
+index 0000000..c4f422b
+Binary files /dev/null and b/fuzz/corpora/crl/09cf29fe5b9c31b272780c9ef81fb3847fdc084d differ
+diff --git a/fuzz/corpora/crl/09d254a9f5f6c07c40154f130b0d1872c662cefb b/fuzz/corpora/crl/09d254a9f5f6c07c40154f130b0d1872c662cefb
+new file mode 100644
+index 0000000..b7bbb8e
+Binary files /dev/null and b/fuzz/corpora/crl/09d254a9f5f6c07c40154f130b0d1872c662cefb differ
+diff --git a/fuzz/corpora/crl/0b3e7d7465db30c1fb97ca0e6a6234a465759c0e b/fuzz/corpora/crl/0b3e7d7465db30c1fb97ca0e6a6234a465759c0e
+new file mode 100644
+index 0000000..1311a77
+Binary files /dev/null and b/fuzz/corpora/crl/0b3e7d7465db30c1fb97ca0e6a6234a465759c0e differ
+diff --git a/fuzz/corpora/crl/0c2d1c94c0655bd4e9adacb3b4d2826196e9cbf8 b/fuzz/corpora/crl/0c2d1c94c0655bd4e9adacb3b4d2826196e9cbf8
+new file mode 100644
+index 0000000..8925d01
+Binary files /dev/null and b/fuzz/corpora/crl/0c2d1c94c0655bd4e9adacb3b4d2826196e9cbf8 differ
+diff --git a/fuzz/corpora/crl/0c5a4aec9b9fcd52e73c4178016478ef304640e0 b/fuzz/corpora/crl/0c5a4aec9b9fcd52e73c4178016478ef304640e0
+new file mode 100644
+index 0000000..a8436f0
+Binary files /dev/null and b/fuzz/corpora/crl/0c5a4aec9b9fcd52e73c4178016478ef304640e0 differ
+diff --git a/fuzz/corpora/crl/0c6094b7a741dee6ac83983a55793d0ece9e6ff8 b/fuzz/corpora/crl/0c6094b7a741dee6ac83983a55793d0ece9e6ff8
+new file mode 100644
+index 0000000..7a770b2
+Binary files /dev/null and b/fuzz/corpora/crl/0c6094b7a741dee6ac83983a55793d0ece9e6ff8 differ
+diff --git a/fuzz/corpora/crl/0ca99d4d76c895ad281a0069b97bd8905a25410a b/fuzz/corpora/crl/0ca99d4d76c895ad281a0069b97bd8905a25410a
+new file mode 100644
+index 0000000..59b3091
+Binary files /dev/null and b/fuzz/corpora/crl/0ca99d4d76c895ad281a0069b97bd8905a25410a differ
+diff --git a/fuzz/corpora/crl/0cf1b9e3f80ecc4bf9191279c7bdd5835dae8ec6 b/fuzz/corpora/crl/0cf1b9e3f80ecc4bf9191279c7bdd5835dae8ec6
+new file mode 100644
+index 0000000..22f09af
+Binary files /dev/null and b/fuzz/corpora/crl/0cf1b9e3f80ecc4bf9191279c7bdd5835dae8ec6 differ
+diff --git a/fuzz/corpora/crl/0d7c173e3a43b9626f4ea09cab78899c2db6227d b/fuzz/corpora/crl/0d7c173e3a43b9626f4ea09cab78899c2db6227d
+new file mode 100644
+index 0000000..a147e5e
+Binary files /dev/null and b/fuzz/corpora/crl/0d7c173e3a43b9626f4ea09cab78899c2db6227d differ
+diff --git a/fuzz/corpora/crl/0dfb4d8586c328e7f9e76cf77495544693c545b8 b/fuzz/corpora/crl/0dfb4d8586c328e7f9e76cf77495544693c545b8
+new file mode 100644
+index 0000000..15f91d2
+Binary files /dev/null and b/fuzz/corpora/crl/0dfb4d8586c328e7f9e76cf77495544693c545b8 differ
+diff --git a/fuzz/corpora/crl/0e3660fda361674c1c6bd1e4d0342da86fa0c57a b/fuzz/corpora/crl/0e3660fda361674c1c6bd1e4d0342da86fa0c57a
+new file mode 100644
+index 0000000..718fd94
+Binary files /dev/null and b/fuzz/corpora/crl/0e3660fda361674c1c6bd1e4d0342da86fa0c57a differ
+diff --git a/fuzz/corpora/crl/0e9e4de5e0e4627b1ae265214fb39f7db72d6944 b/fuzz/corpora/crl/0e9e4de5e0e4627b1ae265214fb39f7db72d6944
+new file mode 100644
+index 0000000..130f20d
+Binary files /dev/null and b/fuzz/corpora/crl/0e9e4de5e0e4627b1ae265214fb39f7db72d6944 differ
+diff --git a/fuzz/corpora/crl/0eff5714e4af891821ca29a4f94e07a1872517b5 b/fuzz/corpora/crl/0eff5714e4af891821ca29a4f94e07a1872517b5
+new file mode 100644
+index 0000000..222d11e
+Binary files /dev/null and b/fuzz/corpora/crl/0eff5714e4af891821ca29a4f94e07a1872517b5 differ
+diff --git a/fuzz/corpora/crl/0fbc73a53cb4f5558bd4966e94ac476f20cb6b15 b/fuzz/corpora/crl/0fbc73a53cb4f5558bd4966e94ac476f20cb6b15
+new file mode 100644
+index 0000000..d3a3f19
+Binary files /dev/null and b/fuzz/corpora/crl/0fbc73a53cb4f5558bd4966e94ac476f20cb6b15 differ
+diff --git a/fuzz/corpora/crl/0fcfb04963bb59bfdc99c7b9ed516b5dc1fc124f b/fuzz/corpora/crl/0fcfb04963bb59bfdc99c7b9ed516b5dc1fc124f
+new file mode 100644
+index 0000000..01f01e4
+Binary files /dev/null and b/fuzz/corpora/crl/0fcfb04963bb59bfdc99c7b9ed516b5dc1fc124f differ
+diff --git a/fuzz/corpora/crl/0fdf99236affc7c937529356bbb71cffd90e0e5d b/fuzz/corpora/crl/0fdf99236affc7c937529356bbb71cffd90e0e5d
+new file mode 100644
+index 0000000..2facbbb
+Binary files /dev/null and b/fuzz/corpora/crl/0fdf99236affc7c937529356bbb71cffd90e0e5d differ
+diff --git a/fuzz/corpora/crl/0ff143418b00992fb9543a6e44c4da26cfd7f6ab b/fuzz/corpora/crl/0ff143418b00992fb9543a6e44c4da26cfd7f6ab
+new file mode 100644
+index 0000000..78aabe6
+Binary files /dev/null and b/fuzz/corpora/crl/0ff143418b00992fb9543a6e44c4da26cfd7f6ab differ
+diff --git a/fuzz/corpora/crl/10ae139fca4cdc87410765e4d65cf035d1d070bd b/fuzz/corpora/crl/10ae139fca4cdc87410765e4d65cf035d1d070bd
+new file mode 100644
+index 0000000..cca5e29
+Binary files /dev/null and b/fuzz/corpora/crl/10ae139fca4cdc87410765e4d65cf035d1d070bd differ
+diff --git a/fuzz/corpora/crl/10d19f1de2500b3ed848d21f60c8dcebe6c894fa b/fuzz/corpora/crl/10d19f1de2500b3ed848d21f60c8dcebe6c894fa
+new file mode 100644
+index 0000000..95b7ecc
+Binary files /dev/null and b/fuzz/corpora/crl/10d19f1de2500b3ed848d21f60c8dcebe6c894fa differ
+diff --git a/fuzz/corpora/crl/10ef958f5ed129a370de66684368b6ae3f624617 b/fuzz/corpora/crl/10ef958f5ed129a370de66684368b6ae3f624617
+new file mode 100644
+index 0000000..6f1de1c
+Binary files /dev/null and b/fuzz/corpora/crl/10ef958f5ed129a370de66684368b6ae3f624617 differ
+diff --git a/fuzz/corpora/crl/11238d9e4c07cdd673a0564c3a23b85fcf5a946e b/fuzz/corpora/crl/11238d9e4c07cdd673a0564c3a23b85fcf5a946e
+new file mode 100644
+index 0000000..7c54052
+Binary files /dev/null and b/fuzz/corpora/crl/11238d9e4c07cdd673a0564c3a23b85fcf5a946e differ
+diff --git a/fuzz/corpora/crl/1204bf4dafb294d06062ab2dcc5eb31c5a99da1f b/fuzz/corpora/crl/1204bf4dafb294d06062ab2dcc5eb31c5a99da1f
+new file mode 100644
+index 0000000..44fd800
+Binary files /dev/null and b/fuzz/corpora/crl/1204bf4dafb294d06062ab2dcc5eb31c5a99da1f differ
+diff --git a/fuzz/corpora/crl/1213160c305349995539a98dd7e171501c9accee b/fuzz/corpora/crl/1213160c305349995539a98dd7e171501c9accee
+new file mode 100644
+index 0000000..3aa80bb
+Binary files /dev/null and b/fuzz/corpora/crl/1213160c305349995539a98dd7e171501c9accee differ
+diff --git a/fuzz/corpora/crl/1288cb8fda4f29acb2f9b9485a2eba08140a0a45 b/fuzz/corpora/crl/1288cb8fda4f29acb2f9b9485a2eba08140a0a45
+new file mode 100644
+index 0000000..a581bb2
+Binary files /dev/null and b/fuzz/corpora/crl/1288cb8fda4f29acb2f9b9485a2eba08140a0a45 differ
+diff --git a/fuzz/corpora/crl/12b253cdeb7cb20633e69ecb6e559db68668000e b/fuzz/corpora/crl/12b253cdeb7cb20633e69ecb6e559db68668000e
+new file mode 100644
+index 0000000..9610f58
+Binary files /dev/null and b/fuzz/corpora/crl/12b253cdeb7cb20633e69ecb6e559db68668000e differ
+diff --git a/fuzz/corpora/crl/12e22f5a0c0fbb60478aceac473582f8b3924554 b/fuzz/corpora/crl/12e22f5a0c0fbb60478aceac473582f8b3924554
+new file mode 100644
+index 0000000..6f2d126
+Binary files /dev/null and b/fuzz/corpora/crl/12e22f5a0c0fbb60478aceac473582f8b3924554 differ
+diff --git a/fuzz/corpora/crl/130f90689ad32a8dd824132ae1c42658f548acb0 b/fuzz/corpora/crl/130f90689ad32a8dd824132ae1c42658f548acb0
+new file mode 100644
+index 0000000..935223e
+Binary files /dev/null and b/fuzz/corpora/crl/130f90689ad32a8dd824132ae1c42658f548acb0 differ
+diff --git a/fuzz/corpora/crl/13cabb64c78543f65ed63f1fa659e37a6fc0600c b/fuzz/corpora/crl/13cabb64c78543f65ed63f1fa659e37a6fc0600c
+new file mode 100644
+index 0000000..f583f23
+Binary files /dev/null and b/fuzz/corpora/crl/13cabb64c78543f65ed63f1fa659e37a6fc0600c differ
+diff --git a/fuzz/corpora/crl/157ab9b35e077788bf3062b738dbc4bd9592d84d b/fuzz/corpora/crl/157ab9b35e077788bf3062b738dbc4bd9592d84d
+new file mode 100644
+index 0000000..d91593c
+Binary files /dev/null and b/fuzz/corpora/crl/157ab9b35e077788bf3062b738dbc4bd9592d84d differ
+diff --git a/fuzz/corpora/crl/1640fb0e0fbbcb367986677f22c44b3dd43e8545 b/fuzz/corpora/crl/1640fb0e0fbbcb367986677f22c44b3dd43e8545
+new file mode 100644
+index 0000000..90f3525
+Binary files /dev/null and b/fuzz/corpora/crl/1640fb0e0fbbcb367986677f22c44b3dd43e8545 differ
+diff --git a/fuzz/corpora/crl/165f409b9305254bae6ba5810a74a9b2c1dc842d b/fuzz/corpora/crl/165f409b9305254bae6ba5810a74a9b2c1dc842d
+new file mode 100644
+index 0000000..9aeec7a
+Binary files /dev/null and b/fuzz/corpora/crl/165f409b9305254bae6ba5810a74a9b2c1dc842d differ
+diff --git a/fuzz/corpora/crl/169853e6e4a0fadd1370023c84e7b7ea1704d544 b/fuzz/corpora/crl/169853e6e4a0fadd1370023c84e7b7ea1704d544
+new file mode 100644
+index 0000000..8ecd2a2
+Binary files /dev/null and b/fuzz/corpora/crl/169853e6e4a0fadd1370023c84e7b7ea1704d544 differ
+diff --git a/fuzz/corpora/crl/16c3b70612735ff5ba633d1740da9a9fcba39027 b/fuzz/corpora/crl/16c3b70612735ff5ba633d1740da9a9fcba39027
+new file mode 100644
+index 0000000..d150115
+Binary files /dev/null and b/fuzz/corpora/crl/16c3b70612735ff5ba633d1740da9a9fcba39027 differ
+diff --git a/fuzz/corpora/crl/173529411f87a3a716998bde256d7c68b6336402 b/fuzz/corpora/crl/173529411f87a3a716998bde256d7c68b6336402
+new file mode 100644
+index 0000000..5e84cc0
+Binary files /dev/null and b/fuzz/corpora/crl/173529411f87a3a716998bde256d7c68b6336402 differ
+diff --git a/fuzz/corpora/crl/1753875334ab9d82e1de2dc84aa29da080ab3cac b/fuzz/corpora/crl/1753875334ab9d82e1de2dc84aa29da080ab3cac
+new file mode 100644
+index 0000000..ad81323
+Binary files /dev/null and b/fuzz/corpora/crl/1753875334ab9d82e1de2dc84aa29da080ab3cac differ
+diff --git a/fuzz/corpora/crl/180f3e5560ff0821cf46245de4c67ddc2ca1d0b3 b/fuzz/corpora/crl/180f3e5560ff0821cf46245de4c67ddc2ca1d0b3
+new file mode 100644
+index 0000000..4401e8d
+Binary files /dev/null and b/fuzz/corpora/crl/180f3e5560ff0821cf46245de4c67ddc2ca1d0b3 differ
+diff --git a/fuzz/corpora/crl/18b2ffbb35215689182a81e0d72c8dd7029eb07b b/fuzz/corpora/crl/18b2ffbb35215689182a81e0d72c8dd7029eb07b
+new file mode 100644
+index 0000000..7dda17c
+Binary files /dev/null and b/fuzz/corpora/crl/18b2ffbb35215689182a81e0d72c8dd7029eb07b differ
+diff --git a/fuzz/corpora/crl/194b17a4f66ce3f3c96df040951ac0718d003db4 b/fuzz/corpora/crl/194b17a4f66ce3f3c96df040951ac0718d003db4
+new file mode 100644
+index 0000000..74966f7
+Binary files /dev/null and b/fuzz/corpora/crl/194b17a4f66ce3f3c96df040951ac0718d003db4 differ
+diff --git a/fuzz/corpora/crl/1a45a6101cf243a7c97f3588a0c8f0afbe9a0a60 b/fuzz/corpora/crl/1a45a6101cf243a7c97f3588a0c8f0afbe9a0a60
+new file mode 100644
+index 0000000..ac23a3c
+Binary files /dev/null and b/fuzz/corpora/crl/1a45a6101cf243a7c97f3588a0c8f0afbe9a0a60 differ
+diff --git a/fuzz/corpora/crl/1a5bc8f9c689f659ca5883771a158bc6326d539e b/fuzz/corpora/crl/1a5bc8f9c689f659ca5883771a158bc6326d539e
+new file mode 100644
+index 0000000..f26a2a6
+Binary files /dev/null and b/fuzz/corpora/crl/1a5bc8f9c689f659ca5883771a158bc6326d539e differ
+diff --git a/fuzz/corpora/crl/1a87cdda72d4faa4356b135718626d386f2f468e b/fuzz/corpora/crl/1a87cdda72d4faa4356b135718626d386f2f468e
+new file mode 100644
+index 0000000..ea619c2
+Binary files /dev/null and b/fuzz/corpora/crl/1a87cdda72d4faa4356b135718626d386f2f468e differ
+diff --git a/fuzz/corpora/crl/1b069097aa9f07709a95102c710a45cebd37ae66 b/fuzz/corpora/crl/1b069097aa9f07709a95102c710a45cebd37ae66
+new file mode 100644
+index 0000000..c46cbdd
+Binary files /dev/null and b/fuzz/corpora/crl/1b069097aa9f07709a95102c710a45cebd37ae66 differ
+diff --git a/fuzz/corpora/crl/1c07a92a2f04718cfa44c1b6a74932fe1d00f1a4 b/fuzz/corpora/crl/1c07a92a2f04718cfa44c1b6a74932fe1d00f1a4
+new file mode 100644
+index 0000000..1aed965
+Binary files /dev/null and b/fuzz/corpora/crl/1c07a92a2f04718cfa44c1b6a74932fe1d00f1a4 differ
+diff --git a/fuzz/corpora/crl/1db1960d0b652d6c827e51468d6949da4c65b832 b/fuzz/corpora/crl/1db1960d0b652d6c827e51468d6949da4c65b832
+new file mode 100644
+index 0000000..d44280b
+Binary files /dev/null and b/fuzz/corpora/crl/1db1960d0b652d6c827e51468d6949da4c65b832 differ
+diff --git a/fuzz/corpora/crl/1e5f957d456153bcdde71fa567822b8a9355932c b/fuzz/corpora/crl/1e5f957d456153bcdde71fa567822b8a9355932c
+new file mode 100644
+index 0000000..7d9f0b1
+Binary files /dev/null and b/fuzz/corpora/crl/1e5f957d456153bcdde71fa567822b8a9355932c differ
+diff --git a/fuzz/corpora/crl/1effc5034bdbfd794e3978a5d701e9a2b7a12e9c b/fuzz/corpora/crl/1effc5034bdbfd794e3978a5d701e9a2b7a12e9c
+new file mode 100644
+index 0000000..0d49c9b
+Binary files /dev/null and b/fuzz/corpora/crl/1effc5034bdbfd794e3978a5d701e9a2b7a12e9c differ
+diff --git a/fuzz/corpora/crl/21bab90d830cef539e26c2e8854b7107230dd65f b/fuzz/corpora/crl/21bab90d830cef539e26c2e8854b7107230dd65f
+new file mode 100644
+index 0000000..09feffa
+Binary files /dev/null and b/fuzz/corpora/crl/21bab90d830cef539e26c2e8854b7107230dd65f differ
+diff --git a/fuzz/corpora/crl/21ec9eefda5ffff325866be010344f0de7d23465 b/fuzz/corpora/crl/21ec9eefda5ffff325866be010344f0de7d23465
+new file mode 100644
+index 0000000..c73779a
+Binary files /dev/null and b/fuzz/corpora/crl/21ec9eefda5ffff325866be010344f0de7d23465 differ
+diff --git a/fuzz/corpora/crl/227fc452d5baa3648212091b2528c7fb7b1a7645 b/fuzz/corpora/crl/227fc452d5baa3648212091b2528c7fb7b1a7645
+new file mode 100644
+index 0000000..dfafe59
+Binary files /dev/null and b/fuzz/corpora/crl/227fc452d5baa3648212091b2528c7fb7b1a7645 differ
+diff --git a/fuzz/corpora/crl/22cca15f0f96660d7e035489e425fc55241fa7a4 b/fuzz/corpora/crl/22cca15f0f96660d7e035489e425fc55241fa7a4
+new file mode 100644
+index 0000000..48b624a
+Binary files /dev/null and b/fuzz/corpora/crl/22cca15f0f96660d7e035489e425fc55241fa7a4 differ
+diff --git a/fuzz/corpora/crl/22eefc3026a889e6f77d7557909acf9ce8fea4f5 b/fuzz/corpora/crl/22eefc3026a889e6f77d7557909acf9ce8fea4f5
+new file mode 100644
+index 0000000..223950e
+Binary files /dev/null and b/fuzz/corpora/crl/22eefc3026a889e6f77d7557909acf9ce8fea4f5 differ
+diff --git a/fuzz/corpora/crl/2305d65855afcb3f8114ebfbeb90cdac7ac5c5d8 b/fuzz/corpora/crl/2305d65855afcb3f8114ebfbeb90cdac7ac5c5d8
+new file mode 100644
+index 0000000..0cfa006
+Binary files /dev/null and b/fuzz/corpora/crl/2305d65855afcb3f8114ebfbeb90cdac7ac5c5d8 differ
+diff --git a/fuzz/corpora/crl/231e48cc0a2ed1793d78ee8654c62e5e8bf9b4b9 b/fuzz/corpora/crl/231e48cc0a2ed1793d78ee8654c62e5e8bf9b4b9
+new file mode 100644
+index 0000000..4360067
+Binary files /dev/null and b/fuzz/corpora/crl/231e48cc0a2ed1793d78ee8654c62e5e8bf9b4b9 differ
+diff --git a/fuzz/corpora/crl/2468b610458ecd274477746e8e7fdda8a5f99729 b/fuzz/corpora/crl/2468b610458ecd274477746e8e7fdda8a5f99729
+new file mode 100644
+index 0000000..883b323
+Binary files /dev/null and b/fuzz/corpora/crl/2468b610458ecd274477746e8e7fdda8a5f99729 differ
+diff --git a/fuzz/corpora/crl/24cf8490237af81e76b2b9fe8a849807f6826e53 b/fuzz/corpora/crl/24cf8490237af81e76b2b9fe8a849807f6826e53
+new file mode 100644
+index 0000000..2844d17
+Binary files /dev/null and b/fuzz/corpora/crl/24cf8490237af81e76b2b9fe8a849807f6826e53 differ
+diff --git a/fuzz/corpora/crl/2562cb63678ca6af2038b4933c8643e761a8d5bd b/fuzz/corpora/crl/2562cb63678ca6af2038b4933c8643e761a8d5bd
+new file mode 100644
+index 0000000..bbdcbed
+Binary files /dev/null and b/fuzz/corpora/crl/2562cb63678ca6af2038b4933c8643e761a8d5bd differ
+diff --git a/fuzz/corpora/crl/25e8f10b3085e836893fc1d04af9911b36915f9d b/fuzz/corpora/crl/25e8f10b3085e836893fc1d04af9911b36915f9d
+new file mode 100644
+index 0000000..66fdd41
+Binary files /dev/null and b/fuzz/corpora/crl/25e8f10b3085e836893fc1d04af9911b36915f9d differ
+diff --git a/fuzz/corpora/crl/26748c095583b2c5a05d2fe8c7a62fe244fc5df8 b/fuzz/corpora/crl/26748c095583b2c5a05d2fe8c7a62fe244fc5df8
+new file mode 100644
+index 0000000..b7ad179
+Binary files /dev/null and b/fuzz/corpora/crl/26748c095583b2c5a05d2fe8c7a62fe244fc5df8 differ
+diff --git a/fuzz/corpora/crl/26eb38c92c544ce570a8223e1c83d597415b55a1 b/fuzz/corpora/crl/26eb38c92c544ce570a8223e1c83d597415b55a1
+new file mode 100644
+index 0000000..1b0afa9
+Binary files /dev/null and b/fuzz/corpora/crl/26eb38c92c544ce570a8223e1c83d597415b55a1 differ
+diff --git a/fuzz/corpora/crl/278db8318b8d895ebed98de9b393073174b99d19 b/fuzz/corpora/crl/278db8318b8d895ebed98de9b393073174b99d19
+new file mode 100644
+index 0000000..c8ecaf2
+Binary files /dev/null and b/fuzz/corpora/crl/278db8318b8d895ebed98de9b393073174b99d19 differ
+diff --git a/fuzz/corpora/crl/27dec9d38101e3df9bbe9891242ea53835c8d8e3 b/fuzz/corpora/crl/27dec9d38101e3df9bbe9891242ea53835c8d8e3
+new file mode 100644
+index 0000000..0e7b9de
+Binary files /dev/null and b/fuzz/corpora/crl/27dec9d38101e3df9bbe9891242ea53835c8d8e3 differ
+diff --git a/fuzz/corpora/crl/280011cbc094ba7c41b4e678f7391fda38df0e56 b/fuzz/corpora/crl/280011cbc094ba7c41b4e678f7391fda38df0e56
+new file mode 100644
+index 0000000..eb8569e
+Binary files /dev/null and b/fuzz/corpora/crl/280011cbc094ba7c41b4e678f7391fda38df0e56 differ
+diff --git a/fuzz/corpora/crl/2801400255b642b9257d05d31e162b12d381bc6a b/fuzz/corpora/crl/2801400255b642b9257d05d31e162b12d381bc6a
+new file mode 100644
+index 0000000..1201db5
+Binary files /dev/null and b/fuzz/corpora/crl/2801400255b642b9257d05d31e162b12d381bc6a differ
+diff --git a/fuzz/corpora/crl/280b820a2571cb4420f50048e603dea577a3f169 b/fuzz/corpora/crl/280b820a2571cb4420f50048e603dea577a3f169
+new file mode 100644
+index 0000000..26bdaea
+Binary files /dev/null and b/fuzz/corpora/crl/280b820a2571cb4420f50048e603dea577a3f169 differ
+diff --git a/fuzz/corpora/crl/2845b57940ff2a41d94850876bdff14ce1af60af b/fuzz/corpora/crl/2845b57940ff2a41d94850876bdff14ce1af60af
+new file mode 100644
+index 0000000..20d1c12
+Binary files /dev/null and b/fuzz/corpora/crl/2845b57940ff2a41d94850876bdff14ce1af60af differ
+diff --git a/fuzz/corpora/crl/28606ba70ca79ab36d5d001a9d2de61abc36a87d b/fuzz/corpora/crl/28606ba70ca79ab36d5d001a9d2de61abc36a87d
+new file mode 100644
+index 0000000..0930f5b
+Binary files /dev/null and b/fuzz/corpora/crl/28606ba70ca79ab36d5d001a9d2de61abc36a87d differ
+diff --git a/fuzz/corpora/crl/2931709aef558ac8932d67e6d2232389f865a267 b/fuzz/corpora/crl/2931709aef558ac8932d67e6d2232389f865a267
+new file mode 100644
+index 0000000..8915c16
+Binary files /dev/null and b/fuzz/corpora/crl/2931709aef558ac8932d67e6d2232389f865a267 differ
+diff --git a/fuzz/corpora/crl/29513c3d00dedafca91adcb8e4b4210e4e138a22 b/fuzz/corpora/crl/29513c3d00dedafca91adcb8e4b4210e4e138a22
+new file mode 100644
+index 0000000..527aa8c
+Binary files /dev/null and b/fuzz/corpora/crl/29513c3d00dedafca91adcb8e4b4210e4e138a22 differ
+diff --git a/fuzz/corpora/crl/29dd5dcfaa008ace8355feff2d5ac286fad80ea1 b/fuzz/corpora/crl/29dd5dcfaa008ace8355feff2d5ac286fad80ea1
+new file mode 100644
+index 0000000..bc97e61
+Binary files /dev/null and b/fuzz/corpora/crl/29dd5dcfaa008ace8355feff2d5ac286fad80ea1 differ
+diff --git a/fuzz/corpora/crl/2a578da8956d8faefee211031d4916d8d13e2887 b/fuzz/corpora/crl/2a578da8956d8faefee211031d4916d8d13e2887
+new file mode 100644
+index 0000000..d16a1c9
+Binary files /dev/null and b/fuzz/corpora/crl/2a578da8956d8faefee211031d4916d8d13e2887 differ
+diff --git a/fuzz/corpora/crl/2a77db3dd64728c0b59ab593d95f68dbc0c3707b b/fuzz/corpora/crl/2a77db3dd64728c0b59ab593d95f68dbc0c3707b
+new file mode 100644
+index 0000000..87cd2ee
+Binary files /dev/null and b/fuzz/corpora/crl/2a77db3dd64728c0b59ab593d95f68dbc0c3707b differ
+diff --git a/fuzz/corpora/crl/2b6ecede6350f0121d64aac259a1cb91cc9e6bf8 b/fuzz/corpora/crl/2b6ecede6350f0121d64aac259a1cb91cc9e6bf8
+new file mode 100644
+index 0000000..7ce5335
+Binary files /dev/null and b/fuzz/corpora/crl/2b6ecede6350f0121d64aac259a1cb91cc9e6bf8 differ
+diff --git a/fuzz/corpora/crl/2c0a7a185e77ae4938ca891b3f457eb39753f446 b/fuzz/corpora/crl/2c0a7a185e77ae4938ca891b3f457eb39753f446
+new file mode 100644
+index 0000000..9a2231f
+Binary files /dev/null and b/fuzz/corpora/crl/2c0a7a185e77ae4938ca891b3f457eb39753f446 differ
+diff --git a/fuzz/corpora/crl/2ca74f6eb8e4ae4a32334a7e455e67419e7075f5 b/fuzz/corpora/crl/2ca74f6eb8e4ae4a32334a7e455e67419e7075f5
+new file mode 100644
+index 0000000..4fbeee2
+Binary files /dev/null and b/fuzz/corpora/crl/2ca74f6eb8e4ae4a32334a7e455e67419e7075f5 differ
+diff --git a/fuzz/corpora/crl/2cf70302dcfc7fe61a8b453748c5abdf311f0bbd b/fuzz/corpora/crl/2cf70302dcfc7fe61a8b453748c5abdf311f0bbd
+new file mode 100644
+index 0000000..283daaf
+Binary files /dev/null and b/fuzz/corpora/crl/2cf70302dcfc7fe61a8b453748c5abdf311f0bbd differ
+diff --git a/fuzz/corpora/crl/2cfc5d982cb09964383b0ecf184182ab263a355b b/fuzz/corpora/crl/2cfc5d982cb09964383b0ecf184182ab263a355b
+new file mode 100644
+index 0000000..38f0eb4
+Binary files /dev/null and b/fuzz/corpora/crl/2cfc5d982cb09964383b0ecf184182ab263a355b differ
+diff --git a/fuzz/corpora/crl/2d4d812eb441023b2b6047a7286434d4c578fef4 b/fuzz/corpora/crl/2d4d812eb441023b2b6047a7286434d4c578fef4
+new file mode 100644
+index 0000000..46b1387
+Binary files /dev/null and b/fuzz/corpora/crl/2d4d812eb441023b2b6047a7286434d4c578fef4 differ
+diff --git a/fuzz/corpora/crl/2d6964028a6701e70af1b4ff87ff4422467aa442 b/fuzz/corpora/crl/2d6964028a6701e70af1b4ff87ff4422467aa442
+new file mode 100644
+index 0000000..5f4bc7e
+Binary files /dev/null and b/fuzz/corpora/crl/2d6964028a6701e70af1b4ff87ff4422467aa442 differ
+diff --git a/fuzz/corpora/crl/2d7a525dead44e2560e32847522347ffd2146f91 b/fuzz/corpora/crl/2d7a525dead44e2560e32847522347ffd2146f91
+new file mode 100644
+index 0000000..07260e7
+Binary files /dev/null and b/fuzz/corpora/crl/2d7a525dead44e2560e32847522347ffd2146f91 differ
+diff --git a/fuzz/corpora/crl/2df72e3f3ae3bc89176afa2ac8d64e149eced7be b/fuzz/corpora/crl/2df72e3f3ae3bc89176afa2ac8d64e149eced7be
+new file mode 100644
+index 0000000..934d85c
+Binary files /dev/null and b/fuzz/corpora/crl/2df72e3f3ae3bc89176afa2ac8d64e149eced7be differ
+diff --git a/fuzz/corpora/crl/2e4685262f5eac525b7e9eb4cb430d0f52ac7a1b b/fuzz/corpora/crl/2e4685262f5eac525b7e9eb4cb430d0f52ac7a1b
+new file mode 100644
+index 0000000..39865f7
+Binary files /dev/null and b/fuzz/corpora/crl/2e4685262f5eac525b7e9eb4cb430d0f52ac7a1b differ
+diff --git a/fuzz/corpora/crl/2f270e61d86f8a2f2cf7afacf967cd5f8f0a1b5d b/fuzz/corpora/crl/2f270e61d86f8a2f2cf7afacf967cd5f8f0a1b5d
+new file mode 100644
+index 0000000..2334f90
+Binary files /dev/null and b/fuzz/corpora/crl/2f270e61d86f8a2f2cf7afacf967cd5f8f0a1b5d differ
+diff --git a/fuzz/corpora/crl/2f32f5e10929774a5eeb2770d7b3eab9f6bf6ee2 b/fuzz/corpora/crl/2f32f5e10929774a5eeb2770d7b3eab9f6bf6ee2
+new file mode 100644
+index 0000000..a108485
+Binary files /dev/null and b/fuzz/corpora/crl/2f32f5e10929774a5eeb2770d7b3eab9f6bf6ee2 differ
+diff --git a/fuzz/corpora/crl/2fb1a00547d555aafecb3351f36050e87f2f9456 b/fuzz/corpora/crl/2fb1a00547d555aafecb3351f36050e87f2f9456
+new file mode 100644
+index 0000000..2781105
+Binary files /dev/null and b/fuzz/corpora/crl/2fb1a00547d555aafecb3351f36050e87f2f9456 differ
+diff --git a/fuzz/corpora/crl/2fdd0e2df212914ab2b943c34b70494bfa2be342 b/fuzz/corpora/crl/2fdd0e2df212914ab2b943c34b70494bfa2be342
+new file mode 100644
+index 0000000..9df904e
+Binary files /dev/null and b/fuzz/corpora/crl/2fdd0e2df212914ab2b943c34b70494bfa2be342 differ
+diff --git a/fuzz/corpora/crl/310f179d61612021f4c0aaf2fd4e92f1eb246940 b/fuzz/corpora/crl/310f179d61612021f4c0aaf2fd4e92f1eb246940
+new file mode 100644
+index 0000000..28b4370
+Binary files /dev/null and b/fuzz/corpora/crl/310f179d61612021f4c0aaf2fd4e92f1eb246940 differ
+diff --git a/fuzz/corpora/crl/311a713a439d9cd620f7a5857672d5bc65df4e19 b/fuzz/corpora/crl/311a713a439d9cd620f7a5857672d5bc65df4e19
+new file mode 100644
+index 0000000..827b715
+Binary files /dev/null and b/fuzz/corpora/crl/311a713a439d9cd620f7a5857672d5bc65df4e19 differ
+diff --git a/fuzz/corpora/crl/316c624b43acd44977d92a72f6ccdb12293fbb6f b/fuzz/corpora/crl/316c624b43acd44977d92a72f6ccdb12293fbb6f
+new file mode 100644
+index 0000000..fb036d1
+Binary files /dev/null and b/fuzz/corpora/crl/316c624b43acd44977d92a72f6ccdb12293fbb6f differ
+diff --git a/fuzz/corpora/crl/3368887ba68c596e23f69520fb78a0d3adb1ea20 b/fuzz/corpora/crl/3368887ba68c596e23f69520fb78a0d3adb1ea20
+new file mode 100644
+index 0000000..7f4f75a
+Binary files /dev/null and b/fuzz/corpora/crl/3368887ba68c596e23f69520fb78a0d3adb1ea20 differ
+diff --git a/fuzz/corpora/crl/34389ccc97b4dacca77a3c8359644115707688af b/fuzz/corpora/crl/34389ccc97b4dacca77a3c8359644115707688af
+new file mode 100644
+index 0000000..41f6123
+Binary files /dev/null and b/fuzz/corpora/crl/34389ccc97b4dacca77a3c8359644115707688af differ
+diff --git a/fuzz/corpora/crl/3449439e19f1fae21502dad2eebae25bbe33710f b/fuzz/corpora/crl/3449439e19f1fae21502dad2eebae25bbe33710f
+new file mode 100644
+index 0000000..87b64ee
+Binary files /dev/null and b/fuzz/corpora/crl/3449439e19f1fae21502dad2eebae25bbe33710f differ
+diff --git a/fuzz/corpora/crl/34691f8b0436eca2028f6dc9780dea6bfc6b49d8 b/fuzz/corpora/crl/34691f8b0436eca2028f6dc9780dea6bfc6b49d8
+new file mode 100644
+index 0000000..9a992ad
+Binary files /dev/null and b/fuzz/corpora/crl/34691f8b0436eca2028f6dc9780dea6bfc6b49d8 differ
+diff --git a/fuzz/corpora/crl/347171eaf30bb2d236a0ac96e376728926203063 b/fuzz/corpora/crl/347171eaf30bb2d236a0ac96e376728926203063
+new file mode 100644
+index 0000000..6971803
+Binary files /dev/null and b/fuzz/corpora/crl/347171eaf30bb2d236a0ac96e376728926203063 differ
+diff --git a/fuzz/corpora/crl/348e087e3eb99f5d51551cc86905cddb1313ee60 b/fuzz/corpora/crl/348e087e3eb99f5d51551cc86905cddb1313ee60
+new file mode 100644
+index 0000000..d214326
+Binary files /dev/null and b/fuzz/corpora/crl/348e087e3eb99f5d51551cc86905cddb1313ee60 differ
+diff --git a/fuzz/corpora/crl/3493744836f5f5424e0799b42764cd70dfb8296f b/fuzz/corpora/crl/3493744836f5f5424e0799b42764cd70dfb8296f
+new file mode 100644
+index 0000000..b008e3b
+Binary files /dev/null and b/fuzz/corpora/crl/3493744836f5f5424e0799b42764cd70dfb8296f differ
+diff --git a/fuzz/corpora/crl/34dd5e815368f10bce4ac092c2c667134226abca b/fuzz/corpora/crl/34dd5e815368f10bce4ac092c2c667134226abca
+new file mode 100644
+index 0000000..90950c0
+Binary files /dev/null and b/fuzz/corpora/crl/34dd5e815368f10bce4ac092c2c667134226abca differ
+diff --git a/fuzz/corpora/crl/3511326b46c76d66269b4505bd1e0585fc0ecce0 b/fuzz/corpora/crl/3511326b46c76d66269b4505bd1e0585fc0ecce0
+new file mode 100644
+index 0000000..31aee5e
+Binary files /dev/null and b/fuzz/corpora/crl/3511326b46c76d66269b4505bd1e0585fc0ecce0 differ
+diff --git a/fuzz/corpora/crl/35c5a98ad872fe3e8e2409883190d9a56af579b2 b/fuzz/corpora/crl/35c5a98ad872fe3e8e2409883190d9a56af579b2
+new file mode 100644
+index 0000000..ec87905
+Binary files /dev/null and b/fuzz/corpora/crl/35c5a98ad872fe3e8e2409883190d9a56af579b2 differ
+diff --git a/fuzz/corpora/crl/35dd0cf880fd0ba14d9b3ce97835076426806fb8 b/fuzz/corpora/crl/35dd0cf880fd0ba14d9b3ce97835076426806fb8
+new file mode 100644
+index 0000000..c91cd70
+Binary files /dev/null and b/fuzz/corpora/crl/35dd0cf880fd0ba14d9b3ce97835076426806fb8 differ
+diff --git a/fuzz/corpora/crl/3667e0aa4e9d3d61ece533840d0c1190cfa206ec b/fuzz/corpora/crl/3667e0aa4e9d3d61ece533840d0c1190cfa206ec
+new file mode 100644
+index 0000000..b647d52
+Binary files /dev/null and b/fuzz/corpora/crl/3667e0aa4e9d3d61ece533840d0c1190cfa206ec differ
+diff --git a/fuzz/corpora/crl/3675f36488839dd335a71d22a3befafbcd306d79 b/fuzz/corpora/crl/3675f36488839dd335a71d22a3befafbcd306d79
+new file mode 100644
+index 0000000..689eba0
+Binary files /dev/null and b/fuzz/corpora/crl/3675f36488839dd335a71d22a3befafbcd306d79 differ
+diff --git a/fuzz/corpora/crl/36c4dbe5b2a9556de5a5fb8146bc2ea0f562e1ec b/fuzz/corpora/crl/36c4dbe5b2a9556de5a5fb8146bc2ea0f562e1ec
+new file mode 100644
+index 0000000..3a1554b
+Binary files /dev/null and b/fuzz/corpora/crl/36c4dbe5b2a9556de5a5fb8146bc2ea0f562e1ec differ
+diff --git a/fuzz/corpora/crl/36dddca29d992d56f77d3b926b0bea0f3895aef4 b/fuzz/corpora/crl/36dddca29d992d56f77d3b926b0bea0f3895aef4
+new file mode 100644
+index 0000000..12087e2
+Binary files /dev/null and b/fuzz/corpora/crl/36dddca29d992d56f77d3b926b0bea0f3895aef4 differ
+diff --git a/fuzz/corpora/crl/380ce41402e855090920b63e1f62ad2b58de2449 b/fuzz/corpora/crl/380ce41402e855090920b63e1f62ad2b58de2449
+new file mode 100644
+index 0000000..afb274f
+Binary files /dev/null and b/fuzz/corpora/crl/380ce41402e855090920b63e1f62ad2b58de2449 differ
+diff --git a/fuzz/corpora/crl/382cf7b45d11f9d0420198e880b63d3d0186d5e2 b/fuzz/corpora/crl/382cf7b45d11f9d0420198e880b63d3d0186d5e2
+new file mode 100644
+index 0000000..a2463e0
+Binary files /dev/null and b/fuzz/corpora/crl/382cf7b45d11f9d0420198e880b63d3d0186d5e2 differ
+diff --git a/fuzz/corpora/crl/39e26929ddd47f61663f7dc5332b8ca4879f8fb2 b/fuzz/corpora/crl/39e26929ddd47f61663f7dc5332b8ca4879f8fb2
+new file mode 100644
+index 0000000..4ce676b
+Binary files /dev/null and b/fuzz/corpora/crl/39e26929ddd47f61663f7dc5332b8ca4879f8fb2 differ
+diff --git a/fuzz/corpora/crl/39e30f45a89bc5aa771eefd2825f03d6056659a8 b/fuzz/corpora/crl/39e30f45a89bc5aa771eefd2825f03d6056659a8
+new file mode 100644
+index 0000000..e598fb4
+Binary files /dev/null and b/fuzz/corpora/crl/39e30f45a89bc5aa771eefd2825f03d6056659a8 differ
+diff --git a/fuzz/corpora/crl/3bd703c04a3e6e27f6caaf45febd045a06dad749 b/fuzz/corpora/crl/3bd703c04a3e6e27f6caaf45febd045a06dad749
+new file mode 100644
+index 0000000..4751563
+Binary files /dev/null and b/fuzz/corpora/crl/3bd703c04a3e6e27f6caaf45febd045a06dad749 differ
+diff --git a/fuzz/corpora/crl/3bf3d385e9bd24bc43f765e0cb4a7bbb3f4f56c3 b/fuzz/corpora/crl/3bf3d385e9bd24bc43f765e0cb4a7bbb3f4f56c3
+new file mode 100644
+index 0000000..c5eeb0d
+Binary files /dev/null and b/fuzz/corpora/crl/3bf3d385e9bd24bc43f765e0cb4a7bbb3f4f56c3 differ
+diff --git a/fuzz/corpora/crl/3dea6c4ce48508b2f216e75205489f7091265ad5 b/fuzz/corpora/crl/3dea6c4ce48508b2f216e75205489f7091265ad5
+new file mode 100644
+index 0000000..7b1c17d
+Binary files /dev/null and b/fuzz/corpora/crl/3dea6c4ce48508b2f216e75205489f7091265ad5 differ
+diff --git a/fuzz/corpora/crl/3e639a8e6003c8c082e66f4daf7ce79d8949d7fa b/fuzz/corpora/crl/3e639a8e6003c8c082e66f4daf7ce79d8949d7fa
+new file mode 100644
+index 0000000..9585be5
+Binary files /dev/null and b/fuzz/corpora/crl/3e639a8e6003c8c082e66f4daf7ce79d8949d7fa differ
+diff --git a/fuzz/corpora/crl/3e7192aded243b8785b622bad1cf05386914d31d b/fuzz/corpora/crl/3e7192aded243b8785b622bad1cf05386914d31d
+new file mode 100644
+index 0000000..94eaebd
+Binary files /dev/null and b/fuzz/corpora/crl/3e7192aded243b8785b622bad1cf05386914d31d differ
+diff --git a/fuzz/corpora/crl/3f1b12e63641370cbe504becc3c03ed2da66eb1e b/fuzz/corpora/crl/3f1b12e63641370cbe504becc3c03ed2da66eb1e
+new file mode 100644
+index 0000000..ab1cb31
+Binary files /dev/null and b/fuzz/corpora/crl/3f1b12e63641370cbe504becc3c03ed2da66eb1e differ
+diff --git a/fuzz/corpora/crl/3f26907b12df99de2da0a872c3ddd366348cbf70 b/fuzz/corpora/crl/3f26907b12df99de2da0a872c3ddd366348cbf70
+new file mode 100644
+index 0000000..4dfd143
+Binary files /dev/null and b/fuzz/corpora/crl/3f26907b12df99de2da0a872c3ddd366348cbf70 differ
+diff --git a/fuzz/corpora/crl/3f7812280043dc0e356a02fa61528841a3fd1bd2 b/fuzz/corpora/crl/3f7812280043dc0e356a02fa61528841a3fd1bd2
+new file mode 100644
+index 0000000..6dc3fce
+Binary files /dev/null and b/fuzz/corpora/crl/3f7812280043dc0e356a02fa61528841a3fd1bd2 differ
+diff --git a/fuzz/corpora/crl/3fa1d698b6494af820f9297034792e035867fe76 b/fuzz/corpora/crl/3fa1d698b6494af820f9297034792e035867fe76
+new file mode 100644
+index 0000000..2c223e4
+Binary files /dev/null and b/fuzz/corpora/crl/3fa1d698b6494af820f9297034792e035867fe76 differ
+diff --git a/fuzz/corpora/crl/3fae7dd374eb55cb81d1098b19818c126f95790d b/fuzz/corpora/crl/3fae7dd374eb55cb81d1098b19818c126f95790d
+new file mode 100644
+index 0000000..8e600fd
+Binary files /dev/null and b/fuzz/corpora/crl/3fae7dd374eb55cb81d1098b19818c126f95790d differ
+diff --git a/fuzz/corpora/crl/402baf29194619b796d224786069955735730a15 b/fuzz/corpora/crl/402baf29194619b796d224786069955735730a15
+new file mode 100644
+index 0000000..599e7cb
+Binary files /dev/null and b/fuzz/corpora/crl/402baf29194619b796d224786069955735730a15 differ
+diff --git a/fuzz/corpora/crl/407087545a01b8fe6481a240674860d238b27f11 b/fuzz/corpora/crl/407087545a01b8fe6481a240674860d238b27f11
+new file mode 100644
+index 0000000..dbfc624
+Binary files /dev/null and b/fuzz/corpora/crl/407087545a01b8fe6481a240674860d238b27f11 differ
+diff --git a/fuzz/corpora/crl/41672330b7b5cd15183732052448fad9bf350946 b/fuzz/corpora/crl/41672330b7b5cd15183732052448fad9bf350946
+new file mode 100644
+index 0000000..916c58d
+Binary files /dev/null and b/fuzz/corpora/crl/41672330b7b5cd15183732052448fad9bf350946 differ
+diff --git a/fuzz/corpora/crl/42239614a3b10c5791e70b1524f334bdb341514f b/fuzz/corpora/crl/42239614a3b10c5791e70b1524f334bdb341514f
+new file mode 100644
+index 0000000..11a23af
+Binary files /dev/null and b/fuzz/corpora/crl/42239614a3b10c5791e70b1524f334bdb341514f differ
+diff --git a/fuzz/corpora/crl/424ea3c40ae4cb389766d197177ac59bb2fdc5fe b/fuzz/corpora/crl/424ea3c40ae4cb389766d197177ac59bb2fdc5fe
+new file mode 100644
+index 0000000..725b51b
+Binary files /dev/null and b/fuzz/corpora/crl/424ea3c40ae4cb389766d197177ac59bb2fdc5fe differ
+diff --git a/fuzz/corpora/crl/436213f9f94a0fefa128a581371cba2396683d35 b/fuzz/corpora/crl/436213f9f94a0fefa128a581371cba2396683d35
+new file mode 100644
+index 0000000..4eccea4
+Binary files /dev/null and b/fuzz/corpora/crl/436213f9f94a0fefa128a581371cba2396683d35 differ
+diff --git a/fuzz/corpora/crl/439cb73aad98157c9865657ba286b63e19e515bb b/fuzz/corpora/crl/439cb73aad98157c9865657ba286b63e19e515bb
+new file mode 100644
+index 0000000..061160d
+Binary files /dev/null and b/fuzz/corpora/crl/439cb73aad98157c9865657ba286b63e19e515bb differ
+diff --git a/fuzz/corpora/crl/44533e589c78824f4f28d0e70d3f17724fcbbba0 b/fuzz/corpora/crl/44533e589c78824f4f28d0e70d3f17724fcbbba0
+new file mode 100644
+index 0000000..f5e043a
+Binary files /dev/null and b/fuzz/corpora/crl/44533e589c78824f4f28d0e70d3f17724fcbbba0 differ
+diff --git a/fuzz/corpora/crl/45e4deb186e64b96f09785b6241ba9f90f0e66a9 b/fuzz/corpora/crl/45e4deb186e64b96f09785b6241ba9f90f0e66a9
+new file mode 100644
+index 0000000..fbe5da5
+Binary files /dev/null and b/fuzz/corpora/crl/45e4deb186e64b96f09785b6241ba9f90f0e66a9 differ
+diff --git a/fuzz/corpora/crl/46082ca7a0f78a3b4eb4ea590a8f088b423383af b/fuzz/corpora/crl/46082ca7a0f78a3b4eb4ea590a8f088b423383af
+new file mode 100644
+index 0000000..9141b1f
+Binary files /dev/null and b/fuzz/corpora/crl/46082ca7a0f78a3b4eb4ea590a8f088b423383af differ
+diff --git a/fuzz/corpora/crl/47a337fd9f7c2997925e3515e39cab0dc87fa4e9 b/fuzz/corpora/crl/47a337fd9f7c2997925e3515e39cab0dc87fa4e9
+new file mode 100644
+index 0000000..b21fd21
+Binary files /dev/null and b/fuzz/corpora/crl/47a337fd9f7c2997925e3515e39cab0dc87fa4e9 differ
+diff --git a/fuzz/corpora/crl/483c040e5e696cf5d985f59a544eeccfc2d48470 b/fuzz/corpora/crl/483c040e5e696cf5d985f59a544eeccfc2d48470
+new file mode 100644
+index 0000000..901b6ec
+Binary files /dev/null and b/fuzz/corpora/crl/483c040e5e696cf5d985f59a544eeccfc2d48470 differ
+diff --git a/fuzz/corpora/crl/48949cb0d098926c4470bc39f253ae72e8067d25 b/fuzz/corpora/crl/48949cb0d098926c4470bc39f253ae72e8067d25
+new file mode 100644
+index 0000000..2bb38c0
+Binary files /dev/null and b/fuzz/corpora/crl/48949cb0d098926c4470bc39f253ae72e8067d25 differ
+diff --git a/fuzz/corpora/crl/49858f9dfe30f31bb9f6836c9fb0bdf06b3c3a2c b/fuzz/corpora/crl/49858f9dfe30f31bb9f6836c9fb0bdf06b3c3a2c
+new file mode 100644
+index 0000000..182872b
+Binary files /dev/null and b/fuzz/corpora/crl/49858f9dfe30f31bb9f6836c9fb0bdf06b3c3a2c differ
+diff --git a/fuzz/corpora/crl/49fdaac9700faed9cbbf77f4d71f5222cda01698 b/fuzz/corpora/crl/49fdaac9700faed9cbbf77f4d71f5222cda01698
+new file mode 100644
+index 0000000..a401d53
+Binary files /dev/null and b/fuzz/corpora/crl/49fdaac9700faed9cbbf77f4d71f5222cda01698 differ
+diff --git a/fuzz/corpora/crl/4a47daecf968115b0cb014affb63da31ad8e1abe b/fuzz/corpora/crl/4a47daecf968115b0cb014affb63da31ad8e1abe
+new file mode 100644
+index 0000000..8e6680e
+Binary files /dev/null and b/fuzz/corpora/crl/4a47daecf968115b0cb014affb63da31ad8e1abe differ
+diff --git a/fuzz/corpora/crl/4ae99e9fbc808e7cb4a7458dd64c93de45774afe b/fuzz/corpora/crl/4ae99e9fbc808e7cb4a7458dd64c93de45774afe
+new file mode 100644
+index 0000000..71464a5
+Binary files /dev/null and b/fuzz/corpora/crl/4ae99e9fbc808e7cb4a7458dd64c93de45774afe differ
+diff --git a/fuzz/corpora/crl/4b0810d02acafb4b86174fb7a2613f9310d89a28 b/fuzz/corpora/crl/4b0810d02acafb4b86174fb7a2613f9310d89a28
+new file mode 100644
+index 0000000..7822124
+Binary files /dev/null and b/fuzz/corpora/crl/4b0810d02acafb4b86174fb7a2613f9310d89a28 differ
+diff --git a/fuzz/corpora/crl/4b904a636411b25fdebf5e526077349243dad215 b/fuzz/corpora/crl/4b904a636411b25fdebf5e526077349243dad215
+new file mode 100644
+index 0000000..1abeb1b
+Binary files /dev/null and b/fuzz/corpora/crl/4b904a636411b25fdebf5e526077349243dad215 differ
+diff --git a/fuzz/corpora/crl/4baa071e14d1d48d2b85630cd8596f155b395ea8 b/fuzz/corpora/crl/4baa071e14d1d48d2b85630cd8596f155b395ea8
+new file mode 100644
+index 0000000..c212289
+Binary files /dev/null and b/fuzz/corpora/crl/4baa071e14d1d48d2b85630cd8596f155b395ea8 differ
+diff --git a/fuzz/corpora/crl/4cd7ea58c54cce992f1c8978d64c4d5cdeabd1d4 b/fuzz/corpora/crl/4cd7ea58c54cce992f1c8978d64c4d5cdeabd1d4
+new file mode 100644
+index 0000000..7e4b9ca
+Binary files /dev/null and b/fuzz/corpora/crl/4cd7ea58c54cce992f1c8978d64c4d5cdeabd1d4 differ
+diff --git a/fuzz/corpora/crl/4ce4f63a2c1b5ae78c5c5939185e9693fbbea159 b/fuzz/corpora/crl/4ce4f63a2c1b5ae78c5c5939185e9693fbbea159
+new file mode 100644
+index 0000000..d12df89
+Binary files /dev/null and b/fuzz/corpora/crl/4ce4f63a2c1b5ae78c5c5939185e9693fbbea159 differ
+diff --git a/fuzz/corpora/crl/4d61fe262f72df2d37d870b3e54bf9cac334d4d0 b/fuzz/corpora/crl/4d61fe262f72df2d37d870b3e54bf9cac334d4d0
+new file mode 100644
+index 0000000..d54ae44
+Binary files /dev/null and b/fuzz/corpora/crl/4d61fe262f72df2d37d870b3e54bf9cac334d4d0 differ
+diff --git a/fuzz/corpora/crl/4e18b1c6ec8bacc76c028484e3b28b4f08bfc5e5 b/fuzz/corpora/crl/4e18b1c6ec8bacc76c028484e3b28b4f08bfc5e5
+new file mode 100644
+index 0000000..7bf16ad
+Binary files /dev/null and b/fuzz/corpora/crl/4e18b1c6ec8bacc76c028484e3b28b4f08bfc5e5 differ
+diff --git a/fuzz/corpora/crl/4e367de156059d724754b3bf9985330bb08f2bb8 b/fuzz/corpora/crl/4e367de156059d724754b3bf9985330bb08f2bb8
+new file mode 100644
+index 0000000..75a7220
+Binary files /dev/null and b/fuzz/corpora/crl/4e367de156059d724754b3bf9985330bb08f2bb8 differ
+diff --git a/fuzz/corpora/crl/4e3e5e91d2f3e2e15470fca719747ba053ecdf9b b/fuzz/corpora/crl/4e3e5e91d2f3e2e15470fca719747ba053ecdf9b
+new file mode 100644
+index 0000000..f19573f
+Binary files /dev/null and b/fuzz/corpora/crl/4e3e5e91d2f3e2e15470fca719747ba053ecdf9b differ
+diff --git a/fuzz/corpora/crl/4e654279eb3b499d4ce3632d0b50a8bb0e7b236c b/fuzz/corpora/crl/4e654279eb3b499d4ce3632d0b50a8bb0e7b236c
+new file mode 100644
+index 0000000..75b20ed
+Binary files /dev/null and b/fuzz/corpora/crl/4e654279eb3b499d4ce3632d0b50a8bb0e7b236c differ
+diff --git a/fuzz/corpora/crl/4fdc6f064419ae8f9eff2f29c6a5e32a744a1bf9 b/fuzz/corpora/crl/4fdc6f064419ae8f9eff2f29c6a5e32a744a1bf9
+new file mode 100644
+index 0000000..587e74b
+Binary files /dev/null and b/fuzz/corpora/crl/4fdc6f064419ae8f9eff2f29c6a5e32a744a1bf9 differ
+diff --git a/fuzz/corpora/crl/4fe14f88a5c8168ea97005fc16d0ced8db3e3191 b/fuzz/corpora/crl/4fe14f88a5c8168ea97005fc16d0ced8db3e3191
+new file mode 100644
+index 0000000..371f00b
+Binary files /dev/null and b/fuzz/corpora/crl/4fe14f88a5c8168ea97005fc16d0ced8db3e3191 differ
+diff --git a/fuzz/corpora/crl/50350f105f97f0bb411334294afd3cabc7584f3c b/fuzz/corpora/crl/50350f105f97f0bb411334294afd3cabc7584f3c
+new file mode 100644
+index 0000000..3a99686
+Binary files /dev/null and b/fuzz/corpora/crl/50350f105f97f0bb411334294afd3cabc7584f3c differ
+diff --git a/fuzz/corpora/crl/50a65ae9f2b947d607b1205fe590ef3fba26dd3b b/fuzz/corpora/crl/50a65ae9f2b947d607b1205fe590ef3fba26dd3b
+new file mode 100644
+index 0000000..4555ece
+Binary files /dev/null and b/fuzz/corpora/crl/50a65ae9f2b947d607b1205fe590ef3fba26dd3b differ
+diff --git a/fuzz/corpora/crl/51108169ecf2dfb1f21f1fd6830e745afa41baef b/fuzz/corpora/crl/51108169ecf2dfb1f21f1fd6830e745afa41baef
+new file mode 100644
+index 0000000..cc2f240
+Binary files /dev/null and b/fuzz/corpora/crl/51108169ecf2dfb1f21f1fd6830e745afa41baef differ
+diff --git a/fuzz/corpora/crl/51c1095f6e83698a0958cd42f38001bc4f65ec9e b/fuzz/corpora/crl/51c1095f6e83698a0958cd42f38001bc4f65ec9e
+new file mode 100644
+index 0000000..ddf7bcc
+Binary files /dev/null and b/fuzz/corpora/crl/51c1095f6e83698a0958cd42f38001bc4f65ec9e differ
+diff --git a/fuzz/corpora/crl/51c370858932cd6484148d1ac441aeefa7c736b6 b/fuzz/corpora/crl/51c370858932cd6484148d1ac441aeefa7c736b6
+new file mode 100644
+index 0000000..1889441
+Binary files /dev/null and b/fuzz/corpora/crl/51c370858932cd6484148d1ac441aeefa7c736b6 differ
+diff --git a/fuzz/corpora/crl/53b1aa6549696dac32b88dd7a91581a025965ca7 b/fuzz/corpora/crl/53b1aa6549696dac32b88dd7a91581a025965ca7
+new file mode 100644
+index 0000000..c6f8e34
+Binary files /dev/null and b/fuzz/corpora/crl/53b1aa6549696dac32b88dd7a91581a025965ca7 differ
+diff --git a/fuzz/corpora/crl/53d3be3c870d4da99e7eecda6d1c13c14d351472 b/fuzz/corpora/crl/53d3be3c870d4da99e7eecda6d1c13c14d351472
+new file mode 100644
+index 0000000..363f4ce
+Binary files /dev/null and b/fuzz/corpora/crl/53d3be3c870d4da99e7eecda6d1c13c14d351472 differ
+diff --git a/fuzz/corpora/crl/5432dc9b746de8ae989aa2576a8fc0753da80a8e b/fuzz/corpora/crl/5432dc9b746de8ae989aa2576a8fc0753da80a8e
+new file mode 100644
+index 0000000..163897b
+Binary files /dev/null and b/fuzz/corpora/crl/5432dc9b746de8ae989aa2576a8fc0753da80a8e differ
+diff --git a/fuzz/corpora/crl/5695ee7de7d1fe305238a6551532d7e7db01986b b/fuzz/corpora/crl/5695ee7de7d1fe305238a6551532d7e7db01986b
+new file mode 100644
+index 0000000..2266be4
+Binary files /dev/null and b/fuzz/corpora/crl/5695ee7de7d1fe305238a6551532d7e7db01986b differ
+diff --git a/fuzz/corpora/crl/56dc255891b45d27462dbec70266ae279dc0ecc3 b/fuzz/corpora/crl/56dc255891b45d27462dbec70266ae279dc0ecc3
+new file mode 100644
+index 0000000..1e2dd7f
+Binary files /dev/null and b/fuzz/corpora/crl/56dc255891b45d27462dbec70266ae279dc0ecc3 differ
+diff --git a/fuzz/corpora/crl/5750eb715b4aa0dcbb45e6c3174fb4a4e977bed1 b/fuzz/corpora/crl/5750eb715b4aa0dcbb45e6c3174fb4a4e977bed1
+new file mode 100644
+index 0000000..32502b2
+Binary files /dev/null and b/fuzz/corpora/crl/5750eb715b4aa0dcbb45e6c3174fb4a4e977bed1 differ
+diff --git a/fuzz/corpora/crl/57a8b2150e2ebb67cbf5e12d48a4160736e022cf b/fuzz/corpora/crl/57a8b2150e2ebb67cbf5e12d48a4160736e022cf
+new file mode 100644
+index 0000000..4f7ebcd
+Binary files /dev/null and b/fuzz/corpora/crl/57a8b2150e2ebb67cbf5e12d48a4160736e022cf differ
+diff --git a/fuzz/corpora/crl/582ba4b3f10f6191da7fc87ee6aabc2b3baacd2d b/fuzz/corpora/crl/582ba4b3f10f6191da7fc87ee6aabc2b3baacd2d
+new file mode 100644
+index 0000000..6f62b29
+Binary files /dev/null and b/fuzz/corpora/crl/582ba4b3f10f6191da7fc87ee6aabc2b3baacd2d differ
+diff --git a/fuzz/corpora/crl/585b06df2c379062400b843f5da6ff53abe51c35 b/fuzz/corpora/crl/585b06df2c379062400b843f5da6ff53abe51c35
+new file mode 100644
+index 0000000..f22d2ad
+Binary files /dev/null and b/fuzz/corpora/crl/585b06df2c379062400b843f5da6ff53abe51c35 differ
+diff --git a/fuzz/corpora/crl/588b72d8548dba138df51a9280fd168addb64d8a b/fuzz/corpora/crl/588b72d8548dba138df51a9280fd168addb64d8a
+new file mode 100644
+index 0000000..fb86665
+Binary files /dev/null and b/fuzz/corpora/crl/588b72d8548dba138df51a9280fd168addb64d8a differ
+diff --git a/fuzz/corpora/crl/58936640790fa015f4e633c752dbab71c2ca8c8f b/fuzz/corpora/crl/58936640790fa015f4e633c752dbab71c2ca8c8f
+new file mode 100644
+index 0000000..c436475
+Binary files /dev/null and b/fuzz/corpora/crl/58936640790fa015f4e633c752dbab71c2ca8c8f differ
+diff --git a/fuzz/corpora/crl/58b85b0dbd3560a22c9662079bdcf6d38ecd289b b/fuzz/corpora/crl/58b85b0dbd3560a22c9662079bdcf6d38ecd289b
+new file mode 100644
+index 0000000..be03592
+Binary files /dev/null and b/fuzz/corpora/crl/58b85b0dbd3560a22c9662079bdcf6d38ecd289b differ
+diff --git a/fuzz/corpora/crl/5a6ce9022fdea84bbf3aa9526b3604f3ef11d841 b/fuzz/corpora/crl/5a6ce9022fdea84bbf3aa9526b3604f3ef11d841
+new file mode 100644
+index 0000000..faa4b3d
+Binary files /dev/null and b/fuzz/corpora/crl/5a6ce9022fdea84bbf3aa9526b3604f3ef11d841 differ
+diff --git a/fuzz/corpora/crl/5af6b97e2d78b9762f8d52d191e0288c7bc48b19 b/fuzz/corpora/crl/5af6b97e2d78b9762f8d52d191e0288c7bc48b19
+new file mode 100644
+index 0000000..0288e33
+Binary files /dev/null and b/fuzz/corpora/crl/5af6b97e2d78b9762f8d52d191e0288c7bc48b19 differ
+diff --git a/fuzz/corpora/crl/5b00e10c7eae023dd7512a4764ffce8fa5ea85f6 b/fuzz/corpora/crl/5b00e10c7eae023dd7512a4764ffce8fa5ea85f6
+new file mode 100644
+index 0000000..2b16e02
+Binary files /dev/null and b/fuzz/corpora/crl/5b00e10c7eae023dd7512a4764ffce8fa5ea85f6 differ
+diff --git a/fuzz/corpora/crl/5b1c79d57395adbcd744853a563b149e0bc3e8ae b/fuzz/corpora/crl/5b1c79d57395adbcd744853a563b149e0bc3e8ae
+new file mode 100644
+index 0000000..b85498d
+Binary files /dev/null and b/fuzz/corpora/crl/5b1c79d57395adbcd744853a563b149e0bc3e8ae differ
+diff --git a/fuzz/corpora/crl/5b1db4060dbe3c6e377783dbeb98aa8c6d1fe03f b/fuzz/corpora/crl/5b1db4060dbe3c6e377783dbeb98aa8c6d1fe03f
+new file mode 100644
+index 0000000..8206a8b
+Binary files /dev/null and b/fuzz/corpora/crl/5b1db4060dbe3c6e377783dbeb98aa8c6d1fe03f differ
+diff --git a/fuzz/corpora/crl/5b9a775a7774ccb43581c3cca1c71b567d481e6b b/fuzz/corpora/crl/5b9a775a7774ccb43581c3cca1c71b567d481e6b
+new file mode 100644
+index 0000000..4d37478
+Binary files /dev/null and b/fuzz/corpora/crl/5b9a775a7774ccb43581c3cca1c71b567d481e6b differ
+diff --git a/fuzz/corpora/crl/5bab61eb53176449e25c2c82f172b82cb13ffb9d b/fuzz/corpora/crl/5bab61eb53176449e25c2c82f172b82cb13ffb9d
+new file mode 100644
+index 0000000..0d758c9
+Binary files /dev/null and b/fuzz/corpora/crl/5bab61eb53176449e25c2c82f172b82cb13ffb9d differ
+diff --git a/fuzz/corpora/crl/5bd7fd198d050f8e69f643ac59f8f60dc45189d6 b/fuzz/corpora/crl/5bd7fd198d050f8e69f643ac59f8f60dc45189d6
+new file mode 100644
+index 0000000..1d30dfe
+Binary files /dev/null and b/fuzz/corpora/crl/5bd7fd198d050f8e69f643ac59f8f60dc45189d6 differ
+diff --git a/fuzz/corpora/crl/5bdec94e9b5e70e9ab720b91286b7f3d00147f50 b/fuzz/corpora/crl/5bdec94e9b5e70e9ab720b91286b7f3d00147f50
+new file mode 100644
+index 0000000..e4a8889
+Binary files /dev/null and b/fuzz/corpora/crl/5bdec94e9b5e70e9ab720b91286b7f3d00147f50 differ
+diff --git a/fuzz/corpora/crl/5c5601a479a2d75a22e0274570a943ae32083960 b/fuzz/corpora/crl/5c5601a479a2d75a22e0274570a943ae32083960
+new file mode 100644
+index 0000000..ed6d5e9
+Binary files /dev/null and b/fuzz/corpora/crl/5c5601a479a2d75a22e0274570a943ae32083960 differ
+diff --git a/fuzz/corpora/crl/5c736f6aa737601d6e3574c21d8cd3425378fb9e b/fuzz/corpora/crl/5c736f6aa737601d6e3574c21d8cd3425378fb9e
+new file mode 100644
+index 0000000..b617260
+Binary files /dev/null and b/fuzz/corpora/crl/5c736f6aa737601d6e3574c21d8cd3425378fb9e differ
+diff --git a/fuzz/corpora/crl/5d308f0df0c3a0280aa05e31ee6dc81c22f147ee b/fuzz/corpora/crl/5d308f0df0c3a0280aa05e31ee6dc81c22f147ee
+new file mode 100644
+index 0000000..ea3e3ae
+Binary files /dev/null and b/fuzz/corpora/crl/5d308f0df0c3a0280aa05e31ee6dc81c22f147ee differ
+diff --git a/fuzz/corpora/crl/5d88980c72a84f870198582896eb7d01ae4c1206 b/fuzz/corpora/crl/5d88980c72a84f870198582896eb7d01ae4c1206
+new file mode 100644
+index 0000000..ba91b46
+Binary files /dev/null and b/fuzz/corpora/crl/5d88980c72a84f870198582896eb7d01ae4c1206 differ
+diff --git a/fuzz/corpora/crl/5dbdb27364bec11fc5efd854d554705565c219fa b/fuzz/corpora/crl/5dbdb27364bec11fc5efd854d554705565c219fa
+new file mode 100644
+index 0000000..e96aa61
+Binary files /dev/null and b/fuzz/corpora/crl/5dbdb27364bec11fc5efd854d554705565c219fa differ
+diff --git a/fuzz/corpora/crl/5ea4fb47f04fea19ff251727652e57ac54ac1d37 b/fuzz/corpora/crl/5ea4fb47f04fea19ff251727652e57ac54ac1d37
+new file mode 100644
+index 0000000..8a75459
+Binary files /dev/null and b/fuzz/corpora/crl/5ea4fb47f04fea19ff251727652e57ac54ac1d37 differ
+diff --git a/fuzz/corpora/crl/5f2ebfcac46ddcd8e46a2b35e394602c2865cbf8 b/fuzz/corpora/crl/5f2ebfcac46ddcd8e46a2b35e394602c2865cbf8
+new file mode 100644
+index 0000000..e13890e
+Binary files /dev/null and b/fuzz/corpora/crl/5f2ebfcac46ddcd8e46a2b35e394602c2865cbf8 differ
+diff --git a/fuzz/corpora/crl/5ff699115a66ebc1a3a05327b0d56a7333db09ee b/fuzz/corpora/crl/5ff699115a66ebc1a3a05327b0d56a7333db09ee
+new file mode 100644
+index 0000000..b9baeb3
+Binary files /dev/null and b/fuzz/corpora/crl/5ff699115a66ebc1a3a05327b0d56a7333db09ee differ
+diff --git a/fuzz/corpora/crl/60088a52ca9d1d51e3d98f43005f6f9453fa2eba b/fuzz/corpora/crl/60088a52ca9d1d51e3d98f43005f6f9453fa2eba
+new file mode 100644
+index 0000000..608e86e
+Binary files /dev/null and b/fuzz/corpora/crl/60088a52ca9d1d51e3d98f43005f6f9453fa2eba differ
+diff --git a/fuzz/corpora/crl/6033d702f671aa595fe4d19135e88b3c7231f27d b/fuzz/corpora/crl/6033d702f671aa595fe4d19135e88b3c7231f27d
+new file mode 100644
+index 0000000..d93f6ee
+Binary files /dev/null and b/fuzz/corpora/crl/6033d702f671aa595fe4d19135e88b3c7231f27d differ
+diff --git a/fuzz/corpora/crl/6065fa4b10c1f21e184db1925234c656f19c94d3 b/fuzz/corpora/crl/6065fa4b10c1f21e184db1925234c656f19c94d3
+new file mode 100644
+index 0000000..08e24cc
+Binary files /dev/null and b/fuzz/corpora/crl/6065fa4b10c1f21e184db1925234c656f19c94d3 differ
+diff --git a/fuzz/corpora/crl/609618b06619341c603fca576849cba65ab99380 b/fuzz/corpora/crl/609618b06619341c603fca576849cba65ab99380
+new file mode 100644
+index 0000000..ef022fb
+Binary files /dev/null and b/fuzz/corpora/crl/609618b06619341c603fca576849cba65ab99380 differ
+diff --git a/fuzz/corpora/crl/60b4bbae2622c3b84480e6ecada59d09f4d4cc21 b/fuzz/corpora/crl/60b4bbae2622c3b84480e6ecada59d09f4d4cc21
+new file mode 100644
+index 0000000..9b7bf58
+Binary files /dev/null and b/fuzz/corpora/crl/60b4bbae2622c3b84480e6ecada59d09f4d4cc21 differ
+diff --git a/fuzz/corpora/crl/614cfbf3c666a6531602fc153e1550790674b138 b/fuzz/corpora/crl/614cfbf3c666a6531602fc153e1550790674b138
+new file mode 100644
+index 0000000..e8d7676
+Binary files /dev/null and b/fuzz/corpora/crl/614cfbf3c666a6531602fc153e1550790674b138 differ
+diff --git a/fuzz/corpora/crl/6156ab999759e91390988baf66f4ba2b840b33c5 b/fuzz/corpora/crl/6156ab999759e91390988baf66f4ba2b840b33c5
+new file mode 100644
+index 0000000..70f1401
+Binary files /dev/null and b/fuzz/corpora/crl/6156ab999759e91390988baf66f4ba2b840b33c5 differ
+diff --git a/fuzz/corpora/crl/615a7f31efd5bfedcb481cad6ce56afa549014e0 b/fuzz/corpora/crl/615a7f31efd5bfedcb481cad6ce56afa549014e0
+new file mode 100644
+index 0000000..6dfac9c
+Binary files /dev/null and b/fuzz/corpora/crl/615a7f31efd5bfedcb481cad6ce56afa549014e0 differ
+diff --git a/fuzz/corpora/crl/61dde9e752df788f8d86f7d48f0a87efef0c0e79 b/fuzz/corpora/crl/61dde9e752df788f8d86f7d48f0a87efef0c0e79
+new file mode 100644
+index 0000000..8d9f608
+Binary files /dev/null and b/fuzz/corpora/crl/61dde9e752df788f8d86f7d48f0a87efef0c0e79 differ
+diff --git a/fuzz/corpora/crl/622018992549bf7683cdd0253e53b4b405ecff32 b/fuzz/corpora/crl/622018992549bf7683cdd0253e53b4b405ecff32
+new file mode 100644
+index 0000000..6a656b2
+Binary files /dev/null and b/fuzz/corpora/crl/622018992549bf7683cdd0253e53b4b405ecff32 differ
+diff --git a/fuzz/corpora/crl/62b44de3557137d1ef7bea89d36e2d746c23ac3b b/fuzz/corpora/crl/62b44de3557137d1ef7bea89d36e2d746c23ac3b
+new file mode 100644
+index 0000000..7363f90
+Binary files /dev/null and b/fuzz/corpora/crl/62b44de3557137d1ef7bea89d36e2d746c23ac3b differ
+diff --git a/fuzz/corpora/crl/636bb5e5c0838f7b85cf34d1094abae59f4303eb b/fuzz/corpora/crl/636bb5e5c0838f7b85cf34d1094abae59f4303eb
+new file mode 100644
+index 0000000..403346f
+Binary files /dev/null and b/fuzz/corpora/crl/636bb5e5c0838f7b85cf34d1094abae59f4303eb differ
+diff --git a/fuzz/corpora/crl/638241ebf3d412b01b252f42e57b4cc22ab35338 b/fuzz/corpora/crl/638241ebf3d412b01b252f42e57b4cc22ab35338
+new file mode 100644
+index 0000000..096a029
+Binary files /dev/null and b/fuzz/corpora/crl/638241ebf3d412b01b252f42e57b4cc22ab35338 differ
+diff --git a/fuzz/corpora/crl/63dec38997b3d6795f5b8c00e4d5086100e17da7 b/fuzz/corpora/crl/63dec38997b3d6795f5b8c00e4d5086100e17da7
+new file mode 100644
+index 0000000..72a8c9e
+Binary files /dev/null and b/fuzz/corpora/crl/63dec38997b3d6795f5b8c00e4d5086100e17da7 differ
+diff --git a/fuzz/corpora/crl/63f34c8d057dc84df6596e540d99a0d8d0058c00 b/fuzz/corpora/crl/63f34c8d057dc84df6596e540d99a0d8d0058c00
+new file mode 100644
+index 0000000..9a16f53
+Binary files /dev/null and b/fuzz/corpora/crl/63f34c8d057dc84df6596e540d99a0d8d0058c00 differ
+diff --git a/fuzz/corpora/crl/658d735df1f1f4c375f52b42c66a668cffa82a15 b/fuzz/corpora/crl/658d735df1f1f4c375f52b42c66a668cffa82a15
+new file mode 100644
+index 0000000..656952c
+Binary files /dev/null and b/fuzz/corpora/crl/658d735df1f1f4c375f52b42c66a668cffa82a15 differ
+diff --git a/fuzz/corpora/crl/65f35cf2db77d1a8c223fbf89c012d979d7d9767 b/fuzz/corpora/crl/65f35cf2db77d1a8c223fbf89c012d979d7d9767
+new file mode 100644
+index 0000000..eaa04d0
+Binary files /dev/null and b/fuzz/corpora/crl/65f35cf2db77d1a8c223fbf89c012d979d7d9767 differ
+diff --git a/fuzz/corpora/crl/6739e3e8295c657ccf333dd88a07eada3c136f04 b/fuzz/corpora/crl/6739e3e8295c657ccf333dd88a07eada3c136f04
+new file mode 100644
+index 0000000..e42bd92
+Binary files /dev/null and b/fuzz/corpora/crl/6739e3e8295c657ccf333dd88a07eada3c136f04 differ
+diff --git a/fuzz/corpora/crl/674e1a629c91ae397dfc3ad27f3f11b93de7f4f5 b/fuzz/corpora/crl/674e1a629c91ae397dfc3ad27f3f11b93de7f4f5
+new file mode 100644
+index 0000000..c77db27
+Binary files /dev/null and b/fuzz/corpora/crl/674e1a629c91ae397dfc3ad27f3f11b93de7f4f5 differ
+diff --git a/fuzz/corpora/crl/67591a53bed61aacea3f5036d514e5e0656a4989 b/fuzz/corpora/crl/67591a53bed61aacea3f5036d514e5e0656a4989
+new file mode 100644
+index 0000000..36a02db
+Binary files /dev/null and b/fuzz/corpora/crl/67591a53bed61aacea3f5036d514e5e0656a4989 differ
+diff --git a/fuzz/corpora/crl/67bf8a2be89006562be0965406e2a217610ad5fd b/fuzz/corpora/crl/67bf8a2be89006562be0965406e2a217610ad5fd
+new file mode 100644
+index 0000000..710e451
+Binary files /dev/null and b/fuzz/corpora/crl/67bf8a2be89006562be0965406e2a217610ad5fd differ
+diff --git a/fuzz/corpora/crl/680b42859bf70ac2436ec6b3c52c687e7dea81df b/fuzz/corpora/crl/680b42859bf70ac2436ec6b3c52c687e7dea81df
+new file mode 100644
+index 0000000..2fdcd49
+Binary files /dev/null and b/fuzz/corpora/crl/680b42859bf70ac2436ec6b3c52c687e7dea81df differ
+diff --git a/fuzz/corpora/crl/68297819dc1add7222f7e0f0b6578e4dd233c9a2 b/fuzz/corpora/crl/68297819dc1add7222f7e0f0b6578e4dd233c9a2
+new file mode 100644
+index 0000000..32ca9c6
+Binary files /dev/null and b/fuzz/corpora/crl/68297819dc1add7222f7e0f0b6578e4dd233c9a2 differ
+diff --git a/fuzz/corpora/crl/68380fd9adeaf79ded754fdb2cbb0b60b58ffbfe b/fuzz/corpora/crl/68380fd9adeaf79ded754fdb2cbb0b60b58ffbfe
+new file mode 100644
+index 0000000..37a21a4
+Binary files /dev/null and b/fuzz/corpora/crl/68380fd9adeaf79ded754fdb2cbb0b60b58ffbfe differ
+diff --git a/fuzz/corpora/crl/6848cc488ee585e83bc855a1a9c5e1f973cafeeb b/fuzz/corpora/crl/6848cc488ee585e83bc855a1a9c5e1f973cafeeb
+new file mode 100644
+index 0000000..95773ca
+Binary files /dev/null and b/fuzz/corpora/crl/6848cc488ee585e83bc855a1a9c5e1f973cafeeb differ
+diff --git a/fuzz/corpora/crl/686012b70657a4cc7c535feef1ddbb00c26e4c4b b/fuzz/corpora/crl/686012b70657a4cc7c535feef1ddbb00c26e4c4b
+new file mode 100644
+index 0000000..59919dd
+Binary files /dev/null and b/fuzz/corpora/crl/686012b70657a4cc7c535feef1ddbb00c26e4c4b differ
+diff --git a/fuzz/corpora/crl/6883e8fa877178b5d02a4956ebb27bff7e7ff336 b/fuzz/corpora/crl/6883e8fa877178b5d02a4956ebb27bff7e7ff336
+new file mode 100644
+index 0000000..5ab6d75
+Binary files /dev/null and b/fuzz/corpora/crl/6883e8fa877178b5d02a4956ebb27bff7e7ff336 differ
+diff --git a/fuzz/corpora/crl/68da66fbebc03f0ce0de841effa1e1d5fab24be4 b/fuzz/corpora/crl/68da66fbebc03f0ce0de841effa1e1d5fab24be4
+new file mode 100644
+index 0000000..861835a
+Binary files /dev/null and b/fuzz/corpora/crl/68da66fbebc03f0ce0de841effa1e1d5fab24be4 differ
+diff --git a/fuzz/corpora/crl/6937a1d3f2a7017f8c2251e16e282fe244fa9bc5 b/fuzz/corpora/crl/6937a1d3f2a7017f8c2251e16e282fe244fa9bc5
+new file mode 100644
+index 0000000..21ac5e2
+Binary files /dev/null and b/fuzz/corpora/crl/6937a1d3f2a7017f8c2251e16e282fe244fa9bc5 differ
+diff --git a/fuzz/corpora/crl/697f2f0a98aa35cc2ae5d9f63e9df69b58e57f13 b/fuzz/corpora/crl/697f2f0a98aa35cc2ae5d9f63e9df69b58e57f13
+new file mode 100644
+index 0000000..93d8086
+Binary files /dev/null and b/fuzz/corpora/crl/697f2f0a98aa35cc2ae5d9f63e9df69b58e57f13 differ
+diff --git a/fuzz/corpora/crl/6a0c9646184a6c476d666a1c22d658641ddd6340 b/fuzz/corpora/crl/6a0c9646184a6c476d666a1c22d658641ddd6340
+new file mode 100644
+index 0000000..f7156b4
+Binary files /dev/null and b/fuzz/corpora/crl/6a0c9646184a6c476d666a1c22d658641ddd6340 differ
+diff --git a/fuzz/corpora/crl/6a1c50471c698a66b893dad100f76069292a54d1 b/fuzz/corpora/crl/6a1c50471c698a66b893dad100f76069292a54d1
+new file mode 100644
+index 0000000..1edb935
+Binary files /dev/null and b/fuzz/corpora/crl/6a1c50471c698a66b893dad100f76069292a54d1 differ
+diff --git a/fuzz/corpora/crl/6af38598d6d048d0b8123aeb1ef230bb4d34cb7c b/fuzz/corpora/crl/6af38598d6d048d0b8123aeb1ef230bb4d34cb7c
+new file mode 100644
+index 0000000..2fa77b5
+Binary files /dev/null and b/fuzz/corpora/crl/6af38598d6d048d0b8123aeb1ef230bb4d34cb7c differ
+diff --git a/fuzz/corpora/crl/6b205568be041988e365a4629a6181036963a43b b/fuzz/corpora/crl/6b205568be041988e365a4629a6181036963a43b
+new file mode 100644
+index 0000000..8df2cca
+Binary files /dev/null and b/fuzz/corpora/crl/6b205568be041988e365a4629a6181036963a43b differ
+diff --git a/fuzz/corpora/crl/6b35868fe792cf582dec1d778579ea9e080cea16 b/fuzz/corpora/crl/6b35868fe792cf582dec1d778579ea9e080cea16
+new file mode 100644
+index 0000000..35167c9
+Binary files /dev/null and b/fuzz/corpora/crl/6b35868fe792cf582dec1d778579ea9e080cea16 differ
+diff --git a/fuzz/corpora/crl/6b5b34001220d66916b6993b17b225375c51e0f5 b/fuzz/corpora/crl/6b5b34001220d66916b6993b17b225375c51e0f5
+new file mode 100644
+index 0000000..4d8d982
+Binary files /dev/null and b/fuzz/corpora/crl/6b5b34001220d66916b6993b17b225375c51e0f5 differ
+diff --git a/fuzz/corpora/crl/6b85661cf540c7d161b8d57d52c999cb5cb0406c b/fuzz/corpora/crl/6b85661cf540c7d161b8d57d52c999cb5cb0406c
+new file mode 100644
+index 0000000..b5f9ddd
+Binary files /dev/null and b/fuzz/corpora/crl/6b85661cf540c7d161b8d57d52c999cb5cb0406c differ
+diff --git a/fuzz/corpora/crl/6c484f685b8fe4e26d0a055cf4d8cd980fba7849 b/fuzz/corpora/crl/6c484f685b8fe4e26d0a055cf4d8cd980fba7849
+new file mode 100644
+index 0000000..8ec3f73
+Binary files /dev/null and b/fuzz/corpora/crl/6c484f685b8fe4e26d0a055cf4d8cd980fba7849 differ
+diff --git a/fuzz/corpora/crl/6d434d35927849337b4fde15fc1a62f1e47ec3e3 b/fuzz/corpora/crl/6d434d35927849337b4fde15fc1a62f1e47ec3e3
+new file mode 100644
+index 0000000..1ac2773
+Binary files /dev/null and b/fuzz/corpora/crl/6d434d35927849337b4fde15fc1a62f1e47ec3e3 differ
+diff --git a/fuzz/corpora/crl/6d4a507099cbb3a7b94154c7a1921bf5b4b22c70 b/fuzz/corpora/crl/6d4a507099cbb3a7b94154c7a1921bf5b4b22c70
+new file mode 100644
+index 0000000..2ac6e0b
+Binary files /dev/null and b/fuzz/corpora/crl/6d4a507099cbb3a7b94154c7a1921bf5b4b22c70 differ
+diff --git a/fuzz/corpora/crl/6d51a028012605703e4428904fa17cee418bff80 b/fuzz/corpora/crl/6d51a028012605703e4428904fa17cee418bff80
+new file mode 100644
+index 0000000..dd9288f
+Binary files /dev/null and b/fuzz/corpora/crl/6d51a028012605703e4428904fa17cee418bff80 differ
+diff --git a/fuzz/corpora/crl/6fe1726d8eb08191182bbcf27b1f67d32f103406 b/fuzz/corpora/crl/6fe1726d8eb08191182bbcf27b1f67d32f103406
+new file mode 100644
+index 0000000..9f7c70d
+Binary files /dev/null and b/fuzz/corpora/crl/6fe1726d8eb08191182bbcf27b1f67d32f103406 differ
+diff --git a/fuzz/corpora/crl/6ffab91e2f72df75f792576c8b5f4835657a94ad b/fuzz/corpora/crl/6ffab91e2f72df75f792576c8b5f4835657a94ad
+new file mode 100644
+index 0000000..aa2e636
+Binary files /dev/null and b/fuzz/corpora/crl/6ffab91e2f72df75f792576c8b5f4835657a94ad differ
+diff --git a/fuzz/corpora/crl/6ffcd4a1916012581533d38765ed2275bb066e0e b/fuzz/corpora/crl/6ffcd4a1916012581533d38765ed2275bb066e0e
+new file mode 100644
+index 0000000..aed02aa
+Binary files /dev/null and b/fuzz/corpora/crl/6ffcd4a1916012581533d38765ed2275bb066e0e differ
+diff --git a/fuzz/corpora/crl/70171fbcd5774489cf914f146e3529e30540ece7 b/fuzz/corpora/crl/70171fbcd5774489cf914f146e3529e30540ece7
+new file mode 100644
+index 0000000..513da45
+Binary files /dev/null and b/fuzz/corpora/crl/70171fbcd5774489cf914f146e3529e30540ece7 differ
+diff --git a/fuzz/corpora/crl/7031491edea2df8cf238aa207bf9475f28a32c79 b/fuzz/corpora/crl/7031491edea2df8cf238aa207bf9475f28a32c79
+new file mode 100644
+index 0000000..e60d51a
+Binary files /dev/null and b/fuzz/corpora/crl/7031491edea2df8cf238aa207bf9475f28a32c79 differ
+diff --git a/fuzz/corpora/crl/704a87da7bbfad4933905923ff6efc01fbd6300f b/fuzz/corpora/crl/704a87da7bbfad4933905923ff6efc01fbd6300f
+new file mode 100644
+index 0000000..8321fad
+Binary files /dev/null and b/fuzz/corpora/crl/704a87da7bbfad4933905923ff6efc01fbd6300f differ
+diff --git a/fuzz/corpora/crl/70929e5bd0873ddf0ebb07c8369234cfbcea7810 b/fuzz/corpora/crl/70929e5bd0873ddf0ebb07c8369234cfbcea7810
+new file mode 100644
+index 0000000..7f35db8
+Binary files /dev/null and b/fuzz/corpora/crl/70929e5bd0873ddf0ebb07c8369234cfbcea7810 differ
+diff --git a/fuzz/corpora/crl/713cfe77c2b125c02067abf8077afdf20c30f0a6 b/fuzz/corpora/crl/713cfe77c2b125c02067abf8077afdf20c30f0a6
+new file mode 100644
+index 0000000..69bf862
+Binary files /dev/null and b/fuzz/corpora/crl/713cfe77c2b125c02067abf8077afdf20c30f0a6 differ
+diff --git a/fuzz/corpora/crl/715d8af58363ae5c3dbe0dde1ac7f27522778e0a b/fuzz/corpora/crl/715d8af58363ae5c3dbe0dde1ac7f27522778e0a
+new file mode 100644
+index 0000000..a2ca5b0
+Binary files /dev/null and b/fuzz/corpora/crl/715d8af58363ae5c3dbe0dde1ac7f27522778e0a differ
+diff --git a/fuzz/corpora/crl/71c342ab087a30664b93719bcbed6f3b1f160345 b/fuzz/corpora/crl/71c342ab087a30664b93719bcbed6f3b1f160345
+new file mode 100644
+index 0000000..dd3ddb2
+Binary files /dev/null and b/fuzz/corpora/crl/71c342ab087a30664b93719bcbed6f3b1f160345 differ
+diff --git a/fuzz/corpora/crl/71f30d6a69c99f34923c3bfff7890a7b04cc0ccb b/fuzz/corpora/crl/71f30d6a69c99f34923c3bfff7890a7b04cc0ccb
+new file mode 100644
+index 0000000..183717a
+Binary files /dev/null and b/fuzz/corpora/crl/71f30d6a69c99f34923c3bfff7890a7b04cc0ccb differ
+diff --git a/fuzz/corpora/crl/725bddf80b384ea23345e4c9a916fc0425796e8b b/fuzz/corpora/crl/725bddf80b384ea23345e4c9a916fc0425796e8b
+new file mode 100644
+index 0000000..f716fa1
+Binary files /dev/null and b/fuzz/corpora/crl/725bddf80b384ea23345e4c9a916fc0425796e8b differ
+diff --git a/fuzz/corpora/crl/72756b64f46f4b5ea9ef1a536ed9836ffd71a8c3 b/fuzz/corpora/crl/72756b64f46f4b5ea9ef1a536ed9836ffd71a8c3
+new file mode 100644
+index 0000000..c522619
+Binary files /dev/null and b/fuzz/corpora/crl/72756b64f46f4b5ea9ef1a536ed9836ffd71a8c3 differ
+diff --git a/fuzz/corpora/crl/7290ba7e50182ab63d375b64ba1988a152672154 b/fuzz/corpora/crl/7290ba7e50182ab63d375b64ba1988a152672154
+new file mode 100644
+index 0000000..632f8e3
+Binary files /dev/null and b/fuzz/corpora/crl/7290ba7e50182ab63d375b64ba1988a152672154 differ
+diff --git a/fuzz/corpora/crl/729c18dbdcfe0faafb02aca9161e04c99a3d61ed b/fuzz/corpora/crl/729c18dbdcfe0faafb02aca9161e04c99a3d61ed
+new file mode 100644
+index 0000000..6359522
+Binary files /dev/null and b/fuzz/corpora/crl/729c18dbdcfe0faafb02aca9161e04c99a3d61ed differ
+diff --git a/fuzz/corpora/crl/72e2e5b33b94918aeb50f752ac9aa2261c73721a b/fuzz/corpora/crl/72e2e5b33b94918aeb50f752ac9aa2261c73721a
+new file mode 100644
+index 0000000..acccb25
+Binary files /dev/null and b/fuzz/corpora/crl/72e2e5b33b94918aeb50f752ac9aa2261c73721a differ
+diff --git a/fuzz/corpora/crl/72fe0f4003bfa89b80f606bbb14bf84416d15736 b/fuzz/corpora/crl/72fe0f4003bfa89b80f606bbb14bf84416d15736
+new file mode 100644
+index 0000000..a2e7989
+Binary files /dev/null and b/fuzz/corpora/crl/72fe0f4003bfa89b80f606bbb14bf84416d15736 differ
+diff --git a/fuzz/corpora/crl/731fab36edafad725e76f2eda1ffde8ce72e8305 b/fuzz/corpora/crl/731fab36edafad725e76f2eda1ffde8ce72e8305
+new file mode 100644
+index 0000000..6c0fa03
+Binary files /dev/null and b/fuzz/corpora/crl/731fab36edafad725e76f2eda1ffde8ce72e8305 differ
+diff --git a/fuzz/corpora/crl/732e64b25806cfb83caddc0671863dc79185f4ea b/fuzz/corpora/crl/732e64b25806cfb83caddc0671863dc79185f4ea
+new file mode 100644
+index 0000000..674be2e
+Binary files /dev/null and b/fuzz/corpora/crl/732e64b25806cfb83caddc0671863dc79185f4ea differ
+diff --git a/fuzz/corpora/crl/73b9d405419139cfd67c8f96bb04145207561750 b/fuzz/corpora/crl/73b9d405419139cfd67c8f96bb04145207561750
+new file mode 100644
+index 0000000..0ebd9ec
+Binary files /dev/null and b/fuzz/corpora/crl/73b9d405419139cfd67c8f96bb04145207561750 differ
+diff --git a/fuzz/corpora/crl/73da2059b27c92c3d7bbd71cb62c381399bce721 b/fuzz/corpora/crl/73da2059b27c92c3d7bbd71cb62c381399bce721
+new file mode 100644
+index 0000000..f7cd122
+Binary files /dev/null and b/fuzz/corpora/crl/73da2059b27c92c3d7bbd71cb62c381399bce721 differ
+diff --git a/fuzz/corpora/crl/73e89884ec73ee613af8ee2b57761aa101f5d7e1 b/fuzz/corpora/crl/73e89884ec73ee613af8ee2b57761aa101f5d7e1
+new file mode 100644
+index 0000000..1667167
+Binary files /dev/null and b/fuzz/corpora/crl/73e89884ec73ee613af8ee2b57761aa101f5d7e1 differ
+diff --git a/fuzz/corpora/crl/74a2d894475e2770a78ac1054893494a589fdc1e b/fuzz/corpora/crl/74a2d894475e2770a78ac1054893494a589fdc1e
+new file mode 100644
+index 0000000..a6c7c79
+Binary files /dev/null and b/fuzz/corpora/crl/74a2d894475e2770a78ac1054893494a589fdc1e differ
+diff --git a/fuzz/corpora/crl/755e0acce5d81d52c2a471ca83df6f90b3ffb7b2 b/fuzz/corpora/crl/755e0acce5d81d52c2a471ca83df6f90b3ffb7b2
+new file mode 100644
+index 0000000..b9997f7
+Binary files /dev/null and b/fuzz/corpora/crl/755e0acce5d81d52c2a471ca83df6f90b3ffb7b2 differ
+diff --git a/fuzz/corpora/crl/7561c9723ef4db242c695e2df9557d17cc58326f b/fuzz/corpora/crl/7561c9723ef4db242c695e2df9557d17cc58326f
+new file mode 100644
+index 0000000..3133d0e
+Binary files /dev/null and b/fuzz/corpora/crl/7561c9723ef4db242c695e2df9557d17cc58326f differ
+diff --git a/fuzz/corpora/crl/757442f2d998e9d151d8742f780f94cb0bdada26 b/fuzz/corpora/crl/757442f2d998e9d151d8742f780f94cb0bdada26
+new file mode 100644
+index 0000000..c44ad8a
+Binary files /dev/null and b/fuzz/corpora/crl/757442f2d998e9d151d8742f780f94cb0bdada26 differ
+diff --git a/fuzz/corpora/crl/75afcefeb6a5e8855d2dcb6deb349a3d2a12045c b/fuzz/corpora/crl/75afcefeb6a5e8855d2dcb6deb349a3d2a12045c
+new file mode 100644
+index 0000000..f0b872a
+Binary files /dev/null and b/fuzz/corpora/crl/75afcefeb6a5e8855d2dcb6deb349a3d2a12045c differ
+diff --git a/fuzz/corpora/crl/75d34ab632a8786a53d09099df4acb54ebc10b7c b/fuzz/corpora/crl/75d34ab632a8786a53d09099df4acb54ebc10b7c
+new file mode 100644
+index 0000000..b0d7cff
+Binary files /dev/null and b/fuzz/corpora/crl/75d34ab632a8786a53d09099df4acb54ebc10b7c differ
+diff --git a/fuzz/corpora/crl/75fc631a86fe5fc4e793c43d35e96d572d517368 b/fuzz/corpora/crl/75fc631a86fe5fc4e793c43d35e96d572d517368
+new file mode 100644
+index 0000000..c42ea86
+Binary files /dev/null and b/fuzz/corpora/crl/75fc631a86fe5fc4e793c43d35e96d572d517368 differ
+diff --git a/fuzz/corpora/crl/772bbcca0123e5e6d0a375434ef34f6b50e9f233 b/fuzz/corpora/crl/772bbcca0123e5e6d0a375434ef34f6b50e9f233
+new file mode 100644
+index 0000000..0d0d87d
+Binary files /dev/null and b/fuzz/corpora/crl/772bbcca0123e5e6d0a375434ef34f6b50e9f233 differ
+diff --git a/fuzz/corpora/crl/7839bf2c39c1615f4a0dce0423a007f567ee3065 b/fuzz/corpora/crl/7839bf2c39c1615f4a0dce0423a007f567ee3065
+new file mode 100644
+index 0000000..0e4f394
+Binary files /dev/null and b/fuzz/corpora/crl/7839bf2c39c1615f4a0dce0423a007f567ee3065 differ
+diff --git a/fuzz/corpora/crl/78558f5837253a7786bf7f8469859a8f368f3d96 b/fuzz/corpora/crl/78558f5837253a7786bf7f8469859a8f368f3d96
+new file mode 100644
+index 0000000..77366d7
+Binary files /dev/null and b/fuzz/corpora/crl/78558f5837253a7786bf7f8469859a8f368f3d96 differ
+diff --git a/fuzz/corpora/crl/78c0e3d2d2a657a561187ac30d5fdbd36663708b b/fuzz/corpora/crl/78c0e3d2d2a657a561187ac30d5fdbd36663708b
+new file mode 100644
+index 0000000..958066b
+Binary files /dev/null and b/fuzz/corpora/crl/78c0e3d2d2a657a561187ac30d5fdbd36663708b differ
+diff --git a/fuzz/corpora/crl/790ffc01dba7f4f90fa4ff4982306366fb6615e5 b/fuzz/corpora/crl/790ffc01dba7f4f90fa4ff4982306366fb6615e5
+new file mode 100644
+index 0000000..3219230
+Binary files /dev/null and b/fuzz/corpora/crl/790ffc01dba7f4f90fa4ff4982306366fb6615e5 differ
+diff --git a/fuzz/corpora/crl/79341515d4908129c16475abb3d15d88a123d701 b/fuzz/corpora/crl/79341515d4908129c16475abb3d15d88a123d701
+new file mode 100644
+index 0000000..60cff7f
+Binary files /dev/null and b/fuzz/corpora/crl/79341515d4908129c16475abb3d15d88a123d701 differ
+diff --git a/fuzz/corpora/crl/794c40ba683cc4b3319fc43a54dfc51b54b29020 b/fuzz/corpora/crl/794c40ba683cc4b3319fc43a54dfc51b54b29020
+new file mode 100644
+index 0000000..a8cb418
+Binary files /dev/null and b/fuzz/corpora/crl/794c40ba683cc4b3319fc43a54dfc51b54b29020 differ
+diff --git a/fuzz/corpora/crl/7ab3f00de4370969ab49433c0b384dd9459b931e b/fuzz/corpora/crl/7ab3f00de4370969ab49433c0b384dd9459b931e
+new file mode 100644
+index 0000000..ab94fa0
+Binary files /dev/null and b/fuzz/corpora/crl/7ab3f00de4370969ab49433c0b384dd9459b931e differ
+diff --git a/fuzz/corpora/crl/7b3678849faeb8f8e4d04309621a4114dc7c77e1 b/fuzz/corpora/crl/7b3678849faeb8f8e4d04309621a4114dc7c77e1
+new file mode 100644
+index 0000000..42a526b
+Binary files /dev/null and b/fuzz/corpora/crl/7b3678849faeb8f8e4d04309621a4114dc7c77e1 differ
+diff --git a/fuzz/corpora/crl/7b3fe328885b45c52581f930f034865fa674e271 b/fuzz/corpora/crl/7b3fe328885b45c52581f930f034865fa674e271
+new file mode 100644
+index 0000000..79af835
+Binary files /dev/null and b/fuzz/corpora/crl/7b3fe328885b45c52581f930f034865fa674e271 differ
+diff --git a/fuzz/corpora/crl/7b66e404d9650ee52fcbfe7602bcb27e84ef5c73 b/fuzz/corpora/crl/7b66e404d9650ee52fcbfe7602bcb27e84ef5c73
+new file mode 100644
+index 0000000..40d776f
+Binary files /dev/null and b/fuzz/corpora/crl/7b66e404d9650ee52fcbfe7602bcb27e84ef5c73 differ
+diff --git a/fuzz/corpora/crl/7b766597780ed9360b712dd912a01d76f726d04b b/fuzz/corpora/crl/7b766597780ed9360b712dd912a01d76f726d04b
+new file mode 100644
+index 0000000..a3443c4
+Binary files /dev/null and b/fuzz/corpora/crl/7b766597780ed9360b712dd912a01d76f726d04b differ
+diff --git a/fuzz/corpora/crl/7b9d945ea09033c49fe32fd91ce74ee9906e26a1 b/fuzz/corpora/crl/7b9d945ea09033c49fe32fd91ce74ee9906e26a1
+new file mode 100644
+index 0000000..c089e88
+Binary files /dev/null and b/fuzz/corpora/crl/7b9d945ea09033c49fe32fd91ce74ee9906e26a1 differ
+diff --git a/fuzz/corpora/crl/7c471571be57aa164939f16c8446c5e4054a8021 b/fuzz/corpora/crl/7c471571be57aa164939f16c8446c5e4054a8021
+new file mode 100644
+index 0000000..9f0981a
+Binary files /dev/null and b/fuzz/corpora/crl/7c471571be57aa164939f16c8446c5e4054a8021 differ
+diff --git a/fuzz/corpora/crl/7c49786e60a122afca231878f9dc5d7ed57b4d24 b/fuzz/corpora/crl/7c49786e60a122afca231878f9dc5d7ed57b4d24
+new file mode 100644
+index 0000000..04104b1
+Binary files /dev/null and b/fuzz/corpora/crl/7c49786e60a122afca231878f9dc5d7ed57b4d24 differ
+diff --git a/fuzz/corpora/crl/7c629f19a9a0342f38fcf019f99a66896678955f b/fuzz/corpora/crl/7c629f19a9a0342f38fcf019f99a66896678955f
+new file mode 100644
+index 0000000..af8a36e
+Binary files /dev/null and b/fuzz/corpora/crl/7c629f19a9a0342f38fcf019f99a66896678955f differ
+diff --git a/fuzz/corpora/crl/7ca9a58e698d23df06cf089f48b30a8aa98124af b/fuzz/corpora/crl/7ca9a58e698d23df06cf089f48b30a8aa98124af
+new file mode 100644
+index 0000000..88fe0d3
+Binary files /dev/null and b/fuzz/corpora/crl/7ca9a58e698d23df06cf089f48b30a8aa98124af differ
+diff --git a/fuzz/corpora/crl/7cbe2537f799455526b2fd7aadb7cd904022342c b/fuzz/corpora/crl/7cbe2537f799455526b2fd7aadb7cd904022342c
+new file mode 100644
+index 0000000..6275099
+Binary files /dev/null and b/fuzz/corpora/crl/7cbe2537f799455526b2fd7aadb7cd904022342c differ
+diff --git a/fuzz/corpora/crl/7d3295794603cb8ca49e28eef7e1eb596807d479 b/fuzz/corpora/crl/7d3295794603cb8ca49e28eef7e1eb596807d479
+new file mode 100644
+index 0000000..c4923de
+Binary files /dev/null and b/fuzz/corpora/crl/7d3295794603cb8ca49e28eef7e1eb596807d479 differ
+diff --git a/fuzz/corpora/crl/7d8b32d52c3d0cecc43ac2b7b9d1fa4bdb466c8c b/fuzz/corpora/crl/7d8b32d52c3d0cecc43ac2b7b9d1fa4bdb466c8c
+new file mode 100644
+index 0000000..204266b
+Binary files /dev/null and b/fuzz/corpora/crl/7d8b32d52c3d0cecc43ac2b7b9d1fa4bdb466c8c differ
+diff --git a/fuzz/corpora/crl/7de29fc222d8968c6639ad010e8bc264d9029b3c b/fuzz/corpora/crl/7de29fc222d8968c6639ad010e8bc264d9029b3c
+new file mode 100644
+index 0000000..661f171
+Binary files /dev/null and b/fuzz/corpora/crl/7de29fc222d8968c6639ad010e8bc264d9029b3c differ
+diff --git a/fuzz/corpora/crl/7ef18003c3ca816eac1ee47bcefb00729ce7ec4a b/fuzz/corpora/crl/7ef18003c3ca816eac1ee47bcefb00729ce7ec4a
+new file mode 100644
+index 0000000..4a4594d
+Binary files /dev/null and b/fuzz/corpora/crl/7ef18003c3ca816eac1ee47bcefb00729ce7ec4a differ
+diff --git a/fuzz/corpora/crl/7f2be4cb96fc33401aac837bd7027a87a6683e03 b/fuzz/corpora/crl/7f2be4cb96fc33401aac837bd7027a87a6683e03
+new file mode 100644
+index 0000000..d401e19
+Binary files /dev/null and b/fuzz/corpora/crl/7f2be4cb96fc33401aac837bd7027a87a6683e03 differ
+diff --git a/fuzz/corpora/crl/7f80db363c80bb64008cba70fac1d88d47ade374 b/fuzz/corpora/crl/7f80db363c80bb64008cba70fac1d88d47ade374
+new file mode 100644
+index 0000000..e6b9f96
+Binary files /dev/null and b/fuzz/corpora/crl/7f80db363c80bb64008cba70fac1d88d47ade374 differ
+diff --git a/fuzz/corpora/crl/7f8fd278cb8967a3656958bdc0822c1c373ea30f b/fuzz/corpora/crl/7f8fd278cb8967a3656958bdc0822c1c373ea30f
+new file mode 100644
+index 0000000..9c9ee9d
+Binary files /dev/null and b/fuzz/corpora/crl/7f8fd278cb8967a3656958bdc0822c1c373ea30f differ
+diff --git a/fuzz/corpora/crl/7fe729b1cdab6b1c609c04f5c27080997dc4c438 b/fuzz/corpora/crl/7fe729b1cdab6b1c609c04f5c27080997dc4c438
+new file mode 100644
+index 0000000..d8b6613
+Binary files /dev/null and b/fuzz/corpora/crl/7fe729b1cdab6b1c609c04f5c27080997dc4c438 differ
+diff --git a/fuzz/corpora/crl/803e4dbde1d42b974bb2f22fb0a54f49aceda5e6 b/fuzz/corpora/crl/803e4dbde1d42b974bb2f22fb0a54f49aceda5e6
+new file mode 100644
+index 0000000..0788ef4
+Binary files /dev/null and b/fuzz/corpora/crl/803e4dbde1d42b974bb2f22fb0a54f49aceda5e6 differ
+diff --git a/fuzz/corpora/crl/804df838be923719f1c77a62abf2ba4cd95bbff2 b/fuzz/corpora/crl/804df838be923719f1c77a62abf2ba4cd95bbff2
+new file mode 100644
+index 0000000..8ed6903
+Binary files /dev/null and b/fuzz/corpora/crl/804df838be923719f1c77a62abf2ba4cd95bbff2 differ
+diff --git a/fuzz/corpora/crl/80d6fe393e5b554a770730476452d36828d31da2 b/fuzz/corpora/crl/80d6fe393e5b554a770730476452d36828d31da2
+new file mode 100644
+index 0000000..f60aa31
+Binary files /dev/null and b/fuzz/corpora/crl/80d6fe393e5b554a770730476452d36828d31da2 differ
+diff --git a/fuzz/corpora/crl/813b926f6f64a52fe899f1921e05e406da672a0e b/fuzz/corpora/crl/813b926f6f64a52fe899f1921e05e406da672a0e
+new file mode 100644
+index 0000000..9125c21
+Binary files /dev/null and b/fuzz/corpora/crl/813b926f6f64a52fe899f1921e05e406da672a0e differ
+diff --git a/fuzz/corpora/crl/825a1f9ff41790cb72d10b50cfbd5cbe3b667a66 b/fuzz/corpora/crl/825a1f9ff41790cb72d10b50cfbd5cbe3b667a66
+new file mode 100644
+index 0000000..2708635
+Binary files /dev/null and b/fuzz/corpora/crl/825a1f9ff41790cb72d10b50cfbd5cbe3b667a66 differ
+diff --git a/fuzz/corpora/crl/8279ba0ab019b5595462b0fe306cf3c076cffe29 b/fuzz/corpora/crl/8279ba0ab019b5595462b0fe306cf3c076cffe29
+new file mode 100644
+index 0000000..884941d
+Binary files /dev/null and b/fuzz/corpora/crl/8279ba0ab019b5595462b0fe306cf3c076cffe29 differ
+diff --git a/fuzz/corpora/crl/8397133fb30c351262af4ae9577d6233a96804b0 b/fuzz/corpora/crl/8397133fb30c351262af4ae9577d6233a96804b0
+new file mode 100644
+index 0000000..29f3b53
+Binary files /dev/null and b/fuzz/corpora/crl/8397133fb30c351262af4ae9577d6233a96804b0 differ
+diff --git a/fuzz/corpora/crl/8425c568c3511957a93bf6615fcb083acc7c5a51 b/fuzz/corpora/crl/8425c568c3511957a93bf6615fcb083acc7c5a51
+new file mode 100644
+index 0000000..9ceb57f
+Binary files /dev/null and b/fuzz/corpora/crl/8425c568c3511957a93bf6615fcb083acc7c5a51 differ
+diff --git a/fuzz/corpora/crl/844822551c9d0774bc109a5fddbf4f6668b71191 b/fuzz/corpora/crl/844822551c9d0774bc109a5fddbf4f6668b71191
+new file mode 100644
+index 0000000..f2c6b71
+Binary files /dev/null and b/fuzz/corpora/crl/844822551c9d0774bc109a5fddbf4f6668b71191 differ
+diff --git a/fuzz/corpora/crl/844c0af9ecad36fc5a9f37f2aebb4eb56f6bd921 b/fuzz/corpora/crl/844c0af9ecad36fc5a9f37f2aebb4eb56f6bd921
+new file mode 100644
+index 0000000..2b0deea
+Binary files /dev/null and b/fuzz/corpora/crl/844c0af9ecad36fc5a9f37f2aebb4eb56f6bd921 differ
+diff --git a/fuzz/corpora/crl/8475ef438f80ed4aefb3119b855cbcbb54152bd3 b/fuzz/corpora/crl/8475ef438f80ed4aefb3119b855cbcbb54152bd3
+new file mode 100644
+index 0000000..77d7c1e
+Binary files /dev/null and b/fuzz/corpora/crl/8475ef438f80ed4aefb3119b855cbcbb54152bd3 differ
+diff --git a/fuzz/corpora/crl/84aca5ac33e3330904a5fa0a5c66449e1862bc6a b/fuzz/corpora/crl/84aca5ac33e3330904a5fa0a5c66449e1862bc6a
+new file mode 100644
+index 0000000..319b847
+Binary files /dev/null and b/fuzz/corpora/crl/84aca5ac33e3330904a5fa0a5c66449e1862bc6a differ
+diff --git a/fuzz/corpora/crl/85ed0bf37d73468ff55b006b8beefb3b2c12807e b/fuzz/corpora/crl/85ed0bf37d73468ff55b006b8beefb3b2c12807e
+new file mode 100644
+index 0000000..fee5d8f
+Binary files /dev/null and b/fuzz/corpora/crl/85ed0bf37d73468ff55b006b8beefb3b2c12807e differ
+diff --git a/fuzz/corpora/crl/863f9756d164606316bc662c1dfa0f5dfe20d3f4 b/fuzz/corpora/crl/863f9756d164606316bc662c1dfa0f5dfe20d3f4
+new file mode 100644
+index 0000000..4c8c465
+Binary files /dev/null and b/fuzz/corpora/crl/863f9756d164606316bc662c1dfa0f5dfe20d3f4 differ
+diff --git a/fuzz/corpora/crl/864934f5ba07e2fc676d4cf6604442b3e5364c3b b/fuzz/corpora/crl/864934f5ba07e2fc676d4cf6604442b3e5364c3b
+new file mode 100644
+index 0000000..5a233e7
+Binary files /dev/null and b/fuzz/corpora/crl/864934f5ba07e2fc676d4cf6604442b3e5364c3b differ
+diff --git a/fuzz/corpora/crl/86854aeaffff84078468e8dbb68c875a80d2cc4a b/fuzz/corpora/crl/86854aeaffff84078468e8dbb68c875a80d2cc4a
+new file mode 100644
+index 0000000..9e0bd8d
+Binary files /dev/null and b/fuzz/corpora/crl/86854aeaffff84078468e8dbb68c875a80d2cc4a differ
+diff --git a/fuzz/corpora/crl/87425f1b81d2d59501b1c2aea5eabd571c474290 b/fuzz/corpora/crl/87425f1b81d2d59501b1c2aea5eabd571c474290
+new file mode 100644
+index 0000000..b3b8b97
+Binary files /dev/null and b/fuzz/corpora/crl/87425f1b81d2d59501b1c2aea5eabd571c474290 differ
+diff --git a/fuzz/corpora/crl/874d8990ab50420afc4f42cff68cbcf75d9f0db6 b/fuzz/corpora/crl/874d8990ab50420afc4f42cff68cbcf75d9f0db6
+new file mode 100644
+index 0000000..47e02cc
+Binary files /dev/null and b/fuzz/corpora/crl/874d8990ab50420afc4f42cff68cbcf75d9f0db6 differ
+diff --git a/fuzz/corpora/crl/882fe895608787672ec0da956f2df6835f21f3e7 b/fuzz/corpora/crl/882fe895608787672ec0da956f2df6835f21f3e7
+new file mode 100644
+index 0000000..07b8b28
+Binary files /dev/null and b/fuzz/corpora/crl/882fe895608787672ec0da956f2df6835f21f3e7 differ
+diff --git a/fuzz/corpora/crl/887c64fedd6a9bab4ef1f64968d9802087558896 b/fuzz/corpora/crl/887c64fedd6a9bab4ef1f64968d9802087558896
+new file mode 100644
+index 0000000..fc86b8f
+Binary files /dev/null and b/fuzz/corpora/crl/887c64fedd6a9bab4ef1f64968d9802087558896 differ
+diff --git a/fuzz/corpora/crl/8966577c17ea53e5810c622a0a8a366af57ad9eb b/fuzz/corpora/crl/8966577c17ea53e5810c622a0a8a366af57ad9eb
+new file mode 100644
+index 0000000..f9f6058
+Binary files /dev/null and b/fuzz/corpora/crl/8966577c17ea53e5810c622a0a8a366af57ad9eb differ
+diff --git a/fuzz/corpora/crl/8aa8af23be00d13e552756bcf0a78c416d5ec294 b/fuzz/corpora/crl/8aa8af23be00d13e552756bcf0a78c416d5ec294
+new file mode 100644
+index 0000000..f2e6d4f
+Binary files /dev/null and b/fuzz/corpora/crl/8aa8af23be00d13e552756bcf0a78c416d5ec294 differ
+diff --git a/fuzz/corpora/crl/8acf8245fb816208c06c8f224e5858f15dc0f9f4 b/fuzz/corpora/crl/8acf8245fb816208c06c8f224e5858f15dc0f9f4
+new file mode 100644
+index 0000000..160f125
+Binary files /dev/null and b/fuzz/corpora/crl/8acf8245fb816208c06c8f224e5858f15dc0f9f4 differ
+diff --git a/fuzz/corpora/crl/8b03f231fbfeed009c5e8dc5f5c37716532d9ecd b/fuzz/corpora/crl/8b03f231fbfeed009c5e8dc5f5c37716532d9ecd
+new file mode 100644
+index 0000000..0e859ca
+Binary files /dev/null and b/fuzz/corpora/crl/8b03f231fbfeed009c5e8dc5f5c37716532d9ecd differ
+diff --git a/fuzz/corpora/crl/8ba5174987d93067993cdcb44713cb857b026d86 b/fuzz/corpora/crl/8ba5174987d93067993cdcb44713cb857b026d86
+new file mode 100644
+index 0000000..3555872
+Binary files /dev/null and b/fuzz/corpora/crl/8ba5174987d93067993cdcb44713cb857b026d86 differ
+diff --git a/fuzz/corpora/crl/8bb6208bb25a5c7cf9973b221c48e69e2167c3f9 b/fuzz/corpora/crl/8bb6208bb25a5c7cf9973b221c48e69e2167c3f9
+new file mode 100644
+index 0000000..2bac868
+Binary files /dev/null and b/fuzz/corpora/crl/8bb6208bb25a5c7cf9973b221c48e69e2167c3f9 differ
+diff --git a/fuzz/corpora/crl/8c2d8d0003e8e09353f3fb9d682a9e756ae6fb4a b/fuzz/corpora/crl/8c2d8d0003e8e09353f3fb9d682a9e756ae6fb4a
+new file mode 100644
+index 0000000..c37e783
+Binary files /dev/null and b/fuzz/corpora/crl/8c2d8d0003e8e09353f3fb9d682a9e756ae6fb4a differ
+diff --git a/fuzz/corpora/crl/8c6a6efdfd95eb95163c119efc7c84a7d81aa1f0 b/fuzz/corpora/crl/8c6a6efdfd95eb95163c119efc7c84a7d81aa1f0
+new file mode 100644
+index 0000000..c0a3e26
+Binary files /dev/null and b/fuzz/corpora/crl/8c6a6efdfd95eb95163c119efc7c84a7d81aa1f0 differ
+diff --git a/fuzz/corpora/crl/8cb0f783f64f2fbba5fca6a2bba70b9a01b4ff36 b/fuzz/corpora/crl/8cb0f783f64f2fbba5fca6a2bba70b9a01b4ff36
+new file mode 100644
+index 0000000..b44eb64
+Binary files /dev/null and b/fuzz/corpora/crl/8cb0f783f64f2fbba5fca6a2bba70b9a01b4ff36 differ
+diff --git a/fuzz/corpora/crl/8cb412f87365b0e021ac10c761000af59df72a92 b/fuzz/corpora/crl/8cb412f87365b0e021ac10c761000af59df72a92
+new file mode 100644
+index 0000000..ad02753
+Binary files /dev/null and b/fuzz/corpora/crl/8cb412f87365b0e021ac10c761000af59df72a92 differ
+diff --git a/fuzz/corpora/crl/8d6922bdec5570999c768983184b8bf877c4281d b/fuzz/corpora/crl/8d6922bdec5570999c768983184b8bf877c4281d
+new file mode 100644
+index 0000000..a0fc668
+Binary files /dev/null and b/fuzz/corpora/crl/8d6922bdec5570999c768983184b8bf877c4281d differ
+diff --git a/fuzz/corpora/crl/8d8774731fdb354270588bb6cf1694cbf82f73bc b/fuzz/corpora/crl/8d8774731fdb354270588bb6cf1694cbf82f73bc
+new file mode 100644
+index 0000000..a44a6d6
+Binary files /dev/null and b/fuzz/corpora/crl/8d8774731fdb354270588bb6cf1694cbf82f73bc differ
+diff --git a/fuzz/corpora/crl/8d9fdf73dd63090fabf41112d3da1d51791d918d b/fuzz/corpora/crl/8d9fdf73dd63090fabf41112d3da1d51791d918d
+new file mode 100644
+index 0000000..b04d96a
+Binary files /dev/null and b/fuzz/corpora/crl/8d9fdf73dd63090fabf41112d3da1d51791d918d differ
+diff --git a/fuzz/corpora/crl/8db149228f8543782b023ff187b4a0c80d235f2a b/fuzz/corpora/crl/8db149228f8543782b023ff187b4a0c80d235f2a
+new file mode 100644
+index 0000000..f7e472f
+Binary files /dev/null and b/fuzz/corpora/crl/8db149228f8543782b023ff187b4a0c80d235f2a differ
+diff --git a/fuzz/corpora/crl/8e6b22fe9f2d3830cc1e967565ebb829cd61591c b/fuzz/corpora/crl/8e6b22fe9f2d3830cc1e967565ebb829cd61591c
+new file mode 100644
+index 0000000..814e250
+Binary files /dev/null and b/fuzz/corpora/crl/8e6b22fe9f2d3830cc1e967565ebb829cd61591c differ
+diff --git a/fuzz/corpora/crl/8ebfed13981dfb699e70d1c1df6b313e31aa0782 b/fuzz/corpora/crl/8ebfed13981dfb699e70d1c1df6b313e31aa0782
+new file mode 100644
+index 0000000..8f3d128
+Binary files /dev/null and b/fuzz/corpora/crl/8ebfed13981dfb699e70d1c1df6b313e31aa0782 differ
+diff --git a/fuzz/corpora/crl/8f2976191a57e11d3e8a283b6d0e1cf1ede8b772 b/fuzz/corpora/crl/8f2976191a57e11d3e8a283b6d0e1cf1ede8b772
+new file mode 100644
+index 0000000..30d3b8a
+Binary files /dev/null and b/fuzz/corpora/crl/8f2976191a57e11d3e8a283b6d0e1cf1ede8b772 differ
+diff --git a/fuzz/corpora/crl/8fde3ad6ac32809f7ce323ca5635b196108550ac b/fuzz/corpora/crl/8fde3ad6ac32809f7ce323ca5635b196108550ac
+new file mode 100644
+index 0000000..737d5b0
+Binary files /dev/null and b/fuzz/corpora/crl/8fde3ad6ac32809f7ce323ca5635b196108550ac differ
+diff --git a/fuzz/corpora/crl/90135405d11b89800720bfc85deb4c43b9c82e91 b/fuzz/corpora/crl/90135405d11b89800720bfc85deb4c43b9c82e91
+new file mode 100644
+index 0000000..5ba6e10
+Binary files /dev/null and b/fuzz/corpora/crl/90135405d11b89800720bfc85deb4c43b9c82e91 differ
+diff --git a/fuzz/corpora/crl/9019fd8e67ac040e8219e6bb0f26a424d8b5ede1 b/fuzz/corpora/crl/9019fd8e67ac040e8219e6bb0f26a424d8b5ede1
+new file mode 100644
+index 0000000..cc893d3
+Binary files /dev/null and b/fuzz/corpora/crl/9019fd8e67ac040e8219e6bb0f26a424d8b5ede1 differ
+diff --git a/fuzz/corpora/crl/90382f7ab13d3a40dd1fa4e46eb3ecaf829c471f b/fuzz/corpora/crl/90382f7ab13d3a40dd1fa4e46eb3ecaf829c471f
+new file mode 100644
+index 0000000..a2a0533
+Binary files /dev/null and b/fuzz/corpora/crl/90382f7ab13d3a40dd1fa4e46eb3ecaf829c471f differ
+diff --git a/fuzz/corpora/crl/907b50d218920001a0101e721523122bd743c47a b/fuzz/corpora/crl/907b50d218920001a0101e721523122bd743c47a
+new file mode 100644
+index 0000000..fe970f7
+Binary files /dev/null and b/fuzz/corpora/crl/907b50d218920001a0101e721523122bd743c47a differ
+diff --git a/fuzz/corpora/crl/91ef97771f6432cfdf5c5f77582af357dc2f1b4f b/fuzz/corpora/crl/91ef97771f6432cfdf5c5f77582af357dc2f1b4f
+new file mode 100644
+index 0000000..61d0fa9
+Binary files /dev/null and b/fuzz/corpora/crl/91ef97771f6432cfdf5c5f77582af357dc2f1b4f differ
+diff --git a/fuzz/corpora/crl/924e2e4784c457a02f518b8456a6fbd25fa95adb b/fuzz/corpora/crl/924e2e4784c457a02f518b8456a6fbd25fa95adb
+new file mode 100644
+index 0000000..2685821
+Binary files /dev/null and b/fuzz/corpora/crl/924e2e4784c457a02f518b8456a6fbd25fa95adb differ
+diff --git a/fuzz/corpora/crl/926a802833ca47d63fb7a04be7471beaaa090945 b/fuzz/corpora/crl/926a802833ca47d63fb7a04be7471beaaa090945
+new file mode 100644
+index 0000000..250f4f2
+Binary files /dev/null and b/fuzz/corpora/crl/926a802833ca47d63fb7a04be7471beaaa090945 differ
+diff --git a/fuzz/corpora/crl/927bce5e806d2e4ff7e573f22f8df6e26502a018 b/fuzz/corpora/crl/927bce5e806d2e4ff7e573f22f8df6e26502a018
+new file mode 100644
+index 0000000..fc379d6
+Binary files /dev/null and b/fuzz/corpora/crl/927bce5e806d2e4ff7e573f22f8df6e26502a018 differ
+diff --git a/fuzz/corpora/crl/927f6fe0e32c26cf53f4470eea443c8e897b1fe6 b/fuzz/corpora/crl/927f6fe0e32c26cf53f4470eea443c8e897b1fe6
+new file mode 100644
+index 0000000..b390562
+Binary files /dev/null and b/fuzz/corpora/crl/927f6fe0e32c26cf53f4470eea443c8e897b1fe6 differ
+diff --git a/fuzz/corpora/crl/92ea8ea92ade551de6a2ded47b3142a569994250 b/fuzz/corpora/crl/92ea8ea92ade551de6a2ded47b3142a569994250
+new file mode 100644
+index 0000000..4e319ec
+Binary files /dev/null and b/fuzz/corpora/crl/92ea8ea92ade551de6a2ded47b3142a569994250 differ
+diff --git a/fuzz/corpora/crl/9311b06eea99bf381c035cc899279b1313d71931 b/fuzz/corpora/crl/9311b06eea99bf381c035cc899279b1313d71931
+new file mode 100644
+index 0000000..158e4f3
+Binary files /dev/null and b/fuzz/corpora/crl/9311b06eea99bf381c035cc899279b1313d71931 differ
+diff --git a/fuzz/corpora/crl/93169f83f0234bb5eb29bc6e42a971655e869cdb b/fuzz/corpora/crl/93169f83f0234bb5eb29bc6e42a971655e869cdb
+new file mode 100644
+index 0000000..3dbb8e5
+Binary files /dev/null and b/fuzz/corpora/crl/93169f83f0234bb5eb29bc6e42a971655e869cdb differ
+diff --git a/fuzz/corpora/crl/932223a99e06c1db71669204c8f75ce978c0e8f5 b/fuzz/corpora/crl/932223a99e06c1db71669204c8f75ce978c0e8f5
+new file mode 100644
+index 0000000..202f842
+Binary files /dev/null and b/fuzz/corpora/crl/932223a99e06c1db71669204c8f75ce978c0e8f5 differ
+diff --git a/fuzz/corpora/crl/93e112f7c5f87068e18c25439a4ca3b1b6a2e818 b/fuzz/corpora/crl/93e112f7c5f87068e18c25439a4ca3b1b6a2e818
+new file mode 100644
+index 0000000..b1569a8
+Binary files /dev/null and b/fuzz/corpora/crl/93e112f7c5f87068e18c25439a4ca3b1b6a2e818 differ
+diff --git a/fuzz/corpora/crl/93fd51c1dc4d71ff239e18aa62e887297b2e3f25 b/fuzz/corpora/crl/93fd51c1dc4d71ff239e18aa62e887297b2e3f25
+new file mode 100644
+index 0000000..8d44e4e
+Binary files /dev/null and b/fuzz/corpora/crl/93fd51c1dc4d71ff239e18aa62e887297b2e3f25 differ
+diff --git a/fuzz/corpora/crl/9413399a3f21eff2c2230e20c7cebbde54436c38 b/fuzz/corpora/crl/9413399a3f21eff2c2230e20c7cebbde54436c38
+new file mode 100644
+index 0000000..2538172
+Binary files /dev/null and b/fuzz/corpora/crl/9413399a3f21eff2c2230e20c7cebbde54436c38 differ
+diff --git a/fuzz/corpora/crl/9433b155fbcd6e4bd79d9c584bf7c9ef09a9875b b/fuzz/corpora/crl/9433b155fbcd6e4bd79d9c584bf7c9ef09a9875b
+new file mode 100644
+index 0000000..a85e2ea
+Binary files /dev/null and b/fuzz/corpora/crl/9433b155fbcd6e4bd79d9c584bf7c9ef09a9875b differ
+diff --git a/fuzz/corpora/crl/946d30e22f28e031bf366a7a3ca587e473a8bff4 b/fuzz/corpora/crl/946d30e22f28e031bf366a7a3ca587e473a8bff4
+new file mode 100644
+index 0000000..c35e687
+Binary files /dev/null and b/fuzz/corpora/crl/946d30e22f28e031bf366a7a3ca587e473a8bff4 differ
+diff --git a/fuzz/corpora/crl/949d2b1356983aa2ab6dce0eca4c4f0ed9b5adb5 b/fuzz/corpora/crl/949d2b1356983aa2ab6dce0eca4c4f0ed9b5adb5
+new file mode 100644
+index 0000000..ae68c22
+Binary files /dev/null and b/fuzz/corpora/crl/949d2b1356983aa2ab6dce0eca4c4f0ed9b5adb5 differ
+diff --git a/fuzz/corpora/crl/94e1ad819675d38e9aa79298d8067fc9eb3bda12 b/fuzz/corpora/crl/94e1ad819675d38e9aa79298d8067fc9eb3bda12
+new file mode 100644
+index 0000000..6439a5f
+Binary files /dev/null and b/fuzz/corpora/crl/94e1ad819675d38e9aa79298d8067fc9eb3bda12 differ
+diff --git a/fuzz/corpora/crl/94ef57d148905e18130b4d61cd81b1922a9e1329 b/fuzz/corpora/crl/94ef57d148905e18130b4d61cd81b1922a9e1329
+new file mode 100644
+index 0000000..ec25704
+Binary files /dev/null and b/fuzz/corpora/crl/94ef57d148905e18130b4d61cd81b1922a9e1329 differ
+diff --git a/fuzz/corpora/crl/9533d34938b8ccf46e429bdbe8d33f94ad9c25ce b/fuzz/corpora/crl/9533d34938b8ccf46e429bdbe8d33f94ad9c25ce
+new file mode 100644
+index 0000000..5417e3f
+Binary files /dev/null and b/fuzz/corpora/crl/9533d34938b8ccf46e429bdbe8d33f94ad9c25ce differ
+diff --git a/fuzz/corpora/crl/956763749024d79a66921f12f0bee09149c2b981 b/fuzz/corpora/crl/956763749024d79a66921f12f0bee09149c2b981
+new file mode 100644
+index 0000000..0526664
+Binary files /dev/null and b/fuzz/corpora/crl/956763749024d79a66921f12f0bee09149c2b981 differ
+diff --git a/fuzz/corpora/crl/95ae794899a46a3cfae1ee8feeee0bd955082c57 b/fuzz/corpora/crl/95ae794899a46a3cfae1ee8feeee0bd955082c57
+new file mode 100644
+index 0000000..8b2c567
+Binary files /dev/null and b/fuzz/corpora/crl/95ae794899a46a3cfae1ee8feeee0bd955082c57 differ
+diff --git a/fuzz/corpora/crl/95c3a992ebca07803d9155e5d9fd687cfa79b0db b/fuzz/corpora/crl/95c3a992ebca07803d9155e5d9fd687cfa79b0db
+new file mode 100644
+index 0000000..f6cce3d
+Binary files /dev/null and b/fuzz/corpora/crl/95c3a992ebca07803d9155e5d9fd687cfa79b0db differ
+diff --git a/fuzz/corpora/crl/95f9d3ebbc8d1be2aafac634dccf3799dce33f2a b/fuzz/corpora/crl/95f9d3ebbc8d1be2aafac634dccf3799dce33f2a
+new file mode 100644
+index 0000000..911e9f3
+Binary files /dev/null and b/fuzz/corpora/crl/95f9d3ebbc8d1be2aafac634dccf3799dce33f2a differ
+diff --git a/fuzz/corpora/crl/96026fe90f19305a73b45bbf6f82f08825008bbf b/fuzz/corpora/crl/96026fe90f19305a73b45bbf6f82f08825008bbf
+new file mode 100644
+index 0000000..1e77bc5
+Binary files /dev/null and b/fuzz/corpora/crl/96026fe90f19305a73b45bbf6f82f08825008bbf differ
+diff --git a/fuzz/corpora/crl/9687201a1f5f577fa48b2d836b62c90a662e2c58 b/fuzz/corpora/crl/9687201a1f5f577fa48b2d836b62c90a662e2c58
+new file mode 100644
+index 0000000..0532762
+Binary files /dev/null and b/fuzz/corpora/crl/9687201a1f5f577fa48b2d836b62c90a662e2c58 differ
+diff --git a/fuzz/corpora/crl/96ddfdeb43e0cc292f7fbe1fe457c72532e7232c b/fuzz/corpora/crl/96ddfdeb43e0cc292f7fbe1fe457c72532e7232c
+new file mode 100644
+index 0000000..e9c0fd3
+Binary files /dev/null and b/fuzz/corpora/crl/96ddfdeb43e0cc292f7fbe1fe457c72532e7232c differ
+diff --git a/fuzz/corpora/crl/96e2ecc673f8812aa6cc4c675a5d43fc7bee970b b/fuzz/corpora/crl/96e2ecc673f8812aa6cc4c675a5d43fc7bee970b
+new file mode 100644
+index 0000000..a46c866
+Binary files /dev/null and b/fuzz/corpora/crl/96e2ecc673f8812aa6cc4c675a5d43fc7bee970b differ
+diff --git a/fuzz/corpora/crl/97229d1abbca21f12cc8cac0f889b265c90e5a81 b/fuzz/corpora/crl/97229d1abbca21f12cc8cac0f889b265c90e5a81
+new file mode 100644
+index 0000000..66f2b9b
+Binary files /dev/null and b/fuzz/corpora/crl/97229d1abbca21f12cc8cac0f889b265c90e5a81 differ
+diff --git a/fuzz/corpora/crl/984784c17e38da7e803a7af37b12b1727ee443df b/fuzz/corpora/crl/984784c17e38da7e803a7af37b12b1727ee443df
+new file mode 100644
+index 0000000..84cfe79
+Binary files /dev/null and b/fuzz/corpora/crl/984784c17e38da7e803a7af37b12b1727ee443df differ
+diff --git a/fuzz/corpora/crl/98d1599ea80381aa5ef283fcfbb87e88ffe91177 b/fuzz/corpora/crl/98d1599ea80381aa5ef283fcfbb87e88ffe91177
+new file mode 100644
+index 0000000..4d94b2f
+Binary files /dev/null and b/fuzz/corpora/crl/98d1599ea80381aa5ef283fcfbb87e88ffe91177 differ
+diff --git a/fuzz/corpora/crl/99497d83574ce13df85bdb6428e373d37288c1bb b/fuzz/corpora/crl/99497d83574ce13df85bdb6428e373d37288c1bb
+new file mode 100644
+index 0000000..4d3f3c6
+Binary files /dev/null and b/fuzz/corpora/crl/99497d83574ce13df85bdb6428e373d37288c1bb differ
+diff --git a/fuzz/corpora/crl/99c54d3b44ed209224f65280bcf2fdf3e55e91a7 b/fuzz/corpora/crl/99c54d3b44ed209224f65280bcf2fdf3e55e91a7
+new file mode 100644
+index 0000000..e0bfa6f
+Binary files /dev/null and b/fuzz/corpora/crl/99c54d3b44ed209224f65280bcf2fdf3e55e91a7 differ
+diff --git a/fuzz/corpora/crl/99e49724e0ccbc1a5e2c245e852dea0f21acdec6 b/fuzz/corpora/crl/99e49724e0ccbc1a5e2c245e852dea0f21acdec6
+new file mode 100644
+index 0000000..0a21bcd
+Binary files /dev/null and b/fuzz/corpora/crl/99e49724e0ccbc1a5e2c245e852dea0f21acdec6 differ
+diff --git a/fuzz/corpora/crl/9a6169e8dd90964f42dc84cb0e15071d23ef290e b/fuzz/corpora/crl/9a6169e8dd90964f42dc84cb0e15071d23ef290e
+new file mode 100644
+index 0000000..adbc935
+Binary files /dev/null and b/fuzz/corpora/crl/9a6169e8dd90964f42dc84cb0e15071d23ef290e differ
+diff --git a/fuzz/corpora/crl/9a85c0eecd0b0257184f4973caff94b879306180 b/fuzz/corpora/crl/9a85c0eecd0b0257184f4973caff94b879306180
+new file mode 100644
+index 0000000..254c460
+Binary files /dev/null and b/fuzz/corpora/crl/9a85c0eecd0b0257184f4973caff94b879306180 differ
+diff --git a/fuzz/corpora/crl/9c1bccc7b87d9f8099535e74d884b56c0d803856 b/fuzz/corpora/crl/9c1bccc7b87d9f8099535e74d884b56c0d803856
+new file mode 100644
+index 0000000..3b17996
+Binary files /dev/null and b/fuzz/corpora/crl/9c1bccc7b87d9f8099535e74d884b56c0d803856 differ
+diff --git a/fuzz/corpora/crl/9c5da7d46dd589af3420a0f316dc552aba432e5a b/fuzz/corpora/crl/9c5da7d46dd589af3420a0f316dc552aba432e5a
+new file mode 100644
+index 0000000..809b6ae
+Binary files /dev/null and b/fuzz/corpora/crl/9c5da7d46dd589af3420a0f316dc552aba432e5a differ
+diff --git a/fuzz/corpora/crl/9cbe1264e223ca3b9af35b35957f99e21004abe4 b/fuzz/corpora/crl/9cbe1264e223ca3b9af35b35957f99e21004abe4
+new file mode 100644
+index 0000000..ce57442
+Binary files /dev/null and b/fuzz/corpora/crl/9cbe1264e223ca3b9af35b35957f99e21004abe4 differ
+diff --git a/fuzz/corpora/crl/9cde9c121996bc737abb8761c8b37a860490b3f5 b/fuzz/corpora/crl/9cde9c121996bc737abb8761c8b37a860490b3f5
+new file mode 100644
+index 0000000..1658ce3
+Binary files /dev/null and b/fuzz/corpora/crl/9cde9c121996bc737abb8761c8b37a860490b3f5 differ
+diff --git a/fuzz/corpora/crl/9ce11494a2bec38780e750ac49bf28f8b9fb8d49 b/fuzz/corpora/crl/9ce11494a2bec38780e750ac49bf28f8b9fb8d49
+new file mode 100644
+index 0000000..69ec041
+Binary files /dev/null and b/fuzz/corpora/crl/9ce11494a2bec38780e750ac49bf28f8b9fb8d49 differ
+diff --git a/fuzz/corpora/crl/9e145380fa1e1f47ff8354c919ff0faf9dfa5a98 b/fuzz/corpora/crl/9e145380fa1e1f47ff8354c919ff0faf9dfa5a98
+new file mode 100644
+index 0000000..bcb6431
+Binary files /dev/null and b/fuzz/corpora/crl/9e145380fa1e1f47ff8354c919ff0faf9dfa5a98 differ
+diff --git a/fuzz/corpora/crl/9e9511bdb7b647b9e2c9f3bbd5efda0ba1244a5f b/fuzz/corpora/crl/9e9511bdb7b647b9e2c9f3bbd5efda0ba1244a5f
+new file mode 100644
+index 0000000..bf33a4e
+Binary files /dev/null and b/fuzz/corpora/crl/9e9511bdb7b647b9e2c9f3bbd5efda0ba1244a5f differ
+diff --git a/fuzz/corpora/crl/a063c3f7a0356cf6ff2a58b07c1ea670b3f4f372 b/fuzz/corpora/crl/a063c3f7a0356cf6ff2a58b07c1ea670b3f4f372
+new file mode 100644
+index 0000000..a162842
+Binary files /dev/null and b/fuzz/corpora/crl/a063c3f7a0356cf6ff2a58b07c1ea670b3f4f372 differ
+diff --git a/fuzz/corpora/crl/a09f48799ebebc965fd7428aaebf846391a1068d b/fuzz/corpora/crl/a09f48799ebebc965fd7428aaebf846391a1068d
+new file mode 100644
+index 0000000..e102c9d
+Binary files /dev/null and b/fuzz/corpora/crl/a09f48799ebebc965fd7428aaebf846391a1068d differ
+diff --git a/fuzz/corpora/crl/a173e42b18bb8e5caff4665d071d07ec8932b646 b/fuzz/corpora/crl/a173e42b18bb8e5caff4665d071d07ec8932b646
+new file mode 100644
+index 0000000..5db0daf
+Binary files /dev/null and b/fuzz/corpora/crl/a173e42b18bb8e5caff4665d071d07ec8932b646 differ
+diff --git a/fuzz/corpora/crl/a1cb2a0e51fc00b195561ce82fd459371b5ea813 b/fuzz/corpora/crl/a1cb2a0e51fc00b195561ce82fd459371b5ea813
+new file mode 100644
+index 0000000..ff7b91a
+Binary files /dev/null and b/fuzz/corpora/crl/a1cb2a0e51fc00b195561ce82fd459371b5ea813 differ
+diff --git a/fuzz/corpora/crl/a216235842377e85a8b23c1756948801b1adde9d b/fuzz/corpora/crl/a216235842377e85a8b23c1756948801b1adde9d
+new file mode 100644
+index 0000000..f54d8df
+Binary files /dev/null and b/fuzz/corpora/crl/a216235842377e85a8b23c1756948801b1adde9d differ
+diff --git a/fuzz/corpora/crl/a285e8ac8670749a4d773e6abbea700ed31a31d3 b/fuzz/corpora/crl/a285e8ac8670749a4d773e6abbea700ed31a31d3
+new file mode 100644
+index 0000000..244cf1d
+Binary files /dev/null and b/fuzz/corpora/crl/a285e8ac8670749a4d773e6abbea700ed31a31d3 differ
+diff --git a/fuzz/corpora/crl/a36f9d7c0aa3ef9ecd3c382c7f74fa6f01dbf7a0 b/fuzz/corpora/crl/a36f9d7c0aa3ef9ecd3c382c7f74fa6f01dbf7a0
+new file mode 100644
+index 0000000..b8e93ea
+Binary files /dev/null and b/fuzz/corpora/crl/a36f9d7c0aa3ef9ecd3c382c7f74fa6f01dbf7a0 differ
+diff --git a/fuzz/corpora/crl/a3b3d458eecc18600ad5b5abb7f11bf8e6f0372a b/fuzz/corpora/crl/a3b3d458eecc18600ad5b5abb7f11bf8e6f0372a
+new file mode 100644
+index 0000000..d4e2aec
+Binary files /dev/null and b/fuzz/corpora/crl/a3b3d458eecc18600ad5b5abb7f11bf8e6f0372a differ
+diff --git a/fuzz/corpora/crl/a4c0c049db5e56e7a27918fa85c46941f5136f30 b/fuzz/corpora/crl/a4c0c049db5e56e7a27918fa85c46941f5136f30
+new file mode 100644
+index 0000000..68daa0b
+Binary files /dev/null and b/fuzz/corpora/crl/a4c0c049db5e56e7a27918fa85c46941f5136f30 differ
+diff --git a/fuzz/corpora/crl/a4ca4955c6c9942f602c13e6faf5496c5f098d81 b/fuzz/corpora/crl/a4ca4955c6c9942f602c13e6faf5496c5f098d81
+new file mode 100644
+index 0000000..7703393
+Binary files /dev/null and b/fuzz/corpora/crl/a4ca4955c6c9942f602c13e6faf5496c5f098d81 differ
+diff --git a/fuzz/corpora/crl/a4d9452f57020e9b254d7d750a8c03cbf89b7726 b/fuzz/corpora/crl/a4d9452f57020e9b254d7d750a8c03cbf89b7726
+new file mode 100644
+index 0000000..5c6d7a2
+Binary files /dev/null and b/fuzz/corpora/crl/a4d9452f57020e9b254d7d750a8c03cbf89b7726 differ
+diff --git a/fuzz/corpora/crl/a4e1378b8690d88eb5cc2718768189637f918513 b/fuzz/corpora/crl/a4e1378b8690d88eb5cc2718768189637f918513
+new file mode 100644
+index 0000000..78f240b
+Binary files /dev/null and b/fuzz/corpora/crl/a4e1378b8690d88eb5cc2718768189637f918513 differ
+diff --git a/fuzz/corpora/crl/a50970f5250baaf4a8edf9322e64ac1e7ae0863a b/fuzz/corpora/crl/a50970f5250baaf4a8edf9322e64ac1e7ae0863a
+new file mode 100644
+index 0000000..825b3ec
+Binary files /dev/null and b/fuzz/corpora/crl/a50970f5250baaf4a8edf9322e64ac1e7ae0863a differ
+diff --git a/fuzz/corpora/crl/a5c1e9962e3bb1180de6acbc7f05bd97666cb313 b/fuzz/corpora/crl/a5c1e9962e3bb1180de6acbc7f05bd97666cb313
+new file mode 100644
+index 0000000..2d664d9
+Binary files /dev/null and b/fuzz/corpora/crl/a5c1e9962e3bb1180de6acbc7f05bd97666cb313 differ
+diff --git a/fuzz/corpora/crl/a60e7688558c61ea2111a3d24803abe58a83a26f b/fuzz/corpora/crl/a60e7688558c61ea2111a3d24803abe58a83a26f
+new file mode 100644
+index 0000000..abc417e
+Binary files /dev/null and b/fuzz/corpora/crl/a60e7688558c61ea2111a3d24803abe58a83a26f differ
+diff --git a/fuzz/corpora/crl/a6cecc1f15aa334938f6d51bb2428a5ed0ec0739 b/fuzz/corpora/crl/a6cecc1f15aa334938f6d51bb2428a5ed0ec0739
+new file mode 100644
+index 0000000..6cf30a8
+Binary files /dev/null and b/fuzz/corpora/crl/a6cecc1f15aa334938f6d51bb2428a5ed0ec0739 differ
+diff --git a/fuzz/corpora/crl/a6f1e28f82d6969d2b821d5184dcdfacf137ad9b b/fuzz/corpora/crl/a6f1e28f82d6969d2b821d5184dcdfacf137ad9b
+new file mode 100644
+index 0000000..f0e467c
+Binary files /dev/null and b/fuzz/corpora/crl/a6f1e28f82d6969d2b821d5184dcdfacf137ad9b differ
+diff --git a/fuzz/corpora/crl/a74f9cfee132e9e28e2885e75ddcba6125311821 b/fuzz/corpora/crl/a74f9cfee132e9e28e2885e75ddcba6125311821
+new file mode 100644
+index 0000000..8dee827
+Binary files /dev/null and b/fuzz/corpora/crl/a74f9cfee132e9e28e2885e75ddcba6125311821 differ
+diff --git a/fuzz/corpora/crl/a75950b7a6dc9f4c3824a61cff4b43b6628d3b61 b/fuzz/corpora/crl/a75950b7a6dc9f4c3824a61cff4b43b6628d3b61
+new file mode 100644
+index 0000000..1fb0f8d
+Binary files /dev/null and b/fuzz/corpora/crl/a75950b7a6dc9f4c3824a61cff4b43b6628d3b61 differ
+diff --git a/fuzz/corpora/crl/a7a43e11b1924a91f91c0a85ff244cc070b4f559 b/fuzz/corpora/crl/a7a43e11b1924a91f91c0a85ff244cc070b4f559
+new file mode 100644
+index 0000000..1d6f6e4
+Binary files /dev/null and b/fuzz/corpora/crl/a7a43e11b1924a91f91c0a85ff244cc070b4f559 differ
+diff --git a/fuzz/corpora/crl/a804b3ea00c53e77ea0ce531a10e474d80915b2e b/fuzz/corpora/crl/a804b3ea00c53e77ea0ce531a10e474d80915b2e
+new file mode 100644
+index 0000000..ccc9950
+Binary files /dev/null and b/fuzz/corpora/crl/a804b3ea00c53e77ea0ce531a10e474d80915b2e differ
+diff --git a/fuzz/corpora/crl/a86f8a8f5af11055b6ac521bf8493fbbbebce861 b/fuzz/corpora/crl/a86f8a8f5af11055b6ac521bf8493fbbbebce861
+new file mode 100644
+index 0000000..dbbb98b
+Binary files /dev/null and b/fuzz/corpora/crl/a86f8a8f5af11055b6ac521bf8493fbbbebce861 differ
+diff --git a/fuzz/corpora/crl/a87c93937e6c8f2fda0b2a1524832aa9f60bf0e8 b/fuzz/corpora/crl/a87c93937e6c8f2fda0b2a1524832aa9f60bf0e8
+new file mode 100644
+index 0000000..3c3324c
+Binary files /dev/null and b/fuzz/corpora/crl/a87c93937e6c8f2fda0b2a1524832aa9f60bf0e8 differ
+diff --git a/fuzz/corpora/crl/a8c7ffdc52f6bd09ba83b443ed15f12ab94fd30e b/fuzz/corpora/crl/a8c7ffdc52f6bd09ba83b443ed15f12ab94fd30e
+new file mode 100644
+index 0000000..c906aef
+Binary files /dev/null and b/fuzz/corpora/crl/a8c7ffdc52f6bd09ba83b443ed15f12ab94fd30e differ
+diff --git a/fuzz/corpora/crl/a8d789dd64af913072cad29b81ebb8fd66597f1e b/fuzz/corpora/crl/a8d789dd64af913072cad29b81ebb8fd66597f1e
+new file mode 100644
+index 0000000..88839c4
+Binary files /dev/null and b/fuzz/corpora/crl/a8d789dd64af913072cad29b81ebb8fd66597f1e differ
+diff --git a/fuzz/corpora/crl/a903a1ce0f1a290b91c7a8df2e8b6066bf99ce57 b/fuzz/corpora/crl/a903a1ce0f1a290b91c7a8df2e8b6066bf99ce57
+new file mode 100644
+index 0000000..46d8029
+Binary files /dev/null and b/fuzz/corpora/crl/a903a1ce0f1a290b91c7a8df2e8b6066bf99ce57 differ
+diff --git a/fuzz/corpora/crl/a942fe1f9531bb095859d49434e01bf6c71d15e5 b/fuzz/corpora/crl/a942fe1f9531bb095859d49434e01bf6c71d15e5
+new file mode 100644
+index 0000000..cce68e5
+Binary files /dev/null and b/fuzz/corpora/crl/a942fe1f9531bb095859d49434e01bf6c71d15e5 differ
+diff --git a/fuzz/corpora/crl/a990ebcd8f72f97560582196d72192af916b7fd5 b/fuzz/corpora/crl/a990ebcd8f72f97560582196d72192af916b7fd5
+new file mode 100644
+index 0000000..4e2fd81
+Binary files /dev/null and b/fuzz/corpora/crl/a990ebcd8f72f97560582196d72192af916b7fd5 differ
+diff --git a/fuzz/corpora/crl/aa768cd1a0bba3ee22dae8567de94d4e31f3eff3 b/fuzz/corpora/crl/aa768cd1a0bba3ee22dae8567de94d4e31f3eff3
+new file mode 100644
+index 0000000..d560c90
+Binary files /dev/null and b/fuzz/corpora/crl/aa768cd1a0bba3ee22dae8567de94d4e31f3eff3 differ
+diff --git a/fuzz/corpora/crl/aaa50414a98c80765432fa6840adcd13978895b5 b/fuzz/corpora/crl/aaa50414a98c80765432fa6840adcd13978895b5
+new file mode 100644
+index 0000000..cd2b337
+Binary files /dev/null and b/fuzz/corpora/crl/aaa50414a98c80765432fa6840adcd13978895b5 differ
+diff --git a/fuzz/corpora/crl/aad4b1b00d49e7576c84db0606e16621028b70fd b/fuzz/corpora/crl/aad4b1b00d49e7576c84db0606e16621028b70fd
+new file mode 100644
+index 0000000..6d76df0
+Binary files /dev/null and b/fuzz/corpora/crl/aad4b1b00d49e7576c84db0606e16621028b70fd differ
+diff --git a/fuzz/corpora/crl/ab019b6b207dae98ffb8c53e5624445eb51b07f1 b/fuzz/corpora/crl/ab019b6b207dae98ffb8c53e5624445eb51b07f1
+new file mode 100644
+index 0000000..45ad5b2
+Binary files /dev/null and b/fuzz/corpora/crl/ab019b6b207dae98ffb8c53e5624445eb51b07f1 differ
+diff --git a/fuzz/corpora/crl/ab0e2145e6e82c0a0707e7dba523a28c0589803a b/fuzz/corpora/crl/ab0e2145e6e82c0a0707e7dba523a28c0589803a
+new file mode 100644
+index 0000000..6eeb7d0
+Binary files /dev/null and b/fuzz/corpora/crl/ab0e2145e6e82c0a0707e7dba523a28c0589803a differ
+diff --git a/fuzz/corpora/crl/ab6a30041682db50dd28068f75f0d099bf5e3689 b/fuzz/corpora/crl/ab6a30041682db50dd28068f75f0d099bf5e3689
+new file mode 100644
+index 0000000..51ed440
+Binary files /dev/null and b/fuzz/corpora/crl/ab6a30041682db50dd28068f75f0d099bf5e3689 differ
+diff --git a/fuzz/corpora/crl/abbd9287761526f070bb78e836c0ed5f6b3b491a b/fuzz/corpora/crl/abbd9287761526f070bb78e836c0ed5f6b3b491a
+new file mode 100644
+index 0000000..e4d45b4
+Binary files /dev/null and b/fuzz/corpora/crl/abbd9287761526f070bb78e836c0ed5f6b3b491a differ
+diff --git a/fuzz/corpora/crl/abc0dc26a9ad3bdc42fb80ec597e24e9593cc0ea b/fuzz/corpora/crl/abc0dc26a9ad3bdc42fb80ec597e24e9593cc0ea
+new file mode 100644
+index 0000000..c78b2ce
+Binary files /dev/null and b/fuzz/corpora/crl/abc0dc26a9ad3bdc42fb80ec597e24e9593cc0ea differ
+diff --git a/fuzz/corpora/crl/abc64acc4e57f9daa35ab1cd483aa5d54c3e22a5 b/fuzz/corpora/crl/abc64acc4e57f9daa35ab1cd483aa5d54c3e22a5
+new file mode 100644
+index 0000000..0a569f5
+Binary files /dev/null and b/fuzz/corpora/crl/abc64acc4e57f9daa35ab1cd483aa5d54c3e22a5 differ
+diff --git a/fuzz/corpora/crl/ac1af3832967a067998d4ec6163d21ac84788c44 b/fuzz/corpora/crl/ac1af3832967a067998d4ec6163d21ac84788c44
+new file mode 100644
+index 0000000..7b7c3a8
+Binary files /dev/null and b/fuzz/corpora/crl/ac1af3832967a067998d4ec6163d21ac84788c44 differ
+diff --git a/fuzz/corpora/crl/acc9cfd921cb148a56e36dec5b41d2d934935354 b/fuzz/corpora/crl/acc9cfd921cb148a56e36dec5b41d2d934935354
+new file mode 100644
+index 0000000..0e52b06
+Binary files /dev/null and b/fuzz/corpora/crl/acc9cfd921cb148a56e36dec5b41d2d934935354 differ
+diff --git a/fuzz/corpora/crl/ae536429c41525f67249d81ba85a76a48f04a0c4 b/fuzz/corpora/crl/ae536429c41525f67249d81ba85a76a48f04a0c4
+new file mode 100644
+index 0000000..28f5628
+Binary files /dev/null and b/fuzz/corpora/crl/ae536429c41525f67249d81ba85a76a48f04a0c4 differ
+diff --git a/fuzz/corpora/crl/ae7eb55676d92c677a17e8f594bc88ce658d5d5a b/fuzz/corpora/crl/ae7eb55676d92c677a17e8f594bc88ce658d5d5a
+new file mode 100644
+index 0000000..45fc4e1
+Binary files /dev/null and b/fuzz/corpora/crl/ae7eb55676d92c677a17e8f594bc88ce658d5d5a differ
+diff --git a/fuzz/corpora/crl/aeb89e7ab543fe0973cbbe0d9f1ed4a1c5d4dab7 b/fuzz/corpora/crl/aeb89e7ab543fe0973cbbe0d9f1ed4a1c5d4dab7
+new file mode 100644
+index 0000000..dfda42b
+Binary files /dev/null and b/fuzz/corpora/crl/aeb89e7ab543fe0973cbbe0d9f1ed4a1c5d4dab7 differ
+diff --git a/fuzz/corpora/crl/aed6b61bc1008d8390410a6c75d4914bd04acc92 b/fuzz/corpora/crl/aed6b61bc1008d8390410a6c75d4914bd04acc92
+new file mode 100644
+index 0000000..22ebc03
+Binary files /dev/null and b/fuzz/corpora/crl/aed6b61bc1008d8390410a6c75d4914bd04acc92 differ
+diff --git a/fuzz/corpora/crl/af6339cbaa9ed04baa58b4fc777061d970f88b66 b/fuzz/corpora/crl/af6339cbaa9ed04baa58b4fc777061d970f88b66
+new file mode 100644
+index 0000000..be4d902
+Binary files /dev/null and b/fuzz/corpora/crl/af6339cbaa9ed04baa58b4fc777061d970f88b66 differ
+diff --git a/fuzz/corpora/crl/afb9ada23f8cdc85b381ad62d7cfaae9ffc46fee b/fuzz/corpora/crl/afb9ada23f8cdc85b381ad62d7cfaae9ffc46fee
+new file mode 100644
+index 0000000..8a24533
+Binary files /dev/null and b/fuzz/corpora/crl/afb9ada23f8cdc85b381ad62d7cfaae9ffc46fee differ
+diff --git a/fuzz/corpora/crl/afd2b6f35c8a59bedf9d0f71161151959524c731 b/fuzz/corpora/crl/afd2b6f35c8a59bedf9d0f71161151959524c731
+new file mode 100644
+index 0000000..f7c610e
+Binary files /dev/null and b/fuzz/corpora/crl/afd2b6f35c8a59bedf9d0f71161151959524c731 differ
+diff --git a/fuzz/corpora/crl/b026396ac679309e58ddc8f4dff0b69b7d4e11a0 b/fuzz/corpora/crl/b026396ac679309e58ddc8f4dff0b69b7d4e11a0
+new file mode 100644
+index 0000000..fba50b1
+Binary files /dev/null and b/fuzz/corpora/crl/b026396ac679309e58ddc8f4dff0b69b7d4e11a0 differ
+diff --git a/fuzz/corpora/crl/b0b89639a6e72346875e6de665259f480b72a7c9 b/fuzz/corpora/crl/b0b89639a6e72346875e6de665259f480b72a7c9
+new file mode 100644
+index 0000000..3d6b628
+Binary files /dev/null and b/fuzz/corpora/crl/b0b89639a6e72346875e6de665259f480b72a7c9 differ
+diff --git a/fuzz/corpora/crl/b0f765b5c5dc39f37688564ea60b82e724ba37f6 b/fuzz/corpora/crl/b0f765b5c5dc39f37688564ea60b82e724ba37f6
+new file mode 100644
+index 0000000..4df2a6d
+Binary files /dev/null and b/fuzz/corpora/crl/b0f765b5c5dc39f37688564ea60b82e724ba37f6 differ
+diff --git a/fuzz/corpora/crl/b1dc7b083703db8f6c5386a23096eee6b3213ac9 b/fuzz/corpora/crl/b1dc7b083703db8f6c5386a23096eee6b3213ac9
+new file mode 100644
+index 0000000..fc5a9d1
+Binary files /dev/null and b/fuzz/corpora/crl/b1dc7b083703db8f6c5386a23096eee6b3213ac9 differ
+diff --git a/fuzz/corpora/crl/b1fa953dbd62fc3c9fcefc6fce22c2d074bf4805 b/fuzz/corpora/crl/b1fa953dbd62fc3c9fcefc6fce22c2d074bf4805
+new file mode 100644
+index 0000000..3f970be
+Binary files /dev/null and b/fuzz/corpora/crl/b1fa953dbd62fc3c9fcefc6fce22c2d074bf4805 differ
+diff --git a/fuzz/corpora/crl/b2883db9623c689c8fa41776c310a02a3d4b01d7 b/fuzz/corpora/crl/b2883db9623c689c8fa41776c310a02a3d4b01d7
+new file mode 100644
+index 0000000..c86a620
+Binary files /dev/null and b/fuzz/corpora/crl/b2883db9623c689c8fa41776c310a02a3d4b01d7 differ
+diff --git a/fuzz/corpora/crl/b2ba633dc1524b8e5817e215e85aa3d38c0f1329 b/fuzz/corpora/crl/b2ba633dc1524b8e5817e215e85aa3d38c0f1329
+new file mode 100644
+index 0000000..2a3c0e0
+Binary files /dev/null and b/fuzz/corpora/crl/b2ba633dc1524b8e5817e215e85aa3d38c0f1329 differ
+diff --git a/fuzz/corpora/crl/b2d9f196082ac030a25d862f6f09ceb0eb86d705 b/fuzz/corpora/crl/b2d9f196082ac030a25d862f6f09ceb0eb86d705
+new file mode 100644
+index 0000000..dc18c4b
+Binary files /dev/null and b/fuzz/corpora/crl/b2d9f196082ac030a25d862f6f09ceb0eb86d705 differ
+diff --git a/fuzz/corpora/crl/b2e5342ee20eee873433987bd060c5d519aafb1f b/fuzz/corpora/crl/b2e5342ee20eee873433987bd060c5d519aafb1f
+new file mode 100644
+index 0000000..a115057
+Binary files /dev/null and b/fuzz/corpora/crl/b2e5342ee20eee873433987bd060c5d519aafb1f differ
+diff --git a/fuzz/corpora/crl/b31da5e6f3aaccc6a0d94b04c6522c06850072d6 b/fuzz/corpora/crl/b31da5e6f3aaccc6a0d94b04c6522c06850072d6
+new file mode 100644
+index 0000000..e962986
+Binary files /dev/null and b/fuzz/corpora/crl/b31da5e6f3aaccc6a0d94b04c6522c06850072d6 differ
+diff --git a/fuzz/corpora/crl/b36f54e82aab2e2295797d4104c900dab21cfdf6 b/fuzz/corpora/crl/b36f54e82aab2e2295797d4104c900dab21cfdf6
+new file mode 100644
+index 0000000..d301fe7
+Binary files /dev/null and b/fuzz/corpora/crl/b36f54e82aab2e2295797d4104c900dab21cfdf6 differ
+diff --git a/fuzz/corpora/crl/b410893c3dae4a860c0e1e41143b24c66a399d8c b/fuzz/corpora/crl/b410893c3dae4a860c0e1e41143b24c66a399d8c
+new file mode 100644
+index 0000000..b32aed1
+Binary files /dev/null and b/fuzz/corpora/crl/b410893c3dae4a860c0e1e41143b24c66a399d8c differ
+diff --git a/fuzz/corpora/crl/b442cb276cd18f06e6d77b98f9223823c15a2d47 b/fuzz/corpora/crl/b442cb276cd18f06e6d77b98f9223823c15a2d47
+new file mode 100644
+index 0000000..e3ce968
+Binary files /dev/null and b/fuzz/corpora/crl/b442cb276cd18f06e6d77b98f9223823c15a2d47 differ
+diff --git a/fuzz/corpora/crl/b4a7ad1caf7ec9fe7465f40ebb60d9e3563c48dd b/fuzz/corpora/crl/b4a7ad1caf7ec9fe7465f40ebb60d9e3563c48dd
+new file mode 100644
+index 0000000..fe20132
+Binary files /dev/null and b/fuzz/corpora/crl/b4a7ad1caf7ec9fe7465f40ebb60d9e3563c48dd differ
+diff --git a/fuzz/corpora/crl/b4bb5ac8ba062e1f8f98617da337dfeab0442d16 b/fuzz/corpora/crl/b4bb5ac8ba062e1f8f98617da337dfeab0442d16
+new file mode 100644
+index 0000000..ecc8f0b
+Binary files /dev/null and b/fuzz/corpora/crl/b4bb5ac8ba062e1f8f98617da337dfeab0442d16 differ
+diff --git a/fuzz/corpora/crl/b4d25c2b9d8a7bbe658e814fb5e2f69efa633887 b/fuzz/corpora/crl/b4d25c2b9d8a7bbe658e814fb5e2f69efa633887
+new file mode 100644
+index 0000000..b02a1a7
+Binary files /dev/null and b/fuzz/corpora/crl/b4d25c2b9d8a7bbe658e814fb5e2f69efa633887 differ
+diff --git a/fuzz/corpora/crl/b4d894317b7606870e288ac29ce507936817830c b/fuzz/corpora/crl/b4d894317b7606870e288ac29ce507936817830c
+new file mode 100644
+index 0000000..de4342d
+Binary files /dev/null and b/fuzz/corpora/crl/b4d894317b7606870e288ac29ce507936817830c differ
+diff --git a/fuzz/corpora/crl/b50c444ff52ff487e0807490adb1a21bc4c64f14 b/fuzz/corpora/crl/b50c444ff52ff487e0807490adb1a21bc4c64f14
+new file mode 100644
+index 0000000..05409dd
+Binary files /dev/null and b/fuzz/corpora/crl/b50c444ff52ff487e0807490adb1a21bc4c64f14 differ
+diff --git a/fuzz/corpora/crl/b6297afe94b7c31d51607340300c6e27c181acea b/fuzz/corpora/crl/b6297afe94b7c31d51607340300c6e27c181acea
+new file mode 100644
+index 0000000..b7c5dcd
+Binary files /dev/null and b/fuzz/corpora/crl/b6297afe94b7c31d51607340300c6e27c181acea differ
+diff --git a/fuzz/corpora/crl/b63bab91985d5776ced990a2f5fb175b1189239b b/fuzz/corpora/crl/b63bab91985d5776ced990a2f5fb175b1189239b
+new file mode 100644
+index 0000000..ad28dc6
+Binary files /dev/null and b/fuzz/corpora/crl/b63bab91985d5776ced990a2f5fb175b1189239b differ
+diff --git a/fuzz/corpora/crl/b63e8cec52411df9037ca09938f0079bf894827c b/fuzz/corpora/crl/b63e8cec52411df9037ca09938f0079bf894827c
+new file mode 100644
+index 0000000..a2d2481
+Binary files /dev/null and b/fuzz/corpora/crl/b63e8cec52411df9037ca09938f0079bf894827c differ
+diff --git a/fuzz/corpora/crl/b69f006d4fbac5e44a85ca0614e70777906ba388 b/fuzz/corpora/crl/b69f006d4fbac5e44a85ca0614e70777906ba388
+new file mode 100644
+index 0000000..6a140c8
+Binary files /dev/null and b/fuzz/corpora/crl/b69f006d4fbac5e44a85ca0614e70777906ba388 differ
+diff --git a/fuzz/corpora/crl/b6f7da2c32971d7499de7f190d7fb2712d34f6dd b/fuzz/corpora/crl/b6f7da2c32971d7499de7f190d7fb2712d34f6dd
+new file mode 100644
+index 0000000..cfec6e3
+Binary files /dev/null and b/fuzz/corpora/crl/b6f7da2c32971d7499de7f190d7fb2712d34f6dd differ
+diff --git a/fuzz/corpora/crl/b7300456bfb4fc79a6c8316ad79c4ce2f58523bd b/fuzz/corpora/crl/b7300456bfb4fc79a6c8316ad79c4ce2f58523bd
+new file mode 100644
+index 0000000..0bd4db5
+Binary files /dev/null and b/fuzz/corpora/crl/b7300456bfb4fc79a6c8316ad79c4ce2f58523bd differ
+diff --git a/fuzz/corpora/crl/b7506c230a1f208eeee0a2bc65bea328450e81f2 b/fuzz/corpora/crl/b7506c230a1f208eeee0a2bc65bea328450e81f2
+new file mode 100644
+index 0000000..b02273f
+Binary files /dev/null and b/fuzz/corpora/crl/b7506c230a1f208eeee0a2bc65bea328450e81f2 differ
+diff --git a/fuzz/corpora/crl/b852912077720aac60a5f44538f510e890c11036 b/fuzz/corpora/crl/b852912077720aac60a5f44538f510e890c11036
+new file mode 100644
+index 0000000..033c535
+Binary files /dev/null and b/fuzz/corpora/crl/b852912077720aac60a5f44538f510e890c11036 differ
+diff --git a/fuzz/corpora/crl/b8856084ac49506cd1f74d42930dc156173043ad b/fuzz/corpora/crl/b8856084ac49506cd1f74d42930dc156173043ad
+new file mode 100644
+index 0000000..3e86739
+Binary files /dev/null and b/fuzz/corpora/crl/b8856084ac49506cd1f74d42930dc156173043ad differ
+diff --git a/fuzz/corpora/crl/b8b37bad49ccf03a18b2a5f4a423ca68385d3a8c b/fuzz/corpora/crl/b8b37bad49ccf03a18b2a5f4a423ca68385d3a8c
+new file mode 100644
+index 0000000..125083e
+Binary files /dev/null and b/fuzz/corpora/crl/b8b37bad49ccf03a18b2a5f4a423ca68385d3a8c differ
+diff --git a/fuzz/corpora/crl/b916370b207d6bfe9e92d9096a0856480ecc828a b/fuzz/corpora/crl/b916370b207d6bfe9e92d9096a0856480ecc828a
+new file mode 100644
+index 0000000..3d23572
+Binary files /dev/null and b/fuzz/corpora/crl/b916370b207d6bfe9e92d9096a0856480ecc828a differ
+diff --git a/fuzz/corpora/crl/b94ed3c77faf3ac69b2300900b04b24b9b515a28 b/fuzz/corpora/crl/b94ed3c77faf3ac69b2300900b04b24b9b515a28
+new file mode 100644
+index 0000000..89635b2
+Binary files /dev/null and b/fuzz/corpora/crl/b94ed3c77faf3ac69b2300900b04b24b9b515a28 differ
+diff --git a/fuzz/corpora/crl/b95fce108db89fc115ab60d98bbb381b19f2cdc0 b/fuzz/corpora/crl/b95fce108db89fc115ab60d98bbb381b19f2cdc0
+new file mode 100644
+index 0000000..6aea38b
+Binary files /dev/null and b/fuzz/corpora/crl/b95fce108db89fc115ab60d98bbb381b19f2cdc0 differ
+diff --git a/fuzz/corpora/crl/b9c74ba5501d75902a119e94fb32217d9bfdb691 b/fuzz/corpora/crl/b9c74ba5501d75902a119e94fb32217d9bfdb691
+new file mode 100644
+index 0000000..517e31a
+Binary files /dev/null and b/fuzz/corpora/crl/b9c74ba5501d75902a119e94fb32217d9bfdb691 differ
+diff --git a/fuzz/corpora/crl/b9dde3ed44926874b6c29033cd7aabb1fc303827 b/fuzz/corpora/crl/b9dde3ed44926874b6c29033cd7aabb1fc303827
+new file mode 100644
+index 0000000..ae4bdfe
+Binary files /dev/null and b/fuzz/corpora/crl/b9dde3ed44926874b6c29033cd7aabb1fc303827 differ
+diff --git a/fuzz/corpora/crl/b9fc376a5c92c8e95ab3b5cce01afb9fe2d1d5f2 b/fuzz/corpora/crl/b9fc376a5c92c8e95ab3b5cce01afb9fe2d1d5f2
+new file mode 100644
+index 0000000..51f74ba
+Binary files /dev/null and b/fuzz/corpora/crl/b9fc376a5c92c8e95ab3b5cce01afb9fe2d1d5f2 differ
+diff --git a/fuzz/corpora/crl/ba0340a3d8561a49b48580d4b25c4a09fd211ce2 b/fuzz/corpora/crl/ba0340a3d8561a49b48580d4b25c4a09fd211ce2
+new file mode 100644
+index 0000000..eb10966
+Binary files /dev/null and b/fuzz/corpora/crl/ba0340a3d8561a49b48580d4b25c4a09fd211ce2 differ
+diff --git a/fuzz/corpora/crl/ba167ab828ed3f0d4e737df7b1c5e28a77579e72 b/fuzz/corpora/crl/ba167ab828ed3f0d4e737df7b1c5e28a77579e72
+new file mode 100644
+index 0000000..e38f318
+Binary files /dev/null and b/fuzz/corpora/crl/ba167ab828ed3f0d4e737df7b1c5e28a77579e72 differ
+diff --git a/fuzz/corpora/crl/ba537a668c0b079e66d790432596ef58139a695f b/fuzz/corpora/crl/ba537a668c0b079e66d790432596ef58139a695f
+new file mode 100644
+index 0000000..c5648e3
+Binary files /dev/null and b/fuzz/corpora/crl/ba537a668c0b079e66d790432596ef58139a695f differ
+diff --git a/fuzz/corpora/crl/ba5ce74c440ad59f535f87f78951779fbe3a81e4 b/fuzz/corpora/crl/ba5ce74c440ad59f535f87f78951779fbe3a81e4
+new file mode 100644
+index 0000000..c7004b0
+Binary files /dev/null and b/fuzz/corpora/crl/ba5ce74c440ad59f535f87f78951779fbe3a81e4 differ
+diff --git a/fuzz/corpora/crl/babaa91cc85837311c18080fc19d2a6600eb4b15 b/fuzz/corpora/crl/babaa91cc85837311c18080fc19d2a6600eb4b15
+new file mode 100644
+index 0000000..3895405
+Binary files /dev/null and b/fuzz/corpora/crl/babaa91cc85837311c18080fc19d2a6600eb4b15 differ
+diff --git a/fuzz/corpora/crl/bb19ba8f977a5e01f50169662be1280e7c6c8f6c b/fuzz/corpora/crl/bb19ba8f977a5e01f50169662be1280e7c6c8f6c
+new file mode 100644
+index 0000000..f4cffa9
+Binary files /dev/null and b/fuzz/corpora/crl/bb19ba8f977a5e01f50169662be1280e7c6c8f6c differ
+diff --git a/fuzz/corpora/crl/bb3922649835a2f941a6e9d42d36feec396d1b9d b/fuzz/corpora/crl/bb3922649835a2f941a6e9d42d36feec396d1b9d
+new file mode 100644
+index 0000000..1e7bef9
+Binary files /dev/null and b/fuzz/corpora/crl/bb3922649835a2f941a6e9d42d36feec396d1b9d differ
+diff --git a/fuzz/corpora/crl/bbf487fe53f4fb157c11d3f76f26162bc6f62c20 b/fuzz/corpora/crl/bbf487fe53f4fb157c11d3f76f26162bc6f62c20
+new file mode 100644
+index 0000000..33aa7ce
+Binary files /dev/null and b/fuzz/corpora/crl/bbf487fe53f4fb157c11d3f76f26162bc6f62c20 differ
+diff --git a/fuzz/corpora/crl/bbfc05b0851cfa7b0cbd04cd33234fe08a0007f3 b/fuzz/corpora/crl/bbfc05b0851cfa7b0cbd04cd33234fe08a0007f3
+new file mode 100644
+index 0000000..5cf0d85
+Binary files /dev/null and b/fuzz/corpora/crl/bbfc05b0851cfa7b0cbd04cd33234fe08a0007f3 differ
+diff --git a/fuzz/corpora/crl/bc0b04b58c3a0aa1e494be04ced881dedaab0ef7 b/fuzz/corpora/crl/bc0b04b58c3a0aa1e494be04ced881dedaab0ef7
+new file mode 100644
+index 0000000..4070481
+Binary files /dev/null and b/fuzz/corpora/crl/bc0b04b58c3a0aa1e494be04ced881dedaab0ef7 differ
+diff --git a/fuzz/corpora/crl/bc56c8d5adf1e0a1bff98e886428c51c29a08f77 b/fuzz/corpora/crl/bc56c8d5adf1e0a1bff98e886428c51c29a08f77
+new file mode 100644
+index 0000000..4a14a75
+Binary files /dev/null and b/fuzz/corpora/crl/bc56c8d5adf1e0a1bff98e886428c51c29a08f77 differ
+diff --git a/fuzz/corpora/crl/bc7e7530a1a49ffcb689ce9d4d82816238074d85 b/fuzz/corpora/crl/bc7e7530a1a49ffcb689ce9d4d82816238074d85
+new file mode 100644
+index 0000000..f6eddc9
+Binary files /dev/null and b/fuzz/corpora/crl/bc7e7530a1a49ffcb689ce9d4d82816238074d85 differ
+diff --git a/fuzz/corpora/crl/bcd340c0c483ca4228ce4f85327c999dd354b5b9 b/fuzz/corpora/crl/bcd340c0c483ca4228ce4f85327c999dd354b5b9
+new file mode 100644
+index 0000000..eb619f6
+Binary files /dev/null and b/fuzz/corpora/crl/bcd340c0c483ca4228ce4f85327c999dd354b5b9 differ
+diff --git a/fuzz/corpora/crl/bce7b86b7867fadae9b6772b55a8ad31bc1b277b b/fuzz/corpora/crl/bce7b86b7867fadae9b6772b55a8ad31bc1b277b
+new file mode 100644
+index 0000000..c910ed1
+Binary files /dev/null and b/fuzz/corpora/crl/bce7b86b7867fadae9b6772b55a8ad31bc1b277b differ
+diff --git a/fuzz/corpora/crl/bced40ad9fcf4a943fdafe4cc17faab711e06e64 b/fuzz/corpora/crl/bced40ad9fcf4a943fdafe4cc17faab711e06e64
+new file mode 100644
+index 0000000..4d4c6ed
+Binary files /dev/null and b/fuzz/corpora/crl/bced40ad9fcf4a943fdafe4cc17faab711e06e64 differ
+diff --git a/fuzz/corpora/crl/bcf95f277823641503efde6c6822579884c6968d b/fuzz/corpora/crl/bcf95f277823641503efde6c6822579884c6968d
+new file mode 100644
+index 0000000..a5dd7ea
+Binary files /dev/null and b/fuzz/corpora/crl/bcf95f277823641503efde6c6822579884c6968d differ
+diff --git a/fuzz/corpora/crl/bd068110f3116876e2064e66ecff3be6393e0c80 b/fuzz/corpora/crl/bd068110f3116876e2064e66ecff3be6393e0c80
+new file mode 100644
+index 0000000..e753dc3
+Binary files /dev/null and b/fuzz/corpora/crl/bd068110f3116876e2064e66ecff3be6393e0c80 differ
+diff --git a/fuzz/corpora/crl/bd083e2c2dbc1fe5cb8b96abf4754e1814af8de7 b/fuzz/corpora/crl/bd083e2c2dbc1fe5cb8b96abf4754e1814af8de7
+new file mode 100644
+index 0000000..63df8ee
+Binary files /dev/null and b/fuzz/corpora/crl/bd083e2c2dbc1fe5cb8b96abf4754e1814af8de7 differ
+diff --git a/fuzz/corpora/crl/be60efcdecaac183a12139e5891e9243fd966d83 b/fuzz/corpora/crl/be60efcdecaac183a12139e5891e9243fd966d83
+new file mode 100644
+index 0000000..b7e70c1
+Binary files /dev/null and b/fuzz/corpora/crl/be60efcdecaac183a12139e5891e9243fd966d83 differ
+diff --git a/fuzz/corpora/crl/bfb78ebd408b4d411f61eba60fdf768835268ce0 b/fuzz/corpora/crl/bfb78ebd408b4d411f61eba60fdf768835268ce0
+new file mode 100644
+index 0000000..b63de7f
+Binary files /dev/null and b/fuzz/corpora/crl/bfb78ebd408b4d411f61eba60fdf768835268ce0 differ
+diff --git a/fuzz/corpora/crl/c0e2410544a5b46d61155b32b68fee14612c51ad b/fuzz/corpora/crl/c0e2410544a5b46d61155b32b68fee14612c51ad
+new file mode 100644
+index 0000000..bef4b00
+Binary files /dev/null and b/fuzz/corpora/crl/c0e2410544a5b46d61155b32b68fee14612c51ad differ
+diff --git a/fuzz/corpora/crl/c0fd44447ee74d84c548f9869e48f0f992a50f43 b/fuzz/corpora/crl/c0fd44447ee74d84c548f9869e48f0f992a50f43
+new file mode 100644
+index 0000000..b6a8d72
+Binary files /dev/null and b/fuzz/corpora/crl/c0fd44447ee74d84c548f9869e48f0f992a50f43 differ
+diff --git a/fuzz/corpora/crl/c17734e4e2ff4908b0dc52090e264b31668f055b b/fuzz/corpora/crl/c17734e4e2ff4908b0dc52090e264b31668f055b
+new file mode 100644
+index 0000000..5cb962f
+Binary files /dev/null and b/fuzz/corpora/crl/c17734e4e2ff4908b0dc52090e264b31668f055b differ
+diff --git a/fuzz/corpora/crl/c1cae1583b3b3ef53d2e21b61a3d1dd6aff143f7 b/fuzz/corpora/crl/c1cae1583b3b3ef53d2e21b61a3d1dd6aff143f7
+new file mode 100644
+index 0000000..6fc681a
+Binary files /dev/null and b/fuzz/corpora/crl/c1cae1583b3b3ef53d2e21b61a3d1dd6aff143f7 differ
+diff --git a/fuzz/corpora/crl/c262ae8ffc8cf26f6c31e310af82d07095065cde b/fuzz/corpora/crl/c262ae8ffc8cf26f6c31e310af82d07095065cde
+new file mode 100644
+index 0000000..f46c8ed
+Binary files /dev/null and b/fuzz/corpora/crl/c262ae8ffc8cf26f6c31e310af82d07095065cde differ
+diff --git a/fuzz/corpora/crl/c2810bda5f89035c90a7c361bb627bd501ab286c b/fuzz/corpora/crl/c2810bda5f89035c90a7c361bb627bd501ab286c
+new file mode 100644
+index 0000000..e99f90c
+Binary files /dev/null and b/fuzz/corpora/crl/c2810bda5f89035c90a7c361bb627bd501ab286c differ
+diff --git a/fuzz/corpora/crl/c2a25e6ba379eb4c7ebe37b47bb5210b13a4bf6b b/fuzz/corpora/crl/c2a25e6ba379eb4c7ebe37b47bb5210b13a4bf6b
+new file mode 100644
+index 0000000..b743570
+Binary files /dev/null and b/fuzz/corpora/crl/c2a25e6ba379eb4c7ebe37b47bb5210b13a4bf6b differ
+diff --git a/fuzz/corpora/crl/c2b0445e032a48565918c89950af869889836116 b/fuzz/corpora/crl/c2b0445e032a48565918c89950af869889836116
+new file mode 100644
+index 0000000..12dfa8d
+Binary files /dev/null and b/fuzz/corpora/crl/c2b0445e032a48565918c89950af869889836116 differ
+diff --git a/fuzz/corpora/crl/c2dd44f16a7858fbc8b8ceb6ab0348346c56508f b/fuzz/corpora/crl/c2dd44f16a7858fbc8b8ceb6ab0348346c56508f
+new file mode 100644
+index 0000000..86ba593
+Binary files /dev/null and b/fuzz/corpora/crl/c2dd44f16a7858fbc8b8ceb6ab0348346c56508f differ
+diff --git a/fuzz/corpora/crl/c2dfb0170ee0b6f8c75792faa868aeb8ee12958e b/fuzz/corpora/crl/c2dfb0170ee0b6f8c75792faa868aeb8ee12958e
+new file mode 100644
+index 0000000..a06cf7b
+Binary files /dev/null and b/fuzz/corpora/crl/c2dfb0170ee0b6f8c75792faa868aeb8ee12958e differ
+diff --git a/fuzz/corpora/crl/c313bcf4ebd4f470d44f193018ab56130ea45c13 b/fuzz/corpora/crl/c313bcf4ebd4f470d44f193018ab56130ea45c13
+new file mode 100644
+index 0000000..30f4c8d
+Binary files /dev/null and b/fuzz/corpora/crl/c313bcf4ebd4f470d44f193018ab56130ea45c13 differ
+diff --git a/fuzz/corpora/crl/c3a6df5caf6442106dd8ef51309785d6fd9e096e b/fuzz/corpora/crl/c3a6df5caf6442106dd8ef51309785d6fd9e096e
+new file mode 100644
+index 0000000..73d40c7
+Binary files /dev/null and b/fuzz/corpora/crl/c3a6df5caf6442106dd8ef51309785d6fd9e096e differ
+diff --git a/fuzz/corpora/crl/c3d4cbc2e896b143eda4a271eb1ed6c9546a0fbd b/fuzz/corpora/crl/c3d4cbc2e896b143eda4a271eb1ed6c9546a0fbd
+new file mode 100644
+index 0000000..206767a
+Binary files /dev/null and b/fuzz/corpora/crl/c3d4cbc2e896b143eda4a271eb1ed6c9546a0fbd differ
+diff --git a/fuzz/corpora/crl/c3ea41d4ac5adfe41b1e78045fa5aaab6d1d7619 b/fuzz/corpora/crl/c3ea41d4ac5adfe41b1e78045fa5aaab6d1d7619
+new file mode 100644
+index 0000000..fbd725a
+Binary files /dev/null and b/fuzz/corpora/crl/c3ea41d4ac5adfe41b1e78045fa5aaab6d1d7619 differ
+diff --git a/fuzz/corpora/crl/c4537d50deb1b0f32d0afd1b8e2a176f74892f1a b/fuzz/corpora/crl/c4537d50deb1b0f32d0afd1b8e2a176f74892f1a
+new file mode 100644
+index 0000000..b7d6c9a
+Binary files /dev/null and b/fuzz/corpora/crl/c4537d50deb1b0f32d0afd1b8e2a176f74892f1a differ
+diff --git a/fuzz/corpora/crl/c457643b0a1c11a264c6a5dba50a677cfdeadc13 b/fuzz/corpora/crl/c457643b0a1c11a264c6a5dba50a677cfdeadc13
+new file mode 100644
+index 0000000..498ecde
+Binary files /dev/null and b/fuzz/corpora/crl/c457643b0a1c11a264c6a5dba50a677cfdeadc13 differ
+diff --git a/fuzz/corpora/crl/c4ca6bb0b187305aa5b69926b258b25a14d733b1 b/fuzz/corpora/crl/c4ca6bb0b187305aa5b69926b258b25a14d733b1
+new file mode 100644
+index 0000000..6fe08f6
+Binary files /dev/null and b/fuzz/corpora/crl/c4ca6bb0b187305aa5b69926b258b25a14d733b1 differ
+diff --git a/fuzz/corpora/crl/c4e2d61a43dfe13fa4b69bb44cab80b10e1ca762 b/fuzz/corpora/crl/c4e2d61a43dfe13fa4b69bb44cab80b10e1ca762
+new file mode 100644
+index 0000000..020a4c0
+Binary files /dev/null and b/fuzz/corpora/crl/c4e2d61a43dfe13fa4b69bb44cab80b10e1ca762 differ
+diff --git a/fuzz/corpora/crl/c602546ca66d82f6988eb2028f39e6bb7afbf636 b/fuzz/corpora/crl/c602546ca66d82f6988eb2028f39e6bb7afbf636
+new file mode 100644
+index 0000000..942ebfa
+Binary files /dev/null and b/fuzz/corpora/crl/c602546ca66d82f6988eb2028f39e6bb7afbf636 differ
+diff --git a/fuzz/corpora/crl/c672dae15311d3aa1a2b7b6f92330ddae15f57e4 b/fuzz/corpora/crl/c672dae15311d3aa1a2b7b6f92330ddae15f57e4
+new file mode 100644
+index 0000000..e8e1b2a
+Binary files /dev/null and b/fuzz/corpora/crl/c672dae15311d3aa1a2b7b6f92330ddae15f57e4 differ
+diff --git a/fuzz/corpora/crl/c67b95168e971f3b03a88003600cc9970682496a b/fuzz/corpora/crl/c67b95168e971f3b03a88003600cc9970682496a
+new file mode 100644
+index 0000000..901ef40
+Binary files /dev/null and b/fuzz/corpora/crl/c67b95168e971f3b03a88003600cc9970682496a differ
+diff --git a/fuzz/corpora/crl/c68cfc4722f79385dac7c7c5003c4fd5c5610468 b/fuzz/corpora/crl/c68cfc4722f79385dac7c7c5003c4fd5c5610468
+new file mode 100644
+index 0000000..e95cc12
+Binary files /dev/null and b/fuzz/corpora/crl/c68cfc4722f79385dac7c7c5003c4fd5c5610468 differ
+diff --git a/fuzz/corpora/crl/c6a4485a4527bbb69e554666a3b01de414650f3a b/fuzz/corpora/crl/c6a4485a4527bbb69e554666a3b01de414650f3a
+new file mode 100644
+index 0000000..da13b7d
+Binary files /dev/null and b/fuzz/corpora/crl/c6a4485a4527bbb69e554666a3b01de414650f3a differ
+diff --git a/fuzz/corpora/crl/c704729bf399a938114d5720e97d9d63c9c797e7 b/fuzz/corpora/crl/c704729bf399a938114d5720e97d9d63c9c797e7
+new file mode 100644
+index 0000000..c4ec97e
+Binary files /dev/null and b/fuzz/corpora/crl/c704729bf399a938114d5720e97d9d63c9c797e7 differ
+diff --git a/fuzz/corpora/crl/c741610867f749444cd14fbb877082ecb2ae2184 b/fuzz/corpora/crl/c741610867f749444cd14fbb877082ecb2ae2184
+new file mode 100644
+index 0000000..cd4b6c5
+Binary files /dev/null and b/fuzz/corpora/crl/c741610867f749444cd14fbb877082ecb2ae2184 differ
+diff --git a/fuzz/corpora/crl/c787ac1ef2fff18420330c9bf1499d0b505e3467 b/fuzz/corpora/crl/c787ac1ef2fff18420330c9bf1499d0b505e3467
+new file mode 100644
+index 0000000..da54dc1
+Binary files /dev/null and b/fuzz/corpora/crl/c787ac1ef2fff18420330c9bf1499d0b505e3467 differ
+diff --git a/fuzz/corpora/crl/c80144d931bb739ccd7e211e741b2535ba9666e6 b/fuzz/corpora/crl/c80144d931bb739ccd7e211e741b2535ba9666e6
+new file mode 100644
+index 0000000..82e364d
+Binary files /dev/null and b/fuzz/corpora/crl/c80144d931bb739ccd7e211e741b2535ba9666e6 differ
+diff --git a/fuzz/corpora/crl/c83922c49e88208ab13bf0d95f50aac579ecf876 b/fuzz/corpora/crl/c83922c49e88208ab13bf0d95f50aac579ecf876
+new file mode 100644
+index 0000000..62e8816
+Binary files /dev/null and b/fuzz/corpora/crl/c83922c49e88208ab13bf0d95f50aac579ecf876 differ
+diff --git a/fuzz/corpora/crl/c869c5ff77dfe4b76293e7b39e64083ce51760a3 b/fuzz/corpora/crl/c869c5ff77dfe4b76293e7b39e64083ce51760a3
+new file mode 100644
+index 0000000..bb7357f
+Binary files /dev/null and b/fuzz/corpora/crl/c869c5ff77dfe4b76293e7b39e64083ce51760a3 differ
+diff --git a/fuzz/corpora/crl/c86ccce5d63b7ef60dbe2bdfea0a1996ce8df51a b/fuzz/corpora/crl/c86ccce5d63b7ef60dbe2bdfea0a1996ce8df51a
+new file mode 100644
+index 0000000..209cac8
+Binary files /dev/null and b/fuzz/corpora/crl/c86ccce5d63b7ef60dbe2bdfea0a1996ce8df51a differ
+diff --git a/fuzz/corpora/crl/c893eaf866b1cd2dfccd05e29b7a0f230d11e098 b/fuzz/corpora/crl/c893eaf866b1cd2dfccd05e29b7a0f230d11e098
+new file mode 100644
+index 0000000..eab1674
+Binary files /dev/null and b/fuzz/corpora/crl/c893eaf866b1cd2dfccd05e29b7a0f230d11e098 differ
+diff --git a/fuzz/corpora/crl/c8c766c644cc61e0f4c003c2af58da0e720496c1 b/fuzz/corpora/crl/c8c766c644cc61e0f4c003c2af58da0e720496c1
+new file mode 100644
+index 0000000..5c57a2d
+Binary files /dev/null and b/fuzz/corpora/crl/c8c766c644cc61e0f4c003c2af58da0e720496c1 differ
+diff --git a/fuzz/corpora/crl/c8f411b4ebefb4f42987be3ece4968f4c0a777b7 b/fuzz/corpora/crl/c8f411b4ebefb4f42987be3ece4968f4c0a777b7
+new file mode 100644
+index 0000000..9c20395
+Binary files /dev/null and b/fuzz/corpora/crl/c8f411b4ebefb4f42987be3ece4968f4c0a777b7 differ
+diff --git a/fuzz/corpora/crl/c91609e6349755874eead192643e7d061f015899 b/fuzz/corpora/crl/c91609e6349755874eead192643e7d061f015899
+new file mode 100644
+index 0000000..f8e9732
+Binary files /dev/null and b/fuzz/corpora/crl/c91609e6349755874eead192643e7d061f015899 differ
+diff --git a/fuzz/corpora/crl/c99ae56a4ce09b00ca07c35f0c901c5df41915de b/fuzz/corpora/crl/c99ae56a4ce09b00ca07c35f0c901c5df41915de
+new file mode 100644
+index 0000000..33f49d3
+Binary files /dev/null and b/fuzz/corpora/crl/c99ae56a4ce09b00ca07c35f0c901c5df41915de differ
+diff --git a/fuzz/corpora/crl/cab931de0528e505c7a44103c1ebe68873da72fe b/fuzz/corpora/crl/cab931de0528e505c7a44103c1ebe68873da72fe
+new file mode 100644
+index 0000000..32f948e
+Binary files /dev/null and b/fuzz/corpora/crl/cab931de0528e505c7a44103c1ebe68873da72fe differ
+diff --git a/fuzz/corpora/crl/cabc5a80268250bfe4249abae20b44ed7431afc0 b/fuzz/corpora/crl/cabc5a80268250bfe4249abae20b44ed7431afc0
+new file mode 100644
+index 0000000..22d5002
+Binary files /dev/null and b/fuzz/corpora/crl/cabc5a80268250bfe4249abae20b44ed7431afc0 differ
+diff --git a/fuzz/corpora/crl/cad19e928406373948daa0b4308b8e9eae5aca98 b/fuzz/corpora/crl/cad19e928406373948daa0b4308b8e9eae5aca98
+new file mode 100644
+index 0000000..5443c47
+Binary files /dev/null and b/fuzz/corpora/crl/cad19e928406373948daa0b4308b8e9eae5aca98 differ
+diff --git a/fuzz/corpora/crl/cb38dd5b0497a0c7aab8a2b3a7ce29e62b7985dd b/fuzz/corpora/crl/cb38dd5b0497a0c7aab8a2b3a7ce29e62b7985dd
+new file mode 100644
+index 0000000..f5256fd
+Binary files /dev/null and b/fuzz/corpora/crl/cb38dd5b0497a0c7aab8a2b3a7ce29e62b7985dd differ
+diff --git a/fuzz/corpora/crl/cb3d2ba2f075b5748965789e4f540e55fcf46d23 b/fuzz/corpora/crl/cb3d2ba2f075b5748965789e4f540e55fcf46d23
+new file mode 100644
+index 0000000..8b97c0e
+Binary files /dev/null and b/fuzz/corpora/crl/cb3d2ba2f075b5748965789e4f540e55fcf46d23 differ
+diff --git a/fuzz/corpora/crl/cbc6abd5b4d5d2062121ebc39047c0d308290afc b/fuzz/corpora/crl/cbc6abd5b4d5d2062121ebc39047c0d308290afc
+new file mode 100644
+index 0000000..fb6498e
+Binary files /dev/null and b/fuzz/corpora/crl/cbc6abd5b4d5d2062121ebc39047c0d308290afc differ
+diff --git a/fuzz/corpora/crl/cbdca64107a9ef3ae63a1d04651adcb64c30aec6 b/fuzz/corpora/crl/cbdca64107a9ef3ae63a1d04651adcb64c30aec6
+new file mode 100644
+index 0000000..d13e889
+Binary files /dev/null and b/fuzz/corpora/crl/cbdca64107a9ef3ae63a1d04651adcb64c30aec6 differ
+diff --git a/fuzz/corpora/crl/cc4bcd6284ca2e8019d1a008b23d16bbab453582 b/fuzz/corpora/crl/cc4bcd6284ca2e8019d1a008b23d16bbab453582
+new file mode 100644
+index 0000000..2ee3a8d
+Binary files /dev/null and b/fuzz/corpora/crl/cc4bcd6284ca2e8019d1a008b23d16bbab453582 differ
+diff --git a/fuzz/corpora/crl/cc4df8f46f24d9a2d946f4f065dbee7def6082fc b/fuzz/corpora/crl/cc4df8f46f24d9a2d946f4f065dbee7def6082fc
+new file mode 100644
+index 0000000..8b7e743
+Binary files /dev/null and b/fuzz/corpora/crl/cc4df8f46f24d9a2d946f4f065dbee7def6082fc differ
+diff --git a/fuzz/corpora/crl/cd11ad7f905a9235538d0f6f7a23d9b7f50a3841 b/fuzz/corpora/crl/cd11ad7f905a9235538d0f6f7a23d9b7f50a3841
+new file mode 100644
+index 0000000..01c9d9d
+Binary files /dev/null and b/fuzz/corpora/crl/cd11ad7f905a9235538d0f6f7a23d9b7f50a3841 differ
+diff --git a/fuzz/corpora/crl/cda8739c51e41660270d1950eb39b301e374af87 b/fuzz/corpora/crl/cda8739c51e41660270d1950eb39b301e374af87
+new file mode 100644
+index 0000000..3829320
+Binary files /dev/null and b/fuzz/corpora/crl/cda8739c51e41660270d1950eb39b301e374af87 differ
+diff --git a/fuzz/corpora/crl/cdf9c0e3ed5e65f6e50109b0be27951f44be5591 b/fuzz/corpora/crl/cdf9c0e3ed5e65f6e50109b0be27951f44be5591
+new file mode 100644
+index 0000000..637851e
+Binary files /dev/null and b/fuzz/corpora/crl/cdf9c0e3ed5e65f6e50109b0be27951f44be5591 differ
+diff --git a/fuzz/corpora/crl/cf779242507395deec463c69703e210050ae217a b/fuzz/corpora/crl/cf779242507395deec463c69703e210050ae217a
+new file mode 100644
+index 0000000..1e77abd
+Binary files /dev/null and b/fuzz/corpora/crl/cf779242507395deec463c69703e210050ae217a differ
+diff --git a/fuzz/corpora/crl/cfefdbcb0c16cb38e846e93e62d6dbb9e5929e28 b/fuzz/corpora/crl/cfefdbcb0c16cb38e846e93e62d6dbb9e5929e28
+new file mode 100644
+index 0000000..b07d4de
+Binary files /dev/null and b/fuzz/corpora/crl/cfefdbcb0c16cb38e846e93e62d6dbb9e5929e28 differ
+diff --git a/fuzz/corpora/crl/d06044beb96178e65c98e9e72bc9afd7bd649d24 b/fuzz/corpora/crl/d06044beb96178e65c98e9e72bc9afd7bd649d24
+new file mode 100644
+index 0000000..19b7a03
+Binary files /dev/null and b/fuzz/corpora/crl/d06044beb96178e65c98e9e72bc9afd7bd649d24 differ
+diff --git a/fuzz/corpora/crl/d0d082ed65d383521de03d1ad5b77df8aed77360 b/fuzz/corpora/crl/d0d082ed65d383521de03d1ad5b77df8aed77360
+new file mode 100644
+index 0000000..1445701
+Binary files /dev/null and b/fuzz/corpora/crl/d0d082ed65d383521de03d1ad5b77df8aed77360 differ
+diff --git a/fuzz/corpora/crl/d16031224cb2b282165ab36caebb6efc2fc6f3d8 b/fuzz/corpora/crl/d16031224cb2b282165ab36caebb6efc2fc6f3d8
+new file mode 100644
+index 0000000..0c9a720
+Binary files /dev/null and b/fuzz/corpora/crl/d16031224cb2b282165ab36caebb6efc2fc6f3d8 differ
+diff --git a/fuzz/corpora/crl/d17617d42ab2623e6852da97c7ee0efcc4248910 b/fuzz/corpora/crl/d17617d42ab2623e6852da97c7ee0efcc4248910
+new file mode 100644
+index 0000000..4712cf7
+Binary files /dev/null and b/fuzz/corpora/crl/d17617d42ab2623e6852da97c7ee0efcc4248910 differ
+diff --git a/fuzz/corpora/crl/d195adafefaa4e9fcdecf02c2cbe1471bb1e564f b/fuzz/corpora/crl/d195adafefaa4e9fcdecf02c2cbe1471bb1e564f
+new file mode 100644
+index 0000000..a9a823f
+Binary files /dev/null and b/fuzz/corpora/crl/d195adafefaa4e9fcdecf02c2cbe1471bb1e564f differ
+diff --git a/fuzz/corpora/crl/d1aaa312d56196bb451b99b1e5746d113815e757 b/fuzz/corpora/crl/d1aaa312d56196bb451b99b1e5746d113815e757
+new file mode 100644
+index 0000000..b9e0555
+Binary files /dev/null and b/fuzz/corpora/crl/d1aaa312d56196bb451b99b1e5746d113815e757 differ
+diff --git a/fuzz/corpora/crl/d1d9a84f72bec26862d4e27c39d0ffb7d7d685ac b/fuzz/corpora/crl/d1d9a84f72bec26862d4e27c39d0ffb7d7d685ac
+new file mode 100644
+index 0000000..d1cb2d0
+Binary files /dev/null and b/fuzz/corpora/crl/d1d9a84f72bec26862d4e27c39d0ffb7d7d685ac differ
+diff --git a/fuzz/corpora/crl/d24bf32d1e341c958d421725c57d0844ab785a9b b/fuzz/corpora/crl/d24bf32d1e341c958d421725c57d0844ab785a9b
+new file mode 100644
+index 0000000..e14839c
+Binary files /dev/null and b/fuzz/corpora/crl/d24bf32d1e341c958d421725c57d0844ab785a9b differ
+diff --git a/fuzz/corpora/crl/d296c64f700a9099722d08603cec856096f0fff0 b/fuzz/corpora/crl/d296c64f700a9099722d08603cec856096f0fff0
+new file mode 100644
+index 0000000..f1c60aa
+Binary files /dev/null and b/fuzz/corpora/crl/d296c64f700a9099722d08603cec856096f0fff0 differ
+diff --git a/fuzz/corpora/crl/d2c2de1132c0797f9d36f608606d0de633d00c1b b/fuzz/corpora/crl/d2c2de1132c0797f9d36f608606d0de633d00c1b
+new file mode 100644
+index 0000000..b7b37aa
+Binary files /dev/null and b/fuzz/corpora/crl/d2c2de1132c0797f9d36f608606d0de633d00c1b differ
+diff --git a/fuzz/corpora/crl/d2e139bce64bfb47a577a912e70537fcd1c39186 b/fuzz/corpora/crl/d2e139bce64bfb47a577a912e70537fcd1c39186
+new file mode 100644
+index 0000000..185f541
+Binary files /dev/null and b/fuzz/corpora/crl/d2e139bce64bfb47a577a912e70537fcd1c39186 differ
+diff --git a/fuzz/corpora/crl/d33a9635f608c80b6e2c7a0e2bab825eff6bb704 b/fuzz/corpora/crl/d33a9635f608c80b6e2c7a0e2bab825eff6bb704
+new file mode 100644
+index 0000000..4ac22cd
+Binary files /dev/null and b/fuzz/corpora/crl/d33a9635f608c80b6e2c7a0e2bab825eff6bb704 differ
+diff --git a/fuzz/corpora/crl/d3e7acd4596d06728a404d0ddfa779483bed8dad b/fuzz/corpora/crl/d3e7acd4596d06728a404d0ddfa779483bed8dad
+new file mode 100644
+index 0000000..e656956
+Binary files /dev/null and b/fuzz/corpora/crl/d3e7acd4596d06728a404d0ddfa779483bed8dad differ
+diff --git a/fuzz/corpora/crl/d4685b88fa469c799a627d2a20802ea1fc0ccc78 b/fuzz/corpora/crl/d4685b88fa469c799a627d2a20802ea1fc0ccc78
+new file mode 100644
+index 0000000..482f7a4
+Binary files /dev/null and b/fuzz/corpora/crl/d4685b88fa469c799a627d2a20802ea1fc0ccc78 differ
+diff --git a/fuzz/corpora/crl/d4cbaf8f7f9032a35e5d3ae484c6e2ab1d72d975 b/fuzz/corpora/crl/d4cbaf8f7f9032a35e5d3ae484c6e2ab1d72d975
+new file mode 100644
+index 0000000..8a61b0c
+Binary files /dev/null and b/fuzz/corpora/crl/d4cbaf8f7f9032a35e5d3ae484c6e2ab1d72d975 differ
+diff --git a/fuzz/corpora/crl/d4e95ffb6d381416bea7548da7cb0312dc9ed8f5 b/fuzz/corpora/crl/d4e95ffb6d381416bea7548da7cb0312dc9ed8f5
+new file mode 100644
+index 0000000..2de2462
+Binary files /dev/null and b/fuzz/corpora/crl/d4e95ffb6d381416bea7548da7cb0312dc9ed8f5 differ
+diff --git a/fuzz/corpora/crl/d520fd03a527cf58c0f8e7bb6ade9bb8e2e6259f b/fuzz/corpora/crl/d520fd03a527cf58c0f8e7bb6ade9bb8e2e6259f
+new file mode 100644
+index 0000000..bf18bbd
+Binary files /dev/null and b/fuzz/corpora/crl/d520fd03a527cf58c0f8e7bb6ade9bb8e2e6259f differ
+diff --git a/fuzz/corpora/crl/d5655383e633a69f975e786079bb6c65260763f0 b/fuzz/corpora/crl/d5655383e633a69f975e786079bb6c65260763f0
+new file mode 100644
+index 0000000..7082d92
+Binary files /dev/null and b/fuzz/corpora/crl/d5655383e633a69f975e786079bb6c65260763f0 differ
+diff --git a/fuzz/corpora/crl/d57eede1a95c36d027c889bd2c96644fb834560a b/fuzz/corpora/crl/d57eede1a95c36d027c889bd2c96644fb834560a
+new file mode 100644
+index 0000000..d464f16
+Binary files /dev/null and b/fuzz/corpora/crl/d57eede1a95c36d027c889bd2c96644fb834560a differ
+diff --git a/fuzz/corpora/crl/d64c4a8fbe0166fd40bdf23c98cfdb520aca522b b/fuzz/corpora/crl/d64c4a8fbe0166fd40bdf23c98cfdb520aca522b
+new file mode 100644
+index 0000000..0d00418
+Binary files /dev/null and b/fuzz/corpora/crl/d64c4a8fbe0166fd40bdf23c98cfdb520aca522b differ
+diff --git a/fuzz/corpora/crl/d65173855f26cc237d433dcfcb00cc7363217d93 b/fuzz/corpora/crl/d65173855f26cc237d433dcfcb00cc7363217d93
+new file mode 100644
+index 0000000..32cebae
+Binary files /dev/null and b/fuzz/corpora/crl/d65173855f26cc237d433dcfcb00cc7363217d93 differ
+diff --git a/fuzz/corpora/crl/d6cca863d572241dfb9d3d00734ad37dadf239cf b/fuzz/corpora/crl/d6cca863d572241dfb9d3d00734ad37dadf239cf
+new file mode 100644
+index 0000000..78190a1
+Binary files /dev/null and b/fuzz/corpora/crl/d6cca863d572241dfb9d3d00734ad37dadf239cf differ
+diff --git a/fuzz/corpora/crl/d7085d1e274d38f357b0ad8a890983705701056b b/fuzz/corpora/crl/d7085d1e274d38f357b0ad8a890983705701056b
+new file mode 100644
+index 0000000..c8667e2
+Binary files /dev/null and b/fuzz/corpora/crl/d7085d1e274d38f357b0ad8a890983705701056b differ
+diff --git a/fuzz/corpora/crl/d70c0708e27a85b33101f7efd2b4d82fece53cca b/fuzz/corpora/crl/d70c0708e27a85b33101f7efd2b4d82fece53cca
+new file mode 100644
+index 0000000..a4f92d4
+Binary files /dev/null and b/fuzz/corpora/crl/d70c0708e27a85b33101f7efd2b4d82fece53cca differ
+diff --git a/fuzz/corpora/crl/d75bb0a1b4473c18d331a4cd5fc4902c7a7e6995 b/fuzz/corpora/crl/d75bb0a1b4473c18d331a4cd5fc4902c7a7e6995
+new file mode 100644
+index 0000000..792d936
+Binary files /dev/null and b/fuzz/corpora/crl/d75bb0a1b4473c18d331a4cd5fc4902c7a7e6995 differ
+diff --git a/fuzz/corpora/crl/d765ad57f5b4a4fc7f7b2a0f8346e491b5997820 b/fuzz/corpora/crl/d765ad57f5b4a4fc7f7b2a0f8346e491b5997820
+new file mode 100644
+index 0000000..b5d207b
+Binary files /dev/null and b/fuzz/corpora/crl/d765ad57f5b4a4fc7f7b2a0f8346e491b5997820 differ
+diff --git a/fuzz/corpora/crl/d7a4ee8f3329cf2753719350e23b6a56355dc1cd b/fuzz/corpora/crl/d7a4ee8f3329cf2753719350e23b6a56355dc1cd
+new file mode 100644
+index 0000000..33c2c07
+Binary files /dev/null and b/fuzz/corpora/crl/d7a4ee8f3329cf2753719350e23b6a56355dc1cd differ
+diff --git a/fuzz/corpora/crl/d7d86e02713901a2da9384952c3f38d21ec9375a b/fuzz/corpora/crl/d7d86e02713901a2da9384952c3f38d21ec9375a
+new file mode 100644
+index 0000000..57b13af
+Binary files /dev/null and b/fuzz/corpora/crl/d7d86e02713901a2da9384952c3f38d21ec9375a differ
+diff --git a/fuzz/corpora/crl/d83b12b4c82d46b65fc4bb0d558b1c5fcfa88a3c b/fuzz/corpora/crl/d83b12b4c82d46b65fc4bb0d558b1c5fcfa88a3c
+new file mode 100644
+index 0000000..79e5221
+Binary files /dev/null and b/fuzz/corpora/crl/d83b12b4c82d46b65fc4bb0d558b1c5fcfa88a3c differ
+diff --git a/fuzz/corpora/crl/d8731e0be6bdff2852af9b627329c49b22533bc0 b/fuzz/corpora/crl/d8731e0be6bdff2852af9b627329c49b22533bc0
+new file mode 100644
+index 0000000..e777d3b
+Binary files /dev/null and b/fuzz/corpora/crl/d8731e0be6bdff2852af9b627329c49b22533bc0 differ
+diff --git a/fuzz/corpora/crl/d8b79d06a671bd660b920db3fb406b7e7b098a42 b/fuzz/corpora/crl/d8b79d06a671bd660b920db3fb406b7e7b098a42
+new file mode 100644
+index 0000000..71cf35b
+Binary files /dev/null and b/fuzz/corpora/crl/d8b79d06a671bd660b920db3fb406b7e7b098a42 differ
+diff --git a/fuzz/corpora/crl/d9b59b9a644cfb20c7c66b4615503061ebaee050 b/fuzz/corpora/crl/d9b59b9a644cfb20c7c66b4615503061ebaee050
+new file mode 100644
+index 0000000..61abe1a
+Binary files /dev/null and b/fuzz/corpora/crl/d9b59b9a644cfb20c7c66b4615503061ebaee050 differ
+diff --git a/fuzz/corpora/crl/d9de4e2ac95f45c5f67e8aafabf3b47eb720733b b/fuzz/corpora/crl/d9de4e2ac95f45c5f67e8aafabf3b47eb720733b
+new file mode 100644
+index 0000000..421e5af
+Binary files /dev/null and b/fuzz/corpora/crl/d9de4e2ac95f45c5f67e8aafabf3b47eb720733b differ
+diff --git a/fuzz/corpora/crl/da2d787ee05a01a9f74f91544aa708c2fdeebb46 b/fuzz/corpora/crl/da2d787ee05a01a9f74f91544aa708c2fdeebb46
+new file mode 100644
+index 0000000..da943aa
+Binary files /dev/null and b/fuzz/corpora/crl/da2d787ee05a01a9f74f91544aa708c2fdeebb46 differ
+diff --git a/fuzz/corpora/crl/da2f59ea5e58bb2a7b14f0592e5fd5c3c1506153 b/fuzz/corpora/crl/da2f59ea5e58bb2a7b14f0592e5fd5c3c1506153
+new file mode 100644
+index 0000000..674d05e
+Binary files /dev/null and b/fuzz/corpora/crl/da2f59ea5e58bb2a7b14f0592e5fd5c3c1506153 differ
+diff --git a/fuzz/corpora/crl/da5670355ce667d720ffdcd928a47ce219f919fc b/fuzz/corpora/crl/da5670355ce667d720ffdcd928a47ce219f919fc
+new file mode 100644
+index 0000000..993910b
+Binary files /dev/null and b/fuzz/corpora/crl/da5670355ce667d720ffdcd928a47ce219f919fc differ
+diff --git a/fuzz/corpora/crl/da608764fe85eca103d1c1874b5af6f4c698bc09 b/fuzz/corpora/crl/da608764fe85eca103d1c1874b5af6f4c698bc09
+new file mode 100644
+index 0000000..ac57fd6
+Binary files /dev/null and b/fuzz/corpora/crl/da608764fe85eca103d1c1874b5af6f4c698bc09 differ
+diff --git a/fuzz/corpora/crl/da6761272de057a898e0c2651bb7a5bd913bff25 b/fuzz/corpora/crl/da6761272de057a898e0c2651bb7a5bd913bff25
+new file mode 100644
+index 0000000..7f1905d
+Binary files /dev/null and b/fuzz/corpora/crl/da6761272de057a898e0c2651bb7a5bd913bff25 differ
+diff --git a/fuzz/corpora/crl/dab87220c8987ba790bf032e911878eddef3bbcc b/fuzz/corpora/crl/dab87220c8987ba790bf032e911878eddef3bbcc
+new file mode 100644
+index 0000000..b64cd9f
+Binary files /dev/null and b/fuzz/corpora/crl/dab87220c8987ba790bf032e911878eddef3bbcc differ
+diff --git a/fuzz/corpora/crl/db4da97d975c1c51ee353ecd9fdb0057e0b50947 b/fuzz/corpora/crl/db4da97d975c1c51ee353ecd9fdb0057e0b50947
+new file mode 100644
+index 0000000..f9ca792
+Binary files /dev/null and b/fuzz/corpora/crl/db4da97d975c1c51ee353ecd9fdb0057e0b50947 differ
+diff --git a/fuzz/corpora/crl/db657267f7bddb159fecc44d5c7bf9b146a431b2 b/fuzz/corpora/crl/db657267f7bddb159fecc44d5c7bf9b146a431b2
+new file mode 100644
+index 0000000..f7bbf5c
+Binary files /dev/null and b/fuzz/corpora/crl/db657267f7bddb159fecc44d5c7bf9b146a431b2 differ
+diff --git a/fuzz/corpora/crl/db6b508022932000a0c56af8a118a3f324150a0e b/fuzz/corpora/crl/db6b508022932000a0c56af8a118a3f324150a0e
+new file mode 100644
+index 0000000..6526f13
+Binary files /dev/null and b/fuzz/corpora/crl/db6b508022932000a0c56af8a118a3f324150a0e differ
+diff --git a/fuzz/corpora/crl/db6fb1b0d862e9bf9a4d52190ff9407062be4e20 b/fuzz/corpora/crl/db6fb1b0d862e9bf9a4d52190ff9407062be4e20
+new file mode 100644
+index 0000000..39e9556
+Binary files /dev/null and b/fuzz/corpora/crl/db6fb1b0d862e9bf9a4d52190ff9407062be4e20 differ
+diff --git a/fuzz/corpora/crl/db9856fe2000097deeebca382c01d434c005644d b/fuzz/corpora/crl/db9856fe2000097deeebca382c01d434c005644d
+new file mode 100644
+index 0000000..c4139e2
+Binary files /dev/null and b/fuzz/corpora/crl/db9856fe2000097deeebca382c01d434c005644d differ
+diff --git a/fuzz/corpora/crl/dc12e0dda640aa609f6740f71f42311f52ee47f9 b/fuzz/corpora/crl/dc12e0dda640aa609f6740f71f42311f52ee47f9
+new file mode 100644
+index 0000000..ded53e3
+Binary files /dev/null and b/fuzz/corpora/crl/dc12e0dda640aa609f6740f71f42311f52ee47f9 differ
+diff --git a/fuzz/corpora/crl/dc1431f9b1d7ce5b971bbc2a80e5a435262ddccf b/fuzz/corpora/crl/dc1431f9b1d7ce5b971bbc2a80e5a435262ddccf
+new file mode 100644
+index 0000000..1b35d51
+Binary files /dev/null and b/fuzz/corpora/crl/dc1431f9b1d7ce5b971bbc2a80e5a435262ddccf differ
+diff --git a/fuzz/corpora/crl/dc4c3a9f0272ed612484169b435ded0e4e366740 b/fuzz/corpora/crl/dc4c3a9f0272ed612484169b435ded0e4e366740
+new file mode 100644
+index 0000000..d249c1b
+Binary files /dev/null and b/fuzz/corpora/crl/dc4c3a9f0272ed612484169b435ded0e4e366740 differ
+diff --git a/fuzz/corpora/crl/dc559978d6c8a43488e8c67cac2d223eb6e1d2d0 b/fuzz/corpora/crl/dc559978d6c8a43488e8c67cac2d223eb6e1d2d0
+new file mode 100644
+index 0000000..9ba965b
+Binary files /dev/null and b/fuzz/corpora/crl/dc559978d6c8a43488e8c67cac2d223eb6e1d2d0 differ
+diff --git a/fuzz/corpora/crl/dc5955ec62ed43b534986f18950d3940a9c7d371 b/fuzz/corpora/crl/dc5955ec62ed43b534986f18950d3940a9c7d371
+new file mode 100644
+index 0000000..7b25cbe
+Binary files /dev/null and b/fuzz/corpora/crl/dc5955ec62ed43b534986f18950d3940a9c7d371 differ
+diff --git a/fuzz/corpora/crl/dc62aa58d1c7754a0f6318e2ab0bdc3de81b42ce b/fuzz/corpora/crl/dc62aa58d1c7754a0f6318e2ab0bdc3de81b42ce
+new file mode 100644
+index 0000000..2a02c7a
+Binary files /dev/null and b/fuzz/corpora/crl/dc62aa58d1c7754a0f6318e2ab0bdc3de81b42ce differ
+diff --git a/fuzz/corpora/crl/dc92f9ea6e811b9fee5c81959e233b4cddde39d9 b/fuzz/corpora/crl/dc92f9ea6e811b9fee5c81959e233b4cddde39d9
+new file mode 100644
+index 0000000..e16b044
+Binary files /dev/null and b/fuzz/corpora/crl/dc92f9ea6e811b9fee5c81959e233b4cddde39d9 differ
+diff --git a/fuzz/corpora/crl/dce8cfe64cb1dcdc07b3b5a75ffb39060ac363ff b/fuzz/corpora/crl/dce8cfe64cb1dcdc07b3b5a75ffb39060ac363ff
+new file mode 100644
+index 0000000..e957e84
+Binary files /dev/null and b/fuzz/corpora/crl/dce8cfe64cb1dcdc07b3b5a75ffb39060ac363ff differ
+diff --git a/fuzz/corpora/crl/dd08ac28e839408fd4aa16acb99b341b36a0b2a8 b/fuzz/corpora/crl/dd08ac28e839408fd4aa16acb99b341b36a0b2a8
+new file mode 100644
+index 0000000..aea8608
+Binary files /dev/null and b/fuzz/corpora/crl/dd08ac28e839408fd4aa16acb99b341b36a0b2a8 differ
+diff --git a/fuzz/corpora/crl/dd1e3947ed0927eefc1500665813da68a92df4ee b/fuzz/corpora/crl/dd1e3947ed0927eefc1500665813da68a92df4ee
+new file mode 100644
+index 0000000..0147b5b
+Binary files /dev/null and b/fuzz/corpora/crl/dd1e3947ed0927eefc1500665813da68a92df4ee differ
+diff --git a/fuzz/corpora/crl/dd458921852920c090b35f2b9b31b2872bb788bc b/fuzz/corpora/crl/dd458921852920c090b35f2b9b31b2872bb788bc
+new file mode 100644
+index 0000000..0417a26
+Binary files /dev/null and b/fuzz/corpora/crl/dd458921852920c090b35f2b9b31b2872bb788bc differ
+diff --git a/fuzz/corpora/crl/dd47131cb925b145a1121503b7ef3b1fa0a8a611 b/fuzz/corpora/crl/dd47131cb925b145a1121503b7ef3b1fa0a8a611
+new file mode 100644
+index 0000000..5d1d18c
+Binary files /dev/null and b/fuzz/corpora/crl/dd47131cb925b145a1121503b7ef3b1fa0a8a611 differ
+diff --git a/fuzz/corpora/crl/dd4a3d316f86e8502281756ac907d119e71bc58e b/fuzz/corpora/crl/dd4a3d316f86e8502281756ac907d119e71bc58e
+new file mode 100644
+index 0000000..b8718f8
+Binary files /dev/null and b/fuzz/corpora/crl/dd4a3d316f86e8502281756ac907d119e71bc58e differ
+diff --git a/fuzz/corpora/crl/dd918086c7064bceb96316c1fc630a8a180dad57 b/fuzz/corpora/crl/dd918086c7064bceb96316c1fc630a8a180dad57
+new file mode 100644
+index 0000000..0fc4912
+Binary files /dev/null and b/fuzz/corpora/crl/dd918086c7064bceb96316c1fc630a8a180dad57 differ
+diff --git a/fuzz/corpora/crl/dda3c35cdd4d9d782238376279fb3d6b5f8ffe17 b/fuzz/corpora/crl/dda3c35cdd4d9d782238376279fb3d6b5f8ffe17
+new file mode 100644
+index 0000000..b862bc1
+Binary files /dev/null and b/fuzz/corpora/crl/dda3c35cdd4d9d782238376279fb3d6b5f8ffe17 differ
+diff --git a/fuzz/corpora/crl/ddacea689252d994d128d90bdd9c990f78ba70c9 b/fuzz/corpora/crl/ddacea689252d994d128d90bdd9c990f78ba70c9
+new file mode 100644
+index 0000000..ee4970a
+Binary files /dev/null and b/fuzz/corpora/crl/ddacea689252d994d128d90bdd9c990f78ba70c9 differ
+diff --git a/fuzz/corpora/crl/ddbb38f145e4cf7c3fe913bc5e252bb25a8d6934 b/fuzz/corpora/crl/ddbb38f145e4cf7c3fe913bc5e252bb25a8d6934
+new file mode 100644
+index 0000000..b4076ed
+Binary files /dev/null and b/fuzz/corpora/crl/ddbb38f145e4cf7c3fe913bc5e252bb25a8d6934 differ
+diff --git a/fuzz/corpora/crl/de18849c87a1eeefc2edf5d678c6e4eac6da72e4 b/fuzz/corpora/crl/de18849c87a1eeefc2edf5d678c6e4eac6da72e4
+new file mode 100644
+index 0000000..c2113d1
+Binary files /dev/null and b/fuzz/corpora/crl/de18849c87a1eeefc2edf5d678c6e4eac6da72e4 differ
+diff --git a/fuzz/corpora/crl/de2d78faba9dd42b0284d7e7a4a600b404c1c22c b/fuzz/corpora/crl/de2d78faba9dd42b0284d7e7a4a600b404c1c22c
+new file mode 100644
+index 0000000..1abbc1f
+Binary files /dev/null and b/fuzz/corpora/crl/de2d78faba9dd42b0284d7e7a4a600b404c1c22c differ
+diff --git a/fuzz/corpora/crl/de4b58dc1abe0e224fcafdeff129f39d974cb21f b/fuzz/corpora/crl/de4b58dc1abe0e224fcafdeff129f39d974cb21f
+new file mode 100644
+index 0000000..9d0f54c
+Binary files /dev/null and b/fuzz/corpora/crl/de4b58dc1abe0e224fcafdeff129f39d974cb21f differ
+diff --git a/fuzz/corpora/crl/deb729763fb1f6ed8fc3422d8e783a492c40d3f0 b/fuzz/corpora/crl/deb729763fb1f6ed8fc3422d8e783a492c40d3f0
+new file mode 100644
+index 0000000..290299f
+Binary files /dev/null and b/fuzz/corpora/crl/deb729763fb1f6ed8fc3422d8e783a492c40d3f0 differ
+diff --git a/fuzz/corpora/crl/decf9590bcfeffc7de599e862925daf94feb4f0a b/fuzz/corpora/crl/decf9590bcfeffc7de599e862925daf94feb4f0a
+new file mode 100644
+index 0000000..c82ec67
+Binary files /dev/null and b/fuzz/corpora/crl/decf9590bcfeffc7de599e862925daf94feb4f0a differ
+diff --git a/fuzz/corpora/crl/df21abc52344994e9b761505c7d1cfa6627bca09 b/fuzz/corpora/crl/df21abc52344994e9b761505c7d1cfa6627bca09
+new file mode 100644
+index 0000000..03283ee
+Binary files /dev/null and b/fuzz/corpora/crl/df21abc52344994e9b761505c7d1cfa6627bca09 differ
+diff --git a/fuzz/corpora/crl/df330aaf0b141bc734d7c107ab730ea9fc81bf2f b/fuzz/corpora/crl/df330aaf0b141bc734d7c107ab730ea9fc81bf2f
+new file mode 100644
+index 0000000..bb860ab
+Binary files /dev/null and b/fuzz/corpora/crl/df330aaf0b141bc734d7c107ab730ea9fc81bf2f differ
+diff --git a/fuzz/corpora/crl/df64b49554dba3431373ad10cd6bbd5d634a3f0e b/fuzz/corpora/crl/df64b49554dba3431373ad10cd6bbd5d634a3f0e
+new file mode 100644
+index 0000000..989cca4
+Binary files /dev/null and b/fuzz/corpora/crl/df64b49554dba3431373ad10cd6bbd5d634a3f0e differ
+diff --git a/fuzz/corpora/crl/df8a584c6cc41d301eb06dc67d825fd945c31865 b/fuzz/corpora/crl/df8a584c6cc41d301eb06dc67d825fd945c31865
+new file mode 100644
+index 0000000..b334ef7
+Binary files /dev/null and b/fuzz/corpora/crl/df8a584c6cc41d301eb06dc67d825fd945c31865 differ
+diff --git a/fuzz/corpora/crl/dfd5859d28678d77374086696d776858f273a6c2 b/fuzz/corpora/crl/dfd5859d28678d77374086696d776858f273a6c2
+new file mode 100644
+index 0000000..2545554
+Binary files /dev/null and b/fuzz/corpora/crl/dfd5859d28678d77374086696d776858f273a6c2 differ
+diff --git a/fuzz/corpora/crl/dfe847a96ca2f43468e1c393eab6e1f9737e0abc b/fuzz/corpora/crl/dfe847a96ca2f43468e1c393eab6e1f9737e0abc
+new file mode 100644
+index 0000000..c67f6dd
+Binary files /dev/null and b/fuzz/corpora/crl/dfe847a96ca2f43468e1c393eab6e1f9737e0abc differ
+diff --git a/fuzz/corpora/crl/e036e5b2fd5e21b4788a201ffcbd9b303efb7f46 b/fuzz/corpora/crl/e036e5b2fd5e21b4788a201ffcbd9b303efb7f46
+new file mode 100644
+index 0000000..4a17398
+Binary files /dev/null and b/fuzz/corpora/crl/e036e5b2fd5e21b4788a201ffcbd9b303efb7f46 differ
+diff --git a/fuzz/corpora/crl/e1511d44021efc1616767ab55b39d1d15f66521e b/fuzz/corpora/crl/e1511d44021efc1616767ab55b39d1d15f66521e
+new file mode 100644
+index 0000000..8d650fa
+Binary files /dev/null and b/fuzz/corpora/crl/e1511d44021efc1616767ab55b39d1d15f66521e differ
+diff --git a/fuzz/corpora/crl/e2bbfc9a31dc53a013bc84209079c4d00e6d4323 b/fuzz/corpora/crl/e2bbfc9a31dc53a013bc84209079c4d00e6d4323
+new file mode 100644
+index 0000000..11d08fe
+Binary files /dev/null and b/fuzz/corpora/crl/e2bbfc9a31dc53a013bc84209079c4d00e6d4323 differ
+diff --git a/fuzz/corpora/crl/e2ce95a669fa47ef2704c23855bee22e03eb6b73 b/fuzz/corpora/crl/e2ce95a669fa47ef2704c23855bee22e03eb6b73
+new file mode 100644
+index 0000000..996890f
+Binary files /dev/null and b/fuzz/corpora/crl/e2ce95a669fa47ef2704c23855bee22e03eb6b73 differ
+diff --git a/fuzz/corpora/crl/e2db102edd7157d6aec27905775c16d5d0e09d08 b/fuzz/corpora/crl/e2db102edd7157d6aec27905775c16d5d0e09d08
+new file mode 100644
+index 0000000..d598ac1
+Binary files /dev/null and b/fuzz/corpora/crl/e2db102edd7157d6aec27905775c16d5d0e09d08 differ
+diff --git a/fuzz/corpora/crl/e3844cbc09abc4a075dc68bbbc422c57af5fbfc6 b/fuzz/corpora/crl/e3844cbc09abc4a075dc68bbbc422c57af5fbfc6
+new file mode 100644
+index 0000000..a58a9fd
+Binary files /dev/null and b/fuzz/corpora/crl/e3844cbc09abc4a075dc68bbbc422c57af5fbfc6 differ
+diff --git a/fuzz/corpora/crl/e3b9d1f2070e9e5c7c805c16b85c9b2549e37c95 b/fuzz/corpora/crl/e3b9d1f2070e9e5c7c805c16b85c9b2549e37c95
+new file mode 100644
+index 0000000..bcec19c
+Binary files /dev/null and b/fuzz/corpora/crl/e3b9d1f2070e9e5c7c805c16b85c9b2549e37c95 differ
+diff --git a/fuzz/corpora/crl/e3c1e2979765c9259a862f1801fbd9a30f7b0d98 b/fuzz/corpora/crl/e3c1e2979765c9259a862f1801fbd9a30f7b0d98
+new file mode 100644
+index 0000000..7892cae
+Binary files /dev/null and b/fuzz/corpora/crl/e3c1e2979765c9259a862f1801fbd9a30f7b0d98 differ
+diff --git a/fuzz/corpora/crl/e45d444f19379de6d649c9d0b26b68495d044679 b/fuzz/corpora/crl/e45d444f19379de6d649c9d0b26b68495d044679
+new file mode 100644
+index 0000000..77d8add
+Binary files /dev/null and b/fuzz/corpora/crl/e45d444f19379de6d649c9d0b26b68495d044679 differ
+diff --git a/fuzz/corpora/crl/e47b7ed7e8451982e78d0a7ef8a09a13f5d73130 b/fuzz/corpora/crl/e47b7ed7e8451982e78d0a7ef8a09a13f5d73130
+new file mode 100644
+index 0000000..7f7f178
+Binary files /dev/null and b/fuzz/corpora/crl/e47b7ed7e8451982e78d0a7ef8a09a13f5d73130 differ
+diff --git a/fuzz/corpora/crl/e483fb02ea45b5a976662003f409b5b9ab90c5e9 b/fuzz/corpora/crl/e483fb02ea45b5a976662003f409b5b9ab90c5e9
+new file mode 100644
+index 0000000..608ef17
+Binary files /dev/null and b/fuzz/corpora/crl/e483fb02ea45b5a976662003f409b5b9ab90c5e9 differ
+diff --git a/fuzz/corpora/crl/e4ac2057cec22cb023ef9c17d8df17c8b6045141 b/fuzz/corpora/crl/e4ac2057cec22cb023ef9c17d8df17c8b6045141
+new file mode 100644
+index 0000000..59bd15c
+Binary files /dev/null and b/fuzz/corpora/crl/e4ac2057cec22cb023ef9c17d8df17c8b6045141 differ
+diff --git a/fuzz/corpora/crl/e4d2d4d235b91fefcd97765d67ffd52a66b26ec6 b/fuzz/corpora/crl/e4d2d4d235b91fefcd97765d67ffd52a66b26ec6
+new file mode 100644
+index 0000000..100a594
+Binary files /dev/null and b/fuzz/corpora/crl/e4d2d4d235b91fefcd97765d67ffd52a66b26ec6 differ
+diff --git a/fuzz/corpora/crl/e4e7557d2b20b3c9dea1e104c9cef65b131abae3 b/fuzz/corpora/crl/e4e7557d2b20b3c9dea1e104c9cef65b131abae3
+new file mode 100644
+index 0000000..61e0080
+Binary files /dev/null and b/fuzz/corpora/crl/e4e7557d2b20b3c9dea1e104c9cef65b131abae3 differ
+diff --git a/fuzz/corpora/crl/e4f81e1e0f955241a0787727a4b53caea4526453 b/fuzz/corpora/crl/e4f81e1e0f955241a0787727a4b53caea4526453
+new file mode 100644
+index 0000000..4176781
+Binary files /dev/null and b/fuzz/corpora/crl/e4f81e1e0f955241a0787727a4b53caea4526453 differ
+diff --git a/fuzz/corpora/crl/e67faa12b5c8861dd4f22b765d696d11a34f17f0 b/fuzz/corpora/crl/e67faa12b5c8861dd4f22b765d696d11a34f17f0
+new file mode 100644
+index 0000000..0bc91e3
+Binary files /dev/null and b/fuzz/corpora/crl/e67faa12b5c8861dd4f22b765d696d11a34f17f0 differ
+diff --git a/fuzz/corpora/crl/e6df4bea1296e97857ec73cf3304f63c0bb33f30 b/fuzz/corpora/crl/e6df4bea1296e97857ec73cf3304f63c0bb33f30
+new file mode 100644
+index 0000000..ea5553e
+Binary files /dev/null and b/fuzz/corpora/crl/e6df4bea1296e97857ec73cf3304f63c0bb33f30 differ
+diff --git a/fuzz/corpora/crl/e6ed35df98a065090f714071bfa9d4df76dbe580 b/fuzz/corpora/crl/e6ed35df98a065090f714071bfa9d4df76dbe580
+new file mode 100644
+index 0000000..c2ea201
+Binary files /dev/null and b/fuzz/corpora/crl/e6ed35df98a065090f714071bfa9d4df76dbe580 differ
+diff --git a/fuzz/corpora/crl/e752a63a2abfddf6a9115f5d989cbcfe6b724086 b/fuzz/corpora/crl/e752a63a2abfddf6a9115f5d989cbcfe6b724086
+new file mode 100644
+index 0000000..aa4815e
+Binary files /dev/null and b/fuzz/corpora/crl/e752a63a2abfddf6a9115f5d989cbcfe6b724086 differ
+diff --git a/fuzz/corpora/crl/e7a8233ce913bb904a55bd4053f94d4cd10958dc b/fuzz/corpora/crl/e7a8233ce913bb904a55bd4053f94d4cd10958dc
+new file mode 100644
+index 0000000..6efdcdf
+Binary files /dev/null and b/fuzz/corpora/crl/e7a8233ce913bb904a55bd4053f94d4cd10958dc differ
+diff --git a/fuzz/corpora/crl/e8311fdc7503f4b18b722fe2220d466ba40c24a0 b/fuzz/corpora/crl/e8311fdc7503f4b18b722fe2220d466ba40c24a0
+new file mode 100644
+index 0000000..ed35405
+Binary files /dev/null and b/fuzz/corpora/crl/e8311fdc7503f4b18b722fe2220d466ba40c24a0 differ
+diff --git a/fuzz/corpora/crl/e8387c584cc0d780c17d6bd22bd4b3e59a9780ba b/fuzz/corpora/crl/e8387c584cc0d780c17d6bd22bd4b3e59a9780ba
+new file mode 100644
+index 0000000..7ff66cb
+Binary files /dev/null and b/fuzz/corpora/crl/e8387c584cc0d780c17d6bd22bd4b3e59a9780ba differ
+diff --git a/fuzz/corpora/crl/e86fe8a5023611516675b0f22518533340cda91d b/fuzz/corpora/crl/e86fe8a5023611516675b0f22518533340cda91d
+new file mode 100644
+index 0000000..9e79e85
+Binary files /dev/null and b/fuzz/corpora/crl/e86fe8a5023611516675b0f22518533340cda91d differ
+diff --git a/fuzz/corpora/crl/e875fee60490d51733ac82dbb9781d38aa9034ee b/fuzz/corpora/crl/e875fee60490d51733ac82dbb9781d38aa9034ee
+new file mode 100644
+index 0000000..6a29329
+Binary files /dev/null and b/fuzz/corpora/crl/e875fee60490d51733ac82dbb9781d38aa9034ee differ
+diff --git a/fuzz/corpora/crl/e910fee9dbb4be570224c0d63f411a74b343207f b/fuzz/corpora/crl/e910fee9dbb4be570224c0d63f411a74b343207f
+new file mode 100644
+index 0000000..579a6f0
+Binary files /dev/null and b/fuzz/corpora/crl/e910fee9dbb4be570224c0d63f411a74b343207f differ
+diff --git a/fuzz/corpora/crl/e95c4884c6f3c79722a1bc7e533e49179a8e4a32 b/fuzz/corpora/crl/e95c4884c6f3c79722a1bc7e533e49179a8e4a32
+new file mode 100644
+index 0000000..20a7f99
+Binary files /dev/null and b/fuzz/corpora/crl/e95c4884c6f3c79722a1bc7e533e49179a8e4a32 differ
+diff --git a/fuzz/corpora/crl/e973812da507a7d4252dc7aa8edf955469c26fd1 b/fuzz/corpora/crl/e973812da507a7d4252dc7aa8edf955469c26fd1
+new file mode 100644
+index 0000000..b0de223
+Binary files /dev/null and b/fuzz/corpora/crl/e973812da507a7d4252dc7aa8edf955469c26fd1 differ
+diff --git a/fuzz/corpora/crl/e97d7d92d0cb31d56a3f901727975830af933845 b/fuzz/corpora/crl/e97d7d92d0cb31d56a3f901727975830af933845
+new file mode 100644
+index 0000000..eff4d9c
+Binary files /dev/null and b/fuzz/corpora/crl/e97d7d92d0cb31d56a3f901727975830af933845 differ
+diff --git a/fuzz/corpora/crl/e99185f504f4584536a23fd3603216842a5bbb8b b/fuzz/corpora/crl/e99185f504f4584536a23fd3603216842a5bbb8b
+new file mode 100644
+index 0000000..890157c
+Binary files /dev/null and b/fuzz/corpora/crl/e99185f504f4584536a23fd3603216842a5bbb8b differ
+diff --git a/fuzz/corpora/crl/e99bb0a2da04ad17c49dabe100f925beadb8d96a b/fuzz/corpora/crl/e99bb0a2da04ad17c49dabe100f925beadb8d96a
+new file mode 100644
+index 0000000..93497aa
+Binary files /dev/null and b/fuzz/corpora/crl/e99bb0a2da04ad17c49dabe100f925beadb8d96a differ
+diff --git a/fuzz/corpora/crl/e9ff0fe50367a7c0e191526438d24c5d4b5b6441 b/fuzz/corpora/crl/e9ff0fe50367a7c0e191526438d24c5d4b5b6441
+new file mode 100644
+index 0000000..2fa7f02
+Binary files /dev/null and b/fuzz/corpora/crl/e9ff0fe50367a7c0e191526438d24c5d4b5b6441 differ
+diff --git a/fuzz/corpora/crl/ea27669c7f73c94afa7020f5cd62346d1172f441 b/fuzz/corpora/crl/ea27669c7f73c94afa7020f5cd62346d1172f441
+new file mode 100644
+index 0000000..8347ae3
+Binary files /dev/null and b/fuzz/corpora/crl/ea27669c7f73c94afa7020f5cd62346d1172f441 differ
+diff --git a/fuzz/corpora/crl/ea425a7e39a603ae47dbcd05138a45e5d1d1f5aa b/fuzz/corpora/crl/ea425a7e39a603ae47dbcd05138a45e5d1d1f5aa
+new file mode 100644
+index 0000000..61f56c4
+Binary files /dev/null and b/fuzz/corpora/crl/ea425a7e39a603ae47dbcd05138a45e5d1d1f5aa differ
+diff --git a/fuzz/corpora/crl/ea895dd7daf4537af34e21aa90cb1a60492c5e07 b/fuzz/corpora/crl/ea895dd7daf4537af34e21aa90cb1a60492c5e07
+new file mode 100644
+index 0000000..67c220e
+Binary files /dev/null and b/fuzz/corpora/crl/ea895dd7daf4537af34e21aa90cb1a60492c5e07 differ
+diff --git a/fuzz/corpora/crl/eb0bd036d8b55be4818b2022b6f86c9976883abc b/fuzz/corpora/crl/eb0bd036d8b55be4818b2022b6f86c9976883abc
+new file mode 100644
+index 0000000..8309257
+Binary files /dev/null and b/fuzz/corpora/crl/eb0bd036d8b55be4818b2022b6f86c9976883abc differ
+diff --git a/fuzz/corpora/crl/eb37cea76a5b4c19d5ed7d9e73dd94566f70adf6 b/fuzz/corpora/crl/eb37cea76a5b4c19d5ed7d9e73dd94566f70adf6
+new file mode 100644
+index 0000000..bdca1bd
+Binary files /dev/null and b/fuzz/corpora/crl/eb37cea76a5b4c19d5ed7d9e73dd94566f70adf6 differ
+diff --git a/fuzz/corpora/crl/eb9727efc52f22e9a3ffe4523292fd3e82171062 b/fuzz/corpora/crl/eb9727efc52f22e9a3ffe4523292fd3e82171062
+new file mode 100644
+index 0000000..9295dfb
+Binary files /dev/null and b/fuzz/corpora/crl/eb9727efc52f22e9a3ffe4523292fd3e82171062 differ
+diff --git a/fuzz/corpora/crl/ebc9d496f805b686bdbc1ffc396c34880da4589b b/fuzz/corpora/crl/ebc9d496f805b686bdbc1ffc396c34880da4589b
+new file mode 100644
+index 0000000..3e841ef
+Binary files /dev/null and b/fuzz/corpora/crl/ebc9d496f805b686bdbc1ffc396c34880da4589b differ
+diff --git a/fuzz/corpora/crl/ebf7f4932cf43d47fe22c46097a5771894b6cccc b/fuzz/corpora/crl/ebf7f4932cf43d47fe22c46097a5771894b6cccc
+new file mode 100644
+index 0000000..5cf6e7d
+Binary files /dev/null and b/fuzz/corpora/crl/ebf7f4932cf43d47fe22c46097a5771894b6cccc differ
+diff --git a/fuzz/corpora/crl/ec003410dd75e441b2c0c2aadc198a1a753058a8 b/fuzz/corpora/crl/ec003410dd75e441b2c0c2aadc198a1a753058a8
+new file mode 100644
+index 0000000..1c0200a
+Binary files /dev/null and b/fuzz/corpora/crl/ec003410dd75e441b2c0c2aadc198a1a753058a8 differ
+diff --git a/fuzz/corpora/crl/ec295bc752cd8adaddaa02b074301c829d66dfdf b/fuzz/corpora/crl/ec295bc752cd8adaddaa02b074301c829d66dfdf
+new file mode 100644
+index 0000000..4b6dc8f
+Binary files /dev/null and b/fuzz/corpora/crl/ec295bc752cd8adaddaa02b074301c829d66dfdf differ
+diff --git a/fuzz/corpora/crl/ecd8ee551ebe0c2fce87380e354d0445f140f9f4 b/fuzz/corpora/crl/ecd8ee551ebe0c2fce87380e354d0445f140f9f4
+new file mode 100644
+index 0000000..e35b336
+Binary files /dev/null and b/fuzz/corpora/crl/ecd8ee551ebe0c2fce87380e354d0445f140f9f4 differ
+diff --git a/fuzz/corpora/crl/ed297272eee9a47c69e3438607f61a77d77232d7 b/fuzz/corpora/crl/ed297272eee9a47c69e3438607f61a77d77232d7
+new file mode 100644
+index 0000000..db48275
+Binary files /dev/null and b/fuzz/corpora/crl/ed297272eee9a47c69e3438607f61a77d77232d7 differ
+diff --git a/fuzz/corpora/crl/ed973d69d46868724298a989fc62a6783c959603 b/fuzz/corpora/crl/ed973d69d46868724298a989fc62a6783c959603
+new file mode 100644
+index 0000000..f9e97a3
+Binary files /dev/null and b/fuzz/corpora/crl/ed973d69d46868724298a989fc62a6783c959603 differ
+diff --git a/fuzz/corpora/crl/edcde1da41ae74debec40bf85b6a13c9320fcf0b b/fuzz/corpora/crl/edcde1da41ae74debec40bf85b6a13c9320fcf0b
+new file mode 100644
+index 0000000..6ae46a4
+Binary files /dev/null and b/fuzz/corpora/crl/edcde1da41ae74debec40bf85b6a13c9320fcf0b differ
+diff --git a/fuzz/corpora/crl/ede0180229a7150cbc0fab2613e3c12a15ba746f b/fuzz/corpora/crl/ede0180229a7150cbc0fab2613e3c12a15ba746f
+new file mode 100644
+index 0000000..4b060c5
+Binary files /dev/null and b/fuzz/corpora/crl/ede0180229a7150cbc0fab2613e3c12a15ba746f differ
+diff --git a/fuzz/corpora/crl/ede64ba3d5a7b389351ba4abe3df829d791c88f8 b/fuzz/corpora/crl/ede64ba3d5a7b389351ba4abe3df829d791c88f8
+new file mode 100644
+index 0000000..84821c1
+Binary files /dev/null and b/fuzz/corpora/crl/ede64ba3d5a7b389351ba4abe3df829d791c88f8 differ
+diff --git a/fuzz/corpora/crl/edebe1622e00210e52a4141d3040679119625fd1 b/fuzz/corpora/crl/edebe1622e00210e52a4141d3040679119625fd1
+new file mode 100644
+index 0000000..407577f
+Binary files /dev/null and b/fuzz/corpora/crl/edebe1622e00210e52a4141d3040679119625fd1 differ
+diff --git a/fuzz/corpora/crl/ededfe82ae926d0e6fd60dc24dfd8e68911f2001 b/fuzz/corpora/crl/ededfe82ae926d0e6fd60dc24dfd8e68911f2001
+new file mode 100644
+index 0000000..330f24c
+Binary files /dev/null and b/fuzz/corpora/crl/ededfe82ae926d0e6fd60dc24dfd8e68911f2001 differ
+diff --git a/fuzz/corpora/crl/ee299dafed06ff8a71e46e3d12284e38e796dbd1 b/fuzz/corpora/crl/ee299dafed06ff8a71e46e3d12284e38e796dbd1
+new file mode 100644
+index 0000000..af022e4
+Binary files /dev/null and b/fuzz/corpora/crl/ee299dafed06ff8a71e46e3d12284e38e796dbd1 differ
+diff --git a/fuzz/corpora/crl/ee465da3292d24941e9fde2df5d77f9dc6ce2974 b/fuzz/corpora/crl/ee465da3292d24941e9fde2df5d77f9dc6ce2974
+new file mode 100644
+index 0000000..454351c
+Binary files /dev/null and b/fuzz/corpora/crl/ee465da3292d24941e9fde2df5d77f9dc6ce2974 differ
+diff --git a/fuzz/corpora/crl/ee6eef5727e1a27eb2e715270e0b28a563d49b0c b/fuzz/corpora/crl/ee6eef5727e1a27eb2e715270e0b28a563d49b0c
+new file mode 100644
+index 0000000..d387140
+Binary files /dev/null and b/fuzz/corpora/crl/ee6eef5727e1a27eb2e715270e0b28a563d49b0c differ
+diff --git a/fuzz/corpora/crl/ee7d98ece551f5f920dadc86c8f2e70e3d980114 b/fuzz/corpora/crl/ee7d98ece551f5f920dadc86c8f2e70e3d980114
+new file mode 100644
+index 0000000..50db8aa
+Binary files /dev/null and b/fuzz/corpora/crl/ee7d98ece551f5f920dadc86c8f2e70e3d980114 differ
+diff --git a/fuzz/corpora/crl/eea9e61972e688a46f6ae448662263b30a9d0249 b/fuzz/corpora/crl/eea9e61972e688a46f6ae448662263b30a9d0249
+new file mode 100644
+index 0000000..ae460ca
+Binary files /dev/null and b/fuzz/corpora/crl/eea9e61972e688a46f6ae448662263b30a9d0249 differ
+diff --git a/fuzz/corpora/crl/ef16969306452d0e6a62e9ec58b29c72e00fd466 b/fuzz/corpora/crl/ef16969306452d0e6a62e9ec58b29c72e00fd466
+new file mode 100644
+index 0000000..4d0c4e6
+Binary files /dev/null and b/fuzz/corpora/crl/ef16969306452d0e6a62e9ec58b29c72e00fd466 differ
+diff --git a/fuzz/corpora/crl/ef5e7a6040583b1a0de8a1d729d10ac0ccc08243 b/fuzz/corpora/crl/ef5e7a6040583b1a0de8a1d729d10ac0ccc08243
+new file mode 100644
+index 0000000..f5177df
+Binary files /dev/null and b/fuzz/corpora/crl/ef5e7a6040583b1a0de8a1d729d10ac0ccc08243 differ
+diff --git a/fuzz/corpora/crl/ef7d2a22d0eaf256328b560d7ad92d7995efa930 b/fuzz/corpora/crl/ef7d2a22d0eaf256328b560d7ad92d7995efa930
+new file mode 100644
+index 0000000..a52a7bc
+Binary files /dev/null and b/fuzz/corpora/crl/ef7d2a22d0eaf256328b560d7ad92d7995efa930 differ
+diff --git a/fuzz/corpora/crl/ef892870fb12286f4191319918ded6112bf3013f b/fuzz/corpora/crl/ef892870fb12286f4191319918ded6112bf3013f
+new file mode 100644
+index 0000000..3dd579c
+Binary files /dev/null and b/fuzz/corpora/crl/ef892870fb12286f4191319918ded6112bf3013f differ
+diff --git a/fuzz/corpora/crl/efd600b6f14fc22dd7fb73111c8fe25fcdb74515 b/fuzz/corpora/crl/efd600b6f14fc22dd7fb73111c8fe25fcdb74515
+new file mode 100644
+index 0000000..e830bc8
+Binary files /dev/null and b/fuzz/corpora/crl/efd600b6f14fc22dd7fb73111c8fe25fcdb74515 differ
+diff --git a/fuzz/corpora/crl/efdaf4c6bfba70f4df344f58336f4f78d1994186 b/fuzz/corpora/crl/efdaf4c6bfba70f4df344f58336f4f78d1994186
+new file mode 100644
+index 0000000..443ec71
+Binary files /dev/null and b/fuzz/corpora/crl/efdaf4c6bfba70f4df344f58336f4f78d1994186 differ
+diff --git a/fuzz/corpora/crl/f000a42b5c4968d0ca0dc2fe82539d48af4b159a b/fuzz/corpora/crl/f000a42b5c4968d0ca0dc2fe82539d48af4b159a
+new file mode 100644
+index 0000000..5615f61
+Binary files /dev/null and b/fuzz/corpora/crl/f000a42b5c4968d0ca0dc2fe82539d48af4b159a differ
+diff --git a/fuzz/corpora/crl/f01473d24862be402b2962720b1426fcf0778800 b/fuzz/corpora/crl/f01473d24862be402b2962720b1426fcf0778800
+new file mode 100644
+index 0000000..8643378
+Binary files /dev/null and b/fuzz/corpora/crl/f01473d24862be402b2962720b1426fcf0778800 differ
+diff --git a/fuzz/corpora/crl/f019b1949e8af0369cdd0aea85d8e3f0b4e96e58 b/fuzz/corpora/crl/f019b1949e8af0369cdd0aea85d8e3f0b4e96e58
+new file mode 100644
+index 0000000..7762c46
+Binary files /dev/null and b/fuzz/corpora/crl/f019b1949e8af0369cdd0aea85d8e3f0b4e96e58 differ
+diff --git a/fuzz/corpora/crl/f065f80ee47581f4e7def701861633319791a1e2 b/fuzz/corpora/crl/f065f80ee47581f4e7def701861633319791a1e2
+new file mode 100644
+index 0000000..f555268
+Binary files /dev/null and b/fuzz/corpora/crl/f065f80ee47581f4e7def701861633319791a1e2 differ
+diff --git a/fuzz/corpora/crl/f16280a1ea743081b67587757747523e1f42077e b/fuzz/corpora/crl/f16280a1ea743081b67587757747523e1f42077e
+new file mode 100644
+index 0000000..23fc6bb
+Binary files /dev/null and b/fuzz/corpora/crl/f16280a1ea743081b67587757747523e1f42077e differ
+diff --git a/fuzz/corpora/crl/f16cc36049605b9f1b8c8f935713befc92041096 b/fuzz/corpora/crl/f16cc36049605b9f1b8c8f935713befc92041096
+new file mode 100644
+index 0000000..308ed7d
+Binary files /dev/null and b/fuzz/corpora/crl/f16cc36049605b9f1b8c8f935713befc92041096 differ
+diff --git a/fuzz/corpora/crl/f195c68faf558fed54541c12cef6098a426aa69a b/fuzz/corpora/crl/f195c68faf558fed54541c12cef6098a426aa69a
+new file mode 100644
+index 0000000..c039f34
+Binary files /dev/null and b/fuzz/corpora/crl/f195c68faf558fed54541c12cef6098a426aa69a differ
+diff --git a/fuzz/corpora/crl/f1a6be0a27ad87afa0751210d98a21bc320d8c84 b/fuzz/corpora/crl/f1a6be0a27ad87afa0751210d98a21bc320d8c84
+new file mode 100644
+index 0000000..f91ee79
+Binary files /dev/null and b/fuzz/corpora/crl/f1a6be0a27ad87afa0751210d98a21bc320d8c84 differ
+diff --git a/fuzz/corpora/crl/f1e0d44d83733337a2dcf37c89c64f73a343efea b/fuzz/corpora/crl/f1e0d44d83733337a2dcf37c89c64f73a343efea
+new file mode 100644
+index 0000000..365f431
+Binary files /dev/null and b/fuzz/corpora/crl/f1e0d44d83733337a2dcf37c89c64f73a343efea differ
+diff --git a/fuzz/corpora/crl/f21b799cba5f77b5de06f355827dcd80cd17674e b/fuzz/corpora/crl/f21b799cba5f77b5de06f355827dcd80cd17674e
+new file mode 100644
+index 0000000..7079a02
+Binary files /dev/null and b/fuzz/corpora/crl/f21b799cba5f77b5de06f355827dcd80cd17674e differ
+diff --git a/fuzz/corpora/crl/f23263a9847c50a3c40006019c0dbc2b0daab63a b/fuzz/corpora/crl/f23263a9847c50a3c40006019c0dbc2b0daab63a
+new file mode 100644
+index 0000000..fb3e643
+Binary files /dev/null and b/fuzz/corpora/crl/f23263a9847c50a3c40006019c0dbc2b0daab63a differ
+diff --git a/fuzz/corpora/crl/f2a03f8e10edffe6af2ac23657a7ae30179dfe39 b/fuzz/corpora/crl/f2a03f8e10edffe6af2ac23657a7ae30179dfe39
+new file mode 100644
+index 0000000..eeb3e39
+Binary files /dev/null and b/fuzz/corpora/crl/f2a03f8e10edffe6af2ac23657a7ae30179dfe39 differ
+diff --git a/fuzz/corpora/crl/f32fd96177ca17bd24ccf54cdde0e7368feda717 b/fuzz/corpora/crl/f32fd96177ca17bd24ccf54cdde0e7368feda717
+new file mode 100644
+index 0000000..2a7869b
+Binary files /dev/null and b/fuzz/corpora/crl/f32fd96177ca17bd24ccf54cdde0e7368feda717 differ
+diff --git a/fuzz/corpora/crl/f33a1b74c53abb03f784fe2e7fe2c855a716fb6b b/fuzz/corpora/crl/f33a1b74c53abb03f784fe2e7fe2c855a716fb6b
+new file mode 100644
+index 0000000..7f146b9
+Binary files /dev/null and b/fuzz/corpora/crl/f33a1b74c53abb03f784fe2e7fe2c855a716fb6b differ
+diff --git a/fuzz/corpora/crl/f3b2e9931d0ecea39fab78c0dc64d9e6a0aaac90 b/fuzz/corpora/crl/f3b2e9931d0ecea39fab78c0dc64d9e6a0aaac90
+new file mode 100644
+index 0000000..26b2bd5
+Binary files /dev/null and b/fuzz/corpora/crl/f3b2e9931d0ecea39fab78c0dc64d9e6a0aaac90 differ
+diff --git a/fuzz/corpora/crl/f403cf94b6444a1191e7329d9551f47d5a97dd15 b/fuzz/corpora/crl/f403cf94b6444a1191e7329d9551f47d5a97dd15
+new file mode 100644
+index 0000000..3487d10
+Binary files /dev/null and b/fuzz/corpora/crl/f403cf94b6444a1191e7329d9551f47d5a97dd15 differ
+diff --git a/fuzz/corpora/crl/f497141ad62625edee34b11da1212981233d4a4c b/fuzz/corpora/crl/f497141ad62625edee34b11da1212981233d4a4c
+new file mode 100644
+index 0000000..9c286e7
+Binary files /dev/null and b/fuzz/corpora/crl/f497141ad62625edee34b11da1212981233d4a4c differ
+diff --git a/fuzz/corpora/crl/f4ce73f41fca2efa1d85b46de4b0a832b493a0d2 b/fuzz/corpora/crl/f4ce73f41fca2efa1d85b46de4b0a832b493a0d2
+new file mode 100644
+index 0000000..7a7aac9
+Binary files /dev/null and b/fuzz/corpora/crl/f4ce73f41fca2efa1d85b46de4b0a832b493a0d2 differ
+diff --git a/fuzz/corpora/crl/f5cf3633c96ec774379fb510d7c9f714dac2ab24 b/fuzz/corpora/crl/f5cf3633c96ec774379fb510d7c9f714dac2ab24
+new file mode 100644
+index 0000000..6780804
+Binary files /dev/null and b/fuzz/corpora/crl/f5cf3633c96ec774379fb510d7c9f714dac2ab24 differ
+diff --git a/fuzz/corpora/crl/f66eb6cf37f6093fe6e8251a313d00fd9fc4de71 b/fuzz/corpora/crl/f66eb6cf37f6093fe6e8251a313d00fd9fc4de71
+new file mode 100644
+index 0000000..f7d56b9
+Binary files /dev/null and b/fuzz/corpora/crl/f66eb6cf37f6093fe6e8251a313d00fd9fc4de71 differ
+diff --git a/fuzz/corpora/crl/f678cb77ceb21e213e5d63ba926a9cf4a037d863 b/fuzz/corpora/crl/f678cb77ceb21e213e5d63ba926a9cf4a037d863
+new file mode 100644
+index 0000000..7d04e0c
+Binary files /dev/null and b/fuzz/corpora/crl/f678cb77ceb21e213e5d63ba926a9cf4a037d863 differ
+diff --git a/fuzz/corpora/crl/f680947ab21b475cf63f08d01f2fdcd8bace1f05 b/fuzz/corpora/crl/f680947ab21b475cf63f08d01f2fdcd8bace1f05
+new file mode 100644
+index 0000000..cc64c81
+Binary files /dev/null and b/fuzz/corpora/crl/f680947ab21b475cf63f08d01f2fdcd8bace1f05 differ
+diff --git a/fuzz/corpora/crl/f6a561d464743f0dccb68e1d497a7b46431c434c b/fuzz/corpora/crl/f6a561d464743f0dccb68e1d497a7b46431c434c
+new file mode 100644
+index 0000000..0f0a1d7
+Binary files /dev/null and b/fuzz/corpora/crl/f6a561d464743f0dccb68e1d497a7b46431c434c differ
+diff --git a/fuzz/corpora/crl/f6cf3ffe352e80f12db51be51f446f6359de6a49 b/fuzz/corpora/crl/f6cf3ffe352e80f12db51be51f446f6359de6a49
+new file mode 100644
+index 0000000..c673208
+Binary files /dev/null and b/fuzz/corpora/crl/f6cf3ffe352e80f12db51be51f446f6359de6a49 differ
+diff --git a/fuzz/corpora/crl/f74ff5e0db07126f74aa1008a8ff859a208ec8db b/fuzz/corpora/crl/f74ff5e0db07126f74aa1008a8ff859a208ec8db
+new file mode 100644
+index 0000000..d6ff43e
+Binary files /dev/null and b/fuzz/corpora/crl/f74ff5e0db07126f74aa1008a8ff859a208ec8db differ
+diff --git a/fuzz/corpora/crl/f77ac369fe6843e4063118498442587feafd65c7 b/fuzz/corpora/crl/f77ac369fe6843e4063118498442587feafd65c7
+new file mode 100644
+index 0000000..4c59e1d
+Binary files /dev/null and b/fuzz/corpora/crl/f77ac369fe6843e4063118498442587feafd65c7 differ
+diff --git a/fuzz/corpora/crl/f78ebfc6cecf8f2a39a8ca13fed4f71a7139ffb9 b/fuzz/corpora/crl/f78ebfc6cecf8f2a39a8ca13fed4f71a7139ffb9
+new file mode 100644
+index 0000000..4e342bb
+Binary files /dev/null and b/fuzz/corpora/crl/f78ebfc6cecf8f2a39a8ca13fed4f71a7139ffb9 differ
+diff --git a/fuzz/corpora/crl/f7a49b3140651759d7a92d0083a4c12632fc94c2 b/fuzz/corpora/crl/f7a49b3140651759d7a92d0083a4c12632fc94c2
+new file mode 100644
+index 0000000..1ca9c70
+Binary files /dev/null and b/fuzz/corpora/crl/f7a49b3140651759d7a92d0083a4c12632fc94c2 differ
+diff --git a/fuzz/corpora/crl/f7b2e7a8e8f339c0e28a0c6425402d9b546978e3 b/fuzz/corpora/crl/f7b2e7a8e8f339c0e28a0c6425402d9b546978e3
+new file mode 100644
+index 0000000..944d4fb
+Binary files /dev/null and b/fuzz/corpora/crl/f7b2e7a8e8f339c0e28a0c6425402d9b546978e3 differ
+diff --git a/fuzz/corpora/crl/f7c8dcc7d356e3bbf9561ed1c997165830490c13 b/fuzz/corpora/crl/f7c8dcc7d356e3bbf9561ed1c997165830490c13
+new file mode 100644
+index 0000000..26882b3
+Binary files /dev/null and b/fuzz/corpora/crl/f7c8dcc7d356e3bbf9561ed1c997165830490c13 differ
+diff --git a/fuzz/corpora/crl/f7ef38a3775e09f6cff4101b6b785cecacac57f0 b/fuzz/corpora/crl/f7ef38a3775e09f6cff4101b6b785cecacac57f0
+new file mode 100644
+index 0000000..b2951fe
+Binary files /dev/null and b/fuzz/corpora/crl/f7ef38a3775e09f6cff4101b6b785cecacac57f0 differ
+diff --git a/fuzz/corpora/crl/f84aad592e1a2f9d1fed59c196bced04be52e570 b/fuzz/corpora/crl/f84aad592e1a2f9d1fed59c196bced04be52e570
+new file mode 100644
+index 0000000..1e08fcf
+Binary files /dev/null and b/fuzz/corpora/crl/f84aad592e1a2f9d1fed59c196bced04be52e570 differ
+diff --git a/fuzz/corpora/crl/f87a082fcd46854d18c9d0de2ad5835db4a9b73b b/fuzz/corpora/crl/f87a082fcd46854d18c9d0de2ad5835db4a9b73b
+new file mode 100644
+index 0000000..7d6fa88
+Binary files /dev/null and b/fuzz/corpora/crl/f87a082fcd46854d18c9d0de2ad5835db4a9b73b differ
+diff --git a/fuzz/corpora/crl/f8dbd1842e2095d59a9064986910df31f25d3f63 b/fuzz/corpora/crl/f8dbd1842e2095d59a9064986910df31f25d3f63
+new file mode 100644
+index 0000000..bd3b905
+Binary files /dev/null and b/fuzz/corpora/crl/f8dbd1842e2095d59a9064986910df31f25d3f63 differ
+diff --git a/fuzz/corpora/crl/f8f4ca245cd0101027f7b827ff8a7faca36f6c1e b/fuzz/corpora/crl/f8f4ca245cd0101027f7b827ff8a7faca36f6c1e
+new file mode 100644
+index 0000000..c790846
+Binary files /dev/null and b/fuzz/corpora/crl/f8f4ca245cd0101027f7b827ff8a7faca36f6c1e differ
+diff --git a/fuzz/corpora/crl/f9081ac178dd1c459582d5d6346e28bf48e75858 b/fuzz/corpora/crl/f9081ac178dd1c459582d5d6346e28bf48e75858
+new file mode 100644
+index 0000000..9ff4a20
+Binary files /dev/null and b/fuzz/corpora/crl/f9081ac178dd1c459582d5d6346e28bf48e75858 differ
+diff --git a/fuzz/corpora/crl/f93585752aa37ef0e38382c3f702733f372ea6bf b/fuzz/corpora/crl/f93585752aa37ef0e38382c3f702733f372ea6bf
+new file mode 100644
+index 0000000..10edc96
+Binary files /dev/null and b/fuzz/corpora/crl/f93585752aa37ef0e38382c3f702733f372ea6bf differ
+diff --git a/fuzz/corpora/crl/f96138334c80e7e496c6b34a034edb0ae5823a61 b/fuzz/corpora/crl/f96138334c80e7e496c6b34a034edb0ae5823a61
+new file mode 100644
+index 0000000..ae4a39b
+Binary files /dev/null and b/fuzz/corpora/crl/f96138334c80e7e496c6b34a034edb0ae5823a61 differ
+diff --git a/fuzz/corpora/crl/f9edd84d17d4d891dd300353d484b5f80652d2b3 b/fuzz/corpora/crl/f9edd84d17d4d891dd300353d484b5f80652d2b3
+new file mode 100644
+index 0000000..1fdcfa5
+Binary files /dev/null and b/fuzz/corpora/crl/f9edd84d17d4d891dd300353d484b5f80652d2b3 differ
+diff --git a/fuzz/corpora/crl/fab6ea46898dbcc5fb42c5c22f7dbf9ce8e89390 b/fuzz/corpora/crl/fab6ea46898dbcc5fb42c5c22f7dbf9ce8e89390
+new file mode 100644
+index 0000000..1b46d77
+Binary files /dev/null and b/fuzz/corpora/crl/fab6ea46898dbcc5fb42c5c22f7dbf9ce8e89390 differ
+diff --git a/fuzz/corpora/crl/fb13c0880d13a5dc7dec5e39591468fff4422a78 b/fuzz/corpora/crl/fb13c0880d13a5dc7dec5e39591468fff4422a78
+new file mode 100644
+index 0000000..abca137
+Binary files /dev/null and b/fuzz/corpora/crl/fb13c0880d13a5dc7dec5e39591468fff4422a78 differ
+diff --git a/fuzz/corpora/crl/fb46407262957f485fcdc48256d1f9255cb157c0 b/fuzz/corpora/crl/fb46407262957f485fcdc48256d1f9255cb157c0
+new file mode 100644
+index 0000000..b956772
+Binary files /dev/null and b/fuzz/corpora/crl/fb46407262957f485fcdc48256d1f9255cb157c0 differ
+diff --git a/fuzz/corpora/crl/fb841046c8ad7e2ae8c1a17c449a96646dfbbe83 b/fuzz/corpora/crl/fb841046c8ad7e2ae8c1a17c449a96646dfbbe83
+new file mode 100644
+index 0000000..a378d35
+Binary files /dev/null and b/fuzz/corpora/crl/fb841046c8ad7e2ae8c1a17c449a96646dfbbe83 differ
+diff --git a/fuzz/corpora/crl/fb8e2dede9a6f66a3ddfc759a43b0003453f12dd b/fuzz/corpora/crl/fb8e2dede9a6f66a3ddfc759a43b0003453f12dd
+new file mode 100644
+index 0000000..bb67fee
+Binary files /dev/null and b/fuzz/corpora/crl/fb8e2dede9a6f66a3ddfc759a43b0003453f12dd differ
+diff --git a/fuzz/corpora/crl/fba3c398adc96204ada5b232d98567dbc6eaae10 b/fuzz/corpora/crl/fba3c398adc96204ada5b232d98567dbc6eaae10
+new file mode 100644
+index 0000000..b4b59cc
+Binary files /dev/null and b/fuzz/corpora/crl/fba3c398adc96204ada5b232d98567dbc6eaae10 differ
+diff --git a/fuzz/corpora/crl/fbdb6bc03b6b073aac45e4e98ab7d0926629fa10 b/fuzz/corpora/crl/fbdb6bc03b6b073aac45e4e98ab7d0926629fa10
+new file mode 100644
+index 0000000..24b73d3
+Binary files /dev/null and b/fuzz/corpora/crl/fbdb6bc03b6b073aac45e4e98ab7d0926629fa10 differ
+diff --git a/fuzz/corpora/crl/fbe6ef17b37b3610dc5270f57af78dc192b19224 b/fuzz/corpora/crl/fbe6ef17b37b3610dc5270f57af78dc192b19224
+new file mode 100644
+index 0000000..b4c4874
+Binary files /dev/null and b/fuzz/corpora/crl/fbe6ef17b37b3610dc5270f57af78dc192b19224 differ
+diff --git a/fuzz/corpora/crl/fbed187bd58f2a6db7a824033b4a4c7cadb18051 b/fuzz/corpora/crl/fbed187bd58f2a6db7a824033b4a4c7cadb18051
+new file mode 100644
+index 0000000..9b7b49a
+Binary files /dev/null and b/fuzz/corpora/crl/fbed187bd58f2a6db7a824033b4a4c7cadb18051 differ
+diff --git a/fuzz/corpora/crl/fc46d055297033bd5f54d699327cffa8eeed153c b/fuzz/corpora/crl/fc46d055297033bd5f54d699327cffa8eeed153c
+new file mode 100644
+index 0000000..3d3f168
+Binary files /dev/null and b/fuzz/corpora/crl/fc46d055297033bd5f54d699327cffa8eeed153c differ
+diff --git a/fuzz/corpora/crl/fc990424b7c08f29ec27398463535d0f7d58517a b/fuzz/corpora/crl/fc990424b7c08f29ec27398463535d0f7d58517a
+new file mode 100644
+index 0000000..d6c2419
+Binary files /dev/null and b/fuzz/corpora/crl/fc990424b7c08f29ec27398463535d0f7d58517a differ
+diff --git a/fuzz/corpora/crl/fd273a12490b5dd68ccdefc99aed6947ec57df6d b/fuzz/corpora/crl/fd273a12490b5dd68ccdefc99aed6947ec57df6d
+new file mode 100644
+index 0000000..85371fd
+Binary files /dev/null and b/fuzz/corpora/crl/fd273a12490b5dd68ccdefc99aed6947ec57df6d differ
+diff --git a/fuzz/corpora/crl/fd2e94c80ca8e0a7624cd2481f8912fc3e654675 b/fuzz/corpora/crl/fd2e94c80ca8e0a7624cd2481f8912fc3e654675
+new file mode 100644
+index 0000000..a5728db
+Binary files /dev/null and b/fuzz/corpora/crl/fd2e94c80ca8e0a7624cd2481f8912fc3e654675 differ
+diff --git a/fuzz/corpora/crl/fd50ce676907084658264e29e50ec12c330c73da b/fuzz/corpora/crl/fd50ce676907084658264e29e50ec12c330c73da
+new file mode 100644
+index 0000000..0dde880
+Binary files /dev/null and b/fuzz/corpora/crl/fd50ce676907084658264e29e50ec12c330c73da differ
+diff --git a/fuzz/corpora/crl/fd7fee57ff6f87e1b56aa23b351774b59834db82 b/fuzz/corpora/crl/fd7fee57ff6f87e1b56aa23b351774b59834db82
+new file mode 100644
+index 0000000..bba8c66
+Binary files /dev/null and b/fuzz/corpora/crl/fd7fee57ff6f87e1b56aa23b351774b59834db82 differ
+diff --git a/fuzz/corpora/crl/fdcdf790cbd04ae508847a1a9ffd36f514a4b476 b/fuzz/corpora/crl/fdcdf790cbd04ae508847a1a9ffd36f514a4b476
+new file mode 100644
+index 0000000..16c41fe
+Binary files /dev/null and b/fuzz/corpora/crl/fdcdf790cbd04ae508847a1a9ffd36f514a4b476 differ
+diff --git a/fuzz/corpora/crl/fead49e7fbd4aa993ebdf196bc37423cb34151df b/fuzz/corpora/crl/fead49e7fbd4aa993ebdf196bc37423cb34151df
+new file mode 100644
+index 0000000..bee82b1
+Binary files /dev/null and b/fuzz/corpora/crl/fead49e7fbd4aa993ebdf196bc37423cb34151df differ
+diff --git a/fuzz/corpora/crl/feae11814eef9a0d9d472ecb60edfaf61c788efe b/fuzz/corpora/crl/feae11814eef9a0d9d472ecb60edfaf61c788efe
+new file mode 100644
+index 0000000..3d80271
+Binary files /dev/null and b/fuzz/corpora/crl/feae11814eef9a0d9d472ecb60edfaf61c788efe differ
+diff --git a/fuzz/corpora/crl/fec1b8d941e7e80267bb2a4c8dc442863e2f549d b/fuzz/corpora/crl/fec1b8d941e7e80267bb2a4c8dc442863e2f549d
+new file mode 100644
+index 0000000..8a9caf6
+Binary files /dev/null and b/fuzz/corpora/crl/fec1b8d941e7e80267bb2a4c8dc442863e2f549d differ
+diff --git a/fuzz/corpora/crl/fed72d9070901eb573626410959707b5263ebea1 b/fuzz/corpora/crl/fed72d9070901eb573626410959707b5263ebea1
+new file mode 100644
+index 0000000..1e4b942
+Binary files /dev/null and b/fuzz/corpora/crl/fed72d9070901eb573626410959707b5263ebea1 differ
+diff --git a/fuzz/corpora/crl/ff81b63dbc6c497b0980312a8f4fbf5e1f3078d3 b/fuzz/corpora/crl/ff81b63dbc6c497b0980312a8f4fbf5e1f3078d3
+new file mode 100644
+index 0000000..c78444f
+Binary files /dev/null and b/fuzz/corpora/crl/ff81b63dbc6c497b0980312a8f4fbf5e1f3078d3 differ
+diff --git a/fuzz/corpora/crl/ff827c3a2c5100413ac6db999787ea29eb90bc43 b/fuzz/corpora/crl/ff827c3a2c5100413ac6db999787ea29eb90bc43
+new file mode 100644
+index 0000000..60b48b0
+Binary files /dev/null and b/fuzz/corpora/crl/ff827c3a2c5100413ac6db999787ea29eb90bc43 differ
+diff --git a/fuzz/corpora/crl/ffde19697135bd863da22f3cce1963b02ce2e7f0 b/fuzz/corpora/crl/ffde19697135bd863da22f3cce1963b02ce2e7f0
+new file mode 100644
+index 0000000..85df983
+Binary files /dev/null and b/fuzz/corpora/crl/ffde19697135bd863da22f3cce1963b02ce2e7f0 differ
+diff --git a/fuzz/corpora/crl/ffe7828cf740b4139ee262400733ff322ca3df5a b/fuzz/corpora/crl/ffe7828cf740b4139ee262400733ff322ca3df5a
+new file mode 100644
+index 0000000..0c8eb17
+Binary files /dev/null and b/fuzz/corpora/crl/ffe7828cf740b4139ee262400733ff322ca3df5a differ
+diff --git a/fuzz/corpora/ct/0193852d95e1c1d20a28394a44ea27b248f103d1 b/fuzz/corpora/ct/0193852d95e1c1d20a28394a44ea27b248f103d1
+new file mode 100644
+index 0000000..5259ffe
+Binary files /dev/null and b/fuzz/corpora/ct/0193852d95e1c1d20a28394a44ea27b248f103d1 differ
+diff --git a/fuzz/corpora/ct/04c430a5cf4f348b0ccf0d3f8de5795604699840 b/fuzz/corpora/ct/04c430a5cf4f348b0ccf0d3f8de5795604699840
+new file mode 100644
+index 0000000..4a1736e
+Binary files /dev/null and b/fuzz/corpora/ct/04c430a5cf4f348b0ccf0d3f8de5795604699840 differ
+diff --git a/fuzz/corpora/ct/0617b9b072e5d7b79f611ab579fd0c3360c18e2c b/fuzz/corpora/ct/0617b9b072e5d7b79f611ab579fd0c3360c18e2c
+new file mode 100644
+index 0000000..a980883
+Binary files /dev/null and b/fuzz/corpora/ct/0617b9b072e5d7b79f611ab579fd0c3360c18e2c differ
+diff --git a/fuzz/corpora/ct/0f61d11e8121cefe69c39ea93bc2034302c64e69 b/fuzz/corpora/ct/0f61d11e8121cefe69c39ea93bc2034302c64e69
+new file mode 100644
+index 0000000..30c9063
+Binary files /dev/null and b/fuzz/corpora/ct/0f61d11e8121cefe69c39ea93bc2034302c64e69 differ
+diff --git a/fuzz/corpora/ct/1149db94c855f243dad494f33b6d986929a7e61a b/fuzz/corpora/ct/1149db94c855f243dad494f33b6d986929a7e61a
+new file mode 100644
+index 0000000..76c2dbd
+Binary files /dev/null and b/fuzz/corpora/ct/1149db94c855f243dad494f33b6d986929a7e61a differ
+diff --git a/fuzz/corpora/ct/114da967be9ef757d2b3be632de722d93accc7fe b/fuzz/corpora/ct/114da967be9ef757d2b3be632de722d93accc7fe
+new file mode 100644
+index 0000000..601f1df
+Binary files /dev/null and b/fuzz/corpora/ct/114da967be9ef757d2b3be632de722d93accc7fe differ
+diff --git a/fuzz/corpora/ct/11a45556e78def7a695284d2755157ee24823da2 b/fuzz/corpora/ct/11a45556e78def7a695284d2755157ee24823da2
+new file mode 100644
+index 0000000..042aefd
+Binary files /dev/null and b/fuzz/corpora/ct/11a45556e78def7a695284d2755157ee24823da2 differ
+diff --git a/fuzz/corpora/ct/15fe7d100d8e902433afee2ba44878eb03c41d9d b/fuzz/corpora/ct/15fe7d100d8e902433afee2ba44878eb03c41d9d
+new file mode 100644
+index 0000000..d9ff82c
+Binary files /dev/null and b/fuzz/corpora/ct/15fe7d100d8e902433afee2ba44878eb03c41d9d differ
+diff --git a/fuzz/corpora/ct/1db2178abf111767715b1a7113d71117ca99bae5 b/fuzz/corpora/ct/1db2178abf111767715b1a7113d71117ca99bae5
+new file mode 100644
+index 0000000..dd9d42c
+Binary files /dev/null and b/fuzz/corpora/ct/1db2178abf111767715b1a7113d71117ca99bae5 differ
+diff --git a/fuzz/corpora/ct/23833462f55515a900e016db2eb943fb474c19f6 b/fuzz/corpora/ct/23833462f55515a900e016db2eb943fb474c19f6
+new file mode 100644
+index 0000000..16e0e90
+Binary files /dev/null and b/fuzz/corpora/ct/23833462f55515a900e016db2eb943fb474c19f6 differ
+diff --git a/fuzz/corpora/ct/23906090c744112e940a24882ebbe3ccca675e76 b/fuzz/corpora/ct/23906090c744112e940a24882ebbe3ccca675e76
+new file mode 100644
+index 0000000..9b8212d
+Binary files /dev/null and b/fuzz/corpora/ct/23906090c744112e940a24882ebbe3ccca675e76 differ
+diff --git a/fuzz/corpora/ct/2cd5efcd2616bd79805b032a014613ca71787ba1 b/fuzz/corpora/ct/2cd5efcd2616bd79805b032a014613ca71787ba1
+new file mode 100644
+index 0000000..eed4b2f
+Binary files /dev/null and b/fuzz/corpora/ct/2cd5efcd2616bd79805b032a014613ca71787ba1 differ
+diff --git a/fuzz/corpora/ct/2e3ec430552d735f1ccfde856ef8ca367900e7a9 b/fuzz/corpora/ct/2e3ec430552d735f1ccfde856ef8ca367900e7a9
+new file mode 100644
+index 0000000..b6af9bb
+Binary files /dev/null and b/fuzz/corpora/ct/2e3ec430552d735f1ccfde856ef8ca367900e7a9 differ
+diff --git a/fuzz/corpora/ct/345bd68388e09b501c9e657174ac839b08490684 b/fuzz/corpora/ct/345bd68388e09b501c9e657174ac839b08490684
+new file mode 100644
+index 0000000..df6b39b
+Binary files /dev/null and b/fuzz/corpora/ct/345bd68388e09b501c9e657174ac839b08490684 differ
+diff --git a/fuzz/corpora/ct/383718912dbec60777065fac104b48ff3efbc5b2 b/fuzz/corpora/ct/383718912dbec60777065fac104b48ff3efbc5b2
+new file mode 100644
+index 0000000..58da6e0
+Binary files /dev/null and b/fuzz/corpora/ct/383718912dbec60777065fac104b48ff3efbc5b2 differ
+diff --git a/fuzz/corpora/ct/383839a73369429b86bb25ab12013952ea9d2c17 b/fuzz/corpora/ct/383839a73369429b86bb25ab12013952ea9d2c17
+new file mode 100644
+index 0000000..5e4b860
+Binary files /dev/null and b/fuzz/corpora/ct/383839a73369429b86bb25ab12013952ea9d2c17 differ
+diff --git a/fuzz/corpora/ct/38638dc4b921d344d874976471de9c68ed6ca0c9 b/fuzz/corpora/ct/38638dc4b921d344d874976471de9c68ed6ca0c9
+new file mode 100644
+index 0000000..1957b26
+Binary files /dev/null and b/fuzz/corpora/ct/38638dc4b921d344d874976471de9c68ed6ca0c9 differ
+diff --git a/fuzz/corpora/ct/3943e407d6b62c32af636dad1cc5a096ef768460 b/fuzz/corpora/ct/3943e407d6b62c32af636dad1cc5a096ef768460
+new file mode 100644
+index 0000000..ae66bf8
+Binary files /dev/null and b/fuzz/corpora/ct/3943e407d6b62c32af636dad1cc5a096ef768460 differ
+diff --git a/fuzz/corpora/ct/3a5f46c359f756a9e4da0676904d7f4781f23ac1 b/fuzz/corpora/ct/3a5f46c359f756a9e4da0676904d7f4781f23ac1
+new file mode 100644
+index 0000000..24eeec7
+Binary files /dev/null and b/fuzz/corpora/ct/3a5f46c359f756a9e4da0676904d7f4781f23ac1 differ
+diff --git a/fuzz/corpora/ct/3c5bf1f96fb020b9a33266a8a0dcd36b114a9aa1 b/fuzz/corpora/ct/3c5bf1f96fb020b9a33266a8a0dcd36b114a9aa1
+new file mode 100644
+index 0000000..0c78611
+Binary files /dev/null and b/fuzz/corpora/ct/3c5bf1f96fb020b9a33266a8a0dcd36b114a9aa1 differ
+diff --git a/fuzz/corpora/ct/3cc0448f6cb4ce214515cecc7b0d1631f5f1a4e6 b/fuzz/corpora/ct/3cc0448f6cb4ce214515cecc7b0d1631f5f1a4e6
+new file mode 100644
+index 0000000..261f9c5
+Binary files /dev/null and b/fuzz/corpora/ct/3cc0448f6cb4ce214515cecc7b0d1631f5f1a4e6 differ
+diff --git a/fuzz/corpora/ct/3e1a4ee4ac4b2842a00de4a4745abf0cede7a3a6 b/fuzz/corpora/ct/3e1a4ee4ac4b2842a00de4a4745abf0cede7a3a6
+new file mode 100644
+index 0000000..daf90cc
+Binary files /dev/null and b/fuzz/corpora/ct/3e1a4ee4ac4b2842a00de4a4745abf0cede7a3a6 differ
+diff --git a/fuzz/corpora/ct/41611d71a3deceb09e206c8b208cc1fef263ccc2 b/fuzz/corpora/ct/41611d71a3deceb09e206c8b208cc1fef263ccc2
+new file mode 100644
+index 0000000..8730853
+Binary files /dev/null and b/fuzz/corpora/ct/41611d71a3deceb09e206c8b208cc1fef263ccc2 differ
+diff --git a/fuzz/corpora/ct/478490e09f1a83365f93d0a9668fa2c17f97e157 b/fuzz/corpora/ct/478490e09f1a83365f93d0a9668fa2c17f97e157
+new file mode 100644
+index 0000000..0291dc2
+Binary files /dev/null and b/fuzz/corpora/ct/478490e09f1a83365f93d0a9668fa2c17f97e157 differ
+diff --git a/fuzz/corpora/ct/47d3b3dabf53393936a5407b5230653a81c3389e b/fuzz/corpora/ct/47d3b3dabf53393936a5407b5230653a81c3389e
+new file mode 100644
+index 0000000..a03791b
+Binary files /dev/null and b/fuzz/corpora/ct/47d3b3dabf53393936a5407b5230653a81c3389e differ
+diff --git a/fuzz/corpora/ct/48eb1df0763854008799f580e6d26bc0cc8ff85d b/fuzz/corpora/ct/48eb1df0763854008799f580e6d26bc0cc8ff85d
+new file mode 100644
+index 0000000..7a467c0
+Binary files /dev/null and b/fuzz/corpora/ct/48eb1df0763854008799f580e6d26bc0cc8ff85d differ
+diff --git a/fuzz/corpora/ct/4e22436534f7ddda6023610945ad3fb84b08d5f2 b/fuzz/corpora/ct/4e22436534f7ddda6023610945ad3fb84b08d5f2
+new file mode 100644
+index 0000000..d825e1a
+Binary files /dev/null and b/fuzz/corpora/ct/4e22436534f7ddda6023610945ad3fb84b08d5f2 differ
+diff --git a/fuzz/corpora/ct/4e4b55208d4de0b8004c93632b8fc913d3691a5c b/fuzz/corpora/ct/4e4b55208d4de0b8004c93632b8fc913d3691a5c
+new file mode 100644
+index 0000000..6ee190f
+Binary files /dev/null and b/fuzz/corpora/ct/4e4b55208d4de0b8004c93632b8fc913d3691a5c differ
+diff --git a/fuzz/corpora/ct/4f38525a2575e95008441cc9243fe00a5727ffa5 b/fuzz/corpora/ct/4f38525a2575e95008441cc9243fe00a5727ffa5
+new file mode 100644
+index 0000000..eb21683
+Binary files /dev/null and b/fuzz/corpora/ct/4f38525a2575e95008441cc9243fe00a5727ffa5 differ
+diff --git a/fuzz/corpora/ct/5093f125861301442a1d774bf7e8848968f2f55a b/fuzz/corpora/ct/5093f125861301442a1d774bf7e8848968f2f55a
+new file mode 100644
+index 0000000..4c04fe0
+Binary files /dev/null and b/fuzz/corpora/ct/5093f125861301442a1d774bf7e8848968f2f55a differ
+diff --git a/fuzz/corpora/ct/5268ee8ceac4a498963f8e6c5030d548aa023b02 b/fuzz/corpora/ct/5268ee8ceac4a498963f8e6c5030d548aa023b02
+new file mode 100644
+index 0000000..cdca38c
+Binary files /dev/null and b/fuzz/corpora/ct/5268ee8ceac4a498963f8e6c5030d548aa023b02 differ
+diff --git a/fuzz/corpora/ct/54b2915dc5fee0faae36a0c9224306fe1e7cfd8e b/fuzz/corpora/ct/54b2915dc5fee0faae36a0c9224306fe1e7cfd8e
+new file mode 100644
+index 0000000..a330a38
+Binary files /dev/null and b/fuzz/corpora/ct/54b2915dc5fee0faae36a0c9224306fe1e7cfd8e differ
+diff --git a/fuzz/corpora/ct/56cbcfd8857da712038369416e3f08a82dc84add b/fuzz/corpora/ct/56cbcfd8857da712038369416e3f08a82dc84add
+new file mode 100644
+index 0000000..3e42d53
+Binary files /dev/null and b/fuzz/corpora/ct/56cbcfd8857da712038369416e3f08a82dc84add differ
+diff --git a/fuzz/corpora/ct/5970c63ec9f09d54d3f7a11c273cf2285bf1fecf b/fuzz/corpora/ct/5970c63ec9f09d54d3f7a11c273cf2285bf1fecf
+new file mode 100644
+index 0000000..cc82347
+Binary files /dev/null and b/fuzz/corpora/ct/5970c63ec9f09d54d3f7a11c273cf2285bf1fecf differ
+diff --git a/fuzz/corpora/ct/5c9715bf09981e24d3046a55bc647670bde9e052 b/fuzz/corpora/ct/5c9715bf09981e24d3046a55bc647670bde9e052
+new file mode 100644
+index 0000000..dda7f85
+Binary files /dev/null and b/fuzz/corpora/ct/5c9715bf09981e24d3046a55bc647670bde9e052 differ
+diff --git a/fuzz/corpora/ct/66a499c710b293fcee8a2307a1cf727ea2eaad35 b/fuzz/corpora/ct/66a499c710b293fcee8a2307a1cf727ea2eaad35
+new file mode 100644
+index 0000000..cce94fb
+Binary files /dev/null and b/fuzz/corpora/ct/66a499c710b293fcee8a2307a1cf727ea2eaad35 differ
+diff --git a/fuzz/corpora/ct/6958a0808003a290b732f5b7cdbd684de38c68d3 b/fuzz/corpora/ct/6958a0808003a290b732f5b7cdbd684de38c68d3
+new file mode 100644
+index 0000000..cfa3e90
+Binary files /dev/null and b/fuzz/corpora/ct/6958a0808003a290b732f5b7cdbd684de38c68d3 differ
+diff --git a/fuzz/corpora/ct/6c7ab7ead2768f4ed744cf75386007648a75f837 b/fuzz/corpora/ct/6c7ab7ead2768f4ed744cf75386007648a75f837
+new file mode 100644
+index 0000000..56f06db
+Binary files /dev/null and b/fuzz/corpora/ct/6c7ab7ead2768f4ed744cf75386007648a75f837 differ
+diff --git a/fuzz/corpora/ct/6de0d4b21c1c02377fa39d5406e1fd0b817be116 b/fuzz/corpora/ct/6de0d4b21c1c02377fa39d5406e1fd0b817be116
+new file mode 100644
+index 0000000..58d2cb2
+Binary files /dev/null and b/fuzz/corpora/ct/6de0d4b21c1c02377fa39d5406e1fd0b817be116 differ
+diff --git a/fuzz/corpora/ct/7575668d9c38b6f71c5510d199f4b8d5a0104381 b/fuzz/corpora/ct/7575668d9c38b6f71c5510d199f4b8d5a0104381
+new file mode 100644
+index 0000000..5c6f6ab
+Binary files /dev/null and b/fuzz/corpora/ct/7575668d9c38b6f71c5510d199f4b8d5a0104381 differ
+diff --git a/fuzz/corpora/ct/79ebf867e288b5d20a62e7fe98b5b18c93b81303 b/fuzz/corpora/ct/79ebf867e288b5d20a62e7fe98b5b18c93b81303
+new file mode 100644
+index 0000000..e886fcc
+Binary files /dev/null and b/fuzz/corpora/ct/79ebf867e288b5d20a62e7fe98b5b18c93b81303 differ
+diff --git a/fuzz/corpora/ct/7cb4ecbdc622d8b7ef7cd51e5cc5a76407ea10ba b/fuzz/corpora/ct/7cb4ecbdc622d8b7ef7cd51e5cc5a76407ea10ba
+new file mode 100644
+index 0000000..bcc0da5
+Binary files /dev/null and b/fuzz/corpora/ct/7cb4ecbdc622d8b7ef7cd51e5cc5a76407ea10ba differ
+diff --git a/fuzz/corpora/ct/7ddd91ab9bc50214c83c52c808624b56b69ac239 b/fuzz/corpora/ct/7ddd91ab9bc50214c83c52c808624b56b69ac239
+new file mode 100644
+index 0000000..845123d
+Binary files /dev/null and b/fuzz/corpora/ct/7ddd91ab9bc50214c83c52c808624b56b69ac239 differ
+diff --git a/fuzz/corpora/ct/808eef4db3bcf9d85a8a4c7d4eeb875d1da7f79e b/fuzz/corpora/ct/808eef4db3bcf9d85a8a4c7d4eeb875d1da7f79e
+new file mode 100644
+index 0000000..d2941f9
+Binary files /dev/null and b/fuzz/corpora/ct/808eef4db3bcf9d85a8a4c7d4eeb875d1da7f79e differ
+diff --git a/fuzz/corpora/ct/80c5e81928388f2798c76a565f3e36865f862140 b/fuzz/corpora/ct/80c5e81928388f2798c76a565f3e36865f862140
+new file mode 100644
+index 0000000..a932c22
+Binary files /dev/null and b/fuzz/corpora/ct/80c5e81928388f2798c76a565f3e36865f862140 differ
+diff --git a/fuzz/corpora/ct/813fff9495b621a86999c2b767b0af0099e17b38 b/fuzz/corpora/ct/813fff9495b621a86999c2b767b0af0099e17b38
+new file mode 100644
+index 0000000..8587502
+Binary files /dev/null and b/fuzz/corpora/ct/813fff9495b621a86999c2b767b0af0099e17b38 differ
+diff --git a/fuzz/corpora/ct/83225d2274afa034da5852d60fcade4a544f53df b/fuzz/corpora/ct/83225d2274afa034da5852d60fcade4a544f53df
+new file mode 100644
+index 0000000..d2bd374
+Binary files /dev/null and b/fuzz/corpora/ct/83225d2274afa034da5852d60fcade4a544f53df differ
+diff --git a/fuzz/corpora/ct/8439c83cf0267a73b6a8f8500c6aa36cb6f19e2a b/fuzz/corpora/ct/8439c83cf0267a73b6a8f8500c6aa36cb6f19e2a
+new file mode 100644
+index 0000000..712ab8f
+Binary files /dev/null and b/fuzz/corpora/ct/8439c83cf0267a73b6a8f8500c6aa36cb6f19e2a differ
+diff --git a/fuzz/corpora/ct/875679a837dae913353af8d2558722a5dc35c23a b/fuzz/corpora/ct/875679a837dae913353af8d2558722a5dc35c23a
+new file mode 100644
+index 0000000..dfe5deb
+Binary files /dev/null and b/fuzz/corpora/ct/875679a837dae913353af8d2558722a5dc35c23a differ
+diff --git a/fuzz/corpora/ct/911581aeaa94dd3a03ca7711db00064b95d39e54 b/fuzz/corpora/ct/911581aeaa94dd3a03ca7711db00064b95d39e54
+new file mode 100644
+index 0000000..117fcc7
+Binary files /dev/null and b/fuzz/corpora/ct/911581aeaa94dd3a03ca7711db00064b95d39e54 differ
+diff --git a/fuzz/corpora/ct/915415ca0821848c91203fde9d2986d1ad973cdf b/fuzz/corpora/ct/915415ca0821848c91203fde9d2986d1ad973cdf
+new file mode 100644
+index 0000000..b826104
+Binary files /dev/null and b/fuzz/corpora/ct/915415ca0821848c91203fde9d2986d1ad973cdf differ
+diff --git a/fuzz/corpora/ct/948b11d1da5d29983285975d58b59e7e9e768adf b/fuzz/corpora/ct/948b11d1da5d29983285975d58b59e7e9e768adf
+new file mode 100644
+index 0000000..bef9a62
+Binary files /dev/null and b/fuzz/corpora/ct/948b11d1da5d29983285975d58b59e7e9e768adf differ
+diff --git a/fuzz/corpora/ct/97e02fb4637f6ffcca0df0dce0e777d284eba4f8 b/fuzz/corpora/ct/97e02fb4637f6ffcca0df0dce0e777d284eba4f8
+new file mode 100644
+index 0000000..2c72052
+Binary files /dev/null and b/fuzz/corpora/ct/97e02fb4637f6ffcca0df0dce0e777d284eba4f8 differ
+diff --git a/fuzz/corpora/ct/a26172c837f9d0698e2651520bad772769edb0d9 b/fuzz/corpora/ct/a26172c837f9d0698e2651520bad772769edb0d9
+new file mode 100644
+index 0000000..108c4b6
+Binary files /dev/null and b/fuzz/corpora/ct/a26172c837f9d0698e2651520bad772769edb0d9 differ
+diff --git a/fuzz/corpora/ct/a4726cc0ba1739824cc957e0149181ed4767d48e b/fuzz/corpora/ct/a4726cc0ba1739824cc957e0149181ed4767d48e
+new file mode 100644
+index 0000000..bb8219c
+Binary files /dev/null and b/fuzz/corpora/ct/a4726cc0ba1739824cc957e0149181ed4767d48e differ
+diff --git a/fuzz/corpora/ct/a945232f71eab8e9f8ac963d0509bc4dfd78eb1c b/fuzz/corpora/ct/a945232f71eab8e9f8ac963d0509bc4dfd78eb1c
+new file mode 100644
+index 0000000..2f6286e
+Binary files /dev/null and b/fuzz/corpora/ct/a945232f71eab8e9f8ac963d0509bc4dfd78eb1c differ
+diff --git a/fuzz/corpora/ct/aafbbfe3458378057a80107e00d7b34968b3eb99 b/fuzz/corpora/ct/aafbbfe3458378057a80107e00d7b34968b3eb99
+new file mode 100644
+index 0000000..82a3da0
+Binary files /dev/null and b/fuzz/corpora/ct/aafbbfe3458378057a80107e00d7b34968b3eb99 differ
+diff --git a/fuzz/corpora/ct/ac8ff901361ef256822d13a0678807a8b90b90ff b/fuzz/corpora/ct/ac8ff901361ef256822d13a0678807a8b90b90ff
+new file mode 100644
+index 0000000..03442be
+Binary files /dev/null and b/fuzz/corpora/ct/ac8ff901361ef256822d13a0678807a8b90b90ff differ
+diff --git a/fuzz/corpora/ct/ad8a1c0f659dfc0207c5079c12bedd98713739d3 b/fuzz/corpora/ct/ad8a1c0f659dfc0207c5079c12bedd98713739d3
+new file mode 100644
+index 0000000..509b4ab
+Binary files /dev/null and b/fuzz/corpora/ct/ad8a1c0f659dfc0207c5079c12bedd98713739d3 differ
+diff --git a/fuzz/corpora/ct/aed36137c6f281161929caa350b88f5b7c46ef73 b/fuzz/corpora/ct/aed36137c6f281161929caa350b88f5b7c46ef73
+new file mode 100644
+index 0000000..e01c704
+Binary files /dev/null and b/fuzz/corpora/ct/aed36137c6f281161929caa350b88f5b7c46ef73 differ
+diff --git a/fuzz/corpora/ct/b3179b50c8a007deace008cc08f83885f176f465 b/fuzz/corpora/ct/b3179b50c8a007deace008cc08f83885f176f465
+new file mode 100644
+index 0000000..b847346
+Binary files /dev/null and b/fuzz/corpora/ct/b3179b50c8a007deace008cc08f83885f176f465 differ
+diff --git a/fuzz/corpora/ct/b8ec0d3444e4f3081a0d643d332dbcf9660bfaaf b/fuzz/corpora/ct/b8ec0d3444e4f3081a0d643d332dbcf9660bfaaf
+new file mode 100644
+index 0000000..9f405ac
+Binary files /dev/null and b/fuzz/corpora/ct/b8ec0d3444e4f3081a0d643d332dbcf9660bfaaf differ
+diff --git a/fuzz/corpora/ct/c23bc56f2e42d1f5eaa0205bcd0800d74e8a1475 b/fuzz/corpora/ct/c23bc56f2e42d1f5eaa0205bcd0800d74e8a1475
+new file mode 100644
+index 0000000..a86e697
+Binary files /dev/null and b/fuzz/corpora/ct/c23bc56f2e42d1f5eaa0205bcd0800d74e8a1475 differ
+diff --git a/fuzz/corpora/ct/c5ea3c4b7b893b82ddd888660f5cf66a3cfe2fe5 b/fuzz/corpora/ct/c5ea3c4b7b893b82ddd888660f5cf66a3cfe2fe5
+new file mode 100644
+index 0000000..52ad7d2
+Binary files /dev/null and b/fuzz/corpora/ct/c5ea3c4b7b893b82ddd888660f5cf66a3cfe2fe5 differ
+diff --git a/fuzz/corpora/ct/cf807a8480723638324d6824d201839957d0e8b5 b/fuzz/corpora/ct/cf807a8480723638324d6824d201839957d0e8b5
+new file mode 100644
+index 0000000..892e580
+Binary files /dev/null and b/fuzz/corpora/ct/cf807a8480723638324d6824d201839957d0e8b5 differ
+diff --git a/fuzz/corpora/ct/d09aebe0ab964f07549a381f32a701f862cb7ec2 b/fuzz/corpora/ct/d09aebe0ab964f07549a381f32a701f862cb7ec2
+new file mode 100644
+index 0000000..4d8941c
+Binary files /dev/null and b/fuzz/corpora/ct/d09aebe0ab964f07549a381f32a701f862cb7ec2 differ
+diff --git a/fuzz/corpora/ct/d411e296a08dfb1f6464adb43f40d9fa1dfc19a7 b/fuzz/corpora/ct/d411e296a08dfb1f6464adb43f40d9fa1dfc19a7
+new file mode 100644
+index 0000000..3e8a9f4
+Binary files /dev/null and b/fuzz/corpora/ct/d411e296a08dfb1f6464adb43f40d9fa1dfc19a7 differ
+diff --git a/fuzz/corpora/ct/d535d1fe255561af7163e1651e5d59c34040bcfd b/fuzz/corpora/ct/d535d1fe255561af7163e1651e5d59c34040bcfd
+new file mode 100644
+index 0000000..fb317ce
+Binary files /dev/null and b/fuzz/corpora/ct/d535d1fe255561af7163e1651e5d59c34040bcfd differ
+diff --git a/fuzz/corpora/ct/d5df69981f86be99724c8478d9023d48562db132 b/fuzz/corpora/ct/d5df69981f86be99724c8478d9023d48562db132
+new file mode 100644
+index 0000000..4f33093
+Binary files /dev/null and b/fuzz/corpora/ct/d5df69981f86be99724c8478d9023d48562db132 differ
+diff --git a/fuzz/corpora/ct/d66a6943f8fd02c70e52fcea161367321ca48680 b/fuzz/corpora/ct/d66a6943f8fd02c70e52fcea161367321ca48680
+new file mode 100644
+index 0000000..48ec642
+Binary files /dev/null and b/fuzz/corpora/ct/d66a6943f8fd02c70e52fcea161367321ca48680 differ
+diff --git a/fuzz/corpora/ct/e1d38f062d750b8f53f6256b40e4ec44f7bf7523 b/fuzz/corpora/ct/e1d38f062d750b8f53f6256b40e4ec44f7bf7523
+new file mode 100644
+index 0000000..77271f1
+Binary files /dev/null and b/fuzz/corpora/ct/e1d38f062d750b8f53f6256b40e4ec44f7bf7523 differ
+diff --git a/fuzz/corpora/ct/e507725d8493607c6f8479ed0ea78fd160d4f145 b/fuzz/corpora/ct/e507725d8493607c6f8479ed0ea78fd160d4f145
+new file mode 100644
+index 0000000..ca61d85
+Binary files /dev/null and b/fuzz/corpora/ct/e507725d8493607c6f8479ed0ea78fd160d4f145 differ
+diff --git a/fuzz/corpora/ct/e8187779c57fa099aa34c62f045a3abb217c720c b/fuzz/corpora/ct/e8187779c57fa099aa34c62f045a3abb217c720c
+new file mode 100644
+index 0000000..4423d9f
+Binary files /dev/null and b/fuzz/corpora/ct/e8187779c57fa099aa34c62f045a3abb217c720c differ
+diff --git a/fuzz/corpora/ct/e8e1b12ff92662955e397d9ee448ccf0ff2b06da b/fuzz/corpora/ct/e8e1b12ff92662955e397d9ee448ccf0ff2b06da
+new file mode 100644
+index 0000000..215a530
+Binary files /dev/null and b/fuzz/corpora/ct/e8e1b12ff92662955e397d9ee448ccf0ff2b06da differ
+diff --git a/fuzz/corpora/ct/e8e379ea844af669a164a9092ac0e66fe59d7986 b/fuzz/corpora/ct/e8e379ea844af669a164a9092ac0e66fe59d7986
+new file mode 100644
+index 0000000..00212c1
+Binary files /dev/null and b/fuzz/corpora/ct/e8e379ea844af669a164a9092ac0e66fe59d7986 differ
+diff --git a/fuzz/corpora/ct/f019422397a6e13ff871b58cd01977f9205d5e76 b/fuzz/corpora/ct/f019422397a6e13ff871b58cd01977f9205d5e76
+new file mode 100644
+index 0000000..ecc98b1
+Binary files /dev/null and b/fuzz/corpora/ct/f019422397a6e13ff871b58cd01977f9205d5e76 differ
+diff --git a/fuzz/corpora/ct/f03c8dc48ee6160ad0b7c237c96d7439ad783fa2 b/fuzz/corpora/ct/f03c8dc48ee6160ad0b7c237c96d7439ad783fa2
+new file mode 100644
+index 0000000..282619a
+Binary files /dev/null and b/fuzz/corpora/ct/f03c8dc48ee6160ad0b7c237c96d7439ad783fa2 differ
+diff --git a/fuzz/corpora/ct/f1d9ba7524b74a3242dc7cba6ebb218d7feac5f6 b/fuzz/corpora/ct/f1d9ba7524b74a3242dc7cba6ebb218d7feac5f6
+new file mode 100644
+index 0000000..5bec4d0
+Binary files /dev/null and b/fuzz/corpora/ct/f1d9ba7524b74a3242dc7cba6ebb218d7feac5f6 differ
+diff --git a/fuzz/corpora/ct/f73ac97ced4eb3f6f653c0429c8ce0e3f044d7c0 b/fuzz/corpora/ct/f73ac97ced4eb3f6f653c0429c8ce0e3f044d7c0
+new file mode 100644
+index 0000000..de5f684
+Binary files /dev/null and b/fuzz/corpora/ct/f73ac97ced4eb3f6f653c0429c8ce0e3f044d7c0 differ
+diff --git a/fuzz/corpora/ct/fc276beaed6f0481e20224efd658a6e9a63ea3c0 b/fuzz/corpora/ct/fc276beaed6f0481e20224efd658a6e9a63ea3c0
+new file mode 100644
+index 0000000..0a7c30e
+Binary files /dev/null and b/fuzz/corpora/ct/fc276beaed6f0481e20224efd658a6e9a63ea3c0 differ
+diff --git a/fuzz/corpora/ct/fe9f6093c7583ad2f0d0336dd20a95b6a203328c b/fuzz/corpora/ct/fe9f6093c7583ad2f0d0336dd20a95b6a203328c
+new file mode 100644
+index 0000000..b598073
+Binary files /dev/null and b/fuzz/corpora/ct/fe9f6093c7583ad2f0d0336dd20a95b6a203328c differ
+diff --git a/fuzz/corpora/ct/ff3350f23fe293e1473f8cc293c9f6d4ec5c49e1 b/fuzz/corpora/ct/ff3350f23fe293e1473f8cc293c9f6d4ec5c49e1
+new file mode 100644
+index 0000000..7b05239
+Binary files /dev/null and b/fuzz/corpora/ct/ff3350f23fe293e1473f8cc293c9f6d4ec5c49e1 differ
 diff --git a/fuzz/corpora/server/00d84822aa5b6fb48752005041e4dbb35415329b b/fuzz/corpora/server/00d84822aa5b6fb48752005041e4dbb35415329b
 new file mode 100644
-index 000000000000..d04501be0dd7
+index 0000000..d04501b
 Binary files /dev/null and b/fuzz/corpora/server/00d84822aa5b6fb48752005041e4dbb35415329b differ
 diff --git a/fuzz/corpora/server/03a2b738c9650dc2f784940db325d78b05af64e9 b/fuzz/corpora/server/03a2b738c9650dc2f784940db325d78b05af64e9
 new file mode 100644
-index 000000000000..71c0936ccf32
+index 0000000..71c0936
 Binary files /dev/null and b/fuzz/corpora/server/03a2b738c9650dc2f784940db325d78b05af64e9 differ
 diff --git a/fuzz/corpora/server/05cb9e47e5f09ad3a98a43789a3f6ad0a40fa71c b/fuzz/corpora/server/05cb9e47e5f09ad3a98a43789a3f6ad0a40fa71c
 new file mode 100644
-index 000000000000..abb6dcd6d298
+index 0000000..abb6dcd
 Binary files /dev/null and b/fuzz/corpora/server/05cb9e47e5f09ad3a98a43789a3f6ad0a40fa71c differ
 diff --git a/fuzz/corpora/server/0acc2c1d95cf88788848e8fadfc50c4597b28000 b/fuzz/corpora/server/0acc2c1d95cf88788848e8fadfc50c4597b28000
 new file mode 100644
-index 000000000000..f5611d8f665c
+index 0000000..f5611d8
 Binary files /dev/null and b/fuzz/corpora/server/0acc2c1d95cf88788848e8fadfc50c4597b28000 differ
 diff --git a/fuzz/corpora/server/0e78f126c2272ca40b1dfc7544c8994d2daf72a0 b/fuzz/corpora/server/0e78f126c2272ca40b1dfc7544c8994d2daf72a0
 new file mode 100644
-index 000000000000..753fb8595849
+index 0000000..753fb85
 Binary files /dev/null and b/fuzz/corpora/server/0e78f126c2272ca40b1dfc7544c8994d2daf72a0 differ
 diff --git a/fuzz/corpora/server/16fa1a2d494abd2bf3c211df08388ab202434c3a b/fuzz/corpora/server/16fa1a2d494abd2bf3c211df08388ab202434c3a
 new file mode 100644
-index 000000000000..05c216407e9c
+index 0000000..05c2164
 Binary files /dev/null and b/fuzz/corpora/server/16fa1a2d494abd2bf3c211df08388ab202434c3a differ
 diff --git a/fuzz/corpora/server/1a36089449687faaaad64f48d547bf1e25f6ef7f b/fuzz/corpora/server/1a36089449687faaaad64f48d547bf1e25f6ef7f
 new file mode 100644
-index 000000000000..cb3adf786b41
+index 0000000..cb3adf7
 Binary files /dev/null and b/fuzz/corpora/server/1a36089449687faaaad64f48d547bf1e25f6ef7f differ
 diff --git a/fuzz/corpora/server/1d4e35f876cadf708fd9383def5d05996938b27f b/fuzz/corpora/server/1d4e35f876cadf708fd9383def5d05996938b27f
 new file mode 100644
-index 000000000000..6a922271c49f
+index 0000000..6a92227
 Binary files /dev/null and b/fuzz/corpora/server/1d4e35f876cadf708fd9383def5d05996938b27f differ
 diff --git a/fuzz/corpora/server/1ddeb202fe4f0c0ed555cb4db6065add121da8a4 b/fuzz/corpora/server/1ddeb202fe4f0c0ed555cb4db6065add121da8a4
 new file mode 100644
-index 000000000000..5275a9124e36
+index 0000000..5275a91
 Binary files /dev/null and b/fuzz/corpora/server/1ddeb202fe4f0c0ed555cb4db6065add121da8a4 differ
 diff --git a/fuzz/corpora/server/1f354e139279b9421660f235117a88130dea07d3 b/fuzz/corpora/server/1f354e139279b9421660f235117a88130dea07d3
 new file mode 100644
-index 000000000000..8c861010426e
+index 0000000..8c86101
 Binary files /dev/null and b/fuzz/corpora/server/1f354e139279b9421660f235117a88130dea07d3 differ
 diff --git a/fuzz/corpora/server/202162f9f306451d8f053813240d2f3f5ba89293 b/fuzz/corpora/server/202162f9f306451d8f053813240d2f3f5ba89293
 new file mode 100644
-index 000000000000..20209fa97f70
+index 0000000..20209fa
 Binary files /dev/null and b/fuzz/corpora/server/202162f9f306451d8f053813240d2f3f5ba89293 differ
 diff --git a/fuzz/corpora/server/278661fa282247156455f1cc68d404f6ea6431dc b/fuzz/corpora/server/278661fa282247156455f1cc68d404f6ea6431dc
 new file mode 100644
-index 000000000000..8a8a6c6d9495
+index 0000000..8a8a6c6
 Binary files /dev/null and b/fuzz/corpora/server/278661fa282247156455f1cc68d404f6ea6431dc differ
 diff --git a/fuzz/corpora/server/2e080345b5a3e38f86f00b81ea5d48317ba1e63e b/fuzz/corpora/server/2e080345b5a3e38f86f00b81ea5d48317ba1e63e
 new file mode 100644
-index 000000000000..37b0fef8568f
+index 0000000..37b0fef
 Binary files /dev/null and b/fuzz/corpora/server/2e080345b5a3e38f86f00b81ea5d48317ba1e63e differ
 diff --git a/fuzz/corpora/server/31567eb87d6450a43b56fc04b252cd17bca55928 b/fuzz/corpora/server/31567eb87d6450a43b56fc04b252cd17bca55928
 new file mode 100644
-index 000000000000..819a551cbae9
+index 0000000..819a551
 Binary files /dev/null and b/fuzz/corpora/server/31567eb87d6450a43b56fc04b252cd17bca55928 differ
 diff --git a/fuzz/corpora/server/329fc00b5325b7fbf655d4a1cca68811895c2ede b/fuzz/corpora/server/329fc00b5325b7fbf655d4a1cca68811895c2ede
 new file mode 100644
-index 000000000000..b63b3aebc6e8
+index 0000000..b63b3ae
 Binary files /dev/null and b/fuzz/corpora/server/329fc00b5325b7fbf655d4a1cca68811895c2ede differ
 diff --git a/fuzz/corpora/server/3db8911ae75aebc89ade50a6dd23f3b212fc25df b/fuzz/corpora/server/3db8911ae75aebc89ade50a6dd23f3b212fc25df
 new file mode 100644
-index 000000000000..b02935c69457
+index 0000000..b02935c
 Binary files /dev/null and b/fuzz/corpora/server/3db8911ae75aebc89ade50a6dd23f3b212fc25df differ
 diff --git a/fuzz/corpora/server/3f49bcd68e713a4d6470a82f06cfe124b07b812c b/fuzz/corpora/server/3f49bcd68e713a4d6470a82f06cfe124b07b812c
 new file mode 100644
-index 000000000000..b360945d4008
+index 0000000..b360945
 Binary files /dev/null and b/fuzz/corpora/server/3f49bcd68e713a4d6470a82f06cfe124b07b812c differ
 diff --git a/fuzz/corpora/server/3fb838543c3019d83471309c61c8bc2c507a30d4 b/fuzz/corpora/server/3fb838543c3019d83471309c61c8bc2c507a30d4
 new file mode 100644
-index 000000000000..60ca909c2a32
+index 0000000..60ca909
 Binary files /dev/null and b/fuzz/corpora/server/3fb838543c3019d83471309c61c8bc2c507a30d4 differ
 diff --git a/fuzz/corpora/server/4185e575c03b7d10c0b2d8f51f95b126a7c9ff27 b/fuzz/corpora/server/4185e575c03b7d10c0b2d8f51f95b126a7c9ff27
 new file mode 100644
-index 000000000000..ade328aa3ee5
+index 0000000..ade328a
 Binary files /dev/null and b/fuzz/corpora/server/4185e575c03b7d10c0b2d8f51f95b126a7c9ff27 differ
 diff --git a/fuzz/corpora/server/42b49934137fdb5a258a9d23cd3f1f4df350e5ab b/fuzz/corpora/server/42b49934137fdb5a258a9d23cd3f1f4df350e5ab
 new file mode 100644
-index 000000000000..57e66ef9a1ad
+index 0000000..57e66ef
 Binary files /dev/null and b/fuzz/corpora/server/42b49934137fdb5a258a9d23cd3f1f4df350e5ab differ
 diff --git a/fuzz/corpora/server/452a3866c94029fa4f4d19fff220f1696e79820b b/fuzz/corpora/server/452a3866c94029fa4f4d19fff220f1696e79820b
 new file mode 100644
-index 000000000000..7b6817715c47
+index 0000000..7b68177
 Binary files /dev/null and b/fuzz/corpora/server/452a3866c94029fa4f4d19fff220f1696e79820b differ
 diff --git a/fuzz/corpora/server/48c3066f502f091bdfc7082655e4f50a4fdd8a29 b/fuzz/corpora/server/48c3066f502f091bdfc7082655e4f50a4fdd8a29
 new file mode 100644
-index 000000000000..a5daa32a456a
+index 0000000..a5daa32
 Binary files /dev/null and b/fuzz/corpora/server/48c3066f502f091bdfc7082655e4f50a4fdd8a29 differ
 diff --git a/fuzz/corpora/server/4c2d4fca8ba68fa29bcabc1f282570873dc87ae3 b/fuzz/corpora/server/4c2d4fca8ba68fa29bcabc1f282570873dc87ae3
 new file mode 100644
-index 000000000000..7948c5f0d4eb
+index 0000000..7948c5f
 Binary files /dev/null and b/fuzz/corpora/server/4c2d4fca8ba68fa29bcabc1f282570873dc87ae3 differ
 diff --git a/fuzz/corpora/server/4c551ab843a0087bd2bda5ca2553259936def6bb b/fuzz/corpora/server/4c551ab843a0087bd2bda5ca2553259936def6bb
 new file mode 100644
-index 000000000000..104e731e4a1a
+index 0000000..104e731
 Binary files /dev/null and b/fuzz/corpora/server/4c551ab843a0087bd2bda5ca2553259936def6bb differ
 diff --git a/fuzz/corpora/server/555859c6820a2b0b1c689fb32b97a26e537dc423 b/fuzz/corpora/server/555859c6820a2b0b1c689fb32b97a26e537dc423
 new file mode 100644
-index 000000000000..a01cbec235fe
+index 0000000..a01cbec
 Binary files /dev/null and b/fuzz/corpora/server/555859c6820a2b0b1c689fb32b97a26e537dc423 differ
 diff --git a/fuzz/corpora/server/5bd5e4edc3c1fe3617f0ceb512ef64aa02312eea b/fuzz/corpora/server/5bd5e4edc3c1fe3617f0ceb512ef64aa02312eea
 new file mode 100644
-index 000000000000..63d479ec27f1
+index 0000000..63d479e
 Binary files /dev/null and b/fuzz/corpora/server/5bd5e4edc3c1fe3617f0ceb512ef64aa02312eea differ
 diff --git a/fuzz/corpora/server/5fb0d03a2cf462fbf42d3e09a63e5720e94dd8fc b/fuzz/corpora/server/5fb0d03a2cf462fbf42d3e09a63e5720e94dd8fc
 new file mode 100644
-index 000000000000..6334b0d45b6f
+index 0000000..6334b0d
 Binary files /dev/null and b/fuzz/corpora/server/5fb0d03a2cf462fbf42d3e09a63e5720e94dd8fc differ
 diff --git a/fuzz/corpora/server/60dd92879d5b6802af3a79ab8c109957cc69b10d b/fuzz/corpora/server/60dd92879d5b6802af3a79ab8c109957cc69b10d
 new file mode 100644
-index 000000000000..c74cc0342a48
+index 0000000..c74cc03
 Binary files /dev/null and b/fuzz/corpora/server/60dd92879d5b6802af3a79ab8c109957cc69b10d differ
 diff --git a/fuzz/corpora/server/6434e9d3629b10e159ffbaadc201b459389f7dfa b/fuzz/corpora/server/6434e9d3629b10e159ffbaadc201b459389f7dfa
 new file mode 100644
-index 000000000000..4691f3d56434
+index 0000000..4691f3d
 Binary files /dev/null and b/fuzz/corpora/server/6434e9d3629b10e159ffbaadc201b459389f7dfa differ
 diff --git a/fuzz/corpora/server/647a54e4ece166f05b4ef2b5164bb50cacb7100e b/fuzz/corpora/server/647a54e4ece166f05b4ef2b5164bb50cacb7100e
 new file mode 100644
-index 000000000000..d0459cc3f230
+index 0000000..d0459cc
 Binary files /dev/null and b/fuzz/corpora/server/647a54e4ece166f05b4ef2b5164bb50cacb7100e differ
 diff --git a/fuzz/corpora/server/65c7302da031984e824a22a5c89ec888c77f6e34 b/fuzz/corpora/server/65c7302da031984e824a22a5c89ec888c77f6e34
 new file mode 100644
-index 000000000000..3689fe6e5e48
+index 0000000..3689fe6
 Binary files /dev/null and b/fuzz/corpora/server/65c7302da031984e824a22a5c89ec888c77f6e34 differ
 diff --git a/fuzz/corpora/server/6703ba213cbaae9fc31089243ceed2c9c9bf77d9 b/fuzz/corpora/server/6703ba213cbaae9fc31089243ceed2c9c9bf77d9
 new file mode 100644
-index 000000000000..47d2e4e47659
+index 0000000..47d2e4e
 Binary files /dev/null and b/fuzz/corpora/server/6703ba213cbaae9fc31089243ceed2c9c9bf77d9 differ
 diff --git a/fuzz/corpora/server/67ce0e211ae45b6d69f39f80f3362c0cdad7486b b/fuzz/corpora/server/67ce0e211ae45b6d69f39f80f3362c0cdad7486b
 new file mode 100644
-index 000000000000..364f9a3de247
+index 0000000..364f9a3
 Binary files /dev/null and b/fuzz/corpora/server/67ce0e211ae45b6d69f39f80f3362c0cdad7486b differ
 diff --git a/fuzz/corpora/server/6f403d09540861099b00317576af7c48525cb526 b/fuzz/corpora/server/6f403d09540861099b00317576af7c48525cb526
 new file mode 100644
-index 000000000000..b8c9faf3d655
+index 0000000..b8c9faf
 Binary files /dev/null and b/fuzz/corpora/server/6f403d09540861099b00317576af7c48525cb526 differ
 diff --git a/fuzz/corpora/server/6f4fd301492374265b13a1c4f4fd1a1fe5c8a69c b/fuzz/corpora/server/6f4fd301492374265b13a1c4f4fd1a1fe5c8a69c
 new file mode 100644
-index 000000000000..1042ebfdd6b0
+index 0000000..1042ebf
 Binary files /dev/null and b/fuzz/corpora/server/6f4fd301492374265b13a1c4f4fd1a1fe5c8a69c differ
 diff --git a/fuzz/corpora/server/71ab7b71ea3f94ab730bfd1b120cdc437abf188b b/fuzz/corpora/server/71ab7b71ea3f94ab730bfd1b120cdc437abf188b
 new file mode 100644
-index 000000000000..e6a566bd203c
+index 0000000..e6a566b
 Binary files /dev/null and b/fuzz/corpora/server/71ab7b71ea3f94ab730bfd1b120cdc437abf188b differ
 diff --git a/fuzz/corpora/server/7404c4cd1b3e25c2d3928ad84eb83173bc100c01 b/fuzz/corpora/server/7404c4cd1b3e25c2d3928ad84eb83173bc100c01
 new file mode 100644
-index 000000000000..056e0dc829fe
+index 0000000..056e0dc
 Binary files /dev/null and b/fuzz/corpora/server/7404c4cd1b3e25c2d3928ad84eb83173bc100c01 differ
 diff --git a/fuzz/corpora/server/7bde5e8b01fb87ae67b83943ef391d79101d86c6 b/fuzz/corpora/server/7bde5e8b01fb87ae67b83943ef391d79101d86c6
 new file mode 100644
-index 000000000000..cd66a86499aa
+index 0000000..cd66a86
 Binary files /dev/null and b/fuzz/corpora/server/7bde5e8b01fb87ae67b83943ef391d79101d86c6 differ
 diff --git a/fuzz/corpora/server/7f8f856f9c4095f0affffd94c6ed755ddc6b0ab7 b/fuzz/corpora/server/7f8f856f9c4095f0affffd94c6ed755ddc6b0ab7
 new file mode 100644
-index 000000000000..8cfbf5e1660d
+index 0000000..8cfbf5e
 Binary files /dev/null and b/fuzz/corpora/server/7f8f856f9c4095f0affffd94c6ed755ddc6b0ab7 differ
 diff --git a/fuzz/corpora/server/8048feda962802c604c2d31cd64c7b3485d8b013 b/fuzz/corpora/server/8048feda962802c604c2d31cd64c7b3485d8b013
 new file mode 100644
-index 000000000000..798e813836a9
+index 0000000..798e813
 Binary files /dev/null and b/fuzz/corpora/server/8048feda962802c604c2d31cd64c7b3485d8b013 differ
 diff --git a/fuzz/corpora/server/80e9bca075a47f9ee831d63ff0e5e1e090116864 b/fuzz/corpora/server/80e9bca075a47f9ee831d63ff0e5e1e090116864
 new file mode 100644
-index 000000000000..f5b05c80a3ab
+index 0000000..f5b05c8
 Binary files /dev/null and b/fuzz/corpora/server/80e9bca075a47f9ee831d63ff0e5e1e090116864 differ
 diff --git a/fuzz/corpora/server/81fb66262d2a3ab2645581597922afbefb4709ee b/fuzz/corpora/server/81fb66262d2a3ab2645581597922afbefb4709ee
 new file mode 100644
-index 000000000000..2d6fa3a54377
+index 0000000..2d6fa3a
 Binary files /dev/null and b/fuzz/corpora/server/81fb66262d2a3ab2645581597922afbefb4709ee differ
 diff --git a/fuzz/corpora/server/826b5ba931a9d31b8f62eaebcb794842ab4fa272 b/fuzz/corpora/server/826b5ba931a9d31b8f62eaebcb794842ab4fa272
 new file mode 100644
-index 000000000000..a0d1ea663f2e
+index 0000000..a0d1ea6
 Binary files /dev/null and b/fuzz/corpora/server/826b5ba931a9d31b8f62eaebcb794842ab4fa272 differ
 diff --git a/fuzz/corpora/server/85da2ddda10d1fd2acafdaa1bbed9d8524ccda6b b/fuzz/corpora/server/85da2ddda10d1fd2acafdaa1bbed9d8524ccda6b
 new file mode 100644
-index 000000000000..1b6acbb3d133
+index 0000000..1b6acbb
 Binary files /dev/null and b/fuzz/corpora/server/85da2ddda10d1fd2acafdaa1bbed9d8524ccda6b differ
 diff --git a/fuzz/corpora/server/884e41730d1243abec8390061fce441d4203d4de b/fuzz/corpora/server/884e41730d1243abec8390061fce441d4203d4de
 new file mode 100644
-index 000000000000..b6c4c58d0bae
+index 0000000..b6c4c58
 Binary files /dev/null and b/fuzz/corpora/server/884e41730d1243abec8390061fce441d4203d4de differ
 diff --git a/fuzz/corpora/server/8d1571bfcc6b1d9e2291776435d633ee1e9efc34 b/fuzz/corpora/server/8d1571bfcc6b1d9e2291776435d633ee1e9efc34
 new file mode 100644
-index 000000000000..911c0aca5e0a
+index 0000000..911c0ac
 Binary files /dev/null and b/fuzz/corpora/server/8d1571bfcc6b1d9e2291776435d633ee1e9efc34 differ
 diff --git a/fuzz/corpora/server/9a9f6c51e03fc4e51570f9c65f363a4b6b370e84 b/fuzz/corpora/server/9a9f6c51e03fc4e51570f9c65f363a4b6b370e84
 new file mode 100644
-index 000000000000..1c3778511985
+index 0000000..1c37785
 Binary files /dev/null and b/fuzz/corpora/server/9a9f6c51e03fc4e51570f9c65f363a4b6b370e84 differ
 diff --git a/fuzz/corpora/server/9bc58cf79267d67feda542cabad7ae62a6e60e7f b/fuzz/corpora/server/9bc58cf79267d67feda542cabad7ae62a6e60e7f
 new file mode 100644
-index 000000000000..0b6c5b088631
+index 0000000..0b6c5b0
 Binary files /dev/null and b/fuzz/corpora/server/9bc58cf79267d67feda542cabad7ae62a6e60e7f differ
 diff --git a/fuzz/corpora/server/abb116c4143eb3be9d6f8fbe91fc2a0e502f0475 b/fuzz/corpora/server/abb116c4143eb3be9d6f8fbe91fc2a0e502f0475
 new file mode 100644
-index 000000000000..ca08fdeefebc
+index 0000000..ca08fde
 Binary files /dev/null and b/fuzz/corpora/server/abb116c4143eb3be9d6f8fbe91fc2a0e502f0475 differ
 diff --git a/fuzz/corpora/server/ad73381d720d12fd4bded78fb48c25f92e21645c b/fuzz/corpora/server/ad73381d720d12fd4bded78fb48c25f92e21645c
 new file mode 100644
-index 000000000000..558439c23a66
+index 0000000..558439c
 Binary files /dev/null and b/fuzz/corpora/server/ad73381d720d12fd4bded78fb48c25f92e21645c differ
 diff --git a/fuzz/corpora/server/b4d864c441c24cbd36276f5ea21e747a057aa8fc b/fuzz/corpora/server/b4d864c441c24cbd36276f5ea21e747a057aa8fc
 new file mode 100644
-index 000000000000..42768d641af4
+index 0000000..42768d6
 Binary files /dev/null and b/fuzz/corpora/server/b4d864c441c24cbd36276f5ea21e747a057aa8fc differ
 diff --git a/fuzz/corpora/server/b6c2977a4b00c916e90d5758d982ae6c75d67200 b/fuzz/corpora/server/b6c2977a4b00c916e90d5758d982ae6c75d67200
 new file mode 100644
-index 000000000000..f73d803940c4
+index 0000000..f73d803
 Binary files /dev/null and b/fuzz/corpora/server/b6c2977a4b00c916e90d5758d982ae6c75d67200 differ
 diff --git a/fuzz/corpora/server/bd742ea29dd6c69983df2627e6e6df4ae2f52b6c b/fuzz/corpora/server/bd742ea29dd6c69983df2627e6e6df4ae2f52b6c
 new file mode 100644
-index 000000000000..98e7ca9e4338
+index 0000000..98e7ca9
 Binary files /dev/null and b/fuzz/corpora/server/bd742ea29dd6c69983df2627e6e6df4ae2f52b6c differ
 diff --git a/fuzz/corpora/server/be132fc41e853a231b564a2c77efbd34f86b2e26 b/fuzz/corpora/server/be132fc41e853a231b564a2c77efbd34f86b2e26
 new file mode 100644
-index 000000000000..ccaaae2cd3dc
+index 0000000..ccaaae2
 Binary files /dev/null and b/fuzz/corpora/server/be132fc41e853a231b564a2c77efbd34f86b2e26 differ
 diff --git a/fuzz/corpora/server/c0a1d768b0695cc7657268572121c511973f36a3 b/fuzz/corpora/server/c0a1d768b0695cc7657268572121c511973f36a3
 new file mode 100644
-index 000000000000..09f3dc36ac5a
+index 0000000..09f3dc3
 Binary files /dev/null and b/fuzz/corpora/server/c0a1d768b0695cc7657268572121c511973f36a3 differ
 diff --git a/fuzz/corpora/server/c634eccff951065fe4775ab68e2c34b9044c2388 b/fuzz/corpora/server/c634eccff951065fe4775ab68e2c34b9044c2388
 new file mode 100644
-index 000000000000..df3b036b8bb3
+index 0000000..df3b036
 Binary files /dev/null and b/fuzz/corpora/server/c634eccff951065fe4775ab68e2c34b9044c2388 differ
 diff --git a/fuzz/corpora/server/cb30183a0feee7a77c9c0ac94675b2e40f6a061f b/fuzz/corpora/server/cb30183a0feee7a77c9c0ac94675b2e40f6a061f
 new file mode 100644
-index 000000000000..d50fd02d2eb3
+index 0000000..d50fd02
 Binary files /dev/null and b/fuzz/corpora/server/cb30183a0feee7a77c9c0ac94675b2e40f6a061f differ
 diff --git a/fuzz/corpora/server/ccb9ba1720ea08aac679f58664e7ad91f9450de4 b/fuzz/corpora/server/ccb9ba1720ea08aac679f58664e7ad91f9450de4
 new file mode 100644
-index 000000000000..64d0e27eda60
+index 0000000..64d0e27
 Binary files /dev/null and b/fuzz/corpora/server/ccb9ba1720ea08aac679f58664e7ad91f9450de4 differ
 diff --git a/fuzz/corpora/server/cf03c2f24d9f024b5537f9cfe5e0aeb54550d08a b/fuzz/corpora/server/cf03c2f24d9f024b5537f9cfe5e0aeb54550d08a
 new file mode 100644
-index 000000000000..c0f90fc089cf
+index 0000000..c0f90fc
 Binary files /dev/null and b/fuzz/corpora/server/cf03c2f24d9f024b5537f9cfe5e0aeb54550d08a differ
 diff --git a/fuzz/corpora/server/d035444251bff1cc77ed685b4b817387d9cf473e b/fuzz/corpora/server/d035444251bff1cc77ed685b4b817387d9cf473e
 new file mode 100644
-index 000000000000..ffe2e1d96fec
+index 0000000..ffe2e1d
 Binary files /dev/null and b/fuzz/corpora/server/d035444251bff1cc77ed685b4b817387d9cf473e differ
 diff --git a/fuzz/corpora/server/d10d61eb942db78d943faca1880d55971bfe1e44 b/fuzz/corpora/server/d10d61eb942db78d943faca1880d55971bfe1e44
 new file mode 100644
-index 000000000000..f21ff88d93b0
+index 0000000..f21ff88
 Binary files /dev/null and b/fuzz/corpora/server/d10d61eb942db78d943faca1880d55971bfe1e44 differ
 diff --git a/fuzz/corpora/server/d3154759d89ea82c15937fe4162d153790c5ad3a b/fuzz/corpora/server/d3154759d89ea82c15937fe4162d153790c5ad3a
 new file mode 100644
-index 000000000000..a314bc9de53b
+index 0000000..a314bc9
 Binary files /dev/null and b/fuzz/corpora/server/d3154759d89ea82c15937fe4162d153790c5ad3a differ
 diff --git a/fuzz/corpora/server/e10985e15084a2ad543839a6233546717028940f b/fuzz/corpora/server/e10985e15084a2ad543839a6233546717028940f
 new file mode 100644
-index 000000000000..a8f65a42b895
+index 0000000..a8f65a4
 Binary files /dev/null and b/fuzz/corpora/server/e10985e15084a2ad543839a6233546717028940f differ
 diff --git a/fuzz/corpora/server/e156eff53c46a7ce07d4b29683ab284280a931d8 b/fuzz/corpora/server/e156eff53c46a7ce07d4b29683ab284280a931d8
 new file mode 100644
-index 000000000000..07bed83ce2d4
+index 0000000..07bed83
 Binary files /dev/null and b/fuzz/corpora/server/e156eff53c46a7ce07d4b29683ab284280a931d8 differ
 diff --git a/fuzz/corpora/server/e2fb2f12f6fe36b4d96b83458a508802cc3b1122 b/fuzz/corpora/server/e2fb2f12f6fe36b4d96b83458a508802cc3b1122
 new file mode 100644
-index 000000000000..2b13460b9d80
+index 0000000..2b13460
 Binary files /dev/null and b/fuzz/corpora/server/e2fb2f12f6fe36b4d96b83458a508802cc3b1122 differ
 diff --git a/fuzz/corpora/server/e59d84c5523cc452b38d78d4461ebdea0dea22cc b/fuzz/corpora/server/e59d84c5523cc452b38d78d4461ebdea0dea22cc
 new file mode 100644
-index 000000000000..3c4bd51c8b63
+index 0000000..3c4bd51
 Binary files /dev/null and b/fuzz/corpora/server/e59d84c5523cc452b38d78d4461ebdea0dea22cc differ
 diff --git a/fuzz/corpora/server/e699cbb6df7876de54a8d3388202a9e76598a1a8 b/fuzz/corpora/server/e699cbb6df7876de54a8d3388202a9e76598a1a8
 new file mode 100644
-index 000000000000..b8612d7ab18c
+index 0000000..b8612d7
 Binary files /dev/null and b/fuzz/corpora/server/e699cbb6df7876de54a8d3388202a9e76598a1a8 differ
 diff --git a/fuzz/corpora/server/e96eb670cd24fbda753fccd2e21c5f6c61d9f9ca b/fuzz/corpora/server/e96eb670cd24fbda753fccd2e21c5f6c61d9f9ca
 new file mode 100644
-index 000000000000..af4b9a2cd881
+index 0000000..af4b9a2
 Binary files /dev/null and b/fuzz/corpora/server/e96eb670cd24fbda753fccd2e21c5f6c61d9f9ca differ
 diff --git a/fuzz/corpora/server/eb2e11be910e605342e2c2b5c844a19109fcb7b0 b/fuzz/corpora/server/eb2e11be910e605342e2c2b5c844a19109fcb7b0
 new file mode 100644
-index 000000000000..fbdf219702f4
+index 0000000..fbdf219
 Binary files /dev/null and b/fuzz/corpora/server/eb2e11be910e605342e2c2b5c844a19109fcb7b0 differ
 diff --git a/fuzz/corpora/server/eeccdde27cfc417c2f4802ef6a7edf778959a044 b/fuzz/corpora/server/eeccdde27cfc417c2f4802ef6a7edf778959a044
 new file mode 100644
-index 000000000000..444992ac9f50
+index 0000000..444992a
 Binary files /dev/null and b/fuzz/corpora/server/eeccdde27cfc417c2f4802ef6a7edf778959a044 differ
 diff --git a/fuzz/corpora/server/f1c677b357abc2556d666bf47790a05d306a292d b/fuzz/corpora/server/f1c677b357abc2556d666bf47790a05d306a292d
 new file mode 100644
-index 000000000000..cdb9d1b80e5b
+index 0000000..cdb9d1b
 Binary files /dev/null and b/fuzz/corpora/server/f1c677b357abc2556d666bf47790a05d306a292d differ
 diff --git a/fuzz/corpora/server/f72d871c7701796accd3a7ea2ed52eac37a23a10 b/fuzz/corpora/server/f72d871c7701796accd3a7ea2ed52eac37a23a10
 new file mode 100644
-index 000000000000..1d9f50df1e57
+index 0000000..1d9f50d
 Binary files /dev/null and b/fuzz/corpora/server/f72d871c7701796accd3a7ea2ed52eac37a23a10 differ
 diff --git a/fuzz/corpora/server/face440e5722d3ad8a05f4fcb4cff096d5002675 b/fuzz/corpora/server/face440e5722d3ad8a05f4fcb4cff096d5002675
 new file mode 100644
-index 000000000000..ce98f6a859fd
+index 0000000..ce98f6a
 Binary files /dev/null and b/fuzz/corpora/server/face440e5722d3ad8a05f4fcb4cff096d5002675 differ
+diff --git a/fuzz/crl.c b/fuzz/crl.c
+new file mode 100644
+index 0000000..4dd5b3b
+--- /dev/null
++++ b/fuzz/crl.c
+@@ -0,0 +1,31 @@
++/*
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL licenses, (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ * https://www.openssl.org/source/license.html
++ * or in the file LICENSE in the source distribution.
++ */
++
++#include <openssl/x509.h>
++#include <openssl/bio.h>
++#include "fuzzer.h"
++
++int FuzzerTestOneInput(const uint8_t *buf, size_t len) {
++    const unsigned char *p = buf;
++    unsigned char *der = NULL;
++
++    X509_CRL *crl = d2i_X509_CRL(NULL, &p, len);
++    if (crl != NULL) {
++        BIO *bio = BIO_new(BIO_s_null());
++        X509_CRL_print(bio, crl);
++        BIO_free(bio);
++
++        i2d_X509_CRL(crl, &der);
++        OPENSSL_free(der);
++
++        X509_CRL_free(crl);
++    }
++    return 0;
++}
 diff --git a/fuzz/ct.c b/fuzz/ct.c
 new file mode 100644
-index 000000000000..dbb7ab487242
+index 0000000..dbb7ab4
 --- /dev/null
 +++ b/fuzz/ct.c
 @@ -0,0 +1,24 @@
@@ -125215,10 +140300,10 @@
 +}
 diff --git a/fuzz/driver.c b/fuzz/driver.c
 new file mode 100644
-index 000000000000..de515748cefc
+index 0000000..c530fed
 --- /dev/null
 +++ b/fuzz/driver.c
-@@ -0,0 +1,51 @@
+@@ -0,0 +1,52 @@
 +/*
 + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
 + *
@@ -125230,6 +140315,7 @@
 + */
 +#include <stdint.h>
 +#include <unistd.h>
++#include <stdlib.h>
 +#include <openssl/opensslconf.h>
 +#include "fuzzer.h"
 +
@@ -125272,7 +140358,7 @@
 +#endif
 diff --git a/fuzz/fuzzer.h b/fuzz/fuzzer.h
 new file mode 100644
-index 000000000000..289aee2f6067
+index 0000000..289aee2
 --- /dev/null
 +++ b/fuzz/fuzzer.h
 @@ -0,0 +1,12 @@
@@ -125290,7 +140376,7 @@
 +__attribute__((weak)) int FuzzerInitialize(int *argc, char ***argv);
 diff --git a/fuzz/helper.py b/fuzz/helper.py
 new file mode 100755
-index 000000000000..f5f9d77daaf2
+index 0000000..f5f9d77
 --- /dev/null
 +++ b/fuzz/helper.py
 @@ -0,0 +1,52 @@
@@ -125348,7 +140434,7 @@
 +    main()
 diff --git a/fuzz/server.c b/fuzz/server.c
 new file mode 100644
-index 000000000000..7b376c1abbe5
+index 0000000..7b376c1
 --- /dev/null
 +++ b/fuzz/server.c
 @@ -0,0 +1,237 @@
@@ -125589,8 +140675,45 @@
 +    SSL_free(server);
 +    return 0;
 +}
+diff --git a/fuzz/x509.c b/fuzz/x509.c
+new file mode 100644
+index 0000000..a0fab2f
+--- /dev/null
++++ b/fuzz/x509.c
+@@ -0,0 +1,31 @@
++/*
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL licenses, (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ * https://www.openssl.org/source/license.html
++ * or in the file LICENSE in the source distribution.
++ */
++
++#include <openssl/x509.h>
++#include <openssl/bio.h>
++#include "fuzzer.h"
++
++int FuzzerTestOneInput(const uint8_t *buf, size_t len) {
++    const unsigned char *p = buf;
++    unsigned char *der = NULL;
++
++    X509 *x509 = d2i_X509(NULL, &p, len);
++    if (x509 != NULL) {
++        BIO *bio = BIO_new(BIO_s_null());
++        X509_print(bio, x509);
++        BIO_free(bio);
++
++        i2d_X509(x509, &der);
++        OPENSSL_free(der);
++
++        X509_free(x509);
++    }
++    return 0;
++}
 diff --git a/include/internal/bio.h b/include/internal/bio.h
-index 31fe1aaaaf08..3b6a6ac4d2d5 100644
+index 31fe1aa..3b6a6ac 100644
 --- a/include/internal/bio.h
 +++ b/include/internal/bio.h
 @@ -1,55 +1,10 @@
@@ -125656,7 +140779,7 @@
  
  #include <openssl/bio.h>
 diff --git a/include/internal/comp.h b/include/internal/comp.h
-index 34bf14732580..ac6e38b47415 100644
+index 34bf147..ac6e38b 100644
 --- a/include/internal/comp.h
 +++ b/include/internal/comp.h
 @@ -1,9 +1,10 @@
@@ -125675,7 +140798,7 @@
  
  #include <openssl/comp.h>
 diff --git a/include/internal/conf.h b/include/internal/conf.h
-index 2d48daf5d059..8f3e09c896cf 100644
+index 2d48daf..ada3f92 100644
 --- a/include/internal/conf.h
 +++ b/include/internal/conf.h
 @@ -1,40 +1,10 @@
@@ -125724,16 +140847,27 @@
   */
  
  #ifndef HEADER_INTERNAL_CONF_H
+@@ -48,10 +18,10 @@ extern "C" {
+ 
+ 
+ struct ossl_init_settings_st {
+-    char *config_name;
++    char *appname;
+ };
+ 
+-void openssl_config_int(const char *config_name);
++void openssl_config_int(const char *appname);
+ void openssl_no_config_int(void);
+ void conf_modules_free_int(void);
+ 
 diff --git a/include/internal/constant_time_locl.h b/include/internal/constant_time_locl.h
-index 81411735101e..d27fb14c806d 100644
+index 8141173..d27fb14 100644
 --- a/include/internal/constant_time_locl.h
 +++ b/include/internal/constant_time_locl.h
 @@ -1,46 +1,10 @@
 -/*-
 - * Utilities for constant-time cryptography.
-+/*
-+ * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Author: Emilia Kasper (emilia at openssl.org)
 - * Based on previous work by Bodo Moeller, Emilia Kasper, Adam Langley
 - * (Google).
@@ -125769,7 +140903,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -125782,7 +140918,7 @@
  
  #ifndef HEADER_CONSTANT_TIME_LOCL_H
 diff --git a/include/internal/dane.h b/include/internal/dane.h
-index 1672849c8328..65bf24439d93 100644
+index 1672849..65bf244 100644
 --- a/include/internal/dane.h
 +++ b/include/internal/dane.h
 @@ -1,60 +1,12 @@
@@ -125841,9 +140977,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -125864,7 +140999,7 @@
  #define DANETLS_USAGE_BIT(u)   (((uint32_t)1) << u)
  
 diff --git a/include/internal/dso.h b/include/internal/dso.h
-index eeb16b12d214..d371fbe4656c 100644
+index eeb16b1..d371fbe 100644
 --- a/include/internal/dso.h
 +++ b/include/internal/dso.h
 @@ -1,59 +1,10 @@
@@ -126001,7 +141136,7 @@
 +# endif
  #endif
 diff --git a/include/internal/err.h b/include/internal/err.h
-index de2180b34bfc..d46b8bdb2925 100644
+index de2180b..d46b8bd 100644
 --- a/include/internal/err.h
 +++ b/include/internal/err.h
 @@ -1,58 +1,10 @@
@@ -126069,7 +141204,7 @@
  
  #ifndef INTERNAL_ERR_H
 diff --git a/include/internal/numbers.h b/include/internal/numbers.h
-index da06dab7a6f6..31931df3c2ff 100644
+index da06dab..31931df 100644
 --- a/include/internal/numbers.h
 +++ b/include/internal/numbers.h
 @@ -1,55 +1,10 @@
@@ -126135,7 +141270,7 @@
  
  #ifndef HEADER_NUMBERS_H
 diff --git a/include/internal/o_dir.h b/include/internal/o_dir.h
-index 427b37fee8eb..178c2ed22929 100644
+index 427b37f..178c2ed 100644
 --- a/include/internal/o_dir.h
 +++ b/include/internal/o_dir.h
 @@ -1,4 +1,13 @@
@@ -126153,7 +141288,7 @@
   * symbol names have been changed, with permission from the author.
   */
 diff --git a/include/internal/o_str.h b/include/internal/o_str.h
-index 2db348575193..86403c9ee282 100644
+index 2db3485..86403c9 100644
 --- a/include/internal/o_str.h
 +++ b/include/internal/o_str.h
 @@ -1,59 +1,10 @@
@@ -126232,7 +141367,7 @@
  #endif
 diff --git a/include/internal/threads.h b/include/internal/threads.h
 deleted file mode 100644
-index 78977281d792..000000000000
+index 7897728..0000000
 --- a/include/internal/threads.h
 +++ /dev/null
 @@ -1,92 +0,0 @@
@@ -126330,7 +141465,7 @@
 -#endif
 diff --git a/include/openssl/__DECC_INCLUDE_EPILOGUE.H b/include/openssl/__DECC_INCLUDE_EPILOGUE.H
 new file mode 100644
-index 000000000000..c350018ad190
+index 0000000..c350018
 --- /dev/null
 +++ b/include/openssl/__DECC_INCLUDE_EPILOGUE.H
 @@ -0,0 +1,16 @@
@@ -126352,7 +141487,7 @@
 +#pragma names restore
 diff --git a/include/openssl/__DECC_INCLUDE_PROLOGUE.H b/include/openssl/__DECC_INCLUDE_PROLOGUE.H
 new file mode 100644
-index 000000000000..9a9c777f93f8
+index 0000000..9a9c777
 --- /dev/null
 +++ b/include/openssl/__DECC_INCLUDE_PROLOGUE.H
 @@ -0,0 +1,20 @@
@@ -126378,7 +141513,7 @@
 +#pragma names as_is,shortened
 diff --git a/include/openssl/__decc_include_epilogue.h b/include/openssl/__decc_include_epilogue.h
 deleted file mode 100644
-index 584384f9c033..000000000000
+index 584384f..0000000
 --- a/include/openssl/__decc_include_epilogue.h
 +++ /dev/null
 @@ -1,7 +0,0 @@
@@ -126391,7 +141526,7 @@
 -#pragma names restore
 diff --git a/include/openssl/__decc_include_prologue.h b/include/openssl/__decc_include_prologue.h
 deleted file mode 100644
-index 455181cd6de3..000000000000
+index 455181c..0000000
 --- a/include/openssl/__decc_include_prologue.h
 +++ /dev/null
 @@ -1,11 +0,0 @@
@@ -126407,7 +141542,7 @@
 - */
 -#pragma names as_is,shortened
 diff --git a/include/openssl/aes.h b/include/openssl/aes.h
-index ee1254067958..245c552abd05 100644
+index ee12540..245c552 100644
 --- a/include/openssl/aes.h
 +++ b/include/openssl/aes.h
 @@ -1,51 +1,10 @@
@@ -126469,15 +141604,13 @@
  
  #ifndef HEADER_AES_H
 diff --git a/include/openssl/asn1.h b/include/openssl/asn1.h
-index 4c30a7440011..7e2f72039f48 100644
+index 4c30a74..ce221a9 100644
 --- a/include/openssl/asn1.h
 +++ b/include/openssl/asn1.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -126525,7 +141658,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -126558,6 +141693,26 @@
  typedef struct asn1_type_st {
      int type;
      union {
+@@ -594,8 +553,8 @@ int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a,
+ 
+ int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs,
+                                BIT_STRING_BITNAME *tbl, int indent);
+-int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl);
+-int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value,
++int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl);
++int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value,
+                             BIT_STRING_BITNAME *tbl);
+ 
+ DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER)
+@@ -793,7 +752,7 @@ int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent,
+                     int dump);
+ const char *ASN1_tag2str(int tag);
+ 
+-/* Used to load and write netscape format cert */
++/* Used to load and write Netscape format cert */
+ 
+ int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s);
+ 
 @@ -839,8 +798,8 @@ int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out,
  void ASN1_add_oid_module(void);
  void ASN1_add_stable_module(void);
@@ -126569,7 +141724,7 @@
  int ASN1_str2mask(const char *str, unsigned long *pmask);
  
  /* ASN1 Print flags */
-@@ -907,20 +866,19 @@ int SMIME_text(BIO *in, BIO *out);
+@@ -907,42 +866,36 @@ int SMIME_text(BIO *in, BIO *out);
   * The following lines are auto generated by the script mkerr.pl. Any changes
   * made after this point may be overwritten when the script is next run.
   */
@@ -126591,9 +141746,10 @@
  # define ASN1_F_ASN1_COLLECT                              106
  # define ASN1_F_ASN1_D2I_EX_PRIMITIVE                     108
  # define ASN1_F_ASN1_D2I_FP                               109
-@@ -928,21 +886,15 @@ void ERR_load_ASN1_strings(void);
+ # define ASN1_F_ASN1_D2I_READ_BIO                         107
  # define ASN1_F_ASN1_DIGEST                               184
  # define ASN1_F_ASN1_DO_ADB                               110
++# define ASN1_F_ASN1_DO_LOCK                              233
  # define ASN1_F_ASN1_DUP                                  111
 -# define ASN1_F_ASN1_ENUMERATED_SET                       112
 -# define ASN1_F_ASN1_ENUMERATED_TO_BN                     113
@@ -126613,7 +141769,7 @@
  # define ASN1_F_ASN1_ITEM_D2I_FP                          206
  # define ASN1_F_ASN1_ITEM_DUP                             191
  # define ASN1_F_ASN1_ITEM_EMBED_D2I                       120
-@@ -957,12 +909,8 @@ void ERR_load_ASN1_strings(void);
+@@ -957,12 +910,8 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_F_ASN1_MBSTRING_NCOPY                       122
  # define ASN1_F_ASN1_OBJECT_NEW                           123
  # define ASN1_F_ASN1_OUTPUT_DATA                          214
@@ -126626,7 +141782,7 @@
  # define ASN1_F_ASN1_SIGN                                 128
  # define ASN1_F_ASN1_STR2TYPE                             179
  # define ASN1_F_ASN1_STRING_GET_INT64                     227
-@@ -975,48 +923,27 @@ void ERR_load_ASN1_strings(void);
+@@ -975,48 +924,27 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_F_ASN1_TEMPLATE_NEW                         133
  # define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I                   131
  # define ASN1_F_ASN1_TIME_ADJ                             217
@@ -126675,7 +141831,7 @@
  # define ASN1_F_I2D_DSA_PUBKEY                            161
  # define ASN1_F_I2D_EC_PUBKEY                             181
  # define ASN1_F_I2D_PRIVATEKEY                            163
-@@ -1034,13 +961,11 @@ void ERR_load_ASN1_strings(void);
+@@ -1034,13 +962,11 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_F_SMIME_READ_ASN1                           212
  # define ASN1_F_SMIME_TEXT                                213
  # define ASN1_F_STBL_MODULE_INIT                          223
@@ -126689,7 +141845,7 @@
  # define ASN1_F_X509_PKEY_NEW                             173
  
  /* Reason codes. */
-@@ -1048,10 +973,7 @@ void ERR_load_ASN1_strings(void);
+@@ -1048,10 +974,7 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_R_ASN1_PARSE_ERROR                          203
  # define ASN1_R_ASN1_SIG_PARSE_ERROR                      204
  # define ASN1_R_AUX_ERROR                                 100
@@ -126700,7 +141856,7 @@
  # define ASN1_R_BMPSTRING_IS_WRONG_LENGTH                 214
  # define ASN1_R_BN_LIB                                    105
  # define ASN1_R_BOOLEAN_IS_WRONG_LENGTH                   106
-@@ -1060,18 +982,14 @@ void ERR_load_ASN1_strings(void);
+@@ -1060,18 +983,14 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_R_CONTEXT_NOT_INITIALISED                   217
  # define ASN1_R_DATA_IS_WRONG                             109
  # define ASN1_R_DECODE_ERROR                              110
@@ -126719,7 +141875,7 @@
  # define ASN1_R_EXPLICIT_LENGTH_MISMATCH                  119
  # define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED              120
  # define ASN1_R_FIELD_MISSING                             121
-@@ -1107,12 +1025,9 @@ void ERR_load_ASN1_strings(void);
+@@ -1107,12 +1026,9 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_R_INVALID_SCRYPT_PARAMETERS                 227
  # define ASN1_R_INVALID_SEPARATOR                         131
  # define ASN1_R_INVALID_STRING_TABLE_VALUE                218
@@ -126732,7 +141888,7 @@
  # define ASN1_R_LIST_ERROR                                188
  # define ASN1_R_MIME_NO_CONTENT_TYPE                      206
  # define ASN1_R_MIME_PARSE_ERROR                          207
-@@ -1127,7 +1042,6 @@ void ERR_load_ASN1_strings(void);
+@@ -1127,7 +1043,6 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_R_NOT_ASCII_FORMAT                          190
  # define ASN1_R_NOT_ENOUGH_DATA                           142
  # define ASN1_R_NO_CONTENT_TYPE                           209
@@ -126740,7 +141896,7 @@
  # define ASN1_R_NO_MATCHING_CHOICE_TYPE                   143
  # define ASN1_R_NO_MULTIPART_BODY_FAILURE                 210
  # define ASN1_R_NO_MULTIPART_BOUNDARY                     211
-@@ -1135,7 +1049,6 @@ void ERR_load_ASN1_strings(void);
+@@ -1135,7 +1050,6 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_R_NULL_IS_WRONG_LENGTH                      144
  # define ASN1_R_OBJECT_NOT_ASCII_FORMAT                   191
  # define ASN1_R_ODD_NUMBER_OF_CHARS                       145
@@ -126748,7 +141904,7 @@
  # define ASN1_R_SECOND_NUMBER_TOO_LARGE                   147
  # define ASN1_R_SEQUENCE_LENGTH_MISMATCH                  148
  # define ASN1_R_SEQUENCE_NOT_CONSTRUCTED                  149
-@@ -1145,7 +1058,6 @@ void ERR_load_ASN1_strings(void);
+@@ -1145,7 +1059,6 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_R_STREAMING_NOT_SUPPORTED                   202
  # define ASN1_R_STRING_TOO_LONG                           151
  # define ASN1_R_STRING_TOO_SHORT                          152
@@ -126756,7 +141912,7 @@
  # define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154
  # define ASN1_R_TIME_NOT_ASCII_FORMAT                     193
  # define ASN1_R_TOO_LARGE                                 223
-@@ -1153,8 +1065,6 @@ void ERR_load_ASN1_strings(void);
+@@ -1153,8 +1066,6 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_R_TOO_SMALL                                 224
  # define ASN1_R_TYPE_NOT_CONSTRUCTED                      156
  # define ASN1_R_TYPE_NOT_PRIMITIVE                        195
@@ -126765,7 +141921,7 @@
  # define ASN1_R_UNEXPECTED_EOC                            159
  # define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH           215
  # define ASN1_R_UNKNOWN_FORMAT                            160
-@@ -1164,16 +1074,13 @@ void ERR_load_ASN1_strings(void);
+@@ -1164,16 +1075,13 @@ void ERR_load_ASN1_strings(void);
  # define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM               199
  # define ASN1_R_UNKNOWN_TAG                               194
  # define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE           164
@@ -126786,7 +141942,7 @@
  #endif
 diff --git a/include/openssl/asn1_mac.h b/include/openssl/asn1_mac.h
 new file mode 100644
-index 000000000000..7ac1782a3f20
+index 0000000..7ac1782
 --- /dev/null
 +++ b/include/openssl/asn1_mac.h
 @@ -0,0 +1,10 @@
@@ -126801,7 +141957,7 @@
 +
 +#error "This file is obsolete; please update your software."
 diff --git a/include/openssl/asn1t.h b/include/openssl/asn1t.h
-index b680dea6dcf8..ad17babacbe8 100644
+index b680dea..ad17bab 100644
 --- a/include/openssl/asn1t.h
 +++ b/include/openssl/asn1t.h
 @@ -1,60 +1,12 @@
@@ -126860,9 +142016,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -126891,7 +142046,7 @@
  # define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
  
 diff --git a/include/openssl/async.h b/include/openssl/async.h
-index 635855f25887..160766af36dd 100644
+index 635855f..160766a 100644
 --- a/include/openssl/async.h
 +++ b/include/openssl/async.h
 @@ -1,53 +1,10 @@
@@ -126900,8 +142055,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -126923,7 +142077,8 @@
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
 - *    licensing at OpenSSL.org.
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 5. Products derived from this software may not be called "OpenSSL"
 - *    nor may "OpenSSL" appear in their names without prior written
 - *    permission of the OpenSSL Project.
@@ -126979,15 +142134,13 @@
 +# endif
  #endif
 diff --git a/include/openssl/bio.h b/include/openssl/bio.h
-index a168be085df4..4b6179f81892 100644
+index a168be0..503fbcd 100644
 --- a/include/openssl/bio.h
 +++ b/include/openssl/bio.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -127035,7 +142188,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -127073,13 +142228,19 @@
  # define BIO_set_app_data(s,arg)         BIO_set_ex_data(s,0,arg)
  # define BIO_get_app_data(s)             BIO_get_ex_data(s,0)
  
--/* IP families we support, for BIO_s_connect() and BIO_s_accept() */
--/* Note: the underlying operating system may not support some of them */
++# define BIO_set_nbio(b,n)             BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
++
++# ifndef OPENSSL_NO_SOCK
+ /* IP families we support, for BIO_s_connect() and BIO_s_accept() */
+ /* Note: the underlying operating system may not support some of them */
 -# define BIO_FAMILY_IPV4                         4
 -# define BIO_FAMILY_IPV6                         6
 -# define BIO_FAMILY_IPANY                        256
--
--/* BIO_s_connect() */
++#  define BIO_FAMILY_IPV4                         4
++#  define BIO_FAMILY_IPV6                         6
++#  define BIO_FAMILY_IPANY                        256
+ 
+ /* BIO_s_connect() */
 -# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name)
 -# define BIO_set_conn_port(b,port)     BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port)
 -# define BIO_set_conn_address(b,addr)  BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)addr)
@@ -127090,16 +142251,7 @@
 -# define BIO_get_conn_ip_family(b)     BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL)
 -# define BIO_set_conn_mode(b,n)        BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL)
 -
- # define BIO_set_nbio(b,n)             BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
- 
-+# ifndef OPENSSL_NO_SOCK
-+/* IP families we support, for BIO_s_connect() and BIO_s_accept() */
-+/* Note: the underlying operating system may not support some of them */
-+#  define BIO_FAMILY_IPV4                         4
-+#  define BIO_FAMILY_IPV6                         6
-+#  define BIO_FAMILY_IPANY                        256
-+
-+/* BIO_s_connect() */
+-# define BIO_set_nbio(b,n)             BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
 +#  define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name)
 +#  define BIO_set_conn_port(b,port)     BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port)
 +#  define BIO_set_conn_address(b,addr)  BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)addr)
@@ -127109,7 +142261,7 @@
 +#  define BIO_get_conn_address(b)       ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2,NULL))
 +#  define BIO_get_conn_ip_family(b)     BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL)
 +#  define BIO_set_conn_mode(b,n)        BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL)
-+
+ 
  /* BIO_s_accept() */
 -# define BIO_set_accept_name(b,name)   BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name)
 -# define BIO_set_accept_port(b,port)   BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(char *)port)
@@ -127155,6 +142307,21 @@
  # define BIO_do_handshake(b)     BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)
  
  /* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */
+@@ -487,11 +442,11 @@ int BIO_read_filename(BIO *b, const char *name);
+ # define BIO_get_ssl(b,sslp)     BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp)
+ # define BIO_set_ssl_mode(b,client)      BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
+ # define BIO_set_ssl_renegotiate_bytes(b,num) \
+-        BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL);
++        BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL)
+ # define BIO_get_num_renegotiates(b) \
+-        BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL);
++        BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL)
+ # define BIO_set_ssl_renegotiate_timeout(b,seconds) \
+-        BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL);
++        BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL)
+ 
+ /* defined in evp.h */
+ /* #define BIO_set_md(b,md)     BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */
 @@ -598,8 +553,7 @@ int BIO_puts(BIO *bp, const char *buf);
  int BIO_indent(BIO *b, int indent, int max);
  long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
@@ -127357,7 +142524,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/blowfish.h b/include/openssl/blowfish.h
-index 5e0af533cf0a..cd3e460e98f3 100644
+index 5e0af53..cd3e460 100644
 --- a/include/openssl/blowfish.h
 +++ b/include/openssl/blowfish.h
 @@ -1,58 +1,10 @@
@@ -127426,7 +142593,7 @@
  
  #ifndef HEADER_BLOWFISH_H
 diff --git a/include/openssl/bn.h b/include/openssl/bn.h
-index d4aef3773c13..e0f656a67b34 100644
+index d4aef37..e0f656a 100644
 --- a/include/openssl/bn.h
 +++ b/include/openssl/bn.h
 @@ -1,112 +1,12 @@
@@ -127587,15 +142754,13 @@
 +# endif
  #endif
 diff --git a/include/openssl/buffer.h b/include/openssl/buffer.h
-index f5b46dd71a27..88409fd9eb9f 100644
+index f5b46dd..88409fd 100644
 --- a/include/openssl/buffer.h
 +++ b/include/openssl/buffer.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -127643,7 +142808,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -127674,7 +142841,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/camellia.h b/include/openssl/camellia.h
-index d05b39254908..151f3c134917 100644
+index d05b392..151f3c1 100644
 --- a/include/openssl/camellia.h
 +++ b/include/openssl/camellia.h
 @@ -1,51 +1,10 @@
@@ -127736,7 +142903,7 @@
  
  #ifndef HEADER_CAMELLIA_H
 diff --git a/include/openssl/cast.h b/include/openssl/cast.h
-index c54d3c9219d6..2cc89ae0133c 100644
+index c54d3c9..2cc89ae 100644
 --- a/include/openssl/cast.h
 +++ b/include/openssl/cast.h
 @@ -1,58 +1,10 @@
@@ -127805,7 +142972,7 @@
  
  #ifndef HEADER_CAST_H
 diff --git a/include/openssl/cmac.h b/include/openssl/cmac.h
-index a621923eb0a7..3535a9abf751 100644
+index a621923..3535a9a 100644
 --- a/include/openssl/cmac.h
 +++ b/include/openssl/cmac.h
 @@ -1,59 +1,17 @@
@@ -127815,8 +142982,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2010 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -127833,7 +142999,8 @@
 - *    software must display the following acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
@@ -127883,7 +143050,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/cms.h b/include/openssl/cms.h
-index 5ae701e5859a..57c877de9869 100644
+index 5ae701e..b1252ac 100644
 --- a/include/openssl/cms.h
 +++ b/include/openssl/cms.h
 @@ -1,54 +1,10 @@
@@ -127893,8 +143060,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -127916,7 +143082,8 @@
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
 - *    licensing at OpenSSL.org.
-- *
++ * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 5. Products derived from this software may not be called "OpenSSL"
 - *    nor may "OpenSSL" appear in their names without prior written
 - *    permission of the OpenSSL Project.
@@ -127946,6 +143113,15 @@
   */
  
  #ifndef HEADER_CMS_H
+@@ -117,7 +73,7 @@ DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo)
+ # define CMS_KEY_PARAM                   0x40000
+ # define CMS_ASCIICRLF                   0x80000
+ 
+-const ASN1_OBJECT *CMS_get0_type(CMS_ContentInfo *cms);
++const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms);
+ 
+ BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont);
+ int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio);
 @@ -378,6 +334,7 @@ int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg,
   * The following lines are auto generated by the script mkerr.pl. Any changes
   * made after this point may be overwritten when the script is next run.
@@ -127975,7 +143151,7 @@
 -
  #endif
 diff --git a/include/openssl/comp.h b/include/openssl/comp.h
-index d2537f8d560b..520d709a6f78 100644
+index d2537f8..520d709 100644
 --- a/include/openssl/comp.h
 +++ b/include/openssl/comp.h
 @@ -1,58 +1,12 @@
@@ -128064,15 +143240,13 @@
 -
  #endif
 diff --git a/include/openssl/conf.h b/include/openssl/conf.h
-index 5f7f54707aa3..147d27bb2a9d 100644
+index 5f7f547..147d27b 100644
 --- a/include/openssl/conf.h
 +++ b/include/openssl/conf.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -128120,7 +143294,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -128177,7 +143353,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/conf_api.h b/include/openssl/conf_api.h
-index fd6f32e16d9a..a0275ad79bc4 100644
+index fd6f32e..a0275ad 100644
 --- a/include/openssl/conf_api.h
 +++ b/include/openssl/conf_api.h
 @@ -1,58 +1,10 @@
@@ -128246,7 +143422,7 @@
  
  #ifndef  HEADER_CONF_API_H
 diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h
-index 968b1b39281a..c4b31d92f32b 100644
+index 968b1b3..2e056c5 100644
 --- a/include/openssl/crypto.h
 +++ b/include/openssl/crypto.h
 @@ -1,112 +1,12 @@
@@ -128301,14 +143477,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
-+ * Licensed under the OpenSSL license (the "License").  You may not use
-+ * this file except in compliance with the License.  You can obtain a copy
-+ * in the file LICENSE in the source distribution or at
-+ * https://www.openssl.org/source/license.html
-  */
+- *
+- */
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
 - *
@@ -128359,12 +143529,18 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
 - * [including the GNU Public Licence.]
-- */
++ * Licensed under the OpenSSL license (the "License").  You may not use
++ * this file except in compliance with the License.  You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
+  */
 +
  /* ====================================================================
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
@@ -128388,7 +143564,7 @@
  void *CRYPTO_secure_malloc(size_t num, const char *file, int line);
  void *CRYPTO_secure_zalloc(size_t num, const char *file, int line);
  void CRYPTO_secure_free(void *ptr, const char *file, int line);
-@@ -409,14 +306,14 @@ void CRYPTO_mem_debug_free(void *addr, int flag,
+@@ -409,19 +306,17 @@ void CRYPTO_mem_debug_free(void *addr, int flag,
  #  ifndef OPENSSL_NO_STDIO
  int CRYPTO_mem_leaks_fp(FILE *);
  #  endif
@@ -128405,14 +143581,19 @@
  # define OPENSSL_assert(e) \
      (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
  
-@@ -483,16 +380,50 @@ void OPENSSL_thread_stop(void);
+-unsigned int *OPENSSL_ia32cap_loc(void);
+-# define OPENSSL_ia32cap ((OPENSSL_ia32cap_loc())[0])
+ int OPENSSL_isservice(void);
+ 
+ int FIPS_mode(void);
+@@ -483,16 +378,50 @@ void OPENSSL_thread_stop(void);
  /* Low-level control of initialization */
  OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void);
  #ifndef OPENSSL_NO_STDIO
 -void OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
 -                                      const char *config_file);
-+int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
-+                                     const char *config_file);
++int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings,
++                                    const char *config_file);
  #endif
  void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings);
  
@@ -128458,7 +143639,7 @@
  void ERR_load_CRYPTO_strings(void);
  
  /* Error codes for the CRYPTO functions. */
-@@ -501,29 +432,21 @@ void ERR_load_CRYPTO_strings(void);
+@@ -501,29 +430,21 @@ void ERR_load_CRYPTO_strings(void);
  # define CRYPTO_F_CRYPTO_DUP_EX_DATA                      110
  # define CRYPTO_F_CRYPTO_FREE_EX_DATA                     111
  # define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX                 100
@@ -128492,7 +143673,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/ct.h b/include/openssl/ct.h
-index f12ca92f0df2..f9586dc8a54d 100644
+index f12ca92..f9586dc 100644
 --- a/include/openssl/ct.h
 +++ b/include/openssl/ct.h
 @@ -1,55 +1,11 @@
@@ -128665,15 +143846,13 @@
 -
  #endif
 diff --git a/include/openssl/des.h b/include/openssl/des.h
-index 633d070b3962..be4abbdfd0e6 100644
+index 633d070..be4abbd 100644
 --- a/include/openssl/des.h
 +++ b/include/openssl/des.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1997 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -128721,7 +143900,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -128767,15 +143948,13 @@
  
  # ifdef  __cplusplus
 diff --git a/include/openssl/dh.h b/include/openssl/dh.h
-index d78bac9c4354..2eb596d2bab8 100644
+index d78bac9..a574e18 100644
 --- a/include/openssl/dh.h
 +++ b/include/openssl/dh.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -128823,7 +144002,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -128856,7 +144037,21 @@
   * result is compliant.
   */
  
-@@ -335,6 +293,7 @@ int DH_meth_set_generate_params(DH_METHOD *dhm,
+@@ -193,9 +151,11 @@ int DH_KDF_X9_42(unsigned char *out, size_t outlen,
+                  const unsigned char *ukm, size_t ukmlen, const EVP_MD *md);
+ # endif
+ 
+-void DH_get0_pqg(const DH *dh, BIGNUM **p, BIGNUM **q, BIGNUM **g);
++void DH_get0_pqg(const DH *dh,
++                 const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
+ int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
+-void DH_get0_key(const DH *dh, BIGNUM **pub_key, BIGNUM **priv_key);
++void DH_get0_key(const DH *dh,
++                 const BIGNUM **pub_key, const BIGNUM **priv_key);
+ int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key);
+ void DH_clear_flags(DH *dh, int flags);
+ int DH_test_flags(const DH *dh, int flags);
+@@ -335,6 +295,7 @@ int DH_meth_set_generate_params(DH_METHOD *dhm,
   * The following lines are auto generated by the script mkerr.pl. Any changes
   * made after this point may be overwritten when the script is next run.
   */
@@ -128864,7 +144059,7 @@
  void ERR_load_DH_strings(void);
  
  /* Error codes for the DH functions. */
-@@ -346,6 +305,9 @@ void ERR_load_DH_strings(void);
+@@ -346,6 +307,9 @@ void ERR_load_DH_strings(void);
  # define DH_F_DH_CMS_DECRYPT                              114
  # define DH_F_DH_CMS_SET_PEERKEY                          115
  # define DH_F_DH_CMS_SET_SHARED_INFO                      116
@@ -128874,7 +144069,7 @@
  # define DH_F_DH_NEW_METHOD                               105
  # define DH_F_DH_PARAM_DECODE                             107
  # define DH_F_DH_PRIV_DECODE                              110
-@@ -354,7 +316,6 @@ void ERR_load_DH_strings(void);
+@@ -354,7 +318,6 @@ void ERR_load_DH_strings(void);
  # define DH_F_DH_PUB_ENCODE                               109
  # define DH_F_DO_DH_PRINT                                 100
  # define DH_F_GENERATE_KEY                                103
@@ -128882,7 +144077,7 @@
  # define DH_F_PKEY_DH_DERIVE                              112
  # define DH_F_PKEY_DH_KEYGEN                              113
  
-@@ -366,7 +327,6 @@ void ERR_load_DH_strings(void);
+@@ -366,7 +329,6 @@ void ERR_load_DH_strings(void);
  # define DH_R_INVALID_PUBKEY                              102
  # define DH_R_KDF_PARAMETER_ERROR                         112
  # define DH_R_KEYS_NOT_SET                                108
@@ -128890,7 +144085,7 @@
  # define DH_R_MODULUS_TOO_LARGE                           103
  # define DH_R_NO_PARAMETERS_SET                           107
  # define DH_R_NO_PRIVATE_VALUE                            100
-@@ -374,9 +334,8 @@ void ERR_load_DH_strings(void);
+@@ -374,9 +336,8 @@ void ERR_load_DH_strings(void);
  # define DH_R_PEER_KEY_ERROR                              111
  # define DH_R_SHARED_INFO_ERROR                           113
  
@@ -128903,15 +144098,13 @@
 -
  #endif
 diff --git a/include/openssl/dsa.h b/include/openssl/dsa.h
-index 1b045842e006..48d2b56ee9a3 100644
+index 1b04584..3b1e1a6 100644
 --- a/include/openssl/dsa.h
 +++ b/include/openssl/dsa.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -128959,7 +144152,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -128994,7 +144189,56 @@
   * result is compliant.
   */
  
-@@ -276,20 +228,21 @@ int DSA_meth_set_keygen(DSA_METHOD *dsam, int (*keygen) (DSA *));
+@@ -129,7 +81,8 @@ DSA_SIG *DSA_SIG_new(void);
+ void DSA_SIG_free(DSA_SIG *a);
+ int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp);
+ DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length);
+-void DSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, const DSA_SIG *sig);
++void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps);
++int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s);
+ 
+ DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa);
+ int DSA_do_verify(const unsigned char *dgst, int dgst_len,
+@@ -216,9 +169,11 @@ DH *DSA_dup_DH(const DSA *r);
+ # define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS       (EVP_PKEY_ALG_CTRL + 2)
+ # define EVP_PKEY_CTRL_DSA_PARAMGEN_MD           (EVP_PKEY_ALG_CTRL + 3)
+ 
+-void DSA_get0_pqg(const DSA *d, BIGNUM **p, BIGNUM **q, BIGNUM **g);
++void DSA_get0_pqg(const DSA *d,
++                  const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
+ int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g);
+-void DSA_get0_key(const DSA *d, BIGNUM **pub_key, BIGNUM **priv_key);
++void DSA_get0_key(const DSA *d,
++                  const BIGNUM **pub_key, const BIGNUM **priv_key);
+ int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key);
+ void DSA_clear_flags(DSA *d, int flags);
+ int DSA_test_flags(const DSA *d, int flags);
+@@ -247,16 +202,17 @@ int (*DSA_meth_get_verify(const DSA_METHOD *dsam))
+ int DSA_meth_set_verify(DSA_METHOD *dsam,
+     int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *));
+ int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam))
+-        (DSA *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *,
+-         BN_CTX *, BN_MONT_CTX *);
++        (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *,
++         const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *);
+ int DSA_meth_set_mod_exp(DSA_METHOD *dsam,
+-    int (*mod_exp) (DSA *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *,
+-                    BIGNUM *, BN_CTX *, BN_MONT_CTX *));
++    int (*mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *,
++                    const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *,
++                    BN_MONT_CTX *));
+ int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam))
+-    (DSA *, BIGNUM *, BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *,
+-     BN_MONT_CTX *);
++    (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *,
++     BN_CTX *, BN_MONT_CTX *);
+ int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam,
+-    int (*bn_mod_exp) (DSA *, BIGNUM *, BIGNUM *, const BIGNUM *,
++    int (*bn_mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *,
+                        const BIGNUM *, BN_CTX *, BN_MONT_CTX *));
+ int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *);
+ int DSA_meth_set_init(DSA_METHOD *dsam, int (*init)(DSA *));
+@@ -276,20 +232,21 @@ int DSA_meth_set_keygen(DSA_METHOD *dsam, int (*keygen) (DSA *));
   * The following lines are auto generated by the script mkerr.pl. Any changes
   * made after this point may be overwritten when the script is next run.
   */
@@ -129019,7 +144263,7 @@
  # define DSA_F_DSA_NEW_METHOD                             103
  # define DSA_F_DSA_PARAM_DECODE                           119
  # define DSA_F_DSA_PRINT_FP                               105
-@@ -299,34 +252,25 @@ void ERR_load_DSA_strings(void);
+@@ -299,34 +256,25 @@ void ERR_load_DSA_strings(void);
  # define DSA_F_DSA_PUB_ENCODE                             118
  # define DSA_F_DSA_SIGN                                   106
  # define DSA_F_DSA_SIGN_SETUP                             107
@@ -129057,7 +144301,7 @@
 -
  #endif
 diff --git a/include/openssl/dtls1.h b/include/openssl/dtls1.h
-index 16df65211b36..f4769f83fe65 100644
+index 16df652..f4769f8 100644
 --- a/include/openssl/dtls1.h
 +++ b/include/openssl/dtls1.h
 @@ -1,59 +1,10 @@
@@ -129126,7 +144370,7 @@
  
  #ifndef HEADER_DTLS1_H
 diff --git a/include/openssl/e_os2.h b/include/openssl/e_os2.h
-index bbd6116f860c..198ebdfc8858 100644
+index bbd6116..99ea347 100644
 --- a/include/openssl/e_os2.h
 +++ b/include/openssl/e_os2.h
 @@ -1,55 +1,10 @@
@@ -129204,6 +144448,15 @@
  # endif
  
  # ifdef DEBUG_UNUSED
+@@ -286,7 +245,7 @@ typedef UINT64 uint64_t;
+ #  define PRIu64 "%Lu"
+ # elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
+      defined(__osf__) || defined(__sgi) || defined(__hpux) || \
+-     defined(OPENSSL_SYS_VMS)
++     defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__)
+ #  include <inttypes.h>
+ # elif defined(_MSC_VER) && _MSC_VER<=1500
+ /*
 @@ -338,6 +297,14 @@ typedef unsigned __int64 uint64_t;
  #  define ossl_inline inline
  # endif
@@ -129220,7 +144473,7 @@
  }
  #endif
 diff --git a/include/openssl/ebcdic.h b/include/openssl/ebcdic.h
-index e75b60923f3c..aa0128559992 100644
+index e75b609..aa01285 100644
 --- a/include/openssl/ebcdic.h
 +++ b/include/openssl/ebcdic.h
 @@ -1,8 +1,16 @@
@@ -129242,7 +144495,7 @@
  #ifdef  __cplusplus
  extern "C" {
 diff --git a/include/openssl/ec.h b/include/openssl/ec.h
-index 892239dd87f9..9c74053c0b18 100644
+index 892239d..0e50296 100644
 --- a/include/openssl/ec.h
 +++ b/include/openssl/ec.h
 @@ -1,59 +1,12 @@
@@ -129300,9 +144553,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -129312,8 +144564,36 @@
  /* ====================================================================
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   *
-@@ -241,7 +194,7 @@ int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx);
+@@ -127,7 +80,6 @@ const EC_METHOD *EC_GFp_mont_method(void);
+ const EC_METHOD *EC_GFp_nist_method(void);
  
+ # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
+-#  ifndef OPENSSL_SYS_WIN32
+ /** Returns 64-bit optimized methods for nistp224
+  *  \return  EC_METHOD object
+  */
+@@ -142,7 +94,6 @@ const EC_METHOD *EC_GFp_nistp256_method(void);
+  *  \return  EC_METHOD object
+  */
+ const EC_METHOD *EC_GFp_nistp521_method(void);
+-#  endif
+ # endif
+ 
+ # ifndef OPENSSL_NO_EC2M
+@@ -222,7 +173,7 @@ const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group);
+ 
+ /** Returns the montgomery data for order(Generator)
+  *  \param  group  EC_GROUP object
+- *  \return the currently used generator (possibly NULL).
++ *  \return the currently used montgomery data (possibly NULL).
+ */
+ BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group);
+ 
+@@ -238,14 +189,12 @@ int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx);
+  *  \param  group  EC_GROUP object
+  *  \return the group order
+  */
+-
  const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group);
  
 -/** Gets the number of bits of ther order of an EC_GROUP
@@ -129321,8 +144601,29 @@
   *  \param  group  EC_GROUP object
   *  \return number of bits of group order.
   */
-@@ -438,7 +391,7 @@ typedef struct {
+-
+ int EC_GROUP_order_bits(const EC_GROUP *group);
  
+ /** Gets the cofactor of a EC_GROUP
+@@ -261,7 +210,6 @@ int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor,
+  *  \param  group  EC_GROUP object
+  *  \return the group cofactor
+  */
+-
+ const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group);
+ 
+ /** Sets the name of a EC_GROUP object
+@@ -356,7 +304,7 @@ int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx);
+  *  \param  a    first EC_GROUP object
+  *  \param  b    second EC_GROUP object
+  *  \param  ctx  BN_CTX object (optional)
+- *  \return 0 if both groups are equal and 1 otherwise
++ *  \return 0 if the groups are equal, 1 if not, or -1 on error
+  */
+ int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx);
+ 
+@@ -438,7 +386,7 @@ typedef struct {
+ 
  /*
   * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all
 - * available curves or zero if a error occurred. In case r ist not zero
@@ -129330,8 +144631,31 @@
   * nitems EC_builtin_curve structures are filled with the data of the first
   * nitems internal groups
   */
-@@ -711,7 +664,7 @@ int EC_POINTs_make_affine(const EC_GROUP *group, size_t num,
+@@ -688,7 +636,7 @@ int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p);
   *  \param  group  underlying EC_GROUP object
+  *  \param  point  EC_POINT object to check
+  *  \param  ctx    BN_CTX object (optional)
+- *  \return 1 if point if on the curve and 0 otherwise
++ *  \return 1 if the point is on the curve, 0 if not, or -1 on error
+  */
+ int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
+                          BN_CTX *ctx);
+@@ -698,7 +646,7 @@ int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
+  *  \param  a      first EC_POINT object
+  *  \param  b      second EC_POINT object
+  *  \param  ctx    BN_CTX object (optional)
+- *  \return 0 if both points are equal and a value != 0 otherwise
++ *  \return 1 if the points are not equal, 0 if they are, or -1 on error
+  */
+ int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b,
+                  BN_CTX *ctx);
+@@ -707,11 +655,11 @@ int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx);
+ int EC_POINTs_make_affine(const EC_GROUP *group, size_t num,
+                           EC_POINT *points[], BN_CTX *ctx);
+ 
+-/** Computes r = generator * n sum_{i=0}^{num-1} p[i] * m[i]
++/** Computes r = generator * n + sum_{i=0}^{num-1} p[i] * m[i]
+  *  \param  group  underlying EC_GROUP object
   *  \param  r      EC_POINT object for the result
   *  \param  n      BIGNUM with the multiplier for the group generator (optional)
 - *  \param  num    number futher summands
@@ -129339,7 +144663,7 @@
   *  \param  p      array of size num of EC_POINT objects
   *  \param  m      array of size num of BIGNUM objects
   *  \param  ctx    BN_CTX object (optional)
-@@ -918,7 +871,7 @@ int EC_KEY_check_key(const EC_KEY *key);
+@@ -918,7 +866,7 @@ int EC_KEY_check_key(const EC_KEY *key);
   */
  int EC_KEY_can_sign(const EC_KEY *eckey);
  
@@ -129348,7 +144672,23 @@
   *  necessary NIST PKV tests.
   *  \param  key  the EC_KEY object
   *  \param  x    public key x coordinate
-@@ -1142,7 +1095,7 @@ ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len,
+@@ -1125,7 +1073,14 @@ ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len);
+  *  \param  pr   pointer to BIGNUM pointer for r (may be NULL)
+  *  \param  ps   pointer to BIGNUM pointer for s (may be NULL)
+  */
+-void ECDSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, const ECDSA_SIG *sig);
++void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps);
++
++/** Setter for r and s fields of ECDSA_SIG
++ *  \param  sig  pointer to ECDSA_SIG pointer
++ *  \param  r    pointer to BIGNUM for r (may be NULL)
++ *  \param  s    pointer to BIGNUM for s (may be NULL)
++ */
++int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s);
+ 
+ /** Computes the ECDSA signature of the given hash value using
+  *  the supplied private key and returns the created signature.
+@@ -1142,7 +1097,7 @@ ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len,
   *  \param  dgst     pointer to the hash value to sign
   *  \param  dgstlen  length of the hash value
   *  \param  kinv     BIGNUM with a pre-computed inverse k (optional)
@@ -129357,7 +144697,7 @@
   *                   see ECDSA_sign_setup
   *  \param  eckey    EC_KEY object containing a private EC key
   *  \return pointer to a ECDSA_SIG structure or NULL if an error occurred
-@@ -1193,7 +1146,7 @@ int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen,
+@@ -1193,7 +1148,7 @@ int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen,
   *  \param  sig      buffer to hold the DER encoded signature
   *  \param  siglen   pointer to the length of the returned signature
   *  \param  kinv     BIGNUM with a pre-computed inverse k (optional)
@@ -129366,7 +144706,7 @@
   *                   see ECDSA_sign_setup
   *  \param  eckey    EC_KEY object containing a private EC key
   *  \return 1 on success and 0 otherwise
-@@ -1404,13 +1357,13 @@ void EC_KEY_METHOD_get_verify(EC_KEY_METHOD *meth,
+@@ -1404,13 +1359,13 @@ void EC_KEY_METHOD_get_verify(EC_KEY_METHOD *meth,
   * The following lines are auto generated by the script mkerr.pl. Any changes
   * made after this point may be overwritten when the script is next run.
   */
@@ -129381,7 +144721,7 @@
  # define EC_F_D2I_ECPARAMETERS                            144
  # define EC_F_D2I_ECPKPARAMETERS                          145
  # define EC_F_D2I_ECPRIVATEKEY                            146
-@@ -1440,17 +1393,8 @@ void ERR_load_EC_strings(void);
+@@ -1440,17 +1395,8 @@ void ERR_load_EC_strings(void);
  # define EC_F_ECP_NISTZ256_POINTS_MUL                     241
  # define EC_F_ECP_NISTZ256_PRE_COMP_NEW                   244
  # define EC_F_ECP_NISTZ256_WINDOWED_MUL                   242
@@ -129399,7 +144739,7 @@
  # define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY           208
  # define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT     159
  # define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE              195
-@@ -1465,7 +1409,6 @@ void ERR_load_EC_strings(void);
+@@ -1465,7 +1411,6 @@ void ERR_load_EC_strings(void);
  # define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE                209
  # define EC_F_EC_GFP_MONT_FIELD_SQR                       132
  # define EC_F_EC_GFP_MONT_GROUP_SET_CURVE                 189
@@ -129407,7 +144747,7 @@
  # define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE             225
  # define EC_F_EC_GFP_NISTP224_POINTS_MUL                  228
  # define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226
-@@ -1480,29 +1423,21 @@ void ERR_load_EC_strings(void);
+@@ -1480,29 +1425,21 @@ void ERR_load_EC_strings(void);
  # define EC_F_EC_GFP_NIST_GROUP_SET_CURVE                 202
  # define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT      165
  # define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE               166
@@ -129437,7 +144777,7 @@
  # define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS              193
  # define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS                194
  # define EC_F_EC_GROUP_NEW                                108
-@@ -1510,10 +1445,8 @@ void ERR_load_EC_strings(void);
+@@ -1510,10 +1447,8 @@ void ERR_load_EC_strings(void);
  # define EC_F_EC_GROUP_NEW_FROM_DATA                      175
  # define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS              263
  # define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS            264
@@ -129448,7 +144788,7 @@
  # define EC_F_EC_GROUP_SET_GENERATOR                      111
  # define EC_F_EC_KEY_CHECK_KEY                            177
  # define EC_F_EC_KEY_COPY                                 178
-@@ -1540,7 +1473,6 @@ void ERR_load_EC_strings(void);
+@@ -1540,7 +1475,6 @@ void ERR_load_EC_strings(void);
  # define EC_F_EC_POINT_IS_AT_INFINITY                     118
  # define EC_F_EC_POINT_IS_ON_CURVE                        119
  # define EC_F_EC_POINT_MAKE_AFFINE                        120
@@ -129456,7 +144796,7 @@
  # define EC_F_EC_POINT_NEW                                121
  # define EC_F_EC_POINT_OCT2POINT                          122
  # define EC_F_EC_POINT_POINT2OCT                          123
-@@ -1550,7 +1482,6 @@ void ERR_load_EC_strings(void);
+@@ -1550,7 +1484,6 @@ void ERR_load_EC_strings(void);
  # define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP     125
  # define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP    126
  # define EC_F_EC_POINT_SET_TO_INFINITY                    127
@@ -129464,7 +144804,7 @@
  # define EC_F_EC_PRE_COMP_NEW                             196
  # define EC_F_EC_WNAF_MUL                                 187
  # define EC_F_EC_WNAF_PRECOMPUTE_MULT                     188
-@@ -1575,7 +1506,6 @@ void ERR_load_EC_strings(void);
+@@ -1575,7 +1508,6 @@ void ERR_load_EC_strings(void);
  
  /* Reason codes. */
  # define EC_R_ASN1_ERROR                                  115
@@ -129472,7 +144812,7 @@
  # define EC_R_BAD_SIGNATURE                               156
  # define EC_R_BIGNUM_OUT_OF_RANGE                         144
  # define EC_R_BUFFER_TOO_SMALL                            100
-@@ -1605,17 +1535,14 @@ void ERR_load_EC_strings(void);
+@@ -1605,17 +1537,14 @@ void ERR_load_EC_strings(void);
  # define EC_R_INVALID_PENTANOMIAL_BASIS                   132
  # define EC_R_INVALID_PRIVATE_KEY                         123
  # define EC_R_INVALID_TRINOMIAL_BASIS                     137
@@ -129490,7 +144830,7 @@
  # define EC_R_NO_PARAMETERS_SET                           139
  # define EC_R_NO_PRIVATE_VALUE                            154
  # define EC_R_OPERATION_NOT_SUPPORTED                     152
-@@ -1636,9 +1563,8 @@ void ERR_load_EC_strings(void);
+@@ -1636,9 +1565,8 @@ void ERR_load_EC_strings(void);
  # define EC_R_WRONG_CURVE_PARAMETERS                      145
  # define EC_R_WRONG_ORDER                                 130
  
@@ -129503,7 +144843,7 @@
 -
  #endif
 diff --git a/include/openssl/ecdh.h b/include/openssl/ecdh.h
-index 6a4a7b1676f9..681f3d5e5574 100644
+index 6a4a7b1..681f3d5 100644
 --- a/include/openssl/ecdh.h
 +++ b/include/openssl/ecdh.h
 @@ -1 +1,10 @@
@@ -129518,7 +144858,7 @@
 +
  #include <openssl/ec.h>
 diff --git a/include/openssl/ecdsa.h b/include/openssl/ecdsa.h
-index 6a4a7b1676f9..681f3d5e5574 100644
+index 6a4a7b1..681f3d5 100644
 --- a/include/openssl/ecdsa.h
 +++ b/include/openssl/ecdsa.h
 @@ -1 +1,10 @@
@@ -129533,7 +144873,7 @@
 +
  #include <openssl/ec.h>
 diff --git a/include/openssl/engine.h b/include/openssl/engine.h
-index 3123ad3a1f5e..e9d3ab244a03 100644
+index 3123ad3..e9d3ab2 100644
 --- a/include/openssl/engine.h
 +++ b/include/openssl/engine.h
 @@ -1,60 +1,12 @@
@@ -129592,9 +144932,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -129678,7 +145017,7 @@
 -
  #endif
 diff --git a/include/openssl/err.h b/include/openssl/err.h
-index ccf2ff72deb3..b019d0e3bb6b 100644
+index ccf2ff7..b019d0e 100644
 --- a/include/openssl/err.h
 +++ b/include/openssl/err.h
 @@ -1,111 +1,10 @@
@@ -129856,15 +145195,13 @@
  
  LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void);
 diff --git a/include/openssl/evp.h b/include/openssl/evp.h
-index 250730f4a022..796f4ccb3cdc 100644
+index 250730f..207d772 100644
 --- a/include/openssl/evp.h
 +++ b/include/openssl/evp.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -129912,7 +145249,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -129924,7 +145263,26 @@
   */
  
  #ifndef HEADER_ENVELOPE_H
-@@ -976,7 +928,7 @@ struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
+@@ -658,8 +610,8 @@ EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void);
+ void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx);
+ int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx);
+ void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
+-void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
+-                      const unsigned char *in, int inl);
++int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
++                     const unsigned char *in, int inl);
+ void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl);
+ int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
+ 
+@@ -949,6 +901,7 @@ int EVP_PKEY_set_type(EVP_PKEY *pkey, int type);
+ int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len);
+ int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key);
+ void *EVP_PKEY_get0(const EVP_PKEY *pkey);
++const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len);
+ 
+ # ifndef OPENSSL_NO_RSA
+ struct rsa_st;
+@@ -976,7 +929,7 @@ struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
  # endif
  
  EVP_PKEY *EVP_PKEY_new(void);
@@ -129933,7 +145291,7 @@
  void EVP_PKEY_free(EVP_PKEY *pkey);
  
  EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
-@@ -1486,28 +1438,20 @@ void EVP_add_alg_module(void);
+@@ -1486,28 +1439,20 @@ void EVP_add_alg_module(void);
   * The following lines are auto generated by the script mkerr.pl. Any changes
   * made after this point may be overwritten when the script is next run.
   */
@@ -129963,15 +145321,17 @@
  # define EVP_F_EVP_CIPHERINIT_EX                          123
  # define EVP_F_EVP_CIPHER_CTX_COPY                        163
  # define EVP_F_EVP_CIPHER_CTX_CTRL                        124
-@@ -1539,7 +1483,6 @@ void ERR_load_EVP_strings(void);
+@@ -1539,8 +1484,8 @@ void ERR_load_EVP_strings(void);
  # define EVP_F_EVP_PKEY_ENCRYPT_OLD                       152
  # define EVP_F_EVP_PKEY_GET0_DH                           119
  # define EVP_F_EVP_PKEY_GET0_DSA                          120
 -# define EVP_F_EVP_PKEY_GET0_ECDSA                        130
  # define EVP_F_EVP_PKEY_GET0_EC_KEY                       131
++# define EVP_F_EVP_PKEY_GET0_HMAC                         183
  # define EVP_F_EVP_PKEY_GET0_RSA                          121
  # define EVP_F_EVP_PKEY_KEYGEN                            146
-@@ -1553,35 +1496,20 @@ void ERR_load_EVP_strings(void);
+ # define EVP_F_EVP_PKEY_KEYGEN_INIT                       147
+@@ -1553,35 +1498,20 @@ void ERR_load_EVP_strings(void);
  # define EVP_F_EVP_PKEY_VERIFY_INIT                       143
  # define EVP_F_EVP_PKEY_VERIFY_RECOVER                    144
  # define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT               145
@@ -130007,7 +145367,7 @@
  # define EVP_R_BUFFER_TOO_SMALL                           155
  # define EVP_R_CAMELLIA_KEY_SETUP_FAILED                  157
  # define EVP_R_CIPHER_PARAMETER_ERROR                     122
-@@ -1593,15 +1521,11 @@ void ERR_load_EVP_strings(void);
+@@ -1593,15 +1523,12 @@ void ERR_load_EVP_strings(void);
  # define EVP_R_DECODE_ERROR                               114
  # define EVP_R_DIFFERENT_KEY_TYPES                        101
  # define EVP_R_DIFFERENT_PARAMETERS                       153
@@ -130016,6 +145376,7 @@
  # define EVP_R_ERROR_LOADING_SECTION                      165
  # define EVP_R_ERROR_SETTING_FIPS_MODE                    166
 -# define EVP_R_EVP_PBE_CIPHERINIT_ERROR                   119
++# define EVP_R_EXPECTING_AN_HMAC_KEY                      174
  # define EVP_R_EXPECTING_AN_RSA_KEY                       127
  # define EVP_R_EXPECTING_A_DH_KEY                         128
  # define EVP_R_EXPECTING_A_DSA_KEY                        129
@@ -130023,7 +145384,7 @@
  # define EVP_R_EXPECTING_A_EC_KEY                         142
  # define EVP_R_FIPS_MODE_NOT_SUPPORTED                    167
  # define EVP_R_ILLEGAL_SCRYPT_PARAMETERS                  171
-@@ -1611,7 +1535,6 @@ void ERR_load_EVP_strings(void);
+@@ -1611,7 +1538,6 @@ void ERR_load_EVP_strings(void);
  # define EVP_R_INVALID_FIPS_MODE                          168
  # define EVP_R_INVALID_KEY_LENGTH                         130
  # define EVP_R_INVALID_OPERATION                          148
@@ -130031,7 +145392,7 @@
  # define EVP_R_KEYGEN_FAILURE                             120
  # define EVP_R_MEMORY_LIMIT_EXCEEDED                      172
  # define EVP_R_MESSAGE_DIGEST_IS_NULL                     159
-@@ -1620,18 +1543,13 @@ void ERR_load_EVP_strings(void);
+@@ -1620,18 +1546,13 @@ void ERR_load_EVP_strings(void);
  # define EVP_R_NO_CIPHER_SET                              131
  # define EVP_R_NO_DEFAULT_DIGEST                          158
  # define EVP_R_NO_DIGEST_SET                              139
@@ -130050,7 +145411,7 @@
  # define EVP_R_UNKNOWN_CIPHER                             160
  # define EVP_R_UNKNOWN_DIGEST                             161
  # define EVP_R_UNKNOWN_OPTION                             169
-@@ -1647,9 +1565,8 @@ void ERR_load_EVP_strings(void);
+@@ -1647,9 +1568,8 @@ void ERR_load_EVP_strings(void);
  # define EVP_R_UNSUPPORTED_SALT_TYPE                      126
  # define EVP_R_WRAP_MODE_NOT_ALLOWED                      170
  # define EVP_R_WRONG_FINAL_BLOCK_LENGTH                   109
@@ -130063,7 +145424,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/hmac.h b/include/openssl/hmac.h
-index 71d7d6591623..809ca34227ad 100644
+index 71d7d65..9f06896 100644
 --- a/include/openssl/hmac.h
 +++ b/include/openssl/hmac.h
 @@ -1,59 +1,12 @@
@@ -130142,8 +145503,16 @@
  HMAC_CTX *HMAC_CTX_new(void);
  int HMAC_CTX_reset(HMAC_CTX *ctx);
  void HMAC_CTX_free(HMAC_CTX *ctx);
+@@ -87,6 +40,7 @@ unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
+ __owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx);
+ 
+ void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags);
++const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx);
+ 
+ #ifdef  __cplusplus
+ }
 diff --git a/include/openssl/idea.h b/include/openssl/idea.h
-index 65e0b44de503..d527675614f8 100644
+index 65e0b44..d527675 100644
 --- a/include/openssl/idea.h
 +++ b/include/openssl/idea.h
 @@ -1,58 +1,10 @@
@@ -130212,7 +145581,7 @@
  
  #ifndef HEADER_IDEA_H
 diff --git a/include/openssl/kdf.h b/include/openssl/kdf.h
-index e61a9a603a28..3078b56dc48f 100644
+index e61a9a6..3078b56 100644
 --- a/include/openssl/kdf.h
 +++ b/include/openssl/kdf.h
 @@ -1,54 +1,10 @@
@@ -130222,8 +145591,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2016 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -130240,7 +145608,8 @@
 - *    software must display the following acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
-- *
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 - *    endorse or promote products derived from this software without
 - *    prior written permission. For written permission, please contact
@@ -130294,15 +145663,13 @@
 +# endif
  #endif
 diff --git a/include/openssl/lhash.h b/include/openssl/lhash.h
-index 8b8822bbc83d..e2ccb65d6999 100644
+index 8b8822b..e2ccb65 100644
 --- a/include/openssl/lhash.h
 +++ b/include/openssl/lhash.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -130350,7 +145717,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -130579,7 +145948,7 @@
  DEFINE_LHASH_OF(OPENSSL_CSTRING);
  
 diff --git a/include/openssl/md2.h b/include/openssl/md2.h
-index d77a4fac9c15..7faf8e3d6566 100644
+index d77a4fa..7faf8e3 100644
 --- a/include/openssl/md2.h
 +++ b/include/openssl/md2.h
 @@ -1,58 +1,10 @@
@@ -130648,7 +146017,7 @@
  
  #ifndef HEADER_MD2_H
 diff --git a/include/openssl/md4.h b/include/openssl/md4.h
-index b40a839128e1..940e29db409c 100644
+index b40a839..940e29d 100644
 --- a/include/openssl/md4.h
 +++ b/include/openssl/md4.h
 @@ -1,58 +1,10 @@
@@ -130717,15 +146086,13 @@
  
  #ifndef HEADER_MD4_H
 diff --git a/include/openssl/md5.h b/include/openssl/md5.h
-index 5b34b463e99b..2deb772118f2 100644
+index 5b34b46..2deb772 100644
 --- a/include/openssl/md5.h
 +++ b/include/openssl/md5.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -130773,7 +146140,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -130786,7 +146155,7 @@
  
  #ifndef HEADER_MD5_H
 diff --git a/include/openssl/mdc2.h b/include/openssl/mdc2.h
-index 229b1227192d..aabd2bfaad8c 100644
+index 229b122..aabd2bf 100644
 --- a/include/openssl/mdc2.h
 +++ b/include/openssl/mdc2.h
 @@ -1,58 +1,10 @@
@@ -130863,7 +146232,7 @@
  # ifdef  __cplusplus
  extern "C" {
 diff --git a/include/openssl/modes.h b/include/openssl/modes.h
-index 11bbb6835625..a04c6a5981ac 100644
+index 11bbb68..a04c6a5 100644
 --- a/include/openssl/modes.h
 +++ b/include/openssl/modes.h
 @@ -1,8 +1,10 @@
@@ -130882,7 +146251,7 @@
  
  #include <stddef.h>
 diff --git a/include/openssl/obj_mac.h b/include/openssl/obj_mac.h
-index 5d7adc758bff..ebb796350009 100644
+index 5d7adc7..ebb7963 100644
 --- a/include/openssl/obj_mac.h
 +++ b/include/openssl/obj_mac.h
 @@ -1,63 +1,12 @@
@@ -130893,9 +146262,7 @@
 -
 -/* Copyright (C) 1995-1997 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+ * WARNING: do not edit!
-+ * Generated by crypto/objects/objects.pl
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -130943,7 +146310,9 @@
 - * 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.
-- *
++ * WARNING: do not edit!
++ * Generated by crypto/objects/objects.pl
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -130957,15 +146326,13 @@
  
  #define SN_undef                        "UNDEF"
 diff --git a/include/openssl/objects.h b/include/openssl/objects.h
-index f8c2f05331a9..4d3de7c9d0e8 100644
+index f8c2f05..4d3de7c 100644
 --- a/include/openssl/objects.h
 +++ b/include/openssl/objects.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -131013,7 +146380,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -131048,20 +146417,34 @@
 +# endif
  #endif
 diff --git a/include/openssl/ocsp.h b/include/openssl/ocsp.h
-index 546e9bcb56fb..7ded75242e4e 100644
+index 546e9bc..7ded752 100644
 --- a/include/openssl/ocsp.h
 +++ b/include/openssl/ocsp.h
 @@ -1,75 +1,50 @@
  /*
 - * Written by Tom Titchener <Tom_Titchener at groove.net> for the OpenSSL
 - * project.
-- */
--
--/*
++ * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL license (the "License").  You may not use
++ * this file except in compliance with the License.  You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
+  */
+ 
++#ifndef HEADER_OCSP_H
++# define HEADER_OCSP_H
++
++#include <openssl/opensslconf.h>
++
+ /*
 - * History: This file was transferred to Richard Levitte from CertCo by Kathy
 - * Weinhold in mid-spring 2000 to be included in OpenSSL or released as a
 - * patch kit.
-- */
++ * These definitions are outside the OPENSSL_NO_OCSP guard because although for
++ * historical reasons they have OCSP_* names, they can actually be used
++ * independently of OCSP. E.g. see RFC5280
+  */
 -
 -/* ====================================================================
 - * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
@@ -131114,28 +146497,7 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-+ * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
-+ * Licensed under the OpenSSL license (the "License").  You may not use
-+ * this file except in compliance with the License.  You can obtain a copy
-+ * in the file LICENSE in the source distribution or at
-+ * https://www.openssl.org/source/license.html
-  */
- 
- #ifndef HEADER_OCSP_H
- # define HEADER_OCSP_H
- 
--# include <openssl/ossl_typ.h>
--# include <openssl/x509.h>
--# include <openssl/x509v3.h>
--# include <openssl/safestack.h>
-+#include <openssl/opensslconf.h>
-+
-+/*
-+ * These definitions are outside the OPENSSL_NO_OCSP guard because although for
-+ * historical reasons they have OCSP_* names, they can actually be used
-+ * independently of OCSP. E.g. see RFC5280
-+ */
+- *
 +/*-
 + *   CRLReason ::= ENUMERATED {
 + *        unspecified             (0),
@@ -131146,7 +146508,7 @@
 + *        cessationOfOperation    (5),
 + *        certificateHold         (6),
 + *        removeFromCRL           (8) }
-+ */
+  */
 +#  define OCSP_REVOKED_STATUS_NOSTATUS               -1
 +#  define OCSP_REVOKED_STATUS_UNSPECIFIED             0
 +#  define OCSP_REVOKED_STATUS_KEYCOMPROMISE           1
@@ -131156,8 +146518,14 @@
 +#  define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION    5
 +#  define OCSP_REVOKED_STATUS_CERTIFICATEHOLD         6
 +#  define OCSP_REVOKED_STATUS_REMOVEFROMCRL           8
-+
-+
+ 
+-#ifndef HEADER_OCSP_H
+-# define HEADER_OCSP_H
+ 
+-# include <openssl/ossl_typ.h>
+-# include <openssl/x509.h>
+-# include <openssl/x509v3.h>
+-# include <openssl/safestack.h>
 +# ifndef OPENSSL_NO_OCSP
 +
 +#  include <openssl/ossl_typ.h>
@@ -131172,8 +146540,7 @@
  /* Various flags and values */
  
 -# define OCSP_DEFAULT_NONCE_LENGTH       16
-+#  define OCSP_DEFAULT_NONCE_LENGTH       16
- 
+-
 -# define OCSP_NOCERTS                    0x1
 -# define OCSP_NOINTERN                   0x2
 -# define OCSP_NOSIGS                     0x4
@@ -131186,6 +146553,8 @@
 -# define OCSP_TRUSTOTHER                 0x200
 -# define OCSP_RESPID_KEY                 0x400
 -# define OCSP_NOTIME                     0x800
++#  define OCSP_DEFAULT_NONCE_LENGTH       16
++
 +#  define OCSP_NOCERTS                    0x1
 +#  define OCSP_NOINTERN                   0x2
 +#  define OCSP_NOSIGS                     0x4
@@ -131391,7 +146760,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/opensslconf.h.in b/include/openssl/opensslconf.h.in
-index 803cc16c4415..bec5bd09d2d4 100644
+index 803cc16..bec5bd0 100644
 --- a/include/openssl/opensslconf.h.in
 +++ b/include/openssl/opensslconf.h.in
 @@ -1,5 +1,12 @@
@@ -131408,7 +146777,7 @@
  
  #ifdef  __cplusplus
 diff --git a/include/openssl/opensslv.h b/include/openssl/opensslv.h
-index 72d33f929097..2dd067f8d039 100644
+index 72d33f9..2dd067f 100644
 --- a/include/openssl/opensslv.h
 +++ b/include/openssl/opensslv.h
 @@ -1,3 +1,12 @@
@@ -131440,7 +146809,7 @@
  
  /*-
 diff --git a/include/openssl/ossl_typ.h b/include/openssl/ossl_typ.h
-index 81da79286b14..adc50ed284ee 100644
+index 81da792..adc50ed 100644
 --- a/include/openssl/ossl_typ.h
 +++ b/include/openssl/ossl_typ.h
 @@ -1,55 +1,10 @@
@@ -131506,15 +146875,13 @@
  
  #ifndef HEADER_OPENSSL_TYPES_H
 diff --git a/include/openssl/pem.h b/include/openssl/pem.h
-index 0206fec68c7b..6dd76eeacec4 100644
+index 0206fec..6dd76ee 100644
 --- a/include/openssl/pem.h
 +++ b/include/openssl/pem.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1997 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -131562,7 +146929,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -131669,7 +147038,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/pem2.h b/include/openssl/pem2.h
-index 84897d5ec35b..9cb74721e62d 100644
+index 84897d5..9cb7472 100644
 --- a/include/openssl/pem2.h
 +++ b/include/openssl/pem2.h
 @@ -1,60 +1,10 @@
@@ -131740,7 +147109,7 @@
  
  #ifdef __cplusplus
 diff --git a/include/openssl/pkcs12.h b/include/openssl/pkcs12.h
-index 655655a5af73..848267c9a23e 100644
+index 655655a..37d02ae 100644
 --- a/include/openssl/pkcs12.h
 +++ b/include/openssl/pkcs12.h
 @@ -1,59 +1,10 @@
@@ -131808,7 +147177,28 @@
   */
  
  #ifndef HEADER_PKCS12_H
-@@ -253,24 +204,19 @@ int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12);
+@@ -237,40 +188,35 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES)
+ void PKCS12_PBE_add(void);
+ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
+                  STACK_OF(X509) **ca);
+-PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
+-                      STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter,
+-                      int mac_iter, int keytype);
++PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, 
++                      X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, 
++                      int iter, int mac_iter, int keytype);
+ 
+ PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert);
+ PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags,
+                                EVP_PKEY *key, int key_usage, int iter,
+-                               int key_nid, char *pass);
++                               int key_nid, const char *pass);
+ int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags,
+-                    int safe_nid, int iter, char *pass);
++                    int safe_nid, int iter, const char *pass);
+ PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid);
+ 
+ int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12);
  int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12);
  PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12);
  PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12);
@@ -131862,15 +147252,13 @@
 +# endif
  #endif
 diff --git a/include/openssl/pkcs7.h b/include/openssl/pkcs7.h
-index 7ca085e523e5..6de664f9e75c 100644
+index 7ca085e..6de664f 100644
 --- a/include/openssl/pkcs7.h
 +++ b/include/openssl/pkcs7.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -131918,7 +147306,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -132022,15 +147412,13 @@
 +# endif
  #endif
 diff --git a/include/openssl/rand.h b/include/openssl/rand.h
-index d337ee7617ad..d0f8eabe0a34 100644
+index d337ee7..d0f8eab 100644
 --- a/include/openssl/rand.h
 +++ b/include/openssl/rand.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -132078,7 +147466,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -132140,7 +147530,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/rc2.h b/include/openssl/rc2.h
-index 50be22dcec7c..585f9e4c3806 100644
+index 50be22d..585f9e4 100644
 --- a/include/openssl/rc2.h
 +++ b/include/openssl/rc2.h
 @@ -1,58 +1,10 @@
@@ -132209,7 +147599,7 @@
  
  #ifndef HEADER_RC2_H
 diff --git a/include/openssl/rc4.h b/include/openssl/rc4.h
-index a5fdbfb92c94..86803b37fbe0 100644
+index a5fdbfb..86803b3 100644
 --- a/include/openssl/rc4.h
 +++ b/include/openssl/rc4.h
 @@ -1,58 +1,10 @@
@@ -132278,15 +147668,13 @@
  
  #ifndef HEADER_RC4_H
 diff --git a/include/openssl/rc5.h b/include/openssl/rc5.h
-index c1ff358ad363..793f88e4e814 100644
+index c1ff358..793f88e 100644
 --- a/include/openssl/rc5.h
 +++ b/include/openssl/rc5.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -132334,7 +147722,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -132347,7 +147737,7 @@
  
  #ifndef HEADER_RC5_H
 diff --git a/include/openssl/ripemd.h b/include/openssl/ripemd.h
-index 97e5df7694dc..c42026aa42fe 100644
+index 97e5df7..c42026a 100644
 --- a/include/openssl/ripemd.h
 +++ b/include/openssl/ripemd.h
 @@ -1,58 +1,10 @@
@@ -132416,15 +147806,13 @@
  
  #ifndef HEADER_RIPEMD_H
 diff --git a/include/openssl/rsa.h b/include/openssl/rsa.h
-index 1698fb314563..4b82081d93d8 100644
+index 1698fb3..70d3755 100644
 --- a/include/openssl/rsa.h
 +++ b/include/openssl/rsa.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -132472,7 +147860,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -132507,7 +147897,23 @@
  # if OPENSSL_API_COMPAT < 0x00908000L
  /* deprecated name for the flag*/
  /*
-@@ -510,18 +456,14 @@ int RSA_meth_set_keygen(RSA_METHOD *rsa,
+@@ -232,10 +178,12 @@ int RSA_security_bits(const RSA *rsa);
+ int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d);
+ int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q);
+ int RSA_set0_crt_params(RSA *r,BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp);
+-void RSA_get0_key(const RSA *r, BIGNUM **n, BIGNUM **e, BIGNUM **d);
+-void RSA_get0_factors(const RSA *r, BIGNUM **p, BIGNUM **q);
++void RSA_get0_key(const RSA *r,
++                  const BIGNUM **n, const BIGNUM **e, const BIGNUM **d);
++void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q);
+ void RSA_get0_crt_params(const RSA *r,
+-                         BIGNUM **dmp1, BIGNUM **dmq1, BIGNUM **iqmp);
++                         const BIGNUM **dmp1, const BIGNUM **dmq1,
++                         const BIGNUM **iqmp);
+ void RSA_clear_flags(RSA *r, int flags);
+ int RSA_test_flags(const RSA *r, int flags);
+ void RSA_set_flags(RSA *r, int flags);
+@@ -510,18 +458,14 @@ int RSA_meth_set_keygen(RSA_METHOD *rsa,
   * The following lines are auto generated by the script mkerr.pl. Any changes
   * made after this point may be overwritten when the script is next run.
   */
@@ -132527,7 +147933,7 @@
  # define RSA_F_OLD_RSA_PRIV_DECODE                        147
  # define RSA_F_PKEY_RSA_CTRL                              143
  # define RSA_F_PKEY_RSA_CTRL_STR                          144
-@@ -532,22 +474,22 @@ void ERR_load_RSA_strings(void);
+@@ -532,22 +476,22 @@ void ERR_load_RSA_strings(void);
  # define RSA_F_RSA_CHECK_KEY                              123
  # define RSA_F_RSA_CHECK_KEY_EX                           160
  # define RSA_F_RSA_CMS_DECRYPT                            159
@@ -132557,7 +147963,7 @@
  # define RSA_F_RSA_PADDING_ADD_NONE                       107
  # define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP                 121
  # define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1            154
-@@ -566,7 +508,6 @@ void ERR_load_RSA_strings(void);
+@@ -566,7 +510,6 @@ void ERR_load_RSA_strings(void);
  # define RSA_F_RSA_PADDING_CHECK_X931                     128
  # define RSA_F_RSA_PRINT                                  115
  # define RSA_F_RSA_PRINT_FP                               116
@@ -132565,7 +147971,7 @@
  # define RSA_F_RSA_PRIV_ENCODE                            138
  # define RSA_F_RSA_PSS_TO_CTX                             155
  # define RSA_F_RSA_PUB_DECODE                             139
-@@ -601,7 +542,6 @@ void ERR_load_RSA_strings(void);
+@@ -601,7 +544,6 @@ void ERR_load_RSA_strings(void);
  # define RSA_R_INVALID_DIGEST                             157
  # define RSA_R_INVALID_DIGEST_LENGTH                      143
  # define RSA_R_INVALID_HEADER                             137
@@ -132573,7 +147979,7 @@
  # define RSA_R_INVALID_LABEL                              160
  # define RSA_R_INVALID_MESSAGE_LENGTH                     131
  # define RSA_R_INVALID_MGF1_MD                            156
-@@ -635,7 +575,6 @@ void ERR_load_RSA_strings(void);
+@@ -635,7 +577,6 @@ void ERR_load_RSA_strings(void);
  # define RSA_R_UNKNOWN_DIGEST                             166
  # define RSA_R_UNKNOWN_MASK_DIGEST                        151
  # define RSA_R_UNKNOWN_PADDING_TYPE                       118
@@ -132581,7 +147987,7 @@
  # define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE                162
  # define RSA_R_UNSUPPORTED_LABEL_SOURCE                   163
  # define RSA_R_UNSUPPORTED_MASK_ALGORITHM                 153
-@@ -644,9 +583,8 @@ void ERR_load_RSA_strings(void);
+@@ -644,9 +585,8 @@ void ERR_load_RSA_strings(void);
  # define RSA_R_VALUE_MISSING                              147
  # define RSA_R_WRONG_SIGNATURE_LENGTH                     119
  
@@ -132594,7 +148000,7 @@
 -
  #endif
 diff --git a/include/openssl/safestack.h b/include/openssl/safestack.h
-index 538774d66438..306b3acc575f 100644
+index 538774d..fb8d910 100644
 --- a/include/openssl/safestack.h
 +++ b/include/openssl/safestack.h
 @@ -1,56 +1,10 @@
@@ -132660,7 +148066,7 @@
   */
  
  #ifndef HEADER_SAFESTACK_H
-@@ -63,124 +17,105 @@
+@@ -63,128 +17,111 @@
  extern "C" {
  #endif
  
@@ -132821,8 +148227,22 @@
      }
  
  # define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2)
+ # define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t)
++# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \
++            SKM_DEFINE_STACK_OF(t1, const t2, t2)
+ # define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t)
+ 
+ /*-
+@@ -212,6 +149,7 @@ typedef const char *OPENSSL_CSTRING;
+  * dealt with in the autogenerated macros below.
+  */
+ DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING, char)
++DEFINE_SPECIAL_STACK_OF_CONST(OPENSSL_CSTRING, char)
+ 
+ /*
+  * Similarly, we sometimes use a block of characters, NOT nul-terminated.
 diff --git a/include/openssl/seed.h b/include/openssl/seed.h
-index e643e762adf9..bb97131d76b8 100644
+index e643e76..bb97131 100644
 --- a/include/openssl/seed.h
 +++ b/include/openssl/seed.h
 @@ -1,4 +1,13 @@
@@ -132901,15 +148321,13 @@
  
  #ifndef HEADER_SEED_H
 diff --git a/include/openssl/sha.h b/include/openssl/sha.h
-index 27c7cab9361f..6a1eb0de8bd7 100644
+index 27c7cab..6a1eb0d 100644
 --- a/include/openssl/sha.h
 +++ b/include/openssl/sha.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -132957,7 +148375,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -132970,7 +148390,7 @@
  
  #ifndef HEADER_SHA_H
 diff --git a/include/openssl/srp.h b/include/openssl/srp.h
-index 37e767886376..1007b8321b27 100644
+index 37e7678..80bcb0d 100644
 --- a/include/openssl/srp.h
 +++ b/include/openssl/srp.h
 @@ -1,61 +1,12 @@
@@ -133030,9 +148450,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -133042,7 +148461,14 @@
  #ifndef HEADER_SRP_H
  # define HEADER_SRP_H
  
-@@ -106,7 +57,7 @@ typedef struct SRP_VBASE_st {
+@@ -101,17 +52,17 @@ typedef struct SRP_VBASE_st {
+     STACK_OF(SRP_gN_cache) *gN_cache;
+ /* to simulate a user */
+     char *seed_key;
+-    BIGNUM *default_g;
+-    BIGNUM *default_N;
++    const BIGNUM *default_g;
++    const BIGNUM *default_N;
  } SRP_VBASE;
  
  /*
@@ -133051,8 +148477,50 @@
   */
  typedef struct SRP_gN_st {
      char *id;
+-    BIGNUM *g;
+-    BIGNUM *N;
++    const BIGNUM *g;
++    const BIGNUM *N;
+ } SRP_gN;
+ 
+ DEFINE_STACK_OF(SRP_gN)
+@@ -152,22 +103,23 @@ int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt,
+ # define DB_SRP_MODIF    'v'
+ 
+ /* see srp.c */
+-char *SRP_check_known_gN_param(BIGNUM *g, BIGNUM *N);
++char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N);
+ SRP_gN *SRP_get_default_gN(const char *id);
+ 
+ /* server side .... */
+-BIGNUM *SRP_Calc_server_key(BIGNUM *A, BIGNUM *v, BIGNUM *u, BIGNUM *b,
+-                            BIGNUM *N);
+-BIGNUM *SRP_Calc_B(BIGNUM *b, BIGNUM *N, BIGNUM *g, BIGNUM *v);
+-int SRP_Verify_A_mod_N(BIGNUM *A, BIGNUM *N);
+-BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N);
++BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u,
++                            const BIGNUM *b, const BIGNUM *N);
++BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g,
++                   const BIGNUM *v);
++int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N);
++BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N);
+ 
+ /* client side .... */
+-BIGNUM *SRP_Calc_x(BIGNUM *s, const char *user, const char *pass);
+-BIGNUM *SRP_Calc_A(BIGNUM *a, BIGNUM *N, BIGNUM *g);
+-BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x,
+-                            BIGNUM *a, BIGNUM *u);
+-int SRP_Verify_B_mod_N(BIGNUM *B, BIGNUM *N);
++BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass);
++BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g);
++BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g,
++                            const BIGNUM *x, const BIGNUM *a, const BIGNUM *u);
++int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N);
+ 
+ # define SRP_MINIMAL_N 1024
+ 
 diff --git a/include/openssl/srtp.h b/include/openssl/srtp.h
-index da9369ec2ed4..5ddfa46d9b2e 100644
+index da9369e..5ddfa46 100644
 --- a/include/openssl/srtp.h
 +++ b/include/openssl/srtp.h
 @@ -1,112 +1,12 @@
@@ -133176,7 +148644,7 @@
   * DTLS code by Eric Rescorla <ekr at rtfm.com>
   *
 diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
-index 44f44bf7b2dd..881c6bbd0262 100644
+index 44f44bf..abfbed4 100644
 --- a/include/openssl/ssl.h
 +++ b/include/openssl/ssl.h
 @@ -1,112 +1,12 @@
@@ -133448,7 +148916,7 @@
  # define SSL_F_SSL_CTX_USE_CERTIFICATE                    171
  # define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1               172
  # define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE               173
-@@ -2216,16 +2109,14 @@ void ERR_load_SSL_strings(void);
+@@ -2216,16 +2109,15 @@ void ERR_load_SSL_strings(void);
  # define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE             179
  # define SSL_F_SSL_CTX_USE_SERVERINFO                     336
  # define SSL_F_SSL_CTX_USE_SERVERINFO_FILE                337
@@ -133456,6 +148924,7 @@
  # define SSL_F_SSL_DANE_ENABLE                            395
  # define SSL_F_SSL_DO_CONFIG                              391
  # define SSL_F_SSL_DO_HANDSHAKE                           180
++# define SSL_F_SSL_DUP_CA_LIST                            408
  # define SSL_F_SSL_ENABLE_CT                              402
 -# define SSL_F_SSL_GET0_PEER_SCTS                         397
  # define SSL_F_SSL_GET_NEW_SESSION                        181
@@ -133466,7 +148935,7 @@
  # define SSL_F_SSL_GET_SIGN_PKEY                          183
  # define SSL_F_SSL_INIT_WBIO_BUFFER                       184
  # define SSL_F_SSL_LOAD_CLIENT_CA_FILE                    185
-@@ -2238,8 +2129,6 @@ void ERR_load_SSL_strings(void);
+@@ -2238,8 +2130,6 @@ void ERR_load_SSL_strings(void);
  # define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT               303
  # define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT         311
  # define SSL_F_SSL_PEEK                                   270
@@ -133475,7 +148944,7 @@
  # define SSL_F_SSL_READ                                   223
  # define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT                320
  # define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT                321
-@@ -2253,17 +2142,14 @@ void ERR_load_SSL_strings(void);
+@@ -2253,17 +2143,14 @@ void ERR_load_SSL_strings(void);
  # define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK             399
  # define SSL_F_SSL_SET_FD                                 192
  # define SSL_F_SSL_SET_PKEY                               193
@@ -133493,7 +148962,7 @@
  # define SSL_F_SSL_UNDEFINED_FUNCTION                     197
  # define SSL_F_SSL_UNDEFINED_VOID_FUNCTION                244
  # define SSL_F_SSL_USE_CERTIFICATE                        198
-@@ -2283,12 +2169,9 @@ void ERR_load_SSL_strings(void);
+@@ -2283,12 +2170,9 @@ void ERR_load_SSL_strings(void);
  # define SSL_F_TLS12_CHECK_PEER_SIGALG                    333
  # define SSL_F_TLS1_CHANGE_CIPHER_STATE                   209
  # define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS            341
@@ -133506,7 +148975,7 @@
  # define SSL_F_TLS1_PRF                                   284
  # define SSL_F_TLS1_SETUP_KEY_BLOCK                       211
  # define SSL_F_TLS1_SET_SERVER_SIGALGS                    335
-@@ -2330,43 +2213,23 @@ void ERR_load_SSL_strings(void);
+@@ -2330,43 +2214,23 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272
  # define SSL_R_AT_LEAST_TLS_1_0_NEEDED_IN_FIPS_MODE       143
  # define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE     158
@@ -133550,7 +149019,7 @@
  # define SSL_R_BAD_SRTP_MKI_VALUE                         352
  # define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST           353
  # define SSL_R_BAD_SSL_FILETYPE                           124
-@@ -2376,7 +2239,6 @@ void ERR_load_SSL_strings(void);
+@@ -2376,7 +2240,6 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG                  129
  # define SSL_R_BN_LIB                                     130
  # define SSL_R_CA_DN_LENGTH_MISMATCH                      131
@@ -133558,7 +149027,7 @@
  # define SSL_R_CA_KEY_TOO_SMALL                           397
  # define SSL_R_CA_MD_TOO_WEAK                             398
  # define SSL_R_CCS_RECEIVED_EARLY                         133
-@@ -2416,12 +2278,8 @@ void ERR_load_SSL_strings(void);
+@@ -2416,12 +2279,8 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_DIGEST_CHECK_FAILED                        149
  # define SSL_R_DTLS_MESSAGE_TOO_BIG                       334
  # define SSL_R_DUPLICATE_COMPRESSION_ID                   309
@@ -133571,7 +149040,7 @@
  # define SSL_R_EE_KEY_TOO_SMALL                           399
  # define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST         354
  # define SSL_R_ENCRYPTED_LENGTH_TOO_LONG                  150
-@@ -2432,8 +2290,6 @@ void ERR_load_SSL_strings(void);
+@@ -2432,8 +2291,6 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_FAILED_TO_INIT_ASYNC                       405
  # define SSL_R_FRAGMENTED_CLIENT_HELLO                    401
  # define SSL_R_GOT_A_FIN_BEFORE_A_CCS                     154
@@ -133580,7 +149049,7 @@
  # define SSL_R_HTTPS_PROXY_REQUEST                        155
  # define SSL_R_HTTP_REQUEST                               156
  # define SSL_R_ILLEGAL_SUITEB_DIGEST                      380
-@@ -2445,23 +2301,17 @@ void ERR_load_SSL_strings(void);
+@@ -2445,23 +2302,17 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_INVALID_CONFIGURATION_NAME                 113
  # define SSL_R_INVALID_CT_VALIDATION_TYPE                 212
  # define SSL_R_INVALID_NULL_CMD_NAME                      385
@@ -133604,7 +149073,7 @@
  # define SSL_R_MISSING_ECDSA_SIGNING_CERT                 381
  # define SSL_R_MISSING_RSA_CERTIFICATE                    168
  # define SSL_R_MISSING_RSA_ENCRYPTING_CERT                169
-@@ -2469,18 +2319,13 @@ void ERR_load_SSL_strings(void);
+@@ -2469,18 +2320,13 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_MISSING_SRP_PARAM                          358
  # define SSL_R_MISSING_TMP_DH_KEY                         171
  # define SSL_R_MISSING_TMP_ECDH_KEY                       311
@@ -133623,8 +149092,12 @@
  # define SSL_R_NO_COMPRESSION_SPECIFIED                   187
  # define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER           330
  # define SSL_R_NO_METHOD_SPECIFIED                        188
-@@ -2493,13 +2338,11 @@ void ERR_load_SSL_strings(void);
- # define SSL_R_NO_SHARED_SIGATURE_ALGORITHMS              376
+@@ -2490,16 +2336,14 @@ void ERR_load_SSL_strings(void);
+ # define SSL_R_NO_RENEGOTIATION                           339
+ # define SSL_R_NO_REQUIRED_DIGEST                         324
+ # define SSL_R_NO_SHARED_CIPHER                           193
+-# define SSL_R_NO_SHARED_SIGATURE_ALGORITHMS              376
++# define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS             376
  # define SSL_R_NO_SRTP_PROFILES                           359
  # define SSL_R_NO_VALID_SCTS                              216
 -# define SSL_R_NO_VERIFY_CALLBACK                         194
@@ -133637,7 +149110,7 @@
  # define SSL_R_PACKET_LENGTH_TOO_LONG                     198
  # define SSL_R_PARSE_TLSEXT                               227
  # define SSL_R_PATH_TOO_LONG                              270
-@@ -2507,7 +2350,6 @@ void ERR_load_SSL_strings(void);
+@@ -2507,7 +2351,6 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_PEM_NAME_BAD_PREFIX                        391
  # define SSL_R_PEM_NAME_TOO_SHORT                         392
  # define SSL_R_PIPELINE_FAILURE                           406
@@ -133645,7 +149118,7 @@
  # define SSL_R_PROTOCOL_IS_SHUTDOWN                       207
  # define SSL_R_PSK_IDENTITY_NOT_FOUND                     223
  # define SSL_R_PSK_NO_CLIENT_CB                           224
-@@ -2515,18 +2357,16 @@ void ERR_load_SSL_strings(void);
+@@ -2515,18 +2358,16 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_READ_BIO_NOT_SET                           211
  # define SSL_R_READ_TIMEOUT_EXPIRED                       312
  # define SSL_R_RECORD_LENGTH_MISMATCH                     213
@@ -133665,7 +149138,7 @@
  # define SSL_R_SHUTDOWN_WHILE_IN_INIT                     407
  # define SSL_R_SIGNATURE_ALGORITHMS_ERROR                 360
  # define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE      220
-@@ -2534,11 +2374,9 @@ void ERR_load_SSL_strings(void);
+@@ -2534,11 +2375,9 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES           362
  # define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG      363
  # define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE            364
@@ -133677,7 +149150,7 @@
  # define SSL_R_SSL_COMMAND_SECTION_EMPTY                  117
  # define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND              125
  # define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION         228
-@@ -2552,19 +2390,12 @@ void ERR_load_SSL_strings(void);
+@@ -2552,19 +2391,12 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG            273
  # define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH              303
  # define SSL_R_SSL_SESSION_VERSION_MISMATCH               210
@@ -133697,7 +149170,7 @@
  # define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES           242
  # define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES          243
  # define SSL_R_UNEXPECTED_MESSAGE                         244
-@@ -2580,13 +2411,10 @@ void ERR_load_SSL_strings(void);
+@@ -2580,13 +2412,10 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE                  250
  # define SSL_R_UNKNOWN_PKEY_TYPE                          251
  # define SSL_R_UNKNOWN_PROTOCOL                           252
@@ -133711,7 +149184,7 @@
  # define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE                 315
  # define SSL_R_UNSUPPORTED_PROTOCOL                       258
  # define SSL_R_UNSUPPORTED_SSL_VERSION                    259
-@@ -2597,7 +2425,6 @@ void ERR_load_SSL_strings(void);
+@@ -2597,7 +2426,6 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_WRONG_CERTIFICATE_TYPE                     383
  # define SSL_R_WRONG_CIPHER_RETURNED                      261
  # define SSL_R_WRONG_CURVE                                378
@@ -133719,7 +149192,7 @@
  # define SSL_R_WRONG_SIGNATURE_LENGTH                     264
  # define SSL_R_WRONG_SIGNATURE_SIZE                       265
  # define SSL_R_WRONG_SIGNATURE_TYPE                       370
-@@ -2606,7 +2433,7 @@ void ERR_load_SSL_strings(void);
+@@ -2606,7 +2434,7 @@ void ERR_load_SSL_strings(void);
  # define SSL_R_X509_LIB                                   268
  # define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS           269
  
@@ -133730,7 +149203,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/ssl2.h b/include/openssl/ssl2.h
-index e965dd54a650..5321bd272cb7 100644
+index e965dd5..5321bd2 100644
 --- a/include/openssl/ssl2.h
 +++ b/include/openssl/ssl2.h
 @@ -1,58 +1,10 @@
@@ -133799,7 +149272,7 @@
  
  #ifndef HEADER_SSL2_H
 diff --git a/include/openssl/ssl3.h b/include/openssl/ssl3.h
-index 6ff00bc97081..aca19223065b 100644
+index 6ff00bc..aca1922 100644
 --- a/include/openssl/ssl3.h
 +++ b/include/openssl/ssl3.h
 @@ -1,112 +1,12 @@
@@ -133923,7 +149396,7 @@
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   * ECC cipher suite support in OpenSSL originally developed by
 diff --git a/include/openssl/stack.h b/include/openssl/stack.h
-index 976e6ace56a1..9bc550fe0835 100644
+index 976e6ac..9bc550f 100644
 --- a/include/openssl/stack.h
 +++ b/include/openssl/stack.h
 @@ -1,58 +1,10 @@
@@ -133997,17 +149470,39 @@
  
 -typedef struct stack_st _STACK; /* Use STACK_OF(...) instead */
 +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */
- 
--int sk_num(const _STACK *);
--void *sk_value(const _STACK *, int);
++
 +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *);
 +typedef void (*OPENSSL_sk_freefunc)(void *);
 +typedef void *(*OPENSSL_sk_copyfunc)(const void *);
- 
--void *sk_set(_STACK *, int, void *);
++
 +int OPENSSL_sk_num(const OPENSSL_STACK *);
 +void *OPENSSL_sk_value(const OPENSSL_STACK *, int);
  
+-int sk_num(const _STACK *);
+-void *sk_value(const _STACK *, int);
++void *OPENSSL_sk_set(OPENSSL_STACK *, int, void *);
+ 
+-void *sk_set(_STACK *, int, void *);
++OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp);
++OPENSSL_STACK *OPENSSL_sk_new_null(void);
++void OPENSSL_sk_free(OPENSSL_STACK *);
++void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *));
++OPENSSL_STACK *OPENSSL_sk_deep_copy(OPENSSL_STACK *, OPENSSL_sk_copyfunc c, OPENSSL_sk_freefunc f);
++int OPENSSL_sk_insert(OPENSSL_STACK *sk, void *data, int where);
++void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc);
++void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p);
++int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data);
++int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data);
++int OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
++int OPENSSL_sk_unshift(OPENSSL_STACK *st, void *data);
++void *OPENSSL_sk_shift(OPENSSL_STACK *st);
++void *OPENSSL_sk_pop(OPENSSL_STACK *st);
++void OPENSSL_sk_zero(OPENSSL_STACK *st);
++OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, OPENSSL_sk_compfunc cmp);
++OPENSSL_STACK *OPENSSL_sk_dup(OPENSSL_STACK *st);
++void OPENSSL_sk_sort(OPENSSL_STACK *st);
++int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st);
+ 
 -_STACK *sk_new(int (*cmp) (const void *, const void *));
 -_STACK *sk_new_null(void);
 -void sk_free(_STACK *);
@@ -134028,28 +149523,6 @@
 -_STACK *sk_dup(_STACK *st);
 -void sk_sort(_STACK *st);
 -int sk_is_sorted(const _STACK *st);
-+void *OPENSSL_sk_set(OPENSSL_STACK *, int, void *);
-+
-+OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp);
-+OPENSSL_STACK *OPENSSL_sk_new_null(void);
-+void OPENSSL_sk_free(OPENSSL_STACK *);
-+void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *));
-+OPENSSL_STACK *OPENSSL_sk_deep_copy(OPENSSL_STACK *, OPENSSL_sk_copyfunc c, OPENSSL_sk_freefunc f);
-+int OPENSSL_sk_insert(OPENSSL_STACK *sk, void *data, int where);
-+void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc);
-+void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p);
-+int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data);
-+int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data);
-+int OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
-+int OPENSSL_sk_unshift(OPENSSL_STACK *st, void *data);
-+void *OPENSSL_sk_shift(OPENSSL_STACK *st);
-+void *OPENSSL_sk_pop(OPENSSL_STACK *st);
-+void OPENSSL_sk_zero(OPENSSL_STACK *st);
-+OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, OPENSSL_sk_compfunc cmp);
-+OPENSSL_STACK *OPENSSL_sk_dup(OPENSSL_STACK *st);
-+void OPENSSL_sk_sort(OPENSSL_STACK *st);
-+int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st);
-+
 +# if OPENSSL_API_COMPAT < 0x10100000L
 +#  define _STACK OPENSSL_STACK
 +#  define sk_num OPENSSL_sk_num
@@ -134079,7 +149552,7 @@
  #ifdef  __cplusplus
  }
 diff --git a/include/openssl/symhacks.h b/include/openssl/symhacks.h
-index 99a2de5f41da..caf1f1a75d02 100644
+index 99a2de5..caf1f1a 100644
 --- a/include/openssl/symhacks.h
 +++ b/include/openssl/symhacks.h
 @@ -1,55 +1,10 @@
@@ -134145,7 +149618,7 @@
  
  #ifndef HEADER_SYMHACKS_H
 diff --git a/include/openssl/tls1.h b/include/openssl/tls1.h
-index c3344e193f83..11ad8e51e572 100644
+index c3344e1..11ad8e5 100644
 --- a/include/openssl/tls1.h
 +++ b/include/openssl/tls1.h
 @@ -1,112 +1,12 @@
@@ -134320,7 +149793,7 @@
  SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
  
 diff --git a/include/openssl/ts.h b/include/openssl/ts.h
-index 2e1514ef5ef2..d51264891339 100644
+index 2e1514e..3fbaf55 100644
 --- a/include/openssl/ts.h
 +++ b/include/openssl/ts.h
 @@ -1,59 +1,10 @@
@@ -134388,6 +149861,15 @@
   */
  
  #ifndef HEADER_TS_H
+@@ -355,7 +306,7 @@ typedef int (*TS_extension_cb) (struct TS_resp_ctx *, X509_EXTENSION *,
+ 
+ typedef struct TS_resp_ctx TS_RESP_CTX;
+ 
+-DEFINE_STACK_OF(EVP_MD)
++DEFINE_STACK_OF_CONST(EVP_MD)
+ 
+ /* Creates a response context that can be used for generating responses. */
+ TS_RESP_CTX *TS_RESP_CTX_new(void);
 @@ -585,12 +536,12 @@ int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section,
   * The following lines are auto generated by the script mkerr.pl. Any changes
   * made after this point may be overwritten when the script is next run.
@@ -134431,7 +149913,7 @@
 -
  #endif
 diff --git a/include/openssl/txt_db.h b/include/openssl/txt_db.h
-index e83e725ade1e..0e6c943e0eb8 100644
+index e83e725..0e6c943 100644
 --- a/include/openssl/txt_db.h
 +++ b/include/openssl/txt_db.h
 @@ -1,58 +1,10 @@
@@ -134509,7 +149991,7 @@
  OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx,
                                      OPENSSL_STRING *value);
 diff --git a/include/openssl/ui.h b/include/openssl/ui.h
-index 3d1507ee0074..4173fe0289f0 100644
+index 3d1507e..dcebb6e 100644
 --- a/include/openssl/ui.h
 +++ b/include/openssl/ui.h
 @@ -1,79 +1,29 @@
@@ -134641,6 +150123,15 @@
                          structures, not only the prompt ones, so it must
                          check such things itself.
          a closer        This function closes the session, maybe by closing
+@@ -319,7 +269,7 @@ enum UI_string_types {
+ };
+ 
+ /* Create and manipulate methods */
+-UI_METHOD *UI_create_method(char *name);
++UI_METHOD *UI_create_method(const char *name);
+ void UI_destroy_method(UI_METHOD *ui_method);
+ int UI_method_set_opener(UI_METHOD *method, int (*opener) (UI *ui));
+ int UI_method_set_writer(UI_METHOD *method,
 @@ -355,7 +305,7 @@ int UI_get_input_flags(UI_STRING *uis);
  /* Return the actual string to output (the prompt, info or error) */
  const char *UI_get0_output_string(UI_STRING *uis);
@@ -134679,7 +150170,7 @@
 +# endif
  #endif
 diff --git a/include/openssl/whrlpool.h b/include/openssl/whrlpool.h
-index bc460351d077..20ea3503b76f 100644
+index bc46035..20ea350 100644
 --- a/include/openssl/whrlpool.h
 +++ b/include/openssl/whrlpool.h
 @@ -1,3 +1,12 @@
@@ -134696,15 +150187,13 @@
  # define HEADER_WHRLPOOL_H
  
 diff --git a/include/openssl/x509.h b/include/openssl/x509.h
-index a36500c8c2ec..906184a5d841 100644
+index a36500c..4b7a1f6 100644
 --- a/include/openssl/x509.h
 +++ b/include/openssl/x509.h
 @@ -1,59 +1,12 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -134752,7 +150241,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -134792,7 +150283,22 @@
  
  long X509_CRL_get_version(X509_CRL *crl);
  ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl);
-@@ -1046,6 +1000,7 @@ int X509_TRUST_get_trust(X509_TRUST *xp);
+@@ -1035,17 +989,18 @@ int X509_TRUST_get_count(void);
+ X509_TRUST *X509_TRUST_get0(int idx);
+ int X509_TRUST_get_by_id(int id);
+ int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int),
+-                   char *name, int arg1, void *arg2);
++                   const char *name, int arg1, void *arg2);
+ void X509_TRUST_cleanup(void);
+-int X509_TRUST_get_flags(X509_TRUST *xp);
+-char *X509_TRUST_get0_name(X509_TRUST *xp);
+-int X509_TRUST_get_trust(X509_TRUST *xp);
++int X509_TRUST_get_flags(const X509_TRUST *xp);
++char *X509_TRUST_get0_name(const X509_TRUST *xp);
++int X509_TRUST_get_trust(const X509_TRUST *xp);
+ 
+ /* BEGIN ERROR CODES */
+ /*
   * The following lines are auto generated by the script mkerr.pl. Any changes
   * made after this point may be overwritten when the script is next run.
   */
@@ -134800,7 +150306,15 @@
  void ERR_load_X509_strings(void);
  
  /* Error codes for the X509 functions. */
-@@ -1082,6 +1037,7 @@ void ERR_load_X509_strings(void);
+@@ -1054,6 +1009,7 @@ void ERR_load_X509_strings(void);
+ # define X509_F_ADD_CERT_DIR                              100
+ # define X509_F_BUILD_CHAIN                               106
+ # define X509_F_BY_FILE_CTRL                              101
++# define X509_F_CHECK_NAME_CONSTRAINTS                    149
+ # define X509_F_CHECK_POLICY                              145
+ # define X509_F_DANE_I2D                                  107
+ # define X509_F_DIR_CTRL                                  102
+@@ -1082,6 +1038,7 @@ void ERR_load_X509_strings(void);
  # define X509_F_X509_NAME_ENTRY_SET_OBJECT                115
  # define X509_F_X509_NAME_ONELINE                         116
  # define X509_F_X509_NAME_PRINT                           117
@@ -134808,7 +150322,7 @@
  # define X509_F_X509_PRINT_EX_FP                          118
  # define X509_F_X509_PUBKEY_DECODE                        148
  # define X509_F_X509_PUBKEY_GET0                          119
-@@ -1096,7 +1052,6 @@ void ERR_load_X509_strings(void);
+@@ -1096,7 +1053,6 @@ void ERR_load_X509_strings(void);
  # define X509_F_X509_STORE_CTX_INIT                       143
  # define X509_F_X509_STORE_CTX_NEW                        142
  # define X509_F_X509_STORE_CTX_PURPOSE_INHERIT            134
@@ -134816,7 +150330,7 @@
  # define X509_F_X509_TO_X509_REQ                          126
  # define X509_F_X509_TRUST_ADD                            133
  # define X509_F_X509_TRUST_SET                            141
-@@ -1111,7 +1066,6 @@ void ERR_load_X509_strings(void);
+@@ -1111,7 +1067,6 @@ void ERR_load_X509_strings(void);
  # define X509_R_CERT_ALREADY_IN_HASH_TABLE                101
  # define X509_R_CRL_ALREADY_DELTA                         127
  # define X509_R_CRL_VERIFY_FAILURE                        131
@@ -134824,7 +150338,7 @@
  # define X509_R_IDP_MISMATCH                              128
  # define X509_R_INVALID_DIRECTORY                         113
  # define X509_R_INVALID_FIELD_NAME                        119
-@@ -1122,6 +1076,7 @@ void ERR_load_X509_strings(void);
+@@ -1122,6 +1077,7 @@ void ERR_load_X509_strings(void);
  # define X509_R_LOADING_CERT_DIR                          103
  # define X509_R_LOADING_DEFAULTS                          104
  # define X509_R_METHOD_NOT_SUPPORTED                      124
@@ -134832,7 +150346,7 @@
  # define X509_R_NEWER_CRL_NOT_NEWER                       132
  # define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY              105
  # define X509_R_NO_CRL_NUMBER                             130
-@@ -1138,7 +1093,7 @@ void ERR_load_X509_strings(void);
+@@ -1138,7 +1094,7 @@ void ERR_load_X509_strings(void);
  # define X509_R_WRONG_LOOKUP_TYPE                         112
  # define X509_R_WRONG_TYPE                                122
  
@@ -134843,15 +150357,13 @@
 +# endif
  #endif
 diff --git a/include/openssl/x509_vfy.h b/include/openssl/x509_vfy.h
-index 4bf27e9d76b6..f0122655733f 100644
+index 4bf27e9..4e44e1d 100644
 --- a/include/openssl/x509_vfy.h
 +++ b/include/openssl/x509_vfy.h
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -134899,7 +150411,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -134929,7 +150443,7 @@
  
  void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
  
-@@ -199,6 +158,12 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
+@@ -199,6 +158,14 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
  # define         X509_V_ERR_EE_KEY_TOO_SMALL                     66
  # define         X509_V_ERR_CA_KEY_TOO_SMALL                     67
  # define         X509_V_ERR_CA_MD_TOO_WEAK                       68
@@ -134939,10 +150453,12 @@
 +# define         X509_V_ERR_STORE_LOOKUP                         70
 +/* Certificate transparency */
 +# define         X509_V_ERR_NO_VALID_SCTS                        71
++
++# define         X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION         72
  
  /* Certificate verify flags */
  
-@@ -231,7 +196,7 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
+@@ -231,7 +198,7 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
  # define X509_V_FLAG_EXTENDED_CRL_SUPPORT        0x1000
  /* Delta CRL support */
  # define X509_V_FLAG_USE_DELTAS                  0x2000
@@ -134951,7 +150467,7 @@
  # define X509_V_FLAG_CHECK_SS_SIGNATURE          0x4000
  /* Use trusted store first */
  # define X509_V_FLAG_TRUSTED_FIRST               0x8000
-@@ -270,20 +235,24 @@ X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h,
+@@ -270,20 +237,24 @@ X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h,
                                               int type, X509_NAME *name);
  X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h,
                                          X509_OBJECT *x);
@@ -134981,7 +150497,7 @@
  
  void X509_STORE_set_verify_cb(X509_STORE *ctx,
                                int (*verify_cb) (int, X509_STORE_CTX *));
-@@ -292,6 +261,10 @@ void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx,
+@@ -292,6 +263,10 @@ void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx,
                                     STACK_OF(X509_CRL) *(*cb) (X509_STORE_CTX
                                                                *ctx,
                                                                X509_NAME *nm));
@@ -134992,7 +150508,7 @@
  
  X509_STORE_CTX *X509_STORE_CTX_new(void);
  
-@@ -307,8 +280,6 @@ X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx);
+@@ -307,8 +282,6 @@ X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx);
  X509 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx);
  STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(X509_STORE_CTX *ctx);
  void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk);
@@ -135001,7 +150517,7 @@
  void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx,
                                    X509_STORE_CTX_verify_cb verify);
  X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(X509_STORE_CTX *ctx);
-@@ -316,6 +287,15 @@ void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx,
+@@ -316,6 +289,15 @@ void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx,
                                 X509_STORE_CTX_verify verify);
  X509_STORE_CTX_verify X509_STORE_CTX_get_verify(X509_STORE_CTX *ctx);
  
@@ -135017,7 +150533,7 @@
  X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m);
  X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void);
  X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
-@@ -323,10 +303,10 @@ X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
+@@ -323,10 +305,10 @@ X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
  int X509_STORE_add_cert(X509_STORE *ctx, X509 *x);
  int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x);
  
@@ -135032,7 +150548,7 @@
  
  int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc,
                       long argl, char **ret);
-@@ -360,7 +340,9 @@ void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx);
+@@ -360,7 +342,9 @@ void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx);
  int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
  void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s);
  int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
@@ -135043,7 +150559,7 @@
  X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx);
  X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx);
 diff --git a/include/openssl/x509v3.h b/include/openssl/x509v3.h
-index c44ebf5ab49b..c242a4dd6a82 100644
+index c44ebf5..36d11a7 100644
 --- a/include/openssl/x509v3.h
 +++ b/include/openssl/x509v3.h
 @@ -1,60 +1,12 @@
@@ -135102,9 +150618,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -135134,7 +150649,18 @@
  
  STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method,
                                         GENERAL_NAME *gen,
-@@ -610,29 +562,29 @@ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
+@@ -597,8 +549,8 @@ DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS)
+ 
+ GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out,
+                                const X509V3_EXT_METHOD *method,
+-                               X509V3_CTX *ctx, int gen_type, char *value,
+-                               int is_nc);
++                               X509V3_CTX *ctx, int gen_type, 
++                               const char *value, int is_nc);
+ 
+ # ifdef HEADER_CONF_H
+ GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method,
+@@ -610,31 +562,31 @@ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
  void X509V3_conf_free(CONF_VALUE *val);
  
  X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid,
@@ -135174,8 +150700,22 @@
 -                            char *section, X509_CRL *crl);
 +                            const char *section, X509_CRL *crl);
  
- int X509V3_add_value_bool_nf(char *name, int asn1_bool,
+-int X509V3_add_value_bool_nf(char *name, int asn1_bool,
++int X509V3_add_value_bool_nf(const char *name, int asn1_bool,
                               STACK_OF(CONF_VALUE) **extlist);
+ int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool);
+ int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint);
+@@ -642,8 +594,8 @@ void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
+ void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash);
+ # endif
+ 
+-char *X509V3_get_string(X509V3_CTX *ctx, char *name, char *section);
+-STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, char *section);
++char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section);
++STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section);
+ void X509V3_string_free(X509V3_CTX *ctx, char *str);
+ void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section);
+ void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
 @@ -658,7 +610,7 @@ int X509V3_add_value_bool(const char *name, int asn1_bool,
  int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint,
                           STACK_OF(CONF_VALUE) **extlist);
@@ -135185,6 +150725,29 @@
  char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint);
  char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth,
                                  ASN1_ENUMERATED *aint);
+@@ -710,16 +662,16 @@ const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x);
+ 
+ int X509_PURPOSE_get_count(void);
+ X509_PURPOSE *X509_PURPOSE_get0(int idx);
+-int X509_PURPOSE_get_by_sname(char *sname);
++int X509_PURPOSE_get_by_sname(const char *sname);
+ int X509_PURPOSE_get_by_id(int id);
+ int X509_PURPOSE_add(int id, int trust, int flags,
+                      int (*ck) (const X509_PURPOSE *, const X509 *, int),
+-                     char *name, char *sname, void *arg);
+-char *X509_PURPOSE_get0_name(X509_PURPOSE *xp);
+-char *X509_PURPOSE_get0_sname(X509_PURPOSE *xp);
+-int X509_PURPOSE_get_trust(X509_PURPOSE *xp);
++                     const char *name, const char *sname, void *arg);
++char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp);
++char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp);
++int X509_PURPOSE_get_trust(const X509_PURPOSE *xp);
+ void X509_PURPOSE_cleanup(void);
+-int X509_PURPOSE_get_id(X509_PURPOSE *);
++int X509_PURPOSE_get_id(const X509_PURPOSE *);
+ 
+ STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x);
+ STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x);
 @@ -758,7 +710,6 @@ int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags);
  
  ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc);
@@ -135253,7 +150816,7 @@
 +# endif
  #endif
 diff --git a/ms/applink.c b/ms/applink.c
-index 832872324d68..238dbff35bd5 100644
+index 8328723..238dbff 100644
 --- a/ms/applink.c
 +++ b/ms/applink.c
 @@ -1,3 +1,12 @@
@@ -135270,7 +150833,7 @@
  #define APPLINK_STDOUT  2
  #define APPLINK_STDERR  3
 diff --git a/ms/cmp.pl b/ms/cmp.pl
-index 31d7e1ed94ac..265ce56ed86f 100755
+index 31d7e1e..265ce56 100755
 --- a/ms/cmp.pl
 +++ b/ms/cmp.pl
 @@ -1,4 +1,10 @@
@@ -135286,7 +150849,7 @@
  ($#ARGV == 1) || die "usage: cmp.pl <file1> <file2>\n";
  
 diff --git a/ms/segrenam.pl b/ms/segrenam.pl
-index 7e64c8e36fc4..372444a22953 100755
+index 7e64c8e..372444a 100755
 --- a/ms/segrenam.pl
 +++ b/ms/segrenam.pl
 @@ -1,4 +1,10 @@
@@ -135302,7 +150865,7 @@
  my $quiet = 1;
  
 diff --git a/ms/uplink-common.pl b/ms/uplink-common.pl
-index 1d20e6e03ed2..e2ab59456f15 100755
+index 1d20e6e..e2ab594 100755
 --- a/ms/uplink-common.pl
 +++ b/ms/uplink-common.pl
 @@ -1,5 +1,11 @@
@@ -135319,7 +150882,7 @@
  $applink_c=$0;
  $applink_c=~s|[^/\\]+$||g;
 diff --git a/ms/uplink-ia64.pl b/ms/uplink-ia64.pl
-index 089cd3913fb1..0636f13e700a 100755
+index 089cd39..0636f13 100755
 --- a/ms/uplink-ia64.pl
 +++ b/ms/uplink-ia64.pl
 @@ -1,4 +1,10 @@
@@ -135335,7 +150898,7 @@
  $output = pop;
  open STDOUT,">$output";
 diff --git a/ms/uplink-x86.pl b/ms/uplink-x86.pl
-index 4a2f042c3432..e25668ea35d1 100755
+index 4a2f042..e25668e 100755
 --- a/ms/uplink-x86.pl
 +++ b/ms/uplink-x86.pl
 @@ -1,4 +1,10 @@
@@ -135351,7 +150914,7 @@
  $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
  push(@INC, "${dir}.", "${dir}../crypto/perlasm");
 diff --git a/ms/uplink-x86_64.pl b/ms/uplink-x86_64.pl
-index 0cb0f1b3000f..1f244504cdff 100755
+index 0cb0f1b..1f24450 100755
 --- a/ms/uplink-x86_64.pl
 +++ b/ms/uplink-x86_64.pl
 @@ -1,8 +1,14 @@
@@ -135372,7 +150935,7 @@
  push(@INC,"${dir}.");
  
 diff --git a/ms/uplink.c b/ms/uplink.c
-index 6a5091b570ce..7f7abfbe57eb 100644
+index 6a5091b..7f7abfb 100644
 --- a/ms/uplink.c
 +++ b/ms/uplink.c
 @@ -1,3 +1,12 @@
@@ -135389,7 +150952,7 @@
  # define UNICODE
  #endif
 diff --git a/ms/uplink.h b/ms/uplink.h
-index 4881ba7d4298..f6cd0380ae35 100644
+index 4881ba7..f6cd038 100644
 --- a/ms/uplink.h
 +++ b/ms/uplink.h
 @@ -1,3 +1,12 @@
@@ -135407,7 +150970,7 @@
  
 diff --git a/openssl.spec b/openssl.spec
 deleted file mode 100644
-index 890fd51a0060..000000000000
+index 890fd51..0000000
 --- a/openssl.spec
 +++ /dev/null
 @@ -1,210 +0,0 @@
@@ -135623,7 +151186,7 @@
 -- all stuff is moved out of /usr/local
 diff --git a/os-dep/haiku.h b/os-dep/haiku.h
 new file mode 100644
-index 000000000000..7e908efaaf40
+index 0000000..7e908ef
 --- /dev/null
 +++ b/os-dep/haiku.h
 @@ -0,0 +1,2 @@
@@ -135631,7 +151194,7 @@
 +#include <sys/time.h>
 diff --git a/ssl/Makefile.in b/ssl/Makefile.in
 deleted file mode 100644
-index 26444ca429d2..000000000000
+index 26444ca..0000000
 --- a/ssl/Makefile.in
 +++ /dev/null
 @@ -1,81 +0,0 @@
@@ -135717,7 +151280,7 @@
 -	
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/ssl/bio_ssl.c b/ssl/bio_ssl.c
-index e3deebc08e5b..efe0df98fba5 100644
+index e3deebc..efe0df9 100644
 --- a/ssl/bio_ssl.c
 +++ b/ssl/bio_ssl.c
 @@ -1,58 +1,10 @@
@@ -135802,7 +151365,7 @@
          break;
      case BIO_C_GET_FD:
 diff --git a/ssl/d1_lib.c b/ssl/d1_lib.c
-index 6d75225cce6a..42a02780c537 100644
+index 6d75225..ea1e3d5 100644
 --- a/ssl/d1_lib.c
 +++ b/ssl/d1_lib.c
 @@ -1,59 +1,10 @@
@@ -135870,6 +151433,15 @@
   */
  
  #include <stdio.h>
+@@ -327,7 +278,7 @@ struct timeval *dtls1_get_timeout(SSL *s, struct timeval *timeleft)
+ 
+     /*
+      * If remaining time is less than 15 ms, set it to 0 to prevent issues
+-     * because of small devergences with socket timeouts.
++     * because of small divergences with socket timeouts.
+      */
+     if (timeleft->tv_sec == 0 && timeleft->tv_usec < 15000) {
+         memset(timeleft, 0, sizeof(*timeleft));
 @@ -797,7 +748,7 @@ int DTLSv1_listen(SSL *s, BIO_ADDR *client)
              }
  
@@ -135940,9 +151512,12 @@
  
      /* Only send if peer supports and accepts HB requests... */
      if (!(s->tlsext_heartbeat & SSL_DTLSEXT_HB_ENABLED) ||
-@@ -999,13 +954,9 @@ int dtls1_heartbeat(SSL *s)
+@@ -997,15 +952,11 @@ int dtls1_heartbeat(SSL *s)
+ 
+     /*-
       * Create HeartBeat message, we just use a sequence number
-      * as payload to distuingish different messages and add
+-     * as payload to distuingish different messages and add
++     * as payload to distinguish different messages and add
       * some random stuff.
 -     *  - Message Type, 1 byte
 -     *  - Payload Length, 2 bytes (unsigned int)
@@ -135971,7 +151546,7 @@
  
          dtls1_start_timer(s);
 diff --git a/ssl/d1_msg.c b/ssl/d1_msg.c
-index b9342a2a10a5..07572030e170 100644
+index b9342a2..0757203 100644
 --- a/ssl/d1_msg.c
 +++ b/ssl/d1_msg.c
 @@ -1,115 +1,10 @@
@@ -135981,8 +151556,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 1998-2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -136083,7 +151657,8 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++ * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -136096,7 +151671,7 @@
  
  #define USE_SOCKETS
 diff --git a/ssl/d1_srtp.c b/ssl/d1_srtp.c
-index f969fb10b11e..91d373fdf46f 100644
+index f969fb1..94c0127 100644
 --- a/ssl/d1_srtp.c
 +++ b/ssl/d1_srtp.c
 @@ -1,112 +1,12 @@
@@ -136219,7 +151794,30 @@
  /*
   * DTLS code by Eric Rescorla <ekr at rtfm.com>
   *
-@@ -197,6 +97,8 @@ static int ssl_ctx_make_profiles(const char *profiles_string,
+@@ -181,25 +81,32 @@ static int ssl_ctx_make_profiles(const char *profiles_string,
+             if (sk_SRTP_PROTECTION_PROFILE_find(profiles, p) >= 0) {
+                 SSLerr(SSL_F_SSL_CTX_MAKE_PROFILES,
+                        SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST);
+-                sk_SRTP_PROTECTION_PROFILE_free(profiles);
+-                return 1;
++                goto err;
+             }
+ 
+-            sk_SRTP_PROTECTION_PROFILE_push(profiles, p);
++            if (!sk_SRTP_PROTECTION_PROFILE_push(profiles, p)) {
++                SSLerr(SSL_F_SSL_CTX_MAKE_PROFILES,
++                       SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES);
++                goto err;
++            }
+         } else {
+             SSLerr(SSL_F_SSL_CTX_MAKE_PROFILES,
+                    SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE);
+-            sk_SRTP_PROTECTION_PROFILE_free(profiles);
+-            return 1;
++            goto err;
+         }
+ 
+         if (col)
              ptr = col + 1;
      } while (col);
  
@@ -136228,8 +151826,14 @@
      *out = profiles;
  
      return 0;
++err:
++    sk_SRTP_PROTECTION_PROFILE_free(profiles);
++    return 1;
+ }
+ 
+ int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles)
 diff --git a/ssl/methods.c b/ssl/methods.c
-index e576502c632b..aeed8c72bd66 100644
+index e576502..aeed8c7 100644
 --- a/ssl/methods.c
 +++ b/ssl/methods.c
 @@ -1,111 +1,10 @@
@@ -136351,7 +151955,7 @@
  
  #include <stdio.h>
 diff --git a/ssl/packet_locl.h b/ssl/packet_locl.h
-index fd1f9f4ecf8b..0ff4cccf3b07 100644
+index fd1f9f4..0ff4ccc 100644
 --- a/ssl/packet_locl.h
 +++ b/ssl/packet_locl.h
 @@ -1,58 +1,10 @@
@@ -136419,7 +152023,7 @@
  
  #ifndef HEADER_PACKET_LOCL_H
 diff --git a/ssl/pqueue.c b/ssl/pqueue.c
-index d6cef34a1c9f..b447e1dceb77 100644
+index d6cef34..b447e1d 100644
 --- a/ssl/pqueue.c
 +++ b/ssl/pqueue.c
 @@ -1,59 +1,10 @@
@@ -136488,7 +152092,7 @@
  
  #include "ssl_locl.h"
 diff --git a/ssl/record/dtls1_bitmap.c b/ssl/record/dtls1_bitmap.c
-index 0fa29854854b..9dae9b273e60 100644
+index 0fa2985..9dae9b2 100644
 --- a/ssl/record/dtls1_bitmap.c
 +++ b/ssl/record/dtls1_bitmap.c
 @@ -1,115 +1,10 @@
@@ -136498,8 +152102,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 1998-2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -136600,7 +152203,8 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++ * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -136613,7 +152217,7 @@
  
  #include "../ssl_locl.h"
 diff --git a/ssl/record/rec_layer_d1.c b/ssl/record/rec_layer_d1.c
-index 00af44e09d86..9e043f5df0b5 100644
+index 00af44e..6699d2a 100644
 --- a/ssl/record/rec_layer_d1.c
 +++ b/ssl/record/rec_layer_d1.c
 @@ -1,115 +1,10 @@
@@ -136623,8 +152227,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 1998-2005 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -136725,7 +152328,8 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++ * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -136737,8 +152341,16 @@
   */
  
  #include <stdio.h>
-@@ -569,7 +464,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
+@@ -118,7 +13,6 @@
+ #include "../ssl_locl.h"
+ #include <openssl/evp.h>
+ #include <openssl/buffer.h>
+-#include <openssl/rand.h>
+ #include "record_locl.h"
  
+ int DTLS_RECORD_LAYER_new(RECORD_LAYER *rl)
+@@ -569,7 +463,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
+ 
          memcpy(buf, &(SSL3_RECORD_get_data(rr)[SSL3_RECORD_get_off(rr)]), n);
          if (!peek) {
 -            SSL3_RECORD_add_length(rr, -n);
@@ -136746,7 +152358,7 @@
              SSL3_RECORD_add_off(rr, n);
              if (SSL3_RECORD_get_length(rr) == 0) {
                  s->rlayer.rstate = SSL_ST_READ_HEADER;
-@@ -666,7 +561,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
+@@ -666,7 +560,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
  
          if (dest_maxlen > 0) {
              /*
@@ -136755,7 +152367,7 @@
               * fragmented--don't always expect dest_maxlen bytes
               */
              if (SSL3_RECORD_get_length(rr)  < dest_maxlen) {
-@@ -845,7 +740,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
+@@ -845,7 +739,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
              BIO_snprintf(tmp, sizeof tmp, "%d", alert_descr);
              ERR_add_error_data(2, "SSL alert number ", tmp);
              s->shutdown |= SSL_RECEIVED_SHUTDOWN;
@@ -136765,7 +152377,7 @@
          } else {
              al = SSL_AD_ILLEGAL_PARAMETER;
 diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c
-index 773a6d68d9ac..bce82a761c1a 100644
+index 773a6d6..bce82a7 100644
 --- a/ssl/record/rec_layer_s3.c
 +++ b/ssl/record/rec_layer_s3.c
 @@ -1,111 +1,10 @@
@@ -137018,7 +152630,7 @@
          } else {
              al = SSL_AD_ILLEGAL_PARAMETER;
 diff --git a/ssl/record/record.h b/ssl/record/record.h
-index 6bb941d51aa7..cda4eff0d362 100644
+index 6bb941d..cda4eff 100644
 --- a/ssl/record/record.h
 +++ b/ssl/record/record.h
 @@ -1,111 +1,10 @@
@@ -137161,7 +152773,7 @@
      /* number bytes written */
      int wpend_tot;
 diff --git a/ssl/record/record_locl.h b/ssl/record/record_locl.h
-index 81335fa946a8..ff1eb32191ea 100644
+index 81335fa..ff1eb32 100644
 --- a/ssl/record/record_locl.h
 +++ b/ssl/record/record_locl.h
 @@ -1,113 +1,11 @@
@@ -137313,7 +152925,7 @@
  void SSL3_RECORD_clear(SSL3_RECORD *r, unsigned int num_recs);
  void SSL3_RECORD_release(SSL3_RECORD *r, unsigned int num_recs);
 diff --git a/ssl/record/ssl3_buffer.c b/ssl/record/ssl3_buffer.c
-index 53ae0f490d80..72faafe4e3fb 100644
+index 53ae0f4..72faafe 100644
 --- a/ssl/record/ssl3_buffer.c
 +++ b/ssl/record/ssl3_buffer.c
 @@ -1,111 +1,10 @@
@@ -137435,7 +153047,7 @@
  
  #include "../ssl_locl.h"
 diff --git a/ssl/record/ssl3_record.c b/ssl/record/ssl3_record.c
-index 3c285726c157..d3b2bea40a91 100644
+index 3c28572..d3b2bea 100644
 --- a/ssl/record/ssl3_record.c
 +++ b/ssl/record/ssl3_record.c
 @@ -1,111 +1,10 @@
@@ -137642,7 +153254,7 @@
      RECORD_LAYER_set_numrpipes(&s->rlayer, num_recs);
      return 1;
 diff --git a/ssl/s3_cbc.c b/ssl/s3_cbc.c
-index 8df32ba326aa..7cdabbb761b3 100644
+index 8df32ba..7cdabbb 100644
 --- a/ssl/s3_cbc.c
 +++ b/ssl/s3_cbc.c
 @@ -1,55 +1,10 @@
@@ -137708,7 +153320,7 @@
  
  #include "internal/constant_time_locl.h"
 diff --git a/ssl/s3_enc.c b/ssl/s3_enc.c
-index 35ef9487f91d..f7089bd6fb85 100644
+index 35ef948..b6de38d 100644
 --- a/ssl/s3_enc.c
 +++ b/ssl/s3_enc.c
 @@ -1,112 +1,12 @@
@@ -137889,8 +153501,20 @@
      }
      if (keep == 0) {
          BIO_free(s->s3->handshake_buffer);
+@@ -509,7 +415,10 @@ int ssl3_final_finish_mac(SSL *s, const char *sender, int len, unsigned char *p)
+         SSLerr(SSL_F_SSL3_FINAL_FINISH_MAC, ERR_R_MALLOC_FAILURE);
+         return 0;
+     }
+-    EVP_MD_CTX_copy_ex(ctx, s->s3->handshake_dgst);
++    if (!EVP_MD_CTX_copy_ex(ctx, s->s3->handshake_dgst)) {
++        SSLerr(SSL_F_SSL3_FINAL_FINISH_MAC, ERR_R_INTERNAL_ERROR);
++        return 0;
++    }
+ 
+     ret = EVP_MD_CTX_size(ctx);
+     if (ret < 0) {
 diff --git a/ssl/s3_lib.c b/ssl/s3_lib.c
-index ef65050cc4f6..44dac24c8caf 100644
+index ef65050..bd831bc 100644
 --- a/ssl/s3_lib.c
 +++ b/ssl/s3_lib.c
 @@ -1,112 +1,12 @@
@@ -138239,7 +153863,26 @@
      case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG:
          ctx->tlsext_status_arg = parg;
          return 1;
-@@ -3839,7 +3762,7 @@ int ssl3_shutdown(SSL *s)
+@@ -3487,10 +3410,15 @@ long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
+         /* A Thawte special :-) */
+     case SSL_CTRL_EXTRA_CHAIN_CERT:
+         if (ctx->extra_certs == NULL) {
+-            if ((ctx->extra_certs = sk_X509_new_null()) == NULL)
+-                return (0);
++            if ((ctx->extra_certs = sk_X509_new_null()) == NULL) {
++                SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
++                return 0;
++            }
++        }
++        if (!sk_X509_push(ctx->extra_certs, (X509 *)parg)) {
++            SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
++            return 0;
+         }
+-        sk_X509_push(ctx->extra_certs, (X509 *)parg);
+         break;
+ 
+     case SSL_CTRL_GET_EXTRA_CHAIN_CERTS:
+@@ -3839,7 +3767,7 @@ int ssl3_shutdown(SSL *s)
          if (ret == -1) {
              /*
               * we only get to return -1 here the 2nd/Nth invocation, we must
@@ -138249,7 +153892,7 @@
               */
              return (ret);
 diff --git a/ssl/s3_msg.c b/ssl/s3_msg.c
-index 8df1e6677f97..185f0e989032 100644
+index 8df1e66..185f0e9 100644
 --- a/ssl/s3_msg.c
 +++ b/ssl/s3_msg.c
 @@ -1,111 +1,10 @@
@@ -138380,7 +154023,7 @@
      s->s3->alert_dispatch = 1;
      s->s3->send_alert[0] = level;
 diff --git a/ssl/ssl_asn1.c b/ssl/ssl_asn1.c
-index a3bbfe4fc7f4..67d8e0c49875 100644
+index a3bbfe4..67d8e0c 100644
 --- a/ssl/ssl_asn1.c
 +++ b/ssl/ssl_asn1.c
 @@ -1,59 +1,12 @@
@@ -138451,7 +154094,7 @@
   * Copyright 2005 Nokia. All rights reserved.
   *
 diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c
-index 04a4a36d7713..d668afafe798 100644
+index 04a4a36..c6e2d09 100644
 --- a/ssl/ssl_cert.c
 +++ b/ssl/ssl_cert.c
 @@ -1,112 +1,12 @@
@@ -138610,7 +154253,72 @@
  
      /* Verify via DANE if enabled */
      if (DANETLS_ENABLED(&s->dane))
-@@ -836,19 +738,24 @@ static int ssl_add_cert_to_buf(BUF_MEM *buf, unsigned long *l, X509 *x)
+@@ -568,11 +470,16 @@ STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk)
+     X509_NAME *name;
+ 
+     ret = sk_X509_NAME_new_null();
++    if (ret == NULL) {
++        SSLerr(SSL_F_SSL_DUP_CA_LIST, ERR_R_MALLOC_FAILURE);
++        return NULL;
++    }
+     for (i = 0; i < sk_X509_NAME_num(sk); i++) {
+         name = X509_NAME_dup(sk_X509_NAME_value(sk, i));
+-        if ((name == NULL) || !sk_X509_NAME_push(ret, name)) {
++        if (name == NULL || !sk_X509_NAME_push(ret, name)) {
+             sk_X509_NAME_pop_free(ret, X509_NAME_free);
+-            return (NULL);
++            X509_NAME_free(name);
++            return NULL;
+         }
+     }
+     return (ret);
+@@ -696,14 +603,18 @@ STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file)
+         if (lh_X509_NAME_retrieve(name_hash, xn) != NULL) {
+             /* Duplicate. */
+             X509_NAME_free(xn);
++            xn = NULL;
+         } else {
+-            lh_X509_NAME_insert(name_hash, xn);
+-            sk_X509_NAME_push(ret, xn);
++            if (!lh_X509_NAME_insert(name_hash, xn))
++                goto err;
++            if (!sk_X509_NAME_push(ret, xn))
++                goto err;
+         }
+     }
+     goto done;
+ 
+  err:
++    X509_NAME_free(xn);
+     sk_X509_NAME_pop_free(ret, X509_NAME_free);
+     ret = NULL;
+  done:
+@@ -754,17 +665,20 @@ int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
+         xn = X509_NAME_dup(xn);
+         if (xn == NULL)
+             goto err;
+-        if (sk_X509_NAME_find(stack, xn) >= 0)
++        if (sk_X509_NAME_find(stack, xn) >= 0) {
++            /* Duplicate. */
+             X509_NAME_free(xn);
+-        else
+-            sk_X509_NAME_push(stack, xn);
++        } else if (!sk_X509_NAME_push(stack, xn)) {
++            X509_NAME_free(xn);
++            goto err;
++        }
+     }
+ 
+     ERR_clear_error();
+     goto done;
+ 
+  err:
+-        ret = 0;
++    ret = 0;
+  done:
+     BIO_free(in);
+     X509_free(x);
+@@ -836,19 +750,24 @@ static int ssl_add_cert_to_buf(BUF_MEM *buf, unsigned long *l, X509 *x)
      unsigned char *p;
  
      n = i2d_X509(x, NULL);
@@ -138639,7 +154347,7 @@
  {
      BUF_MEM *buf = s->init_buf;
 diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c
-index d0d9d88e1e39..5dbe1d015494 100644
+index d0d9d88..2fc4309 100644
 --- a/ssl/ssl_ciph.c
 +++ b/ssl/ssl_ciph.c
 @@ -1,112 +1,12 @@
@@ -138775,8 +154483,19 @@
  #include "ssl_locl.h"
  
  #define SSL_ENC_DES_IDX         0
+@@ -1954,8 +1855,8 @@ int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm)
+                SSL_R_DUPLICATE_COMPRESSION_ID);
+         return (1);
+     }
+-    if ((ssl_comp_methods == NULL)
+-               || !sk_SSL_COMP_push(ssl_comp_methods, comp)) {
++    if (ssl_comp_methods == NULL
++        || !sk_SSL_COMP_push(ssl_comp_methods, comp)) {
+         OPENSSL_free(comp);
+         CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);
+         SSLerr(SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD, ERR_R_MALLOC_FAILURE);
 diff --git a/ssl/ssl_conf.c b/ssl/ssl_conf.c
-index fa0e3534d280..7b462aade2d9 100644
+index fa0e353..890b0af 100644
 --- a/ssl/ssl_conf.c
 +++ b/ssl/ssl_conf.c
 @@ -1,58 +1,10 @@
@@ -138843,8 +154562,17 @@
   */
  
  #include <stdio.h>
+@@ -62,7 +14,7 @@
+ #include <openssl/dh.h>
+ 
+ /*
+- * structure holding name tables. This is used for pemitted elements in lists
++ * structure holding name tables. This is used for permitted elements in lists
+  * such as TLSv1.
+  */
+ 
 diff --git a/ssl/ssl_err.c b/ssl/ssl_err.c
-index df98c765382c..5741bb82558b 100644
+index df98c76..1b1f4bc 100644
 --- a/ssl/ssl_err.c
 +++ b/ssl/ssl_err.c
 @@ -1,61 +1,11 @@
@@ -139312,8 +155040,14 @@
      {ERR_REASON(SSL_R_NO_COMPRESSION_SPECIFIED), "no compression specified"},
      {ERR_REASON(SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER),
       "Peer haven't sent GOST certificate, required for selected ciphersuite"},
-@@ -557,15 +447,14 @@ static ERR_STRING_DATA SSL_str_reasons[] = {
-      "no shared sigature algorithms"},
+@@ -553,19 +443,18 @@ static ERR_STRING_DATA SSL_str_reasons[] = {
+     {ERR_REASON(SSL_R_NO_RENEGOTIATION), "no renegotiation"},
+     {ERR_REASON(SSL_R_NO_REQUIRED_DIGEST), "no required digest"},
+     {ERR_REASON(SSL_R_NO_SHARED_CIPHER), "no shared cipher"},
+-    {ERR_REASON(SSL_R_NO_SHARED_SIGATURE_ALGORITHMS),
+-     "no shared sigature algorithms"},
++    {ERR_REASON(SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS),
++     "no shared signature algorithms"},
      {ERR_REASON(SSL_R_NO_SRTP_PROFILES), "no srtp profiles"},
      {ERR_REASON(SSL_R_NO_VALID_SCTS), "no valid scts"},
 -    {ERR_REASON(SSL_R_NO_VERIFY_CALLBACK), "no verify callback"},
@@ -139441,7 +155175,7 @@
      {ERR_REASON(SSL_R_WRONG_SIGNATURE_SIZE), "wrong signature size"},
      {ERR_REASON(SSL_R_WRONG_SIGNATURE_TYPE), "wrong signature type"},
 diff --git a/ssl/ssl_init.c b/ssl/ssl_init.c
-index 546f5d23a89f..66525de6c55a 100644
+index 546f5d2..66525de 100644
 --- a/ssl/ssl_init.c
 +++ b/ssl/ssl_init.c
 @@ -1,63 +1,14 @@
@@ -139514,7 +155248,7 @@
  #include <openssl/crypto.h>
  #include <openssl/evp.h>
 diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
-index 06d972349a9d..d4b83359061e 100644
+index 06d9723..08e3673 100644
 --- a/ssl/ssl_lib.c
 +++ b/ssl/ssl_lib.c
 @@ -1,115 +1,12 @@
@@ -139628,9 +155362,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -139755,6 +155488,17 @@
          }
      }
  
+@@ -1027,9 +948,9 @@ void SSL_free(SSL *s)
+         BIO_free(s->bbio);
+         s->bbio = NULL;
+     }
+-    BIO_free_all(s->rbio);
+     if (s->wbio != s->rbio)
+         BIO_free_all(s->wbio);
++    BIO_free_all(s->rbio);
+ 
+     BUF_MEM_free(s->init_buf);
+ 
 @@ -1503,6 +1424,9 @@ static int ssl_start_async_job(SSL *s, struct ssl_async_args *args,
      case ASYNC_PAUSE:
          s->rwstate = SSL_ASYNC_PAUSED;
@@ -139785,6 +155529,15 @@
          return 1;
      case SSL_CTRL_SET_SPLIT_SEND_FRAGMENT:
          if ((unsigned int)larg > ctx->max_send_fragment || larg == 0)
+@@ -2117,7 +2041,7 @@ int SSL_get_servername_type(const SSL *s)
+  * is indicated to the callback. In this case, the client application has to
+  * abort the connection or have a default application level protocol. 2) If
+  * the server supports NPN, but advertises an empty list then the client
+- * selects the first protcol in its list, but indicates via the API that this
++ * selects the first protocol in its list, but indicates via the API that this
+  * fallback case was enacted. 3) Otherwise, the client finds the first
+  * protocol in the server's list that it supports and selects this protocol.
+  * This is because it's assumed that the server has better information about
 @@ -2429,7 +2353,8 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth)
      if ((ret->client_CA = sk_X509_NAME_new_null()) == NULL)
          goto err;
@@ -139985,15 +155738,15 @@
      if (!BIO_set_read_buffer_size(bbio, 1)) {
          SSLerr(SSL_F_SSL_INIT_WBIO_BUFFER, ERR_R_BUF_LIB);
 -        return (0);
-+        return 0;
-     }
+-    }
 -    if (push) {
 -        if (s->wbio != bbio)
 -            s->wbio = BIO_push(bbio, s->wbio);
 -    } else {
 -        if (s->wbio == bbio)
 -            s->wbio = BIO_pop(bbio);
--    }
++        return 0;
+     }
 -    return (1);
 +
 +    return 1;
@@ -140044,6 +155797,15 @@
  }
  
  /*
+@@ -4179,7 +4116,7 @@ int ssl_validate_ct(SSL *s)
+      * value is negative.
+      *
+      * XXX: One might well argue that the return value of this function is an
+-     * unforunate design choice.  Its job is only to determine the validation
++     * unfortunate design choice.  Its job is only to determine the validation
+      * status of each of the provided SCTs.  So long as it correctly separates
+      * the wheat from the chaff it should return success.  Failure in this case
+      * ought to correspond to an inability to carry out its duties.
 @@ -4195,6 +4132,23 @@ int ssl_validate_ct(SSL *s)
  
  end:
@@ -140069,7 +155831,7 @@
  }
  
 diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
-index 50e0d3900af1..35fd3fc7ac1c 100644
+index 50e0d39..35fd3fc 100644
 --- a/ssl/ssl_locl.h
 +++ b/ssl/ssl_locl.h
 @@ -1,112 +1,12 @@
@@ -140282,7 +156044,7 @@
  
  __owur int tls1_change_cipher_state(SSL *s, int which);
 diff --git a/ssl/ssl_mcnf.c b/ssl/ssl_mcnf.c
-index 614e0a742dca..b92b21068389 100644
+index 614e0a7..b92b210 100644
 --- a/ssl/ssl_mcnf.c
 +++ b/ssl/ssl_mcnf.c
 @@ -1,59 +1,10 @@
@@ -140351,15 +156113,13 @@
  
  #include <stdio.h>
 diff --git a/ssl/ssl_rsa.c b/ssl/ssl_rsa.c
-index 00bf887fdbdd..aad65ead8920 100644
+index 00bf887..aad65ea 100644
 --- a/ssl/ssl_rsa.c
 +++ b/ssl/ssl_rsa.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -140407,7 +156167,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -140486,7 +156248,7 @@
          serverinfo_length += extension_length;
  
 diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c
-index d5b7fe331093..9095363702cb 100644
+index d5b7fe3..41abe44 100644
 --- a/ssl/ssl_sess.c
 +++ b/ssl/ssl_sess.c
 @@ -1,112 +1,12 @@
@@ -140640,7 +156402,63 @@
           *     ServerHello extensions, and before recording the session
           *     ID received from the server, so this block is a noop.
           */
-@@ -925,6 +828,11 @@ long SSL_SESSION_set_time(SSL_SESSION *s, long t)
+@@ -456,6 +359,7 @@ int ssl_get_new_session(SSL *s, int session)
+         CRYPTO_THREAD_unlock(s->session_ctx->lock);
+         CRYPTO_THREAD_unlock(s->lock);
+         /* Choose a session ID */
++        memset(ss->session_id, 0, ss->session_id_length);
+         tmp = ss->session_id_length;
+         if (!cb(s, ss->session_id, &tmp)) {
+             /* The callback failed */
+@@ -568,6 +472,7 @@ int ssl_get_prev_session(SSL *s, const PACKET *ext, const PACKET *session_id)
+         SSL_SESSION data;
+         size_t local_len;
+         data.ssl_version = s->version;
++        memset(data.session_id, 0, sizeof(data.session_id));
+         if (!PACKET_copy_all(session_id, data.session_id,
+                              sizeof(data.session_id),
+                              &local_len)) {
+@@ -871,28 +776,20 @@ int SSL_SESSION_up_ref(SSL_SESSION *ss)
+ 
+ int SSL_set_session(SSL *s, SSL_SESSION *session)
+ {
+-    int ret = 0;
+-    if (session != NULL) {
+-        if (s->ctx->method != s->method) {
+-            if (!SSL_set_ssl_method(s, s->ctx->method))
+-                return (0);
+-        }
++    ssl_clear_bad_session(s);
++    if (s->ctx->method != s->method) {
++        if (!SSL_set_ssl_method(s, s->ctx->method))
++            return 0;
++    }
+ 
++    if (session != NULL) {
+         SSL_SESSION_up_ref(session);
+-        SSL_SESSION_free(s->session);
+-        s->session = session;
+-        s->verify_result = s->session->verify_result;
+-        ret = 1;
+-    } else {
+-        SSL_SESSION_free(s->session);
+-        s->session = NULL;
+-        if (s->ctx->method != s->method) {
+-            if (!SSL_set_ssl_method(s, s->ctx->method))
+-                return (0);
+-        }
+-        ret = 1;
++        s->verify_result = session->verify_result;
+     }
+-    return (ret);
++    SSL_SESSION_free(s->session);
++    s->session = session;
++
++    return 1;
+ }
+ 
+ long SSL_SESSION_set_timeout(SSL_SESSION *s, long t)
+@@ -925,6 +822,11 @@ long SSL_SESSION_set_time(SSL_SESSION *s, long t)
      return (t);
  }
  
@@ -140652,7 +156470,7 @@
  const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s)
  {
      return s->tlsext_hostname;
-@@ -1074,10 +982,10 @@ void SSL_CTX_flush_sessions(SSL_CTX *s, long t)
+@@ -1074,10 +976,10 @@ void SSL_CTX_flush_sessions(SSL_CTX *s, long t)
          return;
      tp.time = t;
      CRYPTO_THREAD_write_lock(s->lock);
@@ -140666,7 +156484,7 @@
      CRYPTO_THREAD_unlock(s->lock);
  }
  
-@@ -1086,7 +994,7 @@ int ssl_clear_bad_session(SSL *s)
+@@ -1086,7 +988,7 @@ int ssl_clear_bad_session(SSL *s)
      if ((s->session != NULL) &&
          !(s->shutdown & SSL_SENT_SHUTDOWN) &&
          !(SSL_in_init(s) || SSL_in_before(s))) {
@@ -140676,7 +156494,7 @@
      } else
          return (0);
 diff --git a/ssl/ssl_stat.c b/ssl/ssl_stat.c
-index 240dfdfb6827..1928bd25055f 100644
+index 240dfdf..1928bd2 100644
 --- a/ssl/ssl_stat.c
 +++ b/ssl/ssl_stat.c
 @@ -1,59 +1,12 @@
@@ -140747,15 +156565,13 @@
   * Copyright 2005 Nokia. All rights reserved.
   *
 diff --git a/ssl/ssl_txt.c b/ssl/ssl_txt.c
-index b2c6bf7ce655..df7c74b4f31a 100644
+index b2c6bf7..df7c74b 100644
 --- a/ssl/ssl_txt.c
 +++ b/ssl/ssl_txt.c
 @@ -1,59 +1,12 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -140803,7 +156619,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -140827,7 +156645,7 @@
       */
      if (BIO_puts(bp, "RSA ") <= 0)
 diff --git a/ssl/ssl_utst.c b/ssl/ssl_utst.c
-index 335cf0d506b8..09e76d14a736 100644
+index 335cf0d..09e76d1 100644
 --- a/ssl/ssl_utst.c
 +++ b/ssl/ssl_utst.c
 @@ -1,55 +1,10 @@
@@ -140892,7 +156710,7 @@
  
  #include "ssl_locl.h"
 diff --git a/ssl/statem/statem.c b/ssl/statem/statem.c
-index 08ae21a3b0f7..28483e7944ff 100644
+index 08ae21a..28483e7 100644
 --- a/ssl/statem/statem.c
 +++ b/ssl/statem/statem.c
 @@ -1,58 +1,10 @@
@@ -140968,25 +156786,23 @@
 -                 * Ok, we now need to push on a buffering BIO ...but not with
 -                 * SCTP
 -                 */
--#ifndef OPENSSL_NO_SCTP
--                if (!SSL_IS_DTLS(s) || !BIO_dgram_is_sctp(SSL_get_wbio(s)))
--#endif
--                    if (!ssl_init_wbio_buffer(s, server ? 1 : 0)) {
--                        goto end;
--                    }
- 
--            ssl3_init_finished_mac(s);
++
 +        /*
 +         * Ok, we now need to push on a buffering BIO ...but not with
 +         * SCTP
 +         */
-+#ifndef OPENSSL_NO_SCTP
+ #ifndef OPENSSL_NO_SCTP
+-                if (!SSL_IS_DTLS(s) || !BIO_dgram_is_sctp(SSL_get_wbio(s)))
 +        if (!SSL_IS_DTLS(s) || !BIO_dgram_is_sctp(SSL_get_wbio(s)))
-+#endif
+ #endif
+-                    if (!ssl_init_wbio_buffer(s, server ? 1 : 0)) {
+-                        goto end;
+-                    }
 +            if (!ssl_init_wbio_buffer(s)) {
 +                goto end;
 +            }
-+
+ 
+-            ssl3_init_finished_mac(s);
 +        if (!server || st->state != MSG_FLOW_RENEGOTIATE) {
 +            if (!ssl3_init_finished_mac(s)) {
 +                ossl_statem_set_error(s);
@@ -141015,7 +156831,7 @@
                  return SUB_STATE_ERROR;
              }
 diff --git a/ssl/statem/statem.h b/ssl/statem/statem.h
-index 263a39539220..e2aef1558332 100644
+index 263a395..e2aef15 100644
 --- a/ssl/statem/statem.h
 +++ b/ssl/statem/statem.h
 @@ -1,60 +1,15 @@
@@ -141087,7 +156903,7 @@
   *                                                                           *
   *****************************************************************************/
 diff --git a/ssl/statem/statem_clnt.c b/ssl/statem/statem_clnt.c
-index 5b53b8605d85..078349fbb19c 100644
+index 5b53b86..9fae190 100644
 --- a/ssl/statem/statem_clnt.c
 +++ b/ssl/statem/statem_clnt.c
 @@ -1,112 +1,12 @@
@@ -141392,6 +157208,15 @@
          if (alg_a & (SSL_aRSA|SSL_aDSS))
              pkey = X509_get0_pubkey(s->session->peer);
          /* else anonymous DH, so no certificate or pkey. */
+@@ -2274,7 +2178,7 @@ psk_err:
+ #ifndef OPENSSL_NO_DH
+     else if (alg_k & (SSL_kDHE | SSL_kDHEPSK)) {
+         DH *dh_clnt = NULL;
+-        BIGNUM *pub_key;
++        const BIGNUM *pub_key;
+         skey = s->s3->peer_tmp;
+         if (skey == NULL) {
+             SSLerr(SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE,
 @@ -2538,6 +2442,9 @@ int tls_client_key_exchange_post_work(SSL *s)
      unsigned char *pms = NULL;
      size_t pmslen = 0;
@@ -141426,7 +157251,7 @@
  #ifndef OPENSSL_NO_SCTP
      if (SSL_IS_DTLS(s)) {
 diff --git a/ssl/statem/statem_dtls.c b/ssl/statem/statem_dtls.c
-index a3090ef49081..d75483af6d40 100644
+index a3090ef..946dee0 100644
 --- a/ssl/statem/statem_dtls.c
 +++ b/ssl/statem/statem_dtls.c
 @@ -1,115 +1,10 @@
@@ -141436,8 +157261,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 1998-2005 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -141486,7 +157310,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
++ * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - */
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
@@ -141550,7 +157375,15 @@
   */
  
  #include <limits.h>
-@@ -224,8 +119,9 @@ int dtls1_do_write(SSL *s, int type)
+@@ -118,7 +13,6 @@
+ #include "../ssl_locl.h"
+ #include "statem_locl.h"
+ #include <openssl/buffer.h>
+-#include <openssl/rand.h>
+ #include <openssl/objects.h>
+ #include <openssl/evp.h>
+ #include <openssl/x509.h>
+@@ -224,8 +118,9 @@ int dtls1_do_write(SSL *s, int type)
      if (!dtls1_query_mtu(s))
          return -1;
  
@@ -141562,7 +157395,7 @@
  
      if (s->init_off == 0 && type == SSL3_RT_HANDSHAKE)
          OPENSSL_assert(s->init_num ==
-@@ -1022,7 +918,7 @@ WORK_STATE dtls_wait_for_dry(SSL *s)
+@@ -1022,7 +917,7 @@ WORK_STATE dtls_wait_for_dry(SSL *s)
  int dtls1_read_failed(SSL *s, int code)
  {
      if (code > 0) {
@@ -141571,7 +157404,7 @@
          return 1;
      }
  
-@@ -1079,10 +975,8 @@ int dtls1_retransmit_buffered_messages(SSL *s)
+@@ -1079,10 +974,8 @@ int dtls1_retransmit_buffered_messages(SSL *s)
                                       dtls1_get_queue_priority
                                       (frag->msg_header.seq,
                                        frag->msg_header.is_ccs),
@@ -141583,7 +157416,7 @@
      }
  
      return 1;
-@@ -1174,7 +1068,7 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, int *found)
+@@ -1174,7 +1067,7 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, int *found)
  
      item = pqueue_find(s->d1->sent_messages, seq64be);
      if (item == NULL) {
@@ -141593,7 +157426,7 @@
          return 0;
      }
 diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c
-index 8fcc23246e11..eb3e59108008 100644
+index 8fcc232..85523da 100644
 --- a/ssl/statem/statem_lib.c
 +++ b/ssl/statem/statem_lib.c
 @@ -1,112 +1,12 @@
@@ -141716,7 +157549,15 @@
  /* ====================================================================
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   * ECC cipher suite support in OpenSSL originally developed by
-@@ -454,6 +354,16 @@ int tls_get_message_header(SSL *s, int *mt)
+@@ -119,7 +19,6 @@
+ #include "../ssl_locl.h"
+ #include "statem_locl.h"
+ #include <openssl/buffer.h>
+-#include <openssl/rand.h>
+ #include <openssl/objects.h>
+ #include <openssl/evp.h>
+ #include <openssl/x509.h>
+@@ -454,6 +353,16 @@ int tls_get_message_header(SSL *s, int *mt)
                  return 0;
              }
              if (recvd_type == SSL3_RT_CHANGE_CIPHER_SPEC) {
@@ -141733,7 +157574,7 @@
                  s->s3->tmp.message_type = *mt = SSL3_MT_CHANGE_CIPHER_SPEC;
                  s->init_num = i - 1;
                  s->s3->tmp.message_size = i;
-@@ -648,6 +558,13 @@ int ssl_verify_alarm_type(long type)
+@@ -648,6 +557,13 @@ int ssl_verify_alarm_type(long type)
      case X509_V_ERR_CRL_NOT_YET_VALID:
      case X509_V_ERR_CERT_UNTRUSTED:
      case X509_V_ERR_CERT_REJECTED:
@@ -141747,7 +157588,7 @@
          al = SSL_AD_BAD_CERTIFICATE;
          break;
      case X509_V_ERR_CERT_SIGNATURE_FAILURE:
-@@ -661,7 +578,10 @@ int ssl_verify_alarm_type(long type)
+@@ -661,7 +577,10 @@ int ssl_verify_alarm_type(long type)
      case X509_V_ERR_CERT_REVOKED:
          al = SSL_AD_CERTIFICATE_REVOKED;
          break;
@@ -141759,7 +157600,7 @@
          break;
      case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
 diff --git a/ssl/statem/statem_locl.h b/ssl/statem/statem_locl.h
-index 57b7c372c58f..9f7ec88b6b91 100644
+index 57b7c37..9f7ec88 100644
 --- a/ssl/statem/statem_locl.h
 +++ b/ssl/statem/statem_locl.h
 @@ -1,55 +1,10 @@
@@ -141825,7 +157666,7 @@
  
  /*****************************************************************************
 diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c
-index 38fa9455ff80..f4fe2b9f404b 100644
+index 38fa945..a88b321 100644
 --- a/ssl/statem/statem_srvr.c
 +++ b/ssl/statem/statem_srvr.c
 @@ -1,112 +1,12 @@
@@ -142055,6 +157896,15 @@
              goto f_err;
          }
      } else if (s->hit)
+@@ -1678,7 +1602,7 @@ int tls_construct_server_key_exchange(SSL *s)
+     int al, i;
+     unsigned long type;
+     int n;
+-    BIGNUM *r[4];
++    const BIGNUM *r[4];
+     int nr[4], kn;
+     BUF_MEM *buf;
+     EVP_MD_CTX *md_ctx = EVP_MD_CTX_new();
 @@ -2079,7 +2003,6 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
      EVP_PKEY *ckey = NULL;
  #endif
@@ -142063,7 +157913,104 @@
      unsigned char *rsa_decrypt = NULL;
  
      alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
-@@ -2301,6 +2224,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+@@ -2164,7 +2087,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+         unsigned char rand_premaster_secret[SSL_MAX_MASTER_KEY_LENGTH];
+         int decrypt_len;
+         unsigned char decrypt_good, version_good;
+-        size_t j;
++        size_t j, padding_len;
+ 
+         /* FIX THIS UP EAY EAY EAY EAY */
+         rsa = EVP_PKEY_get0_RSA(s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey);
+@@ -2221,17 +2144,37 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+             goto err;
+         }
+ 
++        /*
++         * Decrypt with no padding. PKCS#1 padding will be removed as part of
++         * the timing-sensitive code below.
++         */
+         decrypt_len = RSA_private_decrypt(PACKET_remaining(&enc_premaster),
+                                           PACKET_data(&enc_premaster),
+-                                          rsa_decrypt, rsa, RSA_PKCS1_PADDING);
+-        ERR_clear_error();
++                                          rsa_decrypt, rsa, RSA_NO_PADDING);
++        if (decrypt_len < 0) {
++            goto err;
++        }
++
++        /* Check the padding. See RFC 3447, section 7.2.2. */
+ 
+         /*
+-         * decrypt_len should be SSL_MAX_MASTER_KEY_LENGTH. decrypt_good will
+-         * be 0xff if so and zero otherwise.
++         * The smallest padded premaster is 11 bytes of overhead. Small keys
++         * are publicly invalid, so this may return immediately. This ensures
++         * PS is at least 8 bytes.
+          */
+-        decrypt_good =
+-            constant_time_eq_int_8(decrypt_len, SSL_MAX_MASTER_KEY_LENGTH);
++        if (decrypt_len < 11 + SSL_MAX_MASTER_KEY_LENGTH) {
++            al = SSL_AD_DECRYPT_ERROR;
++            SSLerr(SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE, SSL_R_DECRYPTION_FAILED);
++            goto f_err;
++        }
++
++        padding_len = decrypt_len - SSL_MAX_MASTER_KEY_LENGTH;
++        decrypt_good = constant_time_eq_int_8(rsa_decrypt[0], 0) &
++                       constant_time_eq_int_8(rsa_decrypt[1], 2);
++        for (j = 2; j < padding_len - 1; j++) {
++            decrypt_good &= ~constant_time_is_zero_8(rsa_decrypt[j]);
++        }
++        decrypt_good &= constant_time_is_zero_8(rsa_decrypt[padding_len - 1]);
+ 
+         /*
+          * If the version in the decrypted pre-master secret is correct then
+@@ -2242,10 +2185,10 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+          * constant time and are treated like any other decryption error.
+          */
+         version_good =
+-            constant_time_eq_8(rsa_decrypt[0],
++            constant_time_eq_8(rsa_decrypt[padding_len],
+                                (unsigned)(s->client_version >> 8));
+         version_good &=
+-            constant_time_eq_8(rsa_decrypt[1],
++            constant_time_eq_8(rsa_decrypt[padding_len + 1],
+                                (unsigned)(s->client_version & 0xff));
+ 
+         /*
+@@ -2259,10 +2202,10 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+          */
+         if (s->options & SSL_OP_TLS_ROLLBACK_BUG) {
+             unsigned char workaround_good;
+-            workaround_good =
+-                constant_time_eq_8(rsa_decrypt[0], (unsigned)(s->version >> 8));
++            workaround_good = constant_time_eq_8(rsa_decrypt[padding_len],
++                                                 (unsigned)(s->version >> 8));
+             workaround_good &=
+-                constant_time_eq_8(rsa_decrypt[1],
++                constant_time_eq_8(rsa_decrypt[padding_len + 1],
+                                    (unsigned)(s->version & 0xff));
+             version_good |= workaround_good;
+         }
+@@ -2280,12 +2223,13 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+          * it is still sufficiently large to read from.
+          */
+         for (j = 0; j < sizeof(rand_premaster_secret); j++) {
+-            rsa_decrypt[j] =
+-                constant_time_select_8(decrypt_good, rsa_decrypt[j],
++            rsa_decrypt[padding_len + j] =
++                constant_time_select_8(decrypt_good,
++                                       rsa_decrypt[padding_len + j],
+                                        rand_premaster_secret[j]);
+         }
+ 
+-        if (!ssl_generate_master_secret(s, rsa_decrypt,
++        if (!ssl_generate_master_secret(s, rsa_decrypt + padding_len,
+                                         sizeof(rand_premaster_secret), 0)) {
+             al = SSL_AD_INTERNAL_ERROR;
+             SSLerr(SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR);
+@@ -2301,6 +2245,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
          DH *cdh;
          unsigned int i;
          BIGNUM *pub_key;
@@ -142071,7 +158018,7 @@
  
          if (!PACKET_get_net_2(pkt, &i)) {
              if (alg_k & (SSL_kDHE | SSL_kDHEPSK)) {
-@@ -2378,6 +2302,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+@@ -2378,6 +2323,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
              goto f_err;
          } else {
              unsigned int i;
@@ -142079,7 +158026,7 @@
  
              /*
               * Get client's public key from encoded point in the
-@@ -2425,6 +2350,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+@@ -2425,6 +2371,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
  #ifndef OPENSSL_NO_SRP
      if (alg_k & SSL_kSRP) {
          unsigned int i;
@@ -142087,7 +158034,7 @@
  
          if (!PACKET_get_net_2(pkt, &i)
                  || !PACKET_get_bytes(pkt, &data, i)) {
-@@ -2467,6 +2393,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
+@@ -2467,6 +2414,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
          int Ttag, Tclass;
          long Tlen;
          long sess_key_len;
@@ -142095,7 +158042,7 @@
  
          /* Get our certificate private key */
          alg_a = s->s3->tmp.new_cipher->algorithm_auth;
-@@ -2909,7 +2836,7 @@ MSG_PROCESS_RETURN tls_process_client_certificate(SSL *s, PACKET *pkt)
+@@ -2909,7 +2857,7 @@ MSG_PROCESS_RETURN tls_process_client_certificate(SSL *s, PACKET *pkt)
      s->session->peer_chain = sk;
      /*
       * Inconsistency alert: cert_chain does *not* include the peer's own
@@ -142104,7 +158051,7 @@
       */
      sk = NULL;
      ret = MSG_PROCESS_CONTINUE_READING;
-@@ -2956,7 +2883,8 @@ int tls_construct_new_session_ticket(SSL *s)
+@@ -2956,7 +2904,8 @@ int tls_construct_new_session_ticket(SSL *s)
      unsigned int hlen;
      SSL_CTX *tctx = s->initial_ctx;
      unsigned char iv[EVP_MAX_IV_LENGTH];
@@ -142114,7 +158061,7 @@
  
      /* get session encoding length */
      slen_full = i2d_SSL_SESSION(s->session, NULL);
-@@ -3006,13 +2934,14 @@ int tls_construct_new_session_ticket(SSL *s)
+@@ -3006,13 +2955,14 @@ int tls_construct_new_session_ticket(SSL *s)
       * Grow buffer if need be: the length calculation is as
       * follows handshake_header_length +
       * 4 (ticket lifetime hint) + 2 (ticket length) +
@@ -142134,7 +158081,7 @@
          goto err;
  
      p = ssl_handshake_start(s);
-@@ -3021,18 +2950,38 @@ int tls_construct_new_session_ticket(SSL *s)
+@@ -3021,18 +2971,38 @@ int tls_construct_new_session_ticket(SSL *s)
       * all the work otherwise use generated values from parent ctx.
       */
      if (tctx->tlsext_ticket_key_cb) {
@@ -142178,7 +158125,7 @@
      }
  
      /*
-@@ -3046,11 +2995,11 @@ int tls_construct_new_session_ticket(SSL *s)
+@@ -3046,11 +3016,11 @@ int tls_construct_new_session_ticket(SSL *s)
      p += 2;
      /* Output key name */
      macstart = p;
@@ -142195,7 +158142,7 @@
      if (!EVP_EncryptUpdate(ctx, p, &len, senc, slen))
          goto err;
 diff --git a/ssl/t1_enc.c b/ssl/t1_enc.c
-index 6e56441d0fba..920a1785131c 100644
+index 6e56441..124a53c 100644
 --- a/ssl/t1_enc.c
 +++ b/ssl/t1_enc.c
 @@ -1,112 +1,12 @@
@@ -142318,8 +158265,17 @@
  /* ====================================================================
   * Copyright 2005 Nokia. All rights reserved.
   *
+@@ -241,7 +141,7 @@ int tls1_change_cipher_state(SSL *s, int which)
+             goto err;
+         else
+             /*
+-             * make sure it's intialized in case we exit later with an error
++             * make sure it's initialised in case we exit later with an error
+              */
+             EVP_CIPHER_CTX_reset(s->enc_read_ctx);
+         dd = s->enc_read_ctx;
 diff --git a/ssl/t1_ext.c b/ssl/t1_ext.c
-index 3bbe1fd82697..2db949d8acc5 100644
+index 3bbe1fd..2db949d 100644
 --- a/ssl/t1_ext.c
 +++ b/ssl/t1_ext.c
 @@ -1,55 +1,10 @@
@@ -142416,7 +158372,7 @@
      memset(meth, 0, sizeof(*meth));
      meth->parse_cb = parse_cb;
 diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c
-index 9f6cef3afba8..20d67876a0c0 100644
+index 9f6cef3..3e27d65 100644
 --- a/ssl/t1_lib.c
 +++ b/ssl/t1_lib.c
 @@ -1,111 +1,10 @@
@@ -142537,16 +158493,17 @@
   */
  
  #include <stdio.h>
-@@ -114,6 +13,8 @@
+@@ -114,7 +13,8 @@
  #include <openssl/evp.h>
  #include <openssl/hmac.h>
  #include <openssl/ocsp.h>
+-#include <openssl/rand.h>
 +#include <openssl/conf.h>
 +#include <openssl/x509v3.h>
- #include <openssl/rand.h>
  #include <openssl/dh.h>
  #include <openssl/bn.h>
-@@ -767,7 +668,7 @@ static int tls1_check_cert_param(SSL *s, X509 *x, int set_ee_md)
+ #include "ssl_locl.h"
+@@ -767,7 +667,7 @@ static int tls1_check_cert_param(SSL *s, X509 *x, int set_ee_md)
  
  # ifndef OPENSSL_NO_EC
  /*
@@ -142555,7 +158512,7 @@
   * @s: SSL connection
   * @cid: Cipher ID we're considering using
   *
-@@ -1179,7 +1080,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
+@@ -1179,7 +1079,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
  
          /*-
           * check for enough space.
@@ -142564,7 +158521,7 @@
           * 2 for servernamelist length
           * 1 for the hostname type
           * 2 for hostname length
-@@ -1217,7 +1118,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
+@@ -1217,7 +1117,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
  
          /*-
           * check for enough space.
@@ -142573,7 +158530,7 @@
           * 1 for the srp user identity
           * + srp user identity length
           */
-@@ -1329,7 +1230,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
+@@ -1329,7 +1229,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
      }
   skip_ext:
  
@@ -142582,7 +158539,7 @@
          size_t salglen;
          const unsigned char *salg;
          unsigned char *etmp;
-@@ -1414,7 +1315,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
+@@ -1414,7 +1314,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
  #ifndef OPENSSL_NO_NEXTPROTONEG
      if (s->ctx->next_proto_select_cb && !s->s3->tmp.finish_md_len) {
          /*
@@ -142591,7 +158548,7 @@
           * for Next Protocol Negotiation
           */
          if (limit - ret - 4 < 0)
-@@ -1466,10 +1367,8 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
+@@ -1466,10 +1366,8 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
      /* Add custom TLS Extensions to ClientHello */
      if (!custom_ext_add(s, 0, &ret, limit, al))
          return NULL;
@@ -142602,7 +158559,7 @@
  #ifndef OPENSSL_NO_CT
      if (s->ct_validation_callback != NULL) {
          s2n(TLSEXT_TYPE_signed_certificate_timestamp, ret);
-@@ -1603,6 +1502,9 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *buf,
+@@ -1603,6 +1501,9 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *buf,
              return NULL;
          s2n(TLSEXT_TYPE_session_ticket, ret);
          s2n(0, ret);
@@ -142612,7 +158569,7 @@
      }
  
      if (s->tlsext_status_expected) {
-@@ -1696,7 +1598,6 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *buf,
+@@ -1696,7 +1597,6 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *buf,
  #endif
      if (!custom_ext_add(s, 1, &ret, limit, al))
          return NULL;
@@ -142620,7 +158577,7 @@
      if (s->s3->flags & TLS1_FLAGS_ENCRYPT_THEN_MAC) {
          /*
           * Don't use encrypt_then_mac if AEAD or RC4 might want to disable
-@@ -1712,7 +1613,6 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *buf,
+@@ -1712,7 +1612,6 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *buf,
              s2n(0, ret);
          }
      }
@@ -142628,7 +158585,7 @@
      if (s->s3->flags & TLS1_FLAGS_RECEIVED_EXTMS) {
          s2n(TLSEXT_TYPE_extended_master_secret, ret);
          s2n(0, ret);
-@@ -1925,9 +1825,7 @@ static int ssl_scan_clienthello_tlsext(SSL *s, PACKET *pkt, int *al)
+@@ -1925,9 +1824,7 @@ static int ssl_scan_clienthello_tlsext(SSL *s, PACKET *pkt, int *al)
      /* Clear any signature algorithms extension received */
      OPENSSL_free(s->s3->tmp.peer_sigalgs);
      s->s3->tmp.peer_sigalgs = NULL;
@@ -142638,7 +158595,7 @@
  
  #ifndef OPENSSL_NO_SRP
      OPENSSL_free(s->srp_ctx.login);
-@@ -2004,7 +1902,7 @@ static int ssl_scan_clienthello_tlsext(SSL *s, PACKET *pkt, int *al)
+@@ -2004,7 +1901,7 @@ static int ssl_scan_clienthello_tlsext(SSL *s, PACKET *pkt, int *al)
              /*
               * Although the server_name extension was intended to be
               * extensible to new name types, RFC 4366 defined the
@@ -142647,7 +158604,7 @@
               * such.
               * RFC 6066 corrected the mistake but adding new name types
               * is nevertheless no longer feasible, so act as if no other
-@@ -2235,7 +2133,7 @@ static int ssl_scan_clienthello_tlsext(SSL *s, PACKET *pkt, int *al)
+@@ -2235,7 +2132,7 @@ static int ssl_scan_clienthello_tlsext(SSL *s, PACKET *pkt, int *al)
               *
               * s->new_session will be set on renegotiation, but we
               * probably shouldn't rely that it couldn't be set on
@@ -142656,7 +158613,7 @@
               * there's some other reason to disallow resuming an
               * earlier session -- the current code won't be doing
               * anything like that, but this might change).
-@@ -2264,10 +2162,8 @@ static int ssl_scan_clienthello_tlsext(SSL *s, PACKET *pkt, int *al)
+@@ -2264,10 +2161,8 @@ static int ssl_scan_clienthello_tlsext(SSL *s, PACKET *pkt, int *al)
                  return 0;
          }
  #endif
@@ -142667,7 +158624,7 @@
          /*
           * Note: extended master secret extension handled in
           * tls_check_serverhello_tlsext_early()
-@@ -2337,11 +2233,11 @@ int ssl_parse_clienthello_tlsext(SSL *s, PACKET *pkt)
+@@ -2337,11 +2232,11 @@ int ssl_parse_clienthello_tlsext(SSL *s, PACKET *pkt)
   */
  static char ssl_next_proto_validate(PACKET *pkt)
  {
@@ -142682,7 +158639,7 @@
              return 0;
      }
  
-@@ -2367,9 +2263,7 @@ static int ssl_scan_serverhello_tlsext(SSL *s, PACKET *pkt, int *al)
+@@ -2367,9 +2262,7 @@ static int ssl_scan_serverhello_tlsext(SSL *s, PACKET *pkt, int *al)
                               SSL_DTLSEXT_HB_DONT_SEND_REQUESTS);
  #endif
  
@@ -142692,7 +158649,7 @@
  
      s->s3->flags &= ~TLS1_FLAGS_RECEIVED_EXTMS;
  
-@@ -2581,14 +2475,12 @@ static int ssl_scan_serverhello_tlsext(SSL *s, PACKET *pkt, int *al)
+@@ -2581,14 +2474,12 @@ static int ssl_scan_serverhello_tlsext(SSL *s, PACKET *pkt, int *al)
                  return 0;
          }
  #endif
@@ -142707,7 +158664,17 @@
          else if (type == TLSEXT_TYPE_extended_master_secret) {
              s->s3->flags |= TLS1_FLAGS_RECEIVED_EXTMS;
              if (!s->hit)
-@@ -2737,7 +2629,8 @@ int tls1_set_server_sigalgs(SSL *s)
+@@ -2629,8 +2520,7 @@ static int ssl_scan_serverhello_tlsext(SSL *s, PACKET *pkt, int *al)
+      * an attack we should *always* see RI even on initial server hello
+      * because the client doesn't see any renegotiation during an attack.
+      * However this would mean we could not connect to any server which
+-     * doesn't support RI so for the immediate future tolerate RI absence on
+-     * initial connect only.
++     * doesn't support RI so for the immediate future tolerate RI absence
+      */
+     if (!renegotiate_seen && !(s->options & SSL_OP_LEGACY_SERVER_CONNECT)
+         && !(s->options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION)) {
+@@ -2737,7 +2627,8 @@ int tls1_set_server_sigalgs(SSL *s)
  {
      int al;
      size_t i;
@@ -142717,7 +158684,16 @@
      OPENSSL_free(s->cert->shared_sigalgs);
      s->cert->shared_sigalgs = NULL;
      s->cert->shared_sigalgslen = 0;
-@@ -3075,7 +2968,7 @@ int tls_check_serverhello_tlsext_early(SSL *s, const PACKET *ext,
+@@ -2757,7 +2648,7 @@ int tls1_set_server_sigalgs(SSL *s)
+         /* Fatal error is no shared signature algorithms */
+         if (!s->cert->shared_sigalgs) {
+             SSLerr(SSL_F_TLS1_SET_SERVER_SIGALGS,
+-                   SSL_R_NO_SHARED_SIGATURE_ALGORITHMS);
++                   SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS);
+             al = SSL_AD_ILLEGAL_PARAMETER;
+             goto err;
+         }
+@@ -3075,7 +2966,7 @@ end:
   * tls_decrypt_ticket attempts to decrypt a session ticket.
   *
   *   etick: points to the body of the session ticket extension.
@@ -142726,7 +158702,7 @@
   *   sess_id: points at the session ID.
   *   sesslen: the length of the session ID.
   *   psess: (output) on return, if a ticket was decrypted, then this is set to
-@@ -3126,15 +3019,17 @@ static int tls_decrypt_ticket(SSL *s, const unsigned char *etick,
+@@ -3126,15 +3017,17 @@ static int tls_decrypt_ticket(SSL *s, const unsigned char *etick,
              renew_ticket = 1;
      } else {
          /* Check key name matches */
@@ -142749,7 +158725,7 @@
         }
      }
 diff --git a/ssl/t1_reneg.c b/ssl/t1_reneg.c
-index 5c0d82537ea9..15a4e27a1540 100644
+index 5c0d825..15a4e27 100644
 --- a/ssl/t1_reneg.c
 +++ b/ssl/t1_reneg.c
 @@ -1,112 +1,12 @@
@@ -142873,7 +158849,7 @@
  #include <openssl/objects.h>
  #include "ssl_locl.h"
 diff --git a/ssl/t1_trce.c b/ssl/t1_trce.c
-index cb22d49c8216..562ac09e85fc 100644
+index cb22d49..562ac09 100644
 --- a/ssl/t1_trce.c
 +++ b/ssl/t1_trce.c
 @@ -1,55 +1,10 @@
@@ -142948,7 +158924,7 @@
      {TLSEXT_TYPE_padding, "padding"},
      {TLSEXT_TYPE_encrypt_then_mac, "encrypt_then_mac"},
 diff --git a/ssl/tls_srp.c b/ssl/tls_srp.c
-index cf5ccdca33f4..08e22df3ef54 100644
+index cf5ccdc..08e22df 100644
 --- a/ssl/tls_srp.c
 +++ b/ssl/tls_srp.c
 @@ -1,60 +1,10 @@
@@ -143017,9 +158993,21 @@
   */
  
  #include <openssl/crypto.h>
+diff --git a/test/CAss.cnf b/test/CAss.cnf
+index 336e82f..b20a242 100644
+--- a/test/CAss.cnf
++++ b/test/CAss.cnf
+@@ -71,6 +71,6 @@ emailAddress		= optional
+ [ v3_ca ]
+ subjectKeyIdentifier=hash
+ authorityKeyIdentifier=keyid:always,issuer:always
+-basicConstraints = CA:true,pathlen:1
++basicConstraints = critical,CA:true,pathlen:1
+ keyUsage = cRLSign, keyCertSign
+ issuerAltName=issuer:copy
 diff --git a/test/Makefile.in b/test/Makefile.in
 deleted file mode 100644
-index cefcd72ce517..000000000000
+index cefcd72..0000000
 --- a/test/Makefile.in
 +++ /dev/null
 @@ -1,410 +0,0 @@
@@ -143434,10 +159422,10 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/test/README.ssltest.md b/test/README.ssltest.md
-index b65a0d73acce..9cbfbc4f3b95 100644
+index b65a0d7..5797cf6 100644
 --- a/test/README.ssltest.md
 +++ b/test/README.ssltest.md
-@@ -59,6 +59,21 @@ First, give your test a name. The names do not have to be unique.
+@@ -59,6 +59,24 @@ The test section supports the following options:
  * Protocol - expected negotiated protocol. One of
    SSLv3, TLSv1, TLSv1.1, TLSv1.2.
  
@@ -143446,8 +159434,11 @@
 +  - AcceptAll - accepts all certificates.
 +  - RejectAll - rejects all certificates.
 +
-+* ServerName - the server the client is expected to successfully connect to
-+  - server1 - the initial context (default)
++* Method - the method to test. One of DTLS or TLS.
++
++* ServerName - the server the client should attempt to connect to. One of
++  - None - do not use SNI (default)
++  - server1 - the initial context
 +  - server2 - the secondary context
 +
 +* SessionTicketExpected - whether or not a session ticket is expected
@@ -143459,7 +159450,7 @@
  ## Configuring the client and server
  
  The client and server configurations can be any valid `SSL_CTX`
-@@ -73,6 +88,10 @@ server => {
+@@ -73,6 +91,10 @@ server => {
  }
  ```
  
@@ -143471,7 +159462,7 @@
  
  The default server certificate and CA files are added to the configurations
 diff --git a/test/aborttest.c b/test/aborttest.c
-index 98aeddfcaf70..ba5055edffcb 100644
+index 98aeddf..ba5055e 100644
 --- a/test/aborttest.c
 +++ b/test/aborttest.c
 @@ -1,11 +1,10 @@
@@ -143490,7 +159481,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/test/afalgtest.c b/test/afalgtest.c
-index 80aa1e7550da..3baced72ad77 100644
+index 80aa1e7..7fc03ba 100644
 --- a/test/afalgtest.c
 +++ b/test/afalgtest.c
 @@ -1,56 +1,12 @@
@@ -143557,12 +159548,28 @@
  #include <stdio.h>
  #include <openssl/opensslconf.h>
  
+@@ -146,8 +102,13 @@ int main(int argc, char **argv)
+ 
+     e = ENGINE_by_id("afalg");
+     if (e == NULL) {
+-        fprintf(stderr, "AFALG Test: Failed to load AFALG Engine\n");
+-        return 1;
++        /*
++         * A failure to load is probably a platform environment problem so we
++         * don't treat this as an OpenSSL test failure, i.e. we return 0
++         */
++        fprintf(stderr,
++                "AFALG Test: Failed to load AFALG Engine - skipping test\n");
++        return 0;
+     }
+ 
+     if (test_afalg_aes_128_cbc(e) == 0) {
 diff --git a/test/asynciotest.c b/test/asynciotest.c
 new file mode 100644
-index 000000000000..f80425eb9284
+index 0000000..de67cce
 --- /dev/null
 +++ b/test/asynciotest.c
-@@ -0,0 +1,380 @@
+@@ -0,0 +1,308 @@
 +/*
 + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
 + *
@@ -143580,6 +159587,8 @@
 +
 +#include "../ssl/packet_locl.h"
 +
++#include "ssltestlib.h"
++
 +/* Should we fragment records or not? 0 = no, !0 = yes*/
 +static int fragment = 0;
 +
@@ -143797,16 +159806,12 @@
 +    return async_write(bio, str, strlen(str));
 +}
 +
-+#define MAXLOOPS    100000
-+
 +int main(int argc, char *argv[])
 +{
 +    SSL_CTX *serverctx = NULL, *clientctx = NULL;
 +    SSL *serverssl = NULL, *clientssl = NULL;
-+    BIO *s_to_c_bio = NULL, *c_to_s_bio = NULL;
 +    BIO *s_to_c_fbio = NULL, *c_to_s_fbio = NULL;
-+    int retc = -1, rets = -1, err, abortctr;
-+    int test;
++    int test, err = 1;
 +
 +    CRYPTO_set_mem_debug(1);
 +    CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
@@ -143816,27 +159821,12 @@
 +        goto end;
 +    }
 +
-+    serverctx = SSL_CTX_new(TLS_server_method());
-+    clientctx = SSL_CTX_new(TLS_client_method());
-+    if (serverctx == NULL || clientctx == NULL) {
-+        printf("Failed to create SSL_CTX\n");
++    if (!create_ssl_ctx_pair(TLS_server_method(), TLS_client_method(),
++                             &serverctx, &clientctx, argv[1], argv[2])) {
++        printf("Failed to create SSL_CTX pair\n");
 +        goto end;
 +    }
 +
-+    if (SSL_CTX_use_certificate_file(serverctx, argv[1],
-+                                     SSL_FILETYPE_PEM) <= 0) {
-+        printf("Failed to load server certificate\n");
-+        goto end;
-+    }
-+    if (SSL_CTX_use_PrivateKey_file(serverctx, argv[2],
-+                                    SSL_FILETYPE_PEM) <= 0) {
-+        printf("Failed to load server private key\n");
-+    }
-+    if (SSL_CTX_check_private_key(serverctx) <= 0) {
-+        printf("Failed to check private key\n");
-+        goto end;
-+    }
-+
 +    /*
 +     * We do 2 test runs. The first time around we just do a normal handshake
 +     * with lots of async io going on. The second time around we also break up
@@ -143844,82 +159834,26 @@
 +     * CCS)
 +     */
 +    for (test = 1; test < 3; test++) {
-+        abortctr = 0;
-+        retc = rets = -1;
 +        if (test == 2)
 +            fragment = 1;
 +
-+        serverssl = SSL_new(serverctx);
-+        clientssl = SSL_new(clientctx);
-+        if (serverssl == NULL || clientssl == NULL) {
-+            printf("Failed to create SSL object\n");
-+            goto end;
-+        }
 +
-+        s_to_c_bio = BIO_new(BIO_s_mem());
-+        c_to_s_bio = BIO_new(BIO_s_mem());
-+        if (s_to_c_bio == NULL || c_to_s_bio == NULL) {
-+            printf("Failed to create mem BIOs\n");
-+            goto end;
-+        }
-+
 +        s_to_c_fbio = BIO_new(bio_f_async_filter());
 +        c_to_s_fbio = BIO_new(bio_f_async_filter());
 +        if (s_to_c_fbio == NULL || c_to_s_fbio == NULL) {
 +            printf("Failed to create filter BIOs\n");
++            BIO_free(s_to_c_fbio);
++            BIO_free(c_to_s_fbio);
 +            goto end;
 +        }
 +
-+        s_to_c_bio = BIO_push(s_to_c_fbio, s_to_c_bio);
-+        c_to_s_bio = BIO_push(c_to_s_fbio, c_to_s_bio);
-+        if (s_to_c_bio == NULL || c_to_s_bio == NULL) {
-+            printf("Failed to create chained BIOs\n");
++        /* BIOs get freed on error */
++        if (!create_ssl_connection(serverctx, clientctx, &serverssl, &clientssl,
++                                   s_to_c_fbio, c_to_s_fbio)) {
++            printf("Test %d failed: Create SSL connection failed\n", test);
 +            goto end;
 +        }
 +
-+        /* Set Non-blocking IO behaviour */
-+        BIO_set_mem_eof_return(s_to_c_bio, -1);
-+        BIO_set_mem_eof_return(c_to_s_bio, -1);
-+
-+        /* Up ref these as we are passing them to two SSL objects */
-+        BIO_up_ref(s_to_c_bio);
-+        BIO_up_ref(c_to_s_bio);
-+
-+        SSL_set_bio(serverssl, c_to_s_bio, s_to_c_bio);
-+        SSL_set_bio(clientssl, s_to_c_bio, c_to_s_bio);
-+
-+        do {
-+            err = SSL_ERROR_WANT_WRITE;
-+            while (retc <= 0 && err == SSL_ERROR_WANT_WRITE) {
-+                retc = SSL_connect(clientssl);
-+                if (retc <= 0)
-+                    err = SSL_get_error(clientssl, retc);
-+            }
-+
-+            if (retc <= 0 && err != SSL_ERROR_WANT_READ) {
-+                printf("Test %d failed: SSL_connect() failed %d, %d\n",
-+                       test, retc, err);
-+                goto end;
-+            }
-+
-+            err = SSL_ERROR_WANT_WRITE;
-+            while (rets <= 0 && err == SSL_ERROR_WANT_WRITE) {
-+                rets = SSL_accept(serverssl);
-+                if (rets <= 0)
-+                    err = SSL_get_error(serverssl, rets);
-+            }
-+
-+            if (rets <= 0 && err != SSL_ERROR_WANT_READ) {
-+                printf("Test %d failed: SSL_accept() failed %d, %d\n",
-+                       test, retc, err);
-+                goto end;
-+            }
-+            if (++abortctr == MAXLOOPS) {
-+                printf("Test %d failed: No progress made\n", test);
-+                goto end;
-+            }
-+        } while (retc <=0 || rets <= 0);
-+
 +        /* Also frees the BIOs */
 +        SSL_free(clientssl);
 +        SSL_free(serverssl);
@@ -143928,8 +159862,9 @@
 +
 +    printf("Test success\n");
 +
++    err = 0;
 + end:
-+    if (retc <= 0 || rets <= 0)
++    if (err)
 +        ERR_print_errors_fp(stderr);
 +
 +    SSL_free(clientssl);
@@ -143941,10 +159876,10 @@
 +    CRYPTO_mem_leaks_fp(stderr);
 +# endif
 +
-+    return (retc > 0 && rets > 0) ? 0 : 1;
++    return err;
 +}
 diff --git a/test/asynctest.c b/test/asynctest.c
-index 4694fda23c98..6728058c361a 100644
+index 4694fda..6728058 100644
 --- a/test/asynctest.c
 +++ b/test/asynctest.c
 @@ -1,58 +1,10 @@
@@ -144012,15 +159947,13 @@
  
  #include <stdio.h>
 diff --git a/test/bftest.c b/test/bftest.c
-index b5e6c5144dda..eb8d8a6fc22f 100644
+index b5e6c51..eb8d8a6 100644
 --- a/test/bftest.c
 +++ b/test/bftest.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -144068,7 +160001,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -144091,7 +160026,7 @@
  };
 diff --git a/test/bioprinttest.c b/test/bioprinttest.c
 new file mode 100644
-index 000000000000..c69a79c41948
+index 0000000..c69a79c
 --- /dev/null
 +++ b/test/bioprinttest.c
 @@ -0,0 +1,225 @@
@@ -144321,15 +160256,13 @@
 +
 +
 diff --git a/test/bntest.c b/test/bntest.c
-index 1ba903254b9e..763a8c29f974 100644
+index 1ba9032..763a8c2 100644
 --- a/test/bntest.c
 +++ b/test/bntest.c
 @@ -1,59 +1,12 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -144377,7 +160310,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -144416,7 +160351,7 @@
              if (!results) {
                  BN_print(bp, a);
 diff --git a/test/build.info b/test/build.info
-index 4fd4d99ece21..e9228d0dced8 100644
+index 4fd4d99..c37e6e0 100644
 --- a/test/build.info
 +++ b/test/build.info
 @@ -1,4 +1,4 @@
@@ -144425,7 +160360,7 @@
  IF[{- !$disabled{tests} -}]
    PROGRAMS=\
            aborttest \
-@@ -11,230 +11,281 @@ IF[{- !$disabled{tests} -}]
+@@ -11,230 +11,282 @@ IF[{- !$disabled{tests} -}]
            mdc2test rmdtest \
            randtest dhtest enginetest casttest \
            bftest ssltest_old dsatest exptest rsa_test \
@@ -144437,7 +160372,7 @@
            dtlsv1listentest ct_test threadstest afalgtest d2i_test \
 -          ssl_test_ctx_test ssl_test
 +          ssl_test_ctx_test ssl_test x509aux cipherlist_test asynciotest \
-+          bioprinttest getsettest
++          bioprinttest sslapitest
  
    SOURCE[aborttest]=aborttest.c
 -  INCLUDE[aborttest]={- rel2abs(catdir($builddir,"../include")) -} ../include
@@ -144722,12 +160657,13 @@
 -  INCLUDE[handshake_helper.o]={- rel2abs(catdir($builddir,"../include")) -} ../include
 +  INCLUDE[ssl_test_ctx.o]="{- rel2abs(catdir($builddir,"../include")) -}" ../include
 +  INCLUDE[handshake_helper.o]="{- rel2abs(catdir($builddir,"../include")) -}" ../include
++  INCLUDE[ssltestlib.o]="{- rel2abs(catdir($builddir,"../include")) -}" ../include
 +
 +  SOURCE[x509aux]=x509aux.c
 +  INCLUDE[x509aux]="{- rel2abs(catdir($builddir,"../include")) -}" ../include
 +  DEPEND[x509aux]=../libcrypto
 +
-+  SOURCE[asynciotest]=asynciotest.c
++  SOURCE[asynciotest]=asynciotest.c ssltestlib.c
 +  INCLUDE[asynciotest]="{- rel2abs(catdir($builddir,"../include")) -}" ../include
 +  DEPEND[asynciotest]=../libcrypto ../libssl
 +
@@ -144761,12 +160697,12 @@
 +   }
 +  -}
 +
-+  SOURCE[getsettest]=getsettest.c
-+  INCLUDE[getsettest]="{- rel2abs(catdir($builddir,"../include")) -}" ../include
-+  DEPEND[getsettest]=../libcrypto ../libssl
++  SOURCE[sslapitest]=sslapitest.c ssltestlib.c testutil.c
++  INCLUDE[sslapitest]="{- rel2abs(catdir($builddir,"../include")) -}" ../include
++  DEPEND[sslapitest]=../libcrypto ../libssl
  ENDIF
 diff --git a/test/casttest.c b/test/casttest.c
-index 79472d83e356..c2a0ab584c3b 100644
+index 79472d8..c2a0ab5 100644
 --- a/test/casttest.c
 +++ b/test/casttest.c
 @@ -1,58 +1,10 @@
@@ -144834,9 +160770,192 @@
   */
  
  #include <stdio.h>
+diff --git a/test/certs/bad-pc3-cert.pem b/test/certs/bad-pc3-cert.pem
+new file mode 100644
+index 0000000..f8e76ff
+--- /dev/null
++++ b/test/certs/bad-pc3-cert.pem
+@@ -0,0 +1,21 @@
++-----BEGIN CERTIFICATE-----
++MIIDajCCAlKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADArMRcwFQYDVQQDDA5zZXJ2
++ZXIuZXhhbXBsZTEQMA4GA1UEAwwHcHJveHkgMTAgFw0xNjA2MTgxOTU0NDZaGA8y
++MTE2MDYxOTE5NTQ0NlowKzEXMBUGA1UEAwwOc2VydmVyLmV4YW1wbGUxEDAOBgNV
++BAMMB3Byb3h5IDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDfkPXh
++tGaOG5MRdMZ6mSI+OVj13SjQEMO741bjZmZM7/WwJwNx4/ozwy5w3hbcvEom2qe6
++WCKThzpB+hufIgsElrLL6YHu/eExxfMqSkuUnlYye8JLriqs54i47bvtLn+h/vZd
++MnsIrS/WGmGCDfVGC3u21h3tTmcVd/jC8vUueXdgoFVCq4elMidmM0ar5+tNAJRc
++G9ZSeuuGiVbYCiGaYY+7PkyyYy1UiWyrhBPNvdQ3xcakygpWOXSQ19INYTLcAM6G
++MSnEBK6F55zZyvuq3Ob60+okaSYWAo+7D0/BrzVfCWlzmWeFyJVR3Ps3nLxteahs
+++Fl7D7a9DbgPbY2HAgMBAAGjgZYwgZMwHQYDVR0OBBYEFH18o4bnybHle31aYNRi
++QZSGJ96XMEEGA1UdIwQ6MDiAFNOib4aG0AVcbb7pbh224iVD3Jx8oR2kGzAZMRcw
++FQYDVQQDDA5zZXJ2ZXIuZXhhbXBsZYIBAjAJBgNVHRMEAjAAMCQGCCsGAQUFBwEO
++AQH/BBUwEwIBADAOBggrBgEFBQcVAAQCQUIwDQYJKoZIhvcNAQELBQADggEBAGKD
++jTgyuFlwNRgrw0g4IZMmbEWcgW4r1v2yMRyAXhZuVyc8lkUZoe14eM4kqwJ5ayti
++peN+ETpRk6AS4eaCEBnn4tE/S8TD4KRovio1EWy5TvjPE6M9jPonF5IfNKgGuR3o
++7gN0KKJpzf9jj5JEJPV/d5AKw9fMdSZseea7bZ6JV8kKCW+9WCSMFnwR7POPWSQa
++ZNJy1PN6GlvHykdK4QwZT3jHaQMVY/uIC1BXrN3sC3l79jnL5tTeK8JLvZAqjfy5
+++5pNH71k8zqVR2z0fC4oiv8TNsDn2g07wCCcQmzg8JHsP5p/hyUg51RqrQJhAbaf
++eUmD8lyBBdfcia2UqJM=
++-----END CERTIFICATE-----
+diff --git a/test/certs/bad-pc3-key.pem b/test/certs/bad-pc3-key.pem
+new file mode 100644
+index 0000000..8ddee57
+--- /dev/null
++++ b/test/certs/bad-pc3-key.pem
+@@ -0,0 +1,28 @@
++-----BEGIN PRIVATE KEY-----
++MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDfkPXhtGaOG5MR
++dMZ6mSI+OVj13SjQEMO741bjZmZM7/WwJwNx4/ozwy5w3hbcvEom2qe6WCKThzpB
+++hufIgsElrLL6YHu/eExxfMqSkuUnlYye8JLriqs54i47bvtLn+h/vZdMnsIrS/W
++GmGCDfVGC3u21h3tTmcVd/jC8vUueXdgoFVCq4elMidmM0ar5+tNAJRcG9ZSeuuG
++iVbYCiGaYY+7PkyyYy1UiWyrhBPNvdQ3xcakygpWOXSQ19INYTLcAM6GMSnEBK6F
++55zZyvuq3Ob60+okaSYWAo+7D0/BrzVfCWlzmWeFyJVR3Ps3nLxteahs+Fl7D7a9
++DbgPbY2HAgMBAAECggEASAMzkG5BkojDSJ4qyJbG9vAV/awtV0fvJHhIJpt3XFT2
+++LS4YVkj4MSAEw8WoidsYzOPT3DQQmEOnO3pM8sNbX71PMWMeuUAQr4WY4rm6YpP
++DZfbr/D8AhHacmbxX6bYqd+sj7yQ8OyIOhjpS7EfTl6ojO5PWX8lqT6pvHHyE/Ol
++1ZH2MG4GaX10IfrF7bw88XozmFfsw6eVX6t3cBK3PNapxj+RNEwcYBAgtXBNVVAJ
++mSMkgSZ8/kTggRr3ntKvXCiOrm8Iud6Bwqp+aXB8+etT9p6gWDs0J4MCfkWvva+1
++WuZDgryiVnIdqwalrLMg2IfwJhjtlqZjj0R1Oe2isQKBgQD/JSlg+/ZYAmm/BzzV
++C3mII94Vw0lvX6qpeKMXvcwVcWRSwJMnMPMxnxebyEZopn0t25CRu0+N+sHNUZKg
++JVw5wL9nA7815JGTfVV9znN8leSYdhvWh6amrKT+Ku+1vXTBONFAR85eilzYUtff
++jKGVDhBuZ7a5YIT6+DOLoPbMdQKBgQDgULasEUxNTeVSq6qzM/1tvSR4Z9W2JIFr
++nDxC/RyPq5LN+3Pg5JiA3FFION6C2Rb+rb2RBlpSxuO4Jv+gPWnqZfuXZiTusiDd
++dnyFsAoGPnb2SIm3OAO2N3w/7ttmRCsWnm0mkFLkd4XJG/mtDcHrit1SZTEWima2
++wKf2RJEiiwKBgQCH5+aTp4K/vIFRZOyNWvBgiSJ6GyzZq26/mOfe9JVp8p2KytNX
++c+aGzwSHUXXXtp9FNwhZ6BlnOmPTFxlwPpZSmQ4bNE68yUSV+JP6UGcJvNooL/mC
++G320mI/GZ16KQyGW7snfYKBXkYIFJJOim0lSmUw9Uvds5THQcTcbsCDmJQKBgQDE
++F2sJUnncXkspkO5BiCJ0a1NVepgFiTYmJ0c63F+6bKeCL94l7FAw3eikdSp3QmXq
++r2E3RVFyaXGqi1UN9IIBqbNdr6p7i/ZVA35ps/Gfcb23IMRbCbmc8jZJAXqElPUB
++6e7LNoFwPdgTbcQ+9vbd/N/rZpCZ/tU5z4NFMr2ZbwKBgQCPN9KsqsRRK2v+j0wt
++ArKrWHK5w1Cj5rRbedOn8659edTB5tqrFtZh4YJB842oe4s2XYXtk+Kq9HBRh4Em
++CkO/JSH7lgVXT1zsf0ZYojaZWLhVTNHa3PO6R0FtyC0h7MtHV9aquPNCeiQDkwbT
++RBV8wc0Stpj+QEShPIS9gEQVNA==
++-----END PRIVATE KEY-----
+diff --git a/test/certs/bad-pc4-cert.pem b/test/certs/bad-pc4-cert.pem
+new file mode 100644
+index 0000000..5e47992
+--- /dev/null
++++ b/test/certs/bad-pc4-cert.pem
+@@ -0,0 +1,21 @@
++-----BEGIN CERTIFICATE-----
++MIIDfDCCAmSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADArMRcwFQYDVQQDDA5zZXJ2
++ZXIuZXhhbXBsZTEQMA4GA1UEAwwHcHJveHkgMTAgFw0xNjA2MTgxOTU0NTBaGA8y
++MTE2MDYxOTE5NTQ1MFowPTEXMBUGA1UEAwwOc2VydmVyLmV4YW1wbGUxEDAOBgNV
++BAMMB3Byb3h5IDExEDAOBgNVBAMMB3Byb3h5IDQwggEiMA0GCSqGSIb3DQEBAQUA
++A4IBDwAwggEKAoIBAQC2xxl2G3u38wzrx5uWgKiZ557ZIbLQECZgwmMbGzdrNqbD
++veVgTEdkIxRk0py1QUqqukhTk9OpkUrYiSUpkAMkc3yRtpCp2KZeuN6OwyeAm8Jf
++KUHeEvvM+GNZw/AoahgRJ5Cd9OykI4Uv3y0BzwZGXCrKDWr0Bpwcg6aQ/0+dFtd0
++ElBKq2v2hHpKn4P7ZM0mpvPSEwJ5nPUDY6iuRZNVrihmuZ4UZtKsz7EFbXfqaiLz
++zfns+Kmh4j5OK3Iunm7gQLpv9RrXxsad2s7gKzgRhuEi6sECg/+4qOKwhUUxVWRX
++iJYTxJfKfyIb8fjtrQrEWxNb1n/1Ea9nWuOk1N3XAgMBAAGjgZYwgZMwHQYDVR0O
++BBYEFLFSiWVtSRQ48ziWfxHBtmC/PwPiMEEGA1UdIwQ6MDiAFNOib4aG0AVcbb7p
++bh224iVD3Jx8oR2kGzAZMRcwFQYDVQQDDA5zZXJ2ZXIuZXhhbXBsZYIBAjAJBgNV
++HRMEAjAAMCQGCCsGAQUFBwEOAQH/BBUwEwIBATAOBggrBgEFBQcVAAQCQUIwDQYJ
++KoZIhvcNAQELBQADggEBAEg+p78n5eTkl7D6OPecC47nqFp7pNQtWTksTxMgBtz4
++LeZR0nBX1kZdA0arVd7RAeqjR5wCwGIbdc3hFu/xeoPeTUBFv/7tiTWsCFBmfoSK
++Tu/NeYrfIc3Qd6KhW9iwUxN7GFAZZFhJ3xVpaDhjpMDlgp9UZ24vN+eY0KRhuHQv
++hGJcyWs5M0dYGVyTSS5VueJSWlXD98KT49LzdyAfaveQoIMFaSH3rmR4BXvUMjEw
++ByFwvFeG0lrtvcx3RhvlJQYixUPME6TcNOAWJARJ0qiO1PCufFDlOSjq8GjtxGbc
++JjMc3GfdaieMM8afXWQPflfLw/Jb1rPOKpikva05ZMI=
++-----END CERTIFICATE-----
+diff --git a/test/certs/bad-pc4-key.pem b/test/certs/bad-pc4-key.pem
+new file mode 100644
+index 0000000..49406bc
+--- /dev/null
++++ b/test/certs/bad-pc4-key.pem
+@@ -0,0 +1,28 @@
++-----BEGIN PRIVATE KEY-----
++MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC2xxl2G3u38wzr
++x5uWgKiZ557ZIbLQECZgwmMbGzdrNqbDveVgTEdkIxRk0py1QUqqukhTk9OpkUrY
++iSUpkAMkc3yRtpCp2KZeuN6OwyeAm8JfKUHeEvvM+GNZw/AoahgRJ5Cd9OykI4Uv
++3y0BzwZGXCrKDWr0Bpwcg6aQ/0+dFtd0ElBKq2v2hHpKn4P7ZM0mpvPSEwJ5nPUD
++Y6iuRZNVrihmuZ4UZtKsz7EFbXfqaiLzzfns+Kmh4j5OK3Iunm7gQLpv9RrXxsad
++2s7gKzgRhuEi6sECg/+4qOKwhUUxVWRXiJYTxJfKfyIb8fjtrQrEWxNb1n/1Ea9n
++WuOk1N3XAgMBAAECggEAQbq33VFk3HH7Y48U1LrP5wj0hwEnXMtyAbnmCglvlI7C
++ygGwS0EjK0+yNc/HqycfwuXavLOcmo41bEllo9y2RJWDZqNQwsO2kLnKz2w++HEL
++JU2g8kvBYaSxlcZwxxfgL8saprM9polfjCel99CLYSIkASVyIO9/lIGDlQE7kDHb
++B+YdDzucQtyi3LXsdcfW8so2DsZla2Qa9305ZAZPEOFXFjsvKR41WdI5r1uwsrYU
++voMcH9k3aefOd62+e1KodO5w9TxSYTw2bLrGhjB1UzEzRGIgOY7L+VSmYzTn+ARY
++loXqK4sA9yvr7z+ZXHeA1y0XuMRzkG7qf5Z0pc29AQKBgQDd4piLIt0Rygzud4WQ
++5UBwwLd1u1A3jdU5EACvG4GBlJiQQPU0hHcTGoFbnTNy+y7QSBl/3viRH5WPx8Cx
++O1nJ2Qc7mlAmoKq3Gs4gso6utPP2x9Rs/bIPkL/LhAdi9BBnp6H/5dyrvtv8O1OQ
++S1rXpYTjmYj9X7BSU1PsDUiyWQKBgQDS4TwxXycJYClGufq9mrNuAoMfReXaiwv3
++b7wfRfOn1cL0hjLjLAhxn8eau+/7ZKS8ScXqHszrz0yXPfxTtWJ/DvhuobWOOWJd
++RmHN+OAxCLvcZD1hy6bzXqYuuX2WrARUKWZRg7RXxlOwnkcR8/7OrmnsnEiCh8wg
++9h/GGd4rrwKBgQCXV4BOnrgE8zjAyrtKqmO6xGgeIGZFjjNaWYTt6yf5V358HiJh
++8Nw7JoAHGgFGsvcqT5M8+bu3WMCtskTHXkEPAT4CtG1o+3uVqu3ftYrGtVwV/hTx
++RlVWcpevW92h6/DokplXrtRGPMdVkq2bpRpQLnCmwUmD8OmWLYn3XtQv+QKBgCA6
++jBh/kle8epJ0mf2gRwvpFmERLa/Y0FtgmD+vUS21XbZBTEWr1R6IbNkZH/QrzYF5
++ROYjDu57IBl9P7MLZaJFh3JhBH5YBtB6kTgJcToNO6jTKQ5pMXrAXGWHs8nzQDYc
++naaXmlhP1zqG9hWoVKkBvu6KdAp+9pOTCggcq/fBAoGBALHpj0QFvEzROBpLiNtW
++zrU7jcl4TwAbTh26cjb3Nj/2J+JH3lmLilxT6ltKUvtXFMmAT20at46RMGqY8z7R
++Z1OgtiraQtSG7BeSMRLJ2aCM8+JotvYMjRauiC00jXZCsusyJ1mLqgWlHu+YORVE
++9fO6/M0yLLz4mk5z2gdrP9MA
++-----END PRIVATE KEY-----
+diff --git a/test/certs/bad-pc6-cert.pem b/test/certs/bad-pc6-cert.pem
+new file mode 100644
+index 0000000..d529091
+--- /dev/null
++++ b/test/certs/bad-pc6-cert.pem
+@@ -0,0 +1,21 @@
++-----BEGIN CERTIFICATE-----
++MIIDejCCAmKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADArMRcwFQYDVQQDDA5zZXJ2
++ZXIuZXhhbXBsZTEQMA4GA1UEAwwHcHJveHkgMTAgFw0xNjA2MjAxODAwMjRaGA8y
++MTE2MDYyMTE4MDAyNFowOzEXMBUGA1UEAwwOc2VydmVyLmV4YW1wbGUxIDAOBgNV
++BAMMB3Byb3h5IDEwDgYDVQQDDAdwcm94eSA2MIIBIjANBgkqhkiG9w0BAQEFAAOC
++AQ8AMIIBCgKCAQEA5hE+Hzx8w4tAPaYsbdY9ZJSzpzpa8ZBsZxhiJr9ayIU4C71m
++uV7EMZtUGyAbl1pXzBcvNQq/lUnXL4hpl612h9Pg7H+oaNM1ZVDnRFyIWvaq/oVu
++msi//4z5QetkM2zRa9T3BtSWNJF+9BnDsdDxi2qLW5xY9xN3tFr234ueri9HNK4O
++V0vJX67wgmVgGmIX6EQlgX5RF+PdU4SYjqxZZe2v0+ND334svlDAdQfKYf4pYqMB
++Vs5hi4PYiuU2QDhLOms0m4Fs54mRjRQ/m/I4L/j2R4051xLO1ya5UrZWepkvd4Uk
++rW7lC5JyFvG3Mp/QChrGZF0cb9iHi81iUNULAwIDAQABo4GWMIGTMB0GA1UdDgQW
++BBQwWHApUcXg5oqkZdg2JpLWKfsUVjBBBgNVHSMEOjA4gBTTom+GhtAFXG2+6W4d
++tuIlQ9ycfKEdpBswGTEXMBUGA1UEAwwOc2VydmVyLmV4YW1wbGWCAQIwCQYDVR0T
++BAIwADAkBggrBgEFBQcBDgEB/wQVMBMCAQAwDgYIKwYBBQUHFQAEAkFCMA0GCSqG
++SIb3DQEBCwUAA4IBAQBe/pghhwiZk++TtmV/eTLbQ/tMOxlb1Q5MhX+nF42eI52G
++Hwsg3dBHgy2RSgTE6fzMUt8cyEplG4nqCpR7qm2ZGcHmn/IEO7exZmWTvurun4tF
++56L2W0oe5hLLJV9W4akVTH6LpRZOR/CgMcew6tvzmuAADcP0KidFSxkd/Y7plhSy
++hptq50Qey2yyA1UVTCQ8k7OSvL2lyD6F3EasejmK0FuHekgewB54cTMCBBw/7aZc
++08rvhIi9X/yQKFD1o5kvbTi5//zcCx0RbMVZRFcrFUD+PNwt7QLpFrMs4u08aok4
++/QzS0G+801JZa1zoUMnnNPNGlfybvANVbovUCc2h
++-----END CERTIFICATE-----
+diff --git a/test/certs/bad-pc6-key.pem b/test/certs/bad-pc6-key.pem
+new file mode 100644
+index 0000000..ef7541c
+--- /dev/null
++++ b/test/certs/bad-pc6-key.pem
+@@ -0,0 +1,28 @@
++-----BEGIN PRIVATE KEY-----
++MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDmET4fPHzDi0A9
++pixt1j1klLOnOlrxkGxnGGImv1rIhTgLvWa5XsQxm1QbIBuXWlfMFy81Cr+VSdcv
++iGmXrXaH0+Dsf6ho0zVlUOdEXIha9qr+hW6ayL//jPlB62QzbNFr1PcG1JY0kX70
++GcOx0PGLaotbnFj3E3e0Wvbfi56uL0c0rg5XS8lfrvCCZWAaYhfoRCWBflEX491T
++hJiOrFll7a/T40Pffiy+UMB1B8ph/iliowFWzmGLg9iK5TZAOEs6azSbgWzniZGN
++FD+b8jgv+PZHjTnXEs7XJrlStlZ6mS93hSStbuULknIW8bcyn9AKGsZkXRxv2IeL
++zWJQ1QsDAgMBAAECggEAV8MsF25TiaSNFPdW629WbA/tmFVCa/PT5l/+0Rkd4HAx
++OQk/LmdgICxIoTBWVh44b7pIX8uB2ckZNSCsZxfcp2PD4XOxIouvSr7Z+dHykgCW
++qhDsaE88LpfwXZ0V1CgmmyPaN9jQk60M6MELTcGO4sf58TBrH5VljH9GvW/dUEQv
++f85PsN8VMWdZYx5AU97oLxNlZgRgZa72rtRfW3xi+Nnf/TbyqQ7pJAHdGju7kR7C
++Mv7Kp+us/FzPXJxHdumh8BSAbqn2Fr1hgUyH7v/7n7oSLpBATLOQ49K0X4OnEN3m
+++GYzj9rpnza9QAX3too3EP0tDYZaJUUZiQqdtFIzgQKBgQD6KISBQq7LjRGNOr+R
++ayA27HlrZ0O0STyOkxOCx8GqdHQjLS/REGnLAJy6ggm3Col4ACXkD8zNLenFCCsA
++CVq6iEQcGiT5bZyJa7cwLEGdoj8Aqd6OM30TgJ1u9ZJSWukys0BhhQ7huBmxdpm3
++ykIGQ5DxhnecXJdYylzdunktmwKBgQDrcJ5fyYFSheQjW2TkNTRSDccToGVPIECd
++/a/FvhzqhwLWt1d0Hpub9M37AwpN3V8IM7PHcDqgpzrD3q+vLW726h68ETAqZX4H
++FDHLPiENkoBZoj6yjS5fmAkVa7jhGQBFSIQ1s6eYkAHCRwSbF2jfNK1no8fERwkp
++XjEf6yWiuQKBgFPfQ9Xm2p4qlQjp+pKx/SINFQSaocuPhnsy+qatfNQ+qTWmD9Mj
++kqTadrHdqY4yPTb7rbiSR5M/YpKKE4i2mjHSQCu/5EewpXw5njjLjdBhNohta833
++m2bvh1lNgpqUGn3CNcK8junFBPBIGG/To2FgQ/eGoxHMxX2ik5JP1BMjAoGBAJ+K
++ryeFqua66D+1XQbvrsazo2V/WWdnGaJ2GDhNfdbHKntJvi9n1la2ayZfhwoAqrcq
++IfdR68iVydKVAkQY64rSV4VluFficqZlXuC09zz1O5iBwy7HUNdidTVYy+1tPau1
++WjHxze4qF6cI7OwTzvMCBUenymUNJf4sX+mbNOOxAoGAHYK/AbJtXFKcYx8uj0MA
++YnkWWjTKMJ2TQIu94CaSf1oR4M6fuskgPfuRjW/CyBFQ3zh9+F4l7lG2Ywv16rBb
++/1B7W5euucM8JYxSGAicqKX7iYV6Ikz0l21Slw6fy+e1U4gIDfZPgx56iV7yVoGc
++IywUjiA/G1N3M5WBVqBl3K8=
++-----END PRIVATE KEY-----
 diff --git a/test/certs/ee-client-chain.pem b/test/certs/ee-client-chain.pem
 new file mode 100644
-index 000000000000..27652fa29ae8
+index 0000000..27652fa
 --- /dev/null
 +++ b/test/certs/ee-client-chain.pem
 @@ -0,0 +1,37 @@
@@ -144877,9 +160996,130 @@
 +uNO0D+9Md1bdW7382yOtWbkyibsugqnfBYCUH6hAhDlfYzpba2Smb0roc6Crq7HR
 +5HpEYY6qEir9wFMkD5MZsWrNRGRuzd5am82J+aaHz/4=
 +-----END CERTIFICATE-----
+diff --git a/test/certs/mkcert.sh b/test/certs/mkcert.sh
+index ec2e374..8863254 100755
+--- a/test/certs/mkcert.sh
++++ b/test/certs/mkcert.sh
+@@ -8,7 +8,9 @@
+ 
+ # 100 years should be enough for now
+ #
+-DAYS=36525
++if [ -z "$DAYS" ]; then
++    DAYS=36525
++fi
+ 
+ if [ -z "$OPENSSL_SIGALG" ]; then
+     OPENSSL_SIGALG=sha256
+@@ -49,17 +51,18 @@ key() {
+     fi
+ }
+ 
++# Usage: $0 req keyname dn1 dn2 ...
+ req() {
+     local key=$1; shift
+-    local cn=$1; shift
+ 
+     key "$key"
+     local errs
+ 
+     stderr_onerror \
+         openssl req -new -"${OPENSSL_SIGALG}" -key "${key}.pem" \
+-            -config <(printf "[req]\n%s\n%s\n[dn]\nCN=%s\n" \
+-		      "prompt = no" "distinguished_name = dn" "${cn}")
++            -config <(printf "[req]\n%s\n%s\n[dn]\n" \
++		      "prompt = no" "distinguished_name = dn"
++                      for dn in "$@"; do echo "$dn"; done)
+ }
+ 
+ req_nocn() {
+@@ -88,12 +91,12 @@ genroot() {
+     local skid="subjectKeyIdentifier = hash"
+     local akid="authorityKeyIdentifier = keyid"
+ 
+-    exts=$(printf "%s\n%s\n%s\n" "$skid" "$akid" "basicConstraints = CA:true")
++    exts=$(printf "%s\n%s\n%s\n" "$skid" "$akid" "basicConstraints = critical,CA:true")
+     for eku in "$@"
+     do
+         exts=$(printf "%s\nextendedKeyUsage = %s\n" "$exts" "$eku")
+     done
+-    csr=$(req "$key" "$cn") || return 1
++    csr=$(req "$key" "CN = $cn") || return 1
+     echo "$csr" |
+        cert "$cert" "$exts" -signkey "${key}.pem" -set_serial 1 -days "${DAYS}"
+ }
+@@ -107,12 +110,12 @@ genca() {
+     local skid="subjectKeyIdentifier = hash"
+     local akid="authorityKeyIdentifier = keyid"
+ 
+-    exts=$(printf "%s\n%s\n%s\n" "$skid" "$akid" "basicConstraints = CA:true")
++    exts=$(printf "%s\n%s\n%s\n" "$skid" "$akid" "basicConstraints = critical,CA:true")
+     for eku in "$@"
+     do
+         exts=$(printf "%s\nextendedKeyUsage = %s\n" "$exts" "$eku")
+     done
+-    csr=$(req "$key" "$cn") || return 1
++    csr=$(req "$key" "CN = $cn") || return 1
+     echo "$csr" |
+         cert "$cert" "$exts" -CA "${cacert}.pem" -CAkey "${cakey}.pem" \
+ 	    -set_serial 2 -days "${DAYS}"
+@@ -133,12 +136,34 @@ gen_nonbc_ca() {
+     do
+         exts=$(printf "%s\nextendedKeyUsage = %s\n" "$exts" "$eku")
+     done
+-    csr=$(req "$key" "$cn") || return 1
++    csr=$(req "$key" "CN = $cn") || return 1
+     echo "$csr" |
+         cert "$cert" "$exts" -CA "${cacert}.pem" -CAkey "${cakey}.pem" \
+ 	    -set_serial 2 -days "${DAYS}"
+ }
+ 
++# Usage: $0 genpc keyname certname eekeyname eecertname pcext1 pcext2 ...
++#
++# Note: takes csr on stdin, so must be used with $0 req like this:
++#
++# $0 req keyname dn | $0 genpc keyname certname eekeyname eecertname pcext ...
++genpc() {
++    local key=$1; shift
++    local cert=$1; shift
++    local cakey=$1; shift
++    local ca=$1; shift
++
++    exts=$(printf "%s\n%s\n%s\n%s\n" \
++	    "subjectKeyIdentifier = hash" \
++	    "authorityKeyIdentifier = keyid, issuer:always" \
++	    "basicConstraints = CA:false" \
++	    "proxyCertInfo = critical, @pcexts";
++           echo "[pcexts]";
++           for x in "$@"; do echo $x; done)
++    cert "$cert" "$exts" -CA "${ca}.pem" -CAkey "${cakey}.pem" \
++	 -set_serial 2 -days "${DAYS}"
++}
++
+ genee() {
+     local OPTIND=1
+     local purpose=serverAuth
+@@ -165,7 +190,7 @@ genee() {
+ 	    "basicConstraints = CA:false" \
+ 	    "extendedKeyUsage = $purpose" \
+ 	    "subjectAltName = @alts" "DNS=${cn}")
+-    csr=$(req "$key" "$cn") || return 1
++    csr=$(req "$key" "CN = $cn") || return 1
+     echo "$csr" |
+ 	cert "$cert" "$exts" -CA "${ca}.pem" -CAkey "${cakey}.pem" \
+ 	    -set_serial 2 -days "${DAYS}" "$@"
+@@ -182,7 +207,7 @@ genss() {
+ 	    "basicConstraints = CA:false" \
+ 	    "extendedKeyUsage = serverAuth" \
+ 	    "subjectAltName = @alts" "DNS=${cn}")
+-    csr=$(req "$key" "$cn") || return 1
++    csr=$(req "$key" "CN = $cn") || return 1
+     echo "$csr" |
+         cert "$cert" "$exts" -signkey "${key}.pem" \
+             -set_serial 1 -days "${DAYS}" "$@"
 diff --git a/test/certs/pathlen.pem b/test/certs/pathlen.pem
 new file mode 100644
-index 000000000000..c0ef75e2824a
+index 0000000..c0ef75e
 --- /dev/null
 +++ b/test/certs/pathlen.pem
 @@ -0,0 +1,22 @@
@@ -144905,9 +161145,234 @@
 +oxJ8JTfEcEHVsTffYR9fDUn0NylqCLdqFaDwLKqWl+C2inODNMpNusqleDAViw6B
 +CA==
 +-----END CERTIFICATE-----
+diff --git a/test/certs/pc1-cert.pem b/test/certs/pc1-cert.pem
+new file mode 100644
+index 0000000..e0a373a
+--- /dev/null
++++ b/test/certs/pc1-cert.pem
+@@ -0,0 +1,20 @@
++-----BEGIN CERTIFICATE-----
++MIIDTDCCAjSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDDA5zZXJ2
++ZXIuZXhhbXBsZTAgFw0xNjA2MTgxOTU0MzZaGA8yMTE2MDYxOTE5NTQzNlowKzEX
++MBUGA1UEAwwOc2VydmVyLmV4YW1wbGUxEDAOBgNVBAMMB3Byb3h5IDEwggEiMA0G
++CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCeF5hc7UW6KtJ/26YrZTeG5Pu7FrPd
++9W58Wq/xpll8sg2priHgomhwFG+EtBqxP/qfGQADwCBpynm+bxngsRX94+puCbdp
++DCRV19vZNfrrdH57PbUmujQfCAPuWnGye7TWbtilqkgJf88yfI+0Y2qmGWpvl3Pc
++ijZVbNxEan1FKkB5v1E25+UCDU4Y4nfyJ1jtqSA6RJeixCUE363iLanJL4Ph781u
++/GUhICeqj6oKdPzEmnzT9Udt8APpS2pfIjhfcw4w8A+pFXf0HsezGdcodiZqzs39
++mdmS8cmMk77xJ8BIOlT484Jg/bB9PfBfEB2LXO3jz/HyrRWQVHgyF2ONAgMBAAGj
++gYowgYcwHQYDVR0OBBYEFNOib4aG0AVcbb7pbh224iVD3Jx8MDUGA1UdIwQuMCyA
++FOeb4iqtimw6y3ZR5Y4HmCKX4XOioRGkDzANMQswCQYDVQQDDAJDQYIBAjAJBgNV
++HRMEAjAAMCQGCCsGAQUFBwEOAQH/BBUwEwIBATAOBggrBgEFBQcVAAQCQUIwDQYJ
++KoZIhvcNAQELBQADggEBAGCPfyKX74TwnX7sakAKq+IY5qbFnUAupiACsoqNyf2C
++J6/wsAHz51SA69UcOmQsLCtBzvr11Mh9tFG6uqAquMifP6Cx3274sHCglb5BYFQX
++eOwSc30FyaqUZzCWKHRjuzdBUUplS2NVl778xLEbWySLkpHehp7Hpj6mBT9lLNyw
++6L2ZXJcBmxCSB6+aKJ0v4h3wrTNkbYh1Pz9sQqKMgnK+dC5xNmQWWzaVnAPERmbT
++/11HRF2cGE6OKVmPrksI2NVOe0S0BmL2UwIeO1mIoQikJlOlCsa6QHS7KNQKGtrV
++0Z/z5ahapEq7+wlyrw+lsZf+rBKFzwbowl1K2YJva9Q=
++-----END CERTIFICATE-----
+diff --git a/test/certs/pc1-key.pem b/test/certs/pc1-key.pem
+new file mode 100644
+index 0000000..d879dbc
+--- /dev/null
++++ b/test/certs/pc1-key.pem
+@@ -0,0 +1,28 @@
++-----BEGIN PRIVATE KEY-----
++MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCeF5hc7UW6KtJ/
++26YrZTeG5Pu7FrPd9W58Wq/xpll8sg2priHgomhwFG+EtBqxP/qfGQADwCBpynm+
++bxngsRX94+puCbdpDCRV19vZNfrrdH57PbUmujQfCAPuWnGye7TWbtilqkgJf88y
++fI+0Y2qmGWpvl3PcijZVbNxEan1FKkB5v1E25+UCDU4Y4nfyJ1jtqSA6RJeixCUE
++363iLanJL4Ph781u/GUhICeqj6oKdPzEmnzT9Udt8APpS2pfIjhfcw4w8A+pFXf0
++HsezGdcodiZqzs39mdmS8cmMk77xJ8BIOlT484Jg/bB9PfBfEB2LXO3jz/HyrRWQ
++VHgyF2ONAgMBAAECggEBAJtfoTUjVPYlBAD5RRU9QxdmkSlMpLYucsnw7x7WWPi+
++ncL4Cv+VXoNY8klAIUO3F3+puGP3PWP7xS8uTgaQxIZkq5A+KG4rqsJbhgyyistC
++ENTazuEi+/rLi+GELl42SoK9KluXQXlkjaSW2z10v+pC7GKEPTCw/blzZgAvkLKZ
++ykQgEEyKf/kNR4+exiJqdBi8gp0cB1+WwBYqYitNKahhf9sFjcLWhj8umYN/+Hb4
++6hH+8JMaHm0G3DvBUIGTkuUQVZB+BkOG7DRivgwNCFlUqvA100JGhoVnBoqj2pan
++eD7TtJfIW7UMoXFr0qCMMGvUXnhJb2v01oxpQTfBLEECgYEA0Ys2RjxUAQmh8j90
++jRV2dI/zL5t1NXxfSTn7JmLp2r2SEWfxiXwCs2bly6J8Xr07bY8DeM6+NfmQ7en1
++pdwxorIROhXRI2X6ZIdIfLwRw+l2TrQVzqgSnUI8GnU3gy57m1QLrcRW9Gxv7r1j
++DjlRMtf828C7oUd+2h0rXY6DeMUCgYEAwSQ20OJy9qDvT569cOMADgvZRKjU0ZLd
++2ER40WakK+6gyvSkUYpdSK5722xMo5CAFmE35xn5r/JX4QnIK3DGnJcm0e68GtyE
++qh5YGXqTlnvgl/+YxBjgrvL97OWKtvof/ZjGqF48sNB4trMz9+80M5oBsr7ZjoPQ
++1B1mFTi9nCkCgYBojLgQxSr4tZCq6MRDXHEU6XnhyAPsItj8FUTdOz8JF8rYim82
++NLy4PF/tgW3iazJKkK+fyC+ZiKKqQjCBh+LwFT6JJ7eInOoY3HLrYX7PrB2OWUYE
++LVHUSuboIJIJDtk3f/Cvy6XDIJOcn7vbrfd4kdGk5332k1CUjTdE38VzLQKBgQCl
++TbRoxVd1xDnuIEOtSWuzmeqDvCghkpyyy6/IMRwTybHu4sF8VHsQiN3S5/cUCsnF
++3cE112J/d2BFZ9TdcTFbtnZwOO7f4prc6wmmDOYiZrXMAeOi+lPbCHfR+IfnoV4d
++81MbqUQyZMrcO7Yf3qgD/iyz6mpTcngaA2tqgFywOQKBgFigb4O1tKsK16HwflMm
++6EQB/3TmdhIsoNEq6M6tOuV3uypze+97olwJMjsgIMxpIqnff55WLBmDjmoMZSoS
++6juHCqmKWKwTZPHPdWNVUgMOGVHFjcCgQjuqWYWupl6un/CefXPleImZ/wrXee5w
++f2DAK68puLIhIySfEIjrYh4P
++-----END PRIVATE KEY-----
+diff --git a/test/certs/pc2-cert.pem b/test/certs/pc2-cert.pem
+new file mode 100644
+index 0000000..2913b98
+--- /dev/null
++++ b/test/certs/pc2-cert.pem
+@@ -0,0 +1,21 @@
++-----BEGIN CERTIFICATE-----
++MIIDfDCCAmSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADArMRcwFQYDVQQDDA5zZXJ2
++ZXIuZXhhbXBsZTEQMA4GA1UEAwwHcHJveHkgMTAgFw0xNjA2MTgxOTU0NDFaGA8y
++MTE2MDYxOTE5NTQ0MVowPTEXMBUGA1UEAwwOc2VydmVyLmV4YW1wbGUxEDAOBgNV
++BAMMB3Byb3h5IDExEDAOBgNVBAMMB3Byb3h5IDIwggEiMA0GCSqGSIb3DQEBAQUA
++A4IBDwAwggEKAoIBAQDgpvzv40QOQxRy6qhowyMfSRwn8TSUX/tt9U92ij/HDurM
++aT+89lLd6oOCohmXomg4t18Fik3yUyoKOi2Jo/ATV5ZYvhKOQzf4d7zTno3SsTSB
++s1i9aNVnwVd9QZA/Y1lHtEUETIr94neET6bvaV9DHrtmVaEC6rXxbLmm6dLEcqEh
+++XnjoAi6PL/+U+RSQm6ekLEWwhwePUCr2QvGotjpUzDJngHCtxrVj6ZK8DPlgXpo
++2CWC2l6uwlakxkMQkCQQICywMKsmyMVPWFbalUezRDl7S/J9ybZYK61aq8mrBYzn
++tCaD3HwtjKmkAZ3tKcDfPidqwVtUAioBSzB6ztc/AgMBAAGjgZYwgZMwHQYDVR0O
++BBYEFPg3PONgEnnZVF3tRrg4aY4hBGVhMEEGA1UdIwQ6MDiAFNOib4aG0AVcbb7p
++bh224iVD3Jx8oR2kGzAZMRcwFQYDVQQDDA5zZXJ2ZXIuZXhhbXBsZYIBAjAJBgNV
++HRMEAjAAMCQGCCsGAQUFBwEOAQH/BBUwEwIBADAOBggrBgEFBQcVAAQCQUIwDQYJ
++KoZIhvcNAQELBQADggEBAJvmPj0eIOQEZSFrvbMEz5dp0udK+TIMKBmgPfCVrSPu
++g5wArKY5CqFzrrvXb8FWHuAuP9KsXaqU+oqaTrRlGDs0sl6LWkvamz9FLDbYS2+d
++9cGMdlEmWxPJg9Nkc557ng4b54xncyw+YQ/1vqkTtBX7w5Y4lFTOaZW3uq3iL1NU
++v1TO5fCNksndgw7tdilbps2BLeNcEJ7DZyS7ESPPe7NX78RCKsDLSj7C9bMlKvUc
++swUADTDhNTValfr2RQswlEPIt5qURe2vsvacQ701cPPwT+fgQj1N/XLFsBGTmnOP
++KpT6Adh+uk8xTHv2BUg+XDRAFOhoLMu1hnloiH14FgY=
++-----END CERTIFICATE-----
+diff --git a/test/certs/pc2-key.pem b/test/certs/pc2-key.pem
+new file mode 100644
+index 0000000..77ab6ff
+--- /dev/null
++++ b/test/certs/pc2-key.pem
+@@ -0,0 +1,28 @@
++-----BEGIN PRIVATE KEY-----
++MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDgpvzv40QOQxRy
++6qhowyMfSRwn8TSUX/tt9U92ij/HDurMaT+89lLd6oOCohmXomg4t18Fik3yUyoK
++Oi2Jo/ATV5ZYvhKOQzf4d7zTno3SsTSBs1i9aNVnwVd9QZA/Y1lHtEUETIr94neE
++T6bvaV9DHrtmVaEC6rXxbLmm6dLEcqEh+XnjoAi6PL/+U+RSQm6ekLEWwhwePUCr
++2QvGotjpUzDJngHCtxrVj6ZK8DPlgXpo2CWC2l6uwlakxkMQkCQQICywMKsmyMVP
++WFbalUezRDl7S/J9ybZYK61aq8mrBYzntCaD3HwtjKmkAZ3tKcDfPidqwVtUAioB
++SzB6ztc/AgMBAAECggEBAKMvCWpjZksJ1O/Inn5CyN9v5uDop+3jbqqn14ne0IcS
++weGrzh2/u9/w+ohIoVhxI02XfZFzrj0Ixe/Z5LwndjtGkzJxFt952k1FBMefU5up
++Ft/j2+DyJpoQajHVDyfMTcz1GHEP/KKA/5n/ld4wZ39E8pFaP/PzdCgjdxPUo0II
++OWvNehyLqiOQseYsnWTYFGgBFX5Dr8/cZH8duaNTkGzr+/4O3KmF04lTYS2SPkQ8
++8ospMX9a9N4+gDXF6KWlIJUEk4Xelv/BT7jygEz0K0bIcRGdmgFe57Rh9qTHxZrl
++YkHh3lHC5XD5sWuOjoEu54jJdL/u1zfaK/jpQXKMjtECgYEA+eCIg1vBPKl53s38
++Ch/nRuwmtu8qJlcN6aYBAdUn/Z95Qy5gKmL0hW7qJ5+kgwLJZEdLQ+xIHBdnWjdP
++7VJ7k6NEsy/EQ2NOYBzxysvnyYSAwY1Wb4StPO9ejqb02LrY6gBNfePE/wpR1EqK
++Suyzocf0x02blO8dQ3JaGn/IKlkCgYEA5ig4jtcKUzP2vRQ8tWaaJvLxP2fEzEgb
++J+r1zLrdMqZvWwjhbdIbQRnhwjpelVKpxGFiOP91bf9+6qiX8q3TOar3tDu2o2Nu
++yFNvExoqxfaD+IHfDo3KjTwohysbBXdZzqeOwL2N7HcQz5E11e0JDgTPLXtWk2UN
++qeYUNHeXq1cCgYAmKXWP4j6D3jo/nePlQ/QVb9GF1MbyLg9w5Kp4ti4yXN2vNfD3
++6D8B9euK+6WrYIyTZRQInphwud5N9+6cByHabW/7kcr+o7b/lMwUtcmDjFoBtW1D
++ANdYXBJr5PG1++tO6ZbsKBIZBWFz86JlSPsyNRCcM60UNOSaPWenbmaKmQKBgQC8
++qEt0CqDUAsxFwMjiiO/i7VEDADQ4nwJjfh1ta97VHcg5ftYKByd//Y8ofl/5VoEC
++EDFLN1syhzOpdfjXW9TAeHwCqM/UrjSo0HtD1Tcqfh8/HHWSoHdfvegapCLKIELl
++OkOxia9EHXUSL51JdbruWtLYHTmiKDtDAO2e9EjGkQKBgHOEZ0u07bCyz+EZHTQb
++sWt1U2LztJ/cNSNqgVc4NTTna0KisjXBTbtIQeArI42GHXNBazE+KbApnHQy8f7M
++DJIl2/70CRTfosDdSE6DnQk672BhJ4fr6Ln/VyvcATlcv34UYiGsDY3LCf0UTdjd
++GsR6pGtD+3qErri9pbdxDvRC
++-----END PRIVATE KEY-----
+diff --git a/test/certs/pc5-cert.pem b/test/certs/pc5-cert.pem
+new file mode 100644
+index 0000000..8663bdf
+--- /dev/null
++++ b/test/certs/pc5-cert.pem
+@@ -0,0 +1,21 @@
++-----BEGIN CERTIFICATE-----
++MIIDeDCCAmCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADArMRcwFQYDVQQDDA5zZXJ2
++ZXIuZXhhbXBsZTEQMA4GA1UEAwwHcHJveHkgMTAgFw0xNjA2MTgxOTU0NTVaGA8y
++MTE2MDYxOTE5NTQ1NVowPTEXMBUGA1UEAwwOc2VydmVyLmV4YW1wbGUxEDAOBgNV
++BAMMB3Byb3h5IDExEDAOBgNVBAMMB3Byb3h5IDUwggEiMA0GCSqGSIb3DQEBAQUA
++A4IBDwAwggEKAoIBAQCvDPn1fctKUE8+aHf036mHkIEsWn0iNFl2K/qAOMqjqOvs
++lj+zxhRqwj29v1Prb4ZYvjRrJ2GQdh7GXju4cP6wQKKHGOurJhYczcfqwAfi+21K
++Bn4gmM3i4GESuIC6GuXWqw24oMZYBi5H3zsBMr2mobSQJV3gN/5jfGIEtZW3GqVW
++iKAutNCbmV76NoRJm0sRzrFwyX1pomHCm9odwJQ0nNvyetMulY9tX9xYn01FLfiz
++JS2UmyOYxkSyKOSsmGJDVK/mZ86xYnQygUy6yIiz2hR2yq5M1oeRYOEONwt9mY/e
++ZVoIbquW28PEDQE6KtK/EYUdWn8482XQdRcdKmSlAgMBAAGjgZIwgY8wHQYDVR0O
++BBYEFEfQwyLv6WIDOf9VQ/ElxxcFKkX5MEEGA1UdIwQ6MDiAFNOib4aG0AVcbb7p
++bh224iVD3Jx8oR2kGzAZMRcwFQYDVQQDDA5zZXJ2ZXIuZXhhbXBsZYIBAjAJBgNV
++HRMEAjAAMCAGCCsGAQUFBwEOAQH/BBEwDwIBADAKBggrBgEFBQcVADANBgkqhkiG
++9w0BAQsFAAOCAQEAl93p1Pcw3hBbTTnm9oa9cOUvPBkUwLJmSJ1Il3HQQuLz5H+H
++OiF3ePaa7wmGmMTwHEYtOvIhGO5c6zilVRint03BaXRizZcqdjDiHUgVcr11pzX5
++F4ihFOF91c6DmUorRrtkjglLb/gAMdUE0eT/wukiMjJWgcw+O2EVxGjpAgRVNw/v
++byYx4TPmvnnigqfMY9lVFKJy0g5Ovw6Nb2ff8ndSEZsCDB8XdNg2u07zYu1dM/vF
++wpjsA/omrfXP3opH1ustvMQm9BPkySLRzNbIYHHRJX3Hkhn+EYzMmxv3cH0EEtn6
++taj7Gfsp7TfLpfSgP/Y88EsKhQAWsdFt2tT3FQ==
++-----END CERTIFICATE-----
+diff --git a/test/certs/pc5-key.pem b/test/certs/pc5-key.pem
+new file mode 100644
+index 0000000..1ad0805
+--- /dev/null
++++ b/test/certs/pc5-key.pem
+@@ -0,0 +1,28 @@
++-----BEGIN PRIVATE KEY-----
++MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCvDPn1fctKUE8+
++aHf036mHkIEsWn0iNFl2K/qAOMqjqOvslj+zxhRqwj29v1Prb4ZYvjRrJ2GQdh7G
++Xju4cP6wQKKHGOurJhYczcfqwAfi+21KBn4gmM3i4GESuIC6GuXWqw24oMZYBi5H
++3zsBMr2mobSQJV3gN/5jfGIEtZW3GqVWiKAutNCbmV76NoRJm0sRzrFwyX1pomHC
++m9odwJQ0nNvyetMulY9tX9xYn01FLfizJS2UmyOYxkSyKOSsmGJDVK/mZ86xYnQy
++gUy6yIiz2hR2yq5M1oeRYOEONwt9mY/eZVoIbquW28PEDQE6KtK/EYUdWn8482XQ
++dRcdKmSlAgMBAAECggEBAKqEmXjp8P2S/Z5tZWzD8wB7Y1kxTHPlSsAyVvJQYBTM
++mAT+107nxTu5uyr7FWRiXxxTK/y1f/SZG6FgagxhBbfrPmcbf3ZYw3GLgxLJvOT+
++xpc1e+eE8gnvSKBT2hFv4jQarGMNOijE3JBmg7PHGbcYDivcOnYQFV4T6+dqe0zA
++q2bLi/lko81Plunp7ev3i2ATjNxcYoannaTCq0HFxMLoOgrAoLqJqt8nkqXIY91z
++phx1x13HrHyikhuDBDb15TdJo68rbHngDolHFC7rHW65+vp0emJDtdEkBnQLDa5W
++a3ZeVe/xY0aaMPlcw//ZB8KMUD69VdCuiGXjrrHISAECgYEA2uIh82TIp+xG2Tk/
++2uZS1dOCCEEkkBqqgKwH2m2fctTHGMnKJaxSTCNKPEIpxaTt6EMp3jlviOmdrPtd
++pUS1OqkA99bzT8ZBEd8fg33XGCN5W7wvfo5077onwwJ+ocd//KJqQ2M6MioEp5im
++6Z8cDDdGA6NI3kJ+G3+CwczRTXECgYEAzLwKVkfd7TNJZQ7Z0n2x+O8hPJAaut2/
++qFIeItSBFo+ErQL8NnJPLMxBkWfVmnc4vFKc2bxgjz8S+cJCEucTrOAS7+ikP6KU
++Mo2NjbzA4omceuy3t+3eGJdYE44nBL/V+ZVAt6F0TQ7rayMAurcLJurHMiFYQEfs
++qAlsaYCiAHUCgYAmv7Wm8waaw7dfKUVmqTOs6v6wG2gvoqjgkpPpVVLO72A3wTFq
++LfF7zRuNQ2FFvgboAUveLWjTYhgp0W4onds/gT/MoF7+lmhak5dunc6AVXdciBoY
++W3vUHK6BVWW5minMPax2NZDN5KZiTSHvZd1/RCG+7x8tSbQthgtN58Z94QKBgHbH
++aZ/hFgo1xRESaqFKN2TbJ4dBe6CKYlU/Pyip7TKvlSPjJXxZGUI+RpQbj7uMC6iG
++rWVNex/gUhwA7eCVm76iSZpSeGhK5Hvn0AY5ShakC9rtVzEomb/enkTKJi0FNxkT
++1HY0/4pta3u+1P9+jsPHVkXpPpAcqlpbDUCwVky5AoGAJgwr1pxM7RDQon8Mpjxm
++XTJ36Vl+6dq/5yPBcKylQ49e5XrugS2trV1aSZKsiVuLGK9N8ND2N8OazxfpXbee
++q6b8GAqWWz4ewe30FKo0ipL1SfsJUTv8lPKIGo8oNk4vsUvv/bLJHpr6+g2d8lCw
++A0i6wzzrXUiXlynYm+VCKhs=
++-----END PRIVATE KEY-----
+diff --git a/test/certs/setup.sh b/test/certs/setup.sh
+index f341046..b8c1086 100755
+--- a/test/certs/setup.sh
++++ b/test/certs/setup.sh
+@@ -86,7 +86,7 @@ openssl x509 -in sroot-cert.pem -trustout \
+ ./mkcert.sh genca "CA" ca-key2 ca-cert2 root-key root-cert
+ ./mkcert.sh genca "CA2" ca-key ca-name2 root-key root-cert
+ ./mkcert.sh genca "CA" ca-key ca-root2 root-key2 root-cert2
+-./mkcert.sh genca "CA" ca-key ca-expired root-key root-cert -days -1
++DAYS=-1 ./mkcert.sh genca "CA" ca-key ca-expired root-key root-cert
+ #
+ openssl x509 -in ca-cert.pem -trustout \
+     -addtrust serverAuth -out ca+serverAuth.pem
+@@ -182,3 +182,29 @@ OPENSSL_SIGALG=md5 \
+ # 768-bit leaf key
+ OPENSSL_KEYBITS=768 \
+ ./mkcert.sh genee server.example ee-key-768 ee-cert-768 ca-key ca-cert
++
++# Proxy certificates, off of ee-client
++# Start with some good ones
++./mkcert.sh req pc1-key "0.CN = server.example" "1.CN = proxy 1" | \
++    ./mkcert.sh genpc pc1-key pc1-cert ee-key ee-client \
++                "language = id-ppl-anyLanguage" "pathlen = 1" "policy = text:AB"
++./mkcert.sh req pc2-key "0.CN = server.example" "1.CN = proxy 1" "2.CN = proxy 2" | \
++    ./mkcert.sh genpc pc2-key pc2-cert pc1-key pc1-cert \
++                "language = id-ppl-anyLanguage" "pathlen = 0" "policy = text:AB"
++# And now a couple of bad ones
++# pc3: incorrect CN
++./mkcert.sh req bad-pc3-key "0.CN = server.example" "1.CN = proxy 3" | \
++    ./mkcert.sh genpc bad-pc3-key bad-pc3-cert pc1-key pc1-cert \
++                "language = id-ppl-anyLanguage" "pathlen = 0" "policy = text:AB"
++# pc4: incorrect pathlen
++./mkcert.sh req bad-pc4-key "0.CN = server.example" "1.CN = proxy 1" "2.CN = proxy 4" | \
++    ./mkcert.sh genpc bad-pc4-key bad-pc4-cert pc1-key pc1-cert \
++                "language = id-ppl-anyLanguage" "pathlen = 1" "policy = text:AB"
++# pc5: no policy
++./mkcert.sh req pc5-key "0.CN = server.example" "1.CN = proxy 1" "2.CN = proxy 5" | \
++    ./mkcert.sh genpc pc5-key pc5-cert pc1-key pc1-cert \
++                "language = id-ppl-anyLanguage" "pathlen = 0"
++# pc6: incorrect CN (made into a component of a multivalue RDN)
++./mkcert.sh req bad-pc6-key "0.CN = server.example" "1.CN = proxy 1" "2.+CN = proxy 6" | \
++    ./mkcert.sh genpc bad-pc6-key bad-pc6-cert pc1-key pc1-cert \
++                "language = id-ppl-anyLanguage" "pathlen = 0" "policy = text:AB"
 diff --git a/test/cipherlist_test.c b/test/cipherlist_test.c
 new file mode 100644
-index 000000000000..e892f9d5a3f6
+index 0000000..e892f9d
 --- /dev/null
 +++ b/test/cipherlist_test.c
 @@ -0,0 +1,212 @@
@@ -145124,7 +161589,7 @@
 +    return result;
 +}
 diff --git a/test/clienthellotest.c b/test/clienthellotest.c
-index 71c6650f780e..1f1d44cc0449 100644
+index 71c6650..1f1d44c 100644
 --- a/test/clienthellotest.c
 +++ b/test/clienthellotest.c
 @@ -1,56 +1,10 @@
@@ -145191,7 +161656,7 @@
  
  #include <string.h>
 diff --git a/test/cms-examples.pl b/test/cms-examples.pl
-index 2e95b48ba45f..ec1c5fa2cfbd 100644
+index 2e95b48..ec1c5fa 100644
 --- a/test/cms-examples.pl
 +++ b/test/cms-examples.pl
 @@ -1,54 +1,10 @@
@@ -145256,7 +161721,7 @@
  # Perl script to run tests against S/MIME examples in RFC4134
  # Assumes RFC is in current directory and called "rfc4134.txt"
 diff --git a/test/constant_time_test.c b/test/constant_time_test.c
-index faadcb79b509..3ee6a81d463a 100644
+index faadcb7..3ee6a81 100644
 --- a/test/constant_time_test.c
 +++ b/test/constant_time_test.c
 @@ -1,46 +1,10 @@
@@ -145313,7 +161778,7 @@
  
  #include "internal/constant_time_locl.h"
 diff --git a/test/ct_test.c b/test/ct_test.c
-index 8175d16c9245..8000ae69a338 100644
+index 8175d16..8cc97e2 100644
 --- a/test/ct_test.c
 +++ b/test/ct_test.c
 @@ -1,55 +1,10 @@
@@ -145377,36 +161842,298 @@
   */
  
  #include <ctype.h>
+@@ -82,9 +37,9 @@ typedef struct ct_test_fixture {
+     char *issuer_file;
+     int expected_sct_count;
+     /* Set the following to test handling of SCTs in TLS format */
+-    const unsigned char *tls_sct;
+-    size_t tls_sct_len;
+-    SCT *sct;
++    const unsigned char *tls_sct_list;
++    size_t tls_sct_list_len;
++    STACK_OF(SCT) *sct_list;
+     /*
+      * A file to load the expected SCT text from.
+      * This text will be compared to the actual text output during the test.
+@@ -132,7 +87,7 @@ end:
+ static void tear_down(CT_TEST_FIXTURE fixture)
+ {
+     CTLOG_STORE_free(fixture.ctlog_store);
+-    SCT_free(fixture.sct);
++    SCT_LIST_free(fixture.sct_list);
+     ERR_print_errors_fp(stderr);
+ }
+ 
+@@ -192,7 +147,7 @@ static int read_text_file(const char *dir, const char *file,
+     return result;
+ }
+ 
+-static int compare_sct_printout(SCT *sct,
++static int compare_sct_list_printout(STACK_OF(SCT) *sct,
+     const char *expected_output)
+ {
+     BIO *text_buffer = NULL;
+@@ -205,7 +160,7 @@ static int compare_sct_printout(SCT *sct,
+         goto end;
+     }
+ 
+-    SCT_print(sct, text_buffer, 0, NULL);
++    SCT_LIST_print(sct, text_buffer, 0, "\n", NULL);
+ 
+     /* Append null terminator because we're about to use the buffer contents
+     * as a string. */
+@@ -249,7 +204,8 @@ static int compare_extension_printout(X509_EXTENSION *extension,
+     /* Append null terminator because we're about to use the buffer contents
+      * as a string. */
+     if (BIO_write(text_buffer, "\0", 1) != 1) {
+-        fprintf(stderr, "Failed to append null terminator to extension text\n");
++        fprintf(stderr,
++                "Failed to append null terminator to extension text\n");
+         goto end;
+     }
+ 
+@@ -267,6 +223,51 @@ end:
+     return result;
+ }
+ 
++static int assert_validity(CT_TEST_FIXTURE fixture,
++                           STACK_OF(SCT) *scts,
++                           CT_POLICY_EVAL_CTX *policy_ctx) {
++    int invalid_sct_count = 0;
++    int valid_sct_count = 0;
++    int i;
++
++    if (SCT_LIST_validate(scts, policy_ctx) < 0) {
++        fprintf(stderr, "Error verifying SCTs\n");
++        return 0;
++    }
++
++    for (i = 0; i < sk_SCT_num(scts); ++i) {
++        SCT *sct_i = sk_SCT_value(scts, i);
++        switch (SCT_get_validation_status(sct_i)) {
++        case SCT_VALIDATION_STATUS_VALID:
++            ++valid_sct_count;
++            break;
++        case SCT_VALIDATION_STATUS_INVALID:
++            ++invalid_sct_count;
++            break;
++        default:
++            /* Ignore other validation statuses. */
++            break;
++        }
++    }
++
++    if (valid_sct_count != fixture.expected_sct_count) {
++        int unverified_sct_count = sk_SCT_num(scts) -
++                invalid_sct_count - valid_sct_count;
++
++        fprintf(stderr,
++                "%d SCTs failed verification\n"
++                "%d SCTs passed verification (%d expected)\n"
++                "%d SCTs were unverified\n",
++                invalid_sct_count,
++                valid_sct_count,
++                fixture.expected_sct_count,
++                unverified_sct_count);
++        return 0;
++    }
++
++    return 1;
++}
++
+ static int execute_cert_test(CT_TEST_FIXTURE fixture)
+ {
+     int success = 0;
+@@ -275,8 +276,8 @@ static int execute_cert_test(CT_TEST_FIXTURE fixture)
+     SCT *sct = NULL;
+     char expected_sct_text[CT_TEST_MAX_FILE_SIZE];
+     int sct_text_len = 0;
+-    unsigned char *tls_sct = NULL;
+-    size_t tls_sct_len = 0;
++    unsigned char *tls_sct_list = NULL;
++    size_t tls_sct_list_len = 0;
+     CT_POLICY_EVAL_CTX *ct_policy_ctx = CT_POLICY_EVAL_CTX_new();
+ 
+     if (fixture.sct_text_file != NULL) {
+@@ -337,7 +338,6 @@ static int execute_cert_test(CT_TEST_FIXTURE fixture)
+             }
+ 
+             if (fixture.test_validity) {
+-                int are_scts_validated = 0;
+                 int i;
+ 
+                 scts = X509V3_EXT_d2i(sct_extension);
+@@ -351,44 +351,8 @@ static int execute_cert_test(CT_TEST_FIXTURE fixture)
+                     }
+                 }
+ 
+-                are_scts_validated = SCT_LIST_validate(scts, ct_policy_ctx);
+-                if (are_scts_validated < 0) {
+-                    fprintf(stderr, "Error verifying SCTs\n");
+-                    goto end;
+-                } else if (!are_scts_validated) {
+-                    int invalid_sct_count = 0;
+-                    int valid_sct_count = 0;
+-
+-                    for (i = 0; i < sk_SCT_num(scts); ++i) {
+-                        SCT *sct_i = sk_SCT_value(scts, i);
+-                        switch (SCT_get_validation_status(sct_i)) {
+-                        case SCT_VALIDATION_STATUS_VALID:
+-                            ++valid_sct_count;
+-                            break;
+-                        case SCT_VALIDATION_STATUS_INVALID:
+-                            ++invalid_sct_count;
+-                            break;
+-                        default:
+-                            /* Ignore other validation statuses. */
+-                            break;
+-                        }
+-                    }
+-
+-                    if (valid_sct_count != fixture.expected_sct_count) {
+-                        int unverified_sct_count = sk_SCT_num(scts) -
+-                                invalid_sct_count - valid_sct_count;
+-
+-                        fprintf(stderr,
+-                                "%d SCTs failed verification\n"
+-                                "%d SCTs passed verification (%d expected)\n"
+-                                "%d SCTs were unverified\n",
+-                                invalid_sct_count,
+-                                valid_sct_count,
+-                                fixture.expected_sct_count,
+-                                unverified_sct_count);
+-                    }
++                if (!assert_validity(fixture, scts, ct_policy_ctx))
+                     goto end;
+-                }
+             }
+         } else if (sct_extension != NULL) {
+             fprintf(stderr,
+@@ -398,33 +362,28 @@ static int execute_cert_test(CT_TEST_FIXTURE fixture)
+         }
+     }
+ 
+-    if (fixture.tls_sct != NULL) {
+-        const unsigned char *p = fixture.tls_sct;
+-        if (o2i_SCT(&sct, &p, fixture.tls_sct_len) == NULL) {
+-            fprintf(stderr, "Failed to decode SCT from TLS format\n");
++    if (fixture.tls_sct_list != NULL) {
++        const unsigned char *p = fixture.tls_sct_list;
++        if (o2i_SCT_LIST(&scts, &p, fixture.tls_sct_list_len) == NULL) {
++            fprintf(stderr, "Failed to decode SCTs from TLS format\n");
+             goto end;
+         }
+ 
+         if (fixture.test_validity && cert != NULL) {
+-            int is_sct_validated = SCT_validate(sct, ct_policy_ctx);
+-            if (is_sct_validated < 0) {
+-                fprintf(stderr, "Error validating SCT\n");
++            if (!assert_validity(fixture, scts, ct_policy_ctx))
+                 goto end;
+-            } else if (!is_sct_validated) {
+-                fprintf(stderr, "SCT failed verification\n");
+-                goto end;
+-            }
+         }
+ 
+         if (fixture.sct_text_file
+-            && compare_sct_printout(sct, expected_sct_text)) {
++            && compare_sct_list_printout(scts, expected_sct_text)) {
+                 goto end;
+         }
+ 
+-        tls_sct_len = i2o_SCT(sct, &tls_sct);
+-        if (tls_sct_len != fixture.tls_sct_len ||
+-            memcmp(fixture.tls_sct, tls_sct, tls_sct_len) != 0) {
+-            fprintf(stderr, "Failed to encode SCT into TLS format correctly\n");
++        tls_sct_list_len = i2o_SCT_LIST(scts, &tls_sct_list);
++        if (tls_sct_list_len != fixture.tls_sct_list_len ||
++            memcmp(fixture.tls_sct_list, tls_sct_list, tls_sct_list_len) != 0) {
++            fprintf(stderr,
++                    "Failed to encode SCTs into TLS format correctly\n");
+             goto end;
+         }
+     }
+@@ -436,7 +395,7 @@ end:
+     SCT_LIST_free(scts);
+     SCT_free(sct);
+     CT_POLICY_EVAL_CTX_free(ct_policy_ctx);
+-    OPENSSL_free(tls_sct);
++    OPENSSL_free(tls_sct_list);
+     return success;
+ }
+ 
+@@ -501,7 +460,9 @@ static int test_verify_multiple_scts()
+ 
+ static int test_decode_tls_sct()
+ {
+-    const unsigned char tls_sct[] = "\x00" /* version */
++    const unsigned char tls_sct_list[] = "\x00\x78" /* length of list */
++        "\x00\x76"
++        "\x00" /* version */
+         /* log ID */
+         "\xDF\x1C\x2E\xC1\x15\x00\x94\x52\x47\xA9\x61\x68\x32\x5D\xDC\x5C\x79"
+         "\x59\xE8\xF7\xC6\xD3\x88\xFC\x00\x2E\x0B\xBD\x3F\x74\xD7\x64"
+@@ -518,8 +479,8 @@ static int test_decode_tls_sct()
+         "\xED\xBF\x08";
+ 
+     SETUP_CT_TEST_FIXTURE();
+-    fixture.tls_sct = tls_sct;
+-    fixture.tls_sct_len = 118;
++    fixture.tls_sct_list = tls_sct_list;
++    fixture.tls_sct_list_len = 0x7a;
+     fixture.sct_dir = ct_dir;
+     fixture.sct_text_file = "tls1.sct";
+     EXECUTE_CT_TEST();
+@@ -539,6 +500,7 @@ static int test_encode_tls_sct()
+ 
+     SETUP_CT_TEST_FIXTURE();
+ 
++    STACK_OF(SCT) *sct_list = sk_SCT_new_null();
+     SCT *sct = SCT_new();
+     if (!SCT_set_version(sct, SCT_VERSION_V1)) {
+         fprintf(stderr, "Failed to set SCT version\n");
+@@ -557,7 +519,9 @@ static int test_encode_tls_sct()
+         fprintf(stderr, "Failed to set SCT signature\n");
+         return 1;
+     }
+-    fixture.sct = sct;
++    sk_SCT_push(sct_list, sct);
++
++    fixture.sct_list = sct_list;
+     fixture.sct_dir = ct_dir;
+     fixture.sct_text_file = "tls1.sct";
+     EXECUTE_CT_TEST();
 diff --git a/test/d2i-tests/bad-int-pad0.der b/test/d2i-tests/bad-int-pad0.der
 new file mode 100644
-index 000000000000..46f6092a82cc
+index 0000000..46f6092
 Binary files /dev/null and b/test/d2i-tests/bad-int-pad0.der differ
 diff --git a/test/d2i-tests/bad-int-padminus1.der b/test/d2i-tests/bad-int-padminus1.der
 new file mode 100644
-index 000000000000..a4b6bb97921f
+index 0000000..a4b6bb9
 Binary files /dev/null and b/test/d2i-tests/bad-int-padminus1.der differ
 diff --git a/test/d2i-tests/bad_bio.der b/test/d2i-tests/bad_bio.der
 new file mode 100644
-index 000000000000..8681f0528d97
+index 0000000..8681f05
 Binary files /dev/null and b/test/d2i-tests/bad_bio.der differ
 diff --git a/test/d2i-tests/high_tag.der b/test/d2i-tests/high_tag.der
 new file mode 100644
-index 000000000000..5c523ecde54f
+index 0000000..5c523ec
 Binary files /dev/null and b/test/d2i-tests/high_tag.der differ
 diff --git a/test/d2i-tests/int0.der b/test/d2i-tests/int0.der
 new file mode 100644
-index 000000000000..bbfb76b9d33e
+index 0000000..bbfb76b
 Binary files /dev/null and b/test/d2i-tests/int0.der differ
 diff --git a/test/d2i-tests/int1.der b/test/d2i-tests/int1.der
 new file mode 100644
-index 000000000000..26dd6b16d96e
+index 0000000..26dd6b1
 Binary files /dev/null and b/test/d2i-tests/int1.der differ
 diff --git a/test/d2i-tests/intminus1.der b/test/d2i-tests/intminus1.der
 new file mode 100644
-index 000000000000..e7c1cea38cbe
+index 0000000..e7c1cea
 Binary files /dev/null and b/test/d2i-tests/intminus1.der differ
 diff --git a/test/d2i_test.c b/test/d2i_test.c
-index 6ffdf5507a4d..8c99087732dd 100644
+index 6ffdf55..8c99087 100644
 --- a/test/d2i_test.c
 +++ b/test/d2i_test.c
 @@ -1,11 +1,10 @@
@@ -145498,10 +162225,10 @@
 +            ret = 1;
          goto err;
 +    }
++
++    derlen = ASN1_item_i2d(value, &der, item_type);
  
 -    ret = 1;
-+    derlen = ASN1_item_i2d(value, &der, item_type);
-+
 +    if (der == NULL || derlen < 0) {
 +        if (expected_error == ASN1_ENCODE)
 +            ret = 1;
@@ -145530,9 +162257,10 @@
  {
      int result = 0;
      const char *test_type_name;
+-
+-    if (argc != 3)
 +    const char *expected_error_string;
- 
--    if (argc != 3)
++
 +    size_t i;
 +    static ASN1_ITEM_EXP *items[] = {
 +        ASN1_ITEM_ref(ASN1_ANY),
@@ -145557,15 +162285,16 @@
  
      test_type_name = argv[1];
 -    test_file = argv[2];
-+    expected_error_string = argv[2];
-+    test_file = argv[3];
- 
+-
 -    if (strcmp(test_type_name, "generalname") == 0) {
 -        item_type = ASN1_ITEM_rptr(GENERAL_NAME);
 -    } else if (strcmp(test_type_name, "x509") == 0) {
 -        item_type = ASN1_ITEM_rptr(X509);
 -    } else {
 -        fprintf(stderr, "Bad type %s\n", test_type_name);
++    expected_error_string = argv[2];
++    test_file = argv[3];
++
 +    for (i = 0; i < OSSL_NELEM(items); i++) {
 +        const ASN1_ITEM *it = ASN1_ITEM_ptr(items[i]);
 +        if (strcmp(test_type_name, it->sname) == 0) {
@@ -145596,15 +162325,13 @@
      }
  
 diff --git a/test/danetest.c b/test/danetest.c
-index 5bca1aaea1df..d473b126894e 100644
+index 5bca1aa..d473b12 100644
 --- a/test/danetest.c
 +++ b/test/danetest.c
 @@ -1,50 +1,10 @@
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+/*
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -145635,7 +162362,9 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
-- *
++/*
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -145714,22 +162443,14 @@
           && PEM_read_bio(fp, &name, &header, &data, &len);
 -	 ++count) {
 -	const unsigned char *p = data;
-+         ++count) {
-+        const unsigned char *p = data;
- 
+-
 -	if (strcmp(name, PEM_STRING_X509) == 0
 -	    || strcmp(name, PEM_STRING_X509_TRUSTED) == 0
 -	    || strcmp(name, PEM_STRING_X509_OLD) == 0) {
 -	    d2i_X509_t d = strcmp(name, PEM_STRING_X509_TRUSTED) ?
 -		d2i_X509_AUX : d2i_X509;
 -	    X509 *cert = d(0, &p, len);
-+        if (strcmp(name, PEM_STRING_X509) == 0
-+            || strcmp(name, PEM_STRING_X509_TRUSTED) == 0
-+            || strcmp(name, PEM_STRING_X509_OLD) == 0) {
-+            d2i_X509_t d = strcmp(name, PEM_STRING_X509_TRUSTED) ?
-+                d2i_X509_AUX : d2i_X509;
-+            X509 *cert = d(0, &p, len);
- 
+-
 -	    if (cert == 0 || (p - data) != len)
 -		errtype = "certificate";
 -	    else if (sk_X509_push(chain, cert) == 0) {
@@ -145740,6 +162461,23 @@
 -	    fprintf(stderr, "unexpected chain file object: %s\n", name);
 -	    goto err;
 -	}
+-
+-	/*
+-	 * If any of these were null, PEM_read() would have failed.
+-	 */
+-	OPENSSL_free(name);
+-	OPENSSL_free(header);
+-	OPENSSL_free(data);
++         ++count) {
++        const unsigned char *p = data;
++
++        if (strcmp(name, PEM_STRING_X509) == 0
++            || strcmp(name, PEM_STRING_X509_TRUSTED) == 0
++            || strcmp(name, PEM_STRING_X509_OLD) == 0) {
++            d2i_X509_t d = strcmp(name, PEM_STRING_X509_TRUSTED) ?
++                d2i_X509_AUX : d2i_X509;
++            X509 *cert = d(0, &p, len);
++
 +            if (cert == 0 || (p - data) != len)
 +                errtype = "certificate";
 +            else if (sk_X509_push(chain, cert) == 0) {
@@ -145750,13 +162488,7 @@
 +            fprintf(stderr, "unexpected chain file object: %s\n", name);
 +            goto err;
 +        }
- 
--	/*
--	 * If any of these were null, PEM_read() would have failed.
--	 */
--	OPENSSL_free(name);
--	OPENSSL_free(header);
--	OPENSSL_free(data);
++
 +        /*
 +         * If any of these were null, PEM_read() would have failed.
 +         */
@@ -145821,7 +162553,7 @@
      if (SSL_CTX_dane_enable(ctx) <= 0) {
          print_errors();
 diff --git a/test/danetest.in b/test/danetest.in
-index 7db0400245c7..485c98657c26 100644
+index 7db0400..485c986 100644
 --- a/test/danetest.in
 +++ b/test/danetest.in
 @@ -1,4 +1,12 @@
@@ -145838,15 +162570,13 @@
  #
  #       <TLSA-count> <cert-count> <desired-verify-result> <desired-match-depth>
 diff --git a/test/destest.c b/test/destest.c
-index a544f415260c..877f71d3fb96 100644
+index a544f41..877f71d 100644
 --- a/test/destest.c
 +++ b/test/destest.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -145894,7 +162624,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -145950,7 +162682,7 @@
      return (err);
  }
 diff --git a/test/dhtest.c b/test/dhtest.c
-index fb1c2df23bc3..1dc395b44eba 100644
+index fb1c2df..2847c5c 100644
 --- a/test/dhtest.c
 +++ b/test/dhtest.c
 @@ -1,58 +1,10 @@
@@ -146018,7 +162750,19 @@
   */
  
  #include <stdio.h>
-@@ -143,10 +95,6 @@ int main(int argc, char *argv[])
+@@ -88,8 +40,9 @@ int main(int argc, char *argv[])
+     BN_GENCB *_cb = NULL;
+     DH *a = NULL;
+     DH *b = NULL;
+-    BIGNUM *ap = NULL, *ag = NULL, *bp = NULL, *bg = NULL, *apub_key = NULL;
+-    BIGNUM *bpub_key = NULL, *priv_key = NULL;
++    const BIGNUM *ap = NULL, *ag = NULL, *apub_key = NULL, *priv_key = NULL;
++    const BIGNUM *bpub_key = NULL;
++    BIGNUM *bp = NULL, *bg = NULL;
+     char buf[12] = {0};
+     unsigned char *abuf = NULL;
+     unsigned char *bbuf = NULL;
+@@ -143,10 +96,6 @@ int main(int argc, char *argv[])
          goto err;
      bp = bg = NULL;
  
@@ -146029,7 +162773,38 @@
      if (!DH_generate_key(a))
          goto err;
      DH_get0_key(a, &apub_key, &priv_key);
-@@ -635,7 +583,7 @@ static int run_rfc5114_tests(void)
+@@ -528,6 +477,7 @@ static int run_rfc5114_tests(void)
+     unsigned char *Z2 = NULL;
+     const rfc5114_td *td = NULL;
+     BIGNUM *bady = NULL, *priv_key = NULL, *pub_key = NULL;
++    const BIGNUM *pub_key_tmp;
+ 
+     for (i = 0; i < (int)OSSL_NELEM(rfctd); i++) {
+         td = rfctd + i;
+@@ -563,17 +513,13 @@ static int run_rfc5114_tests(void)
+          * Work out shared secrets using both sides and compare with expected
+          * values.
+          */
+-        DH_get0_key(dhB, &pub_key, NULL);
+-        if (DH_compute_key(Z1, pub_key, dhA) == -1) {
+-            pub_key = NULL;
++        DH_get0_key(dhB, &pub_key_tmp, NULL);
++        if (DH_compute_key(Z1, pub_key_tmp, dhA) == -1)
+             goto bad_err;
+-        }
+-        DH_get0_key(dhA, &pub_key, NULL);
+-        if (DH_compute_key(Z2, pub_key, dhB) == -1) {
+-            pub_key = NULL;
++
++        DH_get0_key(dhA, &pub_key_tmp, NULL);
++        if (DH_compute_key(Z2, pub_key_tmp, dhB) == -1)
+             goto bad_err;
+-        }
+-        pub_key = NULL;
+ 
+         if (memcmp(Z1, td->Z, td->Z_len))
+             goto err;
+@@ -635,7 +581,7 @@ static int run_rfc5114_tests(void)
      OPENSSL_free(Z1);
      OPENSSL_free(Z2);
  
@@ -146039,15 +162814,13 @@
      return 0;
   err:
 diff --git a/test/dsatest.c b/test/dsatest.c
-index 1945f35f5b09..b99c467e1735 100644
+index 1945f35..1085422 100644
 --- a/test/dsatest.c
 +++ b/test/dsatest.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -146095,7 +162868,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -146107,6 +162882,15 @@
   */
  
  #include <stdio.h>
+@@ -133,7 +85,7 @@ int main(int argc, char **argv)
+     unsigned long h;
+     unsigned char sig[256];
+     unsigned int siglen;
+-    BIGNUM *p = NULL, *q = NULL, *g = NULL;
++    const BIGNUM *p = NULL, *q = NULL, *g = NULL;
+ 
+     if (bio_err == NULL)
+         bio_err = BIO_new_fp(stderr, BIO_NOCLOSE | BIO_FP_TEXT);
 @@ -195,13 +147,6 @@ int main(int argc, char **argv)
          goto end;
      }
@@ -146122,7 +162906,7 @@
      DSA_sign(0, str1, 20, sig, &siglen, dsa);
      if (DSA_verify(0, str1, 20, sig, siglen, dsa) == 1)
 diff --git a/test/dtlsv1listentest.c b/test/dtlsv1listentest.c
-index 6eb2e5ccfbb8..cc7e5f788923 100644
+index 6eb2e5c..cc7e5f7 100644
 --- a/test/dtlsv1listentest.c
 +++ b/test/dtlsv1listentest.c
 @@ -1,58 +1,10 @@
@@ -146191,7 +162975,7 @@
  #include <string.h>
 diff --git a/test/dummytest.c b/test/dummytest.c
 deleted file mode 100644
-index 25ce77b2df28..000000000000
+index 25ce77b..0000000
 --- a/test/dummytest.c
 +++ /dev/null
 @@ -1,57 +0,0 @@
@@ -146253,7 +163037,7 @@
 -    return (0);
 -}
 diff --git a/test/ecdhtest.c b/test/ecdhtest.c
-index 356f3e939c12..b327847e899b 100644
+index 356f3e9..b327847 100644
 --- a/test/ecdhtest.c
 +++ b/test/ecdhtest.c
 @@ -1,3 +1,12 @@
@@ -146330,7 +163114,7 @@
  #include <stdio.h>
  #include <stdlib.h>
 diff --git a/test/ecdhtest_cavs.h b/test/ecdhtest_cavs.h
-index 632d02d69ee2..ab3ac22f2ec7 100644
+index 632d02d..ab3ac22 100644
 --- a/test/ecdhtest_cavs.h
 +++ b/test/ecdhtest_cavs.h
 @@ -1,3 +1,12 @@
@@ -146347,7 +163131,7 @@
  #define ECDHTEST_CAVS_H
  
 diff --git a/test/ecdsatest.c b/test/ecdsatest.c
-index f5b753a11011..932ea3bff978 100644
+index f5b753a..538f9df 100644
 --- a/test/ecdsatest.c
 +++ b/test/ecdsatest.c
 @@ -1,59 +1,12 @@
@@ -146405,9 +163189,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -146417,8 +163200,113 @@
  /* ====================================================================
   * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
   *
+@@ -192,7 +145,7 @@ int x9_62_test_internal(BIO *out, int nid, const char *r_in, const char *s_in)
+     ECDSA_SIG *signature = NULL;
+     BIGNUM *r = NULL, *s = NULL;
+     BIGNUM *kinv = NULL, *rp = NULL;
+-    BIGNUM *sig_r, *sig_s;
++    const BIGNUM *sig_r, *sig_s;
+ 
+     if (md_ctx == NULL)
+         goto x962_int_err;
+@@ -227,7 +180,7 @@ int x9_62_test_internal(BIO *out, int nid, const char *r_in, const char *s_in)
+         goto x962_int_err;
+     if (!BN_dec2bn(&r, r_in) || !BN_dec2bn(&s, s_in))
+         goto x962_int_err;
+-    ECDSA_SIG_get0(&sig_r, &sig_s, signature);
++    ECDSA_SIG_get0(signature, &sig_r, &sig_s);
+     if (BN_cmp(sig_r, r) || BN_cmp(sig_s, s))
+         goto x962_int_err;
+     BIO_printf(out, ".");
+@@ -298,13 +251,15 @@ int test_builtin(BIO *out)
+     size_t crv_len = 0, n = 0;
+     EC_KEY *eckey = NULL, *wrong_eckey = NULL;
+     EC_GROUP *group;
+-    ECDSA_SIG *ecdsa_sig = NULL;
++    ECDSA_SIG *ecdsa_sig = NULL, *modified_sig = NULL;
+     unsigned char digest[20], wrong_digest[20];
+     unsigned char *signature = NULL;
+     const unsigned char *sig_ptr;
+     unsigned char *sig_ptr2;
+     unsigned char *raw_buf = NULL;
+-    BIGNUM *sig_r, *sig_s;
++    const BIGNUM *sig_r, *sig_s;
++    BIGNUM *modified_r = NULL, *modified_s = NULL;
++    BIGNUM *unmodified_r = NULL, *unmodified_s = NULL;
+     unsigned int sig_len, degree, r_len, s_len, bn_len, buf_len;
+     int nid, ret = 0;
+ 
+@@ -435,7 +390,7 @@ int test_builtin(BIO *out)
+             goto builtin_err;
+         }
+ 
+-        ECDSA_SIG_get0(&sig_r, &sig_s, ecdsa_sig);
++        ECDSA_SIG_get0(ecdsa_sig, &sig_r, &sig_s);
+ 
+         /* Store the two BIGNUMs in raw_buf. */
+         r_len = BN_num_bytes(sig_r);
+@@ -456,12 +411,18 @@ int test_builtin(BIO *out)
+         dirt = raw_buf[11] ? raw_buf[11] : 1;
+         raw_buf[offset] ^= dirt;
+         /* Now read the BIGNUMs back in from raw_buf. */
+-        if ((BN_bin2bn(raw_buf, bn_len, sig_r) == NULL) ||
+-            (BN_bin2bn(raw_buf + bn_len, bn_len, sig_s) == NULL))
++        modified_sig = ECDSA_SIG_new();
++        if (modified_sig == NULL)
+             goto builtin_err;
+-
++        if (((modified_r = BN_bin2bn(raw_buf, bn_len, NULL)) == NULL)
++            || ((modified_s = BN_bin2bn(raw_buf + bn_len, bn_len, NULL)) == NULL)
++            || !ECDSA_SIG_set0(modified_sig, modified_r, modified_s)) {
++            BN_free(modified_r);
++            BN_free(modified_s);
++            goto builtin_err;
++        }
+         sig_ptr2 = signature;
+-        sig_len = i2d_ECDSA_SIG(ecdsa_sig, &sig_ptr2);
++        sig_len = i2d_ECDSA_SIG(modified_sig, &sig_ptr2);
+         if (ECDSA_verify(0, digest, 20, signature, sig_len, eckey) == 1) {
+             BIO_printf(out, " failed\n");
+             goto builtin_err;
+@@ -470,12 +431,16 @@ int test_builtin(BIO *out)
+          * Sanity check: undo the modification and verify signature.
+          */
+         raw_buf[offset] ^= dirt;
+-        if ((BN_bin2bn(raw_buf, bn_len, sig_r) == NULL) ||
+-            (BN_bin2bn(raw_buf + bn_len, bn_len, sig_s) == NULL))
++        if (((unmodified_r = BN_bin2bn(raw_buf, bn_len, NULL)) == NULL)
++            || ((unmodified_s = BN_bin2bn(raw_buf + bn_len, bn_len, NULL)) == NULL)
++            || !ECDSA_SIG_set0(modified_sig, unmodified_r, unmodified_s)) {
++            BN_free(unmodified_r);
++            BN_free(unmodified_s);
+             goto builtin_err;
++        }
+ 
+         sig_ptr2 = signature;
+-        sig_len = i2d_ECDSA_SIG(ecdsa_sig, &sig_ptr2);
++        sig_len = i2d_ECDSA_SIG(modified_sig, &sig_ptr2);
+         if (ECDSA_verify(0, digest, 20, signature, sig_len, eckey) != 1) {
+             BIO_printf(out, " failed\n");
+             goto builtin_err;
+@@ -495,6 +460,8 @@ int test_builtin(BIO *out)
+         wrong_eckey = NULL;
+         ECDSA_SIG_free(ecdsa_sig);
+         ecdsa_sig = NULL;
++        ECDSA_SIG_free(modified_sig);
++        modified_sig = NULL;
+         OPENSSL_free(raw_buf);
+         raw_buf = NULL;
+     }
+@@ -504,6 +471,7 @@ int test_builtin(BIO *out)
+     EC_KEY_free(eckey);
+     EC_KEY_free(wrong_eckey);
+     ECDSA_SIG_free(ecdsa_sig);
++    ECDSA_SIG_free(modified_sig);
+     OPENSSL_free(signature);
+     OPENSSL_free(raw_buf);
+     OPENSSL_free(curves);
 diff --git a/test/ectest.c b/test/ectest.c
-index bbc7ed0ac990..f7e55c3b6aee 100644
+index bbc7ed0..f7e55c3 100644
 --- a/test/ectest.c
 +++ b/test/ectest.c
 @@ -1,59 +1,12 @@
@@ -146476,9 +163364,8 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
 + * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
+  *
 + * Licensed under the OpenSSL license (the "License").  You may not use
 + * this file except in compliance with the License.  You can obtain a copy
 + * in the file LICENSE in the source distribution or at
@@ -146725,7 +163612,7 @@
  }
  
 diff --git a/test/enginetest.c b/test/enginetest.c
-index 873b4eaaad42..21cd20af050f 100644
+index 873b4ea..21cd20a 100644
 --- a/test/enginetest.c
 +++ b/test/enginetest.c
 @@ -1,59 +1,10 @@
@@ -146794,7 +163681,7 @@
  
  #include <stdio.h>
 diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c
-index dbcfb7cbb703..9217f3ae516d 100644
+index dbcfb7c..9217f3a 100644
 --- a/test/evp_extra_test.c
 +++ b/test/evp_extra_test.c
 @@ -1,69 +1,10 @@
@@ -146874,7 +163761,7 @@
  
  #include <stdio.h>
 diff --git a/test/evp_test.c b/test/evp_test.c
-index 56c821bd9ef7..f820e2537dbc 100644
+index 56c821b..f820e25 100644
 --- a/test/evp_test.c
 +++ b/test/evp_test.c
 @@ -1,54 +1,10 @@
@@ -146884,8 +163771,7 @@
 - */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * Redistribution and use in source and binary forms, with or without
 - * modification, are permitted provided that the following conditions
 - * are met:
@@ -146911,7 +163797,8 @@
 - * 5. Products derived from this software may not be called "OpenSSL"
 - *    nor may "OpenSSL" appear in their names without prior written
 - *    permission of the OpenSSL Project.
-- *
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * 6. Redistributions of any form whatsoever must retain the following
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
@@ -147099,7 +163986,7 @@
  }
  
 diff --git a/test/evptests.txt b/test/evptests.txt
-index fb94416e60f6..93199b9c6a65 100644
+index fb94416..a66a152 100644
 --- a/test/evptests.txt
 +++ b/test/evptests.txt
 @@ -1,3 +1,12 @@
@@ -147115,8 +164002,142 @@
  #cipher:key:iv:plaintext:ciphertext:0/1(decrypt/encrypt)
  #aadcipher:key:iv:plaintext:ciphertext:aad:tag:0/1(decrypt/encrypt)
  #digest:::input:output
+@@ -192,6 +201,25 @@ Input = "aaaaaaaaaa"
+ Count = 100000
+ Output = 0C99005BEB57EFF50A7CF005560DDF5D29057FD86B20BFD62DECA0F1CCEA4AF51FC15490EDDC47AF32BB2B66C34FF9AD8C6008AD677F77126953B226E4ED8B01
+ 
++# DES EDE3 CFB1
++# echo -n "Hello World" |
++#  apps/openssl enc -des-ede3-cfb1 \
++#   -K 000102030405060708090A0B0C0D0E0F1011121314151617 -iv 0001020304050607 |
++#  xxd -ps -u
++
++Cipher = DES-EDE3-CFB1
++Key = 000102030405060708090A0B0C0D0E0F1011121314151617
++IV = 0001020304050607
++Plaintext = "Hello World"
++Ciphertext = 3CF55D656E9C0664513358
++
++Cipher = DES-EDE3-CFB1
++Key = 000102030405060708090A0B0C0D0E0F1011121314151617
++IV = 0001020304050607
++Operation = DECRYPT
++Plaintext = "Hello World"
++Ciphertext = 3CF55D656E9C0664513358
++
+ # AES 128 ECB tests (from FIPS-197 test vectors, encrypt)
+ 
+ Cipher = AES-128-ECB
+@@ -1766,6 +1794,15 @@ Tag = 566f8ef683078bfdeeffa869d751a017
+ Plaintext = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+ Ciphertext = 56b3373ca9ef6e4a2b64fe1e9a17b61425f10d47a75a5fce13efc6bc784af24f4141bdd48cf7c770887afd573cca5418a9aeffcd7c5ceddfc6a78397b9a85b499da558257267caab2ad0b23ca476a53cb17fb41c4b8b475cb4f3f7165094c229c9e8c4dc0a2a5ff1903e501511221376a1cdb8364c5061a20cae74bc4acd76ceb0abc9fd3217ef9f8c90be402ddf6d8697f4f880dff15bfb7a6b28241ec8fe183c2d59e3f9dfff653c7126f0acb9e64211f42bae12af462b1070bef1ab5e3606
+ 
++# 240 bytes plaintext, iv is chosen so that initial counter LSB is 0xFF
++Cipher = aes-128-gcm
++Key = 00000000000000000000000000000000
++IV = ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
++AAD =
++Tag = fd0c7011ff07f0071324bdfb2d0f3a29
++Plaintext = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
++Ciphertext = 56b3373ca9ef6e4a2b64fe1e9a17b61425f10d47a75a5fce13efc6bc784af24f4141bdd48cf7c770887afd573cca5418a9aeffcd7c5ceddfc6a78397b9a85b499da558257267caab2ad0b23ca476a53cb17fb41c4b8b475cb4f3f7165094c229c9e8c4dc0a2a5ff1903e501511221376a1cdb8364c5061a20cae74bc4acd76ceb0abc9fd3217ef9f8c90be402ddf6d8697f4f880dff15bfb7a6b28241ec8fe183c2d59e3f9dfff653c7126f0acb9e64211f42bae12af462b1070bef1ab5e3606872ca10dee15b3249b1a1b958f23134c4bccb7d03200bce420a2f8eb66dcf3644d1423c1b5699003c13ecef4bf38a3b6
++
+ # 288 bytes plaintext, iv is chosen so that initial counter LSB is 0xFF
+ Cipher = aes-128-gcm
+ Key = 00000000000000000000000000000000
+@@ -2087,6 +2124,91 @@ IV = 21436587a90000000000000000000000
+ Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
+ Ciphertext = 38b45812ef43a05bd957e545907e223b954ab4aaf088303ad910eadf14b42be68b2461149d8c8ba85f992be970bc621f1b06573f63e867bf5875acafa04e42ccbd7bd3c2a0fb1fff791ec5ec36c66ae4ac1e806d81fbf709dbe29e471fad38549c8e66f5345d7c1eb94f405d1ec785cc6f6a68f6254dd8339f9d84057e01a17741990482999516b5611a38f41bb6478e6f173f320805dd71b1932fc333cb9ee39936beea9ad96fa10fb4112b901734ddad40bc1878995f8e11aee7d141a2f5d48b7a4e1e7f0b2c04830e69a4fd1378411c2f287edf48c6c4e5c247a19680f7fe41cefbd49b582106e3616cbbe4dfb2344b2ae9519391f3e0fb4922254b1d6d2d19c6d4d537b3a26f3bcc51588b32f3eca0829b6a5ac72578fb814fb43cf80d64a233e3f997a3f02683342f2b33d25b492536b93becb2f5e1a8b82f5b883342729e8ae09d16938841a21a97fb543eea3bbff59f13c1a18449e398701c1ad51648346cbc04c27bb2da3b93a1372ccae548fb53bee476f9e9c91773b1bb19828394d55d3e1a20ed69113a860b6829ffa847224604435070221b257e8dff783615d2cae4803a93aa4334ab482a0afac9c0aeda70b45a481df5dec5df8cc0f423c77a5fd46cd312021d4b438862419a791be03bb4d97c0e59578542531ba466a83baf92cefc151b5cc1611a167893819b63fb8a6b18e86de60290fa72b797b0ce59f3
+ 
++# Exercise different lengths covering even ciphertext stealing cases
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
++Ciphertext = 27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061
++Ciphertext = 27A7479BEFA1D476489F308CD4CFA6E2A96E4BBE3208FF25287DD3819616E89CC78CF7F5E543445F8333D8FA7F56000005279FA5D8B5E4AD40E736DDB4D35412328063FD2AAB53E5EA1E0A9F332500A5B079C6307EA0914559C6D2FB6384F8AADF94
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f
++Ciphertext = 27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce84
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071
++Ciphertext = 27A7479BEFA1D476489F308CD4CFA6E2A96E4BBE3208FF25287DD3819616E89CC78CF7F5E543445F8333D8FA7F56000005279FA5D8B5E4AD40E736DDB4D35412328063FD2AAB53E5EA1E0A9F332500A5DF9487D07A5C92CC512C8866C7E860CEF4F253466EF4953ADC8FE2F5BC1FF57593FD
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f
++Ciphertext = 27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad0265
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081
++Ciphertext = 27A7479BEFA1D476489F308CD4CFA6E2A96E4BBE3208FF25287DD3819616E89CC78CF7F5E543445F8333D8FA7F56000005279FA5D8B5E4AD40E736DDB4D35412328063FD2AAB53E5EA1E0A9F332500A5DF9487D07A5C92CC512C8866C7E860CE93FDF166A24912B422976146AE20CE842973C68248EDDFE26FB9B096659C8A5D6BB7
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f
++Ciphertext = 27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f9091
++Ciphertext = 27A7479BEFA1D476489F308CD4CFA6E2A96E4BBE3208FF25287DD3819616E89CC78CF7F5E543445F8333D8FA7F56000005279FA5D8B5E4AD40E736DDB4D35412328063FD2AAB53E5EA1E0A9F332500A5DF9487D07A5C92CC512C8866C7E860CE93FDF166A24912B422976146AE20CE846BB7DC9BA94A767AAEF20C0D61AD0265C4DD16E65A24575A709F174593F19FF85EA9
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f
++Ciphertext = 27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1
++Ciphertext = 27A7479BEFA1D476489F308CD4CFA6E2A96E4BBE3208FF25287DD3819616E89CC78CF7F5E543445F8333D8FA7F56000005279FA5D8B5E4AD40E736DDB4D35412328063FD2AAB53E5EA1E0A9F332500A5DF9487D07A5C92CC512C8866C7E860CE93FDF166A24912B422976146AE20CE846BB7DC9BA94A767AAEF20C0D61AD02655EA92DC4C4E41A8952C651D33174BE519215FA160C664D4B07D757A034AB3B35A10C
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf
++Ciphertext = 27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8a750e8768defffed9122810aaeb99f91
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1
++Ciphertext = 27A7479BEFA1D476489F308CD4CFA6E2A96E4BBE3208FF25287DD3819616E89CC78CF7F5E543445F8333D8FA7F56000005279FA5D8B5E4AD40E736DDB4D35412328063FD2AAB53E5EA1E0A9F332500A5DF9487D07A5C92CC512C8866C7E860CE93FDF166A24912B422976146AE20CE846BB7DC9BA94A767AAEF20C0D61AD02655EA92DC4C4E41A8952C651D33174BE51A10C421110E6D81588EDE82103A252D82C6CBC24F9357BD1FB882AA4B2CC2E7FA750
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf
++Ciphertext = 27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8a750e8768defffed9122810aaeb99f9172af82b604dc4b8e51bcb08235a6f434
++
++Cipher = aes-128-xts
++Key = 2718281828459045235360287471352631415926535897932384626433832795
++IV = 00000000000000000000000000000000
++Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1
++Ciphertext = 27A7479BEFA1D476489F308CD4CFA6E2A96E4BBE3208FF25287DD3819616E89CC78CF7F5E543445F8333D8FA7F56000005279FA5D8B5E4AD40E736DDB4D35412328063FD2AAB53E5EA1E0A9F332500A5DF9487D07A5C92CC512C8866C7E860CE93FDF166A24912B422976146AE20CE846BB7DC9BA94A767AAEF20C0D61AD02655EA92DC4C4E41A8952C651D33174BE51A10C421110E6D81588EDE82103A252D8A750E8768DEFFFED9122810AAEB99F910409B03D164E727C31290FD4E039500872AF
++
+ # AES wrap tests from RFC3394
+ Cipher = id-aes128-wrap
+ Key = 000102030405060708090A0B0C0D0E0F
 diff --git a/test/exdatatest.c b/test/exdatatest.c
-index 96105bbf4f46..8e3506840613 100644
+index 96105bb..8e35068 100644
 --- a/test/exdatatest.c
 +++ b/test/exdatatest.c
 @@ -1,56 +1,12 @@
@@ -147184,15 +164205,13 @@
  #include <assert.h>
  #include <string.h>
 diff --git a/test/exptest.c b/test/exptest.c
-index 68802683b7e2..f7df9cf16526 100644
+index 6880268..f7df9cf 100644
 --- a/test/exptest.c
 +++ b/test/exptest.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -147240,7 +164259,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -147254,7 +164275,7 @@
  #include <stdio.h>
 diff --git a/test/generate_buildtest.pl b/test/generate_buildtest.pl
 new file mode 100644
-index 000000000000..7921021e45e2
+index 0000000..7921021
 --- /dev/null
 +++ b/test/generate_buildtest.pl
 @@ -0,0 +1,27 @@
@@ -147286,7 +164307,7 @@
 +}
 +_____
 diff --git a/test/generate_ssl_tests.pl b/test/generate_ssl_tests.pl
-index 713fb3f7c226..db8fc74d44f9 100644
+index 713fb3f..7a016d1 100644
 --- a/test/generate_ssl_tests.pl
 +++ b/test/generate_ssl_tests.pl
 @@ -1,5 +1,10 @@
@@ -147306,113 +164327,27 @@
      # Add the implicit base configuration.
      foreach my $test (@ssltests::tests) {
          $test->{"server"} = { (%ssltests::base_server, %{$test->{"server"}}) };
-+	# use server values if server2 is not defined
++	# Do not emit an empty "server2" section.
 +	if (defined $test->{"server2"}) {
-+	    $test->{"server2"} = { (%ssltests::base_server, %{$test->{"server2"}}) };
-+	} else {
-+	    $test->{"server2"} = { (%ssltests::base_server, %{$test->{"server"}}) };
-+	}
++            $test->{"server2"} = { (%ssltests::base_server, %{$test->{"server2"}}) };
++        } else {
++            $test->{"server2"} = { };
++        }
          $test->{"client"} = { (%ssltests::base_client, %{$test->{"client"}}) };
      }
  
-diff --git a/test/getsettest.c b/test/getsettest.c
-new file mode 100644
-index 000000000000..97d1b357cc97
---- /dev/null
-+++ b/test/getsettest.c
-@@ -0,0 +1,90 @@
-+/*
-+ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
-+ * Licensed under the OpenSSL license (the "License").  You may not use
-+ * this file except in compliance with the License.  You can obtain a copy
-+ * in the file LICENSE in the source distribution or at
-+ * https://www.openssl.org/source/license.html
-+ */
-+
-+#include <openssl/opensslconf.h>
-+#include <openssl/bio.h>
-+#include <openssl/crypto.h>
-+#include <openssl/ssl.h>
-+
-+
-+int main(int argc, char *argv[])
-+{
-+    SSL_CTX *ctx = NULL;
-+    SSL *con = NULL;
-+    BIO *err;
-+    int testresult = 0;
-+
-+    err = BIO_new_fp(stderr, BIO_NOCLOSE | BIO_FP_TEXT);
-+
-+    CRYPTO_set_mem_debug(1);
-+    CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
-+
-+    /* Test tlsext_status_type */
-+    ctx = SSL_CTX_new(TLS_method());
-+
-+    if (SSL_CTX_get_tlsext_status_type(ctx) != -1) {
-+        printf("Unexpected initial value for "
-+               "SSL_CTX_get_tlsext_status_type()\n");
-+        goto end;
-+    }
-+
-+    con = SSL_new(ctx);
-+
-+    if (SSL_get_tlsext_status_type(con) != -1) {
-+        printf("Unexpected initial value for SSL_get_tlsext_status_type()\n");
-+        goto end;
-+    }
-+
-+    if (!SSL_set_tlsext_status_type(con, TLSEXT_STATUSTYPE_ocsp)) {
-+        printf("Unexpected fail for SSL_set_tlsext_status_type()\n");
-+        goto end;
-+    }
-+
-+    if (SSL_get_tlsext_status_type(con) != TLSEXT_STATUSTYPE_ocsp) {
-+        printf("Unexpected result for SSL_get_tlsext_status_type()\n");
-+        goto end;
-+    }
-+
-+    SSL_free(con);
-+    con = NULL;
-+
-+    if (!SSL_CTX_set_tlsext_status_type(ctx, TLSEXT_STATUSTYPE_ocsp)) {
-+        printf("Unexpected fail for SSL_CTX_set_tlsext_status_type()\n");
-+        goto end;
-+    }
-+
-+    if (SSL_CTX_get_tlsext_status_type(ctx) != TLSEXT_STATUSTYPE_ocsp) {
-+        printf("Unexpected result for SSL_CTX_get_tlsext_status_type()\n");
-+        goto end;
-+    }
-+
-+    con = SSL_new(ctx);
-+
-+    if (SSL_get_tlsext_status_type(con) != TLSEXT_STATUSTYPE_ocsp) {
-+        printf("Unexpected result for SSL_get_tlsext_status_type() (test 2)\n");
-+        goto end;
-+    }
-+
-+    testresult = 1;
-+
-+ end:
-+    SSL_free(con);
-+    SSL_CTX_free(ctx);
-+
-+#ifndef OPENSSL_NO_CRYPTO_MDEBUG
-+    if (CRYPTO_mem_leaks(err) <= 0)
-+        testresult = 0;
-+#endif
-+    BIO_free(err);
-+
-+    if (testresult)
-+        printf("PASS\n");
-+
-+    return testresult?0:1;
-+}
+@@ -87,8 +98,7 @@ sub print_templates {
+ # Shamelessly copied from Configure.
+ sub read_config {
+     my $fname = shift;
+-    open(INPUT, "< $fname")
+-	or die "Can't open input file '$fname'!\n";
++    open(INPUT, "< $fname") or die "Can't open input file '$fname'!\n";
+     local $/ = undef;
+     my $content = <INPUT>;
+     close(INPUT);
 diff --git a/test/gmdifftest.c b/test/gmdifftest.c
-index 57c6a3d39416..73c910dd2fbe 100644
+index 57c6a3d..73c910d 100644
 --- a/test/gmdifftest.c
 +++ b/test/gmdifftest.c
 @@ -1,55 +1,10 @@
@@ -147478,7 +164413,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/test/handshake_helper.c b/test/handshake_helper.c
-index 4682d45bfb40..f7ab841f57fa 100644
+index 4682d45..a60c9c6 100644
 --- a/test/handshake_helper.c
 +++ b/test/handshake_helper.c
 @@ -1,16 +1,16 @@
@@ -147502,7 +164437,7 @@
  #include <openssl/ssl.h>
  
  #include "handshake_helper.h"
-@@ -23,6 +23,7 @@
+@@ -23,11 +23,12 @@
  typedef struct handshake_ex_data {
      int alert_sent;
      int alert_received;
@@ -147510,27 +164445,52 @@
  } HANDSHAKE_EX_DATA;
  
  static int ex_data_idx;
-@@ -40,6 +41,65 @@ static void info_callback(const SSL *s, int where, int ret)
+ 
+-static void info_callback(const SSL *s, int where, int ret)
++static void info_cb(const SSL *s, int where, int ret)
+ {
+     if (where & SSL_CB_ALERT) {
+         HANDSHAKE_EX_DATA *ex_data =
+@@ -40,6 +41,98 @@ static void info_callback(const SSL *s, int where, int ret)
      }
  }
  
-+static int verify_reject_callback(X509_STORE_CTX *ctx, void *arg) {
++static int servername_cb(SSL *s, int *ad, void *arg)
++{
++    const char *servername = SSL_get_servername(s, TLSEXT_NAMETYPE_host_name);
++    if (servername != NULL && !strcmp(servername, "server2")) {
++        SSL_CTX *new_ctx = (SSL_CTX*)arg;
++        SSL_set_SSL_CTX(s, new_ctx);
++        /*
++         * Copy over all the SSL_CTX options - reasonable behavior
++         * allows testing of cases where the options between two
++         * contexts differ/conflict
++         */
++        SSL_clear_options(s, 0xFFFFFFFFL);
++        SSL_set_options(s, SSL_CTX_get_options(new_ctx));
++    }
++    return SSL_TLSEXT_ERR_OK;
++}
++
++static int verify_reject_cb(X509_STORE_CTX *ctx, void *arg) {
 +    X509_STORE_CTX_set_error(ctx, X509_V_ERR_APPLICATION_VERIFICATION);
 +    return 0;
 +}
 +
-+static int verify_accept_callback(X509_STORE_CTX *ctx, void *arg) {
++static int verify_accept_cb(X509_STORE_CTX *ctx, void *arg) {
 +    return 1;
 +}
 +
-+static int broken_session_ticket_callback(SSL* s, unsigned char* key_name, unsigned char *iv,
-+                                          EVP_CIPHER_CTX *ctx, HMAC_CTX *hctx, int enc)
++static int broken_session_ticket_cb(SSL* s, unsigned char* key_name, unsigned char *iv,
++                                    EVP_CIPHER_CTX *ctx, HMAC_CTX *hctx, int enc)
 +{
 +    return 0;
 +}
 +
-+int do_not_call_session_ticket_callback(SSL* s, unsigned char* key_name, unsigned char *iv,
-+                                        EVP_CIPHER_CTX *ctx, HMAC_CTX *hctx, int enc)
++static int do_not_call_session_ticket_cb(SSL* s, unsigned char* key_name,
++                                         unsigned char *iv,
++                                         EVP_CIPHER_CTX *ctx,
++                                         HMAC_CTX *hctx, int enc)
 +{
 +    HANDSHAKE_EX_DATA *ex_data =
 +        (HANDSHAKE_EX_DATA*)(SSL_get_ex_data(s, ex_data_idx));
@@ -147542,23 +164502,35 @@
 + * Configure callbacks and other properties that can't be set directly
 + * in the server/client CONF.
 + */
-+static void configure_handshake_ctx(SSL_CTX *server_ctx, SSL_CTX *client_ctx,
++static void configure_handshake_ctx(SSL_CTX *server_ctx, SSL_CTX *server2_ctx,
++                                    SSL_CTX *client_ctx,
 +                                    const SSL_TEST_CTX *test_ctx)
 +{
 +    switch (test_ctx->client_verify_callback) {
 +    case SSL_TEST_VERIFY_ACCEPT_ALL:
-+        SSL_CTX_set_cert_verify_callback(client_ctx, &verify_accept_callback,
++        SSL_CTX_set_cert_verify_callback(client_ctx, &verify_accept_cb,
 +                                         NULL);
 +        break;
 +    case SSL_TEST_VERIFY_REJECT_ALL:
-+        SSL_CTX_set_cert_verify_callback(client_ctx, &verify_reject_callback,
++        SSL_CTX_set_cert_verify_callback(client_ctx, &verify_reject_cb,
 +                                         NULL);
 +        break;
 +    default:
 +        break;
 +    }
++
++    /* link the two contexts for SNI purposes */
++    SSL_CTX_set_tlsext_servername_callback(server_ctx, servername_cb);
++    SSL_CTX_set_tlsext_servername_arg(server_ctx, server2_ctx);
++    /*
++     * The initial_ctx/session_ctx always handles the encrypt/decrypt of the
++     * session ticket. This ticket_key callback is assigned to the second
++     * session (assigned via SNI), and should never be invoked
++     */
++    SSL_CTX_set_tlsext_ticket_key_cb(server2_ctx, do_not_call_session_ticket_cb);
++
 +    if (test_ctx->session_ticket_expected == SSL_TEST_SESSION_TICKET_BROKEN) {
-+        SSL_CTX_set_tlsext_ticket_key_cb(server_ctx, broken_session_ticket_callback);
++        SSL_CTX_set_tlsext_ticket_key_cb(server_ctx, broken_session_ticket_cb);
 +    }
 +}
 +
@@ -147569,24 +164541,26 @@
 +static void configure_handshake_ssl(SSL *server, SSL *client,
 +                                    const SSL_TEST_CTX *test_ctx)
 +{
-+    SSL_set_tlsext_host_name(client, ssl_servername_name(test_ctx->servername));
++    if (test_ctx->servername != SSL_TEST_SERVERNAME_NONE)
++        SSL_set_tlsext_host_name(client,
++                                 ssl_servername_name(test_ctx->servername));
 +}
 +
 +
  typedef enum {
      PEER_SUCCESS,
      PEER_RETRY,
-@@ -139,7 +199,8 @@ static handshake_status_t handshake_status(peer_status_t last_status,
+@@ -139,7 +232,8 @@ static handshake_status_t handshake_status(peer_status_t last_status,
      return INTERNAL_ERROR;
  }
  
 -HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *client_ctx)
-+HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *client_ctx,
-+                              const SSL_TEST_CTX *test_ctx)
++HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *server2_ctx,
++                              SSL_CTX *client_ctx, const SSL_TEST_CTX *test_ctx)
  {
      SSL *server, *client;
      BIO *client_to_server, *server_to_client;
-@@ -148,11 +209,18 @@ HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *client_ctx)
+@@ -148,11 +242,18 @@ HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *client_ctx)
      int client_turn = 1;
      peer_status_t client_status = PEER_RETRY, server_status = PEER_RETRY;
      handshake_status_t status = HANDSHAKE_RETRY;
@@ -147594,7 +164568,7 @@
 +    size_t len = 0;
 +    SSL_SESSION* sess = NULL;
 +
-+    configure_handshake_ctx(server_ctx, client_ctx, test_ctx);
++    configure_handshake_ctx(server_ctx, server2_ctx, client_ctx, test_ctx);
  
      server = SSL_new(server_ctx);
      client = SSL_new(client_ctx);
@@ -147605,7 +164579,18 @@
      memset(&server_ex_data, 0, sizeof(server_ex_data));
      memset(&client_ex_data, 0, sizeof(client_ex_data));
      memset(&ret, 0, sizeof(ret));
-@@ -232,6 +300,16 @@ HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *client_ctx)
+@@ -184,8 +285,8 @@ HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *client_ctx)
+     OPENSSL_assert(SSL_set_ex_data(client, ex_data_idx,
+                                    &client_ex_data) == 1);
+ 
+-    SSL_set_info_callback(server, &info_callback);
+-    SSL_set_info_callback(client, &info_callback);
++    SSL_set_info_callback(server, &info_cb);
++    SSL_set_info_callback(client, &info_cb);
+ 
+     /*
+      * Half-duplex handshake loop.
+@@ -232,6 +333,16 @@ HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *client_ctx)
      ret.client_alert_received = server_ex_data.alert_received;
      ret.server_protocol = SSL_version(server);
      ret.client_protocol = SSL_version(client);
@@ -147623,7 +164608,7 @@
      SSL_free(server);
      SSL_free(client);
 diff --git a/test/handshake_helper.h b/test/handshake_helper.h
-index 56dfb197e21a..d04655a9ed9d 100644
+index 56dfb19..4a51ad4 100644
 --- a/test/handshake_helper.h
 +++ b/test/handshake_helper.h
 @@ -1,11 +1,10 @@
@@ -147641,29 +164626,26 @@
   */
  
  #ifndef HEADER_HANDSHAKE_HELPER_H
-@@ -27,9 +26,19 @@ typedef struct handshake_result {
+@@ -27,9 +26,16 @@ typedef struct handshake_result {
      /* Negotiated protocol. On success, these should always match. */
      int server_protocol;
      int client_protocol;
 +    /* Server connection */
-+    int servername;
++    ssl_servername_t servername;
 +    /* Session ticket status */
-+    int session_ticket;
++    ssl_session_ticket_t session_ticket;
 +    /* Was this called on the second context? */
 +    int session_ticket_do_not_call;
  } HANDSHAKE_RESULT;
  
  /* Do a handshake and report some information about the result. */
 -HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *client_ctx);
-+HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *client_ctx,
-+                              const SSL_TEST_CTX *test_ctx);
-+
-+int do_not_call_session_ticket_callback(SSL* s, unsigned char* key_name, unsigned char *iv,
-+                                        EVP_CIPHER_CTX *ctx, HMAC_CTX *hctx, int enc);
++HANDSHAKE_RESULT do_handshake(SSL_CTX *server_ctx, SSL_CTX *server2_ctx,
++                              SSL_CTX *client_ctx, const SSL_TEST_CTX *test_ctx);
  
  #endif  /* HEADER_HANDSHAKE_HELPER_H */
 diff --git a/test/heartbeat_test.c b/test/heartbeat_test.c
-index 2fda5769786b..906736c37e56 100644
+index 2fda576..906736c 100644
 --- a/test/heartbeat_test.c
 +++ b/test/heartbeat_test.c
 @@ -1,3 +1,12 @@
@@ -147689,7 +164671,7 @@
                  test_case_name);
          setup_ok = 0;
 diff --git a/test/hmactest.c b/test/hmactest.c
-index 2ceec5fa6d9b..145c467e5022 100644
+index 2ceec5f..0f4348b 100644
 --- a/test/hmactest.c
 +++ b/test/hmactest.c
 @@ -1,58 +1,10 @@
@@ -147757,8 +164739,44 @@
   */
  
  #include <stdio.h>
+@@ -171,6 +123,11 @@ int main(int argc, char *argv[])
+         err++;
+         goto end;
+     }
++    if (HMAC_CTX_get_md(ctx) != NULL) {
++        printf("Message digest not NULL for HMAC (test 4)\n");
++        err++;
++        goto test5;
++    }
+     if (HMAC_Init_ex(ctx, NULL, 0, NULL, NULL)) {
+         printf("Should fail to initialise HMAC with empty MD and key (test 4)\n");
+         err++;
+@@ -203,6 +160,11 @@ test5:
+     }
+ 
+     HMAC_CTX_reset(ctx);
++    if (HMAC_CTX_get_md(ctx) != NULL) {
++        printf("Message digest not NULL for HMAC (test 5)\n");
++        err++;
++        goto test6;
++    }
+     if (HMAC_Init_ex(ctx, test[4].key, test[4].key_len, NULL, NULL)) {
+         printf("Should fail to initialise HMAC with empty MD (test 5)\n");
+         err++;
+@@ -250,6 +212,11 @@ test5:
+         err++;
+         goto test6;
+     }
++    if (HMAC_CTX_get_md(ctx) != EVP_sha256()) {
++        printf("Unexpected message digest for HMAC (test 5)\n");
++        err++;
++        goto test6;
++    }
+     if (!HMAC_Update(ctx, test[5].data, test[5].data_len)) {
+         printf("Error updating HMAC with data (sha256) (test 5)\n");
+         err++;
 diff --git a/test/ideatest.c b/test/ideatest.c
-index 0f68ebd33ffc..38496700938f 100644
+index 0f68ebd..3849670 100644
 --- a/test/ideatest.c
 +++ b/test/ideatest.c
 @@ -1,58 +1,10 @@
@@ -147827,7 +164845,7 @@
  
  #include <stdio.h>
 diff --git a/test/igetest.c b/test/igetest.c
-index aca8f8593816..1245860a5a62 100644
+index aca8f85..1245860 100644
 --- a/test/igetest.c
 +++ b/test/igetest.c
 @@ -1,51 +1,10 @@
@@ -147889,7 +164907,7 @@
  
  #include <openssl/crypto.h>
 diff --git a/test/md2test.c b/test/md2test.c
-index ccf46593d06b..5d94e5f88ad5 100644
+index ccf4659..5d94e5f 100644
 --- a/test/md2test.c
 +++ b/test/md2test.c
 @@ -1,58 +1,10 @@
@@ -147958,7 +164976,7 @@
  
  #include <stdio.h>
 diff --git a/test/md4test.c b/test/md4test.c
-index d7168a1f2992..9c2e7fde0c90 100644
+index d7168a1..9c2e7fd 100644
 --- a/test/md4test.c
 +++ b/test/md4test.c
 @@ -1,58 +1,10 @@
@@ -148027,7 +165045,7 @@
  
  #include <stdio.h>
 diff --git a/test/md5test.c b/test/md5test.c
-index 2c758900143a..f39b907dcf74 100644
+index 2c75890..f39b907 100644
 --- a/test/md5test.c
 +++ b/test/md5test.c
 @@ -1,58 +1,10 @@
@@ -148096,7 +165114,7 @@
  
  #include <stdio.h>
 diff --git a/test/mdc2test.c b/test/mdc2test.c
-index 2177a0ef6d15..dc8dd58d786d 100644
+index 2177a0e..dc8dd58 100644
 --- a/test/mdc2test.c
 +++ b/test/mdc2test.c
 @@ -1,58 +1,10 @@
@@ -148174,7 +165192,7 @@
  # ifdef CHARSET_EBCDIC
      ebcdic2ascii(text, text, strlen(text));
 diff --git a/test/memleaktest.c b/test/memleaktest.c
-index f8945904ac24..2b23df788b93 100644
+index f894590..2b23df7 100644
 --- a/test/memleaktest.c
 +++ b/test/memleaktest.c
 @@ -1,55 +1,10 @@
@@ -148240,7 +165258,7 @@
  
  #include <stdio.h>
 diff --git a/test/methtest.c b/test/methtest.c
-index efec15468f03..11aa2335b776 100644
+index efec154..11aa233 100644
 --- a/test/methtest.c
 +++ b/test/methtest.c
 @@ -1,58 +1,10 @@
@@ -148309,7 +165327,7 @@
  
  #include <stdio.h>
 diff --git a/test/nptest.c b/test/nptest.c
-index 952885195f05..62dd27135d0f 100644
+index 9528851..62dd271 100644
 --- a/test/nptest.c
 +++ b/test/nptest.c
 @@ -1,58 +1,12 @@
@@ -148378,7 +165396,7 @@
  #include <string.h>
  
 diff --git a/test/p5_crpt2_test.c b/test/p5_crpt2_test.c
-index da45f70f7c53..5785519aa107 100644
+index da45f70..4a40c26 100644
 --- a/test/p5_crpt2_test.c
 +++ b/test/p5_crpt2_test.c
 @@ -1,50 +1,10 @@
@@ -148437,20 +165455,24 @@
   */
  
  #include <stdio.h>
+@@ -54,9 +14,6 @@
+ 
+ #include <openssl/opensslconf.h>
+ #include <openssl/evp.h>
+-#ifndef OPENSSL_NO_ENGINE
+-# include <openssl/engine.h>
+-#endif
+ #include <openssl/err.h>
+ #include <openssl/conf.h>
+ 
 diff --git a/test/packettest.c b/test/packettest.c
-index 57ef51bcf26d..58fc7525fb4b 100644
+index 57ef51b..58fc752 100644
 --- a/test/packettest.c
 +++ b/test/packettest.c
-@@ -1,60 +1,11 @@
+@@ -1,61 +1,12 @@
  /*
 - * Written by Matt Caswell for the OpenSSL project.
-+ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
-+ *
-+ * Licensed under the OpenSSL license (the "License").  You may not use
-+ * this file except in compliance with the License.  You can obtain a copy
-+ * in the file LICENSE in the source distribution or at
-+ * https://www.openssl.org/source/license.html
-  */
+- */
 -/* ====================================================================
 - * Copyright (c) 2015 The OpenSSL Project.  All rights reserved.
 - *
@@ -148502,14 +165524,20 @@
 - * This product includes cryptographic software written by Eric Young
 - * (eay at cryptsoft.com).  This product includes software written by Tim
 - * Hudson (tjh at cryptsoft.com).
-- *
-- */
++ * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
++ * Licensed under the OpenSSL license (the "License").  You may not use
++ * this file except in compliance with the License.  You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
+  */
+ 
 -
- 
  #include "../ssl/packet_locl.h"
  
+ #define BUF_LEN 255
 diff --git a/test/pbelutest.c b/test/pbelutest.c
-index dafae78ff779..e226d43f2629 100644
+index dafae78..e226d43 100644
 --- a/test/pbelutest.c
 +++ b/test/pbelutest.c
 @@ -1,55 +1,10 @@
@@ -148575,7 +165603,7 @@
  
  #include <openssl/evp.h>
 diff --git a/test/pkits-test.pl b/test/pkits-test.pl
-index 5c6b89fcdb0a..ae7279cf2ea2 100644
+index 5c6b89f..ae7279c 100644
 --- a/test/pkits-test.pl
 +++ b/test/pkits-test.pl
 @@ -1,54 +1,10 @@
@@ -148640,7 +165668,7 @@
  # Perl utility to run PKITS tests for RFC3280 compliance. 
  
 diff --git a/test/r160test.c b/test/r160test.c
-index b99fa3a3c52e..06033eb91f83 100644
+index b99fa3a..06033eb 100644
 --- a/test/r160test.c
 +++ b/test/r160test.c
 @@ -1,56 +1,9 @@
@@ -148708,7 +165736,7 @@
   */
 +
 diff --git a/test/randtest.c b/test/randtest.c
-index dc0e84d7a9b1..9f7a0371a67d 100644
+index dc0e84d..9f7a037 100644
 --- a/test/randtest.c
 +++ b/test/randtest.c
 @@ -1,58 +1,10 @@
@@ -148777,15 +165805,13 @@
  
  #include <stdio.h>
 diff --git a/test/rc2test.c b/test/rc2test.c
-index 3890cf0d3951..2d0a01d59614 100644
+index 3890cf0..2d0a01d 100644
 --- a/test/rc2test.c
 +++ b/test/rc2test.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -148833,7 +165859,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -148846,7 +165874,7 @@
  
  /*
 diff --git a/test/rc4test.c b/test/rc4test.c
-index 271fcf1580be..7a77b821927e 100644
+index 271fcf1..7a77b82 100644
 --- a/test/rc4test.c
 +++ b/test/rc4test.c
 @@ -1,58 +1,10 @@
@@ -148915,15 +165943,13 @@
  
  #include <stdio.h>
 diff --git a/test/rc5test.c b/test/rc5test.c
-index bb66154e25c5..6567bcb4354a 100644
+index bb66154..6567bcb 100644
 --- a/test/rc5test.c
 +++ b/test/rc5test.c
 @@ -1,58 +1,10 @@
 -/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
 - * All rights reserved.
-+/*
-+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * This package is an SSL implementation written
 - * by Eric Young (eay at cryptsoft.com).
 - * The implementation was written so as to conform with Netscapes SSL.
@@ -148971,7 +165997,9 @@
 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 - * SUCH DAMAGE.
-- *
++/*
++ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * The licence and distribution terms for any publically available version or
 - * derivative of this code cannot be changed.  i.e. this code cannot simply be
 - * copied and put under another distribution licence
@@ -148984,7 +166012,7 @@
  
  /*
 diff --git a/test/recipes/01-test_abort.t b/test/recipes/01-test_abort.t
-index 4a6cf9798344..2f121e25bf1b 100644
+index 4a6cf97..2f121e2 100644
 --- a/test/recipes/01-test_abort.t
 +++ b/test/recipes/01-test_abort.t
 @@ -1,4 +1,11 @@
@@ -149001,7 +166029,7 @@
  use OpenSSL::Test;
  
 diff --git a/test/recipes/01-test_ordinals.t b/test/recipes/01-test_ordinals.t
-index 070181d9a6a3..473d05b01446 100755
+index 070181d..473d05b 100755
 --- a/test/recipes/01-test_ordinals.t
 +++ b/test/recipes/01-test_ordinals.t
 @@ -1,56 +1,10 @@
@@ -149069,7 +166097,7 @@
  use OpenSSL::Test qw/:DEFAULT srctop_file/;
 diff --git a/test/recipes/01-test_symbol_presence.t b/test/recipes/01-test_symbol_presence.t
 new file mode 100644
-index 000000000000..32827f573e76
+index 0000000..32827f5
 --- /dev/null
 +++ b/test/recipes/01-test_symbol_presence.t
 @@ -0,0 +1,115 @@
@@ -149189,7 +166217,7 @@
 +    }
 +}
 diff --git a/test/recipes/05-test_bf.t b/test/recipes/05-test_bf.t
-index 4794bf0d842d..64c960953573 100644
+index 4794bf0..64c9609 100644
 --- a/test/recipes/05-test_bf.t
 +++ b/test/recipes/05-test_bf.t
 @@ -1,4 +1,11 @@
@@ -149206,7 +166234,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_cast.t b/test/recipes/05-test_cast.t
-index 621e1ae739aa..46c61dacb346 100644
+index 621e1ae..46c61da 100644
 --- a/test/recipes/05-test_cast.t
 +++ b/test/recipes/05-test_cast.t
 @@ -1,4 +1,11 @@
@@ -149223,7 +166251,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_des.t b/test/recipes/05-test_des.t
-index 71de4b47a202..2e6a32ba5d70 100644
+index 71de4b4..2e6a32b 100644
 --- a/test/recipes/05-test_des.t
 +++ b/test/recipes/05-test_des.t
 @@ -1,4 +1,11 @@
@@ -149240,7 +166268,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_hmac.t b/test/recipes/05-test_hmac.t
-index ba7a92b931b7..2059bcc8c735 100644
+index ba7a92b..2059bcc 100644
 --- a/test/recipes/05-test_hmac.t
 +++ b/test/recipes/05-test_hmac.t
 @@ -1,4 +1,11 @@
@@ -149257,7 +166285,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_idea.t b/test/recipes/05-test_idea.t
-index c43ba5c1adc5..ca2b76759cab 100644
+index c43ba5c..ca2b767 100644
 --- a/test/recipes/05-test_idea.t
 +++ b/test/recipes/05-test_idea.t
 @@ -1,4 +1,11 @@
@@ -149274,7 +166302,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_md2.t b/test/recipes/05-test_md2.t
-index 2175c5f41c1a..8781af0e9370 100644
+index 2175c5f..8781af0 100644
 --- a/test/recipes/05-test_md2.t
 +++ b/test/recipes/05-test_md2.t
 @@ -1,4 +1,11 @@
@@ -149291,7 +166319,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_md4.t b/test/recipes/05-test_md4.t
-index 2337223b47df..59a815bdd421 100644
+index 2337223..59a815b 100644
 --- a/test/recipes/05-test_md4.t
 +++ b/test/recipes/05-test_md4.t
 @@ -1,4 +1,11 @@
@@ -149308,7 +166336,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_md5.t b/test/recipes/05-test_md5.t
-index e9331e24c5f5..3af4d5504bfa 100644
+index e9331e2..3af4d55 100644
 --- a/test/recipes/05-test_md5.t
 +++ b/test/recipes/05-test_md5.t
 @@ -1,4 +1,11 @@
@@ -149325,7 +166353,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_mdc2.t b/test/recipes/05-test_mdc2.t
-index 23e904c292e3..181c90f1aa92 100644
+index 23e904c..181c90f 100644
 --- a/test/recipes/05-test_mdc2.t
 +++ b/test/recipes/05-test_mdc2.t
 @@ -1,4 +1,11 @@
@@ -149342,7 +166370,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_rand.t b/test/recipes/05-test_rand.t
-index afa66a666dda..3b175fac24a1 100644
+index afa66a6..3b175fa 100644
 --- a/test/recipes/05-test_rand.t
 +++ b/test/recipes/05-test_rand.t
 @@ -1,4 +1,11 @@
@@ -149359,7 +166387,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_rc2.t b/test/recipes/05-test_rc2.t
-index 423b3b7949b1..77d9382997a3 100644
+index 423b3b7..77d9382 100644
 --- a/test/recipes/05-test_rc2.t
 +++ b/test/recipes/05-test_rc2.t
 @@ -1,4 +1,10 @@
@@ -149375,7 +166403,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_rc4.t b/test/recipes/05-test_rc4.t
-index a16455fe1fc3..a26c9b8e5662 100644
+index a16455f..a26c9b8 100644
 --- a/test/recipes/05-test_rc4.t
 +++ b/test/recipes/05-test_rc4.t
 @@ -1,4 +1,10 @@
@@ -149391,7 +166419,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_rc5.t b/test/recipes/05-test_rc5.t
-index 4c5390a9c03f..fda0cd2e0e06 100644
+index 4c5390a..fda0cd2 100644
 --- a/test/recipes/05-test_rc5.t
 +++ b/test/recipes/05-test_rc5.t
 @@ -1,4 +1,11 @@
@@ -149408,7 +166436,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_rmd.t b/test/recipes/05-test_rmd.t
-index 7ad91c4ae4e2..b1112e13fb1f 100644
+index 7ad91c4..b1112e1 100644
 --- a/test/recipes/05-test_rmd.t
 +++ b/test/recipes/05-test_rmd.t
 @@ -1,4 +1,11 @@
@@ -149425,7 +166453,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_sha1.t b/test/recipes/05-test_sha1.t
-index 310022e604bc..21bb74edcc2c 100644
+index 310022e..21bb74e 100644
 --- a/test/recipes/05-test_sha1.t
 +++ b/test/recipes/05-test_sha1.t
 @@ -1,4 +1,11 @@
@@ -149442,7 +166470,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_sha256.t b/test/recipes/05-test_sha256.t
-index 02058c748fa7..071a45c68c13 100644
+index 02058c7..071a45c 100644
 --- a/test/recipes/05-test_sha256.t
 +++ b/test/recipes/05-test_sha256.t
 @@ -1,4 +1,11 @@
@@ -149459,7 +166487,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_sha512.t b/test/recipes/05-test_sha512.t
-index 6522ddd6b7c0..4ce585ce9b5c 100644
+index 6522ddd..4ce585c 100644
 --- a/test/recipes/05-test_sha512.t
 +++ b/test/recipes/05-test_sha512.t
 @@ -1,4 +1,11 @@
@@ -149476,7 +166504,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/05-test_wp.t b/test/recipes/05-test_wp.t
-index e745f230f2ce..a042898f38cd 100644
+index e745f23..a042898 100644
 --- a/test/recipes/05-test_wp.t
 +++ b/test/recipes/05-test_wp.t
 @@ -1,4 +1,11 @@
@@ -149493,7 +166521,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/10-test_bn.t b/test/recipes/10-test_bn.t
-index 7e728f4e1684..13f278e703a3 100644
+index 7e728f4..13f278e 100644
 --- a/test/recipes/10-test_bn.t
 +++ b/test/recipes/10-test_bn.t
 @@ -1,4 +1,11 @@
@@ -149521,7 +166549,7 @@
  sub check_operations {
      my $failcount = 0;
 diff --git a/test/recipes/10-test_exp.t b/test/recipes/10-test_exp.t
-index b8083e7ad563..7e999c4ac760 100644
+index b8083e7..7e999c4 100644
 --- a/test/recipes/10-test_exp.t
 +++ b/test/recipes/10-test_exp.t
 @@ -1,4 +1,11 @@
@@ -149538,7 +166566,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/15-test_dh.t b/test/recipes/15-test_dh.t
-index 35e9564438a1..60cb54c0afd1 100644
+index 35e9564..60cb54c 100644
 --- a/test/recipes/15-test_dh.t
 +++ b/test/recipes/15-test_dh.t
 @@ -1,4 +1,11 @@
@@ -149555,7 +166583,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/15-test_dsa.t b/test/recipes/15-test_dsa.t
-index 22f971cebf1a..bf3b0d376a3d 100644
+index 22f971c..bf3b0d3 100644
 --- a/test/recipes/15-test_dsa.t
 +++ b/test/recipes/15-test_dsa.t
 @@ -1,4 +1,11 @@
@@ -149572,7 +166600,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/15-test_ec.t b/test/recipes/15-test_ec.t
-index 48b8ce8cda22..a1c704a3f08b 100644
+index 48b8ce8..a1c704a 100644
 --- a/test/recipes/15-test_ec.t
 +++ b/test/recipes/15-test_ec.t
 @@ -1,4 +1,11 @@
@@ -149589,7 +166617,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/15-test_ecdh.t b/test/recipes/15-test_ecdh.t
-index acccea83ba73..f11cd06c9f4f 100644
+index acccea8..f11cd06 100644
 --- a/test/recipes/15-test_ecdh.t
 +++ b/test/recipes/15-test_ecdh.t
 @@ -1,4 +1,11 @@
@@ -149606,7 +166634,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/15-test_ecdsa.t b/test/recipes/15-test_ecdsa.t
-index 992bb966bd35..82a85594c33d 100644
+index 992bb96..82a8559 100644
 --- a/test/recipes/15-test_ecdsa.t
 +++ b/test/recipes/15-test_ecdsa.t
 @@ -1,4 +1,11 @@
@@ -149623,7 +166651,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/15-test_rsa.t b/test/recipes/15-test_rsa.t
-index 42bba1d0baed..07746f47f645 100644
+index 42bba1d..07746f4 100644
 --- a/test/recipes/15-test_rsa.t
 +++ b/test/recipes/15-test_rsa.t
 @@ -1,4 +1,11 @@
@@ -149640,7 +166668,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/20-test_enc.t b/test/recipes/20-test_enc.t
-index 2efcf7002064..88a589041a01 100644
+index 2efcf70..88a5890 100644
 --- a/test/recipes/20-test_enc.t
 +++ b/test/recipes/20-test_enc.t
 @@ -1,4 +1,11 @@
@@ -149657,7 +166685,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/25-test_crl.t b/test/recipes/25-test_crl.t
-index 8650bfc9f936..f708ea8ad9ed 100644
+index 8650bfc..f708ea8 100644
 --- a/test/recipes/25-test_crl.t
 +++ b/test/recipes/25-test_crl.t
 @@ -1,4 +1,11 @@
@@ -149674,7 +166702,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/25-test_d2i.t b/test/recipes/25-test_d2i.t
-index a9c259d118a4..77afe3fb9f80 100644
+index a9c259d..77afe3f 100644
 --- a/test/recipes/25-test_d2i.t
 +++ b/test/recipes/25-test_d2i.t
 @@ -1,4 +1,11 @@
@@ -149763,7 +166791,7 @@
 +   "Running d2i_test bad-int-padminus1.der INTEGER");
 diff --git a/test/recipes/25-test_gen.t b/test/recipes/25-test_gen.t
 deleted file mode 100644
-index ce4a5ee26017..000000000000
+index ce4a5ee..0000000
 --- a/test/recipes/25-test_gen.t
 +++ /dev/null
 @@ -1,44 +0,0 @@
@@ -149812,7 +166840,7 @@
 -       "Verifying signature on request");
 -};
 diff --git a/test/recipes/25-test_pkcs7.t b/test/recipes/25-test_pkcs7.t
-index 6e9b39717576..724326babe72 100644
+index 6e9b397..724326b 100644
 --- a/test/recipes/25-test_pkcs7.t
 +++ b/test/recipes/25-test_pkcs7.t
 @@ -1,4 +1,11 @@
@@ -149829,7 +166857,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/25-test_req.t b/test/recipes/25-test_req.t
-index fac97719e6a9..bcc10257d468 100644
+index fac9771..bcc1025 100644
 --- a/test/recipes/25-test_req.t
 +++ b/test/recipes/25-test_req.t
 @@ -1,23 +1,56 @@
@@ -149903,7 +166931,7 @@
  	close DATA;
  	unlink "req-check.err";
 diff --git a/test/recipes/25-test_sid.t b/test/recipes/25-test_sid.t
-index 84444b3b610d..b13cb5c23a7c 100644
+index 84444b3..b13cb5c 100644
 --- a/test/recipes/25-test_sid.t
 +++ b/test/recipes/25-test_sid.t
 @@ -1,4 +1,11 @@
@@ -149920,7 +166948,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/25-test_verify.t b/test/recipes/25-test_verify.t
-index e0257393683b..172eecbe7dd3 100644
+index e025739..5cc5ce8 100644
 --- a/test/recipes/25-test_verify.t
 +++ b/test/recipes/25-test_verify.t
 @@ -1,4 +1,11 @@
@@ -149936,8 +166964,46 @@
  
  use strict;
  use warnings;
+@@ -19,7 +26,7 @@ sub verify {
+     run(app([@args]));
+ }
+ 
+-plan tests => 101;
++plan tests => 108;
+ 
+ # Canonical success
+ ok(verify("ee-cert", "sslserver", ["root-cert"], ["ca-cert"]),
+@@ -215,6 +222,28 @@ ok(verify("ee-client", "sslclient", [qw(ee+clientAuth)], [], "-partial_chain"),
+ ok(!verify("ee-client", "sslclient", [qw(ee-clientAuth)], [], "-partial_chain"),
+    "reject direct match with client mistrust");
+ 
++# Proxy certificates
++ok(!verify("pc1-cert", "sslclient", [qw(root-cert)], [qw(ee-client ca-cert)]),
++   "fail to accept proxy cert without -allow_proxy_certs");
++ok(verify("pc1-cert", "sslclient", [qw(root-cert)], [qw(ee-client ca-cert)],
++          "-allow_proxy_certs"),
++   "accept proxy cert 1");
++ok(verify("pc2-cert", "sslclient", [qw(root-cert)], [qw(pc1-cert ee-client ca-cert)],
++          "-allow_proxy_certs"),
++   "accept proxy cert 2");
++ok(!verify("bad-pc3-cert", "sslclient", [qw(root-cert)], [qw(pc1-cert ee-client ca-cert)],
++          "-allow_proxy_certs"),
++   "fail proxy cert with incorrect subject");
++ok(!verify("bad-pc4-cert", "sslclient", [qw(root-cert)], [qw(pc1-cert ee-client ca-cert)],
++          "-allow_proxy_certs"),
++   "fail proxy cert with incorrect pathlen");
++ok(verify("pc5-cert", "sslclient", [qw(root-cert)], [qw(pc1-cert ee-client ca-cert)],
++          "-allow_proxy_certs"),
++   "accept proxy cert missing proxy policy");
++ok(!verify("pc6-cert", "sslclient", [qw(root-cert)], [qw(pc1-cert ee-client ca-cert)],
++          "-allow_proxy_certs"),
++   "failed proxy cert where last CN was added as a multivalue RDN component");
++
+ # Security level tests
+ ok(verify("ee-cert", "sslserver", ["root-cert"], ["ca-cert"], "-auth_level", "2"),
+    "accept RSA 2048 chain at auth level 2");
 diff --git a/test/recipes/25-test_x509.t b/test/recipes/25-test_x509.t
-index 1572a06d711b..98a8d324e9cf 100644
+index 1572a06..98a8d32 100644
 --- a/test/recipes/25-test_x509.t
 +++ b/test/recipes/25-test_x509.t
 @@ -1,4 +1,11 @@
@@ -149971,7 +167037,7 @@
 +    ok(run(test(["v3ext", srctop_file("test/certs", "pathlen.pem")])));
 +}
 diff --git a/test/recipes/30-test_afalg.t b/test/recipes/30-test_afalg.t
-index e28bccbe511d..c8cb67b758c4 100644
+index e28bccb..c8cb67b 100644
 --- a/test/recipes/30-test_afalg.t
 +++ b/test/recipes/30-test_afalg.t
 @@ -1,55 +1,10 @@
@@ -150037,7 +167103,7 @@
  use strict;
  use OpenSSL::Test qw/:DEFAULT bldtop_dir/;
 diff --git a/test/recipes/30-test_engine.t b/test/recipes/30-test_engine.t
-index c097b6f143a6..03c96cde0950 100644
+index c097b6f..03c96cd 100644
 --- a/test/recipes/30-test_engine.t
 +++ b/test/recipes/30-test_engine.t
 @@ -1,4 +1,11 @@
@@ -150054,7 +167120,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/30-test_evp.t b/test/recipes/30-test_evp.t
-index 9ee24f46b453..c277fcdfa027 100644
+index 9ee24f4..c277fcd 100644
 --- a/test/recipes/30-test_evp.t
 +++ b/test/recipes/30-test_evp.t
 @@ -1,4 +1,11 @@
@@ -150071,7 +167137,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/30-test_evp_extra.t b/test/recipes/30-test_evp_extra.t
-index 0f90b212cf2b..9a656b0bcbe2 100644
+index 0f90b21..9a656b0 100644
 --- a/test/recipes/30-test_evp_extra.t
 +++ b/test/recipes/30-test_evp_extra.t
 @@ -1,4 +1,11 @@
@@ -150088,7 +167154,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/30-test_pbelu.t b/test/recipes/30-test_pbelu.t
-index 635fb6915dca..38b2d4837c03 100644
+index 635fb69..38b2d48 100644
 --- a/test/recipes/30-test_pbelu.t
 +++ b/test/recipes/30-test_pbelu.t
 @@ -1,4 +1,11 @@
@@ -150105,7 +167171,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/40-test_rehash.t b/test/recipes/40-test_rehash.t
-index dd7f4acbf169..fa05ca09fb05 100644
+index dd7f4ac..fa05ca0 100644
 --- a/test/recipes/40-test_rehash.t
 +++ b/test/recipes/40-test_rehash.t
 @@ -1,4 +1,11 @@
@@ -150144,7 +167210,7 @@
          copy($_, curdir());
 diff --git a/test/recipes/70-test_asyncio.t b/test/recipes/70-test_asyncio.t
 new file mode 100644
-index 000000000000..c26f75705c32
+index 0000000..c26f757
 --- /dev/null
 +++ b/test/recipes/70-test_asyncio.t
 @@ -0,0 +1,22 @@
@@ -150171,7 +167237,7 @@
 +ok(run(test(["asynciotest", srctop_file("apps", "server.pem"),
 +             srctop_file("apps", "server.pem")])), "running asynciotest");
 diff --git a/test/recipes/70-test_clienthello.t b/test/recipes/70-test_clienthello.t
-index 2032d6d2f2da..ef0868f05a7b 100644
+index 2032d6d..ef0868f 100644
 --- a/test/recipes/70-test_clienthello.t
 +++ b/test/recipes/70-test_clienthello.t
 @@ -1,4 +1,11 @@
@@ -150188,7 +167254,7 @@
  use OpenSSL::Test;
  use OpenSSL::Test::Utils;
 diff --git a/test/recipes/70-test_packet.t b/test/recipes/70-test_packet.t
-index b1609d55c381..9bc6515e5860 100644
+index b1609d5..9bc6515 100644
 --- a/test/recipes/70-test_packet.t
 +++ b/test/recipes/70-test_packet.t
 @@ -1,4 +1,11 @@
@@ -150205,7 +167271,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/70-test_sslcertstatus.t b/test/recipes/70-test_sslcertstatus.t
-index 298f6da7fd95..9eb5116e7cf1 100755
+index 298f6da..f700f92 100755
 --- a/test/recipes/70-test_sslcertstatus.t
 +++ b/test/recipes/70-test_sslcertstatus.t
 @@ -1,56 +1,10 @@
@@ -150281,8 +167347,25 @@
  $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
  my $proxy = TLSProxy::Proxy->new(
      \&certstatus_filter,
+@@ -80,12 +37,11 @@ my $proxy = TLSProxy::Proxy->new(
+     (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE})
+ );
+ 
+-plan tests => 1;
+-
+-#Test 1: Sending a status_request extension in both ClientHello and ServerHello
+-#but then omitting the CertificateStatus message is valid
++#Test 1: Sending a status_request extension in both ClientHello and
++#ServerHello but then omitting the CertificateStatus message is valid
+ $proxy->clientflags("-status");
+-$proxy->start();
++$proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
++plan tests => 1;
+ ok(TLSProxy::Message->success, "Missing CertificateStatus message");
+ 
+ sub certstatus_filter
 diff --git a/test/recipes/70-test_sslextension.t b/test/recipes/70-test_sslextension.t
-index 7d45ce26a3c7..1084c9674d11 100755
+index 7d45ce2..7f69f64 100755
 --- a/test/recipes/70-test_sslextension.t
 +++ b/test/recipes/70-test_sslextension.t
 @@ -1,56 +1,10 @@
@@ -150358,12 +167441,30 @@
  $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
  my $proxy = TLSProxy::Proxy->new(
      \&extension_filter,
+@@ -77,10 +34,9 @@ my $proxy = TLSProxy::Proxy->new(
+     (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE})
+ );
+ 
+-plan tests => 3;
+-
+ # Test 1: Sending a zero length extension block should pass
+-$proxy->start();
++$proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
++plan tests => 3;
+ ok(TLSProxy::Message->success, "Zero extension length test");
+ 
+ sub extension_filter
+@@ -154,4 +110,3 @@ $proxy->clear();
+ $proxy->filter(\&inject_duplicate_extension_serverhello);
+ $proxy->start();
+ ok(TLSProxy::Message->fail(), "Duplicate ServerHello extension");
+-
 diff --git a/test/recipes/70-test_sslrecords.t b/test/recipes/70-test_sslrecords.t
 new file mode 100644
-index 000000000000..beacc4ad9adb
+index 0000000..b0e3739
 --- /dev/null
 +++ b/test/recipes/70-test_sslrecords.t
-@@ -0,0 +1,81 @@
+@@ -0,0 +1,80 @@
 +#! /usr/bin/env perl
 +# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
 +#
@@ -150400,12 +167501,11 @@
 +    (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE})
 +);
 +
-+plan tests => 3;
-+
 +#Test 1: Injecting out of context empty records should fail
 +my $content_type = TLSProxy::Record::RT_APPLICATION_DATA;
 +my $inject_recs_num = 1;
-+$proxy->start();
++$proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
++plan tests => 3;
 +ok(TLSProxy::Message->fail(), "Out of context empty records test");
 +
 +#Test 2: Injecting in context empty records should succeed
@@ -150446,7 +167546,7 @@
 +    }
 +}
 diff --git a/test/recipes/70-test_sslsessiontick.t b/test/recipes/70-test_sslsessiontick.t
-index cbd4c65f719d..aeed99c6b6f9 100755
+index cbd4c65..89ef12f 100755
 --- a/test/recipes/70-test_sslsessiontick.t
 +++ b/test/recipes/70-test_sslsessiontick.t
 @@ -1,56 +1,10 @@
@@ -150522,16 +167622,22 @@
  $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
  
  sub checkmessages($$$$$$);
-@@ -88,7 +45,7 @@ my $proxy = TLSProxy::Proxy->new(
+@@ -88,12 +45,11 @@ my $proxy = TLSProxy::Proxy->new(
      (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE})
  );
  
 -plan tests => 8;
+-
+ #Test 1: By default with no existing session we should get a session ticket
+ #Expected result: ClientHello extension seen; ServerHello extension seen
+ #                 NewSessionTicket message seen; Full handshake
+-$proxy->start();
++$proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
 +plan tests => 10;
+ checkmessages(1, "Default session ticket test", 1, 1, 1, 1);
  
- #Test 1: By default with no existing session we should get a session ticket
- #Expected result: ClientHello extension seen; ServerHello extension seen
-@@ -118,7 +75,7 @@ checkmessages(3, "No client support session ticket test", 0, 0, 0, 1);
+ #Test 2: If the server does not accept tickets we should get a normal handshake
+@@ -118,7 +74,7 @@ checkmessages(3, "No client support session ticket test", 0, 0, 0, 1);
  #Expected result: ClientHello extension seen; ServerHello extension not seen
  #                 NewSessionTicket message not seen; Abbreviated handshake
  clearall();
@@ -150540,7 +167646,7 @@
  $proxy->serverconnects(2);
  $proxy->clientflags("-sess_out ".$session);
  $proxy->start();
-@@ -126,12 +83,13 @@ $proxy->clearClient();
+@@ -126,12 +82,13 @@ $proxy->clearClient();
  $proxy->clientflags("-sess_in ".$session);
  $proxy->clientstart();
  checkmessages(4, "Session resumption session ticket test", 1, 0, 0, 0);
@@ -150555,7 +167661,7 @@
  $proxy->serverconnects(2);
  $proxy->clientflags("-sess_out ".$session." -no_ticket");
  $proxy->start();
-@@ -140,6 +98,7 @@ $proxy->clientflags("-sess_in ".$session);
+@@ -140,6 +97,7 @@ $proxy->clientflags("-sess_in ".$session);
  $proxy->clientstart();
  checkmessages(5, "Session resumption with ticket capable client without a "
                   ."ticket", 1, 1, 1, 0);
@@ -150563,7 +167669,7 @@
  
  #Test 6: Client accepts empty ticket.
  #Expected result: ClientHello extension seen; ServerHello extension seen;
-@@ -151,7 +110,7 @@ checkmessages(6, "Empty ticket test",  1, 1, 1, 1);
+@@ -151,7 +109,7 @@ checkmessages(6, "Empty ticket test",  1, 1, 1, 1);
  
  #Test 7-8: Client keeps existing ticket on empty ticket.
  clearall();
@@ -150572,7 +167678,7 @@
  $proxy->serverconnects(3);
  $proxy->filter(undef);
  $proxy->clientflags("-sess_out ".$session);
-@@ -170,7 +129,25 @@ $proxy->clientstart();
+@@ -170,7 +128,25 @@ $proxy->clientstart();
  #Expected result: ClientHello extension seen; ServerHello extension not seen;
  #                 NewSessionTicket message not seen; Abbreviated handshake.
  checkmessages(8, "Empty ticket resumption test",  1, 0, 0, 0);
@@ -150598,7 +167704,7 @@
  
  sub ticket_filter
  {
-@@ -214,6 +191,26 @@ sub inject_empty_ticket_filter {
+@@ -214,6 +190,26 @@ sub inject_empty_ticket_filter {
      $proxy->message_list([@new_message_list]);
  }
  
@@ -150626,7 +167732,7 @@
  {
      my ($testno, $testname, $testch, $testsh, $testtickseen, $testhand) = @_;
 diff --git a/test/recipes/70-test_sslskewith0p.t b/test/recipes/70-test_sslskewith0p.t
-index ac88ed524e1a..ca8dfe768190 100755
+index ac88ed5..bfdee8b 100755
 --- a/test/recipes/70-test_sslskewith0p.t
 +++ b/test/recipes/70-test_sslskewith0p.t
 @@ -1,56 +1,10 @@
@@ -150702,8 +167808,24 @@
  $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
  my $proxy = TLSProxy::Proxy->new(
      \&ske_0_p_filter,
+@@ -80,13 +37,12 @@ my $proxy = TLSProxy::Proxy->new(
+     (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE})
+ );
+ 
+-plan tests => 1;
+-
+ #We must use an anon DHE cipher for this test
+ $proxy->cipherc('ADH-AES128-SHA:@SECLEVEL=0');
+ $proxy->ciphers('ADH-AES128-SHA:@SECLEVEL=0');
+ 
+-$proxy->start();
++$proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
++plan tests => 1;
+ ok(TLSProxy::Message->fail, "ServerKeyExchange with 0 p");
+ 
+ sub ske_0_p_filter
 diff --git a/test/recipes/70-test_sslvertol.t b/test/recipes/70-test_sslvertol.t
-index c1ec38fc3584..af82a8c1210a 100755
+index c1ec38f..f8c94e9 100755
 --- a/test/recipes/70-test_sslvertol.t
 +++ b/test/recipes/70-test_sslvertol.t
 @@ -1,56 +1,10 @@
@@ -150779,8 +167901,22 @@
  $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
  my $proxy = TLSProxy::Proxy->new(
      \&vers_tolerance_filter,
+@@ -77,11 +34,10 @@ my $proxy = TLSProxy::Proxy->new(
+     (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE})
+ );
+ 
+-plan tests => 2;
+-
+ #Test 1: Asking for TLS1.3 should pass
+ my $client_version = TLSProxy::Record::VERS_TLS_1_3;
+-$proxy->start();
++$proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
++plan tests => 2;
+ ok(TLSProxy::Message->success(), "Version tolerance test, TLS 1.3");
+ 
+ #Test 2: Testing something below SSLv3 should fail
 diff --git a/test/recipes/70-test_tlsextms.t b/test/recipes/70-test_tlsextms.t
-index 24abfcf321d3..25cc62738131 100644
+index 24abfcf..1248594 100644
 --- a/test/recipes/70-test_tlsextms.t
 +++ b/test/recipes/70-test_tlsextms.t
 @@ -1,56 +1,10 @@
@@ -150856,8 +167992,26 @@
  $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
  
  sub checkmessages($$$$$);
-@@ -134,7 +91,7 @@ checkmessages(2, "No ticket, no client extension extended master secret test", 0
+@@ -89,15 +46,14 @@ my $proxy = TLSProxy::Proxy->new(
+     (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE})
+ );
  
+-plan tests => 9;
+-
+ #Test 1: By default server and client should send extended master secret
+ # extension.
+ #Expected result: ClientHello extension seen; ServerHello extension seen
+ #                 Full handshake
+ 
+ setrmextms(0, 0);
+-$proxy->start();
++$proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
++plan tests => 9;
+ checkmessages(1, "Default extended master secret test", 1, 1, 1);
+ 
+ #Test 2: If client omits extended master secret extension, server should too.
+@@ -134,7 +90,7 @@ checkmessages(2, "No ticket, no client extension extended master secret test", 0
+ 
  clearall();
  setrmextms(0, 0);
 -(my $fh, my $session) = tempfile();
@@ -150865,7 +168019,7 @@
  $proxy->serverconnects(2);
  $proxy->clientflags("-sess_out ".$session);
  $proxy->start();
-@@ -142,6 +99,7 @@ $proxy->clearClient();
+@@ -142,6 +98,7 @@ $proxy->clearClient();
  $proxy->clientflags("-sess_in ".$session);
  $proxy->clientstart();
  checkmessages(5, "Session resumption extended master secret test", 1, 1, 0);
@@ -150873,7 +168027,7 @@
  
  #Test 6: Session resumption extended master secret test original session
  # omits extension. Server must not resume session.
-@@ -150,7 +108,7 @@ checkmessages(5, "Session resumption extended master secret test", 1, 1, 0);
+@@ -150,7 +107,7 @@ checkmessages(5, "Session resumption extended master secret test", 1, 1, 0);
  
  clearall();
  setrmextms(1, 0);
@@ -150882,7 +168036,7 @@
  $proxy->serverconnects(2);
  $proxy->clientflags("-sess_out ".$session);
  $proxy->start();
-@@ -159,6 +117,7 @@ $proxy->clientflags("-sess_in ".$session);
+@@ -159,6 +116,7 @@ $proxy->clientflags("-sess_in ".$session);
  setrmextms(0, 0);
  $proxy->clientstart();
  checkmessages(6, "Session resumption extended master secret test", 1, 1, 1);
@@ -150890,7 +168044,7 @@
  
  #Test 7: Session resumption extended master secret test resumed session
  # omits client extension. Server must abort connection.
-@@ -166,7 +125,7 @@ checkmessages(6, "Session resumption extended master secret test", 1, 1, 1);
+@@ -166,7 +124,7 @@ checkmessages(6, "Session resumption extended master secret test", 1, 1, 1);
  
  clearall();
  setrmextms(0, 0);
@@ -150899,7 +168053,7 @@
  $proxy->serverconnects(2);
  $proxy->clientflags("-sess_out ".$session);
  $proxy->start();
-@@ -175,6 +134,7 @@ $proxy->clientflags("-sess_in ".$session);
+@@ -175,6 +133,7 @@ $proxy->clientflags("-sess_in ".$session);
  setrmextms(1, 0);
  $proxy->clientstart();
  ok(TLSProxy::Message->fail(), "Client inconsistent session resumption");
@@ -150907,7 +168061,7 @@
  
  #Test 8: Session resumption extended master secret test resumed session
  # omits server extension. Client must abort connection.
-@@ -182,7 +142,7 @@ ok(TLSProxy::Message->fail(), "Client inconsistent session resumption");
+@@ -182,7 +141,7 @@ ok(TLSProxy::Message->fail(), "Client inconsistent session resumption");
  
  clearall();
  setrmextms(0, 0);
@@ -150916,7 +168070,7 @@
  $proxy->serverconnects(2);
  $proxy->clientflags("-sess_out ".$session);
  $proxy->start();
-@@ -191,6 +151,7 @@ $proxy->clientflags("-sess_in ".$session);
+@@ -191,6 +150,7 @@ $proxy->clientflags("-sess_in ".$session);
  setrmextms(0, 1);
  $proxy->clientstart();
  ok(TLSProxy::Message->fail(), "Server inconsistent session resumption 1");
@@ -150924,7 +168078,7 @@
  
  #Test 9: Session resumption extended master secret test initial session
  # omits server extension. Client must abort connection.
-@@ -198,7 +159,7 @@ ok(TLSProxy::Message->fail(), "Server inconsistent session resumption 1");
+@@ -198,7 +158,7 @@ ok(TLSProxy::Message->fail(), "Server inconsistent session resumption 1");
  
  clearall();
  setrmextms(0, 1);
@@ -150933,7 +168087,7 @@
  $proxy->serverconnects(2);
  $proxy->clientflags("-sess_out ".$session);
  $proxy->start();
-@@ -207,6 +168,7 @@ $proxy->clientflags("-sess_in ".$session);
+@@ -207,6 +167,7 @@ $proxy->clientflags("-sess_in ".$session);
  setrmextms(0, 0);
  $proxy->clientstart();
  ok(TLSProxy::Message->fail(), "Server inconsistent session resumption 2");
@@ -150942,7 +168096,7 @@
  sub extms_filter
  {
 diff --git a/test/recipes/70-test_verify_extra.t b/test/recipes/70-test_verify_extra.t
-index 8c213e8a2f67..79a33cd01679 100644
+index 8c213e8..79a33cd 100644
 --- a/test/recipes/70-test_verify_extra.t
 +++ b/test/recipes/70-test_verify_extra.t
 @@ -1,4 +1,11 @@
@@ -150959,7 +168113,7 @@
  use OpenSSL::Test qw/:DEFAULT srctop_file/;
  
 diff --git a/test/recipes/80-test_ca.t b/test/recipes/80-test_ca.t
-index 09d5ba6dc399..f4c01d5fa2cc 100644
+index 09d5ba6..f4c01d5 100644
 --- a/test/recipes/80-test_ca.t
 +++ b/test/recipes/80-test_ca.t
 @@ -1,4 +1,11 @@
@@ -151007,7 +168161,7 @@
  sub yes {
 diff --git a/test/recipes/80-test_cipherlist.t b/test/recipes/80-test_cipherlist.t
 new file mode 100644
-index 000000000000..98d537e5f368
+index 0000000..98d537e
 --- /dev/null
 +++ b/test/recipes/80-test_cipherlist.t
 @@ -0,0 +1,26 @@
@@ -151038,7 +168192,7 @@
 +
 +simple_test("test_cipherlist", "cipherlist_test", "cipherlist");
 diff --git a/test/recipes/80-test_cms.t b/test/recipes/80-test_cms.t
-index 645f37a7dee5..40fcf7cc5346 100644
+index 645f37a..40fcf7c 100644
 --- a/test/recipes/80-test_cms.t
 +++ b/test/recipes/80-test_cms.t
 @@ -1,4 +1,11 @@
@@ -151055,7 +168209,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/80-test_ct.t b/test/recipes/80-test_ct.t
-index 9685b95616ac..9c717b2efcc2 100644
+index 9685b95..9c717b2 100644
 --- a/test/recipes/80-test_ct.t
 +++ b/test/recipes/80-test_ct.t
 @@ -1,4 +1,11 @@
@@ -151072,7 +168226,7 @@
  use OpenSSL::Test qw/:DEFAULT srctop_file srctop_dir/;
  use OpenSSL::Test::Simple;
 diff --git a/test/recipes/80-test_dane.t b/test/recipes/80-test_dane.t
-index 6436735a9b75..527e66345908 100644
+index 6436735..527e663 100644
 --- a/test/recipes/80-test_dane.t
 +++ b/test/recipes/80-test_dane.t
 @@ -1,4 +1,11 @@
@@ -151089,7 +168243,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/80-test_dtlsv1listen.t b/test/recipes/80-test_dtlsv1listen.t
-index e7371cabb875..dd1bb35b6364 100644
+index e7371ca..dd1bb35 100644
 --- a/test/recipes/80-test_dtlsv1listen.t
 +++ b/test/recipes/80-test_dtlsv1listen.t
 @@ -1,4 +1,11 @@
@@ -151106,7 +168260,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/80-test_ocsp.t b/test/recipes/80-test_ocsp.t
-index ae4bf857f330..103a7aea0eaf 100644
+index ae4bf85..103a7ae 100644
 --- a/test/recipes/80-test_ocsp.t
 +++ b/test/recipes/80-test_ocsp.t
 @@ -1,4 +1,11 @@
@@ -151123,7 +168277,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/80-test_ssl_new.t b/test/recipes/80-test_ssl_new.t
-index abb6528465a5..b7ab408d1498 100644
+index abb6528..a024753 100644
 --- a/test/recipes/80-test_ssl_new.t
 +++ b/test/recipes/80-test_ssl_new.t
 @@ -1,10 +1,18 @@
@@ -151146,7 +168300,7 @@
  
  use OpenSSL::Test qw/:DEFAULT srctop_dir srctop_file/;
  use OpenSSL::Test::Utils qw/disabled alldisabled available_protocols/;
-@@ -13,8 +21,10 @@ setup("test_ssl_new");
+@@ -13,31 +21,48 @@ setup("test_ssl_new");
  
  $ENV{TEST_CERTS_DIR} = srctop_dir("test", "certs");
  
@@ -151156,20 +168310,67 @@
 +map { s/;.*// } @conf_srcs if $^O eq "VMS";
 +my @conf_files = map { basename($_) } @conf_srcs;
 +map { s/\.in// } @conf_files;
++
++# 02-protocol-version.conf test and 05-dtls-protocol-version.conf results
++# depend on the configuration of enabled protocols. We only verify generated
++# sources in the default configuration.
++my $is_default_tls = (disabled("ssl3") && !disabled("tls1") &&
++                      !disabled("tls1_1") && !disabled("tls1_2"));
++
++my $is_default_dtls = (!disabled("dtls1") && !disabled("dtls1_2"));
++
++my $no_tls = alldisabled(available_protocols("tls"));
++my $no_dtls = alldisabled(available_protocols("dtls"));
  
- # 02-protocol-version.conf test results depend on the configuration of enabled
- # protocols. We only verify generated sources in the default configuration.
-@@ -32,7 +42,7 @@ foreach my $conf (@conf_files) {
+-# 02-protocol-version.conf test results depend on the configuration of enabled
+-# protocols. We only verify generated sources in the default configuration.
+-my $is_default = (disabled("ssl3") && !disabled("tls1") &&
+-                  !disabled("tls1_1") && !disabled("tls1_2"));
++my %conf_dependent_tests = (
++  "02-protocol-version.conf" => !$is_default_tls,
++  "05-dtls-protocol-version.conf" => !$is_default_dtls,
++);
  
+-my %conf_dependent_tests = ("02-protocol-version.conf" => 1);
++# Default is $no_tls but some tests have different skip conditions.
++my %skip = (
++  "05-dtls-protocol-version.conf" => $no_dtls,
++);
+ 
+ foreach my $conf (@conf_files) {
+     subtest "Test configuration $conf" => sub {
+         test_conf($conf,
+-                  $conf_dependent_tests{$conf} || $^O eq "VMS" ?  0 : 1);
++                  $conf_dependent_tests{$conf} || $^O eq "VMS" ?  0 : 1,
++                  $skip{$conf} || $no_tls);
+     }
+ }
+ 
  # We hard-code the number of tests to double-check that the globbing above
  # finds all files as expected.
 -plan tests => 2;  # = scalar @conf_files
-+plan tests => 6;  # = scalar @conf_srcs
++plan tests => 7;  # = scalar @conf_srcs
  
  sub test_conf {
      plan tests => 3;
+ 
+-    my ($conf, $check_source) = @_;
++    my ($conf, $check_source, $skip) = @_;
+ 
+     my $conf_file = srctop_file("test", "ssl-tests", $conf);
+     my $tmp_file = "${conf}.$$.tmp";
+@@ -63,8 +88,7 @@ sub test_conf {
+       }
+ 
+       # Test 3. Run the test.
+-      my $no_tls = alldisabled(available_protocols("tls"));
+-      skip "No TLS tests available; skipping tests", 1 if $no_tls;
++      skip "No tests available; skipping tests", 1 if $skip;
+       skip "Stale sources; skipping tests", 1 if !$run_test;
+ 
+       ok(run(test(["ssl_test", $tmp_file])), "running ssl_test $conf");
 diff --git a/test/recipes/80-test_ssl_old.t b/test/recipes/80-test_ssl_old.t
-index 879ab7fc0f1e..4b932fd0c666 100644
+index 879ab7f..716f23b 100644
 --- a/test/recipes/80-test_ssl_old.t
 +++ b/test/recipes/80-test_ssl_old.t
 @@ -1,10 +1,17 @@
@@ -151205,9 +168406,10 @@
  plan tests =>
      1				# For testss
 -    + 1				# For ssltest_old -test_cipherlist
-     + 14			# For the first testssl
+-    + 14			# For the first testssl
 -    + 16			# For the first testsslproxy
 -    + 16			# For the second testsslproxy
++    + 13			# For the first testssl
      ;
  
  subtest 'test_ss' => sub {
@@ -151284,12 +168486,11 @@
      subtest 'standard SSL tests' => sub {
  	######################################################################
 -	plan tests => 29;
-+        plan tests => 21;
- 
-       SKIP: {
- 	  skip "SSLv3 is not supported by this OpenSSL build", 4
- 	      if disabled("ssl3");
- 
+-
+-      SKIP: {
+-	  skip "SSLv3 is not supported by this OpenSSL build", 4
+-	      if disabled("ssl3");
+-
 -	  ok(run(test([@ssltest, "-ssl3", @extra])),
 -	     'test sslv3');
 -	  ok(run(test([@ssltest, "-ssl3", "-server_auth", @CA, @extra])),
@@ -151313,11 +168514,12 @@
 -	  ok(run(test([@ssltest, "-server_auth", "-client_auth", @CA, @extra])),
 -	     'test sslv2/sslv3 with both server and client authentication');
 -	}
--
--      SKIP: {
--	  skip "SSLv3 is not supported by this OpenSSL build", 4
--	      if disabled("ssl3");
--
++      plan tests => 21;
+ 
+       SKIP: {
+ 	  skip "SSLv3 is not supported by this OpenSSL build", 4
+ 	      if disabled("ssl3");
+ 
 -	  ok(run(test([@ssltest, "-bio_pair", "-ssl3", @extra])),
 +	  ok(run(test([@ssltest, "-bio_pair", "-ssl3"])),
  	     'test sslv3 via BIO pair');
@@ -151465,7 +168667,61 @@
  
  	  ok(run(test([@ssltest, "-cipher", "AES128-SHA",    "-bytes", "8m"])));
  
-@@ -790,7 +756,7 @@ sub testssl {
+@@ -717,53 +683,6 @@ sub testssl {
+ 	}
+     };
+ 
+-    subtest 'DTLS Version min/max tests' => sub {
+-        my @protos;
+-        push(@protos, "dtls1") unless ($no_dtls1 || $no_dtls);
+-        push(@protos, "dtls1.2") unless ($no_dtls1_2 || $no_dtls);
+-        my @minprotos = (undef, @protos);
+-        my @maxprotos = (@protos, undef);
+-        my @shdprotos = (@protos, $protos[$#protos]);
+-        my $n = ((@protos+2) * (@protos+3))/2 - 2;
+-        my $ntests = $n * $n;
+-	plan tests => $ntests;
+-      SKIP: {
+-        skip "DTLS disabled", 1 if $ntests == 1;
+-
+-        my $should;
+-        for (my $smin = 0; $smin < @minprotos; ++$smin) {
+-        for (my $smax = $smin ? $smin - 1 : 0; $smax < @maxprotos; ++$smax) {
+-        for (my $cmin = 0; $cmin < @minprotos; ++$cmin) {
+-        for (my $cmax = $cmin ? $cmin - 1 : 0; $cmax < @maxprotos; ++$cmax) {
+-            if ($cmax < $smin-1) {
+-                $should = "fail-server";
+-            } elsif ($smax < $cmin-1) {
+-                $should = "fail-client";
+-            } elsif ($cmax > $smax) {
+-                $should = $shdprotos[$smax];
+-            } else {
+-                $should = $shdprotos[$cmax];
+-            }
+-
+-            my @args = (@ssltest, "-dtls");
+-            push(@args, "-should_negotiate", $should);
+-            push(@args, "-server_min_proto", $minprotos[$smin])
+-                if (defined($minprotos[$smin]));
+-            push(@args, "-server_max_proto", $maxprotos[$smax])
+-                if (defined($maxprotos[$smax]));
+-            push(@args, "-client_min_proto", $minprotos[$cmin])
+-                if (defined($minprotos[$cmin]));
+-            push(@args, "-client_max_proto", $maxprotos[$cmax])
+-                if (defined($maxprotos[$cmax]));
+-            my $ok = run(test[@args]);
+-            if (! $ok) {
+-                print STDERR "\nsmin=$smin, smax=$smax, cmin=$cmin, cmax=$cmax\n";
+-                print STDERR "\nFailed: @args\n";
+-            }
+-            ok($ok);
+-        }}}}}
+-    };
+-
+     subtest 'TLS session reuse' => sub {
+         plan tests => 12;
+ 
+@@ -790,7 +709,7 @@ sub testssl {
      subtest 'DTLS session reuse' => sub {
          plan tests => 12;
        SKIP: {
@@ -151474,7 +168730,7 @@
  
          ok(run(test([@ssltest, "-dtls", "-server_sess_out", $server_sess, "-client_sess_out", $client_sess])));
          ok(run(test([@ssltest, "-dtls", "-server_sess_in", $server_sess, "-client_sess_in", $client_sess, "-should_reuse", "1", "-should_negotiate", "dtls1.2"])));
-@@ -833,76 +799,40 @@ sub testssl {
+@@ -833,76 +752,40 @@ sub testssl {
      };
  }
  
@@ -151484,30 +168740,15 @@
 -    my $CAtmp = shift;
 -    my @CA = $CAtmp ? ("-CAfile", $CAtmp) : ("-CApath", bldtop_dir("certs"));
 -    my @extra = @_;
-+unlink $CAkey;
-+unlink $CAcert;
-+unlink $CAserial;
-+unlink $CAreq;
-+unlink $CAreq2;
- 
+-
 -    my @ssltest = ("ssltest_old",
 -		   "-s_key", $key, "-s_cert", $cert,
 -		   "-c_key", $key, "-c_cert", $cert);
-+unlink $Ukey;
-+unlink $Ureq;
-+unlink $Ucert;
-+unlink basename($Ucert, '.ss').'.srl';
- 
+-
 -    # plan tests => 16;
-+unlink $Dkey;
-+unlink $Dreq;
-+unlink $Dcert;
- 
+-
 -    note('Testing a lot of proxy conditions.');
-+unlink $Ekey;
-+unlink $Ereq;
-+unlink $Ecert;
- 
+-
 -    # We happen to know that certP1.ss has policy letters "AB" and
 -    # certP2.ss has policy letters "BC".  However, because certP2.ss
 -    # has certP1.ss as issuer, when it's used, both their policy
@@ -151549,22 +168790,11 @@
 -                                      [ [ 'BC', 'B'      ], 1 ],
 -                                      [ [ 'BC', 'C'      ], 0 ],
 -                                      [ [ 'BC', 'A|B&!C' ], 1 ] ] );
-+unlink $P1key;
-+unlink $P1req;
-+unlink $P1cert;
-+unlink basename($P1cert, '.ss').'.srl';
-+unlink $P1intermediate;
-+unlink "intP1.ss";
- 
+-
 -  SKIP: {
 -      skip "Neither SSLv3 nor any TLS version are supported by this OpenSSL build", scalar(@{$expected{$cert}})
 -	  if $no_anytls;
-+unlink $P2key;
-+unlink $P2req;
-+unlink $P2cert;
-+unlink $P2intermediate;
-+unlink "intP2.ss";
- 
+-
 -      foreach (@{$expected{$cert}}) {
 -	  my $auth = $_->[0]->[0];
 -	  my $cond = $_->[0]->[1];
@@ -151577,13 +168807,45 @@
 -      }
 -    }
 -}
++unlink $CAkey;
++unlink $CAcert;
++unlink $CAserial;
++unlink $CAreq;
++unlink $CAreq2;
++
++unlink $Ukey;
++unlink $Ureq;
++unlink $Ucert;
++unlink basename($Ucert, '.ss').'.srl';
++
++unlink $Dkey;
++unlink $Dreq;
++unlink $Dcert;
++
++unlink $Ekey;
++unlink $Ereq;
++unlink $Ecert;
++
++unlink $P1key;
++unlink $P1req;
++unlink $P1cert;
++unlink basename($P1cert, '.ss').'.srl';
++unlink $P1intermediate;
++unlink "intP1.ss";
++
++unlink $P2key;
++unlink $P2req;
++unlink $P2cert;
++unlink $P2intermediate;
++unlink "intP2.ss";
++
 +unlink "ecp.ss";
 +unlink "err.ss";
 +
 +unlink $server_sess;
 +unlink $client_sess;
 diff --git a/test/recipes/80-test_ssl_test_ctx.t b/test/recipes/80-test_ssl_test_ctx.t
-index 210e4e857fa0..c5934910e5bf 100644
+index 210e4e8..c593491 100644
 --- a/test/recipes/80-test_ssl_test_ctx.t
 +++ b/test/recipes/80-test_ssl_test_ctx.t
 @@ -1,4 +1,11 @@
@@ -151600,7 +168862,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/80-test_tsa.t b/test/recipes/80-test_tsa.t
-index f2ceeeb9b76e..cf3378b3803d 100644
+index f2ceeeb..cf3378b 100644
 --- a/test/recipes/80-test_tsa.t
 +++ b/test/recipes/80-test_tsa.t
 @@ -1,4 +1,11 @@
@@ -151618,7 +168880,7 @@
  use warnings;
 diff --git a/test/recipes/80-test_x509aux.t b/test/recipes/80-test_x509aux.t
 new file mode 100644
-index 000000000000..65ba5fcf5292
+index 0000000..65ba5fc
 --- /dev/null
 +++ b/test/recipes/80-test_x509aux.t
 @@ -0,0 +1,27 @@
@@ -151650,7 +168912,7 @@
 +                srctop_file("test", "certs", "root-cert.pem")]
 +        )), "x509aux tests");
 diff --git a/test/recipes/90-test_async.t b/test/recipes/90-test_async.t
-index dfee578fe241..e0f187063e13 100644
+index dfee578..e0f1870 100644
 --- a/test/recipes/90-test_async.t
 +++ b/test/recipes/90-test_async.t
 @@ -1,4 +1,11 @@
@@ -151668,7 +168930,7 @@
  
 diff --git a/test/recipes/90-test_bioprint.t b/test/recipes/90-test_bioprint.t
 new file mode 100644
-index 000000000000..b86e828f57df
+index 0000000..b86e828
 --- /dev/null
 +++ b/test/recipes/90-test_bioprint.t
 @@ -0,0 +1,12 @@
@@ -151685,7 +168947,7 @@
 +
 +simple_test("test_bioprint", "bioprinttest");
 diff --git a/test/recipes/90-test_constant_time.t b/test/recipes/90-test_constant_time.t
-index cfdb578e64a4..6fa73bf146af 100644
+index cfdb578..6fa73bf 100644
 --- a/test/recipes/90-test_constant_time.t
 +++ b/test/recipes/90-test_constant_time.t
 @@ -1,4 +1,11 @@
@@ -151701,34 +168963,8 @@
  
  use OpenSSL::Test::Simple;
  
-diff --git a/test/recipes/90-test_getset.t b/test/recipes/90-test_getset.t
-new file mode 100644
-index 000000000000..3e245c12abe1
---- /dev/null
-+++ b/test/recipes/90-test_getset.t
-@@ -0,0 +1,20 @@
-+#! /usr/bin/env perl
-+# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
-+#
-+# Licensed under the OpenSSL license (the "License").  You may not use
-+# this file except in compliance with the License.  You can obtain a copy
-+# in the file LICENSE in the source distribution or at
-+# https://www.openssl.org/source/license.html
-+
-+
-+use OpenSSL::Test;
-+use OpenSSL::Test::Utils;
-+
-+setup("test_getset");
-+
-+plan skip_all => "No TLS/SSL protocols are supported by this OpenSSL build"
-+    if alldisabled(grep { $_ ne "ssl3" } available_protocols("tls"));
-+
-+plan tests => 1;
-+
-+ok(run(test(["getsettest"])), "running getsettest");
 diff --git a/test/recipes/90-test_gmdiff.t b/test/recipes/90-test_gmdiff.t
-index 115445e17a3d..f2cce41a6506 100644
+index 115445e..f2cce41 100644
 --- a/test/recipes/90-test_gmdiff.t
 +++ b/test/recipes/90-test_gmdiff.t
 @@ -1,4 +1,11 @@
@@ -151745,7 +168981,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/90-test_heartbeat.t b/test/recipes/90-test_heartbeat.t
-index a139c9a882a9..90d6a67b7dd5 100644
+index a139c9a..90d6a67 100644
 --- a/test/recipes/90-test_heartbeat.t
 +++ b/test/recipes/90-test_heartbeat.t
 @@ -1,4 +1,11 @@
@@ -151762,7 +168998,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/90-test_ige.t b/test/recipes/90-test_ige.t
-index f00835008580..2ab4bd255488 100644
+index f008350..2ab4bd2 100644
 --- a/test/recipes/90-test_ige.t
 +++ b/test/recipes/90-test_ige.t
 @@ -1,4 +1,11 @@
@@ -151779,7 +169015,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/90-test_memleak.t b/test/recipes/90-test_memleak.t
-index bc72f2e6dcf6..52357c749f4a 100644
+index bc72f2e..52357c7 100644
 --- a/test/recipes/90-test_memleak.t
 +++ b/test/recipes/90-test_memleak.t
 @@ -1,4 +1,11 @@
@@ -151796,17 +169032,16 @@
  use OpenSSL::Test;
  
 diff --git a/test/recipes/90-test_networking.t b/test/recipes/90-test_networking.t
-index 85de81a6b5b5..4f984cb908bc 100644
+deleted file mode 100644
+index 85de81a..0000000
 --- a/test/recipes/90-test_networking.t
-+++ b/test/recipes/90-test_networking.t
-@@ -1,56 +1,10 @@
++++ /dev/null
+@@ -1,113 +0,0 @@
 -#!/usr/bin/perl
 -# Written by Richard Levitte for the OpenSSL project.
 -# ====================================================================
 -# Copyright (c) 2015-2016 The OpenSSL Project.  All rights reserved.
-+#! /usr/bin/env perl
-+# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
- #
+-#
 -# Redistribution and use in source and binary forms, with or without
 -# modification, are permitted provided that the following conditions
 -# are met:
@@ -151855,15 +169090,68 @@
 -# This product includes cryptographic software written by Eric Young
 -# (eay at cryptsoft.com).  This product includes software written by Tim
 -# Hudson (tjh at cryptsoft.com).
-+# Licensed under the OpenSSL license (the "License").  You may not use
-+# this file except in compliance with the License.  You can obtain a copy
-+# in the file LICENSE in the source distribution or at
-+# https://www.openssl.org/source/license.html
- 
- use strict;
- use OpenSSL::Test qw/:DEFAULT cmdstr srctop_file bldtop_file bldtop_dir/;
+-
+-use strict;
+-use OpenSSL::Test qw/:DEFAULT cmdstr srctop_file bldtop_file bldtop_dir/;
+-use OpenSSL::Test::Utils;
+-use TLSProxy::Proxy;
+-
+-my $test_name = "test_networking";
+-setup($test_name);
+-
+-plan skip_all => "TLSProxy isn't usable on $^O"
+-    if $^O =~ /^(VMS|MSWin32)$/;
+-
+-plan skip_all => "$test_name needs the dynamic engine feature enabled"
+-    if disabled("engine") || disabled("dynamic-engine");
+-
+-plan skip_all => "$test_name needs the sock feature enabled"
+-    if disabled("sock");
+-
+-$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
+-
+-my $proxy = TLSProxy::Proxy->new(
+-    undef,
+-    cmdstr(app(["openssl"]), display => 1),
+-    srctop_file("apps", "server.pem"),
+-    (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE})
+-);
+-
+-plan tests => 2;
+-
+-#Test 1: Try IPv4
+-$proxy->clear();
+-$proxy->serverflags("-4");
+-$proxy->clientflags("-4");
+-$proxy->server_addr("127.0.0.1");
+-$proxy->proxy_addr("127.0.0.1");
+-ok(check_connection(), "Trying IPv4");
+-
+- SKIP: {
+-     skip "No IPv6 support", 1 unless $proxy->supports_IPv6();
+-
+-     #Test 2: Try IPv6
+-     $proxy->clear();
+-     $proxy->serverflags("-6");
+-     $proxy->clientflags("-6");
+-     $proxy->server_addr("[::1]");
+-     $proxy->proxy_addr("[::1]");
+-     ok(check_connection(), "Trying IPv6");
+-}
+-
+-sub check_connection
+-{
+-    eval { $proxy->start(); };
+-
+-    if ($@ ne "") {
+-	print STDERR "Proxy connection failed: $@\n";
+-	return 0;
+-    }
+-
+-    1;
+-}
 diff --git a/test/recipes/90-test_np.t b/test/recipes/90-test_np.t
-index a0d8b4b14d49..08bb84b081b5 100644
+index a0d8b4b..08bb84b 100644
 --- a/test/recipes/90-test_np.t
 +++ b/test/recipes/90-test_np.t
 @@ -1,4 +1,11 @@
@@ -151880,7 +169168,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/90-test_p5_crpt2.t b/test/recipes/90-test_p5_crpt2.t
-index 838e0d7e4dad..710dc8ba5266 100644
+index 838e0d7..710dc8b 100644
 --- a/test/recipes/90-test_p5_crpt2.t
 +++ b/test/recipes/90-test_p5_crpt2.t
 @@ -1,4 +1,11 @@
@@ -151897,7 +169185,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/90-test_secmem.t b/test/recipes/90-test_secmem.t
-index 59f3bddbcc3d..d197c48a709e 100644
+index 59f3bdd..d197c48 100644
 --- a/test/recipes/90-test_secmem.t
 +++ b/test/recipes/90-test_secmem.t
 @@ -1,4 +1,11 @@
@@ -151914,7 +169202,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/90-test_srp.t b/test/recipes/90-test_srp.t
-index 9110319a8c54..7026c358a50a 100644
+index 9110319..7026c35 100644
 --- a/test/recipes/90-test_srp.t
 +++ b/test/recipes/90-test_srp.t
 @@ -1,4 +1,11 @@
@@ -151930,8 +169218,36 @@
  
  use OpenSSL::Test::Simple;
  
+diff --git a/test/recipes/90-test_sslapi.t b/test/recipes/90-test_sslapi.t
+new file mode 100644
+index 0000000..ec525a1
+--- /dev/null
++++ b/test/recipes/90-test_sslapi.t
+@@ -0,0 +1,22 @@
++#! /usr/bin/env perl
++# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++#
++# Licensed under the OpenSSL license (the "License").  You may not use
++# this file except in compliance with the License.  You can obtain a copy
++# in the file LICENSE in the source distribution or at
++# https://www.openssl.org/source/license.html
++
++
++use OpenSSL::Test;
++use OpenSSL::Test::Utils;
++use OpenSSL::Test qw/:DEFAULT srctop_file/;
++
++setup("test_sslapi");
++
++plan skip_all => "No TLS/SSL protocols are supported by this OpenSSL build"
++    if alldisabled(grep { $_ ne "ssl3" } available_protocols("tls"));
++
++plan tests => 1;
++
++ok(run(test(["sslapitest", srctop_file("apps", "server.pem"),
++             srctop_file("apps", "server.pem")])), "running sslapitest");
 diff --git a/test/recipes/90-test_threads.t b/test/recipes/90-test_threads.t
-index a08d8b020c04..56d533864901 100755
+index a08d8b0..56d5338 100755
 --- a/test/recipes/90-test_threads.t
 +++ b/test/recipes/90-test_threads.t
 @@ -1,4 +1,11 @@
@@ -151948,7 +169264,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/90-test_v3name.t b/test/recipes/90-test_v3name.t
-index 2a8a47245919..2e144e5a2da7 100644
+index 2a8a472..2e144e5 100644
 --- a/test/recipes/90-test_v3name.t
 +++ b/test/recipes/90-test_v3name.t
 @@ -1,4 +1,11 @@
@@ -151965,7 +169281,7 @@
  use OpenSSL::Test::Simple;
  
 diff --git a/test/recipes/bc.pl b/test/recipes/bc.pl
-index f7d4dc681d7d..dbb5842bda7e 100644
+index f7d4dc6..dbb5842 100644
 --- a/test/recipes/bc.pl
 +++ b/test/recipes/bc.pl
 @@ -1,4 +1,11 @@
@@ -151982,7 +169298,7 @@
  use strict;
  use warnings;
 diff --git a/test/recipes/tconversion.pl b/test/recipes/tconversion.pl
-index eeb25d0e7213..e5fa9dec879e 100644
+index eeb25d0..e5fa9de 100644
 --- a/test/recipes/tconversion.pl
 +++ b/test/recipes/tconversion.pl
 @@ -1,4 +1,11 @@
@@ -151999,7 +169315,7 @@
  use strict;
  use warnings;
 diff --git a/test/rmdtest.c b/test/rmdtest.c
-index 867a20eaae60..7f1e72e78dca 100644
+index 867a20e..7f1e72e 100644
 --- a/test/rmdtest.c
 +++ b/test/rmdtest.c
 @@ -1,58 +1,10 @@
@@ -152133,7 +169449,7 @@
      EXIT(err);
  }
 diff --git a/test/rsa_test.c b/test/rsa_test.c
-index 2bc21b045a85..7d06394c6c6d 100644
+index 2bc21b0..7d06394 100644
 --- a/test/rsa_test.c
 +++ b/test/rsa_test.c
 @@ -1,3 +1,12 @@
@@ -152171,7 +169487,7 @@
          num = RSA_public_encrypt(plen, ptext_ex, ctext, key,
                                   RSA_PKCS1_PADDING);
 diff --git a/test/run_tests.pl b/test/run_tests.pl
-index f7bd6238561c..6550e0b27230 100644
+index f7bd623..6550e0b 100644
 --- a/test/run_tests.pl
 +++ b/test/run_tests.pl
 @@ -1,10 +1,22 @@
@@ -152208,7 +169524,7 @@
  	basename($_) =~ /^[0-9][0-9]-[^\.]*\.t$/
      } glob(catfile($recipesdir,"*.t"));
 diff --git a/test/secmemtest.c b/test/secmemtest.c
-index 7a772917f9eb..c31f391c59ee 100644
+index 7a77291..c31f391 100644
 --- a/test/secmemtest.c
 +++ b/test/secmemtest.c
 @@ -1,32 +1,101 @@
@@ -152320,7 +169636,7 @@
      }
  #endif
 diff --git a/test/sha1test.c b/test/sha1test.c
-index ada37d11d645..9ff959ec9c0a 100644
+index ada37d1..9ff959e 100644
 --- a/test/sha1test.c
 +++ b/test/sha1test.c
 @@ -1,58 +1,10 @@
@@ -152448,7 +169764,7 @@
  
      memset(buf, 'a', 1000);
 diff --git a/test/sha256t.c b/test/sha256t.c
-index d88c805bdb52..315d10fae9c4 100644
+index d88c805..315d10f 100644
 --- a/test/sha256t.c
 +++ b/test/sha256t.c
 @@ -1,7 +1,12 @@
@@ -152468,7 +169784,7 @@
  #include <string.h>
  #include <stdlib.h>
 diff --git a/test/sha512t.c b/test/sha512t.c
-index 714fed62cb3f..e741b27fdbc0 100644
+index 714fed6..b11fcaa 100644
 --- a/test/sha512t.c
 +++ b/test/sha512t.c
 @@ -1,7 +1,12 @@
@@ -152487,8 +169803,28 @@
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>
+@@ -76,19 +81,6 @@ int main(int argc, char **argv)
+     int i;
+     EVP_MD_CTX *evp;
+ 
+-# ifdef OPENSSL_IA32_SSE2
+-    /*
+-     * Alternative to this is to call OpenSSL_add_all_algorithms... The below
+-     * code is retained exclusively for debugging purposes.
+-     */
+-    {
+-        char *env;
+-
+-        if ((env = getenv("OPENSSL_ia32cap")))
+-            OPENSSL_ia32cap = strtoul(env, NULL, 0);
+-    }
+-# endif
+-
+     fprintf(stdout, "Testing SHA-512 ");
+ 
+     EVP_Digest("abc", 3, md, NULL, EVP_sha512(), NULL);
 diff --git a/test/smime-certs/mksmime-certs.sh b/test/smime-certs/mksmime-certs.sh
-index f01f66427c37..89963ecf2cd8 100644
+index f01f664..89963ec 100644
 --- a/test/smime-certs/mksmime-certs.sh
 +++ b/test/smime-certs/mksmime-certs.sh
 @@ -1,4 +1,11 @@
@@ -152504,7 +169840,7 @@
  # Utility to recreate S/MIME certificates
  
 diff --git a/test/srptest.c b/test/srptest.c
-index 8379535029f5..8d0aaa3bcd05 100644
+index 8379535..8d0aaa3 100644
 --- a/test/srptest.c
 +++ b/test/srptest.c
 @@ -1,3 +1,12 @@
@@ -152521,53 +169857,38 @@
  #ifdef OPENSSL_NO_SRP
  
 diff --git a/test/ssl-tests/01-simple.conf b/test/ssl-tests/01-simple.conf
-index 8c8067dae284..29ac3e4ece6f 100644
+index 8c8067d..ab34e01 100644
 --- a/test/ssl-tests/01-simple.conf
 +++ b/test/ssl-tests/01-simple.conf
-@@ -11,6 +11,7 @@ ssl_conf = 0-default-ssl
- 
- [0-default-ssl]
- server = 0-default-server
-+server2 = 0-default-server2
- client = 0-default-client
- 
- [0-default-server]
-@@ -19,6 +20,12 @@ CipherString = DEFAULT
+@@ -18,13 +18,11 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[0-default-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [0-default-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -36,6 +43,7 @@ ssl_conf = 1-verify-cert-ssl
+ VerifyMode = Peer
  
- [1-verify-cert-ssl]
- server = 1-verify-cert-server
-+server2 = 1-verify-cert-server2
- client = 1-verify-cert-client
+-
+ [test-0]
+ ExpectedResult = Success
  
- [1-verify-cert-server]
-@@ -44,6 +52,12 @@ CipherString = DEFAULT
+@@ -43,12 +41,10 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[1-verify-cert-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [1-verify-cert-client]
  CipherString = DEFAULT
  VerifyMode = Peer
+ 
+-
+ [test-1]
+ ClientAlert = UnknownCA
+ ExpectedResult = ClientFail
 diff --git a/test/ssl-tests/01-simple.conf.in b/test/ssl-tests/01-simple.conf.in
-index a152f662f678..e3a6330bdeff 100644
+index a152f66..e3a6330 100644
 --- a/test/ssl-tests/01-simple.conf.in
 +++ b/test/ssl-tests/01-simple.conf.in
 @@ -1,4 +1,11 @@
@@ -152583,8140 +169904,5732 @@
  ## SSL test configurations
  
 diff --git a/test/ssl-tests/02-protocol-version.conf b/test/ssl-tests/02-protocol-version.conf
-index dc46bfad3f29..3c103dfc5d37 100644
+index dc46bfa..1b9a41b 100644
 --- a/test/ssl-tests/02-protocol-version.conf
 +++ b/test/ssl-tests/02-protocol-version.conf
-@@ -370,6 +370,7 @@ ssl_conf = 0-version-negotiation-ssl
- 
- [0-version-negotiation-ssl]
- server = 0-version-negotiation-server
-+server2 = 0-version-negotiation-server2
- client = 0-version-negotiation-client
- 
- [0-version-negotiation-server]
-@@ -379,6 +380,13 @@ MaxProtocol = SSLv3
+@@ -378,14 +378,12 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[0-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [0-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -397,6 +405,7 @@ ssl_conf = 1-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [1-version-negotiation-ssl]
- server = 1-version-negotiation-server
-+server2 = 1-version-negotiation-server2
- client = 1-version-negotiation-client
+-
+ [test-0]
+ ExpectedResult = InternalError
  
- [1-version-negotiation-server]
-@@ -406,6 +415,13 @@ MaxProtocol = TLSv1
+@@ -405,14 +403,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[1-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [1-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -424,6 +440,7 @@ ssl_conf = 2-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [2-version-negotiation-ssl]
- server = 2-version-negotiation-server
-+server2 = 2-version-negotiation-server2
- client = 2-version-negotiation-client
+-
+ [test-1]
+ ExpectedResult = InternalError
  
- [2-version-negotiation-server]
-@@ -433,6 +450,13 @@ MaxProtocol = TLSv1.1
+@@ -432,14 +428,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[2-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [2-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -451,6 +475,7 @@ ssl_conf = 3-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [3-version-negotiation-ssl]
- server = 3-version-negotiation-server
-+server2 = 3-version-negotiation-server2
- client = 3-version-negotiation-client
+-
+ [test-2]
+ ExpectedResult = InternalError
  
- [3-version-negotiation-server]
-@@ -460,6 +485,13 @@ MaxProtocol = TLSv1.2
+@@ -459,14 +453,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[3-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [3-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -478,6 +510,7 @@ ssl_conf = 4-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [4-version-negotiation-ssl]
- server = 4-version-negotiation-server
-+server2 = 4-version-negotiation-server2
- client = 4-version-negotiation-client
+-
+ [test-3]
+ ExpectedResult = InternalError
  
- [4-version-negotiation-server]
-@@ -486,6 +519,12 @@ CipherString = DEFAULT
+@@ -485,14 +477,12 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[4-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [4-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -504,6 +543,7 @@ ssl_conf = 5-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [5-version-negotiation-ssl]
- server = 5-version-negotiation-server
-+server2 = 5-version-negotiation-server2
- client = 5-version-negotiation-client
+-
+ [test-4]
+ ExpectedResult = InternalError
  
- [5-version-negotiation-server]
-@@ -514,6 +554,14 @@ MinProtocol = SSLv3
+@@ -513,14 +503,12 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[5-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [5-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -532,6 +580,7 @@ ssl_conf = 6-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [6-version-negotiation-ssl]
- server = 6-version-negotiation-server
-+server2 = 6-version-negotiation-server2
- client = 6-version-negotiation-client
+-
+ [test-5]
+ ExpectedResult = InternalError
  
- [6-version-negotiation-server]
-@@ -542,6 +591,14 @@ MinProtocol = SSLv3
+@@ -541,14 +529,12 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[6-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [6-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -560,6 +617,7 @@ ssl_conf = 7-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [7-version-negotiation-ssl]
- server = 7-version-negotiation-server
-+server2 = 7-version-negotiation-server2
- client = 7-version-negotiation-client
+-
+ [test-6]
+ ExpectedResult = InternalError
  
- [7-version-negotiation-server]
-@@ -570,6 +628,14 @@ MinProtocol = SSLv3
+@@ -569,14 +555,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[7-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [7-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -588,6 +654,7 @@ ssl_conf = 8-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [8-version-negotiation-ssl]
- server = 8-version-negotiation-server
-+server2 = 8-version-negotiation-server2
- client = 8-version-negotiation-client
+-
+ [test-7]
+ ExpectedResult = InternalError
  
- [8-version-negotiation-server]
-@@ -598,6 +665,14 @@ MinProtocol = SSLv3
+@@ -597,14 +581,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[8-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [8-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -616,6 +691,7 @@ ssl_conf = 9-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [9-version-negotiation-ssl]
- server = 9-version-negotiation-server
-+server2 = 9-version-negotiation-server2
- client = 9-version-negotiation-client
+-
+ [test-8]
+ ExpectedResult = InternalError
  
- [9-version-negotiation-server]
-@@ -625,6 +701,13 @@ MinProtocol = SSLv3
+@@ -624,14 +606,12 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[9-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [9-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -643,6 +726,7 @@ ssl_conf = 10-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [10-version-negotiation-ssl]
- server = 10-version-negotiation-server
-+server2 = 10-version-negotiation-server2
- client = 10-version-negotiation-client
+-
+ [test-9]
+ ExpectedResult = InternalError
  
- [10-version-negotiation-server]
-@@ -653,6 +737,14 @@ MinProtocol = TLSv1
+@@ -652,14 +632,12 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[10-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [10-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -671,6 +763,7 @@ ssl_conf = 11-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [11-version-negotiation-ssl]
- server = 11-version-negotiation-server
-+server2 = 11-version-negotiation-server2
- client = 11-version-negotiation-client
+-
+ [test-10]
+ ExpectedResult = InternalError
  
- [11-version-negotiation-server]
-@@ -681,6 +774,14 @@ MinProtocol = TLSv1
+@@ -680,14 +658,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[11-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [11-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -699,6 +800,7 @@ ssl_conf = 12-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [12-version-negotiation-ssl]
- server = 12-version-negotiation-server
-+server2 = 12-version-negotiation-server2
- client = 12-version-negotiation-client
+-
+ [test-11]
+ ExpectedResult = InternalError
  
- [12-version-negotiation-server]
-@@ -709,6 +811,14 @@ MinProtocol = TLSv1
+@@ -708,14 +684,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[12-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [12-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -727,6 +837,7 @@ ssl_conf = 13-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [13-version-negotiation-ssl]
- server = 13-version-negotiation-server
-+server2 = 13-version-negotiation-server2
- client = 13-version-negotiation-client
+-
+ [test-12]
+ ExpectedResult = InternalError
  
- [13-version-negotiation-server]
-@@ -736,6 +847,13 @@ MinProtocol = TLSv1
+@@ -735,14 +709,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[13-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [13-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -754,6 +872,7 @@ ssl_conf = 14-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [14-version-negotiation-ssl]
- server = 14-version-negotiation-server
-+server2 = 14-version-negotiation-server2
- client = 14-version-negotiation-client
+-
+ [test-13]
+ ExpectedResult = InternalError
  
- [14-version-negotiation-server]
-@@ -764,6 +883,14 @@ MinProtocol = TLSv1.1
+@@ -763,14 +735,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[14-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [14-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -782,6 +909,7 @@ ssl_conf = 15-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [15-version-negotiation-ssl]
- server = 15-version-negotiation-server
-+server2 = 15-version-negotiation-server2
- client = 15-version-negotiation-client
+-
+ [test-14]
+ ExpectedResult = InternalError
  
- [15-version-negotiation-server]
-@@ -792,6 +920,14 @@ MinProtocol = TLSv1.1
+@@ -791,14 +761,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[15-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [15-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -810,6 +946,7 @@ ssl_conf = 16-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [16-version-negotiation-ssl]
- server = 16-version-negotiation-server
-+server2 = 16-version-negotiation-server2
- client = 16-version-negotiation-client
+-
+ [test-15]
+ ExpectedResult = InternalError
  
- [16-version-negotiation-server]
-@@ -819,6 +956,13 @@ MinProtocol = TLSv1.1
+@@ -818,14 +786,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[16-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [16-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -837,6 +981,7 @@ ssl_conf = 17-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [17-version-negotiation-ssl]
- server = 17-version-negotiation-server
-+server2 = 17-version-negotiation-server2
- client = 17-version-negotiation-client
+-
+ [test-16]
+ ExpectedResult = InternalError
  
- [17-version-negotiation-server]
-@@ -847,6 +992,14 @@ MinProtocol = TLSv1.2
+@@ -846,14 +812,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[17-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [17-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -865,6 +1018,7 @@ ssl_conf = 18-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [18-version-negotiation-ssl]
- server = 18-version-negotiation-server
-+server2 = 18-version-negotiation-server2
- client = 18-version-negotiation-client
+-
+ [test-17]
+ ExpectedResult = InternalError
  
- [18-version-negotiation-server]
-@@ -874,6 +1028,13 @@ MinProtocol = TLSv1.2
+@@ -873,14 +837,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[18-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [18-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -892,6 +1053,7 @@ ssl_conf = 19-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [19-version-negotiation-ssl]
- server = 19-version-negotiation-server
-+server2 = 19-version-negotiation-server2
- client = 19-version-negotiation-client
+-
+ [test-18]
+ ExpectedResult = InternalError
  
- [19-version-negotiation-server]
-@@ -901,6 +1063,13 @@ MaxProtocol = SSLv3
+@@ -900,14 +862,12 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[19-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [19-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -919,6 +1088,7 @@ ssl_conf = 20-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [20-version-negotiation-ssl]
- server = 20-version-negotiation-server
-+server2 = 20-version-negotiation-server2
- client = 20-version-negotiation-client
+-
+ [test-19]
+ ExpectedResult = ServerFail
  
- [20-version-negotiation-server]
-@@ -928,6 +1098,13 @@ MaxProtocol = TLSv1
+@@ -927,14 +887,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[20-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [20-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -947,6 +1124,7 @@ ssl_conf = 21-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [21-version-negotiation-ssl]
- server = 21-version-negotiation-server
-+server2 = 21-version-negotiation-server2
- client = 21-version-negotiation-client
- 
- [21-version-negotiation-server]
-@@ -956,6 +1134,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-20]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -955,14 +913,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[21-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [21-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -975,6 +1160,7 @@ ssl_conf = 22-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [22-version-negotiation-ssl]
- server = 22-version-negotiation-server
-+server2 = 22-version-negotiation-server2
- client = 22-version-negotiation-client
- 
- [22-version-negotiation-server]
-@@ -984,6 +1170,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-21]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -983,14 +939,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[22-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [22-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1003,6 +1196,7 @@ ssl_conf = 23-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [23-version-negotiation-ssl]
- server = 23-version-negotiation-server
-+server2 = 23-version-negotiation-server2
- client = 23-version-negotiation-client
- 
- [23-version-negotiation-server]
-@@ -1011,6 +1205,12 @@ CipherString = DEFAULT
+-
+ [test-22]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1010,14 +964,12 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[23-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [23-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1030,6 +1230,7 @@ ssl_conf = 24-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [24-version-negotiation-ssl]
- server = 24-version-negotiation-server
-+server2 = 24-version-negotiation-server2
- client = 24-version-negotiation-client
- 
- [24-version-negotiation-server]
-@@ -1040,6 +1241,14 @@ MinProtocol = SSLv3
+-
+ [test-23]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1039,14 +991,12 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[24-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [24-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1058,6 +1267,7 @@ ssl_conf = 25-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [25-version-negotiation-ssl]
- server = 25-version-negotiation-server
-+server2 = 25-version-negotiation-server2
- client = 25-version-negotiation-client
+-
+ [test-24]
+ ExpectedResult = ServerFail
  
- [25-version-negotiation-server]
-@@ -1068,6 +1278,14 @@ MinProtocol = SSLv3
+@@ -1067,14 +1017,12 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[25-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [25-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1087,6 +1305,7 @@ ssl_conf = 26-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [26-version-negotiation-ssl]
- server = 26-version-negotiation-server
-+server2 = 26-version-negotiation-server2
- client = 26-version-negotiation-client
- 
- [26-version-negotiation-server]
-@@ -1097,6 +1316,14 @@ MinProtocol = SSLv3
+-
+ [test-25]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1096,14 +1044,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[26-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [26-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1116,6 +1343,7 @@ ssl_conf = 27-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [27-version-negotiation-ssl]
- server = 27-version-negotiation-server
-+server2 = 27-version-negotiation-server2
- client = 27-version-negotiation-client
- 
- [27-version-negotiation-server]
-@@ -1126,6 +1354,14 @@ MinProtocol = SSLv3
+-
+ [test-26]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1125,14 +1071,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[27-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [27-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1145,6 +1381,7 @@ ssl_conf = 28-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [28-version-negotiation-ssl]
- server = 28-version-negotiation-server
-+server2 = 28-version-negotiation-server2
- client = 28-version-negotiation-client
- 
- [28-version-negotiation-server]
-@@ -1154,6 +1391,13 @@ MinProtocol = SSLv3
+-
+ [test-27]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1153,14 +1097,12 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[28-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [28-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1173,6 +1417,7 @@ ssl_conf = 29-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [29-version-negotiation-ssl]
- server = 29-version-negotiation-server
-+server2 = 29-version-negotiation-server2
- client = 29-version-negotiation-client
- 
- [29-version-negotiation-server]
-@@ -1183,6 +1428,14 @@ MinProtocol = TLSv1
+-
+ [test-28]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1182,14 +1124,12 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[29-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [29-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1202,6 +1455,7 @@ ssl_conf = 30-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [30-version-negotiation-ssl]
- server = 30-version-negotiation-server
-+server2 = 30-version-negotiation-server2
- client = 30-version-negotiation-client
- 
- [30-version-negotiation-server]
-@@ -1212,6 +1466,14 @@ MinProtocol = TLSv1
+-
+ [test-29]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1211,14 +1151,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[30-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [30-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1231,6 +1493,7 @@ ssl_conf = 31-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [31-version-negotiation-ssl]
- server = 31-version-negotiation-server
-+server2 = 31-version-negotiation-server2
- client = 31-version-negotiation-client
- 
- [31-version-negotiation-server]
-@@ -1241,6 +1504,14 @@ MinProtocol = TLSv1
+-
+ [test-30]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1240,14 +1178,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[31-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [31-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1260,6 +1531,7 @@ ssl_conf = 32-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [32-version-negotiation-ssl]
- server = 32-version-negotiation-server
-+server2 = 32-version-negotiation-server2
- client = 32-version-negotiation-client
- 
- [32-version-negotiation-server]
-@@ -1269,6 +1541,13 @@ MinProtocol = TLSv1
+-
+ [test-31]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1268,14 +1204,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[32-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [32-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1288,6 +1567,7 @@ ssl_conf = 33-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [33-version-negotiation-ssl]
- server = 33-version-negotiation-server
-+server2 = 33-version-negotiation-server2
- client = 33-version-negotiation-client
- 
- [33-version-negotiation-server]
-@@ -1298,6 +1578,14 @@ MinProtocol = TLSv1.1
+-
+ [test-32]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1297,14 +1231,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[33-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [33-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1316,6 +1604,7 @@ ssl_conf = 34-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [34-version-negotiation-ssl]
- server = 34-version-negotiation-server
-+server2 = 34-version-negotiation-server2
- client = 34-version-negotiation-client
+-
+ [test-33]
+ ExpectedResult = ServerFail
  
- [34-version-negotiation-server]
-@@ -1326,6 +1615,14 @@ MinProtocol = TLSv1.1
+@@ -1325,14 +1257,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[34-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [34-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1344,6 +1641,7 @@ ssl_conf = 35-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [35-version-negotiation-ssl]
- server = 35-version-negotiation-server
-+server2 = 35-version-negotiation-server2
- client = 35-version-negotiation-client
+-
+ [test-34]
+ ExpectedResult = ServerFail
  
- [35-version-negotiation-server]
-@@ -1353,6 +1651,13 @@ MinProtocol = TLSv1.1
+@@ -1352,14 +1282,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[35-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [35-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1371,6 +1676,7 @@ ssl_conf = 36-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [36-version-negotiation-ssl]
- server = 36-version-negotiation-server
-+server2 = 36-version-negotiation-server2
- client = 36-version-negotiation-client
+-
+ [test-35]
+ ExpectedResult = ServerFail
  
- [36-version-negotiation-server]
-@@ -1381,6 +1687,14 @@ MinProtocol = TLSv1.2
+@@ -1380,14 +1308,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[36-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [36-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1399,6 +1713,7 @@ ssl_conf = 37-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [37-version-negotiation-ssl]
- server = 37-version-negotiation-server
-+server2 = 37-version-negotiation-server2
- client = 37-version-negotiation-client
+-
+ [test-36]
+ ExpectedResult = ServerFail
  
- [37-version-negotiation-server]
-@@ -1408,6 +1723,13 @@ MinProtocol = TLSv1.2
+@@ -1407,14 +1333,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[37-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [37-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -1426,6 +1748,7 @@ ssl_conf = 38-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [38-version-negotiation-ssl]
- server = 38-version-negotiation-server
-+server2 = 38-version-negotiation-server2
- client = 38-version-negotiation-client
+-
+ [test-37]
+ ExpectedResult = ServerFail
  
- [38-version-negotiation-server]
-@@ -1435,6 +1758,13 @@ MaxProtocol = SSLv3
+@@ -1434,14 +1358,12 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[38-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [38-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1453,6 +1783,7 @@ ssl_conf = 39-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [39-version-negotiation-ssl]
- server = 39-version-negotiation-server
-+server2 = 39-version-negotiation-server2
- client = 39-version-negotiation-client
+-
+ [test-38]
+ ExpectedResult = ServerFail
  
- [39-version-negotiation-server]
-@@ -1462,6 +1793,13 @@ MaxProtocol = TLSv1
+@@ -1461,14 +1383,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[39-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [39-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1481,6 +1819,7 @@ ssl_conf = 40-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [40-version-negotiation-ssl]
- server = 40-version-negotiation-server
-+server2 = 40-version-negotiation-server2
- client = 40-version-negotiation-client
- 
- [40-version-negotiation-server]
-@@ -1490,6 +1829,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-39]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1489,14 +1409,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[40-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [40-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1509,6 +1855,7 @@ ssl_conf = 41-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [41-version-negotiation-ssl]
- server = 41-version-negotiation-server
-+server2 = 41-version-negotiation-server2
- client = 41-version-negotiation-client
- 
- [41-version-negotiation-server]
-@@ -1518,6 +1865,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-40]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1517,14 +1435,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[41-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [41-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1537,6 +1891,7 @@ ssl_conf = 42-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [42-version-negotiation-ssl]
- server = 42-version-negotiation-server
-+server2 = 42-version-negotiation-server2
- client = 42-version-negotiation-client
- 
- [42-version-negotiation-server]
-@@ -1545,6 +1900,12 @@ CipherString = DEFAULT
+-
+ [test-41]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1544,14 +1460,12 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[42-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [42-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1564,6 +1925,7 @@ ssl_conf = 43-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [43-version-negotiation-ssl]
- server = 43-version-negotiation-server
-+server2 = 43-version-negotiation-server2
- client = 43-version-negotiation-client
- 
- [43-version-negotiation-server]
-@@ -1574,6 +1936,14 @@ MinProtocol = SSLv3
+-
+ [test-42]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1573,14 +1487,12 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[43-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [43-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1592,6 +1962,7 @@ ssl_conf = 44-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [44-version-negotiation-ssl]
- server = 44-version-negotiation-server
-+server2 = 44-version-negotiation-server2
- client = 44-version-negotiation-client
+-
+ [test-43]
+ ExpectedResult = ServerFail
  
- [44-version-negotiation-server]
-@@ -1602,6 +1973,14 @@ MinProtocol = SSLv3
+@@ -1601,14 +1513,12 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[44-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [44-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1621,6 +2000,7 @@ ssl_conf = 45-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [45-version-negotiation-ssl]
- server = 45-version-negotiation-server
-+server2 = 45-version-negotiation-server2
- client = 45-version-negotiation-client
- 
- [45-version-negotiation-server]
-@@ -1631,6 +2011,14 @@ MinProtocol = SSLv3
+-
+ [test-44]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1630,14 +1540,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[45-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [45-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1650,6 +2038,7 @@ ssl_conf = 46-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [46-version-negotiation-ssl]
- server = 46-version-negotiation-server
-+server2 = 46-version-negotiation-server2
- client = 46-version-negotiation-client
- 
- [46-version-negotiation-server]
-@@ -1660,6 +2049,14 @@ MinProtocol = SSLv3
+-
+ [test-45]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1659,14 +1567,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[46-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [46-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1679,6 +2076,7 @@ ssl_conf = 47-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [47-version-negotiation-ssl]
- server = 47-version-negotiation-server
-+server2 = 47-version-negotiation-server2
- client = 47-version-negotiation-client
- 
- [47-version-negotiation-server]
-@@ -1688,6 +2086,13 @@ MinProtocol = SSLv3
+-
+ [test-46]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1687,14 +1593,12 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[47-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [47-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1707,6 +2112,7 @@ ssl_conf = 48-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [48-version-negotiation-ssl]
- server = 48-version-negotiation-server
-+server2 = 48-version-negotiation-server2
- client = 48-version-negotiation-client
- 
- [48-version-negotiation-server]
-@@ -1717,6 +2123,14 @@ MinProtocol = TLSv1
+-
+ [test-47]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1716,14 +1620,12 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[48-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [48-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1736,6 +2150,7 @@ ssl_conf = 49-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [49-version-negotiation-ssl]
- server = 49-version-negotiation-server
-+server2 = 49-version-negotiation-server2
- client = 49-version-negotiation-client
- 
- [49-version-negotiation-server]
-@@ -1746,6 +2161,14 @@ MinProtocol = TLSv1
+-
+ [test-48]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -1745,14 +1647,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[49-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [49-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1765,9 +2188,18 @@ ssl_conf = 50-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [50-version-negotiation-ssl]
- server = 50-version-negotiation-server
-+server2 = 50-version-negotiation-server2
- client = 50-version-negotiation-client
+-
+ [test-49]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1774,14 +1674,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
+ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
--[50-version-negotiation-server]
-+[50-version-negotiation-server]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
-+[50-version-negotiation-server2]
- Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+-
+ [50-version-negotiation-client]
  CipherString = DEFAULT
- MaxProtocol = TLSv1.2
-@@ -1794,6 +2226,7 @@ ssl_conf = 51-version-negotiation-ssl
+ MaxProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [51-version-negotiation-ssl]
- server = 51-version-negotiation-server
-+server2 = 51-version-negotiation-server2
- client = 51-version-negotiation-client
- 
- [51-version-negotiation-server]
-@@ -1803,6 +2236,13 @@ MinProtocol = TLSv1
+-
+ [test-50]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1802,14 +1700,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[51-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [51-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1822,6 +2262,7 @@ ssl_conf = 52-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [52-version-negotiation-ssl]
- server = 52-version-negotiation-server
-+server2 = 52-version-negotiation-server2
- client = 52-version-negotiation-client
- 
- [52-version-negotiation-server]
-@@ -1832,6 +2273,14 @@ MinProtocol = TLSv1.1
+-
+ [test-51]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1831,14 +1727,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[52-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [52-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1851,6 +2300,7 @@ ssl_conf = 53-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [53-version-negotiation-ssl]
- server = 53-version-negotiation-server
-+server2 = 53-version-negotiation-server2
- client = 53-version-negotiation-client
- 
- [53-version-negotiation-server]
-@@ -1861,6 +2311,14 @@ MinProtocol = TLSv1.1
+-
+ [test-52]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1860,14 +1754,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[53-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [53-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1880,6 +2338,7 @@ ssl_conf = 54-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [54-version-negotiation-ssl]
- server = 54-version-negotiation-server
-+server2 = 54-version-negotiation-server2
- client = 54-version-negotiation-client
- 
- [54-version-negotiation-server]
-@@ -1889,6 +2348,13 @@ MinProtocol = TLSv1.1
+-
+ [test-53]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1888,14 +1780,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[54-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [54-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1908,6 +2374,7 @@ ssl_conf = 55-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [55-version-negotiation-ssl]
- server = 55-version-negotiation-server
-+server2 = 55-version-negotiation-server2
- client = 55-version-negotiation-client
- 
- [55-version-negotiation-server]
-@@ -1918,6 +2385,14 @@ MinProtocol = TLSv1.2
+-
+ [test-54]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -1917,14 +1807,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[55-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [55-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1936,6 +2411,7 @@ ssl_conf = 56-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [56-version-negotiation-ssl]
- server = 56-version-negotiation-server
-+server2 = 56-version-negotiation-server2
- client = 56-version-negotiation-client
+-
+ [test-55]
+ ExpectedResult = ServerFail
  
- [56-version-negotiation-server]
-@@ -1945,6 +2421,13 @@ MinProtocol = TLSv1.2
+@@ -1944,14 +1832,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[56-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [56-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -1963,6 +2446,7 @@ ssl_conf = 57-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [57-version-negotiation-ssl]
- server = 57-version-negotiation-server
-+server2 = 57-version-negotiation-server2
- client = 57-version-negotiation-client
+-
+ [test-56]
+ ExpectedResult = ServerFail
  
- [57-version-negotiation-server]
-@@ -1972,6 +2456,13 @@ MaxProtocol = SSLv3
+@@ -1971,14 +1857,12 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[57-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [57-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -1990,6 +2481,7 @@ ssl_conf = 58-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [58-version-negotiation-ssl]
- server = 58-version-negotiation-server
-+server2 = 58-version-negotiation-server2
- client = 58-version-negotiation-client
+-
+ [test-57]
+ ExpectedResult = ServerFail
  
- [58-version-negotiation-server]
-@@ -1999,6 +2491,13 @@ MaxProtocol = TLSv1
+@@ -1998,14 +1882,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[58-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [58-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2018,6 +2517,7 @@ ssl_conf = 59-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [59-version-negotiation-ssl]
- server = 59-version-negotiation-server
-+server2 = 59-version-negotiation-server2
- client = 59-version-negotiation-client
- 
- [59-version-negotiation-server]
-@@ -2027,6 +2527,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-58]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -2026,14 +1908,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[59-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [59-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2046,6 +2553,7 @@ ssl_conf = 60-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [60-version-negotiation-ssl]
- server = 60-version-negotiation-server
-+server2 = 60-version-negotiation-server2
- client = 60-version-negotiation-client
- 
- [60-version-negotiation-server]
-@@ -2055,6 +2563,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-59]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -2054,14 +1934,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[60-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [60-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2074,6 +2589,7 @@ ssl_conf = 61-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [61-version-negotiation-ssl]
- server = 61-version-negotiation-server
-+server2 = 61-version-negotiation-server2
- client = 61-version-negotiation-client
- 
- [61-version-negotiation-server]
-@@ -2082,6 +2598,12 @@ CipherString = DEFAULT
+-
+ [test-60]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2081,14 +1959,12 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[61-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [61-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2101,6 +2623,7 @@ ssl_conf = 62-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [62-version-negotiation-ssl]
- server = 62-version-negotiation-server
-+server2 = 62-version-negotiation-server2
- client = 62-version-negotiation-client
- 
- [62-version-negotiation-server]
-@@ -2111,6 +2634,14 @@ MinProtocol = SSLv3
+-
+ [test-61]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2110,14 +1986,12 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[62-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [62-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2129,6 +2660,7 @@ ssl_conf = 63-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [63-version-negotiation-ssl]
- server = 63-version-negotiation-server
-+server2 = 63-version-negotiation-server2
- client = 63-version-negotiation-client
+-
+ [test-62]
+ ExpectedResult = ServerFail
  
- [63-version-negotiation-server]
-@@ -2139,6 +2671,14 @@ MinProtocol = SSLv3
+@@ -2138,14 +2012,12 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[63-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [63-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2158,6 +2698,7 @@ ssl_conf = 64-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [64-version-negotiation-ssl]
- server = 64-version-negotiation-server
-+server2 = 64-version-negotiation-server2
- client = 64-version-negotiation-client
- 
- [64-version-negotiation-server]
-@@ -2168,6 +2709,14 @@ MinProtocol = SSLv3
+-
+ [test-63]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -2167,14 +2039,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[64-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [64-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2187,6 +2736,7 @@ ssl_conf = 65-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [65-version-negotiation-ssl]
- server = 65-version-negotiation-server
-+server2 = 65-version-negotiation-server2
- client = 65-version-negotiation-client
- 
- [65-version-negotiation-server]
-@@ -2197,6 +2747,14 @@ MinProtocol = SSLv3
+-
+ [test-64]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -2196,14 +2066,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[65-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [65-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2216,6 +2774,7 @@ ssl_conf = 66-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [66-version-negotiation-ssl]
- server = 66-version-negotiation-server
-+server2 = 66-version-negotiation-server2
- client = 66-version-negotiation-client
- 
- [66-version-negotiation-server]
-@@ -2225,6 +2784,13 @@ MinProtocol = SSLv3
+-
+ [test-65]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2224,14 +2092,12 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[66-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [66-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2244,6 +2810,7 @@ ssl_conf = 67-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [67-version-negotiation-ssl]
- server = 67-version-negotiation-server
-+server2 = 67-version-negotiation-server2
- client = 67-version-negotiation-client
- 
- [67-version-negotiation-server]
-@@ -2254,6 +2821,14 @@ MinProtocol = TLSv1
+-
+ [test-66]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2253,14 +2119,12 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[67-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [67-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2273,6 +2848,7 @@ ssl_conf = 68-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [68-version-negotiation-ssl]
- server = 68-version-negotiation-server
-+server2 = 68-version-negotiation-server2
- client = 68-version-negotiation-client
- 
- [68-version-negotiation-server]
-@@ -2283,6 +2859,14 @@ MinProtocol = TLSv1
+-
+ [test-67]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -2282,14 +2146,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[68-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [68-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2302,6 +2886,7 @@ ssl_conf = 69-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [69-version-negotiation-ssl]
- server = 69-version-negotiation-server
-+server2 = 69-version-negotiation-server2
- client = 69-version-negotiation-client
- 
- [69-version-negotiation-server]
-@@ -2312,6 +2897,14 @@ MinProtocol = TLSv1
+-
+ [test-68]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -2311,14 +2173,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[69-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [69-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2331,6 +2924,7 @@ ssl_conf = 70-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [70-version-negotiation-ssl]
- server = 70-version-negotiation-server
-+server2 = 70-version-negotiation-server2
- client = 70-version-negotiation-client
- 
- [70-version-negotiation-server]
-@@ -2340,6 +2934,13 @@ MinProtocol = TLSv1
+-
+ [test-69]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2339,14 +2199,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[70-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [70-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2359,6 +2960,7 @@ ssl_conf = 71-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [71-version-negotiation-ssl]
- server = 71-version-negotiation-server
-+server2 = 71-version-negotiation-server2
- client = 71-version-negotiation-client
- 
- [71-version-negotiation-server]
-@@ -2369,6 +2971,14 @@ MinProtocol = TLSv1.1
+-
+ [test-70]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2368,14 +2226,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[71-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [71-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2388,6 +2998,7 @@ ssl_conf = 72-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [72-version-negotiation-ssl]
- server = 72-version-negotiation-server
-+server2 = 72-version-negotiation-server2
- client = 72-version-negotiation-client
- 
- [72-version-negotiation-server]
-@@ -2398,6 +3009,14 @@ MinProtocol = TLSv1.1
+-
+ [test-71]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -2397,14 +2253,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[72-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [72-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2417,6 +3036,7 @@ ssl_conf = 73-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [73-version-negotiation-ssl]
- server = 73-version-negotiation-server
-+server2 = 73-version-negotiation-server2
- client = 73-version-negotiation-client
- 
- [73-version-negotiation-server]
-@@ -2426,6 +3046,13 @@ MinProtocol = TLSv1.1
+-
+ [test-72]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2425,14 +2279,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[73-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [73-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2445,6 +3072,7 @@ ssl_conf = 74-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [74-version-negotiation-ssl]
- server = 74-version-negotiation-server
-+server2 = 74-version-negotiation-server2
- client = 74-version-negotiation-client
- 
- [74-version-negotiation-server]
-@@ -2455,6 +3083,14 @@ MinProtocol = TLSv1.2
+-
+ [test-73]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2454,14 +2306,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[74-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [74-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2474,6 +3110,7 @@ ssl_conf = 75-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [75-version-negotiation-ssl]
- server = 75-version-negotiation-server
-+server2 = 75-version-negotiation-server2
- client = 75-version-negotiation-client
- 
- [75-version-negotiation-server]
-@@ -2483,6 +3120,13 @@ MinProtocol = TLSv1.2
+-
+ [test-74]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2482,14 +2332,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[75-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [75-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -2502,6 +3146,7 @@ ssl_conf = 76-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [76-version-negotiation-ssl]
- server = 76-version-negotiation-server
-+server2 = 76-version-negotiation-server2
- client = 76-version-negotiation-client
- 
- [76-version-negotiation-server]
-@@ -2511,6 +3156,13 @@ MaxProtocol = SSLv3
+-
+ [test-75]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2510,13 +2358,11 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[76-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [76-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2528,6 +3180,7 @@ ssl_conf = 77-version-negotiation-ssl
+ VerifyMode = Peer
  
- [77-version-negotiation-ssl]
- server = 77-version-negotiation-server
-+server2 = 77-version-negotiation-server2
- client = 77-version-negotiation-client
+-
+ [test-76]
+ ExpectedResult = ServerFail
  
- [77-version-negotiation-server]
-@@ -2537,6 +3190,13 @@ MaxProtocol = TLSv1
+@@ -2536,13 +2382,11 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[77-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [77-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2555,6 +3215,7 @@ ssl_conf = 78-version-negotiation-ssl
+ VerifyMode = Peer
  
- [78-version-negotiation-ssl]
- server = 78-version-negotiation-server
-+server2 = 78-version-negotiation-server2
- client = 78-version-negotiation-client
- 
- [78-version-negotiation-server]
-@@ -2564,6 +3225,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-77]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -2563,13 +2407,11 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[78-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [78-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2582,6 +3250,7 @@ ssl_conf = 79-version-negotiation-ssl
+ VerifyMode = Peer
  
- [79-version-negotiation-ssl]
- server = 79-version-negotiation-server
-+server2 = 79-version-negotiation-server2
- client = 79-version-negotiation-client
- 
- [79-version-negotiation-server]
-@@ -2591,6 +3260,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-78]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -2590,13 +2432,11 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[79-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [79-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2609,6 +3285,7 @@ ssl_conf = 80-version-negotiation-ssl
+ VerifyMode = Peer
  
- [80-version-negotiation-ssl]
- server = 80-version-negotiation-server
-+server2 = 80-version-negotiation-server2
- client = 80-version-negotiation-client
- 
- [80-version-negotiation-server]
-@@ -2617,6 +3294,12 @@ CipherString = DEFAULT
+-
+ [test-79]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2616,13 +2456,11 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[80-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [80-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2635,6 +3318,7 @@ ssl_conf = 81-version-negotiation-ssl
+ VerifyMode = Peer
  
- [81-version-negotiation-ssl]
- server = 81-version-negotiation-server
-+server2 = 81-version-negotiation-server2
- client = 81-version-negotiation-client
- 
- [81-version-negotiation-server]
-@@ -2645,6 +3329,14 @@ MinProtocol = SSLv3
+-
+ [test-80]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2644,13 +2482,11 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[81-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [81-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2662,6 +3354,7 @@ ssl_conf = 82-version-negotiation-ssl
+ VerifyMode = Peer
  
- [82-version-negotiation-ssl]
- server = 82-version-negotiation-server
-+server2 = 82-version-negotiation-server2
- client = 82-version-negotiation-client
+-
+ [test-81]
+ ExpectedResult = ServerFail
  
- [82-version-negotiation-server]
-@@ -2672,6 +3365,14 @@ MinProtocol = SSLv3
+@@ -2671,13 +2507,11 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[82-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [82-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2690,6 +3391,7 @@ ssl_conf = 83-version-negotiation-ssl
+ VerifyMode = Peer
  
- [83-version-negotiation-ssl]
- server = 83-version-negotiation-server
-+server2 = 83-version-negotiation-server2
- client = 83-version-negotiation-client
- 
- [83-version-negotiation-server]
-@@ -2700,6 +3402,14 @@ MinProtocol = SSLv3
+-
+ [test-82]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -2699,13 +2533,11 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[83-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [83-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2718,6 +3428,7 @@ ssl_conf = 84-version-negotiation-ssl
+ VerifyMode = Peer
  
- [84-version-negotiation-ssl]
- server = 84-version-negotiation-server
-+server2 = 84-version-negotiation-server2
- client = 84-version-negotiation-client
- 
- [84-version-negotiation-server]
-@@ -2728,6 +3439,14 @@ MinProtocol = SSLv3
+-
+ [test-83]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -2727,13 +2559,11 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[84-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [84-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2746,6 +3465,7 @@ ssl_conf = 85-version-negotiation-ssl
+ VerifyMode = Peer
  
- [85-version-negotiation-ssl]
- server = 85-version-negotiation-server
-+server2 = 85-version-negotiation-server2
- client = 85-version-negotiation-client
- 
- [85-version-negotiation-server]
-@@ -2755,6 +3475,13 @@ MinProtocol = SSLv3
+-
+ [test-84]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2754,13 +2584,11 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[85-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [85-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2773,6 +3500,7 @@ ssl_conf = 86-version-negotiation-ssl
+ VerifyMode = Peer
  
- [86-version-negotiation-ssl]
- server = 86-version-negotiation-server
-+server2 = 86-version-negotiation-server2
- client = 86-version-negotiation-client
- 
- [86-version-negotiation-server]
-@@ -2783,6 +3511,14 @@ MinProtocol = TLSv1
+-
+ [test-85]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2782,13 +2610,11 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[86-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [86-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2801,6 +3537,7 @@ ssl_conf = 87-version-negotiation-ssl
+ VerifyMode = Peer
  
- [87-version-negotiation-ssl]
- server = 87-version-negotiation-server
-+server2 = 87-version-negotiation-server2
- client = 87-version-negotiation-client
- 
- [87-version-negotiation-server]
-@@ -2811,6 +3548,14 @@ MinProtocol = TLSv1
+-
+ [test-86]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -2810,13 +2636,11 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[87-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [87-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2829,6 +3574,7 @@ ssl_conf = 88-version-negotiation-ssl
+ VerifyMode = Peer
  
- [88-version-negotiation-ssl]
- server = 88-version-negotiation-server
-+server2 = 88-version-negotiation-server2
- client = 88-version-negotiation-client
- 
- [88-version-negotiation-server]
-@@ -2839,6 +3585,14 @@ MinProtocol = TLSv1
+-
+ [test-87]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -2838,13 +2662,11 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[88-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [88-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2857,9 +3611,17 @@ ssl_conf = 89-version-negotiation-ssl
+ VerifyMode = Peer
  
- [89-version-negotiation-ssl]
- server = 89-version-negotiation-server
-+server2 = 89-version-negotiation-server2
- client = 89-version-negotiation-client
+-
+ [test-88]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2865,13 +2687,11 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
+ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
--[89-version-negotiation-server]
-+[89-version-negotiation-server]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
-+[89-version-negotiation-server2]
- Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+-
+ [89-version-negotiation-client]
  CipherString = DEFAULT
- MinProtocol = TLSv1
-@@ -2884,6 +3646,7 @@ ssl_conf = 90-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [90-version-negotiation-ssl]
- server = 90-version-negotiation-server
-+server2 = 90-version-negotiation-server2
- client = 90-version-negotiation-client
- 
- [90-version-negotiation-server]
-@@ -2894,6 +3657,14 @@ MinProtocol = TLSv1.1
+-
+ [test-89]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2893,13 +2713,11 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[90-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [90-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2912,6 +3683,7 @@ ssl_conf = 91-version-negotiation-ssl
+ VerifyMode = Peer
  
- [91-version-negotiation-ssl]
- server = 91-version-negotiation-server
-+server2 = 91-version-negotiation-server2
- client = 91-version-negotiation-client
- 
- [91-version-negotiation-server]
-@@ -2922,6 +3694,14 @@ MinProtocol = TLSv1.1
+-
+ [test-90]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -2921,13 +2739,11 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[91-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [91-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2940,6 +3720,7 @@ ssl_conf = 92-version-negotiation-ssl
+ VerifyMode = Peer
  
- [92-version-negotiation-ssl]
- server = 92-version-negotiation-server
-+server2 = 92-version-negotiation-server2
- client = 92-version-negotiation-client
- 
- [92-version-negotiation-server]
-@@ -2949,6 +3730,13 @@ MinProtocol = TLSv1.1
+-
+ [test-91]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2948,13 +2764,11 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[92-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [92-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2967,6 +3755,7 @@ ssl_conf = 93-version-negotiation-ssl
+ VerifyMode = Peer
  
- [93-version-negotiation-ssl]
- server = 93-version-negotiation-server
-+server2 = 93-version-negotiation-server2
- client = 93-version-negotiation-client
- 
- [93-version-negotiation-server]
-@@ -2977,6 +3766,14 @@ MinProtocol = TLSv1.2
+-
+ [test-92]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -2976,13 +2790,11 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[93-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [93-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -2995,6 +3792,7 @@ ssl_conf = 94-version-negotiation-ssl
+ VerifyMode = Peer
  
- [94-version-negotiation-ssl]
- server = 94-version-negotiation-server
-+server2 = 94-version-negotiation-server2
- client = 94-version-negotiation-client
- 
- [94-version-negotiation-server]
-@@ -3004,6 +3802,13 @@ MinProtocol = TLSv1.2
+-
+ [test-93]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -3003,13 +2815,11 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[94-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [94-version-negotiation-client]
  CipherString = DEFAULT
  VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-@@ -3022,6 +3827,7 @@ ssl_conf = 95-version-negotiation-ssl
+ VerifyMode = Peer
  
- [95-version-negotiation-ssl]
- server = 95-version-negotiation-server
-+server2 = 95-version-negotiation-server2
- client = 95-version-negotiation-client
- 
- [95-version-negotiation-server]
-@@ -3031,6 +3837,13 @@ MaxProtocol = SSLv3
+-
+ [test-94]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -3030,7 +2840,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[95-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [95-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3050,6 +3863,7 @@ ssl_conf = 96-version-negotiation-ssl
+@@ -3038,7 +2847,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [96-version-negotiation-ssl]
- server = 96-version-negotiation-server
-+server2 = 96-version-negotiation-server2
- client = 96-version-negotiation-client
+-
+ [test-95]
+ ExpectedResult = InternalError
  
- [96-version-negotiation-server]
-@@ -3059,6 +3873,13 @@ MaxProtocol = TLSv1
+@@ -3058,7 +2866,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[96-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [96-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3078,6 +3899,7 @@ ssl_conf = 97-version-negotiation-ssl
+@@ -3066,7 +2873,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [97-version-negotiation-ssl]
- server = 97-version-negotiation-server
-+server2 = 97-version-negotiation-server2
- client = 97-version-negotiation-client
+-
+ [test-96]
+ ExpectedResult = InternalError
  
- [97-version-negotiation-server]
-@@ -3087,6 +3909,13 @@ MaxProtocol = TLSv1.1
+@@ -3086,7 +2892,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[97-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [97-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3106,6 +3935,7 @@ ssl_conf = 98-version-negotiation-ssl
+@@ -3094,7 +2899,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [98-version-negotiation-ssl]
- server = 98-version-negotiation-server
-+server2 = 98-version-negotiation-server2
- client = 98-version-negotiation-client
+-
+ [test-97]
+ ExpectedResult = InternalError
  
- [98-version-negotiation-server]
-@@ -3115,6 +3945,13 @@ MaxProtocol = TLSv1.2
+@@ -3114,7 +2918,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[98-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [98-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3134,6 +3971,7 @@ ssl_conf = 99-version-negotiation-ssl
+@@ -3122,7 +2925,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [99-version-negotiation-ssl]
- server = 99-version-negotiation-server
-+server2 = 99-version-negotiation-server2
- client = 99-version-negotiation-client
+-
+ [test-98]
+ ExpectedResult = InternalError
  
- [99-version-negotiation-server]
-@@ -3142,6 +3980,12 @@ CipherString = DEFAULT
+@@ -3141,7 +2943,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[99-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [99-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3161,6 +4005,7 @@ ssl_conf = 100-version-negotiation-ssl
+@@ -3149,7 +2950,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [100-version-negotiation-ssl]
- server = 100-version-negotiation-server
-+server2 = 100-version-negotiation-server2
- client = 100-version-negotiation-client
+-
+ [test-99]
+ ExpectedResult = InternalError
  
- [100-version-negotiation-server]
-@@ -3171,6 +4016,14 @@ MinProtocol = SSLv3
+@@ -3170,7 +2970,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[100-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [100-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3190,6 +4043,7 @@ ssl_conf = 101-version-negotiation-ssl
+@@ -3178,7 +2977,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [101-version-negotiation-ssl]
- server = 101-version-negotiation-server
-+server2 = 101-version-negotiation-server2
- client = 101-version-negotiation-client
+-
+ [test-100]
+ ExpectedResult = InternalError
  
- [101-version-negotiation-server]
-@@ -3200,6 +4054,14 @@ MinProtocol = SSLv3
+@@ -3199,7 +2997,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[101-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [101-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3219,6 +4081,7 @@ ssl_conf = 102-version-negotiation-ssl
+@@ -3207,7 +3004,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [102-version-negotiation-ssl]
- server = 102-version-negotiation-server
-+server2 = 102-version-negotiation-server2
- client = 102-version-negotiation-client
+-
+ [test-101]
+ ExpectedResult = InternalError
  
- [102-version-negotiation-server]
-@@ -3229,6 +4092,14 @@ MinProtocol = SSLv3
+@@ -3228,7 +3024,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[102-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [102-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3248,6 +4119,7 @@ ssl_conf = 103-version-negotiation-ssl
+@@ -3236,7 +3031,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [103-version-negotiation-ssl]
- server = 103-version-negotiation-server
-+server2 = 103-version-negotiation-server2
- client = 103-version-negotiation-client
+-
+ [test-102]
+ ExpectedResult = InternalError
  
- [103-version-negotiation-server]
-@@ -3258,6 +4130,14 @@ MinProtocol = SSLv3
+@@ -3257,7 +3051,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[103-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [103-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3277,6 +4157,7 @@ ssl_conf = 104-version-negotiation-ssl
+@@ -3265,7 +3058,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [104-version-negotiation-ssl]
- server = 104-version-negotiation-server
-+server2 = 104-version-negotiation-server2
- client = 104-version-negotiation-client
+-
+ [test-103]
+ ExpectedResult = InternalError
  
- [104-version-negotiation-server]
-@@ -3286,6 +4167,13 @@ MinProtocol = SSLv3
+@@ -3285,7 +3077,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[104-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [104-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3305,6 +4193,7 @@ ssl_conf = 105-version-negotiation-ssl
+@@ -3293,7 +3084,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [105-version-negotiation-ssl]
- server = 105-version-negotiation-server
-+server2 = 105-version-negotiation-server2
- client = 105-version-negotiation-client
+-
+ [test-104]
+ ExpectedResult = InternalError
  
- [105-version-negotiation-server]
-@@ -3315,6 +4204,14 @@ MinProtocol = TLSv1
+@@ -3314,7 +3104,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[105-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [105-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3334,6 +4231,7 @@ ssl_conf = 106-version-negotiation-ssl
+@@ -3322,7 +3111,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [106-version-negotiation-ssl]
- server = 106-version-negotiation-server
-+server2 = 106-version-negotiation-server2
- client = 106-version-negotiation-client
+-
+ [test-105]
+ ExpectedResult = InternalError
  
- [106-version-negotiation-server]
-@@ -3344,6 +4242,14 @@ MinProtocol = TLSv1
+@@ -3343,7 +3131,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[106-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [106-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3363,6 +4269,7 @@ ssl_conf = 107-version-negotiation-ssl
+@@ -3351,7 +3138,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [107-version-negotiation-ssl]
- server = 107-version-negotiation-server
-+server2 = 107-version-negotiation-server2
- client = 107-version-negotiation-client
+-
+ [test-106]
+ ExpectedResult = InternalError
  
- [107-version-negotiation-server]
-@@ -3373,6 +4280,14 @@ MinProtocol = TLSv1
+@@ -3372,7 +3158,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[107-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [107-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3392,6 +4307,7 @@ ssl_conf = 108-version-negotiation-ssl
+@@ -3380,7 +3165,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [108-version-negotiation-ssl]
- server = 108-version-negotiation-server
-+server2 = 108-version-negotiation-server2
- client = 108-version-negotiation-client
+-
+ [test-107]
+ ExpectedResult = InternalError
  
- [108-version-negotiation-server]
-@@ -3401,6 +4317,13 @@ MinProtocol = TLSv1
+@@ -3400,7 +3184,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[108-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [108-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3420,6 +4343,7 @@ ssl_conf = 109-version-negotiation-ssl
+@@ -3408,7 +3191,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [109-version-negotiation-ssl]
- server = 109-version-negotiation-server
-+server2 = 109-version-negotiation-server2
- client = 109-version-negotiation-client
+-
+ [test-108]
+ ExpectedResult = InternalError
  
- [109-version-negotiation-server]
-@@ -3430,6 +4354,14 @@ MinProtocol = TLSv1.1
+@@ -3429,7 +3211,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[109-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [109-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3449,6 +4381,7 @@ ssl_conf = 110-version-negotiation-ssl
+@@ -3437,7 +3218,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [110-version-negotiation-ssl]
- server = 110-version-negotiation-server
-+server2 = 110-version-negotiation-server2
- client = 110-version-negotiation-client
+-
+ [test-109]
+ ExpectedResult = InternalError
  
- [110-version-negotiation-server]
-@@ -3459,6 +4392,14 @@ MinProtocol = TLSv1.1
+@@ -3458,7 +3238,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[110-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [110-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3478,6 +4419,7 @@ ssl_conf = 111-version-negotiation-ssl
+@@ -3466,7 +3245,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [111-version-negotiation-ssl]
- server = 111-version-negotiation-server
-+server2 = 111-version-negotiation-server2
- client = 111-version-negotiation-client
+-
+ [test-110]
+ ExpectedResult = InternalError
  
- [111-version-negotiation-server]
-@@ -3487,6 +4429,13 @@ MinProtocol = TLSv1.1
+@@ -3486,7 +3264,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[111-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [111-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3506,6 +4455,7 @@ ssl_conf = 112-version-negotiation-ssl
+@@ -3494,7 +3271,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [112-version-negotiation-ssl]
- server = 112-version-negotiation-server
-+server2 = 112-version-negotiation-server2
- client = 112-version-negotiation-client
+-
+ [test-111]
+ ExpectedResult = InternalError
  
- [112-version-negotiation-server]
-@@ -3516,6 +4466,14 @@ MinProtocol = TLSv1.2
+@@ -3515,7 +3291,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[112-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [112-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3535,6 +4493,7 @@ ssl_conf = 113-version-negotiation-ssl
+@@ -3523,7 +3298,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [113-version-negotiation-ssl]
- server = 113-version-negotiation-server
-+server2 = 113-version-negotiation-server2
- client = 113-version-negotiation-client
+-
+ [test-112]
+ ExpectedResult = InternalError
  
- [113-version-negotiation-server]
-@@ -3544,6 +4503,13 @@ MinProtocol = TLSv1.2
+@@ -3543,7 +3317,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[113-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [113-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = SSLv3
-@@ -3563,6 +4529,7 @@ ssl_conf = 114-version-negotiation-ssl
+@@ -3551,7 +3324,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [114-version-negotiation-ssl]
- server = 114-version-negotiation-server
-+server2 = 114-version-negotiation-server2
- client = 114-version-negotiation-client
+-
+ [test-113]
+ ExpectedResult = InternalError
  
- [114-version-negotiation-server]
-@@ -3572,6 +4539,13 @@ MaxProtocol = SSLv3
+@@ -3571,7 +3343,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[114-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [114-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3591,6 +4565,7 @@ ssl_conf = 115-version-negotiation-ssl
+@@ -3579,7 +3350,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [115-version-negotiation-ssl]
- server = 115-version-negotiation-server
-+server2 = 115-version-negotiation-server2
- client = 115-version-negotiation-client
+-
+ [test-114]
+ ExpectedResult = ServerFail
  
- [115-version-negotiation-server]
-@@ -3600,6 +4575,13 @@ MaxProtocol = TLSv1
+@@ -3599,7 +3369,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[115-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [115-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3620,6 +4602,7 @@ ssl_conf = 116-version-negotiation-ssl
+@@ -3607,7 +3376,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [116-version-negotiation-ssl]
- server = 116-version-negotiation-server
-+server2 = 116-version-negotiation-server2
- client = 116-version-negotiation-client
- 
- [116-version-negotiation-server]
-@@ -3629,6 +4612,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-115]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3628,7 +3396,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[116-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [116-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3649,6 +4639,7 @@ ssl_conf = 117-version-negotiation-ssl
+@@ -3636,7 +3403,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [117-version-negotiation-ssl]
- server = 117-version-negotiation-server
-+server2 = 117-version-negotiation-server2
- client = 117-version-negotiation-client
- 
- [117-version-negotiation-server]
-@@ -3658,6 +4649,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-116]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3657,7 +3423,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[117-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [117-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3678,6 +4676,7 @@ ssl_conf = 118-version-negotiation-ssl
+@@ -3665,7 +3430,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [118-version-negotiation-ssl]
- server = 118-version-negotiation-server
-+server2 = 118-version-negotiation-server2
- client = 118-version-negotiation-client
- 
- [118-version-negotiation-server]
-@@ -3686,6 +4685,12 @@ CipherString = DEFAULT
+-
+ [test-117]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3685,7 +3449,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[118-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [118-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3706,6 +4711,7 @@ ssl_conf = 119-version-negotiation-ssl
+@@ -3693,7 +3456,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [119-version-negotiation-ssl]
- server = 119-version-negotiation-server
-+server2 = 119-version-negotiation-server2
- client = 119-version-negotiation-client
- 
- [119-version-negotiation-server]
-@@ -3716,6 +4722,14 @@ MinProtocol = SSLv3
+-
+ [test-118]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3715,7 +3477,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[119-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [119-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3735,6 +4749,7 @@ ssl_conf = 120-version-negotiation-ssl
+@@ -3723,7 +3484,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [120-version-negotiation-ssl]
- server = 120-version-negotiation-server
-+server2 = 120-version-negotiation-server2
- client = 120-version-negotiation-client
+-
+ [test-119]
+ ExpectedResult = ServerFail
  
- [120-version-negotiation-server]
-@@ -3745,6 +4760,14 @@ MinProtocol = SSLv3
+@@ -3744,7 +3504,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[120-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [120-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3765,6 +4788,7 @@ ssl_conf = 121-version-negotiation-ssl
+@@ -3752,7 +3511,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [121-version-negotiation-ssl]
- server = 121-version-negotiation-server
-+server2 = 121-version-negotiation-server2
- client = 121-version-negotiation-client
- 
- [121-version-negotiation-server]
-@@ -3775,6 +4799,14 @@ MinProtocol = SSLv3
+-
+ [test-120]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3774,7 +3532,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[121-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [121-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3795,6 +4827,7 @@ ssl_conf = 122-version-negotiation-ssl
+@@ -3782,7 +3539,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [122-version-negotiation-ssl]
- server = 122-version-negotiation-server
-+server2 = 122-version-negotiation-server2
- client = 122-version-negotiation-client
- 
- [122-version-negotiation-server]
-@@ -3805,6 +4838,14 @@ MinProtocol = SSLv3
+-
+ [test-121]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3804,7 +3560,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[122-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [122-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3825,6 +4866,7 @@ ssl_conf = 123-version-negotiation-ssl
+@@ -3812,7 +3567,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [123-version-negotiation-ssl]
- server = 123-version-negotiation-server
-+server2 = 123-version-negotiation-server2
- client = 123-version-negotiation-client
- 
- [123-version-negotiation-server]
-@@ -3834,6 +4876,13 @@ MinProtocol = SSLv3
+-
+ [test-122]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3833,7 +3587,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[123-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [123-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3854,6 +4903,7 @@ ssl_conf = 124-version-negotiation-ssl
+@@ -3841,7 +3594,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [124-version-negotiation-ssl]
- server = 124-version-negotiation-server
-+server2 = 124-version-negotiation-server2
- client = 124-version-negotiation-client
- 
- [124-version-negotiation-server]
-@@ -3864,6 +4914,14 @@ MinProtocol = TLSv1
+-
+ [test-123]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3863,7 +3615,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[124-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [124-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3884,6 +4942,7 @@ ssl_conf = 125-version-negotiation-ssl
+@@ -3871,7 +3622,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [125-version-negotiation-ssl]
- server = 125-version-negotiation-server
-+server2 = 125-version-negotiation-server2
- client = 125-version-negotiation-client
- 
- [125-version-negotiation-server]
-@@ -3894,6 +4953,14 @@ MinProtocol = TLSv1
+-
+ [test-124]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3893,7 +3643,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[125-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [125-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3914,6 +4981,7 @@ ssl_conf = 126-version-negotiation-ssl
+@@ -3901,7 +3650,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [126-version-negotiation-ssl]
- server = 126-version-negotiation-server
-+server2 = 126-version-negotiation-server2
- client = 126-version-negotiation-client
- 
- [126-version-negotiation-server]
-@@ -3924,6 +4992,14 @@ MinProtocol = TLSv1
+-
+ [test-125]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3923,7 +3671,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[126-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [126-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3944,6 +5020,7 @@ ssl_conf = 127-version-negotiation-ssl
+@@ -3931,7 +3678,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [127-version-negotiation-ssl]
- server = 127-version-negotiation-server
-+server2 = 127-version-negotiation-server2
- client = 127-version-negotiation-client
- 
- [127-version-negotiation-server]
-@@ -3953,6 +5030,13 @@ MinProtocol = TLSv1
+-
+ [test-126]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3952,7 +3698,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[127-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [127-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -3971,11 +5055,20 @@ Protocol = TLSv1
- [128-version-negotiation]
- ssl_conf = 128-version-negotiation-ssl
+@@ -3960,7 +3705,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
--[128-version-negotiation-ssl]
--server = 128-version-negotiation-server
--client = 128-version-negotiation-client
-+[128-version-negotiation-ssl]
-+server = 128-version-negotiation-server
-+server2 = 128-version-negotiation-server2
-+client = 128-version-negotiation-client
-+
-+[128-version-negotiation-server]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
+-
+ [test-127]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -3982,7 +3726,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
+ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
--[128-version-negotiation-server]
-+[128-version-negotiation-server2]
- Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+-
+ [128-version-negotiation-client]
  CipherString = DEFAULT
- MaxProtocol = TLSv1.1
-@@ -4002,6 +5095,7 @@ ssl_conf = 129-version-negotiation-ssl
+ MaxProtocol = TLSv1
+@@ -3990,7 +3733,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [129-version-negotiation-ssl]
- server = 129-version-negotiation-server
-+server2 = 129-version-negotiation-server2
- client = 129-version-negotiation-client
+-
+ [test-128]
+ ExpectedResult = ServerFail
  
- [129-version-negotiation-server]
-@@ -4012,6 +5106,14 @@ MinProtocol = TLSv1.1
+@@ -4011,7 +3753,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[129-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [129-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -4031,6 +5133,7 @@ ssl_conf = 130-version-negotiation-ssl
+@@ -4019,7 +3760,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [130-version-negotiation-ssl]
- server = 130-version-negotiation-server
-+server2 = 130-version-negotiation-server2
- client = 130-version-negotiation-client
+-
+ [test-129]
+ ExpectedResult = ServerFail
  
- [130-version-negotiation-server]
-@@ -4040,6 +5143,13 @@ MinProtocol = TLSv1.1
+@@ -4039,7 +3779,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[130-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [130-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -4059,6 +5169,7 @@ ssl_conf = 131-version-negotiation-ssl
+@@ -4047,7 +3786,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [131-version-negotiation-ssl]
- server = 131-version-negotiation-server
-+server2 = 131-version-negotiation-server2
- client = 131-version-negotiation-client
+-
+ [test-130]
+ ExpectedResult = ServerFail
  
- [131-version-negotiation-server]
-@@ -4069,6 +5180,14 @@ MinProtocol = TLSv1.2
+@@ -4068,7 +3806,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[131-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [131-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -4088,6 +5207,7 @@ ssl_conf = 132-version-negotiation-ssl
+@@ -4076,7 +3813,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [132-version-negotiation-ssl]
- server = 132-version-negotiation-server
-+server2 = 132-version-negotiation-server2
- client = 132-version-negotiation-client
+-
+ [test-131]
+ ExpectedResult = ServerFail
  
- [132-version-negotiation-server]
-@@ -4097,6 +5217,13 @@ MinProtocol = TLSv1.2
+@@ -4096,7 +3832,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[132-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [132-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -4116,6 +5243,7 @@ ssl_conf = 133-version-negotiation-ssl
+@@ -4104,7 +3839,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [133-version-negotiation-ssl]
- server = 133-version-negotiation-server
-+server2 = 133-version-negotiation-server2
- client = 133-version-negotiation-client
+-
+ [test-132]
+ ExpectedResult = ServerFail
  
- [133-version-negotiation-server]
-@@ -4125,6 +5253,13 @@ MaxProtocol = SSLv3
+@@ -4124,7 +3858,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[133-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [133-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4144,6 +5279,7 @@ ssl_conf = 134-version-negotiation-ssl
+@@ -4132,7 +3865,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [134-version-negotiation-ssl]
- server = 134-version-negotiation-server
-+server2 = 134-version-negotiation-server2
- client = 134-version-negotiation-client
+-
+ [test-133]
+ ExpectedResult = ServerFail
  
- [134-version-negotiation-server]
-@@ -4153,6 +5289,13 @@ MaxProtocol = TLSv1
+@@ -4152,7 +3884,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[134-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [134-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4173,6 +5316,7 @@ ssl_conf = 135-version-negotiation-ssl
+@@ -4160,7 +3891,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [135-version-negotiation-ssl]
- server = 135-version-negotiation-server
-+server2 = 135-version-negotiation-server2
- client = 135-version-negotiation-client
- 
- [135-version-negotiation-server]
-@@ -4182,6 +5326,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-134]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -4181,7 +3911,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[135-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [135-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4202,6 +5353,7 @@ ssl_conf = 136-version-negotiation-ssl
+@@ -4189,7 +3918,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [136-version-negotiation-ssl]
- server = 136-version-negotiation-server
-+server2 = 136-version-negotiation-server2
- client = 136-version-negotiation-client
- 
- [136-version-negotiation-server]
-@@ -4211,6 +5363,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-135]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4210,7 +3938,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[136-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [136-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4231,6 +5390,7 @@ ssl_conf = 137-version-negotiation-ssl
+@@ -4218,7 +3945,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [137-version-negotiation-ssl]
- server = 137-version-negotiation-server
-+server2 = 137-version-negotiation-server2
- client = 137-version-negotiation-client
- 
- [137-version-negotiation-server]
-@@ -4239,6 +5399,12 @@ CipherString = DEFAULT
+-
+ [test-136]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4238,7 +3964,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[137-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [137-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4259,6 +5425,7 @@ ssl_conf = 138-version-negotiation-ssl
+@@ -4246,7 +3971,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [138-version-negotiation-ssl]
- server = 138-version-negotiation-server
-+server2 = 138-version-negotiation-server2
- client = 138-version-negotiation-client
- 
- [138-version-negotiation-server]
-@@ -4269,6 +5436,14 @@ MinProtocol = SSLv3
+-
+ [test-137]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4268,7 +3992,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[138-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [138-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4288,6 +5463,7 @@ ssl_conf = 139-version-negotiation-ssl
+@@ -4276,7 +3999,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [139-version-negotiation-ssl]
- server = 139-version-negotiation-server
-+server2 = 139-version-negotiation-server2
- client = 139-version-negotiation-client
+-
+ [test-138]
+ ExpectedResult = ServerFail
  
- [139-version-negotiation-server]
-@@ -4298,6 +5474,14 @@ MinProtocol = SSLv3
+@@ -4297,7 +4019,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[139-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [139-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4318,6 +5502,7 @@ ssl_conf = 140-version-negotiation-ssl
+@@ -4305,7 +4026,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [140-version-negotiation-ssl]
- server = 140-version-negotiation-server
-+server2 = 140-version-negotiation-server2
- client = 140-version-negotiation-client
- 
- [140-version-negotiation-server]
-@@ -4328,6 +5513,14 @@ MinProtocol = SSLv3
+-
+ [test-139]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -4327,7 +4047,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[140-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [140-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4348,6 +5541,7 @@ ssl_conf = 141-version-negotiation-ssl
+@@ -4335,7 +4054,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [141-version-negotiation-ssl]
- server = 141-version-negotiation-server
-+server2 = 141-version-negotiation-server2
- client = 141-version-negotiation-client
- 
- [141-version-negotiation-server]
-@@ -4358,6 +5552,14 @@ MinProtocol = SSLv3
+-
+ [test-140]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4357,7 +4075,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[141-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [141-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4378,6 +5580,7 @@ ssl_conf = 142-version-negotiation-ssl
+@@ -4365,7 +4082,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [142-version-negotiation-ssl]
- server = 142-version-negotiation-server
-+server2 = 142-version-negotiation-server2
- client = 142-version-negotiation-client
- 
- [142-version-negotiation-server]
-@@ -4387,6 +5590,13 @@ MinProtocol = SSLv3
+-
+ [test-141]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4386,7 +4102,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[142-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [142-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4407,6 +5617,7 @@ ssl_conf = 143-version-negotiation-ssl
+@@ -4394,7 +4109,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [143-version-negotiation-ssl]
- server = 143-version-negotiation-server
-+server2 = 143-version-negotiation-server2
- client = 143-version-negotiation-client
- 
- [143-version-negotiation-server]
-@@ -4417,6 +5628,14 @@ MinProtocol = TLSv1
+-
+ [test-142]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4416,7 +4130,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[143-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [143-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4437,6 +5656,7 @@ ssl_conf = 144-version-negotiation-ssl
+@@ -4424,7 +4137,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [144-version-negotiation-ssl]
- server = 144-version-negotiation-server
-+server2 = 144-version-negotiation-server2
- client = 144-version-negotiation-client
- 
- [144-version-negotiation-server]
-@@ -4447,6 +5667,14 @@ MinProtocol = TLSv1
+-
+ [test-143]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -4446,7 +4158,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[144-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [144-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4467,6 +5695,7 @@ ssl_conf = 145-version-negotiation-ssl
+@@ -4454,7 +4165,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [145-version-negotiation-ssl]
- server = 145-version-negotiation-server
-+server2 = 145-version-negotiation-server2
- client = 145-version-negotiation-client
- 
- [145-version-negotiation-server]
-@@ -4477,6 +5706,14 @@ MinProtocol = TLSv1
+-
+ [test-144]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4476,7 +4186,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[145-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [145-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4497,6 +5734,7 @@ ssl_conf = 146-version-negotiation-ssl
+@@ -4484,7 +4193,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [146-version-negotiation-ssl]
- server = 146-version-negotiation-server
-+server2 = 146-version-negotiation-server2
- client = 146-version-negotiation-client
- 
- [146-version-negotiation-server]
-@@ -4506,6 +5744,13 @@ MinProtocol = TLSv1
+-
+ [test-145]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4505,7 +4213,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[146-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [146-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4526,6 +5771,7 @@ ssl_conf = 147-version-negotiation-ssl
+@@ -4513,7 +4220,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [147-version-negotiation-ssl]
- server = 147-version-negotiation-server
-+server2 = 147-version-negotiation-server2
- client = 147-version-negotiation-client
- 
- [147-version-negotiation-server]
-@@ -4536,6 +5782,14 @@ MinProtocol = TLSv1.1
+-
+ [test-146]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4535,7 +4241,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[147-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [147-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4556,6 +5810,7 @@ ssl_conf = 148-version-negotiation-ssl
+@@ -4543,7 +4248,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [148-version-negotiation-ssl]
- server = 148-version-negotiation-server
-+server2 = 148-version-negotiation-server2
- client = 148-version-negotiation-client
- 
- [148-version-negotiation-server]
-@@ -4566,6 +5821,14 @@ MinProtocol = TLSv1.1
+-
+ [test-147]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4565,7 +4269,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[148-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [148-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4586,6 +5849,7 @@ ssl_conf = 149-version-negotiation-ssl
+@@ -4573,7 +4276,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [149-version-negotiation-ssl]
- server = 149-version-negotiation-server
-+server2 = 149-version-negotiation-server2
- client = 149-version-negotiation-client
- 
- [149-version-negotiation-server]
-@@ -4595,6 +5859,13 @@ MinProtocol = TLSv1.1
+-
+ [test-148]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4594,7 +4296,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[149-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [149-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4615,6 +5886,7 @@ ssl_conf = 150-version-negotiation-ssl
+@@ -4602,7 +4303,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [150-version-negotiation-ssl]
- server = 150-version-negotiation-server
-+server2 = 150-version-negotiation-server2
- client = 150-version-negotiation-client
- 
- [150-version-negotiation-server]
-@@ -4625,6 +5897,14 @@ MinProtocol = TLSv1.2
+-
+ [test-149]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4624,7 +4324,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[150-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [150-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4644,6 +5924,7 @@ ssl_conf = 151-version-negotiation-ssl
+@@ -4632,7 +4331,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [151-version-negotiation-ssl]
- server = 151-version-negotiation-server
-+server2 = 151-version-negotiation-server2
- client = 151-version-negotiation-client
+-
+ [test-150]
+ ExpectedResult = ServerFail
  
- [151-version-negotiation-server]
-@@ -4653,6 +5934,13 @@ MinProtocol = TLSv1.2
+@@ -4652,7 +4350,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[151-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [151-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -4672,6 +5960,7 @@ ssl_conf = 152-version-negotiation-ssl
+@@ -4660,7 +4357,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [152-version-negotiation-ssl]
- server = 152-version-negotiation-server
-+server2 = 152-version-negotiation-server2
- client = 152-version-negotiation-client
+-
+ [test-151]
+ ExpectedResult = ServerFail
  
- [152-version-negotiation-server]
-@@ -4681,6 +5970,13 @@ MaxProtocol = SSLv3
+@@ -4680,7 +4376,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[152-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [152-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4700,6 +5996,7 @@ ssl_conf = 153-version-negotiation-ssl
+@@ -4688,7 +4383,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [153-version-negotiation-ssl]
- server = 153-version-negotiation-server
-+server2 = 153-version-negotiation-server2
- client = 153-version-negotiation-client
+-
+ [test-152]
+ ExpectedResult = ServerFail
  
- [153-version-negotiation-server]
-@@ -4709,6 +6006,13 @@ MaxProtocol = TLSv1
+@@ -4708,7 +4402,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[153-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [153-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4729,6 +6033,7 @@ ssl_conf = 154-version-negotiation-ssl
+@@ -4716,7 +4409,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [154-version-negotiation-ssl]
- server = 154-version-negotiation-server
-+server2 = 154-version-negotiation-server2
- client = 154-version-negotiation-client
- 
- [154-version-negotiation-server]
-@@ -4738,6 +6043,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-153]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -4737,7 +4429,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[154-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [154-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4758,6 +6070,7 @@ ssl_conf = 155-version-negotiation-ssl
+@@ -4745,7 +4436,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [155-version-negotiation-ssl]
- server = 155-version-negotiation-server
-+server2 = 155-version-negotiation-server2
- client = 155-version-negotiation-client
- 
- [155-version-negotiation-server]
-@@ -4767,6 +6080,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-154]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4766,7 +4456,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[155-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [155-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4787,6 +6107,7 @@ ssl_conf = 156-version-negotiation-ssl
+@@ -4774,7 +4463,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [156-version-negotiation-ssl]
- server = 156-version-negotiation-server
-+server2 = 156-version-negotiation-server2
- client = 156-version-negotiation-client
- 
- [156-version-negotiation-server]
-@@ -4795,6 +6116,12 @@ CipherString = DEFAULT
+-
+ [test-155]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -4794,7 +4482,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[156-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [156-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4815,6 +6142,7 @@ ssl_conf = 157-version-negotiation-ssl
+@@ -4802,7 +4489,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [157-version-negotiation-ssl]
- server = 157-version-negotiation-server
-+server2 = 157-version-negotiation-server2
- client = 157-version-negotiation-client
- 
- [157-version-negotiation-server]
-@@ -4825,6 +6153,14 @@ MinProtocol = SSLv3
+-
+ [test-156]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -4824,7 +4510,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[157-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [157-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4844,6 +6180,7 @@ ssl_conf = 158-version-negotiation-ssl
+@@ -4832,7 +4517,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [158-version-negotiation-ssl]
- server = 158-version-negotiation-server
-+server2 = 158-version-negotiation-server2
- client = 158-version-negotiation-client
+-
+ [test-157]
+ ExpectedResult = ServerFail
  
- [158-version-negotiation-server]
-@@ -4854,6 +6191,14 @@ MinProtocol = SSLv3
+@@ -4853,7 +4537,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[158-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [158-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4874,6 +6219,7 @@ ssl_conf = 159-version-negotiation-ssl
+@@ -4861,7 +4544,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [159-version-negotiation-ssl]
- server = 159-version-negotiation-server
-+server2 = 159-version-negotiation-server2
- client = 159-version-negotiation-client
- 
- [159-version-negotiation-server]
-@@ -4884,6 +6230,14 @@ MinProtocol = SSLv3
+-
+ [test-158]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -4883,7 +4565,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[159-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [159-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4904,6 +6258,7 @@ ssl_conf = 160-version-negotiation-ssl
+@@ -4891,7 +4572,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [160-version-negotiation-ssl]
- server = 160-version-negotiation-server
-+server2 = 160-version-negotiation-server2
- client = 160-version-negotiation-client
- 
- [160-version-negotiation-server]
-@@ -4914,6 +6269,14 @@ MinProtocol = SSLv3
+-
+ [test-159]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -4913,7 +4593,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[160-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [160-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4934,6 +6297,7 @@ ssl_conf = 161-version-negotiation-ssl
+@@ -4921,7 +4600,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [161-version-negotiation-ssl]
- server = 161-version-negotiation-server
-+server2 = 161-version-negotiation-server2
- client = 161-version-negotiation-client
- 
- [161-version-negotiation-server]
-@@ -4943,6 +6307,13 @@ MinProtocol = SSLv3
+-
+ [test-160]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -4942,7 +4620,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[161-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [161-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4963,6 +6334,7 @@ ssl_conf = 162-version-negotiation-ssl
+@@ -4950,7 +4627,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [162-version-negotiation-ssl]
- server = 162-version-negotiation-server
-+server2 = 162-version-negotiation-server2
- client = 162-version-negotiation-client
- 
- [162-version-negotiation-server]
-@@ -4973,6 +6345,14 @@ MinProtocol = TLSv1
+-
+ [test-161]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -4972,7 +4648,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[162-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [162-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -4993,6 +6373,7 @@ ssl_conf = 163-version-negotiation-ssl
+@@ -4980,7 +4655,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [163-version-negotiation-ssl]
- server = 163-version-negotiation-server
-+server2 = 163-version-negotiation-server2
- client = 163-version-negotiation-client
- 
- [163-version-negotiation-server]
-@@ -5003,6 +6384,14 @@ MinProtocol = TLSv1
+-
+ [test-162]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -5002,7 +4676,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[163-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [163-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -5023,6 +6412,7 @@ ssl_conf = 164-version-negotiation-ssl
+@@ -5010,7 +4683,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [164-version-negotiation-ssl]
- server = 164-version-negotiation-server
-+server2 = 164-version-negotiation-server2
- client = 164-version-negotiation-client
- 
- [164-version-negotiation-server]
-@@ -5033,6 +6423,14 @@ MinProtocol = TLSv1
+-
+ [test-163]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -5032,7 +4704,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[164-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [164-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -5053,6 +6451,7 @@ ssl_conf = 165-version-negotiation-ssl
+@@ -5040,7 +4711,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [165-version-negotiation-ssl]
- server = 165-version-negotiation-server
-+server2 = 165-version-negotiation-server2
- client = 165-version-negotiation-client
- 
- [165-version-negotiation-server]
-@@ -5062,6 +6461,13 @@ MinProtocol = TLSv1
+-
+ [test-164]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5061,7 +4731,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[165-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [165-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -5080,11 +6486,20 @@ Protocol = TLSv1.2
- [166-version-negotiation]
- ssl_conf = 166-version-negotiation-ssl
+@@ -5069,7 +4738,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
--[166-version-negotiation-ssl]
--server = 166-version-negotiation-server
--client = 166-version-negotiation-client
-+[166-version-negotiation-ssl]
-+server = 166-version-negotiation-server
-+server2 = 166-version-negotiation-server2
-+client = 166-version-negotiation-client
-+
-+[166-version-negotiation-server]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
+-
+ [test-165]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5091,7 +4759,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
+ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
--[166-version-negotiation-server]
-+[166-version-negotiation-server2]
- Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+-
+ [166-version-negotiation-client]
  CipherString = DEFAULT
- MaxProtocol = TLSv1.1
-@@ -5112,6 +6527,7 @@ ssl_conf = 167-version-negotiation-ssl
+ MaxProtocol = TLSv1.2
+@@ -5099,7 +4766,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [167-version-negotiation-ssl]
- server = 167-version-negotiation-server
-+server2 = 167-version-negotiation-server2
- client = 167-version-negotiation-client
- 
- [167-version-negotiation-server]
-@@ -5122,6 +6538,14 @@ MinProtocol = TLSv1.1
+-
+ [test-166]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -5121,7 +4787,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[167-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [167-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -5142,6 +6566,7 @@ ssl_conf = 168-version-negotiation-ssl
+@@ -5129,7 +4794,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [168-version-negotiation-ssl]
- server = 168-version-negotiation-server
-+server2 = 168-version-negotiation-server2
- client = 168-version-negotiation-client
- 
- [168-version-negotiation-server]
-@@ -5151,6 +6576,13 @@ MinProtocol = TLSv1.1
+-
+ [test-167]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5150,7 +4814,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[168-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [168-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -5171,6 +6603,7 @@ ssl_conf = 169-version-negotiation-ssl
+@@ -5158,7 +4821,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [169-version-negotiation-ssl]
- server = 169-version-negotiation-server
-+server2 = 169-version-negotiation-server2
- client = 169-version-negotiation-client
- 
- [169-version-negotiation-server]
-@@ -5181,6 +6614,14 @@ MinProtocol = TLSv1.2
+-
+ [test-168]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5180,7 +4842,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[169-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [169-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -5201,6 +6642,7 @@ ssl_conf = 170-version-negotiation-ssl
+@@ -5188,7 +4849,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [170-version-negotiation-ssl]
- server = 170-version-negotiation-server
-+server2 = 170-version-negotiation-server2
- client = 170-version-negotiation-client
- 
- [170-version-negotiation-server]
-@@ -5210,6 +6652,13 @@ MinProtocol = TLSv1.2
+-
+ [test-169]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5209,7 +4869,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[170-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [170-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -5230,6 +6679,7 @@ ssl_conf = 171-version-negotiation-ssl
+@@ -5217,7 +4876,6 @@ MinProtocol = SSLv3
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [171-version-negotiation-ssl]
- server = 171-version-negotiation-server
-+server2 = 171-version-negotiation-server2
- client = 171-version-negotiation-client
- 
- [171-version-negotiation-server]
-@@ -5239,6 +6689,13 @@ MaxProtocol = SSLv3
+-
+ [test-170]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5238,14 +4896,12 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[171-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [171-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5257,6 +6714,7 @@ ssl_conf = 172-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [172-version-negotiation-ssl]
- server = 172-version-negotiation-server
-+server2 = 172-version-negotiation-server2
- client = 172-version-negotiation-client
+-
+ [test-171]
+ ExpectedResult = ServerFail
  
- [172-version-negotiation-server]
-@@ -5266,6 +6724,13 @@ MaxProtocol = TLSv1
+@@ -5265,14 +4921,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[172-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [172-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5285,6 +6750,7 @@ ssl_conf = 173-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [173-version-negotiation-ssl]
- server = 173-version-negotiation-server
-+server2 = 173-version-negotiation-server2
- client = 173-version-negotiation-client
- 
- [173-version-negotiation-server]
-@@ -5294,6 +6760,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-172]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -5293,14 +4947,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[173-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [173-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5313,6 +6786,7 @@ ssl_conf = 174-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [174-version-negotiation-ssl]
- server = 174-version-negotiation-server
-+server2 = 174-version-negotiation-server2
- client = 174-version-negotiation-client
- 
- [174-version-negotiation-server]
-@@ -5322,6 +6796,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-173]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -5321,14 +4973,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[174-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [174-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5341,6 +6822,7 @@ ssl_conf = 175-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [175-version-negotiation-ssl]
- server = 175-version-negotiation-server
-+server2 = 175-version-negotiation-server2
- client = 175-version-negotiation-client
- 
- [175-version-negotiation-server]
-@@ -5349,6 +6831,12 @@ CipherString = DEFAULT
+-
+ [test-174]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5348,14 +4998,12 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[175-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [175-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5368,6 +6856,7 @@ ssl_conf = 176-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [176-version-negotiation-ssl]
- server = 176-version-negotiation-server
-+server2 = 176-version-negotiation-server2
- client = 176-version-negotiation-client
- 
- [176-version-negotiation-server]
-@@ -5378,6 +6867,14 @@ MinProtocol = SSLv3
+-
+ [test-175]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5377,14 +5025,12 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[176-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [176-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5396,6 +6893,7 @@ ssl_conf = 177-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [177-version-negotiation-ssl]
- server = 177-version-negotiation-server
-+server2 = 177-version-negotiation-server2
- client = 177-version-negotiation-client
+-
+ [test-176]
+ ExpectedResult = ServerFail
  
- [177-version-negotiation-server]
-@@ -5406,6 +6904,14 @@ MinProtocol = SSLv3
+@@ -5405,14 +5051,12 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[177-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [177-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5425,6 +6931,7 @@ ssl_conf = 178-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [178-version-negotiation-ssl]
- server = 178-version-negotiation-server
-+server2 = 178-version-negotiation-server2
- client = 178-version-negotiation-client
- 
- [178-version-negotiation-server]
-@@ -5435,6 +6942,14 @@ MinProtocol = SSLv3
+-
+ [test-177]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -5434,14 +5078,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[178-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [178-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5454,6 +6969,7 @@ ssl_conf = 179-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [179-version-negotiation-ssl]
- server = 179-version-negotiation-server
-+server2 = 179-version-negotiation-server2
- client = 179-version-negotiation-client
- 
- [179-version-negotiation-server]
-@@ -5464,6 +6980,14 @@ MinProtocol = SSLv3
+-
+ [test-178]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -5463,14 +5105,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[179-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [179-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5483,6 +7007,7 @@ ssl_conf = 180-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [180-version-negotiation-ssl]
- server = 180-version-negotiation-server
-+server2 = 180-version-negotiation-server2
- client = 180-version-negotiation-client
- 
- [180-version-negotiation-server]
-@@ -5492,6 +7017,13 @@ MinProtocol = SSLv3
+-
+ [test-179]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5491,14 +5131,12 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[180-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [180-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5511,6 +7043,7 @@ ssl_conf = 181-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [181-version-negotiation-ssl]
- server = 181-version-negotiation-server
-+server2 = 181-version-negotiation-server2
- client = 181-version-negotiation-client
- 
- [181-version-negotiation-server]
-@@ -5521,6 +7054,14 @@ MinProtocol = TLSv1
+-
+ [test-180]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5520,14 +5158,12 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[181-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [181-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5540,6 +7081,7 @@ ssl_conf = 182-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [182-version-negotiation-ssl]
- server = 182-version-negotiation-server
-+server2 = 182-version-negotiation-server2
- client = 182-version-negotiation-client
- 
- [182-version-negotiation-server]
-@@ -5550,6 +7092,14 @@ MinProtocol = TLSv1
+-
+ [test-181]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -5549,14 +5185,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[182-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [182-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5569,6 +7119,7 @@ ssl_conf = 183-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [183-version-negotiation-ssl]
- server = 183-version-negotiation-server
-+server2 = 183-version-negotiation-server2
- client = 183-version-negotiation-client
- 
- [183-version-negotiation-server]
-@@ -5579,6 +7130,14 @@ MinProtocol = TLSv1
+-
+ [test-182]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -5578,14 +5212,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[183-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [183-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5598,6 +7157,7 @@ ssl_conf = 184-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [184-version-negotiation-ssl]
- server = 184-version-negotiation-server
-+server2 = 184-version-negotiation-server2
- client = 184-version-negotiation-client
- 
- [184-version-negotiation-server]
-@@ -5607,6 +7167,13 @@ MinProtocol = TLSv1
+-
+ [test-183]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5606,14 +5238,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[184-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [184-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5626,6 +7193,7 @@ ssl_conf = 185-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [185-version-negotiation-ssl]
- server = 185-version-negotiation-server
-+server2 = 185-version-negotiation-server2
- client = 185-version-negotiation-client
- 
- [185-version-negotiation-server]
-@@ -5636,6 +7204,14 @@ MinProtocol = TLSv1.1
+-
+ [test-184]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5635,14 +5265,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[185-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [185-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5655,6 +7231,7 @@ ssl_conf = 186-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [186-version-negotiation-ssl]
- server = 186-version-negotiation-server
-+server2 = 186-version-negotiation-server2
- client = 186-version-negotiation-client
- 
- [186-version-negotiation-server]
-@@ -5665,6 +7242,14 @@ MinProtocol = TLSv1.1
+-
+ [test-185]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -5664,14 +5292,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[186-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [186-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5684,6 +7269,7 @@ ssl_conf = 187-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [187-version-negotiation-ssl]
- server = 187-version-negotiation-server
-+server2 = 187-version-negotiation-server2
- client = 187-version-negotiation-client
- 
- [187-version-negotiation-server]
-@@ -5693,6 +7279,13 @@ MinProtocol = TLSv1.1
+-
+ [test-186]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5692,14 +5318,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[187-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [187-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5712,6 +7305,7 @@ ssl_conf = 188-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [188-version-negotiation-ssl]
- server = 188-version-negotiation-server
-+server2 = 188-version-negotiation-server2
- client = 188-version-negotiation-client
- 
- [188-version-negotiation-server]
-@@ -5722,6 +7316,14 @@ MinProtocol = TLSv1.2
+-
+ [test-187]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5721,14 +5345,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[188-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [188-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5741,6 +7343,7 @@ ssl_conf = 189-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [189-version-negotiation-ssl]
- server = 189-version-negotiation-server
-+server2 = 189-version-negotiation-server2
- client = 189-version-negotiation-client
- 
- [189-version-negotiation-server]
-@@ -5750,6 +7353,13 @@ MinProtocol = TLSv1.2
+-
+ [test-188]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5749,14 +5371,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[189-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [189-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = SSLv3
-@@ -5769,6 +7379,7 @@ ssl_conf = 190-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [190-version-negotiation-ssl]
- server = 190-version-negotiation-server
-+server2 = 190-version-negotiation-server2
- client = 190-version-negotiation-client
- 
- [190-version-negotiation-server]
-@@ -5778,6 +7389,13 @@ MaxProtocol = SSLv3
+-
+ [test-189]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -5777,7 +5397,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[190-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [190-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -5797,6 +7415,7 @@ ssl_conf = 191-version-negotiation-ssl
+@@ -5785,7 +5404,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [191-version-negotiation-ssl]
- server = 191-version-negotiation-server
-+server2 = 191-version-negotiation-server2
- client = 191-version-negotiation-client
+-
+ [test-190]
+ ExpectedResult = ServerFail
  
- [191-version-negotiation-server]
-@@ -5806,6 +7425,13 @@ MaxProtocol = TLSv1
+@@ -5805,7 +5423,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[191-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [191-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -5826,6 +7452,7 @@ ssl_conf = 192-version-negotiation-ssl
+@@ -5813,7 +5430,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [192-version-negotiation-ssl]
- server = 192-version-negotiation-server
-+server2 = 192-version-negotiation-server2
- client = 192-version-negotiation-client
- 
- [192-version-negotiation-server]
-@@ -5835,6 +7462,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-191]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -5834,7 +5450,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[192-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [192-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -5855,6 +7489,7 @@ ssl_conf = 193-version-negotiation-ssl
+@@ -5842,7 +5457,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [193-version-negotiation-ssl]
- server = 193-version-negotiation-server
-+server2 = 193-version-negotiation-server2
- client = 193-version-negotiation-client
- 
- [193-version-negotiation-server]
-@@ -5864,6 +7499,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-192]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -5863,7 +5477,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[193-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [193-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -5884,6 +7526,7 @@ ssl_conf = 194-version-negotiation-ssl
+@@ -5871,7 +5484,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [194-version-negotiation-ssl]
- server = 194-version-negotiation-server
-+server2 = 194-version-negotiation-server2
- client = 194-version-negotiation-client
- 
- [194-version-negotiation-server]
-@@ -5892,6 +7535,12 @@ CipherString = DEFAULT
+-
+ [test-193]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -5891,7 +5503,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[194-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [194-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -5912,6 +7561,7 @@ ssl_conf = 195-version-negotiation-ssl
+@@ -5899,7 +5510,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [195-version-negotiation-ssl]
- server = 195-version-negotiation-server
-+server2 = 195-version-negotiation-server2
- client = 195-version-negotiation-client
- 
- [195-version-negotiation-server]
-@@ -5922,6 +7572,14 @@ MinProtocol = SSLv3
+-
+ [test-194]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -5921,7 +5531,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[195-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [195-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -5941,6 +7599,7 @@ ssl_conf = 196-version-negotiation-ssl
+@@ -5929,7 +5538,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [196-version-negotiation-ssl]
- server = 196-version-negotiation-server
-+server2 = 196-version-negotiation-server2
- client = 196-version-negotiation-client
+-
+ [test-195]
+ ExpectedResult = ServerFail
  
- [196-version-negotiation-server]
-@@ -5951,6 +7610,14 @@ MinProtocol = SSLv3
+@@ -5950,7 +5558,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[196-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [196-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -5971,6 +7638,7 @@ ssl_conf = 197-version-negotiation-ssl
+@@ -5958,7 +5565,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [197-version-negotiation-ssl]
- server = 197-version-negotiation-server
-+server2 = 197-version-negotiation-server2
- client = 197-version-negotiation-client
- 
- [197-version-negotiation-server]
-@@ -5981,6 +7649,14 @@ MinProtocol = SSLv3
+-
+ [test-196]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -5980,7 +5586,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[197-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [197-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6001,6 +7677,7 @@ ssl_conf = 198-version-negotiation-ssl
+@@ -5988,7 +5593,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [198-version-negotiation-ssl]
- server = 198-version-negotiation-server
-+server2 = 198-version-negotiation-server2
- client = 198-version-negotiation-client
- 
- [198-version-negotiation-server]
-@@ -6011,6 +7688,14 @@ MinProtocol = SSLv3
+-
+ [test-197]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6010,7 +5614,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[198-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [198-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6031,6 +7716,7 @@ ssl_conf = 199-version-negotiation-ssl
+@@ -6018,7 +5621,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [199-version-negotiation-ssl]
- server = 199-version-negotiation-server
-+server2 = 199-version-negotiation-server2
- client = 199-version-negotiation-client
- 
- [199-version-negotiation-server]
-@@ -6040,6 +7726,13 @@ MinProtocol = SSLv3
+-
+ [test-198]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6039,7 +5641,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[199-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [199-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6060,6 +7753,7 @@ ssl_conf = 200-version-negotiation-ssl
+@@ -6047,7 +5648,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [200-version-negotiation-ssl]
- server = 200-version-negotiation-server
-+server2 = 200-version-negotiation-server2
- client = 200-version-negotiation-client
- 
- [200-version-negotiation-server]
-@@ -6070,6 +7764,14 @@ MinProtocol = TLSv1
+-
+ [test-199]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6069,7 +5669,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[200-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [200-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6090,6 +7792,7 @@ ssl_conf = 201-version-negotiation-ssl
+@@ -6077,7 +5676,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [201-version-negotiation-ssl]
- server = 201-version-negotiation-server
-+server2 = 201-version-negotiation-server2
- client = 201-version-negotiation-client
- 
- [201-version-negotiation-server]
-@@ -6100,6 +7803,14 @@ MinProtocol = TLSv1
+-
+ [test-200]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6099,7 +5697,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[201-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [201-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6120,6 +7831,7 @@ ssl_conf = 202-version-negotiation-ssl
+@@ -6107,7 +5704,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [202-version-negotiation-ssl]
- server = 202-version-negotiation-server
-+server2 = 202-version-negotiation-server2
- client = 202-version-negotiation-client
- 
- [202-version-negotiation-server]
-@@ -6130,6 +7842,14 @@ MinProtocol = TLSv1
+-
+ [test-201]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6129,7 +5725,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[202-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [202-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6150,6 +7870,7 @@ ssl_conf = 203-version-negotiation-ssl
+@@ -6137,7 +5732,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [203-version-negotiation-ssl]
- server = 203-version-negotiation-server
-+server2 = 203-version-negotiation-server2
- client = 203-version-negotiation-client
- 
- [203-version-negotiation-server]
-@@ -6159,6 +7880,13 @@ MinProtocol = TLSv1
+-
+ [test-202]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6158,7 +5752,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[203-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [203-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6179,6 +7907,7 @@ ssl_conf = 204-version-negotiation-ssl
+@@ -6166,7 +5759,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [204-version-negotiation-ssl]
- server = 204-version-negotiation-server
-+server2 = 204-version-negotiation-server2
- client = 204-version-negotiation-client
- 
- [204-version-negotiation-server]
-@@ -6189,6 +7918,14 @@ MinProtocol = TLSv1.1
+-
+ [test-203]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6188,7 +5780,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[204-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [204-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6208,9 +7945,18 @@ ssl_conf = 205-version-negotiation-ssl
+@@ -6196,7 +5787,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [205-version-negotiation-ssl]
- server = 205-version-negotiation-server
-+server2 = 205-version-negotiation-server2
- client = 205-version-negotiation-client
+-
+ [test-204]
+ ExpectedResult = ServerFail
  
--[205-version-negotiation-server]
-+[205-version-negotiation-server]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
-+[205-version-negotiation-server2]
- Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+@@ -6217,7 +5807,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
+ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
+ 
+-
+ [205-version-negotiation-client]
  CipherString = DEFAULT
- MaxProtocol = TLSv1.2
-@@ -6237,6 +7983,7 @@ ssl_conf = 206-version-negotiation-ssl
+ MaxProtocol = TLSv1
+@@ -6225,7 +5814,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [206-version-negotiation-ssl]
- server = 206-version-negotiation-server
-+server2 = 206-version-negotiation-server2
- client = 206-version-negotiation-client
+-
+ [test-205]
+ ExpectedResult = ServerFail
  
- [206-version-negotiation-server]
-@@ -6246,6 +7993,13 @@ MinProtocol = TLSv1.1
+@@ -6245,7 +5833,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[206-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [206-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6265,6 +8019,7 @@ ssl_conf = 207-version-negotiation-ssl
+@@ -6253,7 +5840,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [207-version-negotiation-ssl]
- server = 207-version-negotiation-server
-+server2 = 207-version-negotiation-server2
- client = 207-version-negotiation-client
+-
+ [test-206]
+ ExpectedResult = ServerFail
  
- [207-version-negotiation-server]
-@@ -6275,6 +8030,14 @@ MinProtocol = TLSv1.2
+@@ -6274,7 +5860,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[207-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [207-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6294,6 +8057,7 @@ ssl_conf = 208-version-negotiation-ssl
+@@ -6282,7 +5867,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [208-version-negotiation-ssl]
- server = 208-version-negotiation-server
-+server2 = 208-version-negotiation-server2
- client = 208-version-negotiation-client
+-
+ [test-207]
+ ExpectedResult = ServerFail
  
- [208-version-negotiation-server]
-@@ -6303,6 +8067,13 @@ MinProtocol = TLSv1.2
+@@ -6302,7 +5886,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[208-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [208-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1
-@@ -6322,6 +8093,7 @@ ssl_conf = 209-version-negotiation-ssl
+@@ -6310,7 +5893,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [209-version-negotiation-ssl]
- server = 209-version-negotiation-server
-+server2 = 209-version-negotiation-server2
- client = 209-version-negotiation-client
+-
+ [test-208]
+ ExpectedResult = ServerFail
  
- [209-version-negotiation-server]
-@@ -6331,6 +8103,13 @@ MaxProtocol = SSLv3
+@@ -6330,7 +5912,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[209-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [209-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6350,6 +8129,7 @@ ssl_conf = 210-version-negotiation-ssl
+@@ -6338,7 +5919,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [210-version-negotiation-ssl]
- server = 210-version-negotiation-server
-+server2 = 210-version-negotiation-server2
- client = 210-version-negotiation-client
+-
+ [test-209]
+ ExpectedResult = ServerFail
  
- [210-version-negotiation-server]
-@@ -6359,6 +8139,13 @@ MaxProtocol = TLSv1
+@@ -6358,7 +5938,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[210-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [210-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6379,6 +8166,7 @@ ssl_conf = 211-version-negotiation-ssl
+@@ -6366,7 +5945,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [211-version-negotiation-ssl]
- server = 211-version-negotiation-server
-+server2 = 211-version-negotiation-server2
- client = 211-version-negotiation-client
- 
- [211-version-negotiation-server]
-@@ -6388,6 +8176,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-210]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6387,7 +5965,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[211-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [211-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6408,6 +8203,7 @@ ssl_conf = 212-version-negotiation-ssl
+@@ -6395,7 +5972,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [212-version-negotiation-ssl]
- server = 212-version-negotiation-server
-+server2 = 212-version-negotiation-server2
- client = 212-version-negotiation-client
- 
- [212-version-negotiation-server]
-@@ -6417,6 +8213,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-211]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6416,7 +5992,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[212-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [212-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6437,6 +8240,7 @@ ssl_conf = 213-version-negotiation-ssl
+@@ -6424,7 +5999,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [213-version-negotiation-ssl]
- server = 213-version-negotiation-server
-+server2 = 213-version-negotiation-server2
- client = 213-version-negotiation-client
- 
- [213-version-negotiation-server]
-@@ -6445,6 +8249,12 @@ CipherString = DEFAULT
+-
+ [test-212]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6444,7 +6018,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[213-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [213-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6465,6 +8275,7 @@ ssl_conf = 214-version-negotiation-ssl
+@@ -6452,7 +6025,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [214-version-negotiation-ssl]
- server = 214-version-negotiation-server
-+server2 = 214-version-negotiation-server2
- client = 214-version-negotiation-client
- 
- [214-version-negotiation-server]
-@@ -6475,6 +8286,14 @@ MinProtocol = SSLv3
+-
+ [test-213]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6474,7 +6046,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[214-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [214-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6494,6 +8313,7 @@ ssl_conf = 215-version-negotiation-ssl
+@@ -6482,7 +6053,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [215-version-negotiation-ssl]
- server = 215-version-negotiation-server
-+server2 = 215-version-negotiation-server2
- client = 215-version-negotiation-client
+-
+ [test-214]
+ ExpectedResult = ServerFail
  
- [215-version-negotiation-server]
-@@ -6504,6 +8324,14 @@ MinProtocol = SSLv3
+@@ -6503,7 +6073,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[215-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [215-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6524,6 +8352,7 @@ ssl_conf = 216-version-negotiation-ssl
+@@ -6511,7 +6080,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [216-version-negotiation-ssl]
- server = 216-version-negotiation-server
-+server2 = 216-version-negotiation-server2
- client = 216-version-negotiation-client
- 
- [216-version-negotiation-server]
-@@ -6534,6 +8363,14 @@ MinProtocol = SSLv3
+-
+ [test-215]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6533,7 +6101,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[216-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [216-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6554,6 +8391,7 @@ ssl_conf = 217-version-negotiation-ssl
+@@ -6541,7 +6108,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [217-version-negotiation-ssl]
- server = 217-version-negotiation-server
-+server2 = 217-version-negotiation-server2
- client = 217-version-negotiation-client
- 
- [217-version-negotiation-server]
-@@ -6564,6 +8402,14 @@ MinProtocol = SSLv3
+-
+ [test-216]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6563,7 +6129,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[217-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [217-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6584,6 +8430,7 @@ ssl_conf = 218-version-negotiation-ssl
+@@ -6571,7 +6136,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [218-version-negotiation-ssl]
- server = 218-version-negotiation-server
-+server2 = 218-version-negotiation-server2
- client = 218-version-negotiation-client
- 
- [218-version-negotiation-server]
-@@ -6593,6 +8440,13 @@ MinProtocol = SSLv3
+-
+ [test-217]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6592,7 +6156,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[218-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [218-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6613,6 +8467,7 @@ ssl_conf = 219-version-negotiation-ssl
+@@ -6600,7 +6163,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [219-version-negotiation-ssl]
- server = 219-version-negotiation-server
-+server2 = 219-version-negotiation-server2
- client = 219-version-negotiation-client
- 
- [219-version-negotiation-server]
-@@ -6623,6 +8478,14 @@ MinProtocol = TLSv1
+-
+ [test-218]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6622,7 +6184,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[219-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [219-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6643,6 +8506,7 @@ ssl_conf = 220-version-negotiation-ssl
+@@ -6630,7 +6191,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [220-version-negotiation-ssl]
- server = 220-version-negotiation-server
-+server2 = 220-version-negotiation-server2
- client = 220-version-negotiation-client
- 
- [220-version-negotiation-server]
-@@ -6653,6 +8517,14 @@ MinProtocol = TLSv1
+-
+ [test-219]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6652,7 +6212,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[220-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [220-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6673,6 +8545,7 @@ ssl_conf = 221-version-negotiation-ssl
+@@ -6660,7 +6219,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [221-version-negotiation-ssl]
- server = 221-version-negotiation-server
-+server2 = 221-version-negotiation-server2
- client = 221-version-negotiation-client
- 
- [221-version-negotiation-server]
-@@ -6683,6 +8556,14 @@ MinProtocol = TLSv1
+-
+ [test-220]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6682,7 +6240,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[221-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [221-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6703,6 +8584,7 @@ ssl_conf = 222-version-negotiation-ssl
+@@ -6690,7 +6247,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [222-version-negotiation-ssl]
- server = 222-version-negotiation-server
-+server2 = 222-version-negotiation-server2
- client = 222-version-negotiation-client
- 
- [222-version-negotiation-server]
-@@ -6712,6 +8594,13 @@ MinProtocol = TLSv1
+-
+ [test-221]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6711,7 +6267,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[222-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [222-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6732,6 +8621,7 @@ ssl_conf = 223-version-negotiation-ssl
+@@ -6719,7 +6274,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [223-version-negotiation-ssl]
- server = 223-version-negotiation-server
-+server2 = 223-version-negotiation-server2
- client = 223-version-negotiation-client
- 
- [223-version-negotiation-server]
-@@ -6742,6 +8632,14 @@ MinProtocol = TLSv1.1
+-
+ [test-222]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6741,7 +6295,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[223-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [223-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6762,6 +8660,7 @@ ssl_conf = 224-version-negotiation-ssl
+@@ -6749,7 +6302,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [224-version-negotiation-ssl]
- server = 224-version-negotiation-server
-+server2 = 224-version-negotiation-server2
- client = 224-version-negotiation-client
- 
- [224-version-negotiation-server]
-@@ -6772,6 +8671,14 @@ MinProtocol = TLSv1.1
+-
+ [test-223]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6771,7 +6323,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[224-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [224-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6792,6 +8699,7 @@ ssl_conf = 225-version-negotiation-ssl
+@@ -6779,7 +6330,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [225-version-negotiation-ssl]
- server = 225-version-negotiation-server
-+server2 = 225-version-negotiation-server2
- client = 225-version-negotiation-client
- 
- [225-version-negotiation-server]
-@@ -6801,6 +8709,13 @@ MinProtocol = TLSv1.1
+-
+ [test-224]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6800,7 +6350,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[225-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [225-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6821,6 +8736,7 @@ ssl_conf = 226-version-negotiation-ssl
+@@ -6808,7 +6357,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [226-version-negotiation-ssl]
- server = 226-version-negotiation-server
-+server2 = 226-version-negotiation-server2
- client = 226-version-negotiation-client
- 
- [226-version-negotiation-server]
-@@ -6831,6 +8747,14 @@ MinProtocol = TLSv1.2
+-
+ [test-225]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6830,7 +6378,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[226-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [226-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6850,6 +8774,7 @@ ssl_conf = 227-version-negotiation-ssl
+@@ -6838,7 +6385,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [227-version-negotiation-ssl]
- server = 227-version-negotiation-server
-+server2 = 227-version-negotiation-server2
- client = 227-version-negotiation-client
+-
+ [test-226]
+ ExpectedResult = ServerFail
  
- [227-version-negotiation-server]
-@@ -6859,6 +8784,13 @@ MinProtocol = TLSv1.2
+@@ -6858,7 +6404,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[227-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [227-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -6878,6 +8810,7 @@ ssl_conf = 228-version-negotiation-ssl
+@@ -6866,7 +6411,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [228-version-negotiation-ssl]
- server = 228-version-negotiation-server
-+server2 = 228-version-negotiation-server2
- client = 228-version-negotiation-client
+-
+ [test-227]
+ ExpectedResult = ServerFail
  
- [228-version-negotiation-server]
-@@ -6887,6 +8820,13 @@ MaxProtocol = SSLv3
+@@ -6886,7 +6430,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[228-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [228-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -6906,6 +8846,7 @@ ssl_conf = 229-version-negotiation-ssl
+@@ -6894,7 +6437,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [229-version-negotiation-ssl]
- server = 229-version-negotiation-server
-+server2 = 229-version-negotiation-server2
- client = 229-version-negotiation-client
+-
+ [test-228]
+ ExpectedResult = ServerFail
  
- [229-version-negotiation-server]
-@@ -6915,6 +8856,13 @@ MaxProtocol = TLSv1
+@@ -6914,7 +6456,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[229-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [229-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -6935,6 +8883,7 @@ ssl_conf = 230-version-negotiation-ssl
+@@ -6922,7 +6463,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [230-version-negotiation-ssl]
- server = 230-version-negotiation-server
-+server2 = 230-version-negotiation-server2
- client = 230-version-negotiation-client
- 
- [230-version-negotiation-server]
-@@ -6944,6 +8893,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-229]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -6943,7 +6483,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[230-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [230-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -6964,6 +8920,7 @@ ssl_conf = 231-version-negotiation-ssl
+@@ -6951,7 +6490,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [231-version-negotiation-ssl]
- server = 231-version-negotiation-server
-+server2 = 231-version-negotiation-server2
- client = 231-version-negotiation-client
- 
- [231-version-negotiation-server]
-@@ -6973,6 +8930,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-230]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -6972,7 +6510,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[231-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [231-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -6993,6 +8957,7 @@ ssl_conf = 232-version-negotiation-ssl
+@@ -6980,7 +6517,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [232-version-negotiation-ssl]
- server = 232-version-negotiation-server
-+server2 = 232-version-negotiation-server2
- client = 232-version-negotiation-client
- 
- [232-version-negotiation-server]
-@@ -7001,6 +8966,12 @@ CipherString = DEFAULT
+-
+ [test-231]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7000,7 +6536,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[232-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [232-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7021,6 +8992,7 @@ ssl_conf = 233-version-negotiation-ssl
+@@ -7008,7 +6543,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [233-version-negotiation-ssl]
- server = 233-version-negotiation-server
-+server2 = 233-version-negotiation-server2
- client = 233-version-negotiation-client
- 
- [233-version-negotiation-server]
-@@ -7031,6 +9003,14 @@ MinProtocol = SSLv3
+-
+ [test-232]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7030,7 +6564,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[233-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [233-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7050,6 +9030,7 @@ ssl_conf = 234-version-negotiation-ssl
+@@ -7038,7 +6571,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [234-version-negotiation-ssl]
- server = 234-version-negotiation-server
-+server2 = 234-version-negotiation-server2
- client = 234-version-negotiation-client
+-
+ [test-233]
+ ExpectedResult = ServerFail
  
- [234-version-negotiation-server]
-@@ -7060,6 +9041,14 @@ MinProtocol = SSLv3
+@@ -7059,7 +6591,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[234-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [234-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7080,6 +9069,7 @@ ssl_conf = 235-version-negotiation-ssl
+@@ -7067,7 +6598,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [235-version-negotiation-ssl]
- server = 235-version-negotiation-server
-+server2 = 235-version-negotiation-server2
- client = 235-version-negotiation-client
- 
- [235-version-negotiation-server]
-@@ -7090,6 +9080,14 @@ MinProtocol = SSLv3
+-
+ [test-234]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -7089,7 +6619,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[235-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [235-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7110,6 +9108,7 @@ ssl_conf = 236-version-negotiation-ssl
+@@ -7097,7 +6626,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [236-version-negotiation-ssl]
- server = 236-version-negotiation-server
-+server2 = 236-version-negotiation-server2
- client = 236-version-negotiation-client
- 
- [236-version-negotiation-server]
-@@ -7120,6 +9119,14 @@ MinProtocol = SSLv3
+-
+ [test-235]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -7119,7 +6647,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[236-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [236-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7140,6 +9147,7 @@ ssl_conf = 237-version-negotiation-ssl
+@@ -7127,7 +6654,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [237-version-negotiation-ssl]
- server = 237-version-negotiation-server
-+server2 = 237-version-negotiation-server2
- client = 237-version-negotiation-client
- 
- [237-version-negotiation-server]
-@@ -7149,6 +9157,13 @@ MinProtocol = SSLv3
+-
+ [test-236]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7148,7 +6674,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[237-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [237-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7169,6 +9184,7 @@ ssl_conf = 238-version-negotiation-ssl
+@@ -7156,7 +6681,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [238-version-negotiation-ssl]
- server = 238-version-negotiation-server
-+server2 = 238-version-negotiation-server2
- client = 238-version-negotiation-client
- 
- [238-version-negotiation-server]
-@@ -7179,6 +9195,14 @@ MinProtocol = TLSv1
+-
+ [test-237]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7178,7 +6702,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[238-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [238-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7199,6 +9223,7 @@ ssl_conf = 239-version-negotiation-ssl
+@@ -7186,7 +6709,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [239-version-negotiation-ssl]
- server = 239-version-negotiation-server
-+server2 = 239-version-negotiation-server2
- client = 239-version-negotiation-client
- 
- [239-version-negotiation-server]
-@@ -7209,6 +9234,14 @@ MinProtocol = TLSv1
+-
+ [test-238]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -7208,7 +6730,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[239-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [239-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7229,6 +9262,7 @@ ssl_conf = 240-version-negotiation-ssl
+@@ -7216,7 +6737,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [240-version-negotiation-ssl]
- server = 240-version-negotiation-server
-+server2 = 240-version-negotiation-server2
- client = 240-version-negotiation-client
- 
- [240-version-negotiation-server]
-@@ -7239,6 +9273,14 @@ MinProtocol = TLSv1
+-
+ [test-239]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -7238,7 +6758,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[240-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [240-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7259,6 +9301,7 @@ ssl_conf = 241-version-negotiation-ssl
+@@ -7246,7 +6765,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [241-version-negotiation-ssl]
- server = 241-version-negotiation-server
-+server2 = 241-version-negotiation-server2
- client = 241-version-negotiation-client
- 
- [241-version-negotiation-server]
-@@ -7268,6 +9311,13 @@ MinProtocol = TLSv1
+-
+ [test-240]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7267,7 +6785,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[241-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [241-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7288,6 +9338,7 @@ ssl_conf = 242-version-negotiation-ssl
+@@ -7275,7 +6792,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [242-version-negotiation-ssl]
- server = 242-version-negotiation-server
-+server2 = 242-version-negotiation-server2
- client = 242-version-negotiation-client
- 
- [242-version-negotiation-server]
-@@ -7298,6 +9349,14 @@ MinProtocol = TLSv1.1
+-
+ [test-241]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7297,7 +6813,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[242-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [242-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7318,6 +9377,7 @@ ssl_conf = 243-version-negotiation-ssl
+@@ -7305,7 +6820,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [243-version-negotiation-ssl]
- server = 243-version-negotiation-server
-+server2 = 243-version-negotiation-server2
- client = 243-version-negotiation-client
- 
- [243-version-negotiation-server]
-@@ -7328,6 +9388,14 @@ MinProtocol = TLSv1.1
+-
+ [test-242]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -7327,7 +6841,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[243-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [243-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7348,9 +9416,17 @@ ssl_conf = 244-version-negotiation-ssl
+@@ -7335,7 +6848,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [244-version-negotiation-ssl]
- server = 244-version-negotiation-server
-+server2 = 244-version-negotiation-server2
- client = 244-version-negotiation-client
+-
+ [test-243]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7356,7 +6868,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
+ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
--[244-version-negotiation-server]
-+[244-version-negotiation-server]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
-+[244-version-negotiation-server2]
- Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+-
+ [244-version-negotiation-client]
  CipherString = DEFAULT
- MinProtocol = TLSv1.1
-@@ -7377,6 +9453,7 @@ ssl_conf = 245-version-negotiation-ssl
+ MaxProtocol = TLSv1.2
+@@ -7364,7 +6875,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [245-version-negotiation-ssl]
- server = 245-version-negotiation-server
-+server2 = 245-version-negotiation-server2
- client = 245-version-negotiation-client
- 
- [245-version-negotiation-server]
-@@ -7387,6 +9464,14 @@ MinProtocol = TLSv1.2
+-
+ [test-244]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7386,7 +6896,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[245-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [245-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7407,6 +9492,7 @@ ssl_conf = 246-version-negotiation-ssl
+@@ -7394,7 +6903,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [246-version-negotiation-ssl]
- server = 246-version-negotiation-server
-+server2 = 246-version-negotiation-server2
- client = 246-version-negotiation-client
- 
- [246-version-negotiation-server]
-@@ -7416,6 +9502,13 @@ MinProtocol = TLSv1.2
+-
+ [test-245]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7415,7 +6923,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[246-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [246-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -7436,6 +9529,7 @@ ssl_conf = 247-version-negotiation-ssl
+@@ -7423,7 +6930,6 @@ MinProtocol = TLSv1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [247-version-negotiation-ssl]
- server = 247-version-negotiation-server
-+server2 = 247-version-negotiation-server2
- client = 247-version-negotiation-client
- 
- [247-version-negotiation-server]
-@@ -7445,6 +9539,13 @@ MaxProtocol = SSLv3
+-
+ [test-246]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7444,14 +6950,12 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[247-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [247-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7463,6 +9564,7 @@ ssl_conf = 248-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [248-version-negotiation-ssl]
- server = 248-version-negotiation-server
-+server2 = 248-version-negotiation-server2
- client = 248-version-negotiation-client
+-
+ [test-247]
+ ExpectedResult = ServerFail
  
- [248-version-negotiation-server]
-@@ -7472,6 +9574,13 @@ MaxProtocol = TLSv1
+@@ -7471,14 +6975,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[248-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [248-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7491,6 +9600,7 @@ ssl_conf = 249-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [249-version-negotiation-ssl]
- server = 249-version-negotiation-server
-+server2 = 249-version-negotiation-server2
- client = 249-version-negotiation-client
- 
- [249-version-negotiation-server]
-@@ -7500,6 +9610,13 @@ MaxProtocol = TLSv1.1
+-
+ [test-248]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -7499,14 +7001,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[249-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [249-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7519,6 +9636,7 @@ ssl_conf = 250-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [250-version-negotiation-ssl]
- server = 250-version-negotiation-server
-+server2 = 250-version-negotiation-server2
- client = 250-version-negotiation-client
- 
- [250-version-negotiation-server]
-@@ -7528,6 +9646,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-249]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -7527,14 +7027,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[250-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [250-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7547,6 +9672,7 @@ ssl_conf = 251-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [251-version-negotiation-ssl]
- server = 251-version-negotiation-server
-+server2 = 251-version-negotiation-server2
- client = 251-version-negotiation-client
- 
- [251-version-negotiation-server]
-@@ -7555,6 +9681,12 @@ CipherString = DEFAULT
+-
+ [test-250]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7554,14 +7052,12 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[251-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [251-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7574,6 +9706,7 @@ ssl_conf = 252-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [252-version-negotiation-ssl]
- server = 252-version-negotiation-server
-+server2 = 252-version-negotiation-server2
- client = 252-version-negotiation-client
- 
- [252-version-negotiation-server]
-@@ -7584,6 +9717,14 @@ MinProtocol = SSLv3
+-
+ [test-251]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7583,14 +7079,12 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[252-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [252-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7602,6 +9743,7 @@ ssl_conf = 253-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [253-version-negotiation-ssl]
- server = 253-version-negotiation-server
-+server2 = 253-version-negotiation-server2
- client = 253-version-negotiation-client
+-
+ [test-252]
+ ExpectedResult = ServerFail
  
- [253-version-negotiation-server]
-@@ -7612,6 +9754,14 @@ MinProtocol = SSLv3
+@@ -7611,14 +7105,12 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[253-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [253-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7631,6 +9781,7 @@ ssl_conf = 254-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [254-version-negotiation-ssl]
- server = 254-version-negotiation-server
-+server2 = 254-version-negotiation-server2
- client = 254-version-negotiation-client
- 
- [254-version-negotiation-server]
-@@ -7641,6 +9792,14 @@ MinProtocol = SSLv3
+-
+ [test-253]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -7640,14 +7132,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[254-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [254-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7660,6 +9819,7 @@ ssl_conf = 255-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [255-version-negotiation-ssl]
- server = 255-version-negotiation-server
-+server2 = 255-version-negotiation-server2
- client = 255-version-negotiation-client
- 
- [255-version-negotiation-server]
-@@ -7670,6 +9830,14 @@ MinProtocol = SSLv3
+-
+ [test-254]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -7669,14 +7159,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[255-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [255-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7689,6 +9857,7 @@ ssl_conf = 256-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [256-version-negotiation-ssl]
- server = 256-version-negotiation-server
-+server2 = 256-version-negotiation-server2
- client = 256-version-negotiation-client
- 
- [256-version-negotiation-server]
-@@ -7698,6 +9867,13 @@ MinProtocol = SSLv3
+-
+ [test-255]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7697,14 +7185,12 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[256-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [256-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7717,6 +9893,7 @@ ssl_conf = 257-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [257-version-negotiation-ssl]
- server = 257-version-negotiation-server
-+server2 = 257-version-negotiation-server2
- client = 257-version-negotiation-client
- 
- [257-version-negotiation-server]
-@@ -7727,6 +9904,14 @@ MinProtocol = TLSv1
+-
+ [test-256]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7726,14 +7212,12 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[257-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [257-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7746,6 +9931,7 @@ ssl_conf = 258-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [258-version-negotiation-ssl]
- server = 258-version-negotiation-server
-+server2 = 258-version-negotiation-server2
- client = 258-version-negotiation-client
- 
- [258-version-negotiation-server]
-@@ -7756,6 +9942,14 @@ MinProtocol = TLSv1
+-
+ [test-257]
+ ExpectedResult = Success
+ Protocol = TLSv1
+@@ -7755,14 +7239,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[258-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [258-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7775,6 +9969,7 @@ ssl_conf = 259-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [259-version-negotiation-ssl]
- server = 259-version-negotiation-server
-+server2 = 259-version-negotiation-server2
- client = 259-version-negotiation-client
- 
- [259-version-negotiation-server]
-@@ -7785,6 +9980,14 @@ MinProtocol = TLSv1
+-
+ [test-258]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -7784,14 +7266,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[259-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [259-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7804,6 +10007,7 @@ ssl_conf = 260-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [260-version-negotiation-ssl]
- server = 260-version-negotiation-server
-+server2 = 260-version-negotiation-server2
- client = 260-version-negotiation-client
- 
- [260-version-negotiation-server]
-@@ -7813,6 +10017,13 @@ MinProtocol = TLSv1
+-
+ [test-259]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7812,14 +7292,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[260-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [260-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7832,6 +10043,7 @@ ssl_conf = 261-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [261-version-negotiation-ssl]
- server = 261-version-negotiation-server
-+server2 = 261-version-negotiation-server2
- client = 261-version-negotiation-client
- 
- [261-version-negotiation-server]
-@@ -7842,6 +10054,14 @@ MinProtocol = TLSv1.1
+-
+ [test-260]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7841,14 +7319,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[261-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [261-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7861,6 +10081,7 @@ ssl_conf = 262-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [262-version-negotiation-ssl]
- server = 262-version-negotiation-server
-+server2 = 262-version-negotiation-server2
- client = 262-version-negotiation-client
- 
- [262-version-negotiation-server]
-@@ -7871,6 +10092,14 @@ MinProtocol = TLSv1.1
+-
+ [test-261]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -7870,14 +7346,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[262-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [262-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7890,6 +10119,7 @@ ssl_conf = 263-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [263-version-negotiation-ssl]
- server = 263-version-negotiation-server
-+server2 = 263-version-negotiation-server2
- client = 263-version-negotiation-client
- 
- [263-version-negotiation-server]
-@@ -7899,6 +10129,13 @@ MinProtocol = TLSv1.1
+-
+ [test-262]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7898,14 +7372,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[263-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [263-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7918,6 +10155,7 @@ ssl_conf = 264-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [264-version-negotiation-ssl]
- server = 264-version-negotiation-server
-+server2 = 264-version-negotiation-server2
- client = 264-version-negotiation-client
- 
- [264-version-negotiation-server]
-@@ -7928,6 +10166,14 @@ MinProtocol = TLSv1.2
+-
+ [test-263]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7927,14 +7399,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[264-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [264-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7947,6 +10193,7 @@ ssl_conf = 265-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [265-version-negotiation-ssl]
- server = 265-version-negotiation-server
-+server2 = 265-version-negotiation-server2
- client = 265-version-negotiation-client
- 
- [265-version-negotiation-server]
-@@ -7956,6 +10203,13 @@ MinProtocol = TLSv1.2
+-
+ [test-264]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7955,14 +7425,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[265-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [265-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1
-@@ -7975,6 +10229,7 @@ ssl_conf = 266-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [266-version-negotiation-ssl]
- server = 266-version-negotiation-server
-+server2 = 266-version-negotiation-server2
- client = 266-version-negotiation-client
- 
- [266-version-negotiation-server]
-@@ -7984,6 +10239,13 @@ MaxProtocol = SSLv3
+-
+ [test-265]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -7983,7 +7451,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[266-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [266-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8003,6 +10265,7 @@ ssl_conf = 267-version-negotiation-ssl
+@@ -7991,7 +7458,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [267-version-negotiation-ssl]
- server = 267-version-negotiation-server
-+server2 = 267-version-negotiation-server2
- client = 267-version-negotiation-client
+-
+ [test-266]
+ ExpectedResult = ServerFail
  
- [267-version-negotiation-server]
-@@ -8012,6 +10275,13 @@ MaxProtocol = TLSv1
+@@ -8011,7 +7477,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[267-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [267-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8031,6 +10301,7 @@ ssl_conf = 268-version-negotiation-ssl
+@@ -8019,7 +7484,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [268-version-negotiation-ssl]
- server = 268-version-negotiation-server
-+server2 = 268-version-negotiation-server2
- client = 268-version-negotiation-client
+-
+ [test-267]
+ ExpectedResult = ClientFail
  
- [268-version-negotiation-server]
-@@ -8040,6 +10311,13 @@ MaxProtocol = TLSv1.1
+@@ -8039,7 +7503,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[268-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [268-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8060,6 +10338,7 @@ ssl_conf = 269-version-negotiation-ssl
+@@ -8047,7 +7510,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [269-version-negotiation-ssl]
- server = 269-version-negotiation-server
-+server2 = 269-version-negotiation-server2
- client = 269-version-negotiation-client
- 
- [269-version-negotiation-server]
-@@ -8069,6 +10348,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-268]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8068,7 +7530,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[269-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [269-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8089,6 +10375,7 @@ ssl_conf = 270-version-negotiation-ssl
+@@ -8076,7 +7537,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [270-version-negotiation-ssl]
- server = 270-version-negotiation-server
-+server2 = 270-version-negotiation-server2
- client = 270-version-negotiation-client
- 
- [270-version-negotiation-server]
-@@ -8097,6 +10384,12 @@ CipherString = DEFAULT
+-
+ [test-269]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8096,7 +7556,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[270-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [270-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8117,6 +10410,7 @@ ssl_conf = 271-version-negotiation-ssl
+@@ -8104,7 +7563,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [271-version-negotiation-ssl]
- server = 271-version-negotiation-server
-+server2 = 271-version-negotiation-server2
- client = 271-version-negotiation-client
- 
- [271-version-negotiation-server]
-@@ -8127,6 +10421,14 @@ MinProtocol = SSLv3
+-
+ [test-270]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8126,7 +7584,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[271-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [271-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8146,6 +10448,7 @@ ssl_conf = 272-version-negotiation-ssl
+@@ -8134,7 +7591,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [272-version-negotiation-ssl]
- server = 272-version-negotiation-server
-+server2 = 272-version-negotiation-server2
- client = 272-version-negotiation-client
+-
+ [test-271]
+ ExpectedResult = ServerFail
  
- [272-version-negotiation-server]
-@@ -8156,6 +10459,14 @@ MinProtocol = SSLv3
+@@ -8155,7 +7611,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[272-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [272-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8175,6 +10486,7 @@ ssl_conf = 273-version-negotiation-ssl
+@@ -8163,7 +7618,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [273-version-negotiation-ssl]
- server = 273-version-negotiation-server
-+server2 = 273-version-negotiation-server2
- client = 273-version-negotiation-client
+-
+ [test-272]
+ ExpectedResult = ClientFail
  
- [273-version-negotiation-server]
-@@ -8185,6 +10497,14 @@ MinProtocol = SSLv3
+@@ -8184,7 +7638,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[273-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [273-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8205,6 +10525,7 @@ ssl_conf = 274-version-negotiation-ssl
+@@ -8192,7 +7645,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [274-version-negotiation-ssl]
- server = 274-version-negotiation-server
-+server2 = 274-version-negotiation-server2
- client = 274-version-negotiation-client
- 
- [274-version-negotiation-server]
-@@ -8215,6 +10536,14 @@ MinProtocol = SSLv3
+-
+ [test-273]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8214,7 +7666,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[274-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [274-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8235,6 +10564,7 @@ ssl_conf = 275-version-negotiation-ssl
+@@ -8222,7 +7673,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [275-version-negotiation-ssl]
- server = 275-version-negotiation-server
-+server2 = 275-version-negotiation-server2
- client = 275-version-negotiation-client
- 
- [275-version-negotiation-server]
-@@ -8244,6 +10574,13 @@ MinProtocol = SSLv3
+-
+ [test-274]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8243,7 +7693,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[275-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [275-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8264,6 +10601,7 @@ ssl_conf = 276-version-negotiation-ssl
+@@ -8251,7 +7700,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [276-version-negotiation-ssl]
- server = 276-version-negotiation-server
-+server2 = 276-version-negotiation-server2
- client = 276-version-negotiation-client
- 
- [276-version-negotiation-server]
-@@ -8274,6 +10612,14 @@ MinProtocol = TLSv1
+-
+ [test-275]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8273,7 +7721,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[276-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [276-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8293,6 +10639,7 @@ ssl_conf = 277-version-negotiation-ssl
+@@ -8281,7 +7728,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [277-version-negotiation-ssl]
- server = 277-version-negotiation-server
-+server2 = 277-version-negotiation-server2
- client = 277-version-negotiation-client
+-
+ [test-276]
+ ExpectedResult = ClientFail
  
- [277-version-negotiation-server]
-@@ -8303,6 +10650,14 @@ MinProtocol = TLSv1
+@@ -8302,7 +7748,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[277-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [277-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8323,6 +10678,7 @@ ssl_conf = 278-version-negotiation-ssl
+@@ -8310,7 +7755,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [278-version-negotiation-ssl]
- server = 278-version-negotiation-server
-+server2 = 278-version-negotiation-server2
- client = 278-version-negotiation-client
- 
- [278-version-negotiation-server]
-@@ -8333,6 +10689,14 @@ MinProtocol = TLSv1
+-
+ [test-277]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8332,7 +7776,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[278-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [278-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8353,6 +10717,7 @@ ssl_conf = 279-version-negotiation-ssl
+@@ -8340,7 +7783,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [279-version-negotiation-ssl]
- server = 279-version-negotiation-server
-+server2 = 279-version-negotiation-server2
- client = 279-version-negotiation-client
- 
- [279-version-negotiation-server]
-@@ -8362,6 +10727,13 @@ MinProtocol = TLSv1
+-
+ [test-278]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8361,7 +7803,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[279-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [279-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8382,6 +10754,7 @@ ssl_conf = 280-version-negotiation-ssl
+@@ -8369,7 +7810,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [280-version-negotiation-ssl]
- server = 280-version-negotiation-server
-+server2 = 280-version-negotiation-server2
- client = 280-version-negotiation-client
- 
- [280-version-negotiation-server]
-@@ -8392,6 +10765,14 @@ MinProtocol = TLSv1.1
+-
+ [test-279]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8391,7 +7831,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[280-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [280-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8412,6 +10793,7 @@ ssl_conf = 281-version-negotiation-ssl
+@@ -8399,7 +7838,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [281-version-negotiation-ssl]
- server = 281-version-negotiation-server
-+server2 = 281-version-negotiation-server2
- client = 281-version-negotiation-client
- 
- [281-version-negotiation-server]
-@@ -8422,6 +10804,14 @@ MinProtocol = TLSv1.1
+-
+ [test-280]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8421,7 +7859,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[281-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [281-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8442,6 +10832,7 @@ ssl_conf = 282-version-negotiation-ssl
+@@ -8429,7 +7866,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [282-version-negotiation-ssl]
- server = 282-version-negotiation-server
-+server2 = 282-version-negotiation-server2
- client = 282-version-negotiation-client
- 
- [282-version-negotiation-server]
-@@ -8451,6 +10842,13 @@ MinProtocol = TLSv1.1
+-
+ [test-281]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8450,7 +7886,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[282-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [282-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8469,11 +10867,20 @@ Protocol = TLSv1.1
- [283-version-negotiation]
- ssl_conf = 283-version-negotiation-ssl
+@@ -8458,7 +7893,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
--[283-version-negotiation-ssl]
--server = 283-version-negotiation-server
--client = 283-version-negotiation-client
-+[283-version-negotiation-ssl]
-+server = 283-version-negotiation-server
-+server2 = 283-version-negotiation-server2
-+client = 283-version-negotiation-client
-+
-+[283-version-negotiation-server]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
+-
+ [test-282]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8480,7 +7914,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
+ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
--[283-version-negotiation-server]
-+[283-version-negotiation-server2]
- Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+-
+ [283-version-negotiation-client]
  CipherString = DEFAULT
- MaxProtocol = TLSv1.2
-@@ -8500,6 +10907,7 @@ ssl_conf = 284-version-negotiation-ssl
+ MaxProtocol = TLSv1.1
+@@ -8488,7 +7921,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [284-version-negotiation-ssl]
- server = 284-version-negotiation-server
-+server2 = 284-version-negotiation-server2
- client = 284-version-negotiation-client
+-
+ [test-283]
+ ExpectedResult = ServerFail
  
- [284-version-negotiation-server]
-@@ -8509,6 +10917,13 @@ MinProtocol = TLSv1.2
+@@ -8508,7 +7940,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[284-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [284-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.1
-@@ -8528,6 +10943,7 @@ ssl_conf = 285-version-negotiation-ssl
+@@ -8516,7 +7947,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [285-version-negotiation-ssl]
- server = 285-version-negotiation-server
-+server2 = 285-version-negotiation-server2
- client = 285-version-negotiation-client
+-
+ [test-284]
+ ExpectedResult = ServerFail
  
- [285-version-negotiation-server]
-@@ -8537,6 +10953,13 @@ MaxProtocol = SSLv3
+@@ -8536,7 +7966,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[285-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [285-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8556,6 +10979,7 @@ ssl_conf = 286-version-negotiation-ssl
+@@ -8544,7 +7973,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [286-version-negotiation-ssl]
- server = 286-version-negotiation-server
-+server2 = 286-version-negotiation-server2
- client = 286-version-negotiation-client
+-
+ [test-285]
+ ExpectedResult = ServerFail
  
- [286-version-negotiation-server]
-@@ -8565,6 +10989,13 @@ MaxProtocol = TLSv1
+@@ -8564,7 +7992,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[286-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [286-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8584,6 +11015,7 @@ ssl_conf = 287-version-negotiation-ssl
+@@ -8572,7 +7999,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [287-version-negotiation-ssl]
- server = 287-version-negotiation-server
-+server2 = 287-version-negotiation-server2
- client = 287-version-negotiation-client
+-
+ [test-286]
+ ExpectedResult = ClientFail
  
- [287-version-negotiation-server]
-@@ -8593,6 +11025,13 @@ MaxProtocol = TLSv1.1
+@@ -8592,7 +8018,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[287-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [287-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8613,6 +11052,7 @@ ssl_conf = 288-version-negotiation-ssl
+@@ -8600,7 +8025,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [288-version-negotiation-ssl]
- server = 288-version-negotiation-server
-+server2 = 288-version-negotiation-server2
- client = 288-version-negotiation-client
- 
- [288-version-negotiation-server]
-@@ -8622,6 +11062,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-287]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8621,7 +8045,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[288-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [288-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8642,6 +11089,7 @@ ssl_conf = 289-version-negotiation-ssl
+@@ -8629,7 +8052,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [289-version-negotiation-ssl]
- server = 289-version-negotiation-server
-+server2 = 289-version-negotiation-server2
- client = 289-version-negotiation-client
- 
- [289-version-negotiation-server]
-@@ -8650,6 +11098,12 @@ CipherString = DEFAULT
+-
+ [test-288]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -8649,7 +8071,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[289-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [289-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8670,6 +11124,7 @@ ssl_conf = 290-version-negotiation-ssl
+@@ -8657,7 +8078,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [290-version-negotiation-ssl]
- server = 290-version-negotiation-server
-+server2 = 290-version-negotiation-server2
- client = 290-version-negotiation-client
- 
- [290-version-negotiation-server]
-@@ -8680,6 +11135,14 @@ MinProtocol = SSLv3
+-
+ [test-289]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -8679,7 +8099,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[290-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [290-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8699,6 +11162,7 @@ ssl_conf = 291-version-negotiation-ssl
+@@ -8687,7 +8106,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [291-version-negotiation-ssl]
- server = 291-version-negotiation-server
-+server2 = 291-version-negotiation-server2
- client = 291-version-negotiation-client
+-
+ [test-290]
+ ExpectedResult = ServerFail
  
- [291-version-negotiation-server]
-@@ -8709,6 +11173,14 @@ MinProtocol = SSLv3
+@@ -8708,7 +8126,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[291-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [291-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8728,6 +11200,7 @@ ssl_conf = 292-version-negotiation-ssl
+@@ -8716,7 +8133,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [292-version-negotiation-ssl]
- server = 292-version-negotiation-server
-+server2 = 292-version-negotiation-server2
- client = 292-version-negotiation-client
+-
+ [test-291]
+ ExpectedResult = ClientFail
  
- [292-version-negotiation-server]
-@@ -8738,6 +11211,14 @@ MinProtocol = SSLv3
+@@ -8737,7 +8153,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[292-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [292-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8758,6 +11239,7 @@ ssl_conf = 293-version-negotiation-ssl
+@@ -8745,7 +8160,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [293-version-negotiation-ssl]
- server = 293-version-negotiation-server
-+server2 = 293-version-negotiation-server2
- client = 293-version-negotiation-client
- 
- [293-version-negotiation-server]
-@@ -8768,6 +11250,14 @@ MinProtocol = SSLv3
+-
+ [test-292]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8767,7 +8181,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[293-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [293-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8788,6 +11278,7 @@ ssl_conf = 294-version-negotiation-ssl
+@@ -8775,7 +8188,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [294-version-negotiation-ssl]
- server = 294-version-negotiation-server
-+server2 = 294-version-negotiation-server2
- client = 294-version-negotiation-client
- 
- [294-version-negotiation-server]
-@@ -8797,6 +11288,13 @@ MinProtocol = SSLv3
+-
+ [test-293]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -8796,7 +8208,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[294-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [294-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8817,6 +11315,7 @@ ssl_conf = 295-version-negotiation-ssl
+@@ -8804,7 +8215,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [295-version-negotiation-ssl]
- server = 295-version-negotiation-server
-+server2 = 295-version-negotiation-server2
- client = 295-version-negotiation-client
- 
- [295-version-negotiation-server]
-@@ -8827,6 +11326,14 @@ MinProtocol = TLSv1
+-
+ [test-294]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -8826,7 +8236,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[295-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [295-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8846,6 +11353,7 @@ ssl_conf = 296-version-negotiation-ssl
+@@ -8834,7 +8243,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [296-version-negotiation-ssl]
- server = 296-version-negotiation-server
-+server2 = 296-version-negotiation-server2
- client = 296-version-negotiation-client
+-
+ [test-295]
+ ExpectedResult = ClientFail
  
- [296-version-negotiation-server]
-@@ -8856,6 +11364,14 @@ MinProtocol = TLSv1
+@@ -8855,7 +8263,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[296-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [296-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8876,6 +11392,7 @@ ssl_conf = 297-version-negotiation-ssl
+@@ -8863,7 +8270,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [297-version-negotiation-ssl]
- server = 297-version-negotiation-server
-+server2 = 297-version-negotiation-server2
- client = 297-version-negotiation-client
- 
- [297-version-negotiation-server]
-@@ -8886,6 +11403,14 @@ MinProtocol = TLSv1
+-
+ [test-296]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8885,7 +8291,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[297-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [297-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8906,6 +11431,7 @@ ssl_conf = 298-version-negotiation-ssl
+@@ -8893,7 +8298,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [298-version-negotiation-ssl]
- server = 298-version-negotiation-server
-+server2 = 298-version-negotiation-server2
- client = 298-version-negotiation-client
- 
- [298-version-negotiation-server]
-@@ -8915,6 +11441,13 @@ MinProtocol = TLSv1
+-
+ [test-297]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -8914,7 +8318,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[298-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [298-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8935,6 +11468,7 @@ ssl_conf = 299-version-negotiation-ssl
+@@ -8922,7 +8325,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [299-version-negotiation-ssl]
- server = 299-version-negotiation-server
-+server2 = 299-version-negotiation-server2
- client = 299-version-negotiation-client
- 
- [299-version-negotiation-server]
-@@ -8945,6 +11479,14 @@ MinProtocol = TLSv1.1
+-
+ [test-298]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -8944,7 +8346,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[299-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [299-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8965,6 +11507,7 @@ ssl_conf = 300-version-negotiation-ssl
+@@ -8952,7 +8353,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [300-version-negotiation-ssl]
- server = 300-version-negotiation-server
-+server2 = 300-version-negotiation-server2
- client = 300-version-negotiation-client
- 
- [300-version-negotiation-server]
-@@ -8975,6 +11518,14 @@ MinProtocol = TLSv1.1
+-
+ [test-299]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -8974,7 +8374,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[300-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [300-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -8995,6 +11546,7 @@ ssl_conf = 301-version-negotiation-ssl
+@@ -8982,7 +8381,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [301-version-negotiation-ssl]
- server = 301-version-negotiation-server
-+server2 = 301-version-negotiation-server2
- client = 301-version-negotiation-client
- 
- [301-version-negotiation-server]
-@@ -9004,6 +11556,13 @@ MinProtocol = TLSv1.1
+-
+ [test-300]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9003,7 +8401,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[301-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [301-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9024,6 +11583,7 @@ ssl_conf = 302-version-negotiation-ssl
+@@ -9011,7 +8408,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [302-version-negotiation-ssl]
- server = 302-version-negotiation-server
-+server2 = 302-version-negotiation-server2
- client = 302-version-negotiation-client
- 
- [302-version-negotiation-server]
-@@ -9034,6 +11594,14 @@ MinProtocol = TLSv1.2
+-
+ [test-301]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9033,7 +8429,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[302-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [302-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9054,6 +11622,7 @@ ssl_conf = 303-version-negotiation-ssl
+@@ -9041,7 +8436,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [303-version-negotiation-ssl]
- server = 303-version-negotiation-server
-+server2 = 303-version-negotiation-server2
- client = 303-version-negotiation-client
- 
- [303-version-negotiation-server]
-@@ -9063,6 +11632,13 @@ MinProtocol = TLSv1.2
+-
+ [test-302]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9062,7 +8456,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[303-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [303-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9083,6 +11659,7 @@ ssl_conf = 304-version-negotiation-ssl
+@@ -9070,7 +8463,6 @@ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [304-version-negotiation-ssl]
- server = 304-version-negotiation-server
-+server2 = 304-version-negotiation-server2
- client = 304-version-negotiation-client
- 
- [304-version-negotiation-server]
-@@ -9092,6 +11669,13 @@ MaxProtocol = SSLv3
+-
+ [test-303]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9091,14 +8483,12 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[304-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [304-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9110,6 +11694,7 @@ ssl_conf = 305-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [305-version-negotiation-ssl]
- server = 305-version-negotiation-server
-+server2 = 305-version-negotiation-server2
- client = 305-version-negotiation-client
+-
+ [test-304]
+ ExpectedResult = ServerFail
  
- [305-version-negotiation-server]
-@@ -9119,6 +11704,13 @@ MaxProtocol = TLSv1
+@@ -9118,14 +8508,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[305-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [305-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9137,6 +11729,7 @@ ssl_conf = 306-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [306-version-negotiation-ssl]
- server = 306-version-negotiation-server
-+server2 = 306-version-negotiation-server2
- client = 306-version-negotiation-client
+-
+ [test-305]
+ ExpectedResult = ClientFail
  
- [306-version-negotiation-server]
-@@ -9146,6 +11739,13 @@ MaxProtocol = TLSv1.1
+@@ -9145,14 +8533,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[306-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [306-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9165,6 +11765,7 @@ ssl_conf = 307-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [307-version-negotiation-ssl]
- server = 307-version-negotiation-server
-+server2 = 307-version-negotiation-server2
- client = 307-version-negotiation-client
- 
- [307-version-negotiation-server]
-@@ -9174,6 +11775,13 @@ MaxProtocol = TLSv1.2
+-
+ [test-306]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -9173,14 +8559,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[307-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [307-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9193,6 +11801,7 @@ ssl_conf = 308-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [308-version-negotiation-ssl]
- server = 308-version-negotiation-server
-+server2 = 308-version-negotiation-server2
- client = 308-version-negotiation-client
- 
- [308-version-negotiation-server]
-@@ -9201,6 +11810,12 @@ CipherString = DEFAULT
+-
+ [test-307]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9200,14 +8584,12 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[308-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [308-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9220,6 +11835,7 @@ ssl_conf = 309-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [309-version-negotiation-ssl]
- server = 309-version-negotiation-server
-+server2 = 309-version-negotiation-server2
- client = 309-version-negotiation-client
- 
- [309-version-negotiation-server]
-@@ -9230,6 +11846,14 @@ MinProtocol = SSLv3
+-
+ [test-308]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9229,14 +8611,12 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[309-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [309-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9248,6 +11872,7 @@ ssl_conf = 310-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [310-version-negotiation-ssl]
- server = 310-version-negotiation-server
-+server2 = 310-version-negotiation-server2
- client = 310-version-negotiation-client
+-
+ [test-309]
+ ExpectedResult = ServerFail
  
- [310-version-negotiation-server]
-@@ -9258,6 +11883,14 @@ MinProtocol = SSLv3
+@@ -9257,14 +8637,12 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[310-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [310-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9276,6 +11909,7 @@ ssl_conf = 311-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [311-version-negotiation-ssl]
- server = 311-version-negotiation-server
-+server2 = 311-version-negotiation-server2
- client = 311-version-negotiation-client
+-
+ [test-310]
+ ExpectedResult = ClientFail
  
- [311-version-negotiation-server]
-@@ -9286,6 +11920,14 @@ MinProtocol = SSLv3
+@@ -9285,14 +8663,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[311-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [311-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9305,6 +11947,7 @@ ssl_conf = 312-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [312-version-negotiation-ssl]
- server = 312-version-negotiation-server
-+server2 = 312-version-negotiation-server2
- client = 312-version-negotiation-client
- 
- [312-version-negotiation-server]
-@@ -9315,6 +11958,14 @@ MinProtocol = SSLv3
+-
+ [test-311]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -9314,14 +8690,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[312-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [312-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9334,6 +11985,7 @@ ssl_conf = 313-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [313-version-negotiation-ssl]
- server = 313-version-negotiation-server
-+server2 = 313-version-negotiation-server2
- client = 313-version-negotiation-client
- 
- [313-version-negotiation-server]
-@@ -9343,6 +11995,13 @@ MinProtocol = SSLv3
+-
+ [test-312]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9342,14 +8716,12 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[313-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [313-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9362,6 +12021,7 @@ ssl_conf = 314-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [314-version-negotiation-ssl]
- server = 314-version-negotiation-server
-+server2 = 314-version-negotiation-server2
- client = 314-version-negotiation-client
- 
- [314-version-negotiation-server]
-@@ -9372,6 +12032,14 @@ MinProtocol = TLSv1
+-
+ [test-313]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9371,14 +8743,12 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[314-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [314-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9390,6 +12058,7 @@ ssl_conf = 315-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [315-version-negotiation-ssl]
- server = 315-version-negotiation-server
-+server2 = 315-version-negotiation-server2
- client = 315-version-negotiation-client
+-
+ [test-314]
+ ExpectedResult = ClientFail
  
- [315-version-negotiation-server]
-@@ -9400,6 +12069,14 @@ MinProtocol = TLSv1
+@@ -9399,14 +8769,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[315-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [315-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9419,6 +12096,7 @@ ssl_conf = 316-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [316-version-negotiation-ssl]
- server = 316-version-negotiation-server
-+server2 = 316-version-negotiation-server2
- client = 316-version-negotiation-client
- 
- [316-version-negotiation-server]
-@@ -9429,6 +12107,14 @@ MinProtocol = TLSv1
+-
+ [test-315]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -9428,14 +8796,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[316-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [316-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9448,6 +12134,7 @@ ssl_conf = 317-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [317-version-negotiation-ssl]
- server = 317-version-negotiation-server
-+server2 = 317-version-negotiation-server2
- client = 317-version-negotiation-client
- 
- [317-version-negotiation-server]
-@@ -9457,6 +12144,13 @@ MinProtocol = TLSv1
+-
+ [test-316]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9456,14 +8822,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[317-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [317-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9476,6 +12170,7 @@ ssl_conf = 318-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [318-version-negotiation-ssl]
- server = 318-version-negotiation-server
-+server2 = 318-version-negotiation-server2
- client = 318-version-negotiation-client
- 
- [318-version-negotiation-server]
-@@ -9486,6 +12181,14 @@ MinProtocol = TLSv1.1
+-
+ [test-317]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9485,14 +8849,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[318-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [318-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9505,6 +12208,7 @@ ssl_conf = 319-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [319-version-negotiation-ssl]
- server = 319-version-negotiation-server
-+server2 = 319-version-negotiation-server2
- client = 319-version-negotiation-client
- 
- [319-version-negotiation-server]
-@@ -9515,6 +12219,14 @@ MinProtocol = TLSv1.1
+-
+ [test-318]
+ ExpectedResult = Success
+ Protocol = TLSv1.1
+@@ -9514,14 +8876,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[319-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [319-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9534,6 +12246,7 @@ ssl_conf = 320-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [320-version-negotiation-ssl]
- server = 320-version-negotiation-server
-+server2 = 320-version-negotiation-server2
- client = 320-version-negotiation-client
- 
- [320-version-negotiation-server]
-@@ -9543,6 +12256,13 @@ MinProtocol = TLSv1.1
+-
+ [test-319]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9542,14 +8902,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[320-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [320-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9560,11 +12280,20 @@ Protocol = TLSv1.2
- [321-version-negotiation]
- ssl_conf = 321-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
--[321-version-negotiation-ssl]
--server = 321-version-negotiation-server
--client = 321-version-negotiation-client
-+[321-version-negotiation-ssl]
-+server = 321-version-negotiation-server
-+server2 = 321-version-negotiation-server2
-+client = 321-version-negotiation-client
-+
-+[321-version-negotiation-server]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
+-
+ [test-320]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9571,14 +8929,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
+ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
--[321-version-negotiation-server]
-+[321-version-negotiation-server2]
- Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+-
+ [321-version-negotiation-client]
  CipherString = DEFAULT
- MaxProtocol = TLSv1.2
-@@ -9591,6 +12320,7 @@ ssl_conf = 322-version-negotiation-ssl
+ MinProtocol = TLSv1.1
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [322-version-negotiation-ssl]
- server = 322-version-negotiation-server
-+server2 = 322-version-negotiation-server2
- client = 322-version-negotiation-client
- 
- [322-version-negotiation-server]
-@@ -9600,6 +12330,13 @@ MinProtocol = TLSv1.2
+-
+ [test-321]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9599,14 +8955,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[322-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [322-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.1
-@@ -9619,6 +12356,7 @@ ssl_conf = 323-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [323-version-negotiation-ssl]
- server = 323-version-negotiation-server
-+server2 = 323-version-negotiation-server2
- client = 323-version-negotiation-client
- 
- [323-version-negotiation-server]
-@@ -9628,6 +12366,13 @@ MaxProtocol = SSLv3
+-
+ [test-322]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9627,7 +8981,6 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[323-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [323-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9647,6 +12392,7 @@ ssl_conf = 324-version-negotiation-ssl
+@@ -9635,7 +8988,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [324-version-negotiation-ssl]
- server = 324-version-negotiation-server
-+server2 = 324-version-negotiation-server2
- client = 324-version-negotiation-client
+-
+ [test-323]
+ ExpectedResult = ServerFail
  
- [324-version-negotiation-server]
-@@ -9656,6 +12402,13 @@ MaxProtocol = TLSv1
+@@ -9655,7 +9007,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[324-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [324-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9675,6 +12428,7 @@ ssl_conf = 325-version-negotiation-ssl
+@@ -9663,7 +9014,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [325-version-negotiation-ssl]
- server = 325-version-negotiation-server
-+server2 = 325-version-negotiation-server2
- client = 325-version-negotiation-client
+-
+ [test-324]
+ ExpectedResult = ClientFail
  
- [325-version-negotiation-server]
-@@ -9684,6 +12438,13 @@ MaxProtocol = TLSv1.1
+@@ -9683,7 +9033,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[325-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [325-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9703,6 +12464,7 @@ ssl_conf = 326-version-negotiation-ssl
+@@ -9691,7 +9040,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [326-version-negotiation-ssl]
- server = 326-version-negotiation-server
-+server2 = 326-version-negotiation-server2
- client = 326-version-negotiation-client
+-
+ [test-325]
+ ExpectedResult = ClientFail
  
- [326-version-negotiation-server]
-@@ -9712,6 +12474,13 @@ MaxProtocol = TLSv1.2
+@@ -9711,7 +9059,6 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[326-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [326-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9732,6 +12501,7 @@ ssl_conf = 327-version-negotiation-ssl
+@@ -9719,7 +9066,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [327-version-negotiation-ssl]
- server = 327-version-negotiation-server
-+server2 = 327-version-negotiation-server2
- client = 327-version-negotiation-client
- 
- [327-version-negotiation-server]
-@@ -9740,6 +12510,12 @@ CipherString = DEFAULT
+-
+ [test-326]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9739,7 +9085,6 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[327-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [327-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9760,6 +12536,7 @@ ssl_conf = 328-version-negotiation-ssl
+@@ -9747,7 +9092,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [328-version-negotiation-ssl]
- server = 328-version-negotiation-server
-+server2 = 328-version-negotiation-server2
- client = 328-version-negotiation-client
- 
- [328-version-negotiation-server]
-@@ -9770,6 +12547,14 @@ MinProtocol = SSLv3
+-
+ [test-327]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9769,7 +9113,6 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[328-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [328-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9789,6 +12574,7 @@ ssl_conf = 329-version-negotiation-ssl
+@@ -9777,7 +9120,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [329-version-negotiation-ssl]
- server = 329-version-negotiation-server
-+server2 = 329-version-negotiation-server2
- client = 329-version-negotiation-client
+-
+ [test-328]
+ ExpectedResult = ServerFail
  
- [329-version-negotiation-server]
-@@ -9799,6 +12585,14 @@ MinProtocol = SSLv3
+@@ -9798,7 +9140,6 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[329-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [329-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9818,6 +12612,7 @@ ssl_conf = 330-version-negotiation-ssl
+@@ -9806,7 +9147,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [330-version-negotiation-ssl]
- server = 330-version-negotiation-server
-+server2 = 330-version-negotiation-server2
- client = 330-version-negotiation-client
+-
+ [test-329]
+ ExpectedResult = ClientFail
  
- [330-version-negotiation-server]
-@@ -9828,6 +12623,14 @@ MinProtocol = SSLv3
+@@ -9827,7 +9167,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[330-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [330-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9847,6 +12650,7 @@ ssl_conf = 331-version-negotiation-ssl
+@@ -9835,7 +9174,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [331-version-negotiation-ssl]
- server = 331-version-negotiation-server
-+server2 = 331-version-negotiation-server2
- client = 331-version-negotiation-client
+-
+ [test-330]
+ ExpectedResult = ClientFail
  
- [331-version-negotiation-server]
-@@ -9857,6 +12661,14 @@ MinProtocol = SSLv3
+@@ -9856,7 +9194,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[331-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [331-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9877,6 +12689,7 @@ ssl_conf = 332-version-negotiation-ssl
+@@ -9864,7 +9201,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [332-version-negotiation-ssl]
- server = 332-version-negotiation-server
-+server2 = 332-version-negotiation-server2
- client = 332-version-negotiation-client
- 
- [332-version-negotiation-server]
-@@ -9886,6 +12699,13 @@ MinProtocol = SSLv3
+-
+ [test-331]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9885,7 +9221,6 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[332-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [332-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9906,6 +12726,7 @@ ssl_conf = 333-version-negotiation-ssl
+@@ -9893,7 +9228,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [333-version-negotiation-ssl]
- server = 333-version-negotiation-server
-+server2 = 333-version-negotiation-server2
- client = 333-version-negotiation-client
- 
- [333-version-negotiation-server]
-@@ -9916,6 +12737,14 @@ MinProtocol = TLSv1
+-
+ [test-332]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -9915,7 +9249,6 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[333-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [333-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9935,6 +12764,7 @@ ssl_conf = 334-version-negotiation-ssl
+@@ -9923,7 +9256,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [334-version-negotiation-ssl]
- server = 334-version-negotiation-server
-+server2 = 334-version-negotiation-server2
- client = 334-version-negotiation-client
+-
+ [test-333]
+ ExpectedResult = ClientFail
  
- [334-version-negotiation-server]
-@@ -9945,6 +12775,14 @@ MinProtocol = TLSv1
+@@ -9944,7 +9276,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[334-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [334-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9964,6 +12802,7 @@ ssl_conf = 335-version-negotiation-ssl
+@@ -9952,7 +9283,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [335-version-negotiation-ssl]
- server = 335-version-negotiation-server
-+server2 = 335-version-negotiation-server2
- client = 335-version-negotiation-client
+-
+ [test-334]
+ ExpectedResult = ClientFail
  
- [335-version-negotiation-server]
-@@ -9974,6 +12813,14 @@ MinProtocol = TLSv1
+@@ -9973,7 +9303,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[335-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [335-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -9994,6 +12841,7 @@ ssl_conf = 336-version-negotiation-ssl
+@@ -9981,7 +9310,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [336-version-negotiation-ssl]
- server = 336-version-negotiation-server
-+server2 = 336-version-negotiation-server2
- client = 336-version-negotiation-client
- 
- [336-version-negotiation-server]
-@@ -10003,6 +12851,13 @@ MinProtocol = TLSv1
+-
+ [test-335]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10002,7 +9330,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[336-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [336-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -10023,6 +12878,7 @@ ssl_conf = 337-version-negotiation-ssl
+@@ -10010,7 +9337,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [337-version-negotiation-ssl]
- server = 337-version-negotiation-server
-+server2 = 337-version-negotiation-server2
- client = 337-version-negotiation-client
- 
- [337-version-negotiation-server]
-@@ -10033,6 +12889,14 @@ MinProtocol = TLSv1.1
+-
+ [test-336]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10032,7 +9358,6 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[337-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [337-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -10052,6 +12916,7 @@ ssl_conf = 338-version-negotiation-ssl
+@@ -10040,7 +9365,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [338-version-negotiation-ssl]
- server = 338-version-negotiation-server
-+server2 = 338-version-negotiation-server2
- client = 338-version-negotiation-client
+-
+ [test-337]
+ ExpectedResult = ClientFail
  
- [338-version-negotiation-server]
-@@ -10062,6 +12927,14 @@ MinProtocol = TLSv1.1
+@@ -10061,7 +9385,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[338-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [338-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -10082,6 +12955,7 @@ ssl_conf = 339-version-negotiation-ssl
+@@ -10069,7 +9392,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [339-version-negotiation-ssl]
- server = 339-version-negotiation-server
-+server2 = 339-version-negotiation-server2
- client = 339-version-negotiation-client
- 
- [339-version-negotiation-server]
-@@ -10091,6 +12965,13 @@ MinProtocol = TLSv1.1
+-
+ [test-338]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10090,7 +9412,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[339-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [339-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -10111,6 +12992,7 @@ ssl_conf = 340-version-negotiation-ssl
+@@ -10098,7 +9419,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [340-version-negotiation-ssl]
- server = 340-version-negotiation-server
-+server2 = 340-version-negotiation-server2
- client = 340-version-negotiation-client
- 
- [340-version-negotiation-server]
-@@ -10121,6 +13003,14 @@ MinProtocol = TLSv1.2
+-
+ [test-339]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10120,7 +9440,6 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[340-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [340-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -10141,6 +13031,7 @@ ssl_conf = 341-version-negotiation-ssl
+@@ -10128,7 +9447,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [341-version-negotiation-ssl]
- server = 341-version-negotiation-server
-+server2 = 341-version-negotiation-server2
- client = 341-version-negotiation-client
- 
- [341-version-negotiation-server]
-@@ -10150,6 +13041,13 @@ MinProtocol = TLSv1.2
+-
+ [test-340]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10149,7 +9467,6 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[341-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [341-version-negotiation-client]
  CipherString = DEFAULT
  MaxProtocol = TLSv1.2
-@@ -10170,6 +13068,7 @@ ssl_conf = 342-version-negotiation-ssl
+@@ -10157,7 +9474,6 @@ MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [342-version-negotiation-ssl]
- server = 342-version-negotiation-server
-+server2 = 342-version-negotiation-server2
- client = 342-version-negotiation-client
- 
- [342-version-negotiation-server]
-@@ -10179,6 +13078,13 @@ MaxProtocol = SSLv3
+-
+ [test-341]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10178,14 +9494,12 @@ CipherString = DEFAULT
+ MaxProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[342-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [342-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10197,6 +13103,7 @@ ssl_conf = 343-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [343-version-negotiation-ssl]
- server = 343-version-negotiation-server
-+server2 = 343-version-negotiation-server2
- client = 343-version-negotiation-client
+-
+ [test-342]
+ ExpectedResult = ServerFail
  
- [343-version-negotiation-server]
-@@ -10206,6 +13113,13 @@ MaxProtocol = TLSv1
+@@ -10205,14 +9519,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[343-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [343-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10224,6 +13138,7 @@ ssl_conf = 344-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [344-version-negotiation-ssl]
- server = 344-version-negotiation-server
-+server2 = 344-version-negotiation-server2
- client = 344-version-negotiation-client
+-
+ [test-343]
+ ExpectedResult = ClientFail
  
- [344-version-negotiation-server]
-@@ -10233,6 +13148,13 @@ MaxProtocol = TLSv1.1
+@@ -10232,14 +9544,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[344-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [344-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10251,6 +13173,7 @@ ssl_conf = 345-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [345-version-negotiation-ssl]
- server = 345-version-negotiation-server
-+server2 = 345-version-negotiation-server2
- client = 345-version-negotiation-client
+-
+ [test-344]
+ ExpectedResult = ClientFail
  
- [345-version-negotiation-server]
-@@ -10260,6 +13183,13 @@ MaxProtocol = TLSv1.2
+@@ -10259,14 +9569,12 @@ CipherString = DEFAULT
+ MaxProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[345-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [345-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10279,6 +13209,7 @@ ssl_conf = 346-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [346-version-negotiation-ssl]
- server = 346-version-negotiation-server
-+server2 = 346-version-negotiation-server2
- client = 346-version-negotiation-client
- 
- [346-version-negotiation-server]
-@@ -10287,6 +13218,12 @@ CipherString = DEFAULT
+-
+ [test-345]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10286,14 +9594,12 @@ Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+ CipherString = DEFAULT
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[346-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [346-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10306,6 +13243,7 @@ ssl_conf = 347-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [347-version-negotiation-ssl]
- server = 347-version-negotiation-server
-+server2 = 347-version-negotiation-server2
- client = 347-version-negotiation-client
- 
- [347-version-negotiation-server]
-@@ -10316,6 +13254,14 @@ MinProtocol = SSLv3
+-
+ [test-346]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10315,14 +9621,12 @@ MaxProtocol = SSLv3
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[347-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = SSLv3
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [347-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10334,6 +13280,7 @@ ssl_conf = 348-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [348-version-negotiation-ssl]
- server = 348-version-negotiation-server
-+server2 = 348-version-negotiation-server2
- client = 348-version-negotiation-client
+-
+ [test-347]
+ ExpectedResult = ServerFail
  
- [348-version-negotiation-server]
-@@ -10344,6 +13291,14 @@ MinProtocol = SSLv3
+@@ -10343,14 +9647,12 @@ MaxProtocol = TLSv1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[348-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [348-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10362,6 +13317,7 @@ ssl_conf = 349-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [349-version-negotiation-ssl]
- server = 349-version-negotiation-server
-+server2 = 349-version-negotiation-server2
- client = 349-version-negotiation-client
+-
+ [test-348]
+ ExpectedResult = ClientFail
  
- [349-version-negotiation-server]
-@@ -10372,6 +13328,14 @@ MinProtocol = SSLv3
+@@ -10371,14 +9673,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[349-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [349-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10390,6 +13354,7 @@ ssl_conf = 350-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [350-version-negotiation-ssl]
- server = 350-version-negotiation-server
-+server2 = 350-version-negotiation-server2
- client = 350-version-negotiation-client
+-
+ [test-349]
+ ExpectedResult = ClientFail
  
- [350-version-negotiation-server]
-@@ -10400,6 +13365,14 @@ MinProtocol = SSLv3
+@@ -10399,14 +9699,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[350-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [350-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10419,6 +13392,7 @@ ssl_conf = 351-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [351-version-negotiation-ssl]
- server = 351-version-negotiation-server
-+server2 = 351-version-negotiation-server2
- client = 351-version-negotiation-client
- 
- [351-version-negotiation-server]
-@@ -10428,6 +13402,13 @@ MinProtocol = SSLv3
+-
+ [test-350]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10427,14 +9725,12 @@ CipherString = DEFAULT
+ MinProtocol = SSLv3
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[351-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = SSLv3
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [351-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10447,6 +13428,7 @@ ssl_conf = 352-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [352-version-negotiation-ssl]
- server = 352-version-negotiation-server
-+server2 = 352-version-negotiation-server2
- client = 352-version-negotiation-client
- 
- [352-version-negotiation-server]
-@@ -10457,6 +13439,14 @@ MinProtocol = TLSv1
+-
+ [test-351]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10456,14 +9752,12 @@ MaxProtocol = TLSv1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[352-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [352-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10475,6 +13465,7 @@ ssl_conf = 353-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [353-version-negotiation-ssl]
- server = 353-version-negotiation-server
-+server2 = 353-version-negotiation-server2
- client = 353-version-negotiation-client
+-
+ [test-352]
+ ExpectedResult = ClientFail
  
- [353-version-negotiation-server]
-@@ -10485,6 +13476,14 @@ MinProtocol = TLSv1
+@@ -10484,14 +9778,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[353-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [353-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10503,6 +13502,7 @@ ssl_conf = 354-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [354-version-negotiation-ssl]
- server = 354-version-negotiation-server
-+server2 = 354-version-negotiation-server2
- client = 354-version-negotiation-client
+-
+ [test-353]
+ ExpectedResult = ClientFail
  
- [354-version-negotiation-server]
-@@ -10513,6 +13513,14 @@ MinProtocol = TLSv1
+@@ -10512,14 +9804,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[354-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [354-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10532,6 +13540,7 @@ ssl_conf = 355-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [355-version-negotiation-ssl]
- server = 355-version-negotiation-server
-+server2 = 355-version-negotiation-server2
- client = 355-version-negotiation-client
- 
- [355-version-negotiation-server]
-@@ -10541,6 +13550,13 @@ MinProtocol = TLSv1
+-
+ [test-354]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10540,14 +9830,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[355-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [355-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10560,6 +13576,7 @@ ssl_conf = 356-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [356-version-negotiation-ssl]
- server = 356-version-negotiation-server
-+server2 = 356-version-negotiation-server2
- client = 356-version-negotiation-client
- 
- [356-version-negotiation-server]
-@@ -10570,6 +13587,14 @@ MinProtocol = TLSv1.1
+-
+ [test-355]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10569,14 +9857,12 @@ MaxProtocol = TLSv1.1
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[356-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.1
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [356-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10588,6 +13613,7 @@ ssl_conf = 357-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [357-version-negotiation-ssl]
- server = 357-version-negotiation-server
-+server2 = 357-version-negotiation-server2
- client = 357-version-negotiation-client
+-
+ [test-356]
+ ExpectedResult = ClientFail
  
- [357-version-negotiation-server]
-@@ -10598,6 +13624,14 @@ MinProtocol = TLSv1.1
+@@ -10597,14 +9883,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[357-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [357-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10617,6 +13651,7 @@ ssl_conf = 358-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [358-version-negotiation-ssl]
- server = 358-version-negotiation-server
-+server2 = 358-version-negotiation-server2
- client = 358-version-negotiation-client
- 
- [358-version-negotiation-server]
-@@ -10626,6 +13661,13 @@ MinProtocol = TLSv1.1
+-
+ [test-357]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10625,14 +9909,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.1
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[358-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.1
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [358-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10645,6 +13687,7 @@ ssl_conf = 359-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [359-version-negotiation-ssl]
- server = 359-version-negotiation-server
-+server2 = 359-version-negotiation-server2
- client = 359-version-negotiation-client
- 
- [359-version-negotiation-server]
-@@ -10655,6 +13698,14 @@ MinProtocol = TLSv1.2
+-
+ [test-358]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10654,14 +9936,12 @@ MaxProtocol = TLSv1.2
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[359-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MaxProtocol = TLSv1.2
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [359-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
-@@ -10674,6 +13725,7 @@ ssl_conf = 360-version-negotiation-ssl
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
  
- [360-version-negotiation-ssl]
- server = 360-version-negotiation-server
-+server2 = 360-version-negotiation-server2
- client = 360-version-negotiation-client
- 
- [360-version-negotiation-server]
-@@ -10683,6 +13735,13 @@ MinProtocol = TLSv1.2
+-
+ [test-359]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
+@@ -10682,14 +9962,12 @@ CipherString = DEFAULT
+ MinProtocol = TLSv1.2
  PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
  
- 
-+[360-version-negotiation-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+MinProtocol = TLSv1.2
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
+-
  [360-version-negotiation-client]
  CipherString = DEFAULT
  MinProtocol = TLSv1.2
+ VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+ VerifyMode = Peer
+ 
+-
+ [test-360]
+ ExpectedResult = Success
+ Protocol = TLSv1.2
 diff --git a/test/ssl-tests/02-protocol-version.conf.in b/test/ssl-tests/02-protocol-version.conf.in
-index 99b1dc0edf78..22e1f360e910 100644
+index 99b1dc0..46851c9 100644
 --- a/test/ssl-tests/02-protocol-version.conf.in
 +++ b/test/ssl-tests/02-protocol-version.conf.in
-@@ -1,4 +1,11 @@
+@@ -1,115 +1,19 @@
  # -*- mode: perl; -*-
+-
+-## Test version negotiation
+-
+-package ssltests;
+-
+-use List::Util qw/max min/;
+-
+-use OpenSSL::Test;
+-use OpenSSL::Test::Utils qw/anydisabled alldisabled/;
+-setup("no_test_here");
+-
+-my @protocols = ("SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2");
+-# undef stands for "no limit".
+-my @min_protocols = (undef, "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2");
+-my @max_protocols = ("SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2", undef);
+-
+-my @is_disabled = anydisabled("ssl3", "tls1", "tls1_1", "tls1_2");
+-
+-my $min_enabled; my $max_enabled;
+-
+-# Protocol configuration works in cascades, i.e.,
+-# $no_tls1_1 disables TLSv1.1 and below.
 +# Copyright 2016-2016 The OpenSSL Project Authors. All Rights Reserved.
-+#
+ #
+-# $min_enabled and $max_enabled will be correct if there is at least one
+-# protocol enabled.
+-foreach my $i (0..$#protocols) {
+-    if (!$is_disabled[$i]) {
+-        $min_enabled = $i;
+-        last;
+-    }
+-}
+-
+-foreach my $i (0..$#protocols) {
+-    if (!$is_disabled[$i]) {
+-        $max_enabled = $i;
+-    }
+-}
 +# Licensed under the OpenSSL license (the "License").  You may not use
 +# this file except in compliance with the License.  You can obtain a copy
 +# in the file LICENSE in the source distribution or at
 +# https://www.openssl.org/source/license.html
-+
  
- ## Test version negotiation
+-our @tests = ();
  
+-sub generate_tests() {
+-    foreach my $c_min (0..$#min_protocols) {
+-        my $c_max_min = $c_min == 0 ? 0 : $c_min - 1;
+-        foreach my $c_max ($c_max_min..$#max_protocols) {
+-            foreach my $s_min (0..$#min_protocols) {
+-                my $s_max_min = $s_min == 0 ? 0 : $s_min - 1;
+-                foreach my $s_max ($s_max_min..$#max_protocols) {
+-                    my ($result, $protocol) =
+-                        expected_result($c_min, $c_max, $s_min, $s_max);
+-                    push @tests, {
+-                        "name" => "version-negotiation",
+-                        "client" => {
+-                            "MinProtocol" => $min_protocols[$c_min],
+-                            "MaxProtocol" => $max_protocols[$c_max],
+-                        },
+-                        "server" => {
+-                            "MinProtocol" => $min_protocols[$s_min],
+-                            "MaxProtocol" => $max_protocols[$s_max],
+-                        },
+-                        "test" => {
+-                            "ExpectedResult" => $result,
+-                            "Protocol" => $protocol
+-                        }
+-                    };
+-                }
+-            }
+-        }
+-    }
+-}
++## Test TLS version negotiation
+ 
+-sub expected_result {
+-    my $no_tls = alldisabled("ssl3", "tls1", "tls1_1", "tls1_2");
+-    if ($no_tls) {
+-        return ("InternalError", undef);
+-    }
+-
+-    my ($c_min, $c_max, $s_min, $s_max) = @_;
+-
+-    # Adjust for "undef" (no limit).
+-    $c_min = $c_min == 0 ? 0 : $c_min - 1;
+-    $c_max = $c_max == scalar(@max_protocols) - 1 ? $c_max - 1 : $c_max;
+-    $s_min = $s_min == 0 ? 0 : $s_min - 1;
+-    $s_max = $s_max == scalar(@max_protocols) - 1 ? $s_max - 1 : $s_max;
++package ssltests;
+ 
+-    # We now have at least one protocol enabled, so $min_enabled and
+-    # $max_enabled are well-defined.
+-    $c_min = max $c_min, $min_enabled;
+-    $s_min = max $s_min, $min_enabled;
+-    $c_max = min $c_max, $max_enabled;
+-    $s_max = min $s_max, $max_enabled;
++use strict;
++use warnings;
+ 
+-    if ($c_min > $c_max) {
+-        # Client should fail to even send a hello.
+-        # This results in an internal error since the server will be
+-        # waiting for input that never arrives.
+-        return ("InternalError", undef);
+-    } elsif ($s_min > $s_max) {
+-        # Server has no protocols, should always fail.
+-        return ("ServerFail", undef);
+-    } elsif ($s_min > $c_max) {
+-        # Server doesn't support the client range.
+-        return ("ServerFail", undef);
+-    } elsif ($c_min > $s_max) {
+-        # Server will try with a version that is lower than the lowest
+-        # supported client version.
+-        return ("ClientFail", undef);
+-    } else {
+-        # Server and client ranges overlap.
+-        my $max_common = $s_max < $c_max ? $s_max : $c_max;
+-        return ("Success", $protocols[$max_common]);
+-    }
+-}
++use protocol_version;
+ 
+-generate_tests();
++our @tests = generate_tests("TLS");
 diff --git a/test/ssl-tests/03-custom_verify.conf b/test/ssl-tests/03-custom_verify.conf
 new file mode 100644
-index 000000000000..7bb90037d0ad
+index 0000000..835ce91
 --- /dev/null
 +++ b/test/ssl-tests/03-custom_verify.conf
-@@ -0,0 +1,301 @@
+@@ -0,0 +1,220 @@
 +# Generated with generate_ssl_tests.pl
 +
 +num_tests = 9
@@ -160737,7 +175650,6 @@
 +
 +[0-verify-success-ssl]
 +server = 0-verify-success-server
-+server2 = 0-verify-success-server2
 +client = 0-verify-success-client
 +
 +[0-verify-success-server]
@@ -160745,19 +175657,11 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[0-verify-success-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[0-verify-success-client]
 +CipherString = DEFAULT
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-0]
 +ExpectedResult = Success
 +
@@ -160769,7 +175673,6 @@
 +
 +[1-verify-custom-reject-ssl]
 +server = 1-verify-custom-reject-server
-+server2 = 1-verify-custom-reject-server2
 +client = 1-verify-custom-reject-client
 +
 +[1-verify-custom-reject-server]
@@ -160777,19 +175680,11 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[1-verify-custom-reject-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[1-verify-custom-reject-client]
 +CipherString = DEFAULT
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-1]
 +ClientAlert = HandshakeFailure
 +ClientVerifyCallback = RejectAll
@@ -160803,7 +175698,6 @@
 +
 +[2-verify-custom-allow-ssl]
 +server = 2-verify-custom-allow-server
-+server2 = 2-verify-custom-allow-server2
 +client = 2-verify-custom-allow-client
 +
 +[2-verify-custom-allow-server]
@@ -160811,19 +175705,11 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[2-verify-custom-allow-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[2-verify-custom-allow-client]
 +CipherString = DEFAULT
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-2]
 +ClientVerifyCallback = AcceptAll
 +ExpectedResult = Success
@@ -160836,7 +175722,6 @@
 +
 +[3-noverify-success-ssl]
 +server = 3-noverify-success-server
-+server2 = 3-noverify-success-server2
 +client = 3-noverify-success-client
 +
 +[3-noverify-success-server]
@@ -160844,17 +175729,9 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[3-noverify-success-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[3-noverify-success-client]
 +CipherString = DEFAULT
 +
-+
 +[test-3]
 +ExpectedResult = Success
 +
@@ -160866,7 +175743,6 @@
 +
 +[4-noverify-ignore-custom-reject-ssl]
 +server = 4-noverify-ignore-custom-reject-server
-+server2 = 4-noverify-ignore-custom-reject-server2
 +client = 4-noverify-ignore-custom-reject-client
 +
 +[4-noverify-ignore-custom-reject-server]
@@ -160874,17 +175750,9 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[4-noverify-ignore-custom-reject-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[4-noverify-ignore-custom-reject-client]
 +CipherString = DEFAULT
 +
-+
 +[test-4]
 +ClientVerifyCallback = RejectAll
 +ExpectedResult = Success
@@ -160897,7 +175765,6 @@
 +
 +[5-noverify-accept-custom-allow-ssl]
 +server = 5-noverify-accept-custom-allow-server
-+server2 = 5-noverify-accept-custom-allow-server2
 +client = 5-noverify-accept-custom-allow-client
 +
 +[5-noverify-accept-custom-allow-server]
@@ -160905,17 +175772,9 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[5-noverify-accept-custom-allow-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[5-noverify-accept-custom-allow-client]
 +CipherString = DEFAULT
 +
-+
 +[test-5]
 +ClientVerifyCallback = AcceptAll
 +ExpectedResult = Success
@@ -160928,7 +175787,6 @@
 +
 +[6-verify-fail-no-root-ssl]
 +server = 6-verify-fail-no-root-server
-+server2 = 6-verify-fail-no-root-server2
 +client = 6-verify-fail-no-root-client
 +
 +[6-verify-fail-no-root-server]
@@ -160936,18 +175794,10 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[6-verify-fail-no-root-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[6-verify-fail-no-root-client]
 +CipherString = DEFAULT
 +VerifyMode = Peer
 +
-+
 +[test-6]
 +ClientAlert = UnknownCA
 +ExpectedResult = ClientFail
@@ -160960,7 +175810,6 @@
 +
 +[7-verify-custom-success-no-root-ssl]
 +server = 7-verify-custom-success-no-root-server
-+server2 = 7-verify-custom-success-no-root-server2
 +client = 7-verify-custom-success-no-root-client
 +
 +[7-verify-custom-success-no-root-server]
@@ -160968,18 +175817,10 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[7-verify-custom-success-no-root-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[7-verify-custom-success-no-root-client]
 +CipherString = DEFAULT
 +VerifyMode = Peer
 +
-+
 +[test-7]
 +ClientVerifyCallback = AcceptAll
 +ExpectedResult = Success
@@ -160992,7 +175833,6 @@
 +
 +[8-verify-custom-fail-no-root-ssl]
 +server = 8-verify-custom-fail-no-root-server
-+server2 = 8-verify-custom-fail-no-root-server2
 +client = 8-verify-custom-fail-no-root-client
 +
 +[8-verify-custom-fail-no-root-server]
@@ -161000,18 +175840,10 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[8-verify-custom-fail-no-root-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[8-verify-custom-fail-no-root-client]
 +CipherString = DEFAULT
 +VerifyMode = Peer
 +
-+
 +[test-8]
 +ClientAlert = HandshakeFailure
 +ClientVerifyCallback = RejectAll
@@ -161020,7 +175852,7 @@
 +
 diff --git a/test/ssl-tests/03-custom_verify.conf.in b/test/ssl-tests/03-custom_verify.conf.in
 new file mode 100644
-index 000000000000..1cd4273c7abe
+index 0000000..1cd4273
 --- /dev/null
 +++ b/test/ssl-tests/03-custom_verify.conf.in
 @@ -0,0 +1,134 @@
@@ -161160,10 +175992,10 @@
 +);
 diff --git a/test/ssl-tests/04-client_auth.conf b/test/ssl-tests/04-client_auth.conf
 new file mode 100644
-index 000000000000..6504bf18b555
+index 0000000..02cba53
 --- /dev/null
 +++ b/test/ssl-tests/04-client_auth.conf
-@@ -0,0 +1,781 @@
+@@ -0,0 +1,562 @@
 +# Generated with generate_ssl_tests.pl
 +
 +num_tests = 20
@@ -161195,7 +176027,6 @@
 +
 +[0-server-auth-flex-ssl]
 +server = 0-server-auth-flex-server
-+server2 = 0-server-auth-flex-server2
 +client = 0-server-auth-flex-client
 +
 +[0-server-auth-flex-server]
@@ -161203,19 +176034,11 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
-+[0-server-auth-flex-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+
-+
 +[0-server-auth-flex-client]
 +CipherString = DEFAULT
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-0]
 +ExpectedResult = Success
 +
@@ -161227,7 +176050,6 @@
 +
 +[1-client-auth-flex-request-ssl]
 +server = 1-client-auth-flex-request-server
-+server2 = 1-client-auth-flex-request-server2
 +client = 1-client-auth-flex-request-client
 +
 +[1-client-auth-flex-request-server]
@@ -161236,20 +176058,11 @@
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +VerifyMode = Request
 +
-+
-+[1-client-auth-flex-request-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+VerifyMode = Request
-+
-+
 +[1-client-auth-flex-request-client]
 +CipherString = DEFAULT
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-1]
 +ExpectedResult = Success
 +
@@ -161261,7 +176074,6 @@
 +
 +[2-client-auth-flex-require-fail-ssl]
 +server = 2-client-auth-flex-require-fail-server
-+server2 = 2-client-auth-flex-require-fail-server2
 +client = 2-client-auth-flex-require-fail-client
 +
 +[2-client-auth-flex-require-fail-server]
@@ -161271,21 +176083,11 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 +VerifyMode = Require
 +
-+
-+[2-client-auth-flex-require-fail-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
-+VerifyMode = Require
-+
-+
 +[2-client-auth-flex-require-fail-client]
 +CipherString = DEFAULT
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-2]
 +ExpectedResult = ServerFail
 +ServerAlert = HandshakeFailure
@@ -161298,7 +176100,6 @@
 +
 +[3-client-auth-flex-require-ssl]
 +server = 3-client-auth-flex-require-server
-+server2 = 3-client-auth-flex-require-server2
 +client = 3-client-auth-flex-require-client
 +
 +[3-client-auth-flex-require-server]
@@ -161308,15 +176109,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 +VerifyMode = Request
 +
-+
-+[3-client-auth-flex-require-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
-+VerifyMode = Request
-+
-+
 +[3-client-auth-flex-require-client]
 +Certificate = ${ENV::TEST_CERTS_DIR}/ee-client-chain.pem
 +CipherString = DEFAULT
@@ -161324,7 +176116,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-3]
 +ExpectedResult = Success
 +
@@ -161336,7 +176127,6 @@
 +
 +[4-client-auth-flex-noroot-ssl]
 +server = 4-client-auth-flex-noroot-server
-+server2 = 4-client-auth-flex-noroot-server2
 +client = 4-client-auth-flex-noroot-client
 +
 +[4-client-auth-flex-noroot-server]
@@ -161345,14 +176135,6 @@
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +VerifyMode = Require
 +
-+
-+[4-client-auth-flex-noroot-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+VerifyMode = Require
-+
-+
 +[4-client-auth-flex-noroot-client]
 +Certificate = ${ENV::TEST_CERTS_DIR}/ee-client-chain.pem
 +CipherString = DEFAULT
@@ -161360,7 +176142,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-4]
 +ExpectedResult = ServerFail
 +ServerAlert = UnknownCA
@@ -161373,7 +176154,6 @@
 +
 +[5-server-auth-TLSv1-ssl]
 +server = 5-server-auth-TLSv1-server
-+server2 = 5-server-auth-TLSv1-server2
 +client = 5-server-auth-TLSv1-client
 +
 +[5-server-auth-TLSv1-server]
@@ -161382,21 +176162,12 @@
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +Protocol = TLSv1
 +
-+
-+[5-server-auth-TLSv1-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1
-+
-+
 +[5-server-auth-TLSv1-client]
 +CipherString = DEFAULT
 +Protocol = TLSv1
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-5]
 +ExpectedResult = Success
 +
@@ -161408,7 +176179,6 @@
 +
 +[6-client-auth-TLSv1-request-ssl]
 +server = 6-client-auth-TLSv1-request-server
-+server2 = 6-client-auth-TLSv1-request-server2
 +client = 6-client-auth-TLSv1-request-client
 +
 +[6-client-auth-TLSv1-request-server]
@@ -161418,22 +176188,12 @@
 +Protocol = TLSv1
 +VerifyMode = Request
 +
-+
-+[6-client-auth-TLSv1-request-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1
-+VerifyMode = Request
-+
-+
 +[6-client-auth-TLSv1-request-client]
 +CipherString = DEFAULT
 +Protocol = TLSv1
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-6]
 +ExpectedResult = Success
 +
@@ -161445,7 +176205,6 @@
 +
 +[7-client-auth-TLSv1-require-fail-ssl]
 +server = 7-client-auth-TLSv1-require-fail-server
-+server2 = 7-client-auth-TLSv1-require-fail-server2
 +client = 7-client-auth-TLSv1-require-fail-client
 +
 +[7-client-auth-TLSv1-require-fail-server]
@@ -161456,23 +176215,12 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 +VerifyMode = Require
 +
-+
-+[7-client-auth-TLSv1-require-fail-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1
-+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
-+VerifyMode = Require
-+
-+
 +[7-client-auth-TLSv1-require-fail-client]
 +CipherString = DEFAULT
 +Protocol = TLSv1
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-7]
 +ExpectedResult = ServerFail
 +ServerAlert = HandshakeFailure
@@ -161485,7 +176233,6 @@
 +
 +[8-client-auth-TLSv1-require-ssl]
 +server = 8-client-auth-TLSv1-require-server
-+server2 = 8-client-auth-TLSv1-require-server2
 +client = 8-client-auth-TLSv1-require-client
 +
 +[8-client-auth-TLSv1-require-server]
@@ -161496,16 +176243,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 +VerifyMode = Request
 +
-+
-+[8-client-auth-TLSv1-require-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1
-+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
-+VerifyMode = Request
-+
-+
 +[8-client-auth-TLSv1-require-client]
 +Certificate = ${ENV::TEST_CERTS_DIR}/ee-client-chain.pem
 +CipherString = DEFAULT
@@ -161514,7 +176251,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-8]
 +ExpectedResult = Success
 +
@@ -161526,7 +176262,6 @@
 +
 +[9-client-auth-TLSv1-noroot-ssl]
 +server = 9-client-auth-TLSv1-noroot-server
-+server2 = 9-client-auth-TLSv1-noroot-server2
 +client = 9-client-auth-TLSv1-noroot-client
 +
 +[9-client-auth-TLSv1-noroot-server]
@@ -161536,15 +176271,6 @@
 +Protocol = TLSv1
 +VerifyMode = Require
 +
-+
-+[9-client-auth-TLSv1-noroot-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1
-+VerifyMode = Require
-+
-+
 +[9-client-auth-TLSv1-noroot-client]
 +Certificate = ${ENV::TEST_CERTS_DIR}/ee-client-chain.pem
 +CipherString = DEFAULT
@@ -161553,7 +176279,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-9]
 +ExpectedResult = ServerFail
 +ServerAlert = UnknownCA
@@ -161566,7 +176291,6 @@
 +
 +[10-server-auth-TLSv1.1-ssl]
 +server = 10-server-auth-TLSv1.1-server
-+server2 = 10-server-auth-TLSv1.1-server2
 +client = 10-server-auth-TLSv1.1-client
 +
 +[10-server-auth-TLSv1.1-server]
@@ -161575,21 +176299,12 @@
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +Protocol = TLSv1.1
 +
-+
-+[10-server-auth-TLSv1.1-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.1
-+
-+
 +[10-server-auth-TLSv1.1-client]
 +CipherString = DEFAULT
 +Protocol = TLSv1.1
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-10]
 +ExpectedResult = Success
 +
@@ -161601,7 +176316,6 @@
 +
 +[11-client-auth-TLSv1.1-request-ssl]
 +server = 11-client-auth-TLSv1.1-request-server
-+server2 = 11-client-auth-TLSv1.1-request-server2
 +client = 11-client-auth-TLSv1.1-request-client
 +
 +[11-client-auth-TLSv1.1-request-server]
@@ -161611,22 +176325,12 @@
 +Protocol = TLSv1.1
 +VerifyMode = Request
 +
-+
-+[11-client-auth-TLSv1.1-request-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.1
-+VerifyMode = Request
-+
-+
 +[11-client-auth-TLSv1.1-request-client]
 +CipherString = DEFAULT
 +Protocol = TLSv1.1
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-11]
 +ExpectedResult = Success
 +
@@ -161638,7 +176342,6 @@
 +
 +[12-client-auth-TLSv1.1-require-fail-ssl]
 +server = 12-client-auth-TLSv1.1-require-fail-server
-+server2 = 12-client-auth-TLSv1.1-require-fail-server2
 +client = 12-client-auth-TLSv1.1-require-fail-client
 +
 +[12-client-auth-TLSv1.1-require-fail-server]
@@ -161649,23 +176352,12 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 +VerifyMode = Require
 +
-+
-+[12-client-auth-TLSv1.1-require-fail-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.1
-+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
-+VerifyMode = Require
-+
-+
 +[12-client-auth-TLSv1.1-require-fail-client]
 +CipherString = DEFAULT
 +Protocol = TLSv1.1
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-12]
 +ExpectedResult = ServerFail
 +ServerAlert = HandshakeFailure
@@ -161678,7 +176370,6 @@
 +
 +[13-client-auth-TLSv1.1-require-ssl]
 +server = 13-client-auth-TLSv1.1-require-server
-+server2 = 13-client-auth-TLSv1.1-require-server2
 +client = 13-client-auth-TLSv1.1-require-client
 +
 +[13-client-auth-TLSv1.1-require-server]
@@ -161689,16 +176380,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 +VerifyMode = Request
 +
-+
-+[13-client-auth-TLSv1.1-require-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.1
-+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
-+VerifyMode = Request
-+
-+
 +[13-client-auth-TLSv1.1-require-client]
 +Certificate = ${ENV::TEST_CERTS_DIR}/ee-client-chain.pem
 +CipherString = DEFAULT
@@ -161707,7 +176388,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-13]
 +ExpectedResult = Success
 +
@@ -161719,7 +176399,6 @@
 +
 +[14-client-auth-TLSv1.1-noroot-ssl]
 +server = 14-client-auth-TLSv1.1-noroot-server
-+server2 = 14-client-auth-TLSv1.1-noroot-server2
 +client = 14-client-auth-TLSv1.1-noroot-client
 +
 +[14-client-auth-TLSv1.1-noroot-server]
@@ -161729,15 +176408,6 @@
 +Protocol = TLSv1.1
 +VerifyMode = Require
 +
-+
-+[14-client-auth-TLSv1.1-noroot-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.1
-+VerifyMode = Require
-+
-+
 +[14-client-auth-TLSv1.1-noroot-client]
 +Certificate = ${ENV::TEST_CERTS_DIR}/ee-client-chain.pem
 +CipherString = DEFAULT
@@ -161746,7 +176416,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-14]
 +ExpectedResult = ServerFail
 +ServerAlert = UnknownCA
@@ -161759,7 +176428,6 @@
 +
 +[15-server-auth-TLSv1.2-ssl]
 +server = 15-server-auth-TLSv1.2-server
-+server2 = 15-server-auth-TLSv1.2-server2
 +client = 15-server-auth-TLSv1.2-client
 +
 +[15-server-auth-TLSv1.2-server]
@@ -161768,21 +176436,12 @@
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +Protocol = TLSv1.2
 +
-+
-+[15-server-auth-TLSv1.2-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.2
-+
-+
 +[15-server-auth-TLSv1.2-client]
 +CipherString = DEFAULT
 +Protocol = TLSv1.2
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-15]
 +ExpectedResult = Success
 +
@@ -161794,7 +176453,6 @@
 +
 +[16-client-auth-TLSv1.2-request-ssl]
 +server = 16-client-auth-TLSv1.2-request-server
-+server2 = 16-client-auth-TLSv1.2-request-server2
 +client = 16-client-auth-TLSv1.2-request-client
 +
 +[16-client-auth-TLSv1.2-request-server]
@@ -161804,22 +176462,12 @@
 +Protocol = TLSv1.2
 +VerifyMode = Request
 +
-+
-+[16-client-auth-TLSv1.2-request-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.2
-+VerifyMode = Request
-+
-+
 +[16-client-auth-TLSv1.2-request-client]
 +CipherString = DEFAULT
 +Protocol = TLSv1.2
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-16]
 +ExpectedResult = Success
 +
@@ -161831,7 +176479,6 @@
 +
 +[17-client-auth-TLSv1.2-require-fail-ssl]
 +server = 17-client-auth-TLSv1.2-require-fail-server
-+server2 = 17-client-auth-TLSv1.2-require-fail-server2
 +client = 17-client-auth-TLSv1.2-require-fail-client
 +
 +[17-client-auth-TLSv1.2-require-fail-server]
@@ -161842,23 +176489,12 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 +VerifyMode = Require
 +
-+
-+[17-client-auth-TLSv1.2-require-fail-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.2
-+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
-+VerifyMode = Require
-+
-+
 +[17-client-auth-TLSv1.2-require-fail-client]
 +CipherString = DEFAULT
 +Protocol = TLSv1.2
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-17]
 +ExpectedResult = ServerFail
 +ServerAlert = HandshakeFailure
@@ -161871,7 +176507,6 @@
 +
 +[18-client-auth-TLSv1.2-require-ssl]
 +server = 18-client-auth-TLSv1.2-require-server
-+server2 = 18-client-auth-TLSv1.2-require-server2
 +client = 18-client-auth-TLSv1.2-require-client
 +
 +[18-client-auth-TLSv1.2-require-server]
@@ -161882,16 +176517,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 +VerifyMode = Request
 +
-+
-+[18-client-auth-TLSv1.2-require-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.2
-+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
-+VerifyMode = Request
-+
-+
 +[18-client-auth-TLSv1.2-require-client]
 +Certificate = ${ENV::TEST_CERTS_DIR}/ee-client-chain.pem
 +CipherString = DEFAULT
@@ -161900,7 +176525,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-18]
 +ExpectedResult = Success
 +
@@ -161912,7 +176536,6 @@
 +
 +[19-client-auth-TLSv1.2-noroot-ssl]
 +server = 19-client-auth-TLSv1.2-noroot-server
-+server2 = 19-client-auth-TLSv1.2-noroot-server2
 +client = 19-client-auth-TLSv1.2-noroot-client
 +
 +[19-client-auth-TLSv1.2-noroot-server]
@@ -161922,15 +176545,6 @@
 +Protocol = TLSv1.2
 +VerifyMode = Require
 +
-+
-+[19-client-auth-TLSv1.2-noroot-server2]
-+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-+CipherString = DEFAULT
-+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-+Protocol = TLSv1.2
-+VerifyMode = Require
-+
-+
 +[19-client-auth-TLSv1.2-noroot-client]
 +Certificate = ${ENV::TEST_CERTS_DIR}/ee-client-chain.pem
 +CipherString = DEFAULT
@@ -161939,7 +176553,6 @@
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-19]
 +ExpectedResult = ServerFail
 +ServerAlert = UnknownCA
@@ -161947,7 +176560,7 @@
 +
 diff --git a/test/ssl-tests/04-client_auth.conf.in b/test/ssl-tests/04-client_auth.conf.in
 new file mode 100644
-index 000000000000..36d13df04d6b
+index 0000000..36d13df
 --- /dev/null
 +++ b/test/ssl-tests/04-client_auth.conf.in
 @@ -0,0 +1,109 @@
@@ -162062,10 +176675,10 @@
 +generate_tests();
 diff --git a/test/ssl-tests/05-sni.conf b/test/ssl-tests/05-sni.conf
 new file mode 100644
-index 000000000000..848d1c53337e
+index 0000000..be219d5
 --- /dev/null
 +++ b/test/ssl-tests/05-sni.conf
-@@ -0,0 +1,38 @@
+@@ -0,0 +1,35 @@
 +# Generated with generate_ssl_tests.pl
 +
 +num_tests = 1
@@ -162086,19 +176699,16 @@
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[0-SNI-default-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[0-SNI-default-client]
 +CipherString = DEFAULT
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-0]
 +ExpectedResult = Success
 +ServerName = server2
@@ -162106,10 +176716,10 @@
 +
 diff --git a/test/ssl-tests/05-sni.conf.in b/test/ssl-tests/05-sni.conf.in
 new file mode 100644
-index 000000000000..db0250b00865
+index 0000000..de8dc77
 --- /dev/null
 +++ b/test/ssl-tests/05-sni.conf.in
-@@ -0,0 +1,25 @@
+@@ -0,0 +1,26 @@
 +# -*- mode: perl; -*-
 +# Copyright 2016-2016 The OpenSSL Project Authors. All Rights Reserved.
 +#
@@ -162130,6 +176740,7 @@
 +    {
 +        name => "SNI-default",
 +        server => { },
++        server2 => { },
 +        client => { },
 +        test   => { "ServerName" => "server2",
 +		    "ExpectedResult" => "Success" },
@@ -162137,10 +176748,10 @@
 +);
 diff --git a/test/ssl-tests/06-sni-ticket.conf b/test/ssl-tests/06-sni-ticket.conf
 new file mode 100644
-index 000000000000..3a22e6907b9d
+index 0000000..99484ed
 --- /dev/null
 +++ b/test/ssl-tests/06-sni-ticket.conf
-@@ -0,0 +1,650 @@
+@@ -0,0 +1,599 @@
 +# Generated with generate_ssl_tests.pl
 +
 +num_tests = 17
@@ -162178,21 +176789,18 @@
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[0-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[0-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-0]
 +ExpectedResult = Success
 +ServerName = server1
@@ -162215,21 +176823,18 @@
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[1-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[1-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-1]
 +ExpectedResult = Success
 +ServerName = server1
@@ -162252,21 +176857,18 @@
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[2-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[2-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-2]
 +ExpectedResult = Success
 +ServerName = server2
@@ -162289,21 +176891,18 @@
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[3-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[3-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-3]
 +ExpectedResult = Success
 +ServerName = server1
@@ -162326,21 +176925,18 @@
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[4-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[4-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-4]
 +ExpectedResult = Success
 +ServerName = server2
@@ -162363,21 +176959,18 @@
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[5-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[5-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-5]
 +ExpectedResult = Success
 +ServerName = server1
@@ -162400,21 +176993,18 @@
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[6-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[6-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-6]
 +ExpectedResult = Success
 +ServerName = server2
@@ -162437,21 +177027,18 @@
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[7-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[7-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-7]
 +ExpectedResult = Success
 +ServerName = server1
@@ -162474,21 +177061,18 @@
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[8-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[8-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-8]
 +ExpectedResult = Success
 +ServerName = server2
@@ -162511,21 +177095,18 @@
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[9-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[9-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-9]
 +ExpectedResult = Success
 +ServerName = server1
@@ -162548,21 +177129,18 @@
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[10-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[10-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-10]
 +ExpectedResult = Success
 +ServerName = server2
@@ -162585,21 +177163,18 @@
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[11-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[11-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-11]
 +ExpectedResult = Success
 +ServerName = server1
@@ -162622,21 +177197,18 @@
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[12-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[12-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-12]
 +ExpectedResult = Success
 +ServerName = server2
@@ -162659,21 +177231,18 @@
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[13-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[13-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-13]
 +ExpectedResult = Success
 +ServerName = server1
@@ -162696,21 +177265,18 @@
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[14-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[14-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-14]
 +ExpectedResult = Success
 +ServerName = server2
@@ -162733,21 +177299,18 @@
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[15-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[15-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-15]
 +ExpectedResult = Success
 +ServerName = server1
@@ -162770,21 +177333,18 @@
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[16-sni-session-ticket-server2]
 +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 +
-+
 +[16-sni-session-ticket-client]
 +CipherString = DEFAULT
 +Options = -SessionTicket
 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 +VerifyMode = Peer
 +
-+
 +[test-16]
 +ExpectedResult = Success
 +ServerName = server2
@@ -162793,7 +177353,7 @@
 +
 diff --git a/test/ssl-tests/06-sni-ticket.conf.in b/test/ssl-tests/06-sni-ticket.conf.in
 new file mode 100644
-index 000000000000..6cd57b61ad9c
+index 0000000..6cd57b6
 --- /dev/null
 +++ b/test/ssl-tests/06-sni-ticket.conf.in
 @@ -0,0 +1,83 @@
@@ -162880,8 +177440,2031 @@
 +};
 +
 +generate_tests();
+diff --git a/test/ssl-tests/07-dtls-protocol-version.conf b/test/ssl-tests/07-dtls-protocol-version.conf
+new file mode 100644
+index 0000000..df7e4df
+--- /dev/null
++++ b/test/ssl-tests/07-dtls-protocol-version.conf
+@@ -0,0 +1,1820 @@
++# Generated with generate_ssl_tests.pl
++
++num_tests = 64
++
++test-0 = 0-version-negotiation
++test-1 = 1-version-negotiation
++test-2 = 2-version-negotiation
++test-3 = 3-version-negotiation
++test-4 = 4-version-negotiation
++test-5 = 5-version-negotiation
++test-6 = 6-version-negotiation
++test-7 = 7-version-negotiation
++test-8 = 8-version-negotiation
++test-9 = 9-version-negotiation
++test-10 = 10-version-negotiation
++test-11 = 11-version-negotiation
++test-12 = 12-version-negotiation
++test-13 = 13-version-negotiation
++test-14 = 14-version-negotiation
++test-15 = 15-version-negotiation
++test-16 = 16-version-negotiation
++test-17 = 17-version-negotiation
++test-18 = 18-version-negotiation
++test-19 = 19-version-negotiation
++test-20 = 20-version-negotiation
++test-21 = 21-version-negotiation
++test-22 = 22-version-negotiation
++test-23 = 23-version-negotiation
++test-24 = 24-version-negotiation
++test-25 = 25-version-negotiation
++test-26 = 26-version-negotiation
++test-27 = 27-version-negotiation
++test-28 = 28-version-negotiation
++test-29 = 29-version-negotiation
++test-30 = 30-version-negotiation
++test-31 = 31-version-negotiation
++test-32 = 32-version-negotiation
++test-33 = 33-version-negotiation
++test-34 = 34-version-negotiation
++test-35 = 35-version-negotiation
++test-36 = 36-version-negotiation
++test-37 = 37-version-negotiation
++test-38 = 38-version-negotiation
++test-39 = 39-version-negotiation
++test-40 = 40-version-negotiation
++test-41 = 41-version-negotiation
++test-42 = 42-version-negotiation
++test-43 = 43-version-negotiation
++test-44 = 44-version-negotiation
++test-45 = 45-version-negotiation
++test-46 = 46-version-negotiation
++test-47 = 47-version-negotiation
++test-48 = 48-version-negotiation
++test-49 = 49-version-negotiation
++test-50 = 50-version-negotiation
++test-51 = 51-version-negotiation
++test-52 = 52-version-negotiation
++test-53 = 53-version-negotiation
++test-54 = 54-version-negotiation
++test-55 = 55-version-negotiation
++test-56 = 56-version-negotiation
++test-57 = 57-version-negotiation
++test-58 = 58-version-negotiation
++test-59 = 59-version-negotiation
++test-60 = 60-version-negotiation
++test-61 = 61-version-negotiation
++test-62 = 62-version-negotiation
++test-63 = 63-version-negotiation
++# ===========================================================
++
++[0-version-negotiation]
++ssl_conf = 0-version-negotiation-ssl
++
++[0-version-negotiation-ssl]
++server = 0-version-negotiation-server
++client = 0-version-negotiation-client
++
++[0-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[0-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-0]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[1-version-negotiation]
++ssl_conf = 1-version-negotiation-ssl
++
++[1-version-negotiation-ssl]
++server = 1-version-negotiation-server
++client = 1-version-negotiation-client
++
++[1-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[1-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-1]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[2-version-negotiation]
++ssl_conf = 2-version-negotiation-ssl
++
++[2-version-negotiation-ssl]
++server = 2-version-negotiation-server
++client = 2-version-negotiation-client
++
++[2-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[2-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-2]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[3-version-negotiation]
++ssl_conf = 3-version-negotiation-ssl
++
++[3-version-negotiation-ssl]
++server = 3-version-negotiation-server
++client = 3-version-negotiation-client
++
++[3-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[3-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-3]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[4-version-negotiation]
++ssl_conf = 4-version-negotiation-ssl
++
++[4-version-negotiation-ssl]
++server = 4-version-negotiation-server
++client = 4-version-negotiation-client
++
++[4-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[4-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-4]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[5-version-negotiation]
++ssl_conf = 5-version-negotiation-ssl
++
++[5-version-negotiation-ssl]
++server = 5-version-negotiation-server
++client = 5-version-negotiation-client
++
++[5-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[5-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-5]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[6-version-negotiation]
++ssl_conf = 6-version-negotiation-ssl
++
++[6-version-negotiation-ssl]
++server = 6-version-negotiation-server
++client = 6-version-negotiation-client
++
++[6-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[6-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-6]
++ExpectedResult = ServerFail
++Method = DTLS
++
++
++# ===========================================================
++
++[7-version-negotiation]
++ssl_conf = 7-version-negotiation-ssl
++
++[7-version-negotiation-ssl]
++server = 7-version-negotiation-server
++client = 7-version-negotiation-client
++
++[7-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[7-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-7]
++ExpectedResult = ServerFail
++Method = DTLS
++
++
++# ===========================================================
++
++[8-version-negotiation]
++ssl_conf = 8-version-negotiation-ssl
++
++[8-version-negotiation-ssl]
++server = 8-version-negotiation-server
++client = 8-version-negotiation-client
++
++[8-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[8-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-8]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[9-version-negotiation]
++ssl_conf = 9-version-negotiation-ssl
++
++[9-version-negotiation-ssl]
++server = 9-version-negotiation-server
++client = 9-version-negotiation-client
++
++[9-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[9-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-9]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[10-version-negotiation]
++ssl_conf = 10-version-negotiation-ssl
++
++[10-version-negotiation-ssl]
++server = 10-version-negotiation-server
++client = 10-version-negotiation-client
++
++[10-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[10-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-10]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[11-version-negotiation]
++ssl_conf = 11-version-negotiation-ssl
++
++[11-version-negotiation-ssl]
++server = 11-version-negotiation-server
++client = 11-version-negotiation-client
++
++[11-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[11-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-11]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[12-version-negotiation]
++ssl_conf = 12-version-negotiation-ssl
++
++[12-version-negotiation-ssl]
++server = 12-version-negotiation-server
++client = 12-version-negotiation-client
++
++[12-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[12-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-12]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[13-version-negotiation]
++ssl_conf = 13-version-negotiation-ssl
++
++[13-version-negotiation-ssl]
++server = 13-version-negotiation-server
++client = 13-version-negotiation-client
++
++[13-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[13-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-13]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[14-version-negotiation]
++ssl_conf = 14-version-negotiation-ssl
++
++[14-version-negotiation-ssl]
++server = 14-version-negotiation-server
++client = 14-version-negotiation-client
++
++[14-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[14-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-14]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[15-version-negotiation]
++ssl_conf = 15-version-negotiation-ssl
++
++[15-version-negotiation-ssl]
++server = 15-version-negotiation-server
++client = 15-version-negotiation-client
++
++[15-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[15-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-15]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[16-version-negotiation]
++ssl_conf = 16-version-negotiation-ssl
++
++[16-version-negotiation-ssl]
++server = 16-version-negotiation-server
++client = 16-version-negotiation-client
++
++[16-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[16-version-negotiation-client]
++CipherString = DEFAULT
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-16]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[17-version-negotiation]
++ssl_conf = 17-version-negotiation-ssl
++
++[17-version-negotiation-ssl]
++server = 17-version-negotiation-server
++client = 17-version-negotiation-client
++
++[17-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[17-version-negotiation-client]
++CipherString = DEFAULT
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-17]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[18-version-negotiation]
++ssl_conf = 18-version-negotiation-ssl
++
++[18-version-negotiation-ssl]
++server = 18-version-negotiation-server
++client = 18-version-negotiation-client
++
++[18-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[18-version-negotiation-client]
++CipherString = DEFAULT
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-18]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[19-version-negotiation]
++ssl_conf = 19-version-negotiation-ssl
++
++[19-version-negotiation-ssl]
++server = 19-version-negotiation-server
++client = 19-version-negotiation-client
++
++[19-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[19-version-negotiation-client]
++CipherString = DEFAULT
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-19]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[20-version-negotiation]
++ssl_conf = 20-version-negotiation-ssl
++
++[20-version-negotiation-ssl]
++server = 20-version-negotiation-server
++client = 20-version-negotiation-client
++
++[20-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[20-version-negotiation-client]
++CipherString = DEFAULT
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-20]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[21-version-negotiation]
++ssl_conf = 21-version-negotiation-ssl
++
++[21-version-negotiation-ssl]
++server = 21-version-negotiation-server
++client = 21-version-negotiation-client
++
++[21-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[21-version-negotiation-client]
++CipherString = DEFAULT
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-21]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[22-version-negotiation]
++ssl_conf = 22-version-negotiation-ssl
++
++[22-version-negotiation-ssl]
++server = 22-version-negotiation-server
++client = 22-version-negotiation-client
++
++[22-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[22-version-negotiation-client]
++CipherString = DEFAULT
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-22]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[23-version-negotiation]
++ssl_conf = 23-version-negotiation-ssl
++
++[23-version-negotiation-ssl]
++server = 23-version-negotiation-server
++client = 23-version-negotiation-client
++
++[23-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[23-version-negotiation-client]
++CipherString = DEFAULT
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-23]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[24-version-negotiation]
++ssl_conf = 24-version-negotiation-ssl
++
++[24-version-negotiation-ssl]
++server = 24-version-negotiation-server
++client = 24-version-negotiation-client
++
++[24-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[24-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-24]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[25-version-negotiation]
++ssl_conf = 25-version-negotiation-ssl
++
++[25-version-negotiation-ssl]
++server = 25-version-negotiation-server
++client = 25-version-negotiation-client
++
++[25-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[25-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-25]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[26-version-negotiation]
++ssl_conf = 26-version-negotiation-ssl
++
++[26-version-negotiation-ssl]
++server = 26-version-negotiation-server
++client = 26-version-negotiation-client
++
++[26-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[26-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-26]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[27-version-negotiation]
++ssl_conf = 27-version-negotiation-ssl
++
++[27-version-negotiation-ssl]
++server = 27-version-negotiation-server
++client = 27-version-negotiation-client
++
++[27-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[27-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-27]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[28-version-negotiation]
++ssl_conf = 28-version-negotiation-ssl
++
++[28-version-negotiation-ssl]
++server = 28-version-negotiation-server
++client = 28-version-negotiation-client
++
++[28-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[28-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-28]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[29-version-negotiation]
++ssl_conf = 29-version-negotiation-ssl
++
++[29-version-negotiation-ssl]
++server = 29-version-negotiation-server
++client = 29-version-negotiation-client
++
++[29-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[29-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-29]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[30-version-negotiation]
++ssl_conf = 30-version-negotiation-ssl
++
++[30-version-negotiation-ssl]
++server = 30-version-negotiation-server
++client = 30-version-negotiation-client
++
++[30-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[30-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-30]
++ExpectedResult = ServerFail
++Method = DTLS
++
++
++# ===========================================================
++
++[31-version-negotiation]
++ssl_conf = 31-version-negotiation-ssl
++
++[31-version-negotiation-ssl]
++server = 31-version-negotiation-server
++client = 31-version-negotiation-client
++
++[31-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[31-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-31]
++ExpectedResult = ServerFail
++Method = DTLS
++
++
++# ===========================================================
++
++[32-version-negotiation]
++ssl_conf = 32-version-negotiation-ssl
++
++[32-version-negotiation-ssl]
++server = 32-version-negotiation-server
++client = 32-version-negotiation-client
++
++[32-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[32-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-32]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[33-version-negotiation]
++ssl_conf = 33-version-negotiation-ssl
++
++[33-version-negotiation-ssl]
++server = 33-version-negotiation-server
++client = 33-version-negotiation-client
++
++[33-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[33-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-33]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[34-version-negotiation]
++ssl_conf = 34-version-negotiation-ssl
++
++[34-version-negotiation-ssl]
++server = 34-version-negotiation-server
++client = 34-version-negotiation-client
++
++[34-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[34-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-34]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[35-version-negotiation]
++ssl_conf = 35-version-negotiation-ssl
++
++[35-version-negotiation-ssl]
++server = 35-version-negotiation-server
++client = 35-version-negotiation-client
++
++[35-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[35-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-35]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[36-version-negotiation]
++ssl_conf = 36-version-negotiation-ssl
++
++[36-version-negotiation-ssl]
++server = 36-version-negotiation-server
++client = 36-version-negotiation-client
++
++[36-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[36-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-36]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[37-version-negotiation]
++ssl_conf = 37-version-negotiation-ssl
++
++[37-version-negotiation-ssl]
++server = 37-version-negotiation-server
++client = 37-version-negotiation-client
++
++[37-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[37-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-37]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[38-version-negotiation]
++ssl_conf = 38-version-negotiation-ssl
++
++[38-version-negotiation-ssl]
++server = 38-version-negotiation-server
++client = 38-version-negotiation-client
++
++[38-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[38-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-38]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[39-version-negotiation]
++ssl_conf = 39-version-negotiation-ssl
++
++[39-version-negotiation-ssl]
++server = 39-version-negotiation-server
++client = 39-version-negotiation-client
++
++[39-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[39-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-39]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[40-version-negotiation]
++ssl_conf = 40-version-negotiation-ssl
++
++[40-version-negotiation-ssl]
++server = 40-version-negotiation-server
++client = 40-version-negotiation-client
++
++[40-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[40-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-40]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[41-version-negotiation]
++ssl_conf = 41-version-negotiation-ssl
++
++[41-version-negotiation-ssl]
++server = 41-version-negotiation-server
++client = 41-version-negotiation-client
++
++[41-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[41-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-41]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[42-version-negotiation]
++ssl_conf = 42-version-negotiation-ssl
++
++[42-version-negotiation-ssl]
++server = 42-version-negotiation-server
++client = 42-version-negotiation-client
++
++[42-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[42-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-42]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[43-version-negotiation]
++ssl_conf = 43-version-negotiation-ssl
++
++[43-version-negotiation-ssl]
++server = 43-version-negotiation-server
++client = 43-version-negotiation-client
++
++[43-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[43-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-43]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1
++
++
++# ===========================================================
++
++[44-version-negotiation]
++ssl_conf = 44-version-negotiation-ssl
++
++[44-version-negotiation-ssl]
++server = 44-version-negotiation-server
++client = 44-version-negotiation-client
++
++[44-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[44-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-44]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[45-version-negotiation]
++ssl_conf = 45-version-negotiation-ssl
++
++[45-version-negotiation-ssl]
++server = 45-version-negotiation-server
++client = 45-version-negotiation-client
++
++[45-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[45-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-45]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[46-version-negotiation]
++ssl_conf = 46-version-negotiation-ssl
++
++[46-version-negotiation-ssl]
++server = 46-version-negotiation-server
++client = 46-version-negotiation-client
++
++[46-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[46-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-46]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[47-version-negotiation]
++ssl_conf = 47-version-negotiation-ssl
++
++[47-version-negotiation-ssl]
++server = 47-version-negotiation-server
++client = 47-version-negotiation-client
++
++[47-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[47-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-47]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[48-version-negotiation]
++ssl_conf = 48-version-negotiation-ssl
++
++[48-version-negotiation-ssl]
++server = 48-version-negotiation-server
++client = 48-version-negotiation-client
++
++[48-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[48-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-48]
++ExpectedResult = ClientFail
++Method = DTLS
++
++
++# ===========================================================
++
++[49-version-negotiation]
++ssl_conf = 49-version-negotiation-ssl
++
++[49-version-negotiation-ssl]
++server = 49-version-negotiation-server
++client = 49-version-negotiation-client
++
++[49-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[49-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-49]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[50-version-negotiation]
++ssl_conf = 50-version-negotiation-ssl
++
++[50-version-negotiation-ssl]
++server = 50-version-negotiation-server
++client = 50-version-negotiation-client
++
++[50-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[50-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-50]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[51-version-negotiation]
++ssl_conf = 51-version-negotiation-ssl
++
++[51-version-negotiation-ssl]
++server = 51-version-negotiation-server
++client = 51-version-negotiation-client
++
++[51-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[51-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-51]
++ExpectedResult = ClientFail
++Method = DTLS
++
++
++# ===========================================================
++
++[52-version-negotiation]
++ssl_conf = 52-version-negotiation-ssl
++
++[52-version-negotiation-ssl]
++server = 52-version-negotiation-server
++client = 52-version-negotiation-client
++
++[52-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[52-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-52]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[53-version-negotiation]
++ssl_conf = 53-version-negotiation-ssl
++
++[53-version-negotiation-ssl]
++server = 53-version-negotiation-server
++client = 53-version-negotiation-client
++
++[53-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[53-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-53]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[54-version-negotiation]
++ssl_conf = 54-version-negotiation-ssl
++
++[54-version-negotiation-ssl]
++server = 54-version-negotiation-server
++client = 54-version-negotiation-client
++
++[54-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[54-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-54]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[55-version-negotiation]
++ssl_conf = 55-version-negotiation-ssl
++
++[55-version-negotiation-ssl]
++server = 55-version-negotiation-server
++client = 55-version-negotiation-client
++
++[55-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[55-version-negotiation-client]
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-55]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[56-version-negotiation]
++ssl_conf = 56-version-negotiation-ssl
++
++[56-version-negotiation-ssl]
++server = 56-version-negotiation-server
++client = 56-version-negotiation-client
++
++[56-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[56-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-56]
++ExpectedResult = ClientFail
++Method = DTLS
++
++
++# ===========================================================
++
++[57-version-negotiation]
++ssl_conf = 57-version-negotiation-ssl
++
++[57-version-negotiation-ssl]
++server = 57-version-negotiation-server
++client = 57-version-negotiation-client
++
++[57-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[57-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-57]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[58-version-negotiation]
++ssl_conf = 58-version-negotiation-ssl
++
++[58-version-negotiation-ssl]
++server = 58-version-negotiation-server
++client = 58-version-negotiation-client
++
++[58-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[58-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-58]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[59-version-negotiation]
++ssl_conf = 59-version-negotiation-ssl
++
++[59-version-negotiation-ssl]
++server = 59-version-negotiation-server
++client = 59-version-negotiation-client
++
++[59-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[59-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-59]
++ExpectedResult = ClientFail
++Method = DTLS
++
++
++# ===========================================================
++
++[60-version-negotiation]
++ssl_conf = 60-version-negotiation-ssl
++
++[60-version-negotiation-ssl]
++server = 60-version-negotiation-server
++client = 60-version-negotiation-client
++
++[60-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[60-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-60]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[61-version-negotiation]
++ssl_conf = 61-version-negotiation-ssl
++
++[61-version-negotiation-ssl]
++server = 61-version-negotiation-server
++client = 61-version-negotiation-client
++
++[61-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[61-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-61]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[62-version-negotiation]
++ssl_conf = 62-version-negotiation-ssl
++
++[62-version-negotiation-ssl]
++server = 62-version-negotiation-server
++client = 62-version-negotiation-client
++
++[62-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MaxProtocol = DTLSv1.2
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[62-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-62]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
++# ===========================================================
++
++[63-version-negotiation]
++ssl_conf = 63-version-negotiation-ssl
++
++[63-version-negotiation-ssl]
++server = 63-version-negotiation-server
++client = 63-version-negotiation-client
++
++[63-version-negotiation-server]
++Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
++
++[63-version-negotiation-client]
++CipherString = DEFAULT
++MinProtocol = DTLSv1.2
++VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
++VerifyMode = Peer
++
++[test-63]
++ExpectedResult = Success
++Method = DTLS
++Protocol = DTLSv1.2
++
++
+diff --git a/test/ssl-tests/07-dtls-protocol-version.conf.in b/test/ssl-tests/07-dtls-protocol-version.conf.in
+new file mode 100644
+index 0000000..965ed3e
+--- /dev/null
++++ b/test/ssl-tests/07-dtls-protocol-version.conf.in
+@@ -0,0 +1,19 @@
++# -*- mode: perl; -*-
++# Copyright 2016-2016 The OpenSSL Project Authors. All Rights Reserved.
++#
++# Licensed under the OpenSSL license (the "License").  You may not use
++# this file except in compliance with the License.  You can obtain a copy
++# in the file LICENSE in the source distribution or at
++# https://www.openssl.org/source/license.html
++
++
++## Test DTLS version negotiation
++
++package ssltests;
++
++use strict;
++use warnings;
++
++use protocol_version;
++
++our @tests = generate_tests("DTLS");
+diff --git a/test/ssl-tests/protocol_version.pm b/test/ssl-tests/protocol_version.pm
+new file mode 100644
+index 0000000..cb99756
+--- /dev/null
++++ b/test/ssl-tests/protocol_version.pm
+@@ -0,0 +1,166 @@
++# -*- mode: perl; -*-
++# Copyright 2016-2016 The OpenSSL Project Authors. All Rights Reserved.
++#
++# Licensed under the OpenSSL license (the "License").  You may not use
++# this file except in compliance with the License.  You can obtain a copy
++# in the file LICENSE in the source distribution or at
++# https://www.openssl.org/source/license.html
++
++
++## Test version negotiation
++
++package ssltests;
++
++use strict;
++use warnings;
++
++use List::Util qw/max min/;
++
++use OpenSSL::Test;
++use OpenSSL::Test::Utils qw/anydisabled alldisabled/;
++setup("no_test_here");
++
++my @tls_protocols = ("SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2");
++# undef stands for "no limit".
++my @min_tls_protocols = (undef, "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2");
++my @max_tls_protocols = ("SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2", undef);
++
++my @is_tls_disabled = anydisabled("ssl3", "tls1", "tls1_1", "tls1_2");
++
++my $min_tls_enabled; my $max_tls_enabled;
++
++# Protocol configuration works in cascades, i.e.,
++# $no_tls1_1 disables TLSv1.1 and below.
++#
++# $min_enabled and $max_enabled will be correct if there is at least one
++# protocol enabled.
++foreach my $i (0..$#tls_protocols) {
++    if (!$is_tls_disabled[$i]) {
++        $min_tls_enabled = $i;
++        last;
++    }
++}
++
++foreach my $i (0..$#tls_protocols) {
++    if (!$is_tls_disabled[$i]) {
++        $max_tls_enabled = $i;
++    }
++}
++
++my @dtls_protocols = ("DTLSv1", "DTLSv1.2");
++# undef stands for "no limit".
++my @min_dtls_protocols = (undef, "DTLSv1", "DTLSv1.2");
++my @max_dtls_protocols = ("DTLSv1", "DTLSv1.2", undef);
++
++my @is_dtls_disabled = anydisabled("dtls1", "dtls1_2");
++
++my $min_dtls_enabled; my $max_dtls_enabled;
++
++# $min_enabled and $max_enabled will be correct if there is at least one
++# protocol enabled.
++foreach my $i (0..$#dtls_protocols) {
++    if (!$is_dtls_disabled[$i]) {
++        $min_dtls_enabled = $i;
++        last;
++    }
++}
++
++foreach my $i (0..$#dtls_protocols) {
++    if (!$is_dtls_disabled[$i]) {
++        $max_dtls_enabled = $i;
++    }
++}
++
++sub generate_tests {
++    my ($method) = @_;
++
++    my $dtls = $method eq "DTLS";
++    # Don't write the redundant "Method = TLS" into the configuration.
++    undef $method if !$dtls; 
++
++    my @protocols = $dtls ? @dtls_protocols : @tls_protocols;
++    my @min_protocols = $dtls ? @min_dtls_protocols : @min_tls_protocols;
++    my @max_protocols = $dtls ? @max_dtls_protocols : @max_tls_protocols;
++    my $min_enabled  = $dtls ? $min_dtls_enabled : $min_tls_enabled;
++    my $max_enabled  = $dtls ? $max_dtls_enabled : $max_tls_enabled;
++
++    my $no_tests = $dtls ? alldisabled("dtls1", "dtls1_2") :
++      alldisabled("ssl3", "tls1", "tls1_1", "tls1_2");
++    if ($no_tests) {
++        return;
++    }
++
++    my @tests = ();
++
++    foreach my $c_min (0..$#min_protocols) {
++        my $c_max_min = $c_min == 0 ? 0 : $c_min - 1;
++        foreach my $c_max ($c_max_min..$#max_protocols) {
++            foreach my $s_min (0..$#min_protocols) {
++                my $s_max_min = $s_min == 0 ? 0 : $s_min - 1;
++                foreach my $s_max ($s_max_min..$#max_protocols) {
++                    my ($result, $protocol) =
++                        expected_result($c_min, $c_max, $s_min, $s_max,
++                                        $min_enabled, $max_enabled, \@protocols);
++                    push @tests, {
++                        "name" => "version-negotiation",
++                        "client" => {
++                            "MinProtocol" => $min_protocols[$c_min],
++                            "MaxProtocol" => $max_protocols[$c_max],
++                        },
++                        "server" => {
++                            "MinProtocol" => $min_protocols[$s_min],
++                            "MaxProtocol" => $max_protocols[$s_max],
++                        },
++                        "test" => {
++                            "ExpectedResult" => $result,
++                            "Protocol" => $protocol,
++                            "Method" => $method,
++                        }
++                    };
++                }
++            }
++        }
++    }
++    return @tests;
++}
++
++sub expected_result {
++    my ($c_min, $c_max, $s_min, $s_max, $min_enabled, $max_enabled,
++        $protocols) = @_;
++
++    # Adjust for "undef" (no limit).
++    $c_min = $c_min == 0 ? 0 : $c_min - 1;
++    $c_max = $c_max == scalar @$protocols ? $c_max - 1 : $c_max;
++    $s_min = $s_min == 0 ? 0 : $s_min - 1;
++    $s_max = $s_max == scalar @$protocols ? $s_max - 1 : $s_max;
++
++    # We now have at least one protocol enabled, so $min_enabled and
++    # $max_enabled are well-defined.
++    $c_min = max $c_min, $min_enabled;
++    $s_min = max $s_min, $min_enabled;
++    $c_max = min $c_max, $max_enabled;
++    $s_max = min $s_max, $max_enabled;
++
++    if ($c_min > $c_max) {
++        # Client should fail to even send a hello.
++        # This results in an internal error since the server will be
++        # waiting for input that never arrives.
++        return ("InternalError", undef);
++    } elsif ($s_min > $s_max) {
++        # Server has no protocols, should always fail.
++        return ("ServerFail", undef);
++    } elsif ($s_min > $c_max) {
++        # Server doesn't support the client range.
++        return ("ServerFail", undef);
++    } elsif ($c_min > $s_max) {
++        # Server will try with a version that is lower than the lowest
++        # supported client version.
++        return ("ClientFail", undef);
++    } else {
++        # Server and client ranges overlap.
++        my $max_common = $s_max < $c_max ? $s_max : $c_max;
++        return ("Success", $protocols->[$max_common]);
++    }
++}
++
++1;
 diff --git a/test/ssl-tests/ssltests_base.pm b/test/ssl-tests/ssltests_base.pm
-index 387043e3759b..303224a3d92b 100644
+index 387043e..303224a 100644
 --- a/test/ssl-tests/ssltests_base.pm
 +++ b/test/ssl-tests/ssltests_base.pm
 @@ -1,4 +1,10 @@
@@ -162896,7 +179479,7 @@
  ## SSL test configurations
  
 diff --git a/test/ssl_test.c b/test/ssl_test.c
-index dfe71cbc5614..56dcef5510d7 100644
+index dfe71cb..537d4b0 100644
 --- a/test/ssl_test.c
 +++ b/test/ssl_test.c
 @@ -1,14 +1,14 @@
@@ -162929,13 +179512,14 @@
          return 0;
      }
      return 1;
-@@ -123,6 +123,33 @@ static int check_protocol(HANDSHAKE_RESULT result, SSL_TEST_CTX *test_ctx)
+@@ -123,6 +123,34 @@ static int check_protocol(HANDSHAKE_RESULT result, SSL_TEST_CTX *test_ctx)
      return 1;
  }
  
 +static int check_servername(HANDSHAKE_RESULT result, SSL_TEST_CTX *test_ctx)
 +{
-+    if (result.servername != test_ctx->servername) {
++    if (test_ctx->servername != SSL_TEST_SERVERNAME_NONE
++        && result.servername != test_ctx->servername) {
 +        fprintf(stderr, "Client ServerName mismatch, expected %s, got %s\n.",
 +                ssl_servername_name(test_ctx->servername),
 +                ssl_servername_name(result.servername));
@@ -162944,7 +179528,7 @@
 +    return 1;
 +}
 +
-+static int check_session_ticket_expected(HANDSHAKE_RESULT result, SSL_TEST_CTX *test_ctx)
++static int check_session_ticket(HANDSHAKE_RESULT result, SSL_TEST_CTX *test_ctx)
 +{
 +    if (test_ctx->session_ticket_expected == SSL_TEST_SESSION_TICKET_IGNORE)
 +        return 1;
@@ -162953,8 +179537,8 @@
 +        return 1;
 +    if (result.session_ticket != test_ctx->session_ticket_expected) {
 +        fprintf(stderr, "Client SessionTicketExpected mismatch, expected %s, got %s\n.",
-+                ssl_session_ticket_expected_name(test_ctx->session_ticket_expected),
-+                ssl_session_ticket_expected_name(result.session_ticket));
++                ssl_session_ticket_name(test_ctx->session_ticket_expected),
++                ssl_session_ticket_name(result.session_ticket));
 +        return 0;
 +    }
 +    return 1;
@@ -162963,7 +179547,7 @@
  /*
   * This could be further simplified by constructing an expected
   * HANDSHAKE_RESULT, and implementing comparison methods for
-@@ -133,40 +160,74 @@ static int check_test(HANDSHAKE_RESULT result, SSL_TEST_CTX *test_ctx)
+@@ -133,40 +161,63 @@ static int check_test(HANDSHAKE_RESULT result, SSL_TEST_CTX *test_ctx)
      int ret = 1;
      ret &= check_result(result, test_ctx);
      ret &= check_alerts(result, test_ctx);
@@ -162971,29 +179555,12 @@
 +    if (result.result == SSL_TEST_SUCCESS) {
          ret &= check_protocol(result, test_ctx);
 +        ret &= check_servername(result, test_ctx);
-+        ret &= check_session_ticket_expected(result, test_ctx);
++        ret &= check_session_ticket(result, test_ctx);
 +        ret &= (result.session_ticket_do_not_call == 0);
 +    }
      return ret;
  }
  
-+static int servername_callback(SSL *s, int *ad, void *arg)
-+{
-+    const char *servername = SSL_get_servername(s, TLSEXT_NAMETYPE_host_name);
-+    if (servername != NULL && !strcmp(servername, "server2")) {
-+        SSL_CTX *new_ctx = (SSL_CTX*)arg;
-+        SSL_set_SSL_CTX(s, new_ctx);
-+        /*
-+         * Copy over all the SSL_CTX options - reasonable behavior
-+         * allows testing of cases where the options between two
-+         * contexts differ/conflict
-+         */
-+        SSL_clear_options(s, 0xFFFFFFFFL);
-+        SSL_set_options(s, SSL_CTX_get_options(new_ctx));
-+    }
-+    return SSL_TLSEXT_ERR_OK;
-+}
-+
  static int execute_test(SSL_TEST_FIXTURE fixture)
  {
      int ret = 0;
@@ -163001,38 +179568,50 @@
 +    SSL_CTX *server_ctx = NULL, *server2_ctx = NULL, *client_ctx = NULL;
      SSL_TEST_CTX *test_ctx = NULL;
      HANDSHAKE_RESULT result;
++    const char *server2;
  
-     server_ctx = SSL_CTX_new(TLS_server_method());
-+    server2_ctx = SSL_CTX_new(TLS_server_method());
-     client_ctx = SSL_CTX_new(TLS_client_method());
+-    server_ctx = SSL_CTX_new(TLS_server_method());
+-    client_ctx = SSL_CTX_new(TLS_client_method());
 -    OPENSSL_assert(server_ctx != NULL && client_ctx != NULL);
-+    OPENSSL_assert(server_ctx != NULL && server2_ctx != NULL && client_ctx != NULL);
++    test_ctx = SSL_TEST_CTX_create(conf, fixture.test_app);
++    if (test_ctx == NULL)
++        goto err;
++
++    /* Use ServerName to detect if we're testing SNI. */
++    server2 = (test_ctx->servername != SSL_TEST_SERVERNAME_NONE) ? "server2"
++        : "server";
++
++#ifndef OPENSSL_NO_DTLS
++    if (test_ctx->method == SSL_TEST_METHOD_DTLS) {
++        server_ctx = SSL_CTX_new(DTLS_server_method());
++        server2_ctx = SSL_CTX_new(DTLS_server_method());
++        client_ctx = SSL_CTX_new(DTLS_client_method());
++    }
++#endif
++    if (test_ctx->method == SSL_TEST_METHOD_TLS) {
++        server_ctx = SSL_CTX_new(TLS_server_method());
++        server2_ctx = SSL_CTX_new(TLS_server_method());
++        client_ctx = SSL_CTX_new(TLS_client_method());
++    }
++
++    OPENSSL_assert(server_ctx != NULL && server2_ctx != NULL &&
++                   client_ctx != NULL);
  
      OPENSSL_assert(CONF_modules_load(conf, fixture.test_app, 0) > 0);
  
      if (!SSL_CTX_config(server_ctx, "server")
 -       || !SSL_CTX_config(client_ctx, "client")) {
-+        || !SSL_CTX_config(server2_ctx, "server2")
++        || !SSL_CTX_config(server2_ctx, server2)
 +        || !SSL_CTX_config(client_ctx, "client")) {
          goto err;
      }
  
-+    /* link the two contexts for SNI purposes */
-+    SSL_CTX_set_tlsext_servername_callback(server_ctx, servername_callback);
-+    SSL_CTX_set_tlsext_servername_arg(server_ctx, server2_ctx);
-+    /*
-+     * The initial_ctx/session_ctx always handles the encrypt/decrypt of the
-+     * session ticket. This ticket_key callback is assigned to the second
-+     * session (assigned via SNI), and should never be invoked
-+     */
-+    SSL_CTX_set_tlsext_ticket_key_cb(server2_ctx, do_not_call_session_ticket_callback);
-+
-     test_ctx = SSL_TEST_CTX_create(conf, fixture.test_app);
-     if (test_ctx == NULL)
-         goto err;
- 
+-    test_ctx = SSL_TEST_CTX_create(conf, fixture.test_app);
+-    if (test_ctx == NULL)
+-        goto err;
+-
 -    result = do_handshake(server_ctx, client_ctx);
-+    result = do_handshake(server_ctx, client_ctx, test_ctx);
++    result = do_handshake(server_ctx, server2_ctx, client_ctx, test_ctx);
  
      ret = check_test(result, test_ctx);
  
@@ -163044,33 +179623,48 @@
      SSL_TEST_CTX_free(test_ctx);
      if (ret != 1)
 diff --git a/test/ssl_test.tmpl b/test/ssl_test.tmpl
-index b3c953a54b5c..d4c0c87616a9 100644
+index b3c953a..6a5333e 100644
 --- a/test/ssl_test.tmpl
 +++ b/test/ssl_test.tmpl
-@@ -3,6 +3,7 @@ ssl_conf = {-$testname-}-ssl
+@@ -2,7 +2,13 @@
+ ssl_conf = {-$testname-}-ssl
  
  [{-$testname-}-ssl]
- server = {-$testname-}-server
-+server2 = {-$testname-}-server2
+-server = {-$testname-}-server
++server = {-$testname-}-server{-
++    # The server2 section is optional.
++    $OUT = "";
++    if (%server2) {
++        $OUT .= "\nserver2 = $testname-server2";
++    }
++-}
  client = {-$testname-}-client
  
  [{-$testname-}-server]
-@@ -12,6 +13,13 @@ client = {-$testname-}-client
+@@ -10,15 +16,19 @@ client = {-$testname-}-client
+     foreach my $key (sort keys %server) {
+         $OUT .= qq{$key} . " = " . qq{$server{$key}\n} if defined $server{$key};
      }
++    if (%server2) {
++        $OUT .= "\n[$testname-server2]\n";
++        foreach my $key (sort keys %server2) {
++            $OUT .= qq{$key} . " = " . qq{$server2{$key}\n} if defined $server2{$key};
++        }
++    }
  -}
- 
-+[{-$testname-}-server2]
-+{-
-+    foreach my $key (sort keys %server2) {
-+        $OUT .= qq{$key} . " = " . qq{$server2{$key}\n} if defined $server2{$key};
-+    }
-+-}
-+
+-
  [{-$testname-}-client]
  {-
      foreach my $key (sort keys %client) {
+         $OUT .= qq{$key} . " = " . qq{$client{$key}\n} if defined $client{$key};
+     }
+ -}
+-
+ [test-{-$idx-}]
+ {-
+     foreach my $key (sort keys %test) {
 diff --git a/test/ssl_test_ctx.c b/test/ssl_test_ctx.c
-index 0c1bbbde9e87..598c89996ccf 100644
+index 0c1bbbd..d6e2843 100644
 --- a/test/ssl_test_ctx.c
 +++ b/test/ssl_test_ctx.c
 @@ -1,11 +1,10 @@
@@ -163105,7 +179699,16 @@
  };
  
  __owur static int parse_alert(int *alert, const char *value)
-@@ -126,6 +126,90 @@ const char *ssl_protocol_name(int protocol)
+@@ -113,6 +113,8 @@ static const test_enum ssl_protocols[] = {
+      {"TLSv1.1", TLS1_1_VERSION},
+      {"TLSv1", TLS1_VERSION},
+      {"SSLv3", SSL3_VERSION},
++     {"DTLSv1", DTLS1_VERSION},
++     {"DTLSv1.2", DTLS1_2_VERSION},
+ };
+ 
+ __owur static int parse_protocol(SSL_TEST_CTX *test_ctx, const char *value)
+@@ -126,6 +128,115 @@ const char *ssl_protocol_name(int protocol)
      return enum_name(ssl_protocols, OSSL_NELEM(ssl_protocols), protocol);
  }
  
@@ -163142,6 +179745,7 @@
 +/**************/
 +
 +static const test_enum ssl_servername[] = {
++    {"None", SSL_TEST_SERVERNAME_NONE},
 +    {"server1", SSL_TEST_SERVERNAME_SERVER1},
 +    {"server2", SSL_TEST_SERVERNAME_SERVER2},
 +};
@@ -163168,18 +179772,17 @@
 +/* SessionTicketExpected */
 +/*************************/
 +
-+static const test_enum ssl_session_ticket_expected[] = {
++static const test_enum ssl_session_ticket[] = {
 +    {"Ignore", SSL_TEST_SESSION_TICKET_IGNORE},
 +    {"Yes", SSL_TEST_SESSION_TICKET_YES},
 +    {"No", SSL_TEST_SESSION_TICKET_NO},
 +    {"Broken", SSL_TEST_SESSION_TICKET_BROKEN},
 +};
 +
-+__owur static int parse_session_ticket_expected(SSL_TEST_CTX *test_ctx,
-+                                                const char *value)
++__owur static int parse_session_ticket(SSL_TEST_CTX *test_ctx, const char *value)
 +{
 +    int ret_value;
-+    if (!parse_enum(ssl_session_ticket_expected, OSSL_NELEM(ssl_session_ticket_expected),
++    if (!parse_enum(ssl_session_ticket, OSSL_NELEM(ssl_session_ticket),
 +                    &ret_value, value)) {
 +        return 0;
 +    }
@@ -163187,26 +179790,52 @@
 +    return 1;
 +}
 +
-+const char *ssl_session_ticket_expected_name(ssl_session_ticket_expected_t server)
++const char *ssl_session_ticket_name(ssl_session_ticket_t server)
 +{
-+    return enum_name(ssl_session_ticket_expected,
-+                     OSSL_NELEM(ssl_session_ticket_expected),
++    return enum_name(ssl_session_ticket,
++                     OSSL_NELEM(ssl_session_ticket),
 +                     server);
 +}
++
++/***********************/
++/* Method.             */
++/***********************/
++
++static const test_enum ssl_test_methods[] = {
++    {"TLS", SSL_TEST_METHOD_TLS},
++    {"DTLS", SSL_TEST_METHOD_DTLS},
++};
++
++__owur static int parse_test_method(SSL_TEST_CTX *test_ctx, const char *value)
++{
++    int ret_value;
++    if (!parse_enum(ssl_test_methods, OSSL_NELEM(ssl_test_methods),
++                    &ret_value, value)) {
++        return 0;
++    }
++    test_ctx->method = ret_value;
++    return 1;
++}
++
++const char *ssl_test_method_name(ssl_test_method_t method)
++{
++    return enum_name(ssl_test_methods, OSSL_NELEM(ssl_test_methods), method);
++}
  
  /*************************************************************/
  /* Known test options and their corresponding parse methods. */
-@@ -141,6 +225,9 @@ static const ssl_test_ctx_option ssl_test_ctx_options[] = {
+@@ -141,6 +252,10 @@ static const ssl_test_ctx_option ssl_test_ctx_options[] = {
      { "ClientAlert", &parse_client_alert },
      { "ServerAlert", &parse_server_alert },
      { "Protocol", &parse_protocol },
 +    { "ClientVerifyCallback", &parse_client_verify_callback },
 +    { "ServerName", &parse_servername },
-+    { "SessionTicketExpected", &parse_session_ticket_expected },
++    { "SessionTicketExpected", &parse_session_ticket },
++    { "Method", &parse_test_method },
  };
  
  
-@@ -153,7 +240,6 @@ SSL_TEST_CTX *SSL_TEST_CTX_new()
+@@ -153,7 +268,6 @@ SSL_TEST_CTX *SSL_TEST_CTX_new()
      SSL_TEST_CTX *ret;
      ret = OPENSSL_zalloc(sizeof(*ret));
      OPENSSL_assert(ret != NULL);
@@ -163215,7 +179844,7 @@
  }
  
 diff --git a/test/ssl_test_ctx.h b/test/ssl_test_ctx.h
-index a183272b4e3a..e7570856b129 100644
+index a183272..492d1d7 100644
 --- a/test/ssl_test_ctx.h
 +++ b/test/ssl_test_ctx.h
 @@ -1,11 +1,10 @@
@@ -163233,7 +179862,7 @@
   */
  
  #ifndef HEADER_SSL_TEST_CTX_H
-@@ -15,12 +14,30 @@
+@@ -15,12 +14,36 @@
  #include <openssl/ssl.h>
  
  typedef enum {
@@ -163251,7 +179880,8 @@
 +} ssl_verify_callback_t;
 +
 +typedef enum {
-+    SSL_TEST_SERVERNAME_SERVER1 = 0, /* Default */
++    SSL_TEST_SERVERNAME_NONE = 0, /* Default */
++    SSL_TEST_SERVERNAME_SERVER1,
 +    SSL_TEST_SERVERNAME_SERVER2
 +} ssl_servername_t;
 +
@@ -163259,13 +179889,18 @@
 +    SSL_TEST_SESSION_TICKET_IGNORE = 0, /* Default */
 +    SSL_TEST_SESSION_TICKET_YES,
 +    SSL_TEST_SESSION_TICKET_NO,
-+    SSL_TEST_SESSION_TICKET_BROKEN, /* Special test */
-+} ssl_session_ticket_expected_t;
++    SSL_TEST_SESSION_TICKET_BROKEN /* Special test */
++} ssl_session_ticket_t;
 +
++typedef enum {
++    SSL_TEST_METHOD_TLS = 0, /* Default */
++    SSL_TEST_METHOD_DTLS
++} ssl_test_method_t;
++
  typedef struct ssl_test_ctx {
      /* Test expectations. */
      /* Defaults to SUCCESS. */
-@@ -34,11 +51,19 @@ typedef struct ssl_test_ctx {
+@@ -34,11 +57,22 @@ typedef struct ssl_test_ctx {
      /* Negotiated protocol version. 0 if no expectation. */
      /* See ssl.h for protocol versions. */
      int protocol;
@@ -163273,7 +179908,9 @@
 +    ssl_verify_callback_t client_verify_callback;
 +    /* One of a number of predefined server names use by the client */
 +    ssl_servername_t servername;
-+    ssl_session_ticket_expected_t session_ticket_expected;
++    ssl_session_ticket_t session_ticket_expected;
++    /* Whether the server/client CTX should use DTLS or TLS. */
++    ssl_test_method_t method;
  } SSL_TEST_CTX;
  
 -const char *ssl_test_result_t_name(ssl_test_result_t result);
@@ -163282,12 +179919,13 @@
  const char *ssl_protocol_name(int protocol);
 +const char *ssl_verify_callback_name(ssl_verify_callback_t verify_callback);
 +const char *ssl_servername_name(ssl_servername_t server);
-+const char *ssl_session_ticket_expected_name(ssl_session_ticket_expected_t server);
++const char *ssl_session_ticket_name(ssl_session_ticket_t server);
++const char *ssl_test_method_name(ssl_test_method_t method);
  
  /*
   * Load the test case context from |conf|.
 diff --git a/test/ssl_test_ctx_test.c b/test/ssl_test_ctx_test.c
-index 3c6fa715f2fb..6b202ef3e50d 100644
+index 3c6fa71..9824d66 100644
 --- a/test/ssl_test_ctx_test.c
 +++ b/test/ssl_test_ctx_test.c
 @@ -1,11 +1,10 @@
@@ -163353,46 +179991,49 @@
 +    }
 +    if (ctx->session_ticket_expected != ctx2->session_ticket_expected) {
 +        fprintf(stderr, "SessionTicketExpected mismatch: %s vs %s.\n",
-+                ssl_session_ticket_expected_name(ctx->session_ticket_expected),
-+                ssl_session_ticket_expected_name(ctx2->session_ticket_expected));
++                ssl_session_ticket_name(ctx->session_ticket_expected),
++                ssl_session_ticket_name(ctx2->session_ticket_expected));
          return 0;
      }
  
-@@ -136,6 +153,9 @@ static int test_good_configuration()
+@@ -136,6 +153,10 @@ static int test_good_configuration()
      fixture.expected_ctx->client_alert = SSL_AD_UNKNOWN_CA;
      fixture.expected_ctx->server_alert = 0;  /* No alert. */
      fixture.expected_ctx->protocol = TLS1_1_VERSION;
 +    fixture.expected_ctx->client_verify_callback = SSL_TEST_VERIFY_REJECT_ALL;
 +    fixture.expected_ctx->servername = SSL_TEST_SERVERNAME_SERVER2;
 +    fixture.expected_ctx->session_ticket_expected = SSL_TEST_SESSION_TICKET_YES;
++    fixture.expected_ctx->method = SSL_TEST_METHOD_DTLS;
      EXECUTE_SSL_TEST_CTX_TEST();
  }
  
-@@ -144,6 +164,9 @@ static const char *bad_configurations[] = {
+@@ -144,6 +165,10 @@ static const char *bad_configurations[] = {
      "ssltest_unknown_expected_result",
      "ssltest_unknown_alert",
      "ssltest_unknown_protocol",
 +    "ssltest_unknown_verify_callback",
 +    "ssltest_unknown_servername",
 +    "ssltest_unknown_session_ticket_expected",
++    "ssltest_unknown_method",
  };
  
  static int test_bad_configuration(int idx)
 diff --git a/test/ssl_test_ctx_test.conf b/test/ssl_test_ctx_test.conf
-index 2e6800e90d2d..7a8ffc83643b 100644
+index 2e6800e..9c1057d 100644
 --- a/test/ssl_test_ctx_test.conf
 +++ b/test/ssl_test_ctx_test.conf
-@@ -4,6 +4,9 @@
+@@ -4,6 +4,10 @@
  ExpectedResult = ServerFail
  ClientAlert = UnknownCA
  Protocol = TLSv1.1
 +ClientVerifyCallback = RejectAll
 +ServerName = server2
 +SessionTicketExpected = Yes
++Method = DTLS
  
  [ssltest_unknown_option]
  UnknownOption = Foo
-@@ -16,3 +19,12 @@ ServerAlert = Foo
+@@ -16,3 +20,16 @@ ServerAlert = Foo
  
  [ssltest_unknown_protocol]
  Protocol = Foo
@@ -163405,8 +180046,226 @@
 +
 +[ssltest_unknown_session_ticket_expected]
 +SessionTicketExpected = Foo
++
++[ssltest_unknown_method]
++Method = TLS2
++
+diff --git a/test/sslapitest.c b/test/sslapitest.c
+new file mode 100644
+index 0000000..f16947b
+--- /dev/null
++++ b/test/sslapitest.c
+@@ -0,0 +1,208 @@
++/*
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL license (the "License").  You may not use
++ * this file except in compliance with the License.  You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
++ */
++
++#include <openssl/opensslconf.h>
++#include <openssl/bio.h>
++#include <openssl/crypto.h>
++#include <openssl/ssl.h>
++
++#include "ssltestlib.h"
++#include "testutil.h"
++
++static char *cert = NULL;
++static char *privkey = NULL;
++
++static int test_tlsext_status_type(void)
++{
++    SSL_CTX *ctx = NULL;
++    SSL *con = NULL;
++    int testresult = 0;
++
++    /* Test tlsext_status_type */
++    ctx = SSL_CTX_new(TLS_method());
++
++    if (SSL_CTX_get_tlsext_status_type(ctx) != -1) {
++        printf("Unexpected initial value for "
++               "SSL_CTX_get_tlsext_status_type()\n");
++        goto end;
++    }
++
++    con = SSL_new(ctx);
++
++    if (SSL_get_tlsext_status_type(con) != -1) {
++        printf("Unexpected initial value for SSL_get_tlsext_status_type()\n");
++        goto end;
++    }
++
++    if (!SSL_set_tlsext_status_type(con, TLSEXT_STATUSTYPE_ocsp)) {
++        printf("Unexpected fail for SSL_set_tlsext_status_type()\n");
++        goto end;
++    }
++
++    if (SSL_get_tlsext_status_type(con) != TLSEXT_STATUSTYPE_ocsp) {
++        printf("Unexpected result for SSL_get_tlsext_status_type()\n");
++        goto end;
++    }
++
++    SSL_free(con);
++    con = NULL;
++
++    if (!SSL_CTX_set_tlsext_status_type(ctx, TLSEXT_STATUSTYPE_ocsp)) {
++        printf("Unexpected fail for SSL_CTX_set_tlsext_status_type()\n");
++        goto end;
++    }
++
++    if (SSL_CTX_get_tlsext_status_type(ctx) != TLSEXT_STATUSTYPE_ocsp) {
++        printf("Unexpected result for SSL_CTX_get_tlsext_status_type()\n");
++        goto end;
++    }
++
++    con = SSL_new(ctx);
++
++    if (SSL_get_tlsext_status_type(con) != TLSEXT_STATUSTYPE_ocsp) {
++        printf("Unexpected result for SSL_get_tlsext_status_type() (test 2)\n");
++        goto end;
++    }
++
++    testresult = 1;
++
++ end:
++    SSL_free(con);
++    SSL_CTX_free(ctx);
++
++    return testresult;
++}
++
++static int test_session(void)
++{
++    SSL_CTX *sctx = NULL, *cctx = NULL;
++    SSL *serverssl1 = NULL, *clientssl1 = NULL;
++    SSL *serverssl2 = NULL, *clientssl2 = NULL;
++    SSL_SESSION *sess1 = NULL, *sess2 = NULL;
++    int testresult = 0;
++
++    if (!create_ssl_ctx_pair(TLS_server_method(), TLS_client_method(), &sctx,
++                             &cctx, cert, privkey)) {
++        printf("Unable to create SSL_CTX pair\n");
++        return 0;
++    }
++
++    /* Turn on client session cache */
++    SSL_CTX_set_session_cache_mode(cctx, SSL_SESS_CACHE_CLIENT);
++
++    if (!create_ssl_connection(sctx, cctx, &serverssl1, &clientssl1, NULL,
++                               NULL)) {
++        printf("Unable to create SSL connection\n");
++        goto end;
++    }
++
++    sess1 = SSL_get1_session(clientssl1);
++    if (sess1 == NULL) {
++        printf("Unexpected NULL session\n");
++        goto end;
++    }
++
++    if (SSL_CTX_add_session(cctx, sess1)) {
++        /* Should have failed because it should already be in the cache */
++        printf("Unexpected success adding session to cache\n");
++        goto end;
++    }
++
++    if (!create_ssl_connection(sctx, cctx, &serverssl2, &clientssl2, NULL,
++                               NULL)) {
++        printf("Unable to create second SSL connection\n");
++        goto end;
++    }
++
++    sess2 = SSL_get1_session(clientssl2);
++    if (sess2 == NULL) {
++        printf("Unexpected NULL session from clientssl2\n");
++        goto end;
++    }
++
++    /*
++     * This should clear sess2 from the cache because it is a "bad" session. See
++     * SSL_set_session() documentation.
++     */
++    if (!SSL_set_session(clientssl2, sess1)) {
++        printf("Unexpected failure setting session\n");
++        goto end;
++    }
++
++    if (SSL_get_session(clientssl2) != sess1) {
++        printf("Unexpected session found\n");
++        goto end;
++    }
++
++    if (!SSL_CTX_add_session(cctx, sess2)) {
++        /*
++         * Should have succeeded because it should not already be in the cache
++         */
++        printf("Unexpected failure adding session to cache\n");
++        goto end;
++    }
++
++    if (!SSL_CTX_remove_session(cctx, sess2)) {
++        printf("Unexpected failure removing session from cache\n");
++        goto end;
++    }
++
++    if (SSL_CTX_remove_session(cctx, sess2)) {
++        printf("Unexpected success removing session from cache\n");
++        goto end;
++    }
++
++    testresult = 1;
++ end:
++    SSL_free(serverssl1);
++    SSL_free(clientssl1);
++    SSL_free(serverssl2);
++    SSL_free(clientssl2);
++    SSL_SESSION_free(sess1);
++    SSL_SESSION_free(sess2);
++    SSL_CTX_free(sctx);
++    SSL_CTX_free(cctx);
++
++    return testresult;
++}
++
++int main(int argc, char *argv[])
++{
++    BIO *err = NULL;
++    int testresult = 1;
++
++    if (argc != 3) {
++        printf("Invalid argument count\n");
++        return 1;
++    }
++
++    cert = argv[1];
++    privkey = argv[2];
++
++    err = BIO_new_fp(stderr, BIO_NOCLOSE | BIO_FP_TEXT);
++
++    CRYPTO_set_mem_debug(1);
++    CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
++
++    ADD_TEST(test_tlsext_status_type);
++    ADD_TEST(test_session);
++
++    testresult = run_tests(argv[0]);
++
++#ifndef OPENSSL_NO_CRYPTO_MDEBUG
++    if (CRYPTO_mem_leaks(err) <= 0)
++        testresult = 1;
++#endif
++    BIO_free(err);
++
++    if (!testresult)
++        printf("PASS\n");
++
++    return testresult;
++}
 diff --git a/test/ssltest_old.c b/test/ssltest_old.c
-index 2fd7da824adf..bc73380146fe 100644
+index 2fd7da8..74908b0 100644
 --- a/test/ssltest_old.c
 +++ b/test/ssltest_old.c
 @@ -1,112 +1,12 @@
@@ -163544,7 +180403,17 @@
  
  #include <assert.h>
  #include <errno.h>
-@@ -191,7 +95,6 @@
+@@ -169,9 +73,6 @@
+ #include <openssl/x509.h>
+ #include <openssl/x509v3.h>
+ #include <openssl/ssl.h>
+-#ifndef OPENSSL_NO_ENGINE
+-# include <openssl/engine.h>
+-#endif
+ #include <openssl/err.h>
+ #include <openssl/rand.h>
+ #ifndef OPENSSL_NO_RSA
+@@ -191,7 +92,6 @@
  # include <openssl/ct.h>
  #endif
  
@@ -163552,7 +180421,7 @@
  #include "../ssl/ssl_locl.h"
  
  /*
-@@ -223,9 +126,6 @@ static int app_verify_callback(X509_STORE_CTX *ctx, void *arg);
+@@ -223,9 +123,6 @@ static int app_verify_callback(X509_STORE_CTX *ctx, void *arg);
  struct app_verify_arg {
      char *string;
      int app_verify;
@@ -163562,7 +180431,7 @@
  };
  
  #ifndef OPENSSL_NO_DH
-@@ -799,7 +699,6 @@ int doit_localhost(SSL *s_ssl, SSL *c_ssl, int family,
+@@ -799,7 +696,6 @@ int doit_localhost(SSL *s_ssl, SSL *c_ssl, int family,
  int doit_biopair(SSL *s_ssl, SSL *c_ssl, long bytes, clock_t *s_time,
                   clock_t *c_time);
  int doit(SSL *s_ssl, SSL *c_ssl, long bytes);
@@ -163570,7 +180439,7 @@
  
  static void sv_usage(void)
  {
-@@ -810,10 +709,6 @@ static void sv_usage(void)
+@@ -810,10 +706,6 @@ static void sv_usage(void)
  #endif
      fprintf(stderr, " -server_auth  - check server certificate\n");
      fprintf(stderr, " -client_auth  - do client authentication\n");
@@ -163581,7 +180450,7 @@
      fprintf(stderr, " -v            - more output\n");
      fprintf(stderr, " -d            - debug output\n");
      fprintf(stderr, " -reuse        - use session-id reuse\n");
-@@ -870,10 +765,6 @@ static void sv_usage(void)
+@@ -870,10 +762,6 @@ static void sv_usage(void)
      fprintf(stderr,
              " -time         - measure processor time used by client and server\n");
      fprintf(stderr, " -zlib         - use zlib compression\n");
@@ -163592,7 +180461,7 @@
  #ifndef OPENSSL_NO_NEXTPROTONEG
      fprintf(stderr, " -npn_client - have client side offer NPN\n");
      fprintf(stderr, " -npn_server - have server side offer NPN\n");
-@@ -1074,7 +965,7 @@ int main(int argc, char *argv[])
+@@ -1074,7 +962,7 @@ int main(int argc, char *argv[])
      int client_auth = 0;
      int server_auth = 0, i;
      struct app_verify_arg app_verify_arg =
@@ -163601,7 +180470,7 @@
      char *p;
      SSL_CTX *c_ctx = NULL;
      const SSL_METHOD *meth = NULL;
-@@ -1102,7 +993,6 @@ int main(int argc, char *argv[])
+@@ -1102,7 +990,6 @@ int main(int argc, char *argv[])
      COMP_METHOD *cm = NULL;
      STACK_OF(SSL_COMP) *ssl_comp_methods = NULL;
  #endif
@@ -163609,7 +180478,7 @@
  #ifdef OPENSSL_FIPS
      int fips_mode = 0;
  #endif
-@@ -1185,15 +1075,7 @@ int main(int argc, char *argv[])
+@@ -1185,15 +1072,7 @@ int main(int argc, char *argv[])
              server_auth = 1;
          else if (strcmp(*argv, "-client_auth") == 0)
              client_auth = 1;
@@ -163626,7 +180495,7 @@
              verbose = 1;
          else if (strcmp(*argv, "-d") == 0)
              debug = 1;
-@@ -1313,13 +1195,9 @@ int main(int argc, char *argv[])
+@@ -1313,13 +1192,9 @@ int main(int argc, char *argv[])
  #endif
          else if (strcmp(*argv, "-app_verify") == 0) {
              app_verify_arg.app_verify = 1;
@@ -163641,7 +180510,7 @@
              npn_client = 1;
          } else if (strcmp(*argv, "-npn_server") == 0) {
              npn_server = 1;
-@@ -1454,22 +1332,6 @@ int main(int argc, char *argv[])
+@@ -1454,22 +1329,6 @@ int main(int argc, char *argv[])
          goto end;
      }
  
@@ -163664,7 +180533,7 @@
      if (ssl3 + tls1 + dtls + dtls1 + dtls12 > 1) {
          fprintf(stderr, "At most one of -ssl3, -tls1, -dtls, -dtls1 or -dtls12 should "
                  "be requested.\n");
-@@ -3051,23 +2913,6 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count)
+@@ -3051,23 +2910,6 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count)
      return (ret);
  }
  
@@ -163688,7 +180557,7 @@
  static int verify_callback(int ok, X509_STORE_CTX *ctx)
  {
      char *s, buf[256];
-@@ -3100,341 +2945,13 @@ static int verify_callback(int ok, X509_STORE_CTX *ctx)
+@@ -3100,341 +2942,13 @@ static int verify_callback(int ok, X509_STORE_CTX *ctx)
          }
      }
  
@@ -164030,14 +180899,14 @@
  
      if (cb_arg->app_verify) {
          char *s = NULL, buf[256];
-@@ -3452,61 +2969,9 @@ static int app_verify_callback(X509_STORE_CTX *ctx, void *arg)
+@@ -3452,61 +2966,9 @@ static int app_verify_callback(X509_STORE_CTX *ctx, void *arg)
          }
          return (1);
      }
 -    if (cb_arg->proxy_auth) {
 -        int found_any = 0, i;
 -        char *sp;
- 
+-
 -        for (i = 0; i < 26; i++)
 -            letters[i] = 0;
 -        for (sp = cb_arg->proxy_auth; *sp; sp++) {
@@ -164048,7 +180917,7 @@
 -                letters[c - 'A'] = 1;
 -            }
 -        }
--
+ 
 -        printf("  Initial proxy rights = ");
 -        for (i = 0; i < 26; i++)
 -            if (letters[i]) {
@@ -164092,7 +180961,7 @@
      return (ok);
  }
  
-@@ -3726,33 +3191,3 @@ static unsigned int psk_server_callback(SSL *ssl, const char *identity,
+@@ -3726,33 +3188,3 @@ static unsigned int psk_server_callback(SSL *ssl, const char *identity,
      return psk_len;
  }
  #endif
@@ -164126,9 +180995,187 @@
 -
 -    return 1;
 -}
+diff --git a/test/ssltestlib.c b/test/ssltestlib.c
+new file mode 100644
+index 0000000..5f780d7
+--- /dev/null
++++ b/test/ssltestlib.c
+@@ -0,0 +1,145 @@
++/*
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL license (the "License").  You may not use
++ * this file except in compliance with the License.  You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
++ */
++
++#include "ssltestlib.h"
++
++int create_ssl_ctx_pair(const SSL_METHOD *sm, const SSL_METHOD *cm,
++                        SSL_CTX **sctx, SSL_CTX **cctx, char *certfile,
++                        char *privkeyfile)
++{
++    SSL_CTX *serverctx = NULL;
++    SSL_CTX *clientctx = NULL;
++
++    serverctx = SSL_CTX_new(TLS_server_method());
++    clientctx = SSL_CTX_new(TLS_client_method());
++    if (serverctx == NULL || clientctx == NULL) {
++        printf("Failed to create SSL_CTX\n");
++        goto err;
++    }
++
++    if (SSL_CTX_use_certificate_file(serverctx, certfile,
++                                     SSL_FILETYPE_PEM) <= 0) {
++        printf("Failed to load server certificate\n");
++        goto err;
++    }
++    if (SSL_CTX_use_PrivateKey_file(serverctx, privkeyfile,
++                                    SSL_FILETYPE_PEM) <= 0) {
++        printf("Failed to load server private key\n");
++    }
++    if (SSL_CTX_check_private_key(serverctx) <= 0) {
++        printf("Failed to check private key\n");
++        goto err;
++    }
++
++    *sctx = serverctx;
++    *cctx = clientctx;
++
++    return 1;
++ err:
++    SSL_CTX_free(serverctx);
++    SSL_CTX_free(clientctx);
++    return 0;
++}
++
++#define MAXLOOPS    100000
++
++/*
++ * NOTE: Transfers control of the BIOs - this function will free them on error
++ */
++int create_ssl_connection(SSL_CTX *serverctx, SSL_CTX *clientctx, SSL **sssl,
++                          SSL **cssl, BIO *s_to_c_fbio, BIO *c_to_s_fbio)
++{
++    int retc = -1, rets = -1, err, abortctr = 0;
++    SSL *serverssl, *clientssl;
++    BIO *s_to_c_bio = NULL, *c_to_s_bio = NULL;
++
++    serverssl = SSL_new(serverctx);
++    clientssl = SSL_new(clientctx);
++
++    if (serverssl == NULL || clientssl == NULL) {
++        printf("Failed to create SSL object\n");
++        goto error;
++    }
++
++    s_to_c_bio = BIO_new(BIO_s_mem());
++    c_to_s_bio = BIO_new(BIO_s_mem());
++    if (s_to_c_bio == NULL || c_to_s_bio == NULL) {
++        printf("Failed to create mem BIOs\n");
++        goto error;
++    }
++
++    if (s_to_c_fbio != NULL)
++        s_to_c_bio = BIO_push(s_to_c_fbio, s_to_c_bio);
++    if (c_to_s_fbio != NULL)
++        c_to_s_bio = BIO_push(c_to_s_fbio, c_to_s_bio);
++    if (s_to_c_bio == NULL || c_to_s_bio == NULL) {
++        printf("Failed to create chained BIOs\n");
++        goto error;
++    }
++
++    /* Set Non-blocking IO behaviour */
++    BIO_set_mem_eof_return(s_to_c_bio, -1);
++    BIO_set_mem_eof_return(c_to_s_bio, -1);
++
++    /* Up ref these as we are passing them to two SSL objects */
++    BIO_up_ref(s_to_c_bio);
++    BIO_up_ref(c_to_s_bio);
++
++    SSL_set_bio(serverssl, c_to_s_bio, s_to_c_bio);
++    SSL_set_bio(clientssl, s_to_c_bio, c_to_s_bio);
++
++    /* BIOs will now be freed when SSL objects are freed */
++    s_to_c_bio = c_to_s_bio = NULL;
++    s_to_c_fbio = c_to_s_fbio = NULL;
++
++    do {
++        err = SSL_ERROR_WANT_WRITE;
++        while (retc <= 0 && err == SSL_ERROR_WANT_WRITE) {
++            retc = SSL_connect(clientssl);
++            if (retc <= 0)
++                err = SSL_get_error(clientssl, retc);
++        }
++
++        if (retc <= 0 && err != SSL_ERROR_WANT_READ) {
++            printf("SSL_connect() failed %d, %d\n", retc, err);
++            goto error;
++        }
++
++        err = SSL_ERROR_WANT_WRITE;
++        while (rets <= 0 && err == SSL_ERROR_WANT_WRITE) {
++            rets = SSL_accept(serverssl);
++            if (rets <= 0)
++                err = SSL_get_error(serverssl, rets);
++        }
++
++        if (rets <= 0 && err != SSL_ERROR_WANT_READ) {
++            printf("SSL_accept() failed %d, %d\n", retc, err);
++            goto error;
++        }
++        if (++abortctr == MAXLOOPS) {
++            printf("No progress made\n");
++            goto error;
++        }
++    } while (retc <=0 || rets <= 0);
++
++    *sssl = serverssl;
++    *cssl = clientssl;
++
++    return 1;
++
++ error:
++    SSL_free(serverssl);
++    SSL_free(clientssl);
++    BIO_free(s_to_c_bio);
++    BIO_free(c_to_s_bio);
++    BIO_free(s_to_c_fbio);
++    BIO_free(c_to_s_fbio);
++
++    return 0;
++}
+diff --git a/test/ssltestlib.h b/test/ssltestlib.h
+new file mode 100644
+index 0000000..f05878a
+--- /dev/null
++++ b/test/ssltestlib.h
+@@ -0,0 +1,21 @@
++/*
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL license (the "License").  You may not use
++ * this file except in compliance with the License.  You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
++ */
++
++#ifndef HEADER_SSLTESTLIB_H
++# define HEADER_SSLTESTLIB_H
++
++# include <openssl/ssl.h>
++
++int create_ssl_ctx_pair(const SSL_METHOD *sm, const SSL_METHOD *cm,
++                        SSL_CTX **sctx, SSL_CTX **cctx, char *certfile,
++                        char *privkeyfile);
++int create_ssl_connection(SSL_CTX *serverctx, SSL_CTX *clientctx, SSL **sssl,
++                          SSL **cssl, BIO *s_to_c_fbio, BIO *c_to_s_fbio);
++
++#endif /* HEADER_SSLTESTLIB_H */
 diff --git a/test/test_aesni b/test/test_aesni
 deleted file mode 100755
-index 3929c7574bba..000000000000
+index 3929c75..0000000
 --- a/test/test_aesni
 +++ /dev/null
 @@ -1,68 +0,0 @@
@@ -164202,7 +181249,7 @@
 -exit 0
 diff --git a/test/test_padlock b/test/test_padlock
 deleted file mode 100755
-index 5c0f21043ced..000000000000
+index 5c0f210..0000000
 --- a/test/test_padlock
 +++ /dev/null
 @@ -1,64 +0,0 @@
@@ -164272,7 +181319,7 @@
 -exit 0
 diff --git a/test/test_t4 b/test/test_t4
 deleted file mode 100755
-index 5cecb56394f6..000000000000
+index 5cecb56..0000000
 --- a/test/test_t4
 +++ /dev/null
 @@ -1,70 +0,0 @@
@@ -164347,7 +181394,7 @@
 -
 -exit 0
 diff --git a/test/testlib/OpenSSL/Test.pm b/test/testlib/OpenSSL/Test.pm
-index 28c915af7b3e..2cfb22a6533a 100644
+index 28c915a..31f4105 100644
 --- a/test/testlib/OpenSSL/Test.pm
 +++ b/test/testlib/OpenSSL/Test.pm
 @@ -1,3 +1,10 @@
@@ -164416,8 +181463,63 @@
      $f = catfile($directories{SRCAPPS}, at _,$f) unless -x $f;
      return $f;
  }
+@@ -795,12 +821,10 @@ sub __cwd {
+ 	mkpath($dir);
+     }
+ 
+-    # Should we just bail out here as well?  I'm unsure.
+-    return undef unless chdir($dir);
+-
+-    if ($opts{cleanup}) {
+-	rmtree(".", { safe => 0, keep_root => 1 });
+-    }
++    # We are recalculating the directories we keep track of, but need to save
++    # away the result for after having moved into the new directory.
++    my %tmp_directories = ();
++    my %tmp_ENV = ();
+ 
+     # For each of these directory variables, figure out where they are relative
+     # to the directory we want to move to if they aren't absolute (if they are,
+@@ -809,7 +833,7 @@ sub __cwd {
+     foreach (@dirtags) {
+ 	if (!file_name_is_absolute($directories{$_})) {
+ 	    my $newpath = abs2rel(rel2abs($directories{$_}), rel2abs($dir));
+-	    $directories{$_} = $newpath;
++	    $tmp_directories{$_} = $newpath;
+ 	}
+     }
+ 
+@@ -819,10 +843,27 @@ sub __cwd {
+     foreach (@direnv) {
+ 	if (!file_name_is_absolute($ENV{$_})) {
+ 	    my $newpath = abs2rel(rel2abs($ENV{$_}), rel2abs($dir));
+-	    $ENV{$_} = $newpath;
++	    $tmp_ENV{$_} = $newpath;
+ 	}
+     }
+ 
++    # Should we just bail out here as well?  I'm unsure.
++    return undef unless chdir($dir);
++
++    if ($opts{cleanup}) {
++	rmtree(".", { safe => 0, keep_root => 1 });
++    }
++
++    # We put back new values carefully.  Doing the obvious
++    # %directories = ( %tmp_irectories )
++    # will clear out any value that happens to be an absolute path
++    foreach (keys %tmp_directories) {
++        $directories{$_} = $tmp_directories{$_};
++    }
++    foreach (keys %tmp_ENV) {
++        $ENV{$_} = $tmp_ENV{$_};
++    }
++
+     if ($debug) {
+ 	print STDERR "DEBUG: __cwd(), directories and files:\n";
+ 	print STDERR "  \$directories{BLDTEST} = \"$directories{BLDTEST}\"\n";
 diff --git a/test/testlib/OpenSSL/Test/Simple.pm b/test/testlib/OpenSSL/Test/Simple.pm
-index b596e5f2e877..c5a84d5ca365 100644
+index b596e5f..c5a84d5 100644
 --- a/test/testlib/OpenSSL/Test/Simple.pm
 +++ b/test/testlib/OpenSSL/Test/Simple.pm
 @@ -1,3 +1,10 @@
@@ -164432,7 +181534,7 @@
  
  use strict;
 diff --git a/test/testlib/OpenSSL/Test/Utils.pm b/test/testlib/OpenSSL/Test/Utils.pm
-index da35b14955b1..665bfc631082 100644
+index da35b14..665bfc6 100644
 --- a/test/testlib/OpenSSL/Test/Utils.pm
 +++ b/test/testlib/OpenSSL/Test/Utils.pm
 @@ -1,3 +1,10 @@
@@ -164456,15 +181558,13 @@
  #  single string
  sub disabled {
 diff --git a/test/testutil.c b/test/testutil.c
-index 3f6378488027..9a67630fd3f9 100644
+index 3f63784..9a67630 100644
 --- a/test/testutil.c
 +++ b/test/testutil.c
 @@ -1,58 +1,10 @@
 -/*-
 - * Utilities for writing OpenSSL unit tests.
-+/*
-+ * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * More information:
 - * http://wiki.openssl.org/index.php/How_To_Write_Unit_Tests_For_OpenSSL
 - *
@@ -164503,7 +181603,9 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++/*
++ * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -164525,15 +181627,13 @@
  
  #include "testutil.h"
 diff --git a/test/testutil.h b/test/testutil.h
-index 2ae3d7d16c39..0170a226f714 100644
+index 2ae3d7d..0170a22 100644
 --- a/test/testutil.h
 +++ b/test/testutil.h
 @@ -1,58 +1,10 @@
 -/*-
 - * Utilities for writing OpenSSL unit tests.
-+/*
-+ * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
-  *
+- *
 - * More information:
 - * http://wiki.openssl.org/index.php/How_To_Write_Unit_Tests_For_OpenSSL
 - *
@@ -164572,7 +181672,9 @@
 - *    acknowledgment:
 - *    "This product includes software developed by the OpenSSL Project
 - *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-- *
++/*
++ * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
+  *
 - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
@@ -164594,7 +181696,7 @@
  
  #ifndef HEADER_TESTUTIL_H
 diff --git a/test/threadstest.c b/test/threadstest.c
-index e3a9ff5849ca..db864b290016 100644
+index e3a9ff5..db864b2 100644
 --- a/test/threadstest.c
 +++ b/test/threadstest.c
 @@ -1,56 +1,15 @@
@@ -164662,7 +181764,7 @@
  
 diff --git a/test/times b/test/times
 deleted file mode 100644
-index 6b66eb342e6c..000000000000
+index 6b66eb3..0000000
 --- a/test/times
 +++ /dev/null
 @@ -1,113 +0,0 @@
@@ -164781,7 +181883,7 @@
 -
 diff --git a/test/v3ext.c b/test/v3ext.c
 new file mode 100644
-index 000000000000..1c1f788a7314
+index 0000000..1c1f788
 --- /dev/null
 +++ b/test/v3ext.c
 @@ -0,0 +1,42 @@
@@ -164828,7 +181930,7 @@
 +    return ret;
 +}
 diff --git a/test/v3nametest.c b/test/v3nametest.c
-index ac5c9ff432d9..648c1df4dd68 100644
+index ac5c9ff..648c1df 100644
 --- a/test/v3nametest.c
 +++ b/test/v3nametest.c
 @@ -1,3 +1,12 @@
@@ -164845,7 +181947,7 @@
  #include <openssl/x509v3.h>
  #include "../e_os.h"
 diff --git a/test/verify_extra_test.c b/test/verify_extra_test.c
-index 8362de441416..cbc6d8cc8071 100644
+index 8362de4..cbc6d8c 100644
 --- a/test/verify_extra_test.c
 +++ b/test/verify_extra_test.c
 @@ -1,58 +1,10 @@
@@ -164913,7 +182015,7 @@
  
  #include <stdio.h>
 diff --git a/test/wp_test.c b/test/wp_test.c
-index de7aa3dcda03..40859bae2902 100644
+index de7aa3d..7b5cc04 100644
 --- a/test/wp_test.c
 +++ b/test/wp_test.c
 @@ -1,7 +1,12 @@
@@ -164932,9 +182034,29 @@
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>
+@@ -123,19 +128,6 @@ int main(int argc, char *argv[])
+     int i;
+     WHIRLPOOL_CTX ctx;
+ 
+-# ifdef OPENSSL_IA32_SSE2
+-    /*
+-     * Alternative to this is to call OpenSSL_add_all_algorithms... The below
+-     * code is retained exclusively for debugging purposes.
+-     */
+-    {
+-        char *env;
+-
+-        if ((env = getenv("OPENSSL_ia32cap")))
+-            OPENSSL_ia32cap = strtoul(env, NULL, 0);
+-    }
+-# endif
+-
+     fprintf(stdout, "Testing Whirlpool ");
+ 
+     WHIRLPOOL("", 0, md);
 diff --git a/test/x509aux.c b/test/x509aux.c
 new file mode 100644
-index 000000000000..4f00196312b0
+index 0000000..4f00196
 --- /dev/null
 +++ b/test/x509aux.c
 @@ -0,0 +1,226 @@
@@ -165166,7 +182288,7 @@
 +}
 diff --git a/tools/Makefile.in b/tools/Makefile.in
 deleted file mode 100644
-index dec5f750cff7..000000000000
+index dec5f75..0000000
 --- a/tools/Makefile.in
 +++ /dev/null
 @@ -1,62 +0,0 @@
@@ -165233,7 +182355,7 @@
 -
 -# DO NOT DELETE THIS LINE -- make depend depends on it.
 diff --git a/tools/build.info b/tools/build.info
-index 3810fbcbe08f..059e58234576 100644
+index 3810fbc..059e582 100644
 --- a/tools/build.info
 +++ b/tools/build.info
 @@ -1,4 +1,7 @@
@@ -165248,7 +182370,7 @@
  ENDIF
 diff --git a/tools/c_hash b/tools/c_hash
 deleted file mode 100644
-index 5e0a9081755d..000000000000
+index 5e0a908..0000000
 --- a/tools/c_hash
 +++ /dev/null
 @@ -1,9 +0,0 @@
@@ -165263,7 +182385,7 @@
 -done
 diff --git a/tools/c_info b/tools/c_info
 deleted file mode 100644
-index 0e1e633b6fb7..000000000000
+index 0e1e633..0000000
 --- a/tools/c_info
 +++ /dev/null
 @@ -1,12 +0,0 @@
@@ -165281,7 +182403,7 @@
 -done
 diff --git a/tools/c_issuer b/tools/c_issuer
 deleted file mode 100644
-index 55821ab740d5..000000000000
+index 55821ab..0000000
 --- a/tools/c_issuer
 +++ /dev/null
 @@ -1,10 +0,0 @@
@@ -165297,7 +182419,7 @@
 -done
 diff --git a/tools/c_name b/tools/c_name
 deleted file mode 100644
-index 28800c0b30c1..000000000000
+index 28800c0..0000000
 --- a/tools/c_name
 +++ /dev/null
 @@ -1,10 +0,0 @@
@@ -165312,7 +182434,7 @@
 -	echo "$i	$n"
 -done
 diff --git a/tools/c_rehash.in b/tools/c_rehash.in
-index dc66a9d96258..949e44f07510 100644
+index dc66a9d..949e44f 100644
 --- a/tools/c_rehash.in
 +++ b/tools/c_rehash.in
 @@ -1,6 +1,12 @@
@@ -165339,7 +182461,7 @@
  		# Delete any existing symbolic links
 diff --git a/tools/primes.py b/tools/primes.py
 deleted file mode 100644
-index 61de99f0008d..000000000000
+index 61de99f..0000000
 --- a/tools/primes.py
 +++ /dev/null
 @@ -1,21 +0,0 @@
@@ -165365,7 +182487,7 @@
 -print(len(offsets))
 -print(muliplier)
 diff --git a/util/TLSProxy/ClientHello.pm b/util/TLSProxy/ClientHello.pm
-index 0586cf9a54af..ec739d2970a1 100644
+index 0586cf9..ec739d2 100644
 --- a/util/TLSProxy/ClientHello.pm
 +++ b/util/TLSProxy/ClientHello.pm
 @@ -1,55 +1,9 @@
@@ -165430,7 +182552,7 @@
  use strict;
  
 diff --git a/util/TLSProxy/Message.pm b/util/TLSProxy/Message.pm
-index bbb0ad70619a..85d5d6bcd473 100644
+index bbb0ad7..85d5d6b 100644
 --- a/util/TLSProxy/Message.pm
 +++ b/util/TLSProxy/Message.pm
 @@ -1,55 +1,9 @@
@@ -165495,7 +182617,7 @@
  use strict;
  
 diff --git a/util/TLSProxy/NewSessionTicket.pm b/util/TLSProxy/NewSessionTicket.pm
-index 4e8c71381147..e5099851d5a8 100644
+index 4e8c713..e509985 100644
 --- a/util/TLSProxy/NewSessionTicket.pm
 +++ b/util/TLSProxy/NewSessionTicket.pm
 @@ -1,54 +1,9 @@
@@ -165559,7 +182681,7 @@
  use strict;
  
 diff --git a/util/TLSProxy/Proxy.pm b/util/TLSProxy/Proxy.pm
-index fcbe2483c4af..3b03ea9eeb2d 100644
+index fcbe248..e0ce43a 100644
 --- a/util/TLSProxy/Proxy.pm
 +++ b/util/TLSProxy/Proxy.pm
 @@ -1,55 +1,9 @@
@@ -165623,7 +182745,40 @@
  
  use strict;
  use POSIX ":sys_wait_h";
-@@ -272,15 +226,19 @@ sub clientstart
+@@ -207,7 +161,7 @@ sub start
+     }
+     $self->serverpid($pid);
+ 
+-    $self->clientstart;
++    return $self->clientstart;
+ }
+ 
+ sub clientstart
+@@ -234,7 +188,8 @@ sub clientstart
+     if ($proxy_sock) {
+         print "Proxy started on port ".$self->proxy_port."\n";
+     } else {
+-        die "Failed creating proxy socket (".$proxaddr.",".$self->proxy_port."): $!\n";
++        warn "Failed creating proxy socket (".$proxaddr.",".$self->proxy_port."): $!\n";
++        return 0;
+     }
+ 
+     if ($self->execute) {
+@@ -259,8 +214,11 @@ sub clientstart
+     }
+ 
+     # Wait for incoming connection from client
+-    my $client_sock = $proxy_sock->accept()
+-        or die "Failed accepting incoming connection: $!\n";
++    my $client_sock;
++    if(!($client_sock = $proxy_sock->accept())) {
++        warn "Failed accepting incoming connection: $!\n";
++        return 0;
++    }
+ 
+     print "Connection opened\n";
+ 
+@@ -272,22 +230,27 @@ sub clientstart
      do {
          my $servaddr = $self->server_addr;
          $servaddr =~ s/[\[\]]//g; # Remove [ and ]
@@ -165650,8 +182805,25 @@
              $server_sock->close() if defined($server_sock);
              undef $server_sock;
              if ($retry) {
+                 #Sleep for a short while
+                 select(undef, undef, undef, 0.1);
+             } else {
+-                die "Failed to start up server (".$servaddr.",".$self->server_port."): $!\n";
++                warn "Failed to start up server (".$servaddr.",".$self->server_port."): $!\n";
++                return 0;
+             }
+         }
+     } while (!$server_sock);
+@@ -337,6 +300,7 @@ sub clientstart
+               .$self->serverpid."\n";
+         waitpid( $self->serverpid, 0);
+     }
++    return 1;
+ }
+ 
+ sub process_packet
 diff --git a/util/TLSProxy/Record.pm b/util/TLSProxy/Record.pm
-index 124f92497922..2a605e33a7de 100644
+index 124f924..2a605e3 100644
 --- a/util/TLSProxy/Record.pm
 +++ b/util/TLSProxy/Record.pm
 @@ -1,55 +1,9 @@
@@ -165716,7 +182888,7 @@
  use strict;
  
 diff --git a/util/TLSProxy/ServerHello.pm b/util/TLSProxy/ServerHello.pm
-index 4798f2214051..ee2fd727d26c 100644
+index 4798f22..ee2fd72 100644
 --- a/util/TLSProxy/ServerHello.pm
 +++ b/util/TLSProxy/ServerHello.pm
 @@ -1,55 +1,9 @@
@@ -165781,7 +182953,7 @@
  use strict;
  
 diff --git a/util/TLSProxy/ServerKeyExchange.pm b/util/TLSProxy/ServerKeyExchange.pm
-index a3973be96298..6e5b4cdcb42f 100644
+index a3973be..6e5b4cd 100644
 --- a/util/TLSProxy/ServerKeyExchange.pm
 +++ b/util/TLSProxy/ServerKeyExchange.pm
 @@ -1,55 +1,9 @@
@@ -165846,7 +183018,7 @@
  use strict;
  
 diff --git a/util/ck_errf.pl b/util/ck_errf.pl
-index 922e5f644bd0..7fc536786e6d 100755
+index 922e5f6..7fc5367 100755
 --- a/util/ck_errf.pl
 +++ b/util/ck_errf.pl
 @@ -1,5 +1,11 @@
@@ -165864,7 +183036,7 @@
  # 
 diff --git a/util/copy-if-different.pl b/util/copy-if-different.pl
 deleted file mode 100755
-index ec99e084b56a..000000000000
+index ec99e08..0000000
 --- a/util/copy-if-different.pl
 +++ /dev/null
 @@ -1,78 +0,0 @@
@@ -165947,7 +183119,7 @@
 -	}
 -
 diff --git a/util/copy.pl b/util/copy.pl
-index eba6d5815e9c..ef4d8708e247 100644
+index eba6d58..ef4d870 100644
 --- a/util/copy.pl
 +++ b/util/copy.pl
 @@ -1,4 +1,11 @@
@@ -165974,7 +183146,7 @@
  		}
 diff --git a/util/dirname.pl b/util/dirname.pl
 deleted file mode 100644
-index d7a66d96accf..000000000000
+index d7a66d9..0000000
 --- a/util/dirname.pl
 +++ /dev/null
 @@ -1,18 +0,0 @@
@@ -165997,7 +183169,7 @@
 -print $d,"\n";
 -exit(0);
 diff --git a/util/dofile.pl b/util/dofile.pl
-index 983778f170c1..e0333fe56851 100644
+index 983778f..e0333fe 100644
 --- a/util/dofile.pl
 +++ b/util/dofile.pl
 @@ -1,5 +1,11 @@
@@ -166015,7 +183187,7 @@
  # It is assumed that this scripts is called with -Mconfigdata, a module
 diff --git a/util/domd.in b/util/domd.in
 deleted file mode 100755
-index 1569c35eba2d..000000000000
+index 1569c35..0000000
 --- a/util/domd.in
 +++ /dev/null
 @@ -1,26 +0,0 @@
@@ -166047,7 +183219,7 @@
 -esac
 diff --git a/util/extract-names.pl b/util/extract-names.pl
 deleted file mode 100644
-index 0f69335e96c7..000000000000
+index 0f69335..0000000
 --- a/util/extract-names.pl
 +++ /dev/null
 @@ -1,26 +0,0 @@
@@ -166079,7 +183251,7 @@
 -
 diff --git a/util/extract-section.pl b/util/extract-section.pl
 deleted file mode 100644
-index 7a0ba4f69a7a..000000000000
+index 7a0ba4f..0000000
 --- a/util/extract-section.pl
 +++ /dev/null
 @@ -1,12 +0,0 @@
@@ -166097,10 +183269,10 @@
 -
 diff --git a/util/find-doc-nits.pl b/util/find-doc-nits.pl
 new file mode 100755
-index 000000000000..69d7c9352136
+index 0000000..ba60036
 --- /dev/null
 +++ b/util/find-doc-nits.pl
-@@ -0,0 +1,184 @@
+@@ -0,0 +1,185 @@
 +#! /usr/bin/env perl
 +# Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
 +#
@@ -166171,10 +183343,11 @@
 +    my $syn = $1;
 +    foreach my $line ( split /\n+/, $syn ) {
 +        my $sym;
-+        $line =~ s/STACK_OF\([^)]+\)//;
++        $line =~ s/STACK_OF\([^)]+\)/int/g;
++        $line =~ s/__declspec\([^)]+\)//;
 +        if ( $line =~ /typedef.* (\S+);/ ) {
 +            $sym = $1;
-+        } elsif ( $line =~ /#define (\S+)/ ) {
++        } elsif ( $line =~ /#define ([A-Za-z0-9_]+)/ ) {
 +            $sym = $1;
 +        } elsif ( $line =~ /([A-Za-z0-9_]+)\(/ ) {
 +            $sym = $1;
@@ -166287,7 +183460,7 @@
 +exit;
 diff --git a/util/find-undoc-api.pl b/util/find-undoc-api.pl
 new file mode 100755
-index 000000000000..7b2cb973b7a2
+index 0000000..7b2cb97
 --- /dev/null
 +++ b/util/find-undoc-api.pl
 @@ -0,0 +1,82 @@
@@ -166375,7 +183548,7 @@
 +&printem('doc/ssl', 'util/libssl.num');
 diff --git a/util/find-unused-errs b/util/find-unused-errs
 new file mode 100755
-index 000000000000..d36789ef6f77
+index 0000000..d36789e
 --- /dev/null
 +++ b/util/find-unused-errs
 @@ -0,0 +1,31 @@
@@ -166411,7 +183584,7 @@
 +
 +rm $X1 $X2
 diff --git a/util/fipslink.pl b/util/fipslink.pl
-index 7b16e04fb9da..18a91532be53 100644
+index 7b16e04..18a9153 100644
 --- a/util/fipslink.pl
 +++ b/util/fipslink.pl
 @@ -1,4 +1,10 @@
@@ -166427,7 +183600,7 @@
  sub check_env
  	{
 diff --git a/util/incore b/util/incore
-index bb765b1966bd..26fcf95033fc 100755
+index bb765b1..26fcf95 100755
 --- a/util/incore
 +++ b/util/incore
 @@ -1,7 +1,11 @@
@@ -166446,23 +183619,24 @@
  # application binary or shared library.
  
 diff --git a/util/indent.pro b/util/indent.pro
-index b7958e31aac7..71997cb41bf2 100644
+index b7958e3..71997cb 100644
 --- a/util/indent.pro
 +++ b/util/indent.pro
-@@ -187,10 +187,7 @@
+@@ -187,11 +187,8 @@
  -T CRYPTO_EX_DATA_FUNCS
  -T CRYPTO_EX_DATA_IMPL
  -T CRYPTO_EX_dup
 --T CRYPTO_EX_dup
+--T CRYPTO_EX_free
  -T CRYPTO_EX_free
---T CRYPTO_EX_free
+ -T CRYPTO_EX_new
 --T CRYPTO_EX_new
- -T CRYPTO_EX_new
  -T CRYPTO_MEM_LEAK_CB
  -T CRYPTO_THREADID
+ -T CRYPTO_dynlock_value
 diff --git a/util/install.sh b/util/install.sh
 deleted file mode 100755
-index e1d0c982df50..000000000000
+index e1d0c98..0000000
 --- a/util/install.sh
 +++ /dev/null
 @@ -1,108 +0,0 @@
@@ -166575,7 +183749,7 @@
 -
 -exit 0
 diff --git a/util/libcrypto.num b/util/libcrypto.num
-index 533935801e76..6eae0c2c2b0f 100644
+index 5339358..fc118b1 100644
 --- a/util/libcrypto.num
 +++ b/util/libcrypto.num
 @@ -1,5 +1,5 @@
@@ -166585,7 +183759,7 @@
  PEM_read_bio_NETSCAPE_CERT_SEQUENCE     3	1_1_0	EXIST::FUNCTION:
  X509_STORE_CTX_get0_chain               4	1_1_0	EXIST::FUNCTION:
  COMP_expand_block                       5	1_1_0	EXIST::FUNCTION:COMP
-@@ -18,7 +18,6 @@ i2d_ESS_ISSUER_SERIAL                   13	1_1_0	EXIST::FUNCTION:TS
+@@ -18,7 +18,6 @@ PKCS12_it                               16	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FU
  i2d_ASN1_OCTET_STRING                   17	1_1_0	EXIST::FUNCTION:
  EC_KEY_set_private_key                  18	1_1_0	EXIST::FUNCTION:EC
  SRP_VBASE_get_by_user                   19	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SRP
@@ -166593,7 +183767,7 @@
  Camellia_cfb128_encrypt                 21	1_1_0	EXIST::FUNCTION:CAMELLIA
  DES_ncbc_encrypt                        22	1_1_0	EXIST::FUNCTION:DES
  TS_REQ_get_ext_count                    23	1_1_0	EXIST::FUNCTION:TS
-@@ -31,7 +30,7 @@ ASN1_item_d2i_fp                        25	1_1_0	EXIST::FUNCTION:STDIO
+@@ -31,7 +30,7 @@ GENERAL_NAME_get0_otherName             29	1_1_0	EXIST::FUNCTION:
  ASN1_INTEGER_get_uint64                 30	1_1_0	EXIST::FUNCTION:
  EVP_DigestInit_ex                       31	1_1_0	EXIST::FUNCTION:
  CTLOG_new                               32	1_1_0	EXIST::FUNCTION:CT
@@ -166630,7 +183804,7 @@
  ENGINE_ctrl_cmd_string                  59	1_1_0	EXIST::FUNCTION:ENGINE
  ENGINE_finish                           60	1_1_0	EXIST::FUNCTION:ENGINE
  SRP_Calc_client_key                     61	1_1_0	EXIST::FUNCTION:SRP
-@@ -68,7 +66,7 @@ EVP_idea_ofb                            64	1_1_0	EXIST::FUNCTION:IDEA
+@@ -68,7 +66,7 @@ DSO_bind_func                           65	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_meth_get_copy                  66	1_1_0	EXIST::FUNCTION:
  RSA_up_ref                              67	1_1_0	EXIST::FUNCTION:RSA
  EVP_PKEY_meth_set_ctrl                  68	1_1_0	EXIST::FUNCTION:
@@ -166639,7 +183813,7 @@
  BN_GENCB_set                            70	1_1_0	EXIST::FUNCTION:
  BN_generate_prime                       71	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8
  d2i_DSAPrivateKey_fp                    72	1_1_0	EXIST::FUNCTION:DSA,STDIO
-@@ -79,7 +77,7 @@ d2i_DSAPrivateKey_fp                    72	1_1_0	EXIST::FUNCTION:DSA,STDIO
+@@ -79,7 +77,7 @@ ASN1_item_print                         76	1_1_0	EXIST::FUNCTION:
  CONF_set_nconf                          77	1_1_0	EXIST::FUNCTION:
  RAND_set_rand_method                    78	1_1_0	EXIST::FUNCTION:
  BN_GF2m_mod_mul                         79	1_1_0	EXIST::FUNCTION:EC2M
@@ -166648,7 +183822,7 @@
  ASN1_TIME_adj                           81	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_asn1_get0_info                 82	1_1_0	EXIST::FUNCTION:
  BN_add_word                             83	1_1_0	EXIST::FUNCTION:
-@@ -88,14 +86,14 @@ EVP_des_ede                             84	1_1_0	EXIST::FUNCTION:DES
+@@ -88,14 +86,14 @@ EVP_PKEY_add1_attr_by_OBJ               85	1_1_0	EXIST::FUNCTION:
  ASYNC_WAIT_CTX_get_all_fds              86	1_1_0	EXIST::FUNCTION:
  EVP_CIPHER_meth_set_do_cipher           87	1_1_0	EXIST::FUNCTION:
  EVP_set_pw_prompt                       88	1_1_0	EXIST::FUNCTION:UI
@@ -166693,7 +183867,7 @@
  EVP_camellia_128_ctr                    123	1_1_0	EXIST::FUNCTION:CAMELLIA
  EVP_CIPHER_impl_ctx_size                124	1_1_0	EXIST::FUNCTION:
  X509_CRL_get_nextUpdate                 125	1_1_0	EXIST::FUNCTION:
-@@ -132,22 +130,21 @@ ENGINE_set_destroy_function             128	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -132,22 +130,21 @@ ASN1_STRING_TABLE_add                   129	1_1_0	EXIST::FUNCTION:
  d2i_ASIdentifiers                       130	1_1_0	EXIST::FUNCTION:RFC3779
  i2d_PKCS12_bio                          131	1_1_0	EXIST::FUNCTION:
  X509_to_X509_REQ                        132	1_1_0	EXIST::FUNCTION:
@@ -166729,7 +183903,7 @@
  EVP_MD_type                             170	1_1_0	EXIST::FUNCTION:
  EVP_PKCS82PKEY                          171	1_1_0	EXIST::FUNCTION:
  BN_generate_prime_ex                    172	1_1_0	EXIST::FUNCTION:
-@@ -181,7 +177,7 @@ CMS_RecipientInfo_kari_get0_ctx         166	1_1_0	EXIST::FUNCTION:CMS
+@@ -181,7 +177,7 @@ EVP_PKEY_delete_attr                    178	1_1_0	EXIST::FUNCTION:
  EVP_CIPHER_CTX_key_length               179	1_1_0	EXIST::FUNCTION:
  BIO_clear_flags                         180	1_1_0	EXIST::FUNCTION:
  i2d_DISPLAYTEXT                         181	1_1_0	EXIST::FUNCTION:
@@ -166738,7 +183912,7 @@
  i2d_ASN1_PRINTABLESTRING                183	1_1_0	EXIST::FUNCTION:
  X509_VERIFY_PARAM_set_hostflags         184	1_1_0	EXIST::FUNCTION:
  SCT_get0_log_id                         185	1_1_0	EXIST::FUNCTION:CT
-@@ -201,7 +197,7 @@ TS_TST_INFO_new                         191	1_1_0	EXIST::FUNCTION:TS
+@@ -201,7 +197,7 @@ EVP_PKEY_cmp                            197	1_1_0	EXIST::FUNCTION:
  d2i_X509_ALGORS                         198	1_1_0	EXIST::FUNCTION:
  EVP_PKEY2PKCS8                          199	1_1_0	EXIST::FUNCTION:
  BN_nist_mod_256                         200	1_1_0	EXIST::FUNCTION:
@@ -166763,7 +183937,7 @@
  s2i_ASN1_OCTET_STRING                   217	1_1_0	EXIST::FUNCTION:
  POLICYINFO_it                           218	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  POLICYINFO_it                           218	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-@@ -236,10 +232,10 @@ EC_POINT_set_Jprojective_coordinates_GFp 230	1_1_0	EXIST::FUNCTION:EC
+@@ -236,10 +232,10 @@ DIST_POINT_NAME_new                     231	1_1_0	EXIST::FUNCTION:
  X509_LOOKUP_file                        232	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_meth_set_decrypt               233	1_1_0	EXIST::FUNCTION:
  EVP_rc2_ecb                             234	1_1_0	EXIST::FUNCTION:RC2
@@ -166805,7 +183979,7 @@
  CRYPTO_secure_free                      277	1_1_0	EXIST::FUNCTION:
  DSA_print_fp                            278	1_1_0	EXIST::FUNCTION:DSA,STDIO
  X509_get_ext_d2i                        279	1_1_0	EXIST::FUNCTION:
-@@ -302,59 +297,58 @@ CT_POLICY_EVAL_CTX_set0_issuer          295	1_1_0	EXIST::FUNCTION:CT
+@@ -302,59 +297,58 @@ PKCS8_set0_pbe                          297	1_1_0	EXIST::FUNCTION:
  PEM_write_bio_DSA_PUBKEY                298	1_1_0	EXIST::FUNCTION:DSA
  PEM_X509_INFO_read_bio                  299	1_1_0	EXIST::FUNCTION:
  EC_GROUP_get0_order                     300	1_1_0	EXIST::FUNCTION:EC
@@ -166886,7 +184060,7 @@
  X509V3_EXT_REQ_add_nconf                375	1_1_0	EXIST::FUNCTION:
  X509v3_asid_subset                      376	1_1_0	EXIST::FUNCTION:RFC3779
  RSA_check_key_ex                        377	1_1_0	EXIST::FUNCTION:RSA
-@@ -390,10 +384,9 @@ CMS_RecipientInfo_kekri_id_cmp          381	1_1_0	EXIST::FUNCTION:CMS
+@@ -390,10 +384,9 @@ X509_VERIFY_PARAM_get0_peername         382	1_1_0	EXIST::FUNCTION:
  ASN1_PCTX_get_oid_flags                 383	1_1_0	EXIST::FUNCTION:
  CONF_free                               384	1_1_0	EXIST::FUNCTION:
  DSO_get_filename                        385	1_1_0	EXIST::FUNCTION:
@@ -166898,7 +184072,7 @@
  DISPLAYTEXT_free                        390	1_1_0	EXIST::FUNCTION:
  BN_div                                  391	1_1_0	EXIST::FUNCTION:
  RIPEMD160_Update                        392	1_1_0	EXIST::FUNCTION:RMD160
-@@ -402,10 +395,10 @@ PEM_write_bio_CMS                       393	1_1_0	EXIST::FUNCTION:CMS
+@@ -402,10 +395,10 @@ ASN1_OBJECT_new                         394	1_1_0	EXIST::FUNCTION:
  EVP_des_ede3_cfb8                       395	1_1_0	EXIST::FUNCTION:DES
  BIO_dump_indent_fp                      396	1_1_0	EXIST::FUNCTION:STDIO
  X509_NAME_ENTRY_get_data                397	1_1_0	EXIST::FUNCTION:
@@ -166911,7 +184085,7 @@
  ASN1_STRING_print_ex_fp                 402	1_1_0	EXIST::FUNCTION:STDIO
  PKCS7_SIGNED_new                        403	1_1_0	EXIST::FUNCTION:
  CMS_get0_eContentType                   404	1_1_0	EXIST::FUNCTION:CMS
-@@ -419,7 +412,7 @@ TS_TST_INFO_get_ordering                407	1_1_0	EXIST::FUNCTION:TS
+@@ -419,7 +412,7 @@ EVP_CipherFinal_ex                      411	1_1_0	EXIST::FUNCTION:
  d2i_DSA_PUBKEY                          412	1_1_0	EXIST::FUNCTION:DSA
  BN_CTX_get                              413	1_1_0	EXIST::FUNCTION:
  BN_to_montgomery                        414	1_1_0	EXIST::FUNCTION:
@@ -166920,7 +184094,7 @@
  EVP_camellia_128_cfb8                   416	1_1_0	EXIST::FUNCTION:CAMELLIA
  EC_KEY_METHOD_free                      417	1_1_0	EXIST::FUNCTION:EC
  TS_TST_INFO_set_policy_id               418	1_1_0	EXIST::FUNCTION:TS
-@@ -448,17 +441,16 @@ DSA_free                                439	1_1_0	EXIST::FUNCTION:DSA
+@@ -448,17 +441,16 @@ BN_GENCB_new                            440	1_1_0	EXIST::FUNCTION:
  X509_VAL_new                            441	1_1_0	EXIST::FUNCTION:
  NCONF_load                              442	1_1_0	EXIST::FUNCTION:
  ASN1_put_object                         443	1_1_0	EXIST::FUNCTION:
@@ -166941,7 +184115,7 @@
  ENGINE_get_digests                      455	1_1_0	EXIST::FUNCTION:ENGINE
  TS_MSG_IMPRINT_get_algo                 456	1_1_0	EXIST::FUNCTION:TS
  DH_new_method                           457	1_1_0	EXIST::FUNCTION:DH
-@@ -474,9 +466,8 @@ EC_KEY_METHOD_get_init                  464	1_1_0	EXIST::FUNCTION:EC
+@@ -474,9 +466,8 @@ OPENSSL_memcmp                          466	1_1_0	EXIST::FUNCTION:
  BUF_MEM_new                             467	1_1_0	EXIST::FUNCTION:
  DSO_set_filename                        468	1_1_0	EXIST::FUNCTION:
  DH_new                                  469	1_1_0	EXIST::FUNCTION:DH
@@ -166952,7 +184126,7 @@
  SCT_set_signature_nid                   473	1_1_0	EXIST::FUNCTION:CT
  i2d_RSA_PUBKEY_fp                       474	1_1_0	EXIST::FUNCTION:RSA,STDIO
  PKCS12_BAGS_it                          475	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-@@ -489,7 +480,7 @@ ENGINE_register_all_RSA                 477	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -489,7 +480,7 @@ X509_CRL_sort                           480	1_1_0	EXIST::FUNCTION:
  i2d_RSA_PUBKEY_bio                      481	1_1_0	EXIST::FUNCTION:RSA
  ASN1_T61STRING_free                     482	1_1_0	EXIST::FUNCTION:
  PEM_write_CMS                           483	1_1_0	EXIST::FUNCTION:CMS
@@ -166976,7 +184150,7 @@
  X509_CRL_print                          499	1_1_0	EXIST::FUNCTION:
  WHIRLPOOL_Update                        500	1_1_0	EXIST::FUNCTION:WHIRLPOOL
  DSA_get_ex_data                         501	1_1_0	EXIST::FUNCTION:DSA
-@@ -516,18 +507,16 @@ DSA_get_ex_data                         501	1_1_0	EXIST::FUNCTION:DSA
+@@ -516,18 +507,16 @@ PKCS7_cert_from_signer_info             505	1_1_0	EXIST::FUNCTION:
  X509_TRUST_get_trust                    506	1_1_0	EXIST::FUNCTION:
  DES_string_to_key                       507	1_1_0	EXIST::FUNCTION:DES
  ERR_error_string                        508	1_1_0	EXIST::FUNCTION:
@@ -167028,7 +184202,7 @@
  EVP_camellia_128_cfb128                 579	1_1_0	EXIST::FUNCTION:CAMELLIA
  DH_compute_key_padded                   580	1_1_0	EXIST::FUNCTION:DH
  ERR_load_CONF_strings                   581	1_1_0	EXIST::FUNCTION:
-@@ -640,12 +628,11 @@ ERR_load_RSA_strings                    624	1_1_0	EXIST::FUNCTION:RSA
+@@ -640,12 +628,11 @@ CRYPTO_secure_malloc_done               625	1_1_0	EXIST::FUNCTION:
  RSA_OAEP_PARAMS_new                     626	1_1_0	EXIST::FUNCTION:RSA
  X509_NAME_free                          627	1_1_0	EXIST::FUNCTION:
  PKCS12_set_mac                          628	1_1_0	EXIST::FUNCTION:
@@ -167043,7 +184217,7 @@
  d2i_X509_REQ_fp                         635	1_1_0	EXIST::FUNCTION:STDIO
  DH_OpenSSL                              636	1_1_0	EXIST::FUNCTION:DH
  BN_get_rfc3526_prime_8192               637	1_1_0	EXIST::FUNCTION:
-@@ -654,26 +641,25 @@ DH_OpenSSL                              636	1_1_0	EXIST::FUNCTION:DH
+@@ -654,26 +641,25 @@ X509_REVOKED_it                         638	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:F
  CRYPTO_THREAD_write_lock                639	1_1_0	EXIST::FUNCTION:
  X509V3_NAME_from_section                640	1_1_0	EXIST::FUNCTION:
  EC_POINT_set_compressed_coordinates_GFp 641	1_1_0	EXIST::FUNCTION:EC
@@ -167075,7 +184249,7 @@
  IDEA_encrypt                            662	1_1_0	EXIST::FUNCTION:IDEA
  CRYPTO_nistcts128_encrypt_block         663	1_1_0	EXIST::FUNCTION:
  EVP_MD_do_all                           664	1_1_0	EXIST::FUNCTION:
-@@ -686,8 +672,8 @@ ENGINE_set_table_flags                  667	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -686,8 +672,8 @@ PKCS5_pbe_set0_algor                    670	1_1_0	EXIST::FUNCTION:
  ENGINE_get_table_flags                  671	1_1_0	EXIST::FUNCTION:ENGINE
  PKCS12_MAC_DATA_new                     672	1_1_0	EXIST::FUNCTION:
  X509_chain_up_ref                       673	1_1_0	EXIST::FUNCTION:
@@ -167086,7 +184260,7 @@
  PKCS12_add_localkeyid                   675	1_1_0	EXIST::FUNCTION:
  PKCS12_SAFEBAG_get0_type                676	1_1_0	EXIST::FUNCTION:
  X509_TRUST_set_default                  677	1_1_0	EXIST::FUNCTION:
-@@ -704,11 +690,11 @@ TS_REQ_get_ext_d2i                      685	1_1_0	EXIST::FUNCTION:TS
+@@ -704,11 +690,11 @@ AES_ige_encrypt                         686	1_1_0	EXIST::FUNCTION:
  d2i_SXNET                               687	1_1_0	EXIST::FUNCTION:
  CTLOG_get0_log_id                       688	1_1_0	EXIST::FUNCTION:CT
  CMS_RecipientInfo_ktri_get0_signer_id   689	1_1_0	EXIST::FUNCTION:CMS
@@ -167100,7 +184274,7 @@
  ASN1_INTEGER_free                       695	1_1_0	EXIST::FUNCTION:
  BN_get0_nist_prime_224                  696	1_1_0	EXIST::FUNCTION:
  OPENSSL_isservice                       697	1_1_0	EXIST::FUNCTION:
-@@ -727,16 +713,15 @@ d2i_ASIdOrRange                         708	1_1_0	EXIST::FUNCTION:RFC3779
+@@ -727,16 +713,15 @@ i2s_ASN1_OCTET_STRING                   709	1_1_0	EXIST::FUNCTION:
  X509_add1_reject_object                 710	1_1_0	EXIST::FUNCTION:
  ERR_set_mark                            711	1_1_0	EXIST::FUNCTION:
  d2i_ASN1_VISIBLESTRING                  712	1_1_0	EXIST::FUNCTION:
@@ -167146,7 +184320,7 @@
  TS_TST_INFO_get_ext_d2i                 747	1_1_0	EXIST::FUNCTION:TS
  RSA_check_key                           748	1_1_0	EXIST::FUNCTION:RSA
  TS_MSG_IMPRINT_set_algo                 749	1_1_0	EXIST::FUNCTION:TS
-@@ -774,22 +759,22 @@ CTLOG_STORE_new                         754	1_1_0	EXIST::FUNCTION:CT
+@@ -774,22 +759,22 @@ EVP_CIPHER_meth_set_cleanup             755	1_1_0	EXIST::FUNCTION:
  d2i_PKCS12_SAFEBAG                      756	1_1_0	EXIST::FUNCTION:
  EVP_MD_pkey_type                        757	1_1_0	EXIST::FUNCTION:
  X509_policy_node_get0_qualifiers        758	1_1_0	EXIST::FUNCTION:
@@ -167206,7 +184380,7 @@
  d2i_X509_REQ_bio                        830	1_1_0	EXIST::FUNCTION:
  EVP_PBE_cleanup                         831	1_1_0	EXIST::FUNCTION:
  X509_STORE_CTX_get0_current_crl         832	1_1_0	EXIST::FUNCTION:
-@@ -854,20 +838,19 @@ CMS_get0_SignerInfos                    833	1_1_0	EXIST::FUNCTION:CMS
+@@ -854,20 +838,19 @@ EVP_PKEY_paramgen                       834	1_1_0	EXIST::FUNCTION:
  PEM_write_PKCS8PrivateKey_nid           835	1_1_0	EXIST::FUNCTION:STDIO
  PKCS7_ATTR_VERIFY_it                    836	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  PKCS7_ATTR_VERIFY_it                    836	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
@@ -167230,7 +184404,7 @@
  ASN1_TIME_check                         851	1_1_0	EXIST::FUNCTION:
  PKCS7_DIGEST_new                        852	1_1_0	EXIST::FUNCTION:
  i2d_TS_TST_INFO_fp                      853	1_1_0	EXIST::FUNCTION:STDIO,TS
-@@ -881,12 +864,12 @@ ECDSA_sign_ex                           859	1_1_0	EXIST::FUNCTION:EC
+@@ -881,12 +864,12 @@ TXT_DB_insert                           860	1_1_0	EXIST::FUNCTION:
  EC_POINTs_make_affine                   861	1_1_0	EXIST::FUNCTION:EC
  RSA_padding_add_PKCS1_PSS               862	1_1_0	EXIST::FUNCTION:RSA
  BF_options                              863	1_1_0	EXIST::FUNCTION:BF
@@ -167246,7 +184420,7 @@
  RSA_set_default_method                  869	1_1_0	EXIST::FUNCTION:RSA
  BN_GF2m_mod_sqrt_arr                    870	1_1_0	EXIST::FUNCTION:EC2M
  X509_get0_extensions                    871	1_1_0	EXIST::FUNCTION:
-@@ -901,7 +884,6 @@ EC_KEY_METHOD_set_compute_key           877	1_1_0	EXIST::FUNCTION:EC
+@@ -901,7 +884,6 @@ X509_REQ_INFO_free                      878	1_1_0	EXIST::FUNCTION:
  CMS_ReceiptRequest_create0              879	1_1_0	EXIST::FUNCTION:CMS
  EVP_MD_meth_set_cleanup                 880	1_1_0	EXIST::FUNCTION:
  EVP_aes_128_xts                         881	1_1_0	EXIST::FUNCTION:
@@ -167284,7 +184458,7 @@
  i2d_PKCS7_RECIP_INFO                    924	1_1_0	EXIST::FUNCTION:
  PKCS1_MGF1                              925	1_1_0	EXIST::FUNCTION:RSA
  BIO_vsnprintf                           926	1_1_0	EXIST::FUNCTION:
-@@ -965,7 +946,6 @@ i2d_X509_CRL_fp                         939	1_1_0	EXIST::FUNCTION:STDIO
+@@ -965,7 +946,6 @@ PKCS7_get0_signers                      940	1_1_0	EXIST::FUNCTION:
  X509_STORE_CTX_set_ex_data              941	1_1_0	EXIST::FUNCTION:
  TS_VERIFY_CTS_set_certs                 942	1_1_0	EXIST::FUNCTION:TS
  BN_MONT_CTX_copy                        943	1_1_0	EXIST::FUNCTION:
@@ -167292,7 +184466,7 @@
  OPENSSL_INIT_new                        945	1_1_0	EXIST::FUNCTION:
  TS_ACCURACY_dup                         946	1_1_0	EXIST::FUNCTION:TS
  i2d_ECPrivateKey                        947	1_1_0	EXIST::FUNCTION:EC
-@@ -977,7 +957,7 @@ TS_VERIFY_CTX_cleanup                   949	1_1_0	EXIST::FUNCTION:TS
+@@ -977,7 +957,7 @@ ASN1_PRINTABLE_it                       951	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:F
  EVP_VerifyFinal                         952	1_1_0	EXIST::FUNCTION:
  TS_ASN1_INTEGER_print_bio               953	1_1_0	EXIST::FUNCTION:TS
  X509_NAME_ENTRY_set_object              954	1_1_0	EXIST::FUNCTION:
@@ -167311,7 +184485,7 @@
  BN_is_bit_set                           978	1_1_0	EXIST::FUNCTION:
  AES_ofb128_encrypt                      979	1_1_0	EXIST::FUNCTION:
  X509_STORE_add_lookup                   980	1_1_0	EXIST::FUNCTION:
-@@ -1015,7 +994,7 @@ i2d_TS_STATUS_INFO                      984	1_1_0	EXIST::FUNCTION:TS
+@@ -1015,7 +994,7 @@ ISSUING_DIST_POINT_free                 987	1_1_0	EXIST::FUNCTION:
  ASN1_UTCTIME_free                       988	1_1_0	EXIST::FUNCTION:
  ERR_load_TS_strings                     989	1_1_0	EXIST::FUNCTION:TS
  BN_nist_mod_func                        990	1_1_0	EXIST::FUNCTION:
@@ -167320,7 +184494,7 @@
  DSA_SIG_new                             992	1_1_0	EXIST::FUNCTION:DSA
  DH_get_default_method                   993	1_1_0	EXIST::FUNCTION:DH
  PEM_proc_type                           994	1_1_0	EXIST::FUNCTION:
-@@ -1028,11 +1007,11 @@ SEED_cfb128_encrypt                     999	1_1_0	EXIST::FUNCTION:SEED
+@@ -1028,11 +1007,11 @@ ASN1_BIT_STRING_it                      1000	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION
  ASN1_BIT_STRING_it                      1000	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  PKCS12_decrypt_skey                     1001	1_1_0	EXIST::FUNCTION:
  ENGINE_register_EC                      1002	1_1_0	EXIST::FUNCTION:ENGINE
@@ -167334,7 +184508,7 @@
  BN_X931_generate_Xpq                    1008	1_1_0	EXIST::FUNCTION:
  ASN1_item_digest                        1009	1_1_0	EXIST::FUNCTION:
  X509_VERIFY_PARAM_set_trust             1010	1_1_0	EXIST::FUNCTION:
-@@ -1043,13 +1022,12 @@ i2d_RSAPublicKey_bio                    1005	1_1_0	EXIST::FUNCTION:RSA
+@@ -1043,13 +1022,12 @@ ASN1_UTCTIME_it                         1013	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
  i2d_DSA_PUBKEY_fp                       1014	1_1_0	EXIST::FUNCTION:DSA,STDIO
  X509at_get_attr_by_OBJ                  1015	1_1_0	EXIST::FUNCTION:
  EVP_MD_CTX_copy_ex                      1016	1_1_0	EXIST::FUNCTION:
@@ -167360,7 +184534,7 @@
  SMIME_text                              1042	1_1_0	EXIST::FUNCTION:
  PKCS7_add_recipient_info                1043	1_1_0	EXIST::FUNCTION:
  BN_get_word                             1044	1_1_0	EXIST::FUNCTION:
-@@ -1103,7 +1080,7 @@ CRYPTO_mem_debug_malloc                 1066	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG
+@@ -1103,7 +1080,7 @@ X509_EXTENSION_set_data                 1071	1_1_0	EXIST::FUNCTION:
  ENGINE_get_EC                           1072	1_1_0	EXIST::FUNCTION:ENGINE
  ASN1_STRING_copy                        1073	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_encrypt_old                    1074	1_1_0	EXIST::FUNCTION:
@@ -167378,7 +184552,16 @@
  ASN1_NULL_it                            1098	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  ASN1_NULL_it                            1098	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  X509_REQ_get_pubkey                     1099	1_1_0	EXIST::FUNCTION:
-@@ -1160,7 +1137,7 @@ RSA_OAEP_PARAMS_free                    1124	1_1_0	EXIST::FUNCTION:RSA
+@@ -1149,7 +1126,7 @@ i2d_X509_EXTENSIONS                     1116	1_1_0	EXIST::FUNCTION:
+ X509_STORE_CTX_get0_store               1117	1_1_0	EXIST::FUNCTION:
+ PKCS12_pack_p7data                      1118	1_1_0	EXIST::FUNCTION:
+ RSA_print_fp                            1119	1_1_0	EXIST::FUNCTION:RSA,STDIO
+-OPENSSL_INIT_set_config_filename        1120	1_1_0	EXIST::FUNCTION:STDIO
++OPENSSL_INIT_set_config_appname         1120	1_1_0	EXIST::FUNCTION:STDIO
+ EC_KEY_print_fp                         1121	1_1_0	EXIST::FUNCTION:EC,STDIO
+ BIO_dup_chain                           1122	1_1_0	EXIST::FUNCTION:
+ PKCS8_PRIV_KEY_INFO_it                  1123	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+@@ -1160,7 +1137,7 @@ CRYPTO_cts128_encrypt                   1126	1_1_0	EXIST::FUNCTION:
  RC2_encrypt                             1127	1_1_0	EXIST::FUNCTION:RC2
  PEM_write                               1128	1_1_0	EXIST::FUNCTION:STDIO
  EVP_CIPHER_meth_get_get_asn1_params     1129	1_1_0	EXIST::FUNCTION:
@@ -167387,7 +184570,7 @@
  d2i_ASN1_UTF8STRING                     1131	1_1_0	EXIST::FUNCTION:
  EXTENDED_KEY_USAGE_it                   1132	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  EXTENDED_KEY_USAGE_it                   1132	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-@@ -1175,8 +1152,8 @@ RSA_new                                 1139	1_1_0	EXIST::FUNCTION:RSA
+@@ -1175,8 +1152,8 @@ ASN1_STRING_set_by_NID                  1140	1_1_0	EXIST::FUNCTION:
  PEM_write_bio_PKCS7                     1141	1_1_0	EXIST::FUNCTION:
  MDC2_Final                              1142	1_1_0	EXIST::FUNCTION:MDC2
  SMIME_crlf_copy                         1143	1_1_0	EXIST::FUNCTION:
@@ -167398,7 +184581,7 @@
  X509_load_cert_crl_file                 1146	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_new_mac_key                    1147	1_1_0	EXIST::FUNCTION:
  DIST_POINT_new                          1148	1_1_0	EXIST::FUNCTION:
-@@ -1187,7 +1164,7 @@ PKCS5_v2_scrypt_keyivgen                1151	1_1_0	EXIST::FUNCTION:SCRYPT
+@@ -1187,7 +1164,7 @@ X509_STORE_CTX_set0_param               1152	1_1_0	EXIST::FUNCTION:
  DES_check_key_parity                    1153	1_1_0	EXIST::FUNCTION:DES
  EVP_aes_256_ocb                         1154	1_1_0	EXIST::FUNCTION:OCB
  X509_VAL_free                           1155	1_1_0	EXIST::FUNCTION:
@@ -167407,7 +184590,7 @@
  PEM_write_RSA_PUBKEY                    1157	1_1_0	EXIST::FUNCTION:RSA
  PKCS12_SAFEBAG_get0_p8inf               1158	1_1_0	EXIST::FUNCTION:
  X509_CRL_set_issuer_name                1159	1_1_0	EXIST::FUNCTION:
-@@ -1211,7 +1188,7 @@ TS_TST_INFO_get_serial                  1173	1_1_0	EXIST::FUNCTION:TS
+@@ -1211,7 +1188,7 @@ SHA256                                  1175	1_1_0	EXIST::FUNCTION:
  X509_LOOKUP_hash_dir                    1176	1_1_0	EXIST::FUNCTION:
  ASN1_BIT_STRING_check                   1177	1_1_0	EXIST::FUNCTION:
  ENGINE_set_default_RAND                 1178	1_1_0	EXIST::FUNCTION:ENGINE
@@ -167416,7 +184599,7 @@
  TS_TST_INFO_add_ext                     1180	1_1_0	EXIST::FUNCTION:TS
  EVP_aes_192_ccm                         1181	1_1_0	EXIST::FUNCTION:
  X509V3_add_value                        1182	1_1_0	EXIST::FUNCTION:
-@@ -1241,7 +1218,7 @@ EVP_cast5_cfb64                         1204	1_1_0	EXIST::FUNCTION:CAST
+@@ -1241,7 +1218,7 @@ OPENSSL_uni2asc                         1205	1_1_0	EXIST::FUNCTION:
  SCT_validation_status_string            1206	1_1_0	EXIST::FUNCTION:CT
  PKCS7_add_attribute                     1207	1_1_0	EXIST::FUNCTION:
  ENGINE_register_DSA                     1208	1_1_0	EXIST::FUNCTION:ENGINE
@@ -167439,7 +184622,7 @@
  i2d_X509_AUX                            1221	1_1_0	EXIST::FUNCTION:
  RSA_verify_PKCS1_PSS_mgf1               1222	1_1_0	EXIST::FUNCTION:RSA
  X509_time_adj                           1223	1_1_0	EXIST::FUNCTION:
-@@ -1281,24 +1258,22 @@ PEM_read_bio_DSAparams                  1242	1_1_0	EXIST::FUNCTION:DSA
+@@ -1281,24 +1258,22 @@ X509_CRL_cmp                            1243	1_1_0	EXIST::FUNCTION:
  DSO_METHOD_openssl                      1244	1_1_0	EXIST::FUNCTION:
  d2i_PrivateKey_fp                       1245	1_1_0	EXIST::FUNCTION:STDIO
  i2d_NETSCAPE_CERT_SEQUENCE              1246	1_1_0	EXIST::FUNCTION:
@@ -167466,7 +184649,7 @@
  d2i_DISPLAYTEXT                         1265	1_1_0	EXIST::FUNCTION:
  HMAC_CTX_copy                           1266	1_1_0	EXIST::FUNCTION:
  CRYPTO_gcm128_init                      1267	1_1_0	EXIST::FUNCTION:
-@@ -1319,15 +1294,15 @@ CONF_dump_fp                            1278	1_1_0	EXIST::FUNCTION:STDIO
+@@ -1319,15 +1294,15 @@ ASN1_TIME_free                          1281	1_1_0	EXIST::FUNCTION:
  i2o_SCT_LIST                            1282	1_1_0	EXIST::FUNCTION:CT
  AES_encrypt                             1283	1_1_0	EXIST::FUNCTION:
  MD5_Init                                1284	1_1_0	EXIST::FUNCTION:MD5
@@ -167485,7 +184668,7 @@
  BN_num_bits                             1293	1_1_0	EXIST::FUNCTION:
  X509_CRL_METHOD_free                    1294	1_1_0	EXIST::FUNCTION:
  PEM_read_NETSCAPE_CERT_SEQUENCE         1295	1_1_0	EXIST::FUNCTION:
-@@ -1342,11 +1317,11 @@ PEM_write_DSA_PUBKEY                    1302	1_1_0	EXIST::FUNCTION:DSA
+@@ -1342,11 +1317,11 @@ BN_rshift1                              1303	1_1_0	EXIST::FUNCTION:
  i2d_PKCS7_ENVELOPE                      1304	1_1_0	EXIST::FUNCTION:
  PBKDF2PARAM_it                          1305	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  PBKDF2PARAM_it                          1305	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
@@ -167499,7 +184682,7 @@
  RC2_decrypt                             1310	1_1_0	EXIST::FUNCTION:RC2
  OPENSSL_atexit                          1311	1_1_0	EXIST::FUNCTION:
  CMS_add_standard_smimecap               1312	1_1_0	EXIST::FUNCTION:CMS
-@@ -1355,11 +1330,11 @@ CMS_add_standard_smimecap               1312	1_1_0	EXIST::FUNCTION:CMS
+@@ -1355,11 +1330,11 @@ BN_BLINDING_set_flags                   1314	1_1_0	EXIST::FUNCTION:
  ERR_peek_last_error                     1315	1_1_0	EXIST::FUNCTION:
  ENGINE_set_cmd_defns                    1316	1_1_0	EXIST::FUNCTION:ENGINE
  d2i_ASN1_NULL                           1317	1_1_0	EXIST::FUNCTION:
@@ -167524,7 +184707,7 @@
  EVP_PKEY_encrypt                        1351	1_1_0	EXIST::FUNCTION:
  CRYPTO_cfb128_8_encrypt                 1352	1_1_0	EXIST::FUNCTION:
  SXNET_get_id_INTEGER                    1353	1_1_0	EXIST::FUNCTION:
-@@ -1397,7 +1372,6 @@ ENGINE_get_flags                        1348	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -1397,7 +1372,6 @@ i2v_GENERAL_NAME                        1355	1_1_0	EXIST::FUNCTION:
  PKCS7_ENC_CONTENT_new                   1356	1_1_0	EXIST::FUNCTION:
  CRYPTO_realloc                          1357	1_1_0	EXIST::FUNCTION:
  BIO_ctrl_pending                        1358	1_1_0	EXIST::FUNCTION:
@@ -167532,7 +184715,7 @@
  EVP_MD_meth_new                         1360	1_1_0	EXIST::FUNCTION:
  X509_sign_ctx                           1361	1_1_0	EXIST::FUNCTION:
  BN_is_odd                               1362	1_1_0	EXIST::FUNCTION:
-@@ -1407,11 +1381,9 @@ ENGINE_get_flags                        1348	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -1407,11 +1381,9 @@ ASN1_SCTX_get_app_data                  1365	1_1_0	EXIST::FUNCTION:
  X509_get_default_cert_file_env          1366	1_1_0	EXIST::FUNCTION:
  X509v3_addr_validate_resource_set       1367	1_1_0	EXIST::FUNCTION:RFC3779
  d2i_X509_VAL                            1368	1_1_0	EXIST::FUNCTION:
@@ -167545,7 +184728,7 @@
  BN_GENCB_set_old                        1373	1_1_0	EXIST::FUNCTION:
  PEM_write_bio_X509                      1374	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_asn1_free                      1375	1_1_0	EXIST::FUNCTION:
-@@ -1421,18 +1393,17 @@ ENGINE_unregister_DH                    1376	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -1421,18 +1393,17 @@ PROXY_CERT_INFO_EXTENSION_it            1377	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
  CT_POLICY_EVAL_CTX_set0_cert            1378	1_1_0	EXIST::FUNCTION:CT
  X509_NAME_hash                          1379	1_1_0	EXIST::FUNCTION:
  SCT_set_timestamp                       1380	1_1_0	EXIST::FUNCTION:CT
@@ -167566,7 +184749,7 @@
  X509_CRL_add0_revoked                   1393	1_1_0	EXIST::FUNCTION:
  GENERAL_NAME_set0_value                 1394	1_1_0	EXIST::FUNCTION:
  X509_ATTRIBUTE_dup                      1395	1_1_0	EXIST::FUNCTION:
-@@ -1442,7 +1413,7 @@ EC_GROUP_check_discriminant             1396	1_1_0	EXIST::FUNCTION:EC
+@@ -1442,7 +1413,7 @@ PEM_read_bio_PrivateKey                 1398	1_1_0	EXIST::FUNCTION:
  d2i_PKCS7_ENCRYPT                       1399	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_CTX_ctrl                       1400	1_1_0	EXIST::FUNCTION:
  X509_REQ_set_pubkey                     1401	1_1_0	EXIST::FUNCTION:
@@ -167575,7 +184758,7 @@
  X509_REQ_add_extensions_nid             1403	1_1_0	EXIST::FUNCTION:
  PEM_X509_INFO_write_bio                 1404	1_1_0	EXIST::FUNCTION:
  BIO_dump_cb                             1405	1_1_0	EXIST::FUNCTION:
-@@ -1455,7 +1426,7 @@ SRP_Calc_server_key                     1409	1_1_0	EXIST::FUNCTION:SRP
+@@ -1455,7 +1426,7 @@ BIO_set_ex_data                         1411	1_1_0	EXIST::FUNCTION:
  SHA512                                  1412	1_1_0	EXIST:!VMSVAX:FUNCTION:
  X509_STORE_CTX_get_explicit_policy      1413	1_1_0	EXIST::FUNCTION:
  EVP_DecodeBlock                         1414	1_1_0	EXIST::FUNCTION:
@@ -167584,7 +184767,7 @@
  EVP_MD_CTX_reset                        1416	1_1_0	EXIST::FUNCTION:
  X509_NAME_new                           1417	1_1_0	EXIST::FUNCTION:
  ASN1_item_pack                          1418	1_1_0	EXIST::FUNCTION:
-@@ -1469,11 +1440,11 @@ d2i_RSA_PUBKEY_fp                       1423	1_1_0	EXIST::FUNCTION:RSA,STDIO
+@@ -1469,11 +1440,11 @@ CRYPTO_nistcts128_encrypt               1425	1_1_0	EXIST::FUNCTION:
  CONF_modules_finish                     1426	1_1_0	EXIST::FUNCTION:
  BN_value_one                            1427	1_1_0	EXIST::FUNCTION:
  RSA_padding_add_SSLv23                  1428	1_1_0	EXIST::FUNCTION:RSA
@@ -167626,7 +184809,7 @@
  BN_nist_mod_192                         1459	1_1_0	EXIST::FUNCTION:
  i2d_PKCS7_ISSUER_AND_SERIAL             1460	1_1_0	EXIST::FUNCTION:
  X509V3_EXT_nconf                        1461	1_1_0	EXIST::FUNCTION:
-@@ -1514,22 +1484,22 @@ TS_CONF_get_tsa_section                 1467	1_1_0	EXIST::FUNCTION:TS
+@@ -1514,22 +1484,22 @@ i2d_PKCS7_SIGNER_INFO                   1468	1_1_0	EXIST::FUNCTION:
  EVP_get_pw_prompt                       1469	1_1_0	EXIST::FUNCTION:UI
  BN_bn2bin                               1470	1_1_0	EXIST::FUNCTION:
  d2i_ASN1_BIT_STRING                     1471	1_1_0	EXIST::FUNCTION:
@@ -167663,7 +184846,7 @@
  ENGINE_get_DSA                          1499	1_1_0	EXIST::FUNCTION:ENGINE
  ASYNC_get_wait_ctx                      1500	1_1_0	EXIST::FUNCTION:
  ENGINE_set_load_privkey_function        1501	1_1_0	EXIST::FUNCTION:ENGINE
-@@ -1553,7 +1523,7 @@ ENGINE_set_load_privkey_function        1501	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -1553,7 +1523,7 @@ EVP_CIPHER_CTX_rand_key                 1506	1_1_0	EXIST::FUNCTION:
  AES_set_encrypt_key                     1507	1_1_0	EXIST::FUNCTION:
  ASN1_UTCTIME_new                        1508	1_1_0	EXIST::FUNCTION:
  AES_cbc_encrypt                         1509	1_1_0	EXIST::FUNCTION:
@@ -167672,7 +184855,7 @@
  EVP_PKEY_asn1_find                      1511	1_1_0	EXIST::FUNCTION:
  d2i_ASN1_GENERALIZEDTIME                1512	1_1_0	EXIST::FUNCTION:
  OPENSSL_cleanup                         1513	1_1_0	EXIST::FUNCTION:
-@@ -1565,7 +1535,7 @@ SCT_get_source                          1515	1_1_0	EXIST::FUNCTION:CT
+@@ -1565,7 +1535,7 @@ BIO_free                                1518	1_1_0	EXIST::FUNCTION:
  i2d_X509_ALGOR                          1519	1_1_0	EXIST::FUNCTION:
  X509_STORE_CTX_set0_crls                1520	1_1_0	EXIST::FUNCTION:
  ASYNC_pause_job                         1521	1_1_0	EXIST::FUNCTION:
@@ -167697,7 +184880,7 @@
  CMS_SignerInfo_sign                     1554	1_1_0	EXIST::FUNCTION:CMS
  ASN1_item_i2d_bio                       1555	1_1_0	EXIST::FUNCTION:
  EVP_CIPHER_CTX_block_size               1556	1_1_0	EXIST::FUNCTION:
-@@ -1607,7 +1577,7 @@ TS_CONF_set_default_engine              1558	1_1_0	EXIST::FUNCTION:ENGINE,TS
+@@ -1607,7 +1577,7 @@ EVP_MD_meth_set_app_datasize            1560	1_1_0	EXIST::FUNCTION:
  DSO_free                                1561	1_1_0	EXIST::FUNCTION:
  TS_TST_INFO_get_tsa                     1562	1_1_0	EXIST::FUNCTION:TS
  EC_GROUP_check                          1563	1_1_0	EXIST::FUNCTION:EC
@@ -167706,7 +184889,7 @@
  TS_RESP_CTX_set_extension_cb            1565	1_1_0	EXIST::FUNCTION:TS
  EVP_CIPHER_CTX_nid                      1566	1_1_0	EXIST::FUNCTION:
  TS_RESP_CTX_add_md                      1567	1_1_0	EXIST::FUNCTION:TS
-@@ -1616,8 +1586,8 @@ DES_set_key                             1568	1_1_0	EXIST::FUNCTION:DES
+@@ -1616,8 +1586,8 @@ X509V3_extensions_print                 1569	1_1_0	EXIST::FUNCTION:
  PEM_do_header                           1570	1_1_0	EXIST::FUNCTION:
  i2d_re_X509_CRL_tbs                     1571	1_1_0	EXIST::FUNCTION:
  BIO_method_name                         1572	1_1_0	EXIST::FUNCTION:
@@ -167717,7 +184900,7 @@
  d2i_X509_NAME_ENTRY                     1575	1_1_0	EXIST::FUNCTION:
  X509_trusted                            1576	1_1_0	EXIST::FUNCTION:
  X509_TRUST_get_flags                    1577	1_1_0	EXIST::FUNCTION:
-@@ -1626,15 +1596,14 @@ DES_set_key                             1568	1_1_0	EXIST::FUNCTION:DES
+@@ -1626,15 +1596,14 @@ PEM_write_X509_REQ_NEW                  1579	1_1_0	EXIST::FUNCTION:
  CONF_imodule_set_usr_data               1580	1_1_0	EXIST::FUNCTION:
  d2i_TS_RESP_fp                          1581	1_1_0	EXIST::FUNCTION:STDIO,TS
  X509_policy_tree_get0_user_policies     1582	1_1_0	EXIST::FUNCTION:
@@ -167735,7 +184918,7 @@
  ERR_get_error_line_data                 1592	1_1_0	EXIST::FUNCTION:
  CTLOG_get0_name                         1593	1_1_0	EXIST::FUNCTION:CT
  ASN1_TBOOLEAN_it                        1594	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-@@ -1642,7 +1611,6 @@ CTLOG_get0_name                         1593	1_1_0	EXIST::FUNCTION:CT
+@@ -1642,7 +1611,6 @@ ASN1_TBOOLEAN_it                        1594	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
  RC2_set_key                             1595	1_1_0	EXIST::FUNCTION:RC2
  X509_REVOKED_get_ext_by_NID             1596	1_1_0	EXIST::FUNCTION:
  RSA_padding_add_none                    1597	1_1_0	EXIST::FUNCTION:RSA
@@ -167787,7 +184970,7 @@
  X509_STORE_CTX_get1_issuer              1644	1_1_0	EXIST::FUNCTION:
  EVP_Digest                              1645	1_1_0	EXIST::FUNCTION:
  CRYPTO_set_ex_data                      1646	1_1_0	EXIST::FUNCTION:
-@@ -1697,7 +1664,6 @@ CMS_ContentInfo_it                      1642	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
+@@ -1697,7 +1664,6 @@ BN_lshift1                              1648	1_1_0	EXIST::FUNCTION:
  i2d_EDIPARTYNAME                        1649	1_1_0	EXIST::FUNCTION:
  X509_policy_tree_get0_policies          1650	1_1_0	EXIST::FUNCTION:
  X509at_add1_attr                        1651	1_1_0	EXIST::FUNCTION:
@@ -167795,7 +184978,7 @@
  X509_get_ex_data                        1653	1_1_0	EXIST::FUNCTION:
  RSA_set_method                          1654	1_1_0	EXIST::FUNCTION:RSA
  X509_REVOKED_dup                        1655	1_1_0	EXIST::FUNCTION:
-@@ -1711,15 +1677,14 @@ EC_GROUP_free                           1659	1_1_0	EXIST::FUNCTION:EC
+@@ -1711,15 +1677,14 @@ BIO_asn1_get_suffix                     1662	1_1_0	EXIST::FUNCTION:
  X509_VERIFY_PARAM_clear_flags           1663	1_1_0	EXIST::FUNCTION:
  X509_NAME_add_entry_by_txt              1664	1_1_0	EXIST::FUNCTION:
  DES_ede3_cfb_encrypt                    1665	1_1_0	EXIST::FUNCTION:DES
@@ -167822,7 +185005,7 @@
  PEM_read_bio_ECPrivateKey               1691	1_1_0	EXIST::FUNCTION:EC
  EVP_PKEY_get_attr                       1692	1_1_0	EXIST::FUNCTION:
  PEM_read_bio_ECPKParameters             1693	1_1_0	EXIST::FUNCTION:EC
-@@ -1747,7 +1712,7 @@ ENGINE_ctrl_cmd                         1695	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -1747,7 +1712,7 @@ PKCS12_SAFEBAG_get_bag_nid              1696	1_1_0	EXIST::FUNCTION:
  TS_CONF_set_digests                     1697	1_1_0	EXIST::FUNCTION:TS
  PKCS7_SIGNED_it                         1698	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  PKCS7_SIGNED_it                         1698	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
@@ -167831,7 +185014,7 @@
  X509_PURPOSE_cleanup                    1700	1_1_0	EXIST::FUNCTION:
  ESS_SIGNING_CERT_dup                    1701	1_1_0	EXIST::FUNCTION:TS
  ENGINE_set_default_DSA                  1702	1_1_0	EXIST::FUNCTION:ENGINE
-@@ -1758,7 +1723,7 @@ RSA_padding_check_PKCS1_OAEP_mgf1       1705	1_1_0	EXIST::FUNCTION:RSA
+@@ -1758,7 +1723,7 @@ X509_policy_tree_get0_level             1706	1_1_0	EXIST::FUNCTION:
  ASN1_parse_dump                         1708	1_1_0	EXIST::FUNCTION:
  BIO_vfree                               1709	1_1_0	EXIST::FUNCTION:
  CRYPTO_cbc128_decrypt                   1710	1_1_0	EXIST::FUNCTION:
@@ -167851,7 +185034,7 @@
  CMS_unsigned_get_attr                   1730	1_1_0	EXIST::FUNCTION:CMS
  EVP_aes_256_cbc                         1731	1_1_0	EXIST::FUNCTION:
  X509_check_ip_asc                       1732	1_1_0	EXIST::FUNCTION:
-@@ -1787,7 +1752,7 @@ TS_MSG_IMPRINT_new                      1735	1_1_0	EXIST::FUNCTION:TS
+@@ -1787,7 +1752,7 @@ EVP_ENCODE_CTX_new                      1736	1_1_0	EXIST::FUNCTION:
  BIO_f_base64                            1737	1_1_0	EXIST::FUNCTION:
  CMS_verify                              1738	1_1_0	EXIST::FUNCTION:CMS
  i2d_PrivateKey                          1739	1_1_0	EXIST::FUNCTION:
@@ -167878,7 +185061,7 @@
  X509_reject_clear                       1757	1_1_0	EXIST::FUNCTION:
  DH_security_bits                        1758	1_1_0	EXIST::FUNCTION:DH
  LONG_it                                 1759	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-@@ -1822,8 +1787,6 @@ TS_TST_INFO_get_exts                    1766	1_1_0	EXIST::FUNCTION:TS
+@@ -1822,8 +1787,6 @@ ASN1_OCTET_STRING_free                  1770	1_1_0	EXIST::FUNCTION:
  PKCS7_RECIP_INFO_free                   1771	1_1_0	EXIST::FUNCTION:
  ASN1_tag2bit                            1772	1_1_0	EXIST::FUNCTION:
  TS_REQ_add_ext                          1773	1_1_0	EXIST::FUNCTION:TS
@@ -167887,7 +185070,7 @@
  X509_digest                             1776	1_1_0	EXIST::FUNCTION:
  CRYPTO_THREAD_cleanup_local             1777	1_1_0	EXIST::FUNCTION:
  NETSCAPE_CERT_SEQUENCE_it               1778	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-@@ -1850,11 +1813,11 @@ RAND_set_rand_engine                    1791	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -1850,11 +1813,11 @@ EVP_CIPHER_CTX_clear_flags              1796	1_1_0	EXIST::FUNCTION:
  ECDSA_size                              1797	1_1_0	EXIST::FUNCTION:EC
  X509_ALGOR_get0                         1798	1_1_0	EXIST::FUNCTION:
  d2i_ACCESS_DESCRIPTION                  1799	1_1_0	EXIST::FUNCTION:
@@ -167901,7 +185084,7 @@
  CONF_get_string                         1805	1_1_0	EXIST::FUNCTION:
  X509_cmp_current_time                   1806	1_1_0	EXIST::FUNCTION:
  i2d_DSAPrivateKey                       1807	1_1_0	EXIST::FUNCTION:DSA
-@@ -1862,13 +1825,13 @@ i2d_DSAPrivateKey                       1807	1_1_0	EXIST::FUNCTION:DSA
+@@ -1862,13 +1825,13 @@ ASN1_BIT_STRING_new                     1808	1_1_0	EXIST::FUNCTION:
  BIO_new_file                            1809	1_1_0	EXIST::FUNCTION:
  PKCS7_SIGNER_INFO_get0_algs             1810	1_1_0	EXIST::FUNCTION:
  TS_RESP_set_status_info                 1811	1_1_0	EXIST::FUNCTION:TS
@@ -167917,7 +185100,7 @@
  OPENSSL_hexstr2buf                      1819	1_1_0	EXIST::FUNCTION:
  EVP_add_cipher                          1820	1_1_0	EXIST::FUNCTION:
  X509V3_EXT_add_list                     1821	1_1_0	EXIST::FUNCTION:
-@@ -1877,7 +1840,7 @@ CMS_compress                            1822	1_1_0	EXIST::FUNCTION:CMS
+@@ -1877,7 +1840,7 @@ X509_get_ext_by_critical                1823	1_1_0	EXIST::FUNCTION:
  ASYNC_WAIT_CTX_clear_fd                 1824	1_1_0	EXIST::FUNCTION:
  ZLONG_it                                1825	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  ZLONG_it                                1825	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
@@ -167926,7 +185109,7 @@
  ASN1_ENUMERATED_to_BN                   1827	1_1_0	EXIST::FUNCTION:
  X509_CRL_get_ext_d2i                    1828	1_1_0	EXIST::FUNCTION:
  i2d_AUTHORITY_KEYID                     1829	1_1_0	EXIST::FUNCTION:
-@@ -1886,10 +1849,9 @@ TS_TST_INFO_get_time                    1830	1_1_0	EXIST::FUNCTION:TS
+@@ -1886,10 +1849,9 @@ ASN1_VISIBLESTRING_it                   1831	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION
  ASN1_VISIBLESTRING_it                   1831	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  X509V3_EXT_REQ_add_conf                 1832	1_1_0	EXIST::FUNCTION:
  ASN1_STRING_to_UTF8                     1833	1_1_0	EXIST::FUNCTION:
@@ -167952,7 +185135,7 @@
  ASN1_STRING_length_set                  1859	1_1_0	EXIST::FUNCTION:
  PEM_write_PKCS8                         1860	1_1_0	EXIST::FUNCTION:
  PKCS7_digest_from_attributes            1861	1_1_0	EXIST::FUNCTION:
-@@ -1928,38 +1890,37 @@ DSA_generate_key                        1867	1_1_0	EXIST::FUNCTION:DSA
+@@ -1928,38 +1890,37 @@ X509_get_ext_by_OBJ                     1869	1_1_0	EXIST::FUNCTION:
  PBEPARAM_new                            1870	1_1_0	EXIST::FUNCTION:
  EVP_aes_128_cbc                         1871	1_1_0	EXIST::FUNCTION:
  CRYPTO_dup_ex_data                      1872	1_1_0	EXIST::FUNCTION:
@@ -168007,7 +185190,7 @@
  X509v3_asid_inherits                    1915	1_1_0	EXIST::FUNCTION:RFC3779
  EVP_MD_meth_get_app_datasize            1916	1_1_0	EXIST::FUNCTION:
  X509_STORE_CTX_get_num_untrusted        1917	1_1_0	EXIST::FUNCTION:
-@@ -1993,7 +1954,7 @@ RSA_flags                               1934	1_1_0	EXIST::FUNCTION:RSA
+@@ -1993,7 +1954,7 @@ X509_NAME_add_entry                     1935	1_1_0	EXIST::FUNCTION:
  EVP_CIPHER_get_asn1_iv                  1936	1_1_0	EXIST::FUNCTION:
  i2d_RSAPrivateKey_bio                   1937	1_1_0	EXIST::FUNCTION:RSA
  PKCS5_PBE_keyivgen                      1938	1_1_0	EXIST::FUNCTION:
@@ -168016,7 +185199,7 @@
  EC_POINT_copy                           1940	1_1_0	EXIST::FUNCTION:EC
  X509V3_EXT_CRL_add_nconf                1941	1_1_0	EXIST::FUNCTION:
  SHA256_Init                             1942	1_1_0	EXIST::FUNCTION:
-@@ -2009,7 +1970,7 @@ EVP_seed_cbc                            1948	1_1_0	EXIST::FUNCTION:SEED
+@@ -2009,7 +1970,7 @@ PKCS12_unpack_p7data                    1951	1_1_0	EXIST::FUNCTION:
  ECDSA_sign                              1952	1_1_0	EXIST::FUNCTION:EC
  d2i_PKCS12_fp                           1953	1_1_0	EXIST::FUNCTION:
  CMS_unsigned_get_attr_by_NID            1954	1_1_0	EXIST::FUNCTION:CMS
@@ -168075,7 +185258,7 @@
  _shadow_DES_check_key                   2037	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:DES
  _shadow_DES_check_key                   2037	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:DES
  CMS_RecipientInfo_set0_pkey             2038	1_1_0	EXIST::FUNCTION:CMS
-@@ -2112,17 +2073,17 @@ ASN1_d2i_fp                             2045	1_1_0	EXIST::FUNCTION:STDIO
+@@ -2112,17 +2073,17 @@ ASN1_ENUMERATED_it                      2047	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
  o2i_ECPublicKey                         2048	1_1_0	EXIST::FUNCTION:EC
  ERR_load_BUF_strings                    2049	1_1_0	EXIST::FUNCTION:
  PEM_read_bio_RSA_PUBKEY                 2050	1_1_0	EXIST::FUNCTION:RSA
@@ -168096,7 +185279,7 @@
  OBJ_length                              2062	1_1_0	EXIST::FUNCTION:
  BN_GENCB_get_arg                        2063	1_1_0	EXIST::FUNCTION:
  EVP_MD_CTX_clear_flags                  2064	1_1_0	EXIST::FUNCTION:
-@@ -2130,7 +2091,7 @@ ENGINE_get_load_pubkey_function         2057	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -2130,7 +2091,7 @@ EVP_PKEY_meth_get_verifyctx             2065	1_1_0	EXIST::FUNCTION:
  CT_POLICY_EVAL_CTX_get0_cert            2066	1_1_0	EXIST::FUNCTION:CT
  PEM_write_DHparams                      2067	1_1_0	EXIST::FUNCTION:DH
  DH_set_ex_data                          2068	1_1_0	EXIST::FUNCTION:DH
@@ -168105,7 +185288,7 @@
  CRYPTO_128_unwrap_pad                   2070	1_1_0	EXIST::FUNCTION:
  BIO_new_CMS                             2071	1_1_0	EXIST::FUNCTION:CMS
  i2d_ASN1_ENUMERATED                     2072	1_1_0	EXIST::FUNCTION:
-@@ -2150,7 +2111,7 @@ d2i_RSAPublicKey                        2084	1_1_0	EXIST::FUNCTION:RSA
+@@ -2150,7 +2111,7 @@ i2d_ASN1_GENERALSTRING                  2085	1_1_0	EXIST::FUNCTION:
  POLICYQUALINFO_new                      2086	1_1_0	EXIST::FUNCTION:
  PKCS7_RECIP_INFO_get0_alg               2087	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_base_id                        2088	1_1_0	EXIST::FUNCTION:
@@ -168114,7 +185297,7 @@
  X509v3_get_ext_by_NID                   2090	1_1_0	EXIST::FUNCTION:
  TS_CONF_set_policies                    2091	1_1_0	EXIST::FUNCTION:TS
  CMS_SignerInfo_cert_cmp                 2092	1_1_0	EXIST::FUNCTION:CMS
-@@ -2168,7 +2129,7 @@ SCT_new                                 2101	1_1_0	EXIST::FUNCTION:CT
+@@ -2168,7 +2129,7 @@ X509_get_ext_count                      2103	1_1_0	EXIST::FUNCTION:
  CRYPTO_cts128_decrypt                   2104	1_1_0	EXIST::FUNCTION:
  ASYNC_WAIT_CTX_get_fd                   2105	1_1_0	EXIST::FUNCTION:
  i2d_TS_REQ                              2106	1_1_0	EXIST::FUNCTION:TS
@@ -168123,7 +185306,7 @@
  ENGINE_register_pkey_meths              2108	1_1_0	EXIST::FUNCTION:ENGINE
  ENGINE_load_public_key                  2109	1_1_0	EXIST::FUNCTION:ENGINE
  ASIdOrRange_it                          2110	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
-@@ -2193,14 +2154,14 @@ ENGINE_get_destroy_function             2121	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -2193,14 +2154,14 @@ BN_mod_exp_recp                         2126	1_1_0	EXIST::FUNCTION:
  EVP_mdc2                                2127	1_1_0	EXIST::FUNCTION:MDC2
  EVP_des_cfb64                           2128	1_1_0	EXIST::FUNCTION:DES
  PKCS7_sign                              2129	1_1_0	EXIST::FUNCTION:
@@ -168140,7 +185323,7 @@
  ASN1_item_i2d_fp                        2137	1_1_0	EXIST::FUNCTION:STDIO
  BN_GF2m_mod_sqr                         2138	1_1_0	EXIST::FUNCTION:EC2M
  ASN1_PRINTABLE_new                      2139	1_1_0	EXIST::FUNCTION:
-@@ -2217,7 +2178,7 @@ i2d_PKCS8PrivateKey_nid_fp              2146	1_1_0	EXIST::FUNCTION:STDIO
+@@ -2217,7 +2178,7 @@ CRYPTO_THREAD_compare_id                2148	1_1_0	EXIST::FUNCTION:
  d2i_IPAddressChoice                     2149	1_1_0	EXIST::FUNCTION:RFC3779
  IPAddressFamily_it                      2150	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
  IPAddressFamily_it                      2150	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
@@ -168149,7 +185332,7 @@
  BIO_push                                2152	1_1_0	EXIST::FUNCTION:
  ASN1_BMPSTRING_new                      2153	1_1_0	EXIST::FUNCTION:
  COMP_get_type                           2154	1_1_0	EXIST::FUNCTION:COMP
-@@ -2228,8 +2189,8 @@ d2i_ASIdentifierChoice                  2155	1_1_0	EXIST::FUNCTION:RFC3779
+@@ -2228,8 +2189,8 @@ PEM_write_X509                          2158	1_1_0	EXIST::FUNCTION:
  BN_CTX_free                             2159	1_1_0	EXIST::FUNCTION:
  EC_GROUP_get_curve_GF2m                 2160	1_1_0	EXIST::FUNCTION:EC,EC2M
  EVP_MD_flags                            2161	1_1_0	EXIST::FUNCTION:
@@ -168160,7 +185343,7 @@
  BN_GF2m_mod_solve_quad                  2164	1_1_0	EXIST::FUNCTION:EC2M
  EC_POINT_method_of                      2165	1_1_0	EXIST::FUNCTION:EC
  PKCS7_ENCRYPT_it                        2166	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-@@ -2239,14 +2200,13 @@ EC_POINT_method_of                      2165	1_1_0	EXIST::FUNCTION:EC
+@@ -2239,14 +2200,13 @@ AUTHORITY_INFO_ACCESS_it                2167	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
  X509_EXTENSION_create_by_NID            2168	1_1_0	EXIST::FUNCTION:
  i2d_RSAPrivateKey                       2169	1_1_0	EXIST::FUNCTION:RSA
  d2i_CERTIFICATEPOLICIES                 2170	1_1_0	EXIST::FUNCTION:
@@ -168192,7 +185375,7 @@
  ASN1_T61STRING_new                      2195	1_1_0	EXIST::FUNCTION:
  BN_kronecker                            2196	1_1_0	EXIST::FUNCTION:
  i2d_ACCESS_DESCRIPTION                  2197	1_1_0	EXIST::FUNCTION:
-@@ -2272,7 +2231,7 @@ EVP_camellia_192_cfb8                   2198	1_1_0	EXIST::FUNCTION:CAMELLIA
+@@ -2272,7 +2231,7 @@ X509_STORE_CTX_set_depth                2199	1_1_0	EXIST::FUNCTION:
  X509v3_delete_ext                       2200	1_1_0	EXIST::FUNCTION:
  ASN1_STRING_set0                        2201	1_1_0	EXIST::FUNCTION:
  BN_GF2m_add                             2202	1_1_0	EXIST::FUNCTION:EC2M
@@ -168237,7 +185420,7 @@
  X509_VERIFY_PARAM_table_cleanup         2257	1_1_0	EXIST::FUNCTION:
  i2d_re_X509_REQ_tbs                     2258	1_1_0	EXIST::FUNCTION:
  CONF_load_bio                           2259	1_1_0	EXIST::FUNCTION:
-@@ -2378,7 +2337,7 @@ ESS_ISSUER_SERIAL_free                  2299	1_1_0	EXIST::FUNCTION:TS
+@@ -2378,7 +2337,7 @@ UTF8_putc                               2302	1_1_0	EXIST::FUNCTION:
  RSA_private_encrypt                     2303	1_1_0	EXIST::FUNCTION:RSA
  X509_LOOKUP_shutdown                    2304	1_1_0	EXIST::FUNCTION:
  TS_TST_INFO_set_accuracy                2305	1_1_0	EXIST::FUNCTION:TS
@@ -168246,7 +185429,7 @@
  X509at_add1_attr_by_OBJ                 2307	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_asn1_add0                      2308	1_1_0	EXIST::FUNCTION:
  PKCS12_SAFEBAG_get1_crl                 2309	1_1_0	EXIST::FUNCTION:
-@@ -2400,7 +2359,6 @@ EVP_camellia_192_ofb                    2320	1_1_0	EXIST::FUNCTION:CAMELLIA
+@@ -2400,7 +2359,6 @@ PEM_read_PKCS7                          2324	1_1_0	EXIST::FUNCTION:
  DH_get_2048_256                         2325	1_1_0	EXIST::FUNCTION:DH
  X509at_delete_attr                      2326	1_1_0	EXIST::FUNCTION:
  PEM_write_bio                           2327	1_1_0	EXIST::FUNCTION:
@@ -168254,7 +185437,7 @@
  CMS_signed_get_attr_by_OBJ              2329	1_1_0	EXIST::FUNCTION:CMS
  X509_REVOKED_add_ext                    2330	1_1_0	EXIST::FUNCTION:
  EVP_CipherUpdate                        2331	1_1_0	EXIST::FUNCTION:
-@@ -2409,12 +2367,12 @@ Camellia_cfb8_encrypt                   2332	1_1_0	EXIST::FUNCTION:CAMELLIA
+@@ -2409,12 +2367,12 @@ EVP_aes_256_xts                         2333	1_1_0	EXIST::FUNCTION:
  EVP_DigestSignFinal                     2334	1_1_0	EXIST::FUNCTION:
  ASN1_STRING_cmp                         2335	1_1_0	EXIST::FUNCTION:
  EVP_chacha20_poly1305                   2336	1_1_0	EXIST::FUNCTION:CHACHA,POLY1305
@@ -168269,7 +185452,7 @@
  X509_keyid_set1                         2343	1_1_0	EXIST::FUNCTION:
  X509_VERIFY_PARAM_set1                  2344	1_1_0	EXIST::FUNCTION:
  EC_GROUP_get_asn1_flag                  2345	1_1_0	EXIST::FUNCTION:EC
-@@ -2439,12 +2397,12 @@ DES_decrypt3                            2362	1_1_0	EXIST::FUNCTION:DES
+@@ -2439,12 +2397,12 @@ OTHERNAME_it                            2363	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION
  OTHERNAME_it                            2363	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  X509at_add1_attr_by_txt                 2364	1_1_0	EXIST::FUNCTION:
  PKCS7_SIGN_ENVELOPE_free                2365	1_1_0	EXIST::FUNCTION:
@@ -168284,7 +185467,7 @@
  GENERAL_NAME_new                        2372	1_1_0	EXIST::FUNCTION:
  DES_encrypt3                            2373	1_1_0	EXIST::FUNCTION:DES
  PKCS7_get_signer_info                   2374	1_1_0	EXIST::FUNCTION:
-@@ -2455,7 +2413,7 @@ DES_encrypt3                            2373	1_1_0	EXIST::FUNCTION:DES
+@@ -2455,7 +2413,7 @@ ASN1_UTF8STRING_it                      2377	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
  ASN1_SCTX_set_app_data                  2378	1_1_0	EXIST::FUNCTION:
  CMS_add0_cert                           2379	1_1_0	EXIST::FUNCTION:CMS
  i2d_GENERAL_NAME                        2380	1_1_0	EXIST::FUNCTION:
@@ -168301,7 +185484,7 @@
  X509_TRUST_get_count                    2399	1_1_0	EXIST::FUNCTION:
  IPAddressOrRange_free                   2400	1_1_0	EXIST::FUNCTION:RFC3779
  RSA_padding_add_PKCS1_OAEP              2401	1_1_0	EXIST::FUNCTION:RSA
-@@ -2490,19 +2447,18 @@ EVP_rc5_32_12_16_ofb                    2411	1_1_0	EXIST::FUNCTION:RC5
+@@ -2490,19 +2447,18 @@ EVP_MD_CTX_md_data                      2412	1_1_0	EXIST::FUNCTION:
  ASN1_PCTX_set_nm_flags                  2413	1_1_0	EXIST::FUNCTION:
  BIO_ctrl                                2414	1_1_0	EXIST::FUNCTION:
  X509_CRL_set_default_method             2415	1_1_0	EXIST::FUNCTION:
@@ -168324,7 +185507,7 @@
  EVP_aes_256_cfb128                      2428	1_1_0	EXIST::FUNCTION:
  RSA_set_ex_data                         2429	1_1_0	EXIST::FUNCTION:RSA
  BN_GENCB_call                           2430	1_1_0	EXIST::FUNCTION:
-@@ -2514,8 +2470,8 @@ i2d_TS_MSG_IMPRINT_fp                   2432	1_1_0	EXIST::FUNCTION:STDIO,TS
+@@ -2514,8 +2470,8 @@ EVP_get_digestbyname                    2435	1_1_0	EXIST::FUNCTION:
  X509_CRL_get_lastUpdate                 2436	1_1_0	EXIST::FUNCTION:
  OBJ_create_objects                      2437	1_1_0	EXIST::FUNCTION:
  EVP_enc_null                            2438	1_1_0	EXIST::FUNCTION:
@@ -168350,7 +185533,7 @@
  NETSCAPE_SPKAC_it                       2471	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  NETSCAPE_SPKAC_it                       2471	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  ASIdOrRange_free                        2472	1_1_0	EXIST::FUNCTION:RFC3779
-@@ -2561,7 +2517,7 @@ TS_VERIFY_CTX_set_data                  2476	1_1_0	EXIST::FUNCTION:TS
+@@ -2561,7 +2517,7 @@ EVP_CIPHER_CTX_ctrl                     2479	1_1_0	EXIST::FUNCTION:
  ASN1_T61STRING_it                       2480	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  ASN1_T61STRING_it                       2480	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  ENGINE_get_prev                         2481	1_1_0	EXIST::FUNCTION:ENGINE
@@ -168359,7 +185542,7 @@
  ERR_load_EC_strings                     2483	1_1_0	EXIST::FUNCTION:EC
  X509V3_string_free                      2484	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_meth_set_paramgen              2485	1_1_0	EXIST::FUNCTION:
-@@ -2609,7 +2565,6 @@ CRYPTO_mem_leaks                        2525	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG
+@@ -2609,7 +2565,6 @@ BN_get_rfc3526_prime_1536               2526	1_1_0	EXIST::FUNCTION:
  DSA_sign                                2527	1_1_0	EXIST::FUNCTION:DSA
  RAND_egd                                2528	1_1_0	EXIST::FUNCTION:EGD
  ASN1_d2i_bio                            2529	1_1_0	EXIST::FUNCTION:
@@ -168367,7 +185550,7 @@
  X509_REQ_digest                         2531	1_1_0	EXIST::FUNCTION:
  X509_set_notAfter                       2532	1_1_0	EXIST::FUNCTION:
  EVP_CIPHER_type                         2533	1_1_0	EXIST::FUNCTION:
-@@ -2620,8 +2575,7 @@ CMS_signed_get0_data_by_OBJ             2536	1_1_0	EXIST::FUNCTION:CMS
+@@ -2620,8 +2575,7 @@ X509_PURPOSE_add                        2537	1_1_0	EXIST::FUNCTION:
  PKCS7_ENVELOPE_free                     2538	1_1_0	EXIST::FUNCTION:
  PKCS12_key_gen_uni                      2539	1_1_0	EXIST::FUNCTION:
  WHIRLPOOL                               2540	1_1_0	EXIST::FUNCTION:WHIRLPOOL
@@ -168377,7 +185560,7 @@
  EC_POINT_is_at_infinity                 2543	1_1_0	EXIST::FUNCTION:EC
  i2d_NOTICEREF                           2544	1_1_0	EXIST::FUNCTION:
  EC_KEY_new                              2545	1_1_0	EXIST::FUNCTION:EC
-@@ -2641,25 +2595,25 @@ EC_GROUP_new_by_curve_name              2555	1_1_0	EXIST::FUNCTION:EC
+@@ -2641,25 +2595,25 @@ EVP_PKEY_CTX_get_keygen_info            2558	1_1_0	EXIST::FUNCTION:
  d2i_ASN1_UINTEGER                       2559	1_1_0	EXIST::FUNCTION:
  i2s_ASN1_INTEGER                        2560	1_1_0	EXIST::FUNCTION:
  d2i_EC_PUBKEY_fp                        2561	1_1_0	EXIST::FUNCTION:EC,STDIO
@@ -168408,7 +185591,7 @@
  PKCS12_SAFEBAG_get_nid                  2580	1_1_0	EXIST::FUNCTION:
  EVP_MD_CTX_set_update_fn                2581	1_1_0	EXIST::FUNCTION:
  BIO_f_asn1                              2582	1_1_0	EXIST::FUNCTION:
-@@ -2693,11 +2647,11 @@ ENGINE_register_complete                2607	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -2693,11 +2647,11 @@ EVP_DecodeUpdate                        2609	1_1_0	EXIST::FUNCTION:
  ENGINE_get_default_RAND                 2610	1_1_0	EXIST::FUNCTION:ENGINE
  ERR_peek_last_error_line                2611	1_1_0	EXIST::FUNCTION:
  ENGINE_get_ssl_client_cert_function     2612	1_1_0	EXIST::FUNCTION:ENGINE
@@ -168422,7 +185605,7 @@
  SEED_encrypt                            2617	1_1_0	EXIST::FUNCTION:SEED
  IPAddressRange_it                       2618	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
  IPAddressRange_it                       2618	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
-@@ -2728,7 +2682,6 @@ EC_GROUP_clear_free                     2636	1_1_0	EXIST::FUNCTION:EC
+@@ -2728,7 +2682,6 @@ d2i_PBKDF2PARAM                         2640	1_1_0	EXIST::FUNCTION:
  ERR_load_COMP_strings                   2641	1_1_0	EXIST::FUNCTION:COMP
  EVP_PKEY_meth_add0                      2642	1_1_0	EXIST::FUNCTION:
  EVP_rc4_40                              2643	1_1_0	EXIST::FUNCTION:RC4
@@ -168430,7 +185613,7 @@
  RSA_bits                                2645	1_1_0	EXIST::FUNCTION:RSA
  ASN1_item_dup                           2646	1_1_0	EXIST::FUNCTION:
  GENERAL_NAMES_it                        2647	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-@@ -2741,7 +2694,7 @@ MD4_Init                                2650	1_1_0	EXIST::FUNCTION:MD4
+@@ -2741,7 +2694,7 @@ EVP_aes_256_cbc_hmac_sha1               2652	1_1_0	EXIST::FUNCTION:
  SCT_validate                            2653	1_1_0	EXIST::FUNCTION:CT
  EC_GROUP_dup                            2654	1_1_0	EXIST::FUNCTION:EC
  EVP_sha1                                2655	1_1_0	EXIST::FUNCTION:
@@ -168439,14 +185622,16 @@
  BN_dup                                  2657	1_1_0	EXIST::FUNCTION:
  TS_MSG_IMPRINT_print_bio                2658	1_1_0	EXIST::FUNCTION:TS
  CONF_module_set_usr_data                2659	1_1_0	EXIST::FUNCTION:
-@@ -2751,7 +2704,6 @@ EC_KEY_generate_key                     2660	1_1_0	EXIST::FUNCTION:EC
+@@ -2751,8 +2704,7 @@ EVP_PKEY_assign                         2662	1_1_0	EXIST::FUNCTION:
  EVP_aes_128_ofb                         2663	1_1_0	EXIST::FUNCTION:
  CMS_data                                2664	1_1_0	EXIST::FUNCTION:CMS
  X509_load_cert_file                     2665	1_1_0	EXIST::FUNCTION:
 -CRYPTO_THREADID_cpy                     2666	1_1_0	NOEXIST::FUNCTION:
- EC_GFp_nistp521_method                  2667	1_1_0	EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
+-EC_GFp_nistp521_method                  2667	1_1_0	EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
++EC_GFp_nistp521_method                  2667	1_1_0	EXIST::FUNCTION:EC,EC_NISTP_64_GCC_128
  ECDSA_SIG_free                          2668	1_1_0	EXIST::FUNCTION:EC
  d2i_PKCS12_BAGS                         2669	1_1_0	EXIST::FUNCTION:
+ RSA_public_encrypt                      2670	1_1_0	EXIST::FUNCTION:RSA
 @@ -2769,7 +2721,7 @@ d2i_CMS_ReceiptRequest                  2680	1_1_0	EXIST::FUNCTION:CMS
  X509_CRL_INFO_it                        2681	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  X509_CRL_INFO_it                        2681	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
@@ -168456,7 +185641,7 @@
  X509_REQ_delete_attr                    2684	1_1_0	EXIST::FUNCTION:
  TS_RESP_CTX_set_signer_cert             2685	1_1_0	EXIST::FUNCTION:TS
  X509V3_EXT_d2i                          2686	1_1_0	EXIST::FUNCTION:
-@@ -2777,7 +2729,7 @@ TS_RESP_CTX_set_signer_cert             2685	1_1_0	EXIST::FUNCTION:TS
+@@ -2777,7 +2729,7 @@ ASN1_GENERALSTRING_it                   2687	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION
  ASN1_GENERALSTRING_it                   2687	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  POLICYQUALINFO_free                     2688	1_1_0	EXIST::FUNCTION:
  EC_KEY_set_group                        2689	1_1_0	EXIST::FUNCTION:EC
@@ -168508,7 +185693,7 @@
  OPENSSL_init                            2761	1_1_0	EXIST::FUNCTION:
  TS_RESP_get_tst_info                    2762	1_1_0	EXIST::FUNCTION:TS
  X509_VERIFY_PARAM_get_depth             2763	1_1_0	EXIST::FUNCTION:
-@@ -2858,8 +2810,8 @@ EVP_SealFinal                           2764	1_1_0	EXIST::FUNCTION:RSA
+@@ -2858,8 +2810,8 @@ BIO_set                                 2765	1_1_0	EXIST::FUNCTION:
  CONF_imodule_set_flags                  2766	1_1_0	EXIST::FUNCTION:
  i2d_ASN1_SET_ANY                        2767	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_decrypt                        2768	1_1_0	EXIST::FUNCTION:
@@ -168529,7 +185714,7 @@
  NCONF_get_section                       2782	1_1_0	EXIST::FUNCTION:
  PKCS12_MAC_DATA_it                      2783	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  PKCS12_MAC_DATA_it                      2783	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-@@ -2885,7 +2836,7 @@ CMS_RecipientInfo_encrypt               2786	1_1_0	EXIST::FUNCTION:CMS
+@@ -2885,12 +2836,11 @@ PKCS12_setup_mac                        2788	1_1_0	EXIST::FUNCTION:
  PEM_read_bio_PKCS7                      2789	1_1_0	EXIST::FUNCTION:
  SHA512_Final                            2790	1_1_0	EXIST:!VMSVAX:FUNCTION:
  X509_VERIFY_PARAM_set1_host             2791	1_1_0	EXIST::FUNCTION:
@@ -168538,7 +185723,12 @@
  d2i_ASN1_T61STRING                      2793	1_1_0	EXIST::FUNCTION:
  DES_pcbc_encrypt                        2794	1_1_0	EXIST::FUNCTION:DES
  EVP_PKEY_print_params                   2795	1_1_0	EXIST::FUNCTION:
-@@ -2907,8 +2858,8 @@ ENGINE_register_all_DH                  2809	1_1_0	EXIST::FUNCTION:ENGINE
+ BN_get0_nist_prime_192                  2796	1_1_0	EXIST::FUNCTION:
+-OPENSSL_ia32cap_loc                     2797	1_1_0	EXIST::FUNCTION:
+ EVP_SealInit                            2798	1_1_0	EXIST::FUNCTION:RSA
+ X509_REQ_get0_signature                 2799	1_1_0	EXIST::FUNCTION:
+ PKEY_USAGE_PERIOD_free                  2800	1_1_0	EXIST::FUNCTION:
+@@ -2907,8 +2857,8 @@ ENGINE_register_all_DH                  2809	1_1_0	EXIST::FUNCTION:ENGINE
  ERR_clear_error                         2810	1_1_0	EXIST::FUNCTION:
  EC_KEY_dup                              2811	1_1_0	EXIST::FUNCTION:EC
  X509_LOOKUP_init                        2812	1_1_0	EXIST::FUNCTION:
@@ -168549,7 +185739,7 @@
  X509V3_EXT_print_fp                     2815	1_1_0	EXIST::FUNCTION:STDIO
  OBJ_bsearch_ex_                         2816	1_1_0	EXIST::FUNCTION:
  DES_ofb64_encrypt                       2817	1_1_0	EXIST::FUNCTION:DES
-@@ -2922,11 +2873,10 @@ SCT_free                                2824	1_1_0	EXIST::FUNCTION:CT
+@@ -2922,11 +2872,10 @@ SCT_free                                2824	1_1_0	EXIST::FUNCTION:CT
  TS_TST_INFO_get_msg_imprint             2825	1_1_0	EXIST::FUNCTION:TS
  X509v3_addr_add_range                   2826	1_1_0	EXIST::FUNCTION:RFC3779
  PKCS12_get_friendlyname                 2827	1_1_0	EXIST::FUNCTION:
@@ -168562,7 +185752,7 @@
  EVP_camellia_256_cfb8                   2833	1_1_0	EXIST::FUNCTION:CAMELLIA
  EC_KEY_get0_public_key                  2834	1_1_0	EXIST::FUNCTION:EC
  SRP_Calc_x                              2835	1_1_0	EXIST::FUNCTION:SRP
-@@ -2954,19 +2904,18 @@ CRYPTO_mem_debug_realloc                2851	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG
+@@ -2954,19 +2903,18 @@ PEM_write_bio_PrivateKey                2855	1_1_0	EXIST::FUNCTION:
  ASN1_UTCTIME_check                      2856	1_1_0	EXIST::FUNCTION:
  ACCESS_DESCRIPTION_it                   2857	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  ACCESS_DESCRIPTION_it                   2857	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
@@ -168574,7 +185764,8 @@
 -BIO_socket_nbio                         2863	1_1_0	EXIST::FUNCTION:
 +BIO_socket_nbio                         2863	1_1_0	EXIST::FUNCTION:SOCK
  EVP_CIPHER_set_asn1_iv                  2864	1_1_0	EXIST::FUNCTION:
- EC_GFp_nistp224_method                  2865	1_1_0	EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
+-EC_GFp_nistp224_method                  2865	1_1_0	EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
++EC_GFp_nistp224_method                  2865	1_1_0	EXIST::FUNCTION:EC,EC_NISTP_64_GCC_128
  BN_swap                                 2866	1_1_0	EXIST::FUNCTION:
  d2i_ECParameters                        2867	1_1_0	EXIST::FUNCTION:EC
  X509_NAME_add_entry_by_OBJ              2868	1_1_0	EXIST::FUNCTION:
@@ -168584,7 +185775,7 @@
  BN_CTX_start                            2871	1_1_0	EXIST::FUNCTION:
  BN_print                                2872	1_1_0	EXIST::FUNCTION:
  EC_KEY_set_flags                        2873	1_1_0	EXIST::FUNCTION:EC
-@@ -2981,10 +2930,10 @@ SCT_set0_signature                      2878	1_1_0	EXIST::FUNCTION:CT
+@@ -2981,10 +2929,10 @@ X509_CINF_it                            2880	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
  TS_CONF_set_accuracy                    2881	1_1_0	EXIST::FUNCTION:TS
  DES_crypt                               2882	1_1_0	EXIST::FUNCTION:DES
  BN_BLINDING_create_param                2883	1_1_0	EXIST::FUNCTION:
@@ -168598,7 +185789,7 @@
  POLICY_CONSTRAINTS_it                   2888	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  POLICY_CONSTRAINTS_it                   2888	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  NCONF_free_data                         2889	1_1_0	EXIST::FUNCTION:
-@@ -3012,7 +2961,7 @@ EVP_des_ede3_cfb1                       2909	1_1_0	EXIST::FUNCTION:DES
+@@ -3012,7 +2960,7 @@ EVP_des_ede3_cfb1                       2909	1_1_0	EXIST::FUNCTION:DES
  TS_REQ_to_TS_VERIFY_CTX                 2910	1_1_0	EXIST::FUNCTION:TS
  d2i_PBEPARAM                            2911	1_1_0	EXIST::FUNCTION:
  BN_get0_nist_prime_521                  2912	1_1_0	EXIST::FUNCTION:
@@ -168607,7 +185798,7 @@
  X509_PUBKEY_get0                        2914	1_1_0	EXIST::FUNCTION:
  X509_STORE_CTX_get0_parent_ctx          2915	1_1_0	EXIST::FUNCTION:
  EC_GROUP_set_seed                       2916	1_1_0	EXIST::FUNCTION:EC
-@@ -3025,7 +2974,7 @@ RC5_32_decrypt                          2921	1_1_0	EXIST::FUNCTION:RC5
+@@ -3025,7 +2973,7 @@ RC5_32_decrypt                          2921	1_1_0	EXIST::FUNCTION:RC5
  i2d_X509_REQ_INFO                       2922	1_1_0	EXIST::FUNCTION:
  EVP_des_cfb1                            2923	1_1_0	EXIST::FUNCTION:DES
  OBJ_NAME_cleanup                        2924	1_1_0	EXIST::FUNCTION:
@@ -168616,7 +185807,7 @@
  DES_cfb64_encrypt                       2926	1_1_0	EXIST::FUNCTION:DES
  CAST_cfb64_encrypt                      2927	1_1_0	EXIST::FUNCTION:CAST
  EVP_PKEY_asn1_set_param                 2928	1_1_0	EXIST::FUNCTION:
-@@ -3042,9 +2991,8 @@ ENGINE_by_id                            2934	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -3042,9 +2990,8 @@ X509_get1_email                         2938	1_1_0	EXIST::FUNCTION:
  EC_POINT_point2oct                      2939	1_1_0	EXIST::FUNCTION:EC
  EC_GROUP_get_curve_GFp                  2940	1_1_0	EXIST::FUNCTION:EC
  ASYNC_block_pause                       2941	1_1_0	EXIST::FUNCTION:
@@ -168627,7 +185818,7 @@
  i2d_X509_CRL_bio                        2945	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_asn1_set_item                  2946	1_1_0	EXIST::FUNCTION:
  CRYPTO_ccm128_encrypt                   2947	1_1_0	EXIST::FUNCTION:
-@@ -3052,7 +3000,7 @@ X509v3_addr_get_afi                     2948	1_1_0	EXIST::FUNCTION:RFC3779
+@@ -3052,7 +2999,7 @@ X509v3_addr_get_afi                     2948	1_1_0	EXIST::FUNCTION:RFC3779
  X509_STORE_CTX_get0_param               2949	1_1_0	EXIST::FUNCTION:
  EVP_add_alg_module                      2950	1_1_0	EXIST::FUNCTION:
  X509_check_purpose                      2951	1_1_0	EXIST::FUNCTION:
@@ -168636,7 +185827,7 @@
  X509_PURPOSE_get_count                  2953	1_1_0	EXIST::FUNCTION:
  d2i_PKCS12_bio                          2954	1_1_0	EXIST::FUNCTION:
  ASN1_item_free                          2955	1_1_0	EXIST::FUNCTION:
-@@ -3114,14 +3062,12 @@ PEM_read_bio_RSAPublicKey               3009	1_1_0	EXIST::FUNCTION:RSA
+@@ -3114,14 +3061,12 @@ PEM_read_bio_RSAPublicKey               3009	1_1_0	EXIST::FUNCTION:RSA
  EVP_PKEY_asn1_set_private               3010	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_get0_RSA                       3011	1_1_0	EXIST::FUNCTION:RSA
  DES_ede3_cfb64_encrypt                  3012	1_1_0	EXIST::FUNCTION:DES
@@ -168653,7 +185844,7 @@
  EC_POINT_bn2point                       3021	1_1_0	EXIST::FUNCTION:EC
  PBE2PARAM_it                            3022	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  PBE2PARAM_it                            3022	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-@@ -3140,7 +3086,7 @@ RC4_set_key                             3028	1_1_0	EXIST::FUNCTION:RC4
+@@ -3140,7 +3085,7 @@ PKCS7_it                                3034	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION
  PKCS7_it                                3034	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  CMS_unsigned_get_attr_by_OBJ            3035	1_1_0	EXIST::FUNCTION:CMS
  BN_clear                                3036	1_1_0	EXIST::FUNCTION:
@@ -168662,7 +185853,7 @@
  GENERAL_NAME_cmp                        3038	1_1_0	EXIST::FUNCTION:
  X509_STORE_CTX_set_purpose              3039	1_1_0	EXIST::FUNCTION:
  X509_REVOKED_get_ext_d2i                3040	1_1_0	EXIST::FUNCTION:
-@@ -3148,7 +3094,7 @@ CMS_unsigned_get_attr_by_OBJ            3035	1_1_0	EXIST::FUNCTION:CMS
+@@ -3148,7 +3093,7 @@ X509V3_set_conf_lhash                   3041	1_1_0	EXIST::FUNCTION:
  PKCS7_ENC_CONTENT_it                    3042	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  PKCS7_ENC_CONTENT_it                    3042	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  PKCS12_item_pack_safebag                3043	1_1_0	EXIST::FUNCTION:
@@ -168671,7 +185862,7 @@
  i2d_X509_PUBKEY                         3045	1_1_0	EXIST::FUNCTION:
  EVP_DecryptUpdate                       3046	1_1_0	EXIST::FUNCTION:
  CAST_cbc_encrypt                        3047	1_1_0	EXIST::FUNCTION:CAST
-@@ -3202,12 +3148,12 @@ d2i_ECPrivateKey_bio                    3094	1_1_0	EXIST::FUNCTION:EC
+@@ -3202,12 +3147,12 @@ d2i_ECPrivateKey_bio                    3094	1_1_0	EXIST::FUNCTION:EC
  BIO_s_secmem                            3095	1_1_0	EXIST::FUNCTION:
  ENGINE_get_default_EC                   3096	1_1_0	EXIST::FUNCTION:ENGINE
  TS_RESP_create_response                 3097	1_1_0	EXIST::FUNCTION:TS
@@ -168686,7 +185877,7 @@
  USERNOTICE_new                          3104	1_1_0	EXIST::FUNCTION:
  POLICY_MAPPING_new                      3105	1_1_0	EXIST::FUNCTION:
  CRYPTO_gcm128_release                   3106	1_1_0	EXIST::FUNCTION:
-@@ -3218,9 +3164,9 @@ PEM_read_DSA_PUBKEY                     3110	1_1_0	EXIST::FUNCTION:DSA
+@@ -3218,9 +3163,9 @@ PEM_read_DSA_PUBKEY                     3110	1_1_0	EXIST::FUNCTION:DSA
  X509_get0_subject_key_id                3111	1_1_0	EXIST::FUNCTION:
  i2s_ASN1_ENUMERATED                     3112	1_1_0	EXIST::FUNCTION:
  X509v3_get_ext_by_OBJ                   3113	1_1_0	EXIST::FUNCTION:
@@ -168698,7 +185889,7 @@
  i2d_RSA_PSS_PARAMS                      3117	1_1_0	EXIST::FUNCTION:RSA
  EVP_aes_128_wrap_pad                    3118	1_1_0	EXIST::FUNCTION:
  ASN1_BIT_STRING_set                     3119	1_1_0	EXIST::FUNCTION:
-@@ -3248,16 +3194,16 @@ CONF_load_fp                            3136	1_1_0	EXIST::FUNCTION:STDIO
+@@ -3248,16 +3193,16 @@ TXT_DB_free                             3139	1_1_0	EXIST::FUNCTION:
  ASN1_STRING_set                         3140	1_1_0	EXIST::FUNCTION:
  d2i_ESS_CERT_ID                         3141	1_1_0	EXIST::FUNCTION:TS
  EVP_PKEY_meth_set_derive                3142	1_1_0	EXIST::FUNCTION:
@@ -168719,7 +185910,7 @@
  X509_CRL_get0_by_cert                   3153	1_1_0	EXIST::FUNCTION:
  TS_TST_INFO_set_tsa                     3154	1_1_0	EXIST::FUNCTION:TS
  i2d_ASN1_GENERALIZEDTIME                3155	1_1_0	EXIST::FUNCTION:
-@@ -3268,11 +3214,11 @@ TS_TST_INFO_set_tsa                     3154	1_1_0	EXIST::FUNCTION:TS
+@@ -3268,11 +3213,11 @@ X509_VERIFY_PARAM_set_time              3159	1_1_0	EXIST::FUNCTION:
  BN_reciprocal                           3160	1_1_0	EXIST::FUNCTION:
  d2i_PKCS7_SIGN_ENVELOPE                 3161	1_1_0	EXIST::FUNCTION:
  X509_NAME_digest                        3162	1_1_0	EXIST::FUNCTION:
@@ -168733,7 +185924,7 @@
  PKCS12_SAFEBAG_create_crl               3168	1_1_0	EXIST::FUNCTION:
  d2i_X509_NAME                           3169	1_1_0	EXIST::FUNCTION:
  IDEA_cfb64_encrypt                      3170	1_1_0	EXIST::FUNCTION:IDEA
-@@ -3282,24 +3228,23 @@ HMAC_Init                               3173	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_
+@@ -3282,24 +3227,23 @@ HMAC_Init                               3173	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_
  EVP_MD_CTX_update_fn                    3174	1_1_0	EXIST::FUNCTION:
  EVP_aes_128_ecb                         3175	1_1_0	EXIST::FUNCTION:
  i2d_PKCS7_bio_stream                    3176	1_1_0	EXIST::FUNCTION:
@@ -168763,7 +185954,7 @@
  CRYPTO_THREAD_run_once                  3195	1_1_0	EXIST::FUNCTION:
  TS_REQ_print_bio                        3196	1_1_0	EXIST::FUNCTION:TS
  SCT_get_version                         3197	1_1_0	EXIST::FUNCTION:CT
-@@ -3307,7 +3252,7 @@ IDEA_set_encrypt_key                    3198	1_1_0	EXIST::FUNCTION:IDEA
+@@ -3307,7 +3251,7 @@ IDEA_set_encrypt_key                    3198	1_1_0	EXIST::FUNCTION:IDEA
  ENGINE_get_DH                           3199	1_1_0	EXIST::FUNCTION:ENGINE
  i2d_ASIdentifierChoice                  3200	1_1_0	EXIST::FUNCTION:RFC3779
  SRP_Calc_A                              3201	1_1_0	EXIST::FUNCTION:SRP
@@ -168772,7 +185963,7 @@
  EVP_idea_cfb64                          3203	1_1_0	EXIST::FUNCTION:IDEA
  PKCS12_newpass                          3204	1_1_0	EXIST::FUNCTION:
  EVP_aes_256_cbc_hmac_sha256             3205	1_1_0	EXIST::FUNCTION:
-@@ -3321,11 +3266,11 @@ X509_issuer_name_hash_old               3208	1_1_0	EXIST::FUNCTION:MD5
+@@ -3321,11 +3265,11 @@ EVP_CIPHER_CTX_new                      3212	1_1_0	EXIST::FUNCTION:
  MD4_Final                               3213	1_1_0	EXIST::FUNCTION:MD4
  EVP_PKEY_id                             3214	1_1_0	EXIST::FUNCTION:
  CMS_RecipientInfo_get0_pkey_ctx         3215	1_1_0	EXIST::FUNCTION:CMS
@@ -168786,7 +185977,7 @@
  BIO_hex_string                          3221	1_1_0	EXIST::FUNCTION:
  X509_REQ_sign_ctx                       3222	1_1_0	EXIST::FUNCTION:
  CRYPTO_ocb128_init                      3223	1_1_0	EXIST::FUNCTION:OCB
-@@ -3377,10 +3322,9 @@ ENGINE_set_load_pubkey_function         3266	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -3377,10 +3321,9 @@ BIO_vprintf                             3267	1_1_0	EXIST::FUNCTION:
  CMS_RecipientInfo_decrypt               3268	1_1_0	EXIST::FUNCTION:CMS
  RSA_generate_key                        3269	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8,RSA
  PKCS7_set0_type_other                   3270	1_1_0	EXIST::FUNCTION:
@@ -168799,7 +185990,7 @@
  SCT_print                               3275	1_1_0	EXIST::FUNCTION:CT
  X509_PUBKEY_set                         3276	1_1_0	EXIST::FUNCTION:
  POLICY_CONSTRAINTS_free                 3277	1_1_0	EXIST::FUNCTION:
-@@ -3390,9 +3334,9 @@ d2i_DSA_PUBKEY_bio                      3279	1_1_0	EXIST::FUNCTION:DSA
+@@ -3390,9 +3333,9 @@ X509_NAME_get_text_by_OBJ               3280	1_1_0	EXIST::FUNCTION:
  RSA_padding_check_none                  3281	1_1_0	EXIST::FUNCTION:RSA
  CRYPTO_set_mem_debug                    3282	1_1_0	EXIST::FUNCTION:
  TS_VERIFY_CTX_init                      3283	1_1_0	EXIST::FUNCTION:TS
@@ -168811,7 +186002,7 @@
  X509_LOOKUP_ctrl                        3287	1_1_0	EXIST::FUNCTION:
  SRP_check_known_gN_param                3288	1_1_0	EXIST::FUNCTION:SRP
  d2i_DIST_POINT                          3289	1_1_0	EXIST::FUNCTION:
-@@ -3412,7 +3356,7 @@ DSA_SIG_free                            3301	1_1_0	EXIST::FUNCTION:DSA
+@@ -3412,7 +3355,7 @@ DSA_SIG_free                            3301	1_1_0	EXIST::FUNCTION:DSA
  BIO_asn1_set_suffix                     3302	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_set_type_str                   3303	1_1_0	EXIST::FUNCTION:
  i2d_X509_SIG                            3304	1_1_0	EXIST::FUNCTION:
@@ -168820,7 +186011,7 @@
  X509_STORE_CTX_set_trust                3306	1_1_0	EXIST::FUNCTION:
  TS_ACCURACY_set_micros                  3307	1_1_0	EXIST::FUNCTION:TS
  EVP_DigestFinal_ex                      3308	1_1_0	EXIST::FUNCTION:
-@@ -3436,24 +3380,23 @@ CTLOG_free                              3325	1_1_0	EXIST::FUNCTION:CT
+@@ -3436,24 +3379,23 @@ CTLOG_free                              3325	1_1_0	EXIST::FUNCTION:CT
  EVP_CIPHER_meth_dup                     3326	1_1_0	EXIST::FUNCTION:
  CMS_get1_crls                           3327	1_1_0	EXIST::FUNCTION:CMS
  X509_aux_print                          3328	1_1_0	EXIST::FUNCTION:
@@ -168848,7 +186039,7 @@
  ASN1_VISIBLESTRING_new                  3347	1_1_0	EXIST::FUNCTION:
  BN_set_flags                            3348	1_1_0	EXIST::FUNCTION:
  d2i_PrivateKey_bio                      3349	1_1_0	EXIST::FUNCTION:
-@@ -3461,8 +3404,8 @@ CMS_SignerInfo_verify_content           3343	1_1_0	EXIST::FUNCTION:CMS
+@@ -3461,8 +3403,8 @@ ASN1_SEQUENCE_ANY_it                    3350	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION
  ASN1_SEQUENCE_ANY_it                    3350	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  ASN1_UTCTIME_adj                        3351	1_1_0	EXIST::FUNCTION:
  BN_mod_sqrt                             3352	1_1_0	EXIST::FUNCTION:
@@ -168859,7 +186050,7 @@
  EVP_PKEY_meth_get_paramgen              3355	1_1_0	EXIST::FUNCTION:
  X509_ATTRIBUTE_create_by_OBJ            3356	1_1_0	EXIST::FUNCTION:
  RSA_generate_key_ex                     3357	1_1_0	EXIST::FUNCTION:RSA
-@@ -3471,7 +3414,7 @@ CMS_SignerInfo_get0_algs                3358	1_1_0	EXIST::FUNCTION:CMS
+@@ -3471,7 +3413,7 @@ DIST_POINT_free                         3359	1_1_0	EXIST::FUNCTION:
  ESS_SIGNING_CERT_free                   3360	1_1_0	EXIST::FUNCTION:TS
  SCT_new_from_base64                     3361	1_1_0	EXIST::FUNCTION:CT
  OpenSSL_version                         3362	1_1_0	EXIST::FUNCTION:
@@ -168868,7 +186059,7 @@
  ECDSA_SIG_get0                          3364	1_1_0	EXIST::FUNCTION:EC
  BN_set_word                             3365	1_1_0	EXIST::FUNCTION:
  ENGINE_set_flags                        3366	1_1_0	EXIST::FUNCTION:ENGINE
-@@ -3489,21 +3432,19 @@ RSA_padding_check_SSLv23                3373	1_1_0	EXIST::FUNCTION:RSA
+@@ -3489,21 +3431,19 @@ PKCS12_PBE_add                          3376	1_1_0	EXIST::FUNCTION:
  EC_KEY_set_public_key_affine_coordinates 3377	1_1_0	EXIST::FUNCTION:EC
  EVP_EncryptInit_ex                      3378	1_1_0	EXIST::FUNCTION:
  ENGINE_add                              3379	1_1_0	EXIST::FUNCTION:ENGINE
@@ -168891,7 +186082,7 @@
  X509_INFO_free                          3394	1_1_0	EXIST::FUNCTION:
  d2i_PKCS8_PRIV_KEY_INFO_fp              3395	1_1_0	EXIST::FUNCTION:STDIO
  X509_OBJECT_retrieve_match              3396	1_1_0	EXIST::FUNCTION:
-@@ -3511,13 +3452,13 @@ d2i_PKCS8_PRIV_KEY_INFO_fp              3395	1_1_0	EXIST::FUNCTION:STDIO
+@@ -3511,13 +3451,13 @@ EVP_aes_128_ctr                         3397	1_1_0	EXIST::FUNCTION:
  EVP_PBE_find                            3398	1_1_0	EXIST::FUNCTION:
  SHA512_Transform                        3399	1_1_0	EXIST:!VMSVAX:FUNCTION:
  ERR_add_error_vdata                     3400	1_1_0	EXIST::FUNCTION:
@@ -168907,7 +186098,7 @@
  CONF_imodule_get_usr_data               3408	1_1_0	EXIST::FUNCTION:
  CRYPTO_new_ex_data                      3409	1_1_0	EXIST::FUNCTION:
  PEM_read_PKCS8_PRIV_KEY_INFO            3410	1_1_0	EXIST::FUNCTION:
-@@ -3531,7 +3472,7 @@ DH_check_pub_key                        3416	1_1_0	EXIST::FUNCTION:DH
+@@ -3531,7 +3471,7 @@ ASN1_mbstring_copy                      3417	1_1_0	EXIST::FUNCTION:
  PKCS7_set_type                          3418	1_1_0	EXIST::FUNCTION:
  BIO_gets                                3419	1_1_0	EXIST::FUNCTION:
  RSA_padding_check_PKCS1_type_1          3420	1_1_0	EXIST::FUNCTION:RSA
@@ -168916,7 +186107,7 @@
  i2d_X509_REQ_fp                         3422	1_1_0	EXIST::FUNCTION:STDIO
  BN_BLINDING_convert_ex                  3423	1_1_0	EXIST::FUNCTION:
  ASN1_GENERALIZEDTIME_print              3424	1_1_0	EXIST::FUNCTION:
-@@ -3540,15 +3481,15 @@ PEM_ASN1_read                           3426	1_1_0	EXIST::FUNCTION:STDIO
+@@ -3540,15 +3480,15 @@ PEM_ASN1_read                           3426	1_1_0	EXIST::FUNCTION:STDIO
  SCT_get_log_entry_type                  3427	1_1_0	EXIST::FUNCTION:CT
  EVP_CIPHER_meth_get_init                3428	1_1_0	EXIST::FUNCTION:
  X509_ALGOR_free                         3429	1_1_0	EXIST::FUNCTION:
@@ -168935,7 +186126,7 @@
  EVP_MD_meth_get_init                    3439	1_1_0	EXIST::FUNCTION:
  ASN1_BIT_STRING_free                    3440	1_1_0	EXIST::FUNCTION:
  i2d_PROXY_CERT_INFO_EXTENSION           3441	1_1_0	EXIST::FUNCTION:
-@@ -3557,7 +3498,7 @@ CTLOG_new_null                          3436	1_1_0	EXIST::FUNCTION:CT
+@@ -3557,10 +3497,10 @@ X509_CRL_up_ref                         3443	1_1_0	EXIST::FUNCTION:
  EVP_EncodeFinal                         3444	1_1_0	EXIST::FUNCTION:
  X509_set_ex_data                        3445	1_1_0	EXIST::FUNCTION:
  ERR_get_next_error_library              3446	1_1_0	EXIST::FUNCTION:
@@ -168943,8 +186134,12 @@
 +OCSP_RESPONSE_print                     3447	1_1_0	EXIST::FUNCTION:OCSP
  BN_get_rfc3526_prime_2048               3448	1_1_0	EXIST::FUNCTION:
  BIO_new_bio_pair                        3449	1_1_0	EXIST::FUNCTION:
- EC_GFp_nistp256_method                  3450	1_1_0	EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
-@@ -3588,14 +3529,14 @@ RIPEMD160_Init                          3473	1_1_0	EXIST::FUNCTION:RMD160
+-EC_GFp_nistp256_method                  3450	1_1_0	EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
++EC_GFp_nistp256_method                  3450	1_1_0	EXIST::FUNCTION:EC,EC_NISTP_64_GCC_128
+ BIO_method_type                         3451	1_1_0	EXIST::FUNCTION:
+ ECPKParameters_print                    3452	1_1_0	EXIST::FUNCTION:EC
+ EVP_rc4                                 3453	1_1_0	EXIST::FUNCTION:RC4
+@@ -3588,14 +3528,14 @@ ASYNC_WAIT_CTX_get_changed_fds          3474	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_save_parameters                3475	1_1_0	EXIST::FUNCTION:
  SCT_set_source                          3476	1_1_0	EXIST::FUNCTION:CT
  DES_set_odd_parity                      3477	1_1_0	EXIST::FUNCTION:DES
@@ -168963,7 +186158,7 @@
  X509V3_EXT_add_alias                    3486	1_1_0	EXIST::FUNCTION:
  BN_get_params                           3487	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8
  PKCS5_pbkdf2_set                        3488	1_1_0	EXIST::FUNCTION:
-@@ -3613,7 +3554,7 @@ ENGINE_register_digests                 3491	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -3613,7 +3553,7 @@ BIO_ptr_ctrl                            3499	1_1_0	EXIST::FUNCTION:
  EVP_rc4_hmac_md5                        3500	1_1_0	EXIST::FUNCTION:MD5,RC4
  OPENSSL_strlcat                         3501	1_1_0	EXIST::FUNCTION:
  X509_VERIFY_PARAM_new                   3502	1_1_0	EXIST::FUNCTION:
@@ -168972,7 +186167,7 @@
  BUF_MEM_grow_clean                      3504	1_1_0	EXIST::FUNCTION:
  X509_NAME_print_ex_fp                   3505	1_1_0	EXIST::FUNCTION:STDIO
  X509_check_host                         3506	1_1_0	EXIST::FUNCTION:
-@@ -3663,7 +3604,6 @@ i2o_SCT_signature                       3543	1_1_0	EXIST::FUNCTION:CT
+@@ -3663,7 +3603,6 @@ BN_dec2bn                               3549	1_1_0	EXIST::FUNCTION:
  CMS_decrypt                             3550	1_1_0	EXIST::FUNCTION:CMS
  BN_mpi2bn                               3551	1_1_0	EXIST::FUNCTION:
  EVP_aes_128_cfb128                      3552	1_1_0	EXIST::FUNCTION:
@@ -168980,7 +186175,7 @@
  RC5_32_ecb_encrypt                      3554	1_1_0	EXIST::FUNCTION:RC5
  EVP_CIPHER_meth_new                     3555	1_1_0	EXIST::FUNCTION:
  i2d_RSA_OAEP_PARAMS                     3556	1_1_0	EXIST::FUNCTION:RSA
-@@ -3671,19 +3611,17 @@ i2d_RSA_OAEP_PARAMS                     3556	1_1_0	EXIST::FUNCTION:RSA
+@@ -3671,19 +3610,17 @@ SXNET_get_id_ulong                      3557	1_1_0	EXIST::FUNCTION:
  BIO_get_callback_arg                    3558	1_1_0	EXIST::FUNCTION:
  ENGINE_register_RSA                     3559	1_1_0	EXIST::FUNCTION:ENGINE
  i2v_GENERAL_NAMES                       3560	1_1_0	EXIST::FUNCTION:
@@ -169002,7 +186197,7 @@
  CRYPTO_ccm128_aad                       3572	1_1_0	EXIST::FUNCTION:
  IPAddressFamily_new                     3573	1_1_0	EXIST::FUNCTION:RFC3779
  d2i_TS_ACCURACY                         3574	1_1_0	EXIST::FUNCTION:TS
-@@ -3693,7 +3631,7 @@ EVP_camellia_256_cbc                    3577	1_1_0	EXIST::FUNCTION:CAMELLIA
+@@ -3693,7 +3630,7 @@ EVP_camellia_256_cbc                    3577	1_1_0	EXIST::FUNCTION:CAMELLIA
  i2d_PROXY_POLICY                        3578	1_1_0	EXIST::FUNCTION:
  X509_subject_name_hash_old              3579	1_1_0	EXIST::FUNCTION:MD5
  PEM_read_bio_DSA_PUBKEY                 3580	1_1_0	EXIST::FUNCTION:DSA
@@ -169011,7 +186206,7 @@
  PEM_write_DSAparams                     3582	1_1_0	EXIST::FUNCTION:DSA
  ASN1_TIME_to_generalizedtime            3583	1_1_0	EXIST::FUNCTION:
  X509_CRL_get_ext_by_critical            3584	1_1_0	EXIST::FUNCTION:
-@@ -3703,17 +3641,16 @@ PEM_write_RSAPublicKey                  3587	1_1_0	EXIST::FUNCTION:RSA
+@@ -3703,17 +3640,16 @@ PEM_write_RSAPublicKey                  3587	1_1_0	EXIST::FUNCTION:RSA
  EVP_MD_meth_dup                         3588	1_1_0	EXIST::FUNCTION:
  ENGINE_unregister_ciphers               3589	1_1_0	EXIST::FUNCTION:ENGINE
  X509_issuer_and_serial_cmp              3590	1_1_0	EXIST::FUNCTION:
@@ -169031,7 +186226,7 @@
  BN_is_prime                             3601	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8
  CMS_get0_signers                        3602	1_1_0	EXIST::FUNCTION:CMS
  i2d_PrivateKey_fp                       3603	1_1_0	EXIST::FUNCTION:STDIO
-@@ -3736,11 +3673,10 @@ TS_CONF_set_signer_digest               3619	1_1_0	EXIST::FUNCTION:TS
+@@ -3736,11 +3672,10 @@ TS_CONF_set_signer_digest               3619	1_1_0	EXIST::FUNCTION:TS
  OBJ_new_nid                             3620	1_1_0	EXIST::FUNCTION:
  CMS_ReceiptRequest_new                  3621	1_1_0	EXIST::FUNCTION:CMS
  SRP_VBASE_get1_by_user                  3622	1_1_0	EXIST::FUNCTION:SRP
@@ -169044,7 +186239,7 @@
  ENGINE_free                             3628	1_1_0	EXIST::FUNCTION:ENGINE
  d2i_X509_ATTRIBUTE                      3629	1_1_0	EXIST::FUNCTION:
  TS_RESP_free                            3630	1_1_0	EXIST::FUNCTION:TS
-@@ -3781,22 +3717,21 @@ ERR_load_DH_strings                     3664	1_1_0	EXIST::FUNCTION:DH
+@@ -3781,22 +3716,21 @@ ERR_load_DH_strings                     3664	1_1_0	EXIST::FUNCTION:DH
  EVP_MD_block_size                       3665	1_1_0	EXIST::FUNCTION:
  TS_X509_ALGOR_print_bio                 3666	1_1_0	EXIST::FUNCTION:TS
  d2i_PKCS7_ENVELOPE                      3667	1_1_0	EXIST::FUNCTION:
@@ -169070,7 +186265,7 @@
  ASN1_STRING_free                        3684	1_1_0	EXIST::FUNCTION:
  X509_VERIFY_PARAM_inherit               3685	1_1_0	EXIST::FUNCTION:
  EC_GROUP_get_curve_name                 3686	1_1_0	EXIST::FUNCTION:EC
-@@ -3806,20 +3741,20 @@ RSA_print                               3687	1_1_0	EXIST::FUNCTION:RSA
+@@ -3806,20 +3740,20 @@ EVP_PKEY_decrypt_old                    3689	1_1_0	EXIST::FUNCTION:
  ASN1_UTCTIME_cmp_time_t                 3690	1_1_0	EXIST::FUNCTION:
  X509_VERIFY_PARAM_set1_ip               3691	1_1_0	EXIST::FUNCTION:
  OTHERNAME_free                          3692	1_1_0	EXIST::FUNCTION:
@@ -169096,7 +186291,7 @@
  CMS_add0_CertificateChoices             3706	1_1_0	EXIST::FUNCTION:CMS
  POLICYINFO_new                          3707	1_1_0	EXIST::FUNCTION:
  X509_CRL_get0_by_serial                 3708	1_1_0	EXIST::FUNCTION:
-@@ -3832,15 +3767,15 @@ ENGINE_register_all_digests             3713	1_1_0	EXIST::FUNCTION:ENGINE
+@@ -3832,15 +3766,15 @@ ENGINE_register_all_digests             3713	1_1_0	EXIST::FUNCTION:ENGINE
  X509_REQ_get_version                    3714	1_1_0	EXIST::FUNCTION:
  i2d_ASN1_UTCTIME                        3715	1_1_0	EXIST::FUNCTION:
  TS_STATUS_INFO_new                      3716	1_1_0	EXIST::FUNCTION:TS
@@ -169115,7 +186310,7 @@
  X509_STORE_CTX_get0_policy_tree         3726	1_1_0	EXIST::FUNCTION:
  DES_set_key_checked                     3727	1_1_0	EXIST::FUNCTION:DES
  EVP_PKEY_meth_free                      3728	1_1_0	EXIST::FUNCTION:
-@@ -3869,9 +3804,9 @@ DES_fcrypt                              3748	1_1_0	EXIST::FUNCTION:DES
+@@ -3869,9 +3803,9 @@ EVP_PKEY_meth_get_sign                  3750	1_1_0	EXIST::FUNCTION:
  TS_REQ_get_nonce                        3751	1_1_0	EXIST::FUNCTION:TS
  ENGINE_unregister_EC                    3752	1_1_0	EXIST::FUNCTION:ENGINE
  X509v3_get_ext_count                    3753	1_1_0	EXIST::FUNCTION:
@@ -169127,7 +186322,7 @@
  BIO_set_callback                        3757	1_1_0	EXIST::FUNCTION:
  BN_GF2m_poly2arr                        3758	1_1_0	EXIST::FUNCTION:EC2M
  CMS_unsigned_get_attr_count             3759	1_1_0	EXIST::FUNCTION:CMS
-@@ -3881,18 +3816,17 @@ ECDH_compute_key                        3762	1_1_0	EXIST::FUNCTION:EC
+@@ -3881,18 +3815,17 @@ ECDH_compute_key                        3762	1_1_0	EXIST::FUNCTION:EC
  ASN1_TIME_print                         3763	1_1_0	EXIST::FUNCTION:
  EVP_PKEY_CTX_get0_peerkey               3764	1_1_0	EXIST::FUNCTION:
  BN_mod_lshift1                          3765	1_1_0	EXIST::FUNCTION:
@@ -169150,7 +186345,7 @@
  EC_KEY_METHOD_set_init                  3777	1_1_0	EXIST::FUNCTION:EC
  EVP_PKEY_asn1_copy                      3778	1_1_0	EXIST::FUNCTION:
  RSA_PSS_PARAMS_it                       3779	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA
-@@ -3900,7 +3834,7 @@ RSA_PSS_PARAMS_it                       3779	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
+@@ -3900,7 +3833,7 @@ RSA_PSS_PARAMS_it                       3779	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
  X509_STORE_CTX_get_error_depth          3780	1_1_0	EXIST::FUNCTION:
  ASN1_GENERALIZEDTIME_set_string         3781	1_1_0	EXIST::FUNCTION:
  EC_GROUP_new_curve_GFp                  3782	1_1_0	EXIST::FUNCTION:EC
@@ -169159,7 +186354,7 @@
  Camellia_ofb128_encrypt                 3784	1_1_0	EXIST::FUNCTION:CAMELLIA
  X509_new                                3785	1_1_0	EXIST::FUNCTION:
  EC_KEY_get_conv_form                    3786	1_1_0	EXIST::FUNCTION:EC
-@@ -3931,15 +3865,14 @@ CMS_signed_delete_attr                  3807	1_1_0	EXIST::FUNCTION:CMS
+@@ -3931,15 +3864,14 @@ USERNOTICE_it                           3809	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:
  PKEY_USAGE_PERIOD_it                    3810	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  PKEY_USAGE_PERIOD_it                    3810	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  BN_mul_word                             3811	1_1_0	EXIST::FUNCTION:
@@ -169177,7 +186372,7 @@
  X509_PURPOSE_get_by_sname               3820	1_1_0	EXIST::FUNCTION:
  X509_PURPOSE_set                        3821	1_1_0	EXIST::FUNCTION:
  BN_mod_inverse                          3822	1_1_0	EXIST::FUNCTION:
-@@ -3961,20 +3894,20 @@ BN_GF2m_mod_inv_arr                     3837	1_1_0	EXIST::FUNCTION:EC2M
+@@ -3961,20 +3893,20 @@ BN_GF2m_mod_inv_arr                     3837	1_1_0	EXIST::FUNCTION:EC2M
  X509_REQ_get1_email                     3838	1_1_0	EXIST::FUNCTION:
  EC_KEY_print                            3839	1_1_0	EXIST::FUNCTION:EC
  i2d_ASN1_INTEGER                        3840	1_1_0	EXIST::FUNCTION:
@@ -169202,7 +186397,7 @@
  EVP_PKEY_asn1_set_security_bits         3855	1_1_0	EXIST::FUNCTION:
  i2d_CERTIFICATEPOLICIES                 3856	1_1_0	EXIST::FUNCTION:
  i2d_X509_CERT_AUX                       3857	1_1_0	EXIST::FUNCTION:
-@@ -3982,8 +3915,8 @@ i2o_ECPublicKey                         3858	1_1_0	EXIST::FUNCTION:EC
+@@ -3982,8 +3914,8 @@ i2o_ECPublicKey                         3858	1_1_0	EXIST::FUNCTION:EC
  PKCS12_SAFEBAG_create0_pkcs8            3859	1_1_0	EXIST::FUNCTION:
  OBJ_get0_data                           3860	1_1_0	EXIST::FUNCTION:
  EC_GROUP_get0_seed                      3861	1_1_0	EXIST::FUNCTION:EC
@@ -169213,7 +186408,7 @@
  ASRange_it                              3863	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
  ASRange_it                              3863	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
  i2d_TS_RESP                             3864	1_1_0	EXIST::FUNCTION:TS
-@@ -3997,17 +3930,15 @@ RSA_OAEP_PARAMS_it                      3871	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION
+@@ -3997,17 +3929,15 @@ RSA_OAEP_PARAMS_it                      3871	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION
  RSA_OAEP_PARAMS_it                      3871	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA
  BN_bn2mpi                               3872	1_1_0	EXIST::FUNCTION:
  X509_STORE_CTX_cleanup                  3873	1_1_0	EXIST::FUNCTION:
@@ -169233,7 +186428,7 @@
  ASN1_INTEGER_it                         3885	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
  ASN1_INTEGER_it                         3885	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
  TS_ACCURACY_new                         3886	1_1_0	EXIST::FUNCTION:TS
-@@ -4019,19 +3950,19 @@ TS_RESP_CTX_set_status_info_cond        3890	1_1_0	EXIST::FUNCTION:TS
+@@ -4019,19 +3949,19 @@ PBKDF2PARAM_new                         3891	1_1_0	EXIST::FUNCTION:
  ENGINE_set_RSA                          3892	1_1_0	EXIST::FUNCTION:ENGINE
  i2d_X509_ATTRIBUTE                      3893	1_1_0	EXIST::FUNCTION:
  PKCS7_ctrl                              3894	1_1_0	EXIST::FUNCTION:
@@ -169257,7 +186452,7 @@
  PKCS8_pkey_get0_attrs                   3907	1_1_0	EXIST::FUNCTION:
  PKCS8_pkey_add1_attr_by_NID             3908	1_1_0	EXIST::FUNCTION:
  ASYNC_is_capable                        3909	1_1_0	EXIST::FUNCTION:
-@@ -4194,16 +4125,25 @@ DH_meth_set_generate_key                4067	1_1_0	EXIST::FUNCTION:DH
+@@ -4194,16 +4124,29 @@ DH_meth_set_generate_key                4067	1_1_0	EXIST::FUNCTION:DH
  DH_meth_free                            4068	1_1_0	EXIST::FUNCTION:DH
  DH_meth_get_generate_key                4069	1_1_0	EXIST::FUNCTION:DH
  DH_set_flags                            4070	1_1_0	EXIST::FUNCTION:DH
@@ -169289,11 +186484,15 @@
 +X509_STORE_get0_param                   4090	1_1_0	EXIST::FUNCTION:
 +PEM_write_bio_PrivateKey_traditional    4091	1_1_0	EXIST::FUNCTION:
 +X509_get_pathlen                        4092	1_1_0	EXIST::FUNCTION:
++ECDSA_SIG_set0                          4093	1_1_0	EXIST::FUNCTION:EC
++DSA_SIG_set0                            4094	1_1_0	EXIST::FUNCTION:DSA
++EVP_PKEY_get0_hmac                      4095	1_1_0	EXIST::FUNCTION:
++HMAC_CTX_get_md                         4096	1_1_0	EXIST::FUNCTION:
 diff --git a/util/libssl.num b/util/libssl.num
-index 636892cd8a66..d023293808c7 100644
+index 636892c..d023293 100644
 --- a/util/libssl.num
 +++ b/util/libssl.num
-@@ -7,7 +7,6 @@ SSL_CTX_set_srp_client_pwd_callback     5	1_1_0	EXIST::FUNCTION:SRP
+@@ -7,7 +7,6 @@ SSL_copy_session_id                     6	1_1_0	EXIST::FUNCTION:
  SSL_CTX_set_srp_password                7	1_1_0	EXIST::FUNCTION:SRP
  SSL_shutdown                            8	1_1_0	EXIST::FUNCTION:
  SSL_CTX_set_msg_callback                9	1_1_0	EXIST::FUNCTION:
@@ -169309,7 +186508,7 @@
 +SSL_SESSION_get_protocol_version        398	1_1_0	EXIST::FUNCTION:
 +SSL_is_dtls                             399	1_1_0	EXIST::FUNCTION:
 diff --git a/util/mkbuildinf.pl b/util/mkbuildinf.pl
-index a809f710b41a..5bf0168b6a7c 100755
+index a809f71..5bf0168 100755
 --- a/util/mkbuildinf.pl
 +++ b/util/mkbuildinf.pl
 @@ -1,4 +1,11 @@
@@ -169326,7 +186525,7 @@
  my ($cflags, $platform) = @ARGV;
  
 diff --git a/util/mkdef.pl b/util/mkdef.pl
-index 9f8d561b0087..c2fbfe7062f3 100755
+index 9f8d561..c2fbfe7 100755
 --- a/util/mkdef.pl
 +++ b/util/mkdef.pl
 @@ -1,4 +1,11 @@
@@ -169375,7 +186574,7 @@
  				}
  			}
 diff --git a/util/mkdir-p.pl b/util/mkdir-p.pl
-index e73d02b073bb..4f44266802c0 100755
+index e73d02b..3280602 100755
 --- a/util/mkdir-p.pl
 +++ b/util/mkdir-p.pl
 @@ -1,6 +1,10 @@
@@ -169392,8 +186591,22 @@
  
  # On some systems, the -p option to mkdir (= also create any missing parent
  # directories) is not available.
+@@ -29,6 +33,12 @@ sub do_mkdir_p {
+     do_mkdir_p($parent);
+   }
+ 
+-  mkdir($dir, 0777) || die "Cannot create directory $dir: $!\n";
++  unless (mkdir($dir, 0777)) {
++    if (-d $dir) {
++      # We raced against another instance doing the same thing.
++      return;
++    }
++    die "Cannot create directory $dir: $!\n";
++  }
+   print "created directory `$dir'\n";
+ }
 diff --git a/util/mkerr.pl b/util/mkerr.pl
-index 4fd5520d87cb..7d0797859fc9 100644
+index 4fd5520..7d07978 100644
 --- a/util/mkerr.pl
 +++ b/util/mkerr.pl
 @@ -1,7 +1,12 @@
@@ -169420,7 +186633,7 @@
  
  my $pack_errcode;
  my $load_errcode;
-@@ -62,6 +69,8 @@ mkerr.pl [options] ...
+@@ -62,6 +69,8 @@ Options:
    -hprefix P    Prepend the filenames in generated #include <header>
                  statements with prefix P. Default: 'openssl/' (without
                  the quotes, naturally)
@@ -169669,7 +186882,7 @@
  		} else {
  			print OUT "    {${rstr}, \"$rn\"},\n";
 diff --git a/util/mkrc.pl b/util/mkrc.pl
-index 8b74ff8adc56..c177349c13e4 100755
+index 8b74ff8..c177349 100755
 --- a/util/mkrc.pl
 +++ b/util/mkrc.pl
 @@ -1,5 +1,10 @@
@@ -169694,7 +186907,7 @@
              //VALUE "PrivateBuild", "\\0"
              //VALUE "SpecialBuild", "\\0"
 diff --git a/util/openssl-format-source b/util/openssl-format-source
-index 725883601f5c..36ea43231c5f 100755
+index 7258836..36ea432 100755
 --- a/util/openssl-format-source
 +++ b/util/openssl-format-source
 @@ -1,5 +1,13 @@
@@ -169713,7 +186926,7 @@
  #
 diff --git a/util/perl/OpenSSL/Util/Pod.pm b/util/perl/OpenSSL/Util/Pod.pm
 new file mode 100644
-index 000000000000..5c0af95918ef
+index 0000000..5c0af95
 --- /dev/null
 +++ b/util/perl/OpenSSL/Util/Pod.pm
 @@ -0,0 +1,158 @@
@@ -169877,7 +187090,7 @@
 +1;
 diff --git a/util/perlpath.pl b/util/perlpath.pl
 deleted file mode 100755
-index a1f236bd9843..000000000000
+index a1f236b..0000000
 --- a/util/perlpath.pl
 +++ /dev/null
 @@ -1,35 +0,0 @@
@@ -169918,7 +187131,7 @@
 -	}
 diff --git a/util/process_docs.pl b/util/process_docs.pl
 new file mode 100644
-index 000000000000..8b8de81acdaa
+index 0000000..8b8de81
 --- /dev/null
 +++ b/util/process_docs.pl
 @@ -0,0 +1,235 @@
@@ -170158,7 +187371,7 @@
 +
 +=cut
 diff --git a/util/selftest.pl b/util/selftest.pl
-index 06d494a2fb93..d1d11593fa27 100644
+index 06d494a..d1d1159 100644
 --- a/util/selftest.pl
 +++ b/util/selftest.pl
 @@ -1,7 +1,12 @@
@@ -170177,7 +187390,7 @@
  if (! -f "Configure") {
      print "Please run perl util/selftest.pl in the OpenSSL directory.\n";
 diff --git a/util/su-filter.pl b/util/su-filter.pl
-index 3715ba263d70..5996f58225dc 100644
+index 3715ba2..5996f58 100644
 --- a/util/su-filter.pl
 +++ b/util/su-filter.pl
 @@ -1,7 +1,11 @@
@@ -170197,7 +187410,7 @@
  my $in_su = 0;
 diff --git a/util/toutf8.sh b/util/toutf8.sh
 deleted file mode 100644
-index 8a4254b3df3d..000000000000
+index 8a4254b..0000000
 --- a/util/toutf8.sh
 +++ /dev/null
 @@ -1,17 +0,0 @@
@@ -170219,7 +187432,7 @@
 -	fi
 -    done
 diff --git a/util/with_fallback.pm b/util/with_fallback.pm
-index 014f3551564a..b6deb2092e96 100644
+index 014f355..b6deb20 100644
 --- a/util/with_fallback.pm
 +++ b/util/with_fallback.pm
 @@ -1,4 +1,9 @@

Modified: openssl/branches/1.1.0/debian/patches/series
===================================================================
--- openssl/branches/1.1.0/debian/patches/series	2016-06-11 17:28:50 UTC (rev 809)
+++ openssl/branches/1.1.0/debian/patches/series	2016-06-26 13:15:26 UTC (rev 810)
@@ -8,4 +8,3 @@
 pic.patch
 c_rehash-compat.patch
 #padlock_conf.patch
-utils-mkdir-p-check-if-dir-exists-also-after-mkdir-f.patch




More information about the Pkg-openssl-changes mailing list