[openssl] master update

Richard Levitte levitte at openssl.org
Tue May 4 09:34:41 UTC 2021


The branch master has been updated
       via  f97bc7c4240ba370c323c0d753d9d97f7a7c89bf (commit)
       via  49f699b54d982c431c13f29ea08628ab599f1e6e (commit)
       via  be22315235605ac50f735758f6c6edcb262146db (commit)
       via  27ca03ea829443ee750db148dde87cf3da900d9c (commit)
       via  841a438c7f67f697dd6710b26cc6536dd76a420a (commit)
      from  02669b677e6263b3d337ceb526b8b030477fe26b (commit)


- Log -----------------------------------------------------------------
commit f97bc7c4240ba370c323c0d753d9d97f7a7c89bf
Author: Richard Levitte <levitte at openssl.org>
Date:   Tue Apr 27 11:23:12 2021 +0200

    [TEMPORARY] make 'make update' verbose in ci.yml
    
    Reviewed-by: Tomas Mraz <tomas at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/8871)

commit 49f699b54d982c431c13f29ea08628ab599f1e6e
Author: Richard Levitte <levitte at openssl.org>
Date:   Fri May 3 13:24:39 2019 +0200

    GitHub CI: ensure that unifdef is installed
    
    This is required for 'make update' and fips checksums
    
    Reviewed-by: Tomas Mraz <tomas at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/8871)

commit be22315235605ac50f735758f6c6edcb262146db
Author: Richard Levitte <levitte at openssl.org>
Date:   Fri May 3 13:12:59 2019 +0200

    FIPS module checksums: add scripts and Makefile rule
    
    This adds the following scripts:
    
    util/lang-compress.pl:
    
    Compress source code, which language is determined by the first argument.
    For the moment, we know 'perl' (perlasm source code), 'C' (C source code)
    and 'S' (Assembler with C preprocessor directives).
    This removes comments and empty lines, and compresses series of horizontal
    spaces to one single space in the languages where that's appropriate.
    
    util/fips-checksums.sh:
    
    Takes source file names as arguments, pushes them through
    util/lang-compress.pl and unifdef with FIPS_MODE defined, and calculates
    the checksum on the result.
    
    Reviewed-by: Tomas Mraz <tomas at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/8871)

commit 27ca03ea829443ee750db148dde87cf3da900d9c
Author: Richard Levitte <levitte at openssl.org>
Date:   Mon Apr 26 19:44:24 2021 +0200

    Unix build file: Add a target to create providers/fips.module.sources
    
    This file will be the basis for the FIPS module checksum calculation
    
    Reviewed-by: Tomas Mraz <tomas at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/8871)

commit 841a438c7f67f697dd6710b26cc6536dd76a420a
Author: Richard Levitte <levitte at openssl.org>
Date:   Mon Apr 26 19:41:54 2021 +0200

    Add OpenSSL::Config::Query and use it in configdata.pm
    
    OpenSSL::Config::Query is a configuration querying tool that's meant
    to make it easier to query the diverse configuration data for info.
    That's much easier than to dig through all the parts of %unified_info.
    
    Reviewed-by: Tomas Mraz <tomas at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/8871)

-----------------------------------------------------------------------

Summary of changes:
 .github/workflows/ci.yml          |   6 +-
 Configurations/unix-Makefile.tmpl |  53 +++++
 configdata.pm.in                  |  26 ++-
 providers/fips-sources.checksums  | 459 +++++++++++++++++++++++++++++++++++++
 providers/fips.checksum           |   1 +
 providers/fips.module.sources     | 467 ++++++++++++++++++++++++++++++++++++++
 util/c-compress-test.pl           |  54 +++++
 util/fips-checksums.sh            |  31 +++
 util/lang-compress.pl             | 189 +++++++++++++++
 util/perl/OpenSSL/Config/Query.pm | 177 +++++++++++++++
 10 files changed, 1460 insertions(+), 3 deletions(-)
 create mode 100644 providers/fips-sources.checksums
 create mode 100644 providers/fips.checksum
 create mode 100644 providers/fips.module.sources
 create mode 100755 util/c-compress-test.pl
 create mode 100755 util/fips-checksums.sh
 create mode 100755 util/lang-compress.pl
 create mode 100644 util/perl/OpenSSL/Config/Query.pm

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2e18fba41a..e37c7f54d8 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -15,13 +15,17 @@ jobs:
   check_update:
     runs-on: ubuntu-latest
     steps:
+    - name: install unifdef
+      run: |
+        sudo apt-get update
+        sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install unifdef
     - uses: actions/checkout at v2
     - name: config
       run: ./config --strict-warnings enable-fips && perl configdata.pm --dump
     - name: make build_generated
       run: make -s build_generated
     - name: make update
-      run: make -s update
+      run: make update
     - name: git diff
       run: git diff --exit-code
 
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index 4ace44477d..d98c42c85e 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -1055,6 +1055,9 @@ uninstall_html_docs:
 # It's important that generate_buildinfo comes after ordinals, as ordinals
 # is sensitive to build.info changes.
 update: generate errors ordinals generate_buildinfo
+{- output_off() if $disabled{fips}; "" -}
+update: fips-checksums
+{- output_on() if $disabled{fips}; "" -}
 
 generate: generate_apps generate_crypto_bn generate_crypto_objects \
           generate_crypto_conf generate_crypto_asn1 generate_fuzz_oids
@@ -1137,6 +1140,42 @@ generate_doc_buildinfo:
                 mv $(SRCDIR)/doc/build.info.new $(SRCDIR)/doc/build.info; \
           fi )
 
+{- output_off() if $disabled{fips}; "" -}
+generate_fips_sources: $(SRCDIR)/providers/fips.module.sources
+$(SRCDIR)/providers/fips.module.sources: \
+                $(SRCDIR)/Configure \
+                {- join(" \\\n" . ' ' x 16,
+                        fill_lines(" ", $COLUMNS - 16,
+                                   @{$config{build_file_templates}},
+                                   @{$config{build_infos}},
+                                   @{$config{conf_files}})) -}
+	rm -rf sources-tmp
+	mkdir sources-tmp
+	( \
+	  srcdir=`cd $(SRCDIR); pwd`; \
+	  cd sources-tmp \
+	  && $$srcdir/Configure enable-fips \
+	  && ./configdata.pm --query 'get_sources("providers/fips")' > sources1 \
+	  && $$srcdir/Configure enable-fips no-asm \
+	  && ./configdata.pm --query 'get_sources("providers/fips")' > sources2 \
+	)
+	( \
+	  srcdir2=`if [ "$(SRCDIR)" = "." ]; then echo ".."; elif echo "$(SRCDIR)" | grep '^/' > /dev/null; then echo "$(SRCDIR)"; else echo "../$(SRCDIR)"; fi`; \
+	  cat sources-tmp/sources1 sources-tmp/sources2 \
+	  | grep -v ' : \\$$' | sed -e 's| \\$$||' -e "s|^  $$srcdir2/||"; \
+	  cd $(SRCDIR); \
+	  for x in crypto/bn/asm/*.pl crypto/bn/asm/*.S \
+		   crypto/aes/asm/*.pl crypto/aes/asm/*.S \
+		   crypto/ec/asm/*.pl \
+		   crypto/md5/asm/*.pl \
+		   crypto/modes/asm/*.pl \
+		   crypto/sha/asm/*.pl; do \
+	    echo "$$x"; \
+	  done \
+	) | sort | uniq > $(SRCDIR)/providers/fips.module.sources
+	rm -rf sources-tmp
+{- output_on() if $disabled{fips}; "" -}
+
 # Set to -force to force a rebuild
 ERROR_REBUILD=
 errors:
@@ -1231,6 +1270,20 @@ tags TAGS: FORCE
 	-ctags -R .
 	-etags `find . -name '*.[ch]' -o -name '*.pm'`
 
+{- output_off() if $disabled{fips}; "" -}
+fips-checksums: generate_fips_sources
+	if which unifdef > /dev/null; then \
+	    ( cd $(SRCDIR) \
+	      && cat providers/fips.module.sources \
+	             | xargs ./util/fips-checksums.sh \
+	             > providers/fips-sources.checksums \
+	      && sha256sum providers/fips-sources.checksums \
+	             > providers/fips.checksum ); \
+	else \
+	    echo >&2 "WARNING: unifdef not in your \$$PATH, FIPS checksums not calculated"; \
+	fi
+{- output_on() if $disabled{fips}; "" -}
+
 # Release targets (note: only available on Unix) #####################
 
 tar:
diff --git a/configdata.pm.in b/configdata.pm.in
index 279b8f75c9..3481eab277 100644
--- a/configdata.pm.in
+++ b/configdata.pm.in
@@ -112,13 +112,14 @@ unless (caller) {
     use File::Basename;
     use Pod::Usage;
 
+    use lib '{- sourcedir('util', 'perl') -}';
+    use OpenSSL::fallback '{- sourcefile('external', 'perl', 'MODULES.txt') -}';
+
     my $here = dirname($0);
 
     if (scalar @ARGV == 0) {
         # With no arguments, re-create the build file
 
-        use lib '{- sourcedir('util', 'perl') -}';
-        use OpenSSL::fallback '{- sourcefile('external', 'perl', 'MODULES.txt') -}';
         use OpenSSL::Template;
 
         my $prepend = <<'_____';
@@ -172,6 +173,7 @@ _____
     my $buildparams = undef;
     my $reconf = undef;
     my $verbose = undef;
+    my $query = undef;
     my $help = undef;
     my $man = undef;
     GetOptions('dump|d'                 => \$dump,
@@ -183,6 +185,7 @@ _____
                'build-parameters|b'     => \$buildparams,
                'reconfigure|reconf|r'   => \$reconf,
                'verbose|v'              => \$verbose,
+               'query|q=s'              => \$query,
                'help'                   => \$help,
                'man'                    => \$man)
         or die "Errors in command line arguments\n";
@@ -320,6 +323,25 @@ _____
         chdir $here;
         exec $^X,catfile($config{sourcedir}, 'Configure'),'reconf';
     }
+    if ($query) {
+        use OpenSSL::Config::Query;
+
+        my $confquery = OpenSSL::Config::Query->new(info => \%unified_info,
+                                                    config => \%config);
+        my $result = eval "\$confquery->$query";
+
+        # We may need a result class with a printing function at some point.
+        # Until then, we assume that we get a scalar, or a list or a hash table
+        # with scalar values and simply print them in some orderly fashion.
+        if (ref $result eq 'ARRAY') {
+            print "$_\n" foreach @$result;
+        } elsif (ref $result eq 'HASH') {
+            print "$_ : \\\n  ", join(" \\\n  ", @{$result->{$_}}), "\n"
+                foreach sort keys %$result;
+        } elsif (ref $result eq 'SCALAR') {
+            print "$$result\n";
+        }
+    }
 }
 
 1;
diff --git a/providers/fips-sources.checksums b/providers/fips-sources.checksums
new file mode 100644
index 0000000000..50d19c5117
--- /dev/null
+++ b/providers/fips-sources.checksums
@@ -0,0 +1,459 @@
+0e22ea0cf34ef3871e30df0bc302dc29352d38001d1622ddb78a27a374b6aee8  crypto/aes/aes_cbc.c
+6028cd3c2e466625cc0b8b9b6a12278e5935aec3bff1eab006c6f13a1e248260  crypto/aes/aes_core.c
+3fac41ce96acb9189eac2d5571425c3ff33a34c884ae7e275e1fd3068b5fc662  crypto/aes/aes_ecb.c
+a2466f18da5847c7d9fbced17524633c10ce024671a72f53f9c9c55b9b9923dd  crypto/aes/aes_misc.c
+6979c133f76f4623e62e6e970deae70fa025e713a72b71aead5a048d49e47f6f  crypto/aes/asm/aes-586.pl
+92be9ff608331a432e95247a8f4fb9e46897d0cb76f2b6db809b61d44287964a  crypto/aes/asm/aes-armv4.pl
+953897f86e2de9fa27ef411155ab3aed133af94885f1507e76449c142da78656  crypto/aes/asm/aes-c64xplus.pl
+00196f01f5218ad731e6a058d406078f7228a9756d9d73f51c0d0c2a68f885af  crypto/aes/asm/aes-ia64.S
+88b6f8396cd9d86004743d5c3b0f72b7b8c3d5a2b00b0bbb761ba91ae5a7cdc8  crypto/aes/asm/aes-mips.pl
+7ff9c96ef3d591d45d776fa4b244601ea0d9328e289aeab1e1b92436ce7d02ad  crypto/aes/asm/aes-parisc.pl
+f1244cdeadcb4e48f35bc5df19d4cfaf07e0086ad951b84f07ff6966501faa5b  crypto/aes/asm/aes-ppc.pl
+ecbfe826f4c514810c3ee20e265f4f621149694c298554b2682e5de4f029f14f  crypto/aes/asm/aes-s390x.pl
+01f60ddf86f97eae22559e4b5a79855296100a1ec04c527567ba5c52e4f64f9b  crypto/aes/asm/aes-sparcv9.pl
+2b3b9ac56bf54334d053857a24bdb08592151e8a7a60b89b8195846b7f8ee7b5  crypto/aes/asm/aes-x86_64.pl
+cb429f1e92cb7d8397497a149161b10f05420031ba7d501e8b0c79ab7faaeb57  crypto/aes/asm/aesfx-sparcv9.pl
+14359dc32b7f4e5c08227fb9ac8f9232c1287399463b233fec4a2ab0c19f68d1  crypto/aes/asm/aesni-mb-x86_64.pl
+2fe016e8098d1c959b6199ce98e91dfed9a3a543d6b068daf88d4c4c402701ec  crypto/aes/asm/aesni-sha1-x86_64.pl
+1d3acabadedb88d1327eeb76201ea9b3f4814f44898018ffae6c73e3f400b89b  crypto/aes/asm/aesni-sha256-x86_64.pl
+3f4a0cc23cd55f9f2603abfdc33b08323ad599cbf84e50d7c39db82723b54c4a  crypto/aes/asm/aesni-x86.pl
+c7c6694480bb5319690f94826139a93f5c460ebea6dba101b520a76cb956ec93  crypto/aes/asm/aesni-x86_64.pl
+f3a8f3c960c0f47aaa8fc2633d18b14e7c7feeccc536b0115a08bc58333122b6  crypto/aes/asm/aesp8-ppc.pl
+0b0ff9898edbe069320979eadb0114cb37761416750d983520af7ae47bb0fb48  crypto/aes/asm/aest4-sparcv9.pl
+fbee40f89882019c0f03072f92fccd5cfc79bfebea2ff675909e731d0e71d622  crypto/aes/asm/aesv8-armx.pl
+d643cf9f1c5641c8b72d9d738233e246ada3d7cc663ed0185a963b1f6ca4a2c5  crypto/aes/asm/bsaes-armv7.pl
+88534cd35647eab07838cd005c04c8051236d4afca6df6f2b47e30b2a2e5c5a9  crypto/aes/asm/bsaes-x86_64.pl
+1ff94d6bf6c8ae4809f64657eb89260fe3cb22137f649d3c73f72cb190258196  crypto/aes/asm/vpaes-armv8.pl
+c3541865cd02d81101cdbab4877ed82772e6980d2c677b9008b38fa1b26d36d4  crypto/aes/asm/vpaes-ppc.pl
+3ec24185750a995377516bc2fb2eae8b1c52094c6fff093bff591837fc12d6c3  crypto/aes/asm/vpaes-x86.pl
+060bb6620f50af9afecdf97df051b45b9a50be9daf343dfec1cbb29693ce00a4  crypto/aes/asm/vpaes-x86_64.pl
+fdabbeafcb4b351a13ec92f04a4427ff94e51909d3773e02ff526b4d77ded8dc  crypto/asn1_dsa.c
+819c9fd2b0cae9aab81c3cbd1815c2e22949d75f132f649b5883812d0bbaa39a  crypto/bn/asm/alpha-mont.pl
+0070595128b250b9ebdebe48ce53d2d27ca16ec4f7c6c8bd169ab2e4a913b2d1  crypto/bn/asm/armv4-gf2m.pl
+8c1c53a725b8a4f92b8a353bfeeb393be94198df41c912e3270f9e654417b250  crypto/bn/asm/armv4-mont.pl
+320a3feafffafc05a00a56202958abc258cff596c602604d6c878fa0ca3023d6  crypto/bn/asm/armv8-mont.pl
+cb4ad7b7461fcb8e2a0d52881158d0211b79544842d4eae36fc566869a2d62c8  crypto/bn/asm/bn-586.pl
+636da7e2a66272a81f9c99e90b36c6f132ad6236c739e8b9f2e7315f30b72edd  crypto/bn/asm/c64xplus-gf2m.pl
+c86664fb974362ee52a454c83c2c4b23fd5b7d64b3c9e23ef1e0dfd130a46ee5  crypto/bn/asm/co-586.pl
+199b9b100f194a2a128c14f2a71be5a04d50d069666d90ca5b69baee1318ccb7  crypto/bn/asm/ia64-mont.pl
+a511aafbf76647a0c83705d4491c898a5584d300aa449fa6166c8803372946eb  crypto/bn/asm/ia64.S
+687c5d6606fdfd0e242005972d15db74a9cbac2b8a9a54a56fcb1e99d3880ff3  crypto/bn/asm/mips-mont.pl
+eb240c1f72063048abe026ab7fab340361a329d5cd355276a25950be446cc091  crypto/bn/asm/mips.pl
+b27ec5181e387e812925bb26823b830f49d7a6e4971b6d11ea583f5632a1504b  crypto/bn/asm/parisc-mont.pl
+9973523b361db963eea4938a7a8a3adc692e1a4e1aec4fa1f1e57dc93da37921  crypto/bn/asm/ppc-mont.pl
+59cd27e1e10c4984b7fb684b27f491e7634473b1bcff197a07e0ca653124aa9a  crypto/bn/asm/ppc.pl
+a25be64867ab837d93855af232e2bfa71b85b2c6f00e35e620fdc5618187fb6f  crypto/bn/asm/ppc64-mont.pl
+231579e532443665020d4d522d9f11713d9c5d5c814b95b434b0f65452e16de4  crypto/bn/asm/rsaz-avx2.pl
+c9bd8679a5104affd9f3f0bcda726f823a1a53cac872e4a21a6f2370489dae08  crypto/bn/asm/rsaz-avx512.pl
+31e84dc905b13e38850071528d3abbfcaf8910bbc8b46f38d19c2b386a5f838e  crypto/bn/asm/rsaz-x86_64.pl
+30fedf48dfc5fec1c2044b6c226dd9fc42a92522cc589797a23a79d452bdd2cf  crypto/bn/asm/s390x-gf2m.pl
+590388d69d7ac3a0e9af4014792f4f0fdb9552719e8fb48ebc7e5dfca2a491d4  crypto/bn/asm/s390x-mont.pl
+aa02597f3dc09cfbc190aedb75711859ba0f3efff87067ebfba1ec78ebee40d7  crypto/bn/asm/s390x.S
+458ecb209d5c2daf79b1d3abadc62e34809beed8be87a9c46f358850503045b8  crypto/bn/asm/sparct4-mont.pl
+ca21a9ccbc54e19fb7c2e6cdf286ce7cb08b0fba960c777c6edce5c57ccc2101  crypto/bn/asm/sparcv8.S
+fbc93c8dbbecefe66086f58fe9719ed87b13b2cdc61454a10e841228296fecef  crypto/bn/asm/sparcv8plus.S
+62105f8f1eb54778b52923f6d24f41392d0ede8804d7fb587bda2bc1af302560  crypto/bn/asm/sparcv9-gf2m.pl
+115af57cbd6024fd88b6f56e656bdf44f8243ce4984d3f2ab8ecfad2af327db0  crypto/bn/asm/sparcv9-mont.pl
+96cc20651e5e9dc8d87047a739ad4863a2bf2afee868c3337684bcd2241b7462  crypto/bn/asm/sparcv9a-mont.pl
+d404375a21d33396824a3da212d6646d4f3150dd141ee4b4a250aefae3482efb  crypto/bn/asm/via-mont.pl
+da709b73914f9d43a46c699b8ec68c67c52fe853a76f531bfccb542470d97ae0  crypto/bn/asm/vis3-mont.pl
+89278854f44d95be916516609ce6f79dcd346bab52574b9b6336a9952aa94bee  crypto/bn/asm/x86-gf2m.pl
+90d4ae234c08267adce9ed38d56e0edc223f7480cb9605f5d7399d0b3914c6be  crypto/bn/asm/x86-mont.pl
+66fca12f9829eac00ad86552307f084595835501a11971e68b4e319373afea3b  crypto/bn/asm/x86_64-gcc.c
+709ddee92e9222ee0ed27bfb90db556e85e2d302e4a9131afa25fdc14c4d858f  crypto/bn/asm/x86_64-gf2m.pl
+da7f7780d27eed164797e5334cd45b35d9c113e86afaca051463aef9a8fd787c  crypto/bn/asm/x86_64-mont.pl
+70efd46dc5f95312433dc6709ae33667897e6b132c57d7afff2dfd5adb836e86  crypto/bn/asm/x86_64-mont5.pl
+d95277a3d7635a1f6a2613ba954606ae3c4bb260d11c85612ae83a05a726d03c  crypto/bn/bn_add.c
+6baa367447c968066e25934b0d00d3525b78ba00f733a5597988e810941dff88  crypto/bn/bn_asm.c
+e263280dcd108a479b0ec60069ae7e74893135f6253bac4094279d2cf30557a8  crypto/bn/bn_blind.c
+7b761d541e3b7f6a3f2b14a09b2b3836a079a845cf67a54db4853e3fd38277c6  crypto/bn/bn_const.c
+354b467799488fabfc15597b0b16cfde805826ba1b7ab6ba78ac2d1606337f1a  crypto/bn/bn_conv.c
+ac212b69f4958abaedae9a830fd5084a8e9e166b748b9f3cacfaa2dae77a5570  crypto/bn/bn_ctx.c
+55349393c0a3f73edfe8a8b9953bd13cbda6186dbeb097e71748885947f672ed  crypto/bn/bn_dh.c
+034baac767c911705235da9507e0b9d029ec3746c5469069a110ed899cf7ddff  crypto/bn/bn_div.c
+fb4104aa82438b5dda1592a7d41e8936356734801b26f864c22264615cb4df4d  crypto/bn/bn_exp.c
+4a0295e30ac91bfbfdcd3f2d0cbd5eaf4f5a44b4bba3135b137a692394a2f897  crypto/bn/bn_exp2.c
+ad162484e30b1961f8326ee1cb2c71b77ea55e8383c609d7d3ee210c01a3fbd8  crypto/bn/bn_gcd.c
+36314758440ce2ce20e22ff9b75f4689728c1c99cd51399a441c751502218074  crypto/bn/bn_gf2m.c
+a4087c6c57d38fa7db0c6f4e203a4c21af836cfb6cac10b4841ef3bbd724f67d  crypto/bn/bn_intern.c
+dc213ef490a96c5e199e06058c32ae599825c668fc08d815d6384f57600df21d  crypto/bn/bn_kron.c
+805da9886392dde1419c0a2e2cf202a10c21dcdca2d9b7a38ac3d47036dc0b36  crypto/bn/bn_lib.c
+07247dc2ccc55f3be525baed92fd20031bbaa80fd0bc56155e80ee0da3fc943d  crypto/bn/bn_mod.c
+80fb6afcf66958883d8ea06e63645c2b3eab0b8626a39fd7ea64d1c1768867c8  crypto/bn/bn_mont.c
+2da73a76b746a47d8cf8ec8b3e0708c2a34e810abde4b4f1241a49e7f5bb2b60  crypto/bn/bn_mpi.c
+02bf294bad18d12542fbe60a5ab0eea36dbc914b6d445ad8f4dd03324ee2a33e  crypto/bn/bn_mul.c
+0d4a2c25a3acd4adb45234837d427574bcb1e6800b69f8dfe68478d831491cf1  crypto/bn/bn_nist.c
+b5ef389b9dd161d72d3e1c09ed8994112b6fe186294fd83139ed45729a7f5e64  crypto/bn/bn_prime.c
+27c2196707a7b08cf2f04ee1a79212754196eeae5af2fa5048adac3072616399  crypto/bn/bn_rand.c
+2a47b990bc53fec79013e0b2d1a9ee3512019705d6ec3a2625c43b0fb42d41aa  crypto/bn/bn_recp.c
+4e3d0ebda2d250887634ab491b398a71778431b3db4bc1eb329542f4bd0798cc  crypto/bn/bn_rsa_fips186_4.c
+9bbad44e0007a2a7f6caaa1a9c6a9d4e667afdac898b32598483ae336479cb72  crypto/bn/bn_shift.c
+da5479cd30898cf455f2844478f2bf3993a5bfb612937a437976d7987867ee6f  crypto/bn/bn_sqr.c
+8815f85240c3af08ef421f83569c70ba68cdc7ad2ea5e6ab8079b40cdc2e1357  crypto/bn/bn_sqrt.c
+0618c7368688ca73ffac5baecac36192c428c0fda4d1d473ef65ce64a0ffb75b  crypto/bn/bn_word.c
+ae840ec19a4e86f2b3a65f4d0c878c3885bac6ca6b24ab8c03b73c45c12e4d05  crypto/bn/rsaz_exp.c
+135b85278d00b241eb2fc6714b3418e071618ec9dbbd2a6658a6291d71e7f393  crypto/bn/rsaz_exp_x2.c
+834db8ff36006e5cb53e09ca6c44290124bd23692f4341ea6563b66fcade4cea  crypto/bsearch.c
+c39334b70e1394e43f378ae8d31b6e6dc125e4d9181e6536d38e649c4eaadb75  crypto/buffer/buffer.c
+35e3ad090adedc8e5873e2831bf713e1f52846b4cbdd232e01692ebe35318c3c  crypto/cmac/cmac.c
+7f530e7d0fc7953aa6b70749796d31c1a03aa34e79a7dfd8b625a786e44c6171  crypto/context.c
+0a27ead487bd4775cece449dab53ca5aa9d1997012c85b1dcd2178d3b851dd94  crypto/core_algorithm.c
+2185a7d136ee77725fc1b8a6b401bebceeeddc067eea0482e0ab2916ce550e78  crypto/core_fetch.c
+4ccc57e4bbd46b56c481a3e3c0c105ee27e82a87909637b75e605274e7f3cb44  crypto/core_namemap.c
+469e2f53b5f76cd487a60d3d4c44c8fc3a6c4d08405597ba664661ba485508d3  crypto/cpuid.c
+7c5237bdc26eca21d4ccb25f13569e217103fe21574157b813c2aecd05983472  crypto/cryptlib.c
+53529f4e0575dd83b45a53e852fcec512ada53dd6979268e473885f139b8e0b9  crypto/ctype.c
+8e61d79299003917ac409d129d291f0a63e4ed417811a8b21169b2b918355335  crypto/der_writer.c
+b8272245e1a3bc813aeb48a1155ac37bc979ad4a6ff55baa8c97e62115abb0d1  crypto/des/des_enc.c
+eeef5722ad56bf1af2ff71681bcc8b8525bc7077e973c98cee920ce9bcc66c81  crypto/des/ecb3_enc.c
+cb363ba00f38e84c43af4802d8477a8877db3cea2fdc75299fec16f451ef1c69  crypto/des/fcrypt_b.c
+5771c2e517df1dfa35e0cc06ce1d9808e3a5ab21110020d4bdf77284fedb41e1  crypto/des/set_key.c
+47035cde6151da2aaabd614990d47de63550fed2561900559bd75305dd3856c8  crypto/dh/dh_backend.c
+3f4f990509263483f3c0a57c2d40809eb5680d57197370314f94bc79f0389bed  crypto/dh/dh_check.c
+e6aa1e0379f298dd4250a376f3854db5d919d8b9557f3935b764b4b8ccd24de9  crypto/dh/dh_gen.c
+ffe31cb7c0cd887d051867dfc37cce18a406c78c446f2a186d1f20247a5c914d  crypto/dh/dh_group_params.c
+6cbd1c6126feacd033e31412b3f38b1ef6909d44696864a2a63e86b8154fc1f4  crypto/dh/dh_kdf.c
+2081bc70acd44998e750fa0f128fee7eed7a0e8745b45297e447a2e9dc95382e  crypto/dh/dh_key.c
+ce4d65315a746e1a65d3d151eec1c7fd39a9ddf445f2677a413ca1a7ecee6d7b  crypto/dh/dh_lib.c
+7d13f96896d5ba05342ab6913ceff3c1d0bab84b2e8fef1efa21bb155d5089af  crypto/dsa/dsa_backend.c
+b9c5992089203123c3fae46e39bb4d05e19854087bca7a30ad1f82a3505deec7  crypto/dsa/dsa_check.c
+655b5bbc0bc5994ff5f1a77e86a396c4f7dfc9a46a8d9ac0aa8075ff85342233  crypto/dsa/dsa_gen.c
+baa0b1c0a1f08975b2210926aeec7b98413f1d3467b490a3a0680496bd988cb0  crypto/dsa/dsa_key.c
+5f27ca73fc4c11fb7f88d4874de22e525ce5f5e41bdd10e035453333c5190712  crypto/dsa/dsa_lib.c
+fcbed2c442029ce1cdb2a3ea84aab9c70df7b43a65013edb30f7d3bc060e34c6  crypto/dsa/dsa_ossl.c
+b57b648524bc7dd98f8e2737f4e87b5578c7921df59b1df4a03a34e23e977e8a  crypto/dsa/dsa_sign.c
+53fa10cc87ac63e35df661882852dc46ae68e6fee83b842f1aeefe00b8900ee1  crypto/dsa/dsa_vrf.c
+78ad06b88fcc8689a3a846b82f9ee01546e5734acd1bccf2494e523b71dc74d1  crypto/ec/asm/ecp_nistz256-armv4.pl
+4617351d2de4d0b2abfd358c58050cee00702d0b4c1acca09312ec870e351c7d  crypto/ec/asm/ecp_nistz256-armv8.pl
+3715ddd921425f3018741037f01455ed26a840ace08691a800708170a66cf4d2  crypto/ec/asm/ecp_nistz256-ppc64.pl
+7aeade641bf28d9cfdc43dc20da0378df5225377dcf52835c7e76aab64d3af77  crypto/ec/asm/ecp_nistz256-sparcv9.pl
+922725c4761cfa567af6ed9ecab04f2c7729ae2595f2fc0fa46dc67879dc87b0  crypto/ec/asm/ecp_nistz256-x86.pl
+ac327475c7ec828d11aa05628b4e3b81ec3b1400f30fe7bec01daf3cf71f2dc9  crypto/ec/asm/ecp_nistz256-x86_64.pl
+cc727533130f5f1a29229929b3d4e8454585d647be25d6344f3c6a0240998368  crypto/ec/asm/x25519-ppc64.pl
+ee897e230964511baa0d1bf95fb938312407a40a88ebe01476879c2763e5f732  crypto/ec/asm/x25519-x86_64.pl
+a33b6a29af8d9fcde009c17d0c2172a1212b111d7ad57def9ef23ab9c462072d  crypto/ec/curve25519.c
+2ab01341b36aecfd639d78609069229e51d3ebb1c678e8e9871b351d494bab8c  crypto/ec/curve448/arch_32/f_impl32.c
+f9ff1d9c68fee883fbb42978302d51404c2b5874cf3ba06b3e95cadd4b3e6bf5  crypto/ec/curve448/arch_64/f_impl64.c
+eaa940893610f5ec1cc04f5b1842bfa0ba65bf048039e6cc2d2b83bbb575bb51  crypto/ec/curve448/curve448.c
+178fb9863c33174b633c2e7607160b1bedb506d66cc06d53382d87431441f306  crypto/ec/curve448/curve448_tables.c
+a1211ed3991af967c728b9f6d0774b9ea098d43cef0631ff88984a2580d2ac4f  crypto/ec/curve448/eddsa.c
+d4969259e4fa5b71d8abbf5e736e658bd1daad6e46d272a9b88e190e2de96b61  crypto/ec/curve448/f_generic.c
+7aeddfe47959556f50856cb387d74b51d222c65f891acb83742313ddc49c0e93  crypto/ec/curve448/scalar.c
+183589a8b496a07262821ce0bc49ffb35d0c4a6079d6845a9ce9cc360fda1d3d  crypto/ec/ec2_oct.c
+2488744af4b5ea50bcd1fb4419f2baf780b23b2077f11ebd16ff5cfeb3cb6820  crypto/ec/ec2_smpl.c
+fb58b7de435bd680a5d8c8ccee332e2bc6732fad714bb3ff672985b9c28bb6c7  crypto/ec/ec_asn1.c
+35a99d84388d7140084e565cbc0a7f57f1636d26e31fab342613d2c658b7cc7d  crypto/ec/ec_backend.c
+b54f29cafcc823b7ae1e3b7b52c4499c0d128a3c125bde5bcb245f6d441dcbee  crypto/ec/ec_check.c
+40d58e55ad3a54716b4c4d4c1c3730b07c07918f0ff3c5be965b4c5f47190b4b  crypto/ec/ec_curve.c
+8cfd0dcfb5acbf6105691a2d5e2826dba1ff3906707bc9dd6ff9bffcc306468f  crypto/ec/ec_cvt.c
+06fa7c8f23374ab9c1006d6fd65ee95dac3a3fae036ea6f14399c1a5cc0c7d00  crypto/ec/ec_deprecated.c
+4802e8ff248ed63721e662ac03dd691824f1ef169af8d64001a57e99edec2133  crypto/ec/ec_key.c
+25ec40a6ac424eef88bceb5375b91a289b1b0f68c00513d7e1f3b656825e4560  crypto/ec/ec_kmeth.c
+6e88bdfe4e20583caf1c5748bccfec75815d7fc96c8c506410a8279e344be1a0  crypto/ec/ec_lib.c
+a2aeb54b55b5ccc52e2a9b6410df395a6f41e1cb277253a38e86252479e62ed6  crypto/ec/ec_mult.c
+129c6b42417bfcf582f4a959cfd65433e6f85b158274f4fa38f9c62615ac9166  crypto/ec/ec_oct.c
+ccbf1f7dcba81cb40c07619120e9c330e06e1e7c788ca8912f0f4b1d25bd3f7c  crypto/ec/ec_print.c
+4341615ac00e3e42c41acd3b36af10250995fb919febc5289122b785c5eccf73  crypto/ec/ecdh_kdf.c
+b2cf8f052a5716137da7b0e857ed7a5df5fb513b6d14534199a05e32f2b5a866  crypto/ec/ecdh_ossl.c
+49bf1a4dd3d53a5c0e4e05d71be0f6fcbeb5d013c70084ad8111e2d46b7e0f58  crypto/ec/ecdsa_ossl.c
+b6baa42b16e8df69a12e0ab101033100cddc808ec2682ba1574373e6ec86ae93  crypto/ec/ecdsa_sign.c
+f686cea8c8a3259d95c1e6142813d9da47b6d624c62f26c7e4a16d5607cddb35  crypto/ec/ecdsa_vrf.c
+c07f9f7cfb27ce2735cad06f16d3e5f270b79ac31a0f9b6e44945f2c040f6258  crypto/ec/ecp_mont.c
+f679269eec6f67ab7f859eca39cad7cc5ff2ba70e2f884eed9eadc9057c01272  crypto/ec/ecp_nist.c
+03f7a0e38ce53a90b388b5c3e6d33629ed650b9ad6f5f722e8993e045ef31e27  crypto/ec/ecp_nistz256.c
+3f1b74a2e0dc8ff1665cf780e0d7ff40ed7f4315fa94dcbbd0b9fc58d4fadac0  crypto/ec/ecp_oct.c
+fa39906519062932adafb63cbf05b5dfa7563673576d421c80ec6b889d024e84  crypto/ec/ecp_smpl.c
+a43d63e981bdd6c470832bd2eb83164ed1f668d95bc47fc8710f7ee18f43b860  crypto/ec/ecx_backend.c
+22c44f561ab42d1bd7fd3a3c538ebaba375a704f98056b035e7949d73963c580  crypto/ec/ecx_key.c
+7c7f3e2a19a95d62942790e525f00cccc87e46da099a0c96d101787d68c75128  crypto/evp/asymcipher.c
+2aacf20d2b9ff0d11b0b4869c530685558ad8898da11391978322b606a0133ba  crypto/evp/cmeth_lib.c
+0e75a058dcbbb62cfe39fec6c4a85385dc1a8fce794e4278ce6cebb29763b82b  crypto/evp/dh_support.c
+4b2cc019a6a924d277ebce6565b5110d32a12199f471ccfae6fbbd1bbdbe53cd  crypto/evp/digest.c
+87599335b61f97362799170d7b19cbbf775bfecc0fab570b267c7622241cfad8  crypto/evp/ec_support.c
+7c00d1b38b18d0bd92be2b0577e44e9d4ebc6603689f77da7e7702a042b0a8e5  crypto/evp/evp_enc.c
+9b4956b5c28db987001b33421aacf3b9f352181f874c768ad1b034e083483561  crypto/evp/evp_fetch.c
+22a08831e55565d9d52be80a6622b4d471340cf135b7247db77492e4fc3bd2b5  crypto/evp/evp_lib.c
+b628bc6fb92bb6fb27a05c368a03b933e7004cae17371cd996f4eacaf2144809  crypto/evp/evp_rand.c
+c0f87865be8dab6ea909fd976e5a46e4e8343b18403090c4a59b2af90f9a1329  crypto/evp/evp_utils.c
+abd4c5f0521f2a422c5e7bb68023e5a6fb46958ceeb5f407d964ac7163043261  crypto/evp/exchange.c
+58d0d29f105ef3cd38b790644b608f58e08289c4c52597769144be96c3e9cd26  crypto/evp/kdf_lib.c
+3fdce072607e5060d91fd1ba3d70ae75a13590051072b6010be0ab62b00ddd6f  crypto/evp/kdf_meth.c
+9627b89aa6a27fa96116964cbbe377ae283c46445887e4e8c2a5183aeb102789  crypto/evp/kem.c
+2d657d8de8c2441693d54ef3730d83ca4b5d76c3b3405ece89bff9e46149d670  crypto/evp/keymgmt_lib.c
+56d3ed4313cb811a3c2d062ff8b2a0fd67c4b0d28fe0562a57555b3a95907535  crypto/evp/keymgmt_meth.c
+39ae1143109929faf7c85e9fe6e01fac2d6a16a76a9ff597e03f83b5eea30b89  crypto/evp/m_sigver.c
+a661a25d70af7eb79d1dd76ea1595c370c266307e20ee2e60074216672286a71  crypto/evp/mac_lib.c
+5f4b933a479d7cd589c47388aebfd8d6ffa3943ec2883049fc929e6ca37e26b5  crypto/evp/mac_meth.c
+bec9337e5c1ff13890285285570ee56f661bacac6ca49c6dec95dc55d713b435  crypto/evp/p_lib.c
+cdce204a7d27adfb1695a88907046c98df91daf2a8820efbdedc01a646e9f10d  crypto/evp/pmeth_check.c
+c2202e859552cf3bcdead90215c69ca339133b60d4878b7e5a601d4596d9eab6  crypto/evp/pmeth_gn.c
+8f572b1a89729282c835072fc578549ca648d64d7a1590b016f7e23139f861ec  crypto/evp/pmeth_lib.c
+9b1c860edb2e589fb9e90fd2c9c1f80d98258c97aacc8f298f760e1222f8eb9b  crypto/evp/signature.c
+e0a58ecf268c6bec531898d8fe6b148601b0bed8324fa8d5668de643c027606b  crypto/ex_data.c
+ae496cbb92b8664bb729997a241d12cc515a3944d66fe87b0c6e24f1011e061f  crypto/ffc/ffc_backend.c
+bb6d97150e6b03e684b044e396b60826b6ca47554e2c477e2c26479dcbaefd03  crypto/ffc/ffc_dh.c
+8390c3015b5bb7f65a5cde533390788e7e61e381823c58c2e7caf8e50ca63a3b  crypto/ffc/ffc_key_generate.c
+084ae8e68a9df5785376bb961a998036336ed13092ffd1c4258b56e6a7e0478b  crypto/ffc/ffc_key_validate.c
+9c55a46ef9c08b8fa1b03b98f5424f44e411963578ae97488270dde393ea894f  crypto/ffc/ffc_params.c
+643b2798486dfdd70472590541407fa22714b73022f2666a297c09c94656b501  crypto/ffc/ffc_params_generate.c
+aff884b4b7e48bacce4312fa2a7f9f07e2c6a8d9698ebbdab91af0f0fb1384dd  crypto/ffc/ffc_params_validate.c
+84d8ae0141a79548ad65b31fe4673e8603930f942f21f3a7623e23f539799764  crypto/hmac/hmac.c
+1bede3da0f157d766132693f679cef49b02af2601406b04eecfab1fbd8d469bf  crypto/initthread.c
+c6c83f826eb6465f2a1b186ea692ff6fe32dbfb821d18d254625b69083d68fb0  crypto/lhash/lhash.c
+b0662fd0dddbac0379be51cee8ccb0384d819f52780a5c7b0b3fcdde145fa7bf  crypto/md5/asm/md5-586.pl
+2a31a7f88d948192d6b7c10822c72cf40f215f32909014a2babc3955dafa1593  crypto/md5/asm/md5-sparcv9.pl
+33a402414b3f08e2325bbcb07edff42c553a4400da4ec89d583b29360a3483ed  crypto/md5/asm/md5-x86_64.pl
+6926a95504413b5b29b2fa89a6c8cec5406ae7044cefe28c577279c8bb56291b  crypto/md5/md5_dgst.c
+5d07872812807c385daea71df1d4569dcba03fabce646878f9f338947528fe1f  crypto/md5/md5_one.c
+8641fbe434f769a9d70981963870ceb4dcc3aadbe4f4fa2e7a8bf70e1c47fba0  crypto/md5/md5_sha1.c
+f866aafae928db1b439ac950dc90744a2397dfe222672fe68b3798396190c8b0  crypto/mem_clr.c
+183bdca6f855182d7d2c78a5c961b34283f85ea69ac828b700605ee82546397d  crypto/modes/asm/aes-gcm-armv8_64.pl
+1d686af304f94743038f916125effcb51790c025f3165d8d37b526bbeee781f0  crypto/modes/asm/aesni-gcm-x86_64.pl
+c2e874a8deb418b5d8c935b2e256370566a5150e040c9fa008cdb5b463c26904  crypto/modes/asm/ghash-alpha.pl
+6bc7d63569c73d7020ede481f2de05221ac92403c7cc11e7263ada7644f6aa9b  crypto/modes/asm/ghash-armv4.pl
+097975df63370de7ebea012d17de14fc1f361fb83acf03b432a99ae7d5bceb24  crypto/modes/asm/ghash-c64xplus.pl
+fdde3bc48b37790c6e0006014da71e7a831bbb4fdbfcda2d01dbe0ceb0ba88fa  crypto/modes/asm/ghash-ia64.pl
+e472d73d06933667a51a0af973479993eed333c71b43af03095450acb36dbeb4  crypto/modes/asm/ghash-parisc.pl
+6fb4332ac88113a20915ad4de1931ef88b0114b5379b16e1d967820e1229fbb0  crypto/modes/asm/ghash-s390x.pl
+fcab204033126699be826a850d098c6d84f44b377de66f15d303ebd31ee77397  crypto/modes/asm/ghash-sparcv9.pl
+26f55a57e77f774d17dfba93d757f78edfa3a03f68a71ffa37ccf3bfc468b1e2  crypto/modes/asm/ghash-x86.pl
+72744131007d2389c09665a59a862f5f6bb61b64bd3456e9b400985cb56586b8  crypto/modes/asm/ghash-x86_64.pl
+a4e9f2e496bd9362b17a1b5989aa4682647cefcff6117f0607122a9e11a9dfd9  crypto/modes/asm/ghashp8-ppc.pl
+0029b5beb1d4cd4c5ad47164c23f3e7c9d1eaff66ef54af025ee26795b11a1c7  crypto/modes/asm/ghashv8-armx.pl
+42f1e3c05b6407e127ec03c4855b53cc2a1964eeeeebb86c000e2ac6effa4d61  crypto/modes/cbc128.c
+ca33ab64e99814049ae47ccfe530c33db3d19d081eb4812354518366af923396  crypto/modes/ccm128.c
+a20ed2feea4ecfbb2d3dba9618ed39b2da296e521e49fd3cfb17b74be51bf916  crypto/modes/cfb128.c
+819a468b2caec10c0c82bcf25377c4ff45742e8c4f0328350a26af9b146eb8ac  crypto/modes/ctr128.c
+05ffb22b983de282dd924357a77f4e7156ada1936fbb77bc40694ca66317721c  crypto/modes/gcm128.c
+171218d5159e898c8f20e58e55d2c02bb04a9a9148d399c2670cf4181ed83c15  crypto/modes/ofb128.c
+d4c25a330c8865672cda59fcc3d537222439daeb2298515bdae71bb44cf8fb61  crypto/modes/wrap128.c
+608a04f387be2a509b4d4ad414b7015ab833e56b85020e692e193160f36883a2  crypto/modes/xts128.c
+ca8f63ee71797f51c2bf5629190897306b3308882feb3d64c982239f18e8b738  crypto/o_str.c
+5e3b9e03839582d4cf1e3f7f6fc661f2531bf99b189bdcf4654c56fee1d7ecf9  crypto/packet.c
+e30c9e30e4356621236136caf001ee60d51aac492a5bf0fb7f1022b973aec425  crypto/param_build.c
+c2fe815fb3fd5efe9a6544cae55f9469063a0f6fb728361737b927f6182ae0bb  crypto/param_build_set.c
+2be41081c49661d54fb294f8adcb3174403ff0fca599304dd604811642f66828  crypto/params.c
+1164175c2259bc104ec315d39a4f80fa67604f40e55036044d18ccf94da71a76  crypto/params_dup.c
+d0f6af3e89a693f0327e1bf073666cbec6786220ef3b3688ef0be9539d5ab6bf  crypto/params_from_text.c
+0dd202ec1def47c12852a8ae4bfaadb74f7fe968d68def631fe3ac671aac943f  crypto/passphrase.c
+098d0722daac442b8b6a6fc0aa6c4a4c49f9329426c3e2db9ebf71fe32376e4c  crypto/property/defn_cache.c
+f0fe76d4f70ecdba0206ec68ef57758f4482575ccdd7d9d3354681f37f795d4a  crypto/property/property.c
+51bc907d992893f03f35774178d2c8dc98cf3cf9503ff839ee1561640e6b274a  crypto/property/property_parse.c
+4941717698573a86d589fbec5002471cb4011e9a1840111a3ddccecc861a3af5  crypto/property/property_string.c
+4bcf05e8736b64c9c4b4862513e48d788f8278681b6c9fef978788c3064a3f3d  crypto/provider_core.c
+dde1c2cd0cb5f4b9a76dc86d217926ceb3a92ba419a0c5cd1c215c9db445dd4e  crypto/provider_predefined.c
+707149c9fde50e1857bafbd0ca289062fd7d74db26f00399ba2243c56c89ef23  crypto/rand/rand_lib.c
+048affe680e74a225faa152ea703a9168de6d6074887ff5978c1878efaac3041  crypto/rand/rand_meth.c
+13604b9c58fff70249eca4399da00a61141ea38ac30feeff7ecbd84b65ee43e9  crypto/rsa/rsa_backend.c
+89085cbed306409d519ab9fba596dcbb5bcad02837855e35a64577acf33df79d  crypto/rsa/rsa_chk.c
+e32cfa04221a2a3ea33f7bcb93ee51b84cbeba97e94c1fbf6e420b24f97fc9ce  crypto/rsa/rsa_crpt.c
+fbeb40c9fa91fc05e667b7f00a21e1d8ee6b0dae55771485d9f813230a2b5a32  crypto/rsa/rsa_gen.c
+3d9f454620d0a5cccad93ef25e8c55151db3a44af2960a880f3e5622c9cea2b3  crypto/rsa/rsa_lib.c
+5a3052ced3dabebc6b9d53cf22aeaf13bd52e9fdb69d84c4f0ea79c1f5b3f8d7  crypto/rsa/rsa_mp_names.c
+5c60f6e05db82e13178d805deb1947b8eee4a905e6e77523d3b288da70a46bb5  crypto/rsa/rsa_none.c
+bd98b457bf8926e8277065faa12e240c93ad0589daf243e441b7301e8d455f6b  crypto/rsa/rsa_oaep.c
+cfa0e6689e68ff21cf261af48560b0a50e12c1960514d562c95f8fd5aa49a9d7  crypto/rsa/rsa_ossl.c
+c0f3c29c9ca213a04f3538514c85dd4186e07bb8dbefb3e16751218b97496ddb  crypto/rsa/rsa_pk1.c
+0c2e3fea08af73404d348293aa62652bc93feade424f3516e06e86ba64518236  crypto/rsa/rsa_pss.c
+bf6d300b7e7e9e512a47c5bd1f8713806ae3033a140d83dfae4a16ad58d11170  crypto/rsa/rsa_schemes.c
+abfbd8a1bc7b5b7c20eda1cb0fddeca6e3f14201a5188778a36e456097eaf45b  crypto/rsa/rsa_sign.c
+47752d347d794fb0bdb659068c3f39094c5dee76081b92a553d4e6a69ededdea  crypto/rsa/rsa_sp800_56b_check.c
+14585ae4ac2902beea057bfc91111f5c523b28a5a53b558689697e666602f9f3  crypto/rsa/rsa_sp800_56b_gen.c
+1c1c2aeeb18bf1d69e8f134315b7e50d8f43d30eb1aa5bf42983eec9136a2fdc  crypto/rsa/rsa_x931.c
+4e9483f8cd8d78a7098ff014bb7fd3093f2032db88bf6dac753c7502dd70aeac  crypto/self_test_core.c
+05c533fde7fdba0c76103e97d881b7224c8427451b453e2f6413552996063e31  crypto/sha/asm/keccak1600-armv4.pl
+ca3b2b654f9a8c4bc2fa2538c1f19d17acd4a6b9e0df6a4b81df04efa697e67e  crypto/sha/asm/keccak1600-armv8.pl
+ef575a7fb4956cc3be4ef10a6aeaa10702eadfc92c86167880690320ce942b26  crypto/sha/asm/keccak1600-avx2.pl
+f1dcf75789dfb0c5d7cd35988cb8046f60097bbaf1fbdab32a9269fa5492214c  crypto/sha/asm/keccak1600-avx512.pl
+63e547b100562d1142512d5b54e16efc276ecb6c743c27873dbcdd7cb917c828  crypto/sha/asm/keccak1600-avx512vl.pl
+33bdcc6f7668460c3bdf779633e43bfad62b937042a73acb007b462fc5b0a034  crypto/sha/asm/keccak1600-c64x.pl
+09fc831dd39bd90a701e9b16d9e9987cc215252a22e1e0355f5da6c495fca35a  crypto/sha/asm/keccak1600-mmx.pl
+ce4a58129e5ee3ac4c9dfec5ecc010440570ebf7bf869e3e9977f2121a64b27a  crypto/sha/asm/keccak1600-ppc64.pl
+a859fc8cb073b2d0012a93f3155a75fb6eb677441462b0de4f8cf8df1445e970  crypto/sha/asm/keccak1600-s390x.pl
+618dcd4891b4064d3b8aa6dcd74bea7ef55f4962a64957b05a05448f6e3e0f17  crypto/sha/asm/keccak1600-x86_64.pl
+831b8b02ab25d78ba6300ce960d96c13439bfba5844e13061e19c4e25cbacc3d  crypto/sha/asm/keccak1600p8-ppc.pl
+75d832db9bf0e98e7a5c522169060a6dd276c5118cfb297fc3f1111f55cd4007  crypto/sha/asm/sha1-586.pl
+c96e87d4f5311cd73bbdf499acc03418588be12426d878e157dd67e0099e0219  crypto/sha/asm/sha1-alpha.pl
+4ba6d1c7f12fe76bf39babea966f0a4b7f8769e0c0510cbfc2c46a65dd62d45c  crypto/sha/asm/sha1-armv4-large.pl
+efc69cb0d867b7fac6b3fa8985c343d1f984d552bc8e75bbbbace0adf9ee5f15  crypto/sha/asm/sha1-armv8.pl
+11d332b4e058e9fa418d6633316d2e9f9bf520a08b2d933e877bdf38b2edefcf  crypto/sha/asm/sha1-c64xplus.pl
+32ff0e701a7b8f25bcfe8477b20795de54f536527bd87d3ce694fd9aaae356d4  crypto/sha/asm/sha1-ia64.pl
+471c27efca685b2a82ad7fefe329ca54172df9f49b9785da6d706b913b75e693  crypto/sha/asm/sha1-mb-x86_64.pl
+0f5c63cf09e950d1b488935ab3b5562e3e9d5cd1a563fb88a41e3dae90a35e6d  crypto/sha/asm/sha1-mips.pl
+b5ffd7b6dbb04c05de7efa2945adb67ea845e7e61a3bf163a532f7b6acdf4267  crypto/sha/asm/sha1-parisc.pl
+482cd23ca6ec38d6f62b90c68f9f20643579c50f2c0fbb0dab1c10a0e35efe77  crypto/sha/asm/sha1-ppc.pl
+28cf69efd53d7a5a8c32e0f8db32c193f41b91faf44f5f59944334bc3f5aa337  crypto/sha/asm/sha1-s390x.pl
+2613188936687dfc93e3a6588c279d7113bb10d307fc690aec909c5a2b65bf18  crypto/sha/asm/sha1-sparcv9.pl
+24554e68b0e7b7db7b635ff149549015f623ca0bcd9ae90439586a2076f6ae80  crypto/sha/asm/sha1-sparcv9a.pl
+74d197cdd72400cabbff7e173f72c8976723081508b095dc995e8cd1abf3daa6  crypto/sha/asm/sha1-thumb.pl
+a59a86293e28f5600609dc8af2b39c5285580ae8636520990b000eeeb67bb889  crypto/sha/asm/sha1-x86_64.pl
+c099059ef107f548ea2c2bab64a4eb8c277070ce6d74c4d32bb9808dc19c5fa3  crypto/sha/asm/sha256-586.pl
+b9cee5c5a283f61f601d2dba68a7a76e7aba10bfafffc1a5c4987f9c0aa6f87d  crypto/sha/asm/sha256-armv4.pl
+93ddc97651ee3e779144a3c6b3e46a1bc4aa81e75cd7b9df068a2aef8743d25f  crypto/sha/asm/sha256-c64xplus.pl
+8be5c5d69733ecb16774aa8410b4bcb3623a9f060d2be103d8aa67bf6e4c5843  crypto/sha/asm/sha256-mb-x86_64.pl
+dd82e1311703abb019975fc7b61fb87d67e1ed916dddd065aced051e851114b9  crypto/sha/asm/sha512-586.pl
+8d84164f3cfd53290c0c14bb5655510b7a9238857866328c0604d64b4e76fe21  crypto/sha/asm/sha512-armv4.pl
+dadacb6d66b160913bffb4e1a6c3e5f7be6509b26e2c099701d8d3fdb92c1be0  crypto/sha/asm/sha512-armv8.pl
+6f548a088feae3b6faa179653ba449df9d3f5cda1e0561e5b5f120b32274d1eb  crypto/sha/asm/sha512-c64xplus.pl
+f999dbef1f95004b7dd926208dd942dc4106750de7a7ccfb70c6487e9916feac  crypto/sha/asm/sha512-ia64.pl
+fb06844e7c3b014a58dccc8ec6020c71843cfdc5be08288bc7d204f0a840c474  crypto/sha/asm/sha512-mips.pl
+11548f06d213947104a80898e000218ec0d6ff3f6913f6582de498476482ce9f  crypto/sha/asm/sha512-parisc.pl
+7c0c490ce6bb11a228853aecad5e164ce84e5bdabb8a6658ae7184782076c7d3  crypto/sha/asm/sha512-ppc.pl
+38e0455fd6a2b93a7a5385379ca92bc6526585ca1eb4af365fac4c78f7285c72  crypto/sha/asm/sha512-s390x.pl
+94fc64338a8b1642782f68c9e3f45813617daa42a7dcc9917fe4053b2d0a5c5c  crypto/sha/asm/sha512-sparcv9.pl
+f64d16c1e5c3fa4a7969de494a8372127502171a517c14be7a1e3a43a7308699  crypto/sha/asm/sha512-x86_64.pl
+8725cabb8d695c576619f19283b034074a3fa0f1c0be952a9dbe9793be15b907  crypto/sha/asm/sha512p8-ppc.pl
+4d13c5020a92190d43721018c50776fd4df858fe92f3cce1d465ed98dfb142d1  crypto/sha/keccak1600.c
+306cacd3f86e5cacaca74c58ef862516515e5c0cafaff48636d537fd84f1c2fb  crypto/sha/sha1dgst.c
+b40bd40b91a2ecdba63777758f84c5405a92e673636dba2cb83512c34aae3882  crypto/sha/sha256.c
+01aff75580e47ee880f411a319ed5d86198df464e3b8056b8734698e3c8d4d07  crypto/sha/sha3.c
+7598a626c55fb6505cc234cb438c78846756cde95c4400ca07bf9460b9bec834  crypto/sha/sha512.c
+86913a593b55c759a3824eeede398f966278d79c148bef41986c5ac4e48f0bd7  crypto/sparse_array.c
+32b48ac523d69b65d46b5588cd75697c473eec0b97bdefc820f436f25403a1df  crypto/stack/stack.c
+7b4efa594d8d1f3ecbf4605cf54f72fb296a3b1d951bdc69e415aaa08f34e5c8  crypto/threads_lib.c
+a41ae93a755e2ec89b3cb5b4932e2b508fdda92ace2e025a2650a6da0e9e972c  crypto/threads_none.c
+9ad1649f07fbe4475a91472d056ab5e355973a1d92998220a0d4489e3d857463  crypto/threads_pthread.c
+60bdd9213c67c4d9a287cb57517eca63913c134ef57fcb102b641eb56ddce19a  crypto/threads_win.c
+fd6c27cf7c6b5449b17f2b725f4203c4c10207f1973db09fd41571efe5de08fd  crypto/x86_64cpuid.pl
+df47f11a262e8c68abd885f291083f1ae4e7de965c654704b8589543d71c34d2  providers/common/bio_prov.c
+c972a49b5b9100fb220c8693c2b83c6f20fcd9ca7c69dc5a7db15936999f19b0  providers/common/capabilities.c
+27ff361a5fbfc97cd41690ab26639708961d0507b60912f55f5919649842c6ae  providers/common/der/der_dsa_key.c
+2529d253b3e45c33249461fdedb2c32b3c16a7a305fe4920f2a79e7b3f16ed3f  providers/common/der/der_dsa_sig.c
+b8f2f94daeaf20c636c90e386284c246cfded0c8275411fa02fe68b534520b95  providers/common/der/der_ec_key.c
+9104cd39dddd6e1a6e8f267656482131f4d0765e96fdced1f7344817a1c8ed7e  providers/common/der/der_ec_sig.c
+f3b089fd3dcccc8e3ebfbbdbf87c47d58330f82bd0e2a1223da74977930cccf1  providers/common/der/der_ecx_key.c
+3ba47f32b30f5540a34b3a8df7a4fd966aab9abcbb2b643af75a83a9ccda1df0  providers/common/der/der_rsa_key.c
+a7becfc857365e64336a98bdb3565697caa4f6cc6692b298f56b530f5e2e0d81  providers/common/der/der_rsa_sig.c
+9c9572d26ec41df0418547352dbdef353ecf9a2a633889dc494084ee9fe6b1d3  providers/common/der/der_sm2_key.c
+390b2b6ba321bddc416688d4a51d9e04db7d84d4f398947d496d043e8fb22a01  providers/common/der/der_sm2_sig.c
+d447cd774869da68a2cc0bbb19c547ee6ed4858c7aee1f3d5bba7796f97823a9  providers/common/digest_to_nid.c
+737cc1228106e555e9bab24e3c2438982e04e05b0d5b9ee6995d71df16c49143  providers/common/provider_ctx.c
+fcbb0f2859f28ea1eb3922447bb96588d2097695f9ce23c3c64025bfbe9d2bad  providers/common/provider_err.c
+9eae3e2cac89c7b63d091fdca1b6d80c5c5d52aa79c8ba4ce0158c5437ad62f3  providers/common/provider_seeding.c
+fee6720c5f6afe041103dfdbc9e4fef346c32afc0a1d34beb7a1d67d22f9e1e3  providers/common/provider_util.c
+494723d55bc6ecdb70f59499a2c42260cabc5fa30681ac3b48267dfa242158b3  providers/common/securitycheck.c
+eaa448a029b592c0bb947ba98b8888b059c487078be10b28d3c7cbe73cf5a8c7  providers/common/securitycheck_default.c
+50a0e01e877ae818cf874f4515a130db0e869d4e9e8ce882bff1255695aba789  providers/common/securitycheck_fips.c
+fd92f958755683dda449a45f82ecdff342574a9536f6e8727decf5be9a5b747a  providers/fips/fipsprov.c
+c69e60c29711d55cd5672dab9ff051f3c093d54e63a0ec575baa899e6bbf9c2b  providers/fips/self_test.c
+fb56f801613642f6b497803890b528a643024e3cdb5bd5dd619a2981afb2f3b0  providers/fips/self_test_kats.c
+08b287621158afb67e61e52fc34efbb9f9fe22ee6709c7ed6c937d5feb2b7fd8  providers/implementations/asymciphers/rsa_enc.c
+60f1d5a19025784698cd67ac54fd9625f4be2149e85cb31d58aea516df22ee12  providers/implementations/asymciphers/sm2_enc.c
+4db1826ecce8b60cb641bcd7a61430ec8cef73d2fe3cbc06aa33526afe1c954a  providers/implementations/ciphers/cipher_aes.c
+5b7d6a1d0df42c082c3731a3d2a0fe2d0034874e0fbb2f4916efb72da4fe6b66  providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c
+10f5bee481daad40609b04743de5ea364f4a2d25bba6d901213294dd966ae786  providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c
+b9026b88005f2719f1836877b2baddadec97cb1d8e20eeaf012abffb6dfc004e  providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c
+6d6bf36329af3b77f457898294be05fea3940a61cdaf0ed60cfb8d091a94186e  providers/implementations/ciphers/cipher_aes_ccm.c
+6337b570e0dc4e98af07aa9704254d3ab958cf605584e250fbd76cd1d2a25ac7  providers/implementations/ciphers/cipher_aes_ccm_hw.c
+e63b682f97b424167e4feb28e0103ad3c2859c57056284de2999236d07663eed  providers/implementations/ciphers/cipher_aes_cts.c
+e540092e34896a0f75622365a8d97473dfc7c3036ef6ef6f8ce343922ac03f56  providers/implementations/ciphers/cipher_aes_gcm.c
+9f2303e103b4eb8244bdf97a2bb71d8a76c9e9adf09195acc2e42af72fab3250  providers/implementations/ciphers/cipher_aes_gcm_hw.c
+33144c78ad050b2f9976946c67cbc593442d9a215c5f3d678ac56b504169fe18  providers/implementations/ciphers/cipher_aes_hw.c
+0264d1ea3ece6f730b342586fb1fe00e3f0ff01e47d53f552864df986bf35573  providers/implementations/ciphers/cipher_aes_ocb.c
+855869ab5a8d7a61a11674cfe5d503dfa67f59e7e393730835d1d8cf0ab85c70  providers/implementations/ciphers/cipher_aes_ocb_hw.c
+d088dd386950df04b5ad5a68d529fa36b2fa6b808d7cc7da6de96cdd91ecb92f  providers/implementations/ciphers/cipher_aes_siv.c
+47edbfb9bca49df0d1e36b1bf06367ff31762545e7087bea159ad60e0f684a48  providers/implementations/ciphers/cipher_aes_siv_hw.c
+d07e18786256f3a069fe83e6fdc79e53fdc1f99b3e6bbe5d2f3fc559bc737eb2  providers/implementations/ciphers/cipher_aes_wrp.c
+527ff9277b92606517ee7af13225a9d5fcffbbc36eb18bce39f59d594cbe4931  providers/implementations/ciphers/cipher_aes_xts.c
+83ffb01000f3620ab3251b42b2af98a80612b182968d2742a5d8480efcc22d43  providers/implementations/ciphers/cipher_aes_xts_fips.c
+f12bf83d8fffa833fed6d82d74709c7a0563ea0fe291988149d7c85bda8366e7  providers/implementations/ciphers/cipher_aes_xts_hw.c
+e292ec9b6e760b6bec12753a65f9a19bcc05afb6e56399c3561e63281bda4191  providers/implementations/ciphers/cipher_aria.c
+73a9c37bf73b32c98085deaec8a197cab8a6fcdc602593dbbb6b585dd2391bc3  providers/implementations/ciphers/cipher_aria_ccm.c
+1b9832f78203f3badf98f574cfee56c7b782709d68265237fe4c9479e6063172  providers/implementations/ciphers/cipher_aria_ccm_hw.c
+976c1ca4767e4442bb22ce055d756336e0693866e406ae62dd0dc1929ac43c14  providers/implementations/ciphers/cipher_aria_gcm.c
+d4ec3b09d49b7b5ac2941230a2c49b4ede55deeb284366ac26642a3ecbe64e5e  providers/implementations/ciphers/cipher_aria_gcm_hw.c
+cb6985bbec1a885e5fc51dd4df27bb2ef5c201abc88609fe26899fd5ed14e1fd  providers/implementations/ciphers/cipher_aria_hw.c
+8b4ddee713455a1cc8417d2dbe6c28f5a2c9c4d5497af44bc562814eb7fe7911  providers/implementations/ciphers/cipher_camellia.c
+755b686613b311e7d40403926284e0c91704f99b9fea91f5bae6c4c03fc20389  providers/implementations/ciphers/cipher_camellia_hw.c
+090f4035e6fa6566a3cd39301789d2cffa3853b1408326a7dd12f33c3fa12603  providers/implementations/ciphers/cipher_chacha20.c
+cb7839e081f1d86664f152f982062e81a0c365382a123edb08fb7b443398dfe6  providers/implementations/ciphers/cipher_chacha20_hw.c
+fd879ed73c85cb7900a6732eb06ee080c6a0d956cc514b2413dfcb850d831855  providers/implementations/ciphers/cipher_chacha20_poly1305.c
+23bd426356db5afa4df530ed1992777f1d8213c6740b0bdc39590dcd5c4de376  providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c
+d3098f6ded4c6b6f6d4e1bf9f641c2bb6499bb76b386a3658527a35b484ce381  providers/implementations/ciphers/cipher_null.c
+4ae134ee0c4113670a7d09c9a5f5a289b1a4a9350bca74d7c2ef6c71d5a5e051  providers/implementations/ciphers/cipher_sm4.c
+61d2796a4dbf1f82dadf86219de5b762016d2e606f636b98b70f888227957c2d  providers/implementations/ciphers/cipher_sm4_hw.c
+06d8f86ec724075e7f72dabfb675b5c85a93c01997e4142fbaa8482e617f4ae5  providers/implementations/ciphers/cipher_tdes.c
+7b7172e7e5d646e07c1ac07036716c67d9a821de7c0dfd41f8243610215a61c4  providers/implementations/ciphers/cipher_tdes_common.c
+39be7651ea83263815cd48c649a54af56279879361fe91573800d84fbaf40bd9  providers/implementations/ciphers/cipher_tdes_default.c
+c3a9a1fca4416e4ecdeecc3e83cbd24ff3f3185f5c1fea8c5fb8346f3b0e9a67  providers/implementations/ciphers/cipher_tdes_default_hw.c
+50645122f08ef4891cd96cace833bd550be7f5278ab785515fd61fe8993c8c25  providers/implementations/ciphers/cipher_tdes_hw.c
+9bf68e5921f780cb489e8e19a0fd02e5285cea67381b2f55367c65ad0e65ecc3  providers/implementations/ciphers/cipher_tdes_wrap.c
+b98c8a9eb256008fb335084531dd5422563651a5a2d4cbe97f62fba49254a954  providers/implementations/ciphers/cipher_tdes_wrap_hw.c
+db110866cede3d97d352fb94f13832bef7349f2c7c1d271bc87e640fc36beed0  providers/implementations/ciphers/ciphercommon.c
+697e9f2254574cc93f0737456d0f3a275946296466a179bb5d0fea607c7a92fa  providers/implementations/ciphers/ciphercommon_block.c
+4b4106f85e36eb2c07acc5a3ca5ccd77b736b3ac46cc4af786cf57405ecd54b2  providers/implementations/ciphers/ciphercommon_ccm.c
+8b6828f188c2590c7d9c6cac13fa0eb6d38a522b0f2859e7c8a766580fa9b66e  providers/implementations/ciphers/ciphercommon_ccm_hw.c
+1a6377698528eb24943c7616b55e43305a98569497279df8c6e6e411ed009424  providers/implementations/ciphers/ciphercommon_gcm.c
+bb67eaa7a98494ca938726f9218213870fc97dd87b56bda950626cc794baf20b  providers/implementations/ciphers/ciphercommon_gcm_hw.c
+23fd89e3239e596c325a8c5d23eb1fe157a8d23aa4d90ed2c574bf06dfabd693  providers/implementations/ciphers/ciphercommon_hw.c
+6b292cf7b2de5e7edb50ab4fedc4adcde2e17aeb30a7c5e4502a4c3994a446cf  providers/implementations/digests/blake2_prov.c
+0dd0cb9e70c5e339c8540aece6be4be1ee328fdc7d32d54e049ff708c981f2d4  providers/implementations/digests/blake2b_prov.c
+6e18c13f50a291de8a4241f8cb9b6b6b1200f3cc4eee0d8d7ffabf0f36daa652  providers/implementations/digests/blake2s_prov.c
+39b47b6ef9d71852964c26e07ef0e9b23f04c7493b1b16ba7c3dba7074b6b70d  providers/implementations/digests/digestcommon.c
+4e6dd0d5343117ee5b3b61326e14e2aad035ae4f2bb0a1cc4b4be708371a9fe3  providers/implementations/digests/md5_prov.c
+322887272619e335b3157128d772d4f7851eef7314ab65ce8b742c5ab8ac5d63  providers/implementations/digests/md5_sha1_prov.c
+80551b53302d95faea257df3edbdbd02d48427ce42da2c4335f998456400d057  providers/implementations/digests/sha2_prov.c
+de342d04be6af69037922d5c97bdc40c0c27f6740636e72786a765d0d8ad9173  providers/implementations/digests/sha3_prov.c
+320eb5deda82a3c052d0d0530fc27a66a402cbf3ddcf6640c5911d0e8d145e0c  providers/implementations/digests/sm3_prov.c
+e7660e887b3a98789b09645c7b8b3a0d94bef80837a30c750c1c3fd0c8de3d60  providers/implementations/encode_decode/decode_der2key.c
+130057ec5593166df25e0ece457e5623c218127d8b7714a7162604c22a420976  providers/implementations/encode_decode/decode_msblob2key.c
+4ab7936e2bda93aec2083fb3545d261bd3ffbee62657a0c7118bd5fc4f02b5e0  providers/implementations/encode_decode/decode_pem2der.c
+cebde4c1b7f333159daeec6ac014d3477bf4d3e25a3cccfb0bc7b55bdcf78498  providers/implementations/encode_decode/decode_pvk2key.c
+a4a2c4f7e1c86cb194040db19c801d749fac52ff3dd59e3759524226b772178e  providers/implementations/encode_decode/encode_key2any.c
+8fe61023c2d19a43b1aaacf617f2d6098a525216e91622549c1bfabb80256de0  providers/implementations/encode_decode/encode_key2blob.c
+1412482218e6aadd0cc1eaac3d4a2aaf57be43705e2b4d2ba926b5493e7e1b55  providers/implementations/encode_decode/encode_key2ms.c
+820e4501145f07e7f48d29e3124fdcdb834e7e6658fb2340a1f2d2ce373362a6  providers/implementations/encode_decode/encode_key2text.c
+ecc88a83dc108b869e8d8223d466d49b829364bea0dae602c05e2b999aa5a02c  providers/implementations/encode_decode/endecoder_common.c
+2d3adc404341e3a8a3c29adf732cb740dc4c4b0cde1c422cbeb352c4509320db  providers/implementations/exchange/dh_exch.c
+427b9abee979f94371aa4aa99b48f08f1772965c93f9bce6f4531cc4cec136b6  providers/implementations/exchange/ecdh_exch.c
+9bf87b8429398a6465c7e9f749a33b84974303a458736b56f3359b30726d3969  providers/implementations/exchange/ecx_exch.c
+06ba83a8a8235bcdbda56f82b017cb19361469fe47c23cc6218a7e9b88ae6513  providers/implementations/exchange/kdf_exch.c
+4f8049771ff0cb57944e1ffc9599a96023e36b424138e51b1466f9a133f03943  providers/implementations/kdfs/hkdf.c
+115e13e152cfb7d729659cb26056414f719c5e7cb2a9b3df8b6ad0f232ce109a  providers/implementations/kdfs/kbkdf.c
+9625cab3ea0a1830838412d0ce6210c9a77eeebddb3cb1bee5198d90c33539ae  providers/implementations/kdfs/krb5kdf.c
+f93d3b32e7e3bc6bd4100559b15d392613797e1048010fdc70058ae9297a1125  providers/implementations/kdfs/pbkdf2.c
+ce34beaa333d28a9c197ea60ed3dc37b319e3b96250941dd2fc0c944b76a6a51  providers/implementations/kdfs/pbkdf2_fips.c
+43fae0685aa32e34545704fccd1f0ec3357ef28cc817c03960d649044420b368  providers/implementations/kdfs/pkcs12kdf.c
+0994de1013c5b1a3007ce71150a28efdc791be96c8b8f7b6d25c8b593735f8f2  providers/implementations/kdfs/scrypt.c
+6551c3354fb889cb429f850e0194a82d677528f65212d4ac345ab87352cec8a1  providers/implementations/kdfs/sshkdf.c
+eb18f3fe62bb2a46a294b738de81a233bd2db00cc79ddc58622fc7c7021c3528  providers/implementations/kdfs/sskdf.c
+3c46ec0e14be09a133d709c3a1c3d5ab05a4f1ed5385c3e7a1afb2f0ee47ef7a  providers/implementations/kdfs/tls1_prf.c
+f818a11f33dc1dd58f01b430c7d31ae51072b6713063885fc404eca397e4b9eb  providers/implementations/kdfs/x942kdf.c
+7d621555c4bd9dcdb324031c28f70d8d382ff0e5369ce1ade30180e8f525b2e8  providers/implementations/kem/rsa_kem.c
+9a75571e8454e85a33c0bae2a37231b7f29d9e9df20a513508091a8cac74f6a1  providers/implementations/keymgmt/dh_kmgmt.c
+36c27ca091024d87bd21edfd25916832cc8d4a021ad18e9d54ea6415bb49fbd5  providers/implementations/keymgmt/dsa_kmgmt.c
+181a08f93f84f0797e9672b78c1a0edab3624fee48fe3451367e7e42e5e0ba1c  providers/implementations/keymgmt/ec_kmgmt.c
+1a6b7e37229e81eae3981ab2e0b7669eb24aaa6487738c4b44a970da212560b6  providers/implementations/keymgmt/ecx_kmgmt.c
+053a2be39a87f50b877ebdbbf799cf5faf8b2de33b04311d819d212ee1ea329b  providers/implementations/keymgmt/kdf_legacy_kmgmt.c
+8064f919328b95c8f97e208ae4e3304209dd2e8d725ab3337cfad3c8972d5a0a  providers/implementations/keymgmt/mac_legacy_kmgmt.c
+1ea71e863be437958d75eb849b28505a43e3dbc660588b4080d70e82a39d52b7  providers/implementations/keymgmt/rsa_kmgmt.c
+7d268a8d8179b35b6a9cb6b362976b3d861351c9ea076961f02a54ab37f3f5b0  providers/implementations/macs/blake2b_mac.c
+3d50f84587431277bfb7af241485b150e02f7b30750f9faa40dd6e98927e5592  providers/implementations/macs/blake2s_mac.c
+25d20ceb61cadb495ec890ae2c49c5c1c840b39ac77f20058ee87249cab341ef  providers/implementations/macs/cmac_prov.c
+f51b074d55028d3e24656da348d21ca79f6680fdb30383d936251f1b3467caab  providers/implementations/macs/gmac_prov.c
+35505704fda658c0911f95974913c1f2dd75c8f91c5d2ec597c70c52624bdfdf  providers/implementations/macs/hmac_prov.c
+3201d82d1e17c22a80b26dedae627be10b6dc1af623d1fd0c3c923e0125a42e7  providers/implementations/macs/kmac_prov.c
+94d80682125b40ba694242fdfa978b802c6e70f2b0167215c9d689c0ccf5820f  providers/implementations/macs/poly1305_prov.c
+d594704aa3173afdb2b1e95253285cdb245a42078f9ca06b68aaeecb858b10fd  providers/implementations/macs/siphash_prov.c
+dcc1afbe2965de7c5ac0a17ab1b19b8ed512049376833cb410db30f8dc4e2064  providers/implementations/rands/crngt.c
+bdabe11fe519f1852f3a3783b1e2c2fe4f51287ef6427d302308bf15a337026b  providers/implementations/rands/drbg.c
+a3caabf5fd73d52f4e40088ab4aee83e51348d0fd059609d1f5d8725baed6155  providers/implementations/rands/drbg_ctr.c
+c36937930bcaecd6d5131d0317b9162a96cc956df164848dc53f423af838d04a  providers/implementations/rands/drbg_hash.c
+531c0ce4212570474b59a1b039e61a97ee5504e56e2f10de1f36578f1bca79d3  providers/implementations/rands/drbg_hmac.c
+8075edbf4957b625301c85331bb4737cbefd334ee51e146fa15c3dc40bdd4973  providers/implementations/rands/seed_src.c
+c440957b586c6dac6c0b695080f0f4147c81f3a269b2fb07a742e73b54b2fa64  providers/implementations/rands/seeding/rand_cpu_x86.c
+c1a6007e76d21279e0b4eafef970c94cefad48a1a0d609aa9c359b5418486b95  providers/implementations/rands/seeding/rand_tsc.c
+7cd4b532adf4eff8209c5eb7d7c1020840fc1728cb3179beb163639fc7aff285  providers/implementations/rands/seeding/rand_unix.c
+38a0be4c03ea3c0e4761173a44ed421e3ec4f5c5eafafd8861b84a28c48d75f2  providers/implementations/rands/seeding/rand_win.c
+888a671934abef4225956f9931cff842f245f90660e11f23a55228edca962e16  providers/implementations/rands/test_rng.c
+a7f16a6480f5051d1197b992e042a73535d0922bdd3c962d2a96af780994e858  providers/implementations/signature/dsa.c
+1edce687e950bec7c289cdac7c4c455e195942ccddfc38af0344277421afcc0f  providers/implementations/signature/ecdsa.c
+8074854e90be6a8266cc81ad722ef12213e9fc1360891822f109bfb03791f18e  providers/implementations/signature/eddsa.c
+40430250137bf6afffb9ca5a1c810947246169d3835912d26089fe86f405956d  providers/implementations/signature/mac_legacy.c
+31073a0bbcd27e1594040a39abfc04ff0f07fad2f25762def753724d330fe8b1  providers/implementations/signature/rsa.c
+c0a862433e5da909cf0c614d3f982765b67821c7a4cc6257ceb8c490b4dcf732  providers/implementations/signature/sm2sig.c
+c63cb744c26af304cf00006071d3ebd9325a4d65913b75a2bcb1d2e104c734fd  providers/implementations/storemgmt/file_store.c
+291288936fe321e3e85048366f790f6b7983561cd8f80eec4c0e01d7c43614ab  providers/implementations/storemgmt/file_store_der2obj.c
+04ea01e48b8fee822acb376ab8679b4c627b32ab75c137bf23ebb4fe2a1c0703  providers/prov_running.c
+53a1e913fcc4a4e8e84009229cba60b9e29c7dc6536182fd290478331fad44b4  ssl/record/tls_pad.c
+0143753184c1bddf47af3bd5b5e0d788fc757dac4b77f291627fc25d46eba05c  ssl/s3_cbc.c
diff --git a/providers/fips.checksum b/providers/fips.checksum
new file mode 100644
index 0000000000..8fe83feaca
--- /dev/null
+++ b/providers/fips.checksum
@@ -0,0 +1 @@
+1106a14cf83a287e98bb7b7cde67aea32e75d523b4d568b2c5b352a3a17ee181  providers/fips-sources.checksums
diff --git a/providers/fips.module.sources b/providers/fips.module.sources
new file mode 100644
index 0000000000..79b532fe89
--- /dev/null
+++ b/providers/fips.module.sources
@@ -0,0 +1,467 @@
+crypto/aes/aes_cbc.c
+crypto/aes/aes_core.c
+crypto/aes/aes_ecb.c
+crypto/aes/aes_misc.c
+crypto/aes/asm/aes-586.pl
+crypto/aes/asm/aes-armv4.pl
+crypto/aes/asm/aes-c64xplus.pl
+crypto/aes/asm/aes-ia64.S
+crypto/aes/asm/aes-mips.pl
+crypto/aes/asm/aes-parisc.pl
+crypto/aes/asm/aes-ppc.pl
+crypto/aes/asm/aes-s390x.pl
+crypto/aes/asm/aes-sparcv9.pl
+crypto/aes/asm/aes-x86_64.pl
+crypto/aes/asm/aesfx-sparcv9.pl
+crypto/aes/asm/aesni-mb-x86_64.pl
+crypto/aes/asm/aesni-sha1-x86_64.pl
+crypto/aes/asm/aesni-sha256-x86_64.pl
+crypto/aes/asm/aesni-x86.pl
+crypto/aes/asm/aesni-x86_64.pl
+crypto/aes/asm/aesp8-ppc.pl
+crypto/aes/asm/aest4-sparcv9.pl
+crypto/aes/asm/aesv8-armx.pl
+crypto/aes/asm/bsaes-armv7.pl
+crypto/aes/asm/bsaes-x86_64.pl
+crypto/aes/asm/vpaes-armv8.pl
+crypto/aes/asm/vpaes-ppc.pl
+crypto/aes/asm/vpaes-x86.pl
+crypto/aes/asm/vpaes-x86_64.pl
+crypto/asn1_dsa.c
+crypto/bn/asm/alpha-mont.pl
+crypto/bn/asm/armv4-gf2m.pl
+crypto/bn/asm/armv4-mont.pl
+crypto/bn/asm/armv8-mont.pl
+crypto/bn/asm/bn-586.pl
+crypto/bn/asm/c64xplus-gf2m.pl
+crypto/bn/asm/co-586.pl
+crypto/bn/asm/ia64-mont.pl
+crypto/bn/asm/ia64.S
+crypto/bn/asm/mips-mont.pl
+crypto/bn/asm/mips.pl
+crypto/bn/asm/parisc-mont.pl
+crypto/bn/asm/ppc-mont.pl
+crypto/bn/asm/ppc.pl
+crypto/bn/asm/ppc64-mont.pl
+crypto/bn/asm/rsaz-avx2.pl
+crypto/bn/asm/rsaz-avx512.pl
+crypto/bn/asm/rsaz-x86_64.pl
+crypto/bn/asm/s390x-gf2m.pl
+crypto/bn/asm/s390x-mont.pl
+crypto/bn/asm/s390x.S
+crypto/bn/asm/sparct4-mont.pl
+crypto/bn/asm/sparcv8.S
+crypto/bn/asm/sparcv8plus.S
+crypto/bn/asm/sparcv9-gf2m.pl
+crypto/bn/asm/sparcv9-mont.pl
+crypto/bn/asm/sparcv9a-mont.pl
+crypto/bn/asm/via-mont.pl
+crypto/bn/asm/vis3-mont.pl
+crypto/bn/asm/x86-gf2m.pl
+crypto/bn/asm/x86-mont.pl
+crypto/bn/asm/x86_64-gcc.c
+crypto/bn/asm/x86_64-gf2m.pl
+crypto/bn/asm/x86_64-mont.pl
+crypto/bn/asm/x86_64-mont5.pl
+crypto/bn/bn_add.c
+crypto/bn/bn_asm.c
+crypto/bn/bn_blind.c
+crypto/bn/bn_const.c
+crypto/bn/bn_conv.c
+crypto/bn/bn_ctx.c
+crypto/bn/bn_dh.c
+crypto/bn/bn_div.c
+crypto/bn/bn_exp.c
+crypto/bn/bn_exp2.c
+crypto/bn/bn_gcd.c
+crypto/bn/bn_gf2m.c
+crypto/bn/bn_intern.c
+crypto/bn/bn_kron.c
+crypto/bn/bn_lib.c
+crypto/bn/bn_mod.c
+crypto/bn/bn_mont.c
+crypto/bn/bn_mpi.c
+crypto/bn/bn_mul.c
+crypto/bn/bn_nist.c
+crypto/bn/bn_prime.c
+crypto/bn/bn_rand.c
+crypto/bn/bn_recp.c
+crypto/bn/bn_rsa_fips186_4.c
+crypto/bn/bn_shift.c
+crypto/bn/bn_sqr.c
+crypto/bn/bn_sqrt.c
+crypto/bn/bn_word.c
+crypto/bn/rsaz_exp.c
+crypto/bn/rsaz_exp_x2.c
+crypto/bsearch.c
+crypto/buffer/buffer.c
+crypto/cmac/cmac.c
+crypto/context.c
+crypto/core_algorithm.c
+crypto/core_fetch.c
+crypto/core_namemap.c
+crypto/cpuid.c
+crypto/cryptlib.c
+crypto/ctype.c
+crypto/der_writer.c
+crypto/des/des_enc.c
+crypto/des/ecb3_enc.c
+crypto/des/fcrypt_b.c
+crypto/des/set_key.c
+crypto/dh/dh_backend.c
+crypto/dh/dh_check.c
+crypto/dh/dh_gen.c
+crypto/dh/dh_group_params.c
+crypto/dh/dh_kdf.c
+crypto/dh/dh_key.c
+crypto/dh/dh_lib.c
+crypto/dsa/dsa_backend.c
+crypto/dsa/dsa_check.c
+crypto/dsa/dsa_gen.c
+crypto/dsa/dsa_key.c
+crypto/dsa/dsa_lib.c
+crypto/dsa/dsa_ossl.c
+crypto/dsa/dsa_sign.c
+crypto/dsa/dsa_vrf.c
+crypto/ec/asm/ecp_nistz256-armv4.pl
+crypto/ec/asm/ecp_nistz256-armv8.pl
+crypto/ec/asm/ecp_nistz256-ppc64.pl
+crypto/ec/asm/ecp_nistz256-sparcv9.pl
+crypto/ec/asm/ecp_nistz256-x86.pl
+crypto/ec/asm/ecp_nistz256-x86_64.pl
+crypto/ec/asm/x25519-ppc64.pl
+crypto/ec/asm/x25519-x86_64.pl
+crypto/ec/curve25519.c
+crypto/ec/curve448/arch_32/f_impl32.c
+crypto/ec/curve448/arch_64/f_impl64.c
+crypto/ec/curve448/curve448.c
+crypto/ec/curve448/curve448_tables.c
+crypto/ec/curve448/eddsa.c
+crypto/ec/curve448/f_generic.c
+crypto/ec/curve448/scalar.c
+crypto/ec/ec2_oct.c
+crypto/ec/ec2_smpl.c
+crypto/ec/ec_asn1.c
+crypto/ec/ec_backend.c
+crypto/ec/ec_check.c
+crypto/ec/ec_curve.c
+crypto/ec/ec_cvt.c
+crypto/ec/ec_deprecated.c
+crypto/ec/ec_key.c
+crypto/ec/ec_kmeth.c
+crypto/ec/ec_lib.c
+crypto/ec/ec_mult.c
+crypto/ec/ec_oct.c
+crypto/ec/ec_print.c
+crypto/ec/ecdh_kdf.c
+crypto/ec/ecdh_ossl.c
+crypto/ec/ecdsa_ossl.c
+crypto/ec/ecdsa_sign.c
+crypto/ec/ecdsa_vrf.c
+crypto/ec/ecp_mont.c
+crypto/ec/ecp_nist.c
+crypto/ec/ecp_nistz256.c
+crypto/ec/ecp_oct.c
+crypto/ec/ecp_smpl.c
+crypto/ec/ecx_backend.c
+crypto/ec/ecx_key.c
+crypto/evp/asymcipher.c
+crypto/evp/cmeth_lib.c
+crypto/evp/dh_support.c
+crypto/evp/digest.c
+crypto/evp/ec_support.c
+crypto/evp/evp_enc.c
+crypto/evp/evp_fetch.c
+crypto/evp/evp_lib.c
+crypto/evp/evp_rand.c
+crypto/evp/evp_utils.c
+crypto/evp/exchange.c
+crypto/evp/kdf_lib.c
+crypto/evp/kdf_meth.c
+crypto/evp/kem.c
+crypto/evp/keymgmt_lib.c
+crypto/evp/keymgmt_meth.c
+crypto/evp/m_sigver.c
+crypto/evp/mac_lib.c
+crypto/evp/mac_meth.c
+crypto/evp/p_lib.c
+crypto/evp/pmeth_check.c
+crypto/evp/pmeth_gn.c
+crypto/evp/pmeth_lib.c
+crypto/evp/signature.c
+crypto/ex_data.c
+crypto/ffc/ffc_backend.c
+crypto/ffc/ffc_dh.c
+crypto/ffc/ffc_key_generate.c
+crypto/ffc/ffc_key_validate.c
+crypto/ffc/ffc_params.c
+crypto/ffc/ffc_params_generate.c
+crypto/ffc/ffc_params_validate.c
+crypto/hmac/hmac.c
+crypto/initthread.c
+crypto/lhash/lhash.c
+crypto/md5/asm/md5-586.pl
+crypto/md5/asm/md5-sparcv9.pl
+crypto/md5/asm/md5-x86_64.pl
+crypto/md5/md5_dgst.c
+crypto/md5/md5_one.c
+crypto/md5/md5_sha1.c
+crypto/mem_clr.c
+crypto/modes/asm/aes-gcm-armv8_64.pl
+crypto/modes/asm/aesni-gcm-x86_64.pl
+crypto/modes/asm/ghash-alpha.pl
+crypto/modes/asm/ghash-armv4.pl
+crypto/modes/asm/ghash-c64xplus.pl
+crypto/modes/asm/ghash-ia64.pl
+crypto/modes/asm/ghash-parisc.pl
+crypto/modes/asm/ghash-s390x.pl
+crypto/modes/asm/ghash-sparcv9.pl
+crypto/modes/asm/ghash-x86.pl
+crypto/modes/asm/ghash-x86_64.pl
+crypto/modes/asm/ghashp8-ppc.pl
+crypto/modes/asm/ghashv8-armx.pl
+crypto/modes/cbc128.c
+crypto/modes/ccm128.c
+crypto/modes/cfb128.c
+crypto/modes/ctr128.c
+crypto/modes/gcm128.c
+crypto/modes/ofb128.c
+crypto/modes/wrap128.c
+crypto/modes/xts128.c
+crypto/o_str.c
+crypto/packet.c
+crypto/param_build.c
+crypto/param_build_set.c
+crypto/params.c
+crypto/params_dup.c
+crypto/params_from_text.c
+crypto/passphrase.c
+crypto/property/defn_cache.c
+crypto/property/property.c
+crypto/property/property_parse.c
+crypto/property/property_string.c
+crypto/provider_core.c
+crypto/provider_predefined.c
+crypto/rand/rand_lib.c
+crypto/rand/rand_meth.c
+crypto/rsa/rsa_backend.c
+crypto/rsa/rsa_chk.c
+crypto/rsa/rsa_crpt.c
+crypto/rsa/rsa_gen.c
+crypto/rsa/rsa_lib.c
+crypto/rsa/rsa_mp_names.c
+crypto/rsa/rsa_none.c
+crypto/rsa/rsa_oaep.c
+crypto/rsa/rsa_ossl.c
+crypto/rsa/rsa_pk1.c
+crypto/rsa/rsa_pss.c
+crypto/rsa/rsa_schemes.c
+crypto/rsa/rsa_sign.c
+crypto/rsa/rsa_sp800_56b_check.c
+crypto/rsa/rsa_sp800_56b_gen.c
+crypto/rsa/rsa_x931.c
+crypto/self_test_core.c
+crypto/sha/asm/keccak1600-armv4.pl
+crypto/sha/asm/keccak1600-armv8.pl
+crypto/sha/asm/keccak1600-avx2.pl
+crypto/sha/asm/keccak1600-avx512.pl
+crypto/sha/asm/keccak1600-avx512vl.pl
+crypto/sha/asm/keccak1600-c64x.pl
+crypto/sha/asm/keccak1600-mmx.pl
+crypto/sha/asm/keccak1600-ppc64.pl
+crypto/sha/asm/keccak1600-s390x.pl
+crypto/sha/asm/keccak1600-x86_64.pl
+crypto/sha/asm/keccak1600p8-ppc.pl
+crypto/sha/asm/sha1-586.pl
+crypto/sha/asm/sha1-alpha.pl
+crypto/sha/asm/sha1-armv4-large.pl
+crypto/sha/asm/sha1-armv8.pl
+crypto/sha/asm/sha1-c64xplus.pl
+crypto/sha/asm/sha1-ia64.pl
+crypto/sha/asm/sha1-mb-x86_64.pl
+crypto/sha/asm/sha1-mips.pl
+crypto/sha/asm/sha1-parisc.pl
+crypto/sha/asm/sha1-ppc.pl
+crypto/sha/asm/sha1-s390x.pl
+crypto/sha/asm/sha1-sparcv9.pl
+crypto/sha/asm/sha1-sparcv9a.pl
+crypto/sha/asm/sha1-thumb.pl
+crypto/sha/asm/sha1-x86_64.pl
+crypto/sha/asm/sha256-586.pl
+crypto/sha/asm/sha256-armv4.pl
+crypto/sha/asm/sha256-c64xplus.pl
+crypto/sha/asm/sha256-mb-x86_64.pl
+crypto/sha/asm/sha512-586.pl
+crypto/sha/asm/sha512-armv4.pl
+crypto/sha/asm/sha512-armv8.pl
+crypto/sha/asm/sha512-c64xplus.pl
+crypto/sha/asm/sha512-ia64.pl
+crypto/sha/asm/sha512-mips.pl
+crypto/sha/asm/sha512-parisc.pl
+crypto/sha/asm/sha512-ppc.pl
+crypto/sha/asm/sha512-s390x.pl
+crypto/sha/asm/sha512-sparcv9.pl
+crypto/sha/asm/sha512-x86_64.pl
+crypto/sha/asm/sha512p8-ppc.pl
+crypto/sha/keccak1600.c
+crypto/sha/sha1dgst.c
+crypto/sha/sha256.c
+crypto/sha/sha3.c
+crypto/sha/sha512.c
+crypto/sparse_array.c
+crypto/stack/stack.c
+crypto/threads_lib.c
+crypto/threads_none.c
+crypto/threads_pthread.c
+crypto/threads_win.c
+crypto/x86_64cpuid.pl
+providers/common/bio_prov.c
+providers/common/capabilities.c
+providers/common/der/der_digests_gen.c.in
+providers/common/der/der_dsa_gen.c.in
+providers/common/der/der_dsa_key.c
+providers/common/der/der_dsa_sig.c
+providers/common/der/der_ec_gen.c.in
+providers/common/der/der_ec_key.c
+providers/common/der/der_ec_sig.c
+providers/common/der/der_ecx_gen.c.in
+providers/common/der/der_ecx_key.c
+providers/common/der/der_rsa_gen.c.in
+providers/common/der/der_rsa_key.c
+providers/common/der/der_rsa_sig.c
+providers/common/der/der_sm2_gen.c.in
+providers/common/der/der_sm2_key.c
+providers/common/der/der_sm2_sig.c
+providers/common/der/der_wrap_gen.c.in
+providers/common/digest_to_nid.c
+providers/common/provider_ctx.c
+providers/common/provider_err.c
+providers/common/provider_seeding.c
+providers/common/provider_util.c
+providers/common/securitycheck.c
+providers/common/securitycheck_default.c
+providers/common/securitycheck_fips.c
+providers/fips/fipsprov.c
+providers/fips/self_test.c
+providers/fips/self_test_kats.c
+providers/implementations/asymciphers/rsa_enc.c
+providers/implementations/asymciphers/sm2_enc.c
+providers/implementations/ciphers/cipher_aes.c
+providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c
+providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c
+providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c
+providers/implementations/ciphers/cipher_aes_ccm.c
+providers/implementations/ciphers/cipher_aes_ccm_hw.c
+providers/implementations/ciphers/cipher_aes_cts.c
+providers/implementations/ciphers/cipher_aes_gcm.c
+providers/implementations/ciphers/cipher_aes_gcm_hw.c
+providers/implementations/ciphers/cipher_aes_hw.c
+providers/implementations/ciphers/cipher_aes_ocb.c
+providers/implementations/ciphers/cipher_aes_ocb_hw.c
+providers/implementations/ciphers/cipher_aes_siv.c
+providers/implementations/ciphers/cipher_aes_siv_hw.c
+providers/implementations/ciphers/cipher_aes_wrp.c
+providers/implementations/ciphers/cipher_aes_xts.c
+providers/implementations/ciphers/cipher_aes_xts_fips.c
+providers/implementations/ciphers/cipher_aes_xts_hw.c
+providers/implementations/ciphers/cipher_aria.c
+providers/implementations/ciphers/cipher_aria_ccm.c
+providers/implementations/ciphers/cipher_aria_ccm_hw.c
+providers/implementations/ciphers/cipher_aria_gcm.c
+providers/implementations/ciphers/cipher_aria_gcm_hw.c
+providers/implementations/ciphers/cipher_aria_hw.c
+providers/implementations/ciphers/cipher_camellia.c
+providers/implementations/ciphers/cipher_camellia_hw.c
+providers/implementations/ciphers/cipher_chacha20.c
+providers/implementations/ciphers/cipher_chacha20_hw.c
+providers/implementations/ciphers/cipher_chacha20_poly1305.c
+providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c
+providers/implementations/ciphers/cipher_null.c
+providers/implementations/ciphers/cipher_sm4.c
+providers/implementations/ciphers/cipher_sm4_hw.c
+providers/implementations/ciphers/cipher_tdes.c
+providers/implementations/ciphers/cipher_tdes_common.c
+providers/implementations/ciphers/cipher_tdes_default.c
+providers/implementations/ciphers/cipher_tdes_default_hw.c
+providers/implementations/ciphers/cipher_tdes_hw.c
+providers/implementations/ciphers/cipher_tdes_wrap.c
+providers/implementations/ciphers/cipher_tdes_wrap_hw.c
+providers/implementations/ciphers/ciphercommon.c
+providers/implementations/ciphers/ciphercommon_block.c
+providers/implementations/ciphers/ciphercommon_ccm.c
+providers/implementations/ciphers/ciphercommon_ccm_hw.c
+providers/implementations/ciphers/ciphercommon_gcm.c
+providers/implementations/ciphers/ciphercommon_gcm_hw.c
+providers/implementations/ciphers/ciphercommon_hw.c
+providers/implementations/digests/blake2_prov.c
+providers/implementations/digests/blake2b_prov.c
+providers/implementations/digests/blake2s_prov.c
+providers/implementations/digests/digestcommon.c
+providers/implementations/digests/md5_prov.c
+providers/implementations/digests/md5_sha1_prov.c
+providers/implementations/digests/sha2_prov.c
+providers/implementations/digests/sha3_prov.c
+providers/implementations/digests/sm3_prov.c
+providers/implementations/encode_decode/decode_der2key.c
+providers/implementations/encode_decode/decode_msblob2key.c
+providers/implementations/encode_decode/decode_pem2der.c
+providers/implementations/encode_decode/decode_pvk2key.c
+providers/implementations/encode_decode/encode_key2any.c
+providers/implementations/encode_decode/encode_key2blob.c
+providers/implementations/encode_decode/encode_key2ms.c
+providers/implementations/encode_decode/encode_key2text.c
+providers/implementations/encode_decode/endecoder_common.c
+providers/implementations/exchange/dh_exch.c
+providers/implementations/exchange/ecdh_exch.c
+providers/implementations/exchange/ecx_exch.c
+providers/implementations/exchange/kdf_exch.c
+providers/implementations/kdfs/hkdf.c
+providers/implementations/kdfs/kbkdf.c
+providers/implementations/kdfs/krb5kdf.c
+providers/implementations/kdfs/pbkdf2.c
+providers/implementations/kdfs/pbkdf2_fips.c
+providers/implementations/kdfs/pkcs12kdf.c
+providers/implementations/kdfs/scrypt.c
+providers/implementations/kdfs/sshkdf.c
+providers/implementations/kdfs/sskdf.c
+providers/implementations/kdfs/tls1_prf.c
+providers/implementations/kdfs/x942kdf.c
+providers/implementations/kem/rsa_kem.c
+providers/implementations/keymgmt/dh_kmgmt.c
+providers/implementations/keymgmt/dsa_kmgmt.c
+providers/implementations/keymgmt/ec_kmgmt.c
+providers/implementations/keymgmt/ecx_kmgmt.c
+providers/implementations/keymgmt/kdf_legacy_kmgmt.c
+providers/implementations/keymgmt/mac_legacy_kmgmt.c
+providers/implementations/keymgmt/rsa_kmgmt.c
+providers/implementations/macs/blake2b_mac.c
+providers/implementations/macs/blake2s_mac.c
+providers/implementations/macs/cmac_prov.c
+providers/implementations/macs/gmac_prov.c
+providers/implementations/macs/hmac_prov.c
+providers/implementations/macs/kmac_prov.c
+providers/implementations/macs/poly1305_prov.c
+providers/implementations/macs/siphash_prov.c
+providers/implementations/rands/crngt.c
+providers/implementations/rands/drbg.c
+providers/implementations/rands/drbg_ctr.c
+providers/implementations/rands/drbg_hash.c
+providers/implementations/rands/drbg_hmac.c
+providers/implementations/rands/seed_src.c
+providers/implementations/rands/seeding/rand_cpu_x86.c
+providers/implementations/rands/seeding/rand_tsc.c
+providers/implementations/rands/seeding/rand_unix.c
+providers/implementations/rands/seeding/rand_win.c
+providers/implementations/rands/test_rng.c
+providers/implementations/signature/dsa.c
+providers/implementations/signature/ecdsa.c
+providers/implementations/signature/eddsa.c
+providers/implementations/signature/mac_legacy.c
+providers/implementations/signature/rsa.c
+providers/implementations/signature/sm2sig.c
+providers/implementations/storemgmt/file_store.c
+providers/implementations/storemgmt/file_store_der2obj.c
+providers/prov_running.c
+ssl/record/tls_pad.c
+ssl/s3_cbc.c
+util/providers.num
diff --git a/util/c-compress-test.pl b/util/c-compress-test.pl
new file mode 100755
index 0000000000..8ea3e045bc
--- /dev/null
+++ b/util/c-compress-test.pl
@@ -0,0 +1,54 @@
+#! /usr/bin/env perl
+#
+# TEST c-compress-pl with a number of examples and what should happen to them
+
+use strict;
+use warnings;
+
+use File::Basename;
+
+my @pairs =
+    (
+     [ <<'_____'
+/* A hell of a program */
+#def\
+ine foo/* bar */ 3
+#define bar /* haha "A /* comment */ that should    /* remain" */
+#define  haha /* hoho */ "A /* comment */ that should /* remain" */
+
+int main() {
+    int x;
+    /* one lonely comment */
+}
+_____
+       , <<'_____'
+#define foo 3
+#define bar that should
+#define haha "A /* comment */ that should /* remain" */
+int main() {
+int x;
+}
+_____
+     ]
+    );
+
+my $here = dirname $0;
+my $c_compress = "$here/lang-compress.pl";
+
+use FileHandle;
+use IPC::Open2;
+use Text::Diff;
+foreach (@pairs) {
+    my $source = $_->[0];
+    my $expected = $_->[1];
+    my $pid = open2(\*Reader, \*Writer, "perl $c_compress 'C'");
+    print Writer $source;
+    close Writer;
+
+    local $/ = undef;             # slurp
+    my $got = <Reader>;
+
+    if ($got ne $expected) {
+        print "MISMATCH:\n", diff \$expected, \$got;
+    }
+}
diff --git a/util/fips-checksums.sh b/util/fips-checksums.sh
new file mode 100755
index 0000000000..99f34fbc8f
--- /dev/null
+++ b/util/fips-checksums.sh
@@ -0,0 +1,31 @@
+#! /bin/sh
+
+HERE=`dirname $0`
+
+for f in "$@"; do
+    # It's worth nothing that 'openssl sha256 -r' assumes that all input
+    # is binary.  This isn't quite true, and we know better, so we convert
+    # the '*stdin' marker to the filename preceded by a space.  See the
+    # sha1sum manual for a specification of the format.
+    case "$f" in
+        *.c | *.h )
+            cat "$f" \
+                | $HERE/lang-compress.pl 'C' \
+                | unifdef -DFIPS_MODE=1 \
+                | openssl sha256 -r \
+                | sed -e "s| \\*stdin|  $f|"
+            ;;
+        *.pl ) 
+            cat "$f" \
+                | $HERE/lang-compress.pl 'perl' \
+                | openssl sha256 -r \
+                | sed -e "s| \\*stdin|  $f|"
+            ;;
+        *.S ) 
+            cat "$f" \
+                | $HERE/lang-compress.pl 'S' \
+                | openssl sha256 -r \
+                | sed -e "s| \\*stdin|  $f|"
+            ;;
+    esac
+done
diff --git a/util/lang-compress.pl b/util/lang-compress.pl
new file mode 100755
index 0000000000..6898877587
--- /dev/null
+++ b/util/lang-compress.pl
@@ -0,0 +1,189 @@
+#! /usr/bin/env perl
+#
+# C source compressor.  This:
+#
+# - merges continuation lines
+# - removes comments (not in strings)
+# - removes empty lines (not in strings)
+
+use strict;
+use warnings;
+
+my $debug = defined $ENV{DEBUG};
+my $lang = shift @ARGV;
+
+# Slurp the file
+$/ = undef;
+$_ = <>;
+
+if ($lang eq 'C') {
+    # Merge continuation lines
+    s{\\\n}{}g;
+
+    # Regexp for things that should be preserved
+    my $preserved =
+        qr{
+              (?:
+                  "                 # String start
+                  (?: \\. | [^\"])* # Any character, including escaped ones
+                  "                 # String end
+              )
+
+          |                         # OR
+
+              (?:
+                  '                 # Character start (multi-chars supported)
+                  (?: \\. | [^\'])+ # Any character, including escaped ones
+                  '                 # String end
+              )
+        }x;
+
+    # Remove comments while preserving strings
+    s{
+         (?|                        # All things preserved end up in $1
+
+             /\*                    # C comment start
+             .*?                    # Contents up until
+             \*/                    # C comment end
+
+         |                          # OR
+
+             (                      # Grouping for the replacement
+                 $preserved
+             )
+
+         )
+    }{
+        if ($debug) {
+            print STDERR "DEBUG: '$&' => '$1'\n" if defined $1;
+            print STDERR "DEBUG: '$&' removed\n" unless defined $1;
+        }
+        defined $1 ? $1 : ""
+    }gsxe;
+
+    # Remove empty lines
+    s{
+         (?|                        # All things preserved end up in $1
+
+             (^|\n)(?:\s*(?:\n|$))+ # Empty lines, preserve one newline
+
+         |                          # OR
+
+             (                      # Grouping for the replacement
+                 $preserved
+             )
+
+         )
+    }{$1}gsx;
+
+    # Remove extra spaces
+    s{
+         (?|                        # All things preserved end up in $1
+
+             (\n)\h+                # Spaces at start of lines removed
+
+         |
+
+             \h+(\n)                # Spaces at end of lines removed
+
+         |
+
+             \h+                    # Other horizontal spaces replaced with one
+
+         |                          # OR
+
+             (                      # Grouping for the replacement
+                 $preserved
+             )
+
+         )
+    }{
+        if ($debug) {
+            print STDERR "DEBUG: '$&' => '$1'\n" if defined $1;
+            print STDERR "DEBUG: '$&' => ' '\n" unless defined $1;
+        }
+        defined $1 ? $1 : " "
+    }gsxe;
+} elsif ($lang eq 'S') {
+    # Because we use C++ style comments in our .S files, all we can do
+    # is to drop them
+    s{
+         ^([^\n]*?)//[^\n]*?$   # Any line with a // comment
+    }{
+        if ($debug) {
+            print STDERR "DEBUG: '$&' => '$1'\n" if defined $1;
+            print STDERR "DEBUG: '$&' removed\n" unless defined $1;
+        }
+        defined $1 ? $1 : ""
+    }mgsxe;
+
+    # Drop all empty lines
+    s{
+         (^|\n)(?:\s*(?:\n|$))+ # Empty lines, preserve one newline
+    }{$1}gsx;
+} elsif ($lang eq 'perl') {
+    # Merge continuation lines
+    s{\\\n}{}g;
+
+    # Regexp for things that should be preserved
+    my $preserved =
+        qr{
+              (?:
+                  <<["']?(\w+)["']? # HERE document start
+                  .*?               # Its contents
+                  ^\g{-1}$
+              )
+          |
+              (?:
+                  "                 # Double quoted string start
+                  (?: \\. | [^\"])* # Any character, including escaped ones
+                  "                 # Double quoted string end
+              )
+
+          |                         # OR
+
+              (?:
+                  '                 # Single quoted string start
+                  [^\']*            # Any character
+                  '                 # Single quoted string end
+              )
+        }msx;
+
+    # Remove comments while preserving strings
+    s{
+         (?|                        # All things preserved end up in $1
+
+             \#.*?(\n|$)            # Perl comments
+
+         |                          # OR
+
+             (                      # Grouping for the replacement
+                 $preserved
+             )
+
+         )
+    }{
+        if ($debug) {
+            print STDERR "DEBUG: '$&' => '$1'\n" if defined $1;
+            print STDERR "DEBUG: '$&' removed\n" unless defined $1;
+        }
+        defined $1 ? $1 : ""
+    }gsxe;
+
+    # Remove empty lines
+    s{
+         (?|                        # All things preserved end up in $1
+
+             (^|\n)(?:\s*(?:\n|$))+ # Empty lines, preserve one newline
+
+         |                          # OR
+
+             (                      # Grouping for the replacement
+                 $preserved
+             )
+
+         )
+    }{$1}gsx;
+}
+
+print;
diff --git a/util/perl/OpenSSL/Config/Query.pm b/util/perl/OpenSSL/Config/Query.pm
new file mode 100644
index 0000000000..22d6a459bd
--- /dev/null
+++ b/util/perl/OpenSSL/Config/Query.pm
@@ -0,0 +1,177 @@
+# Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the Apache License 2.0 (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+package OpenSSL::Config::Query;
+
+use 5.10.0;
+use strict;
+use warnings;
+use Carp;
+
+=head1 NAME
+
+OpenSSL::Config::Query - Query OpenSSL configuration info
+
+=head1 SYNOPSIS
+
+    use OpenSSL::Config::Info;
+
+    my $query = OpenSSL::Config::Query->new(info => \%unified_info);
+
+    # Query for something that's expected to give a scalar back
+    my $variable = $query->method(... args ...);
+
+    # Query for something that's expected to give a list back
+    my @variable = $query->method(... args ...);
+
+=head1 DESCRIPTION
+
+The unified info structure, commonly known as the %unified_info table, has
+become quite complex, and a bit overwhelming to look through directly.  This
+module makes querying this structure simpler, through diverse methods.
+
+=head2 Constructor
+
+=over 4
+
+=item B<new> I<%options>
+
+Creates an instance of the B<OpenSSL::Config::Query> class.  It takes options
+in keyed pair form, i.e. a series of C<< key => value >> pairs.  Available
+options are:
+
+=over 4
+
+=item B<info> =E<gt> I<HASHREF>
+
+A reference to a unified information hash table, most commonly known as
+%unified_info.
+
+=item B<config> =E<gt> I<HASHREF>
+
+A reference to a config information hash table, most commonly known as
+%config.
+
+=back
+
+Example:
+
+    my $info = OpenSSL::Config::Info->new(info => \%unified_info);
+
+=back
+
+=cut
+
+sub new {
+    my $class = shift;
+    my %opts = @_;
+
+    my @messages = _check_accepted_options(\%opts,
+                                           info => 'HASH',
+                                           config => 'HASH');
+    croak $messages[0] if @messages;
+
+    # We make a shallow copy of the input structure.  We might make
+    # a different choice in the future...
+    my $instance = { info => $opts{info} // {},
+                     config => $opts{config} // {} };
+    bless $instance, $class;
+
+    return $instance;
+}
+
+=head2 Query methods
+
+=over 4
+
+=item B<get_sources> I<LIST>
+
+LIST is expected to be the collection of names of end products, such as
+programs, modules, libraries.
+
+The returned result is a hash table reference, with each key being one of
+these end product names, and its value being a reference to an array of
+source file names that constitutes everything that will or may become part
+of that end product.
+
+=cut
+
+sub get_sources {
+    my $self = shift;
+
+    my $result = {};
+    foreach (@_) {
+        my @sources = @{$self->{info}->{sources}->{$_} // []};
+        my @staticlibs =
+            grep { $_ =~ m|\.a$| } @{$self->{info}->{depends}->{$_} // []};
+
+        my %parts = ( %{$self->get_sources(@sources)},
+                      %{$self->get_sources(@staticlibs)} );
+        my @parts = map { @{$_} } values %parts;
+
+        my @generator =
+            ( ( $self->{info}->{generate}->{$_} // [] ) -> [0] // () );
+        my %generator_parts = %{$self->get_sources(@generator)};
+        # if there are any generator parts, we ignore it, because that means
+        # it's a compiled program and thus NOT part of the source that's
+        # queried.
+        @generator = () if %generator_parts;
+
+        my @partial_result =
+            ( ( map { @{$_} } values %parts ),
+              ( grep { !defined($parts{$_}) } @sources, @generator ) );
+
+        # Push conditionally, to avoid creating $result->{$_} with an empty
+        # value
+        push @{$result->{$_}}, @partial_result if @partial_result;
+    }
+
+    return $result;
+}
+
+=item B<get_config> I<LIST>
+
+LIST is expected to be the collection of names of configuration data, such
+as build_infos, sourcedir, ...
+
+The returned result is a hash table reference, with each key being one of
+these configuration data names, and its value being a reference to the value
+corresponding to that name.
+
+=cut
+
+sub get_config {
+    my $self = shift;
+
+    return { map { $_ => $self->{config}->{$_} } @_ };
+}
+
+########
+#
+#  Helper functions
+#
+
+sub _check_accepted_options {
+    my $opts = shift;           # HASH reference (hopefully)
+    my %conds = @_;             # key => type
+
+    my @messages;
+    my %optnames = map { $_ => 1 } keys %$opts;
+    foreach (keys %conds) {
+        delete $optnames{$_};
+    }
+    push @messages, "Unknown options: " . join(', ', sort keys %optnames)
+        if keys %optnames;
+    foreach (sort keys %conds) {
+        push @messages, "'$_' value not a $conds{$_} reference"
+            if (defined $conds{$_} && defined $opts->{$_}
+                && ref $opts->{$_} ne $conds{$_});
+    }
+    return @messages;
+}
+
+1;


More information about the openssl-commits mailing list