From 78c990c156ba79521e98728e9a604b4c5cc8adec Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Sat, 18 Oct 2014 23:46:00 +0100 Subject: [PATCH] Remove fipscanister from Configure, delete fips directory Reviewed-by: Tim Hudson --- Configure | 102 +- Makefile.fips | 638 --- fips/Makefile | 247 -- fips/aes/Makefile | 126 - fips/aes/fips_aes_selftest.c | 387 -- fips/aes/fips_aesavs.c | 938 ---- fips/aes/fips_gcmtest.c | 571 --- fips/cmac/Makefile | 115 - fips/cmac/fips_cmac_selftest.c | 182 - fips/cmac/fips_cmactest.c | 517 --- fips/des/Makefile | 113 - fips/des/fips_des_selftest.c | 106 - fips/des/fips_desmovs.c | 710 --- fips/dh/Makefile | 99 - fips/dh/fips_dh_lib.c | 98 - fips/dh/fips_dhvs.c | 292 -- fips/dsa/Makefile | 149 - fips/dsa/fips_dsa_lib.c | 121 - fips/dsa/fips_dsa_selftest.c | 183 - fips/dsa/fips_dsa_sign.c | 141 - fips/dsa/fips_dsatest.c | 256 -- fips/dsa/fips_dssvs.c | 793 ---- fips/ecdh/Makefile | 106 - fips/ecdh/fips_ecdh_selftest.c | 257 -- fips/ecdh/fips_ecdhvs.c | 496 --- fips/ecdsa/Makefile | 130 - fips/ecdsa/fips_ecdsa_lib.c | 93 - fips/ecdsa/fips_ecdsa_selftest.c | 198 - fips/ecdsa/fips_ecdsa_sign.c | 114 - fips/ecdsa/fips_ecdsavs.c | 533 --- fips/fips.c | 443 -- fips/fips.h | 480 -- fips/fips_auth.in | 52 - fips/fips_canister.c | 240 - fips/fips_locl.h | 76 - fips/fips_post.c | 387 -- fips/fips_premain.c | 181 - fips/fips_premain.c.sha1 | 1 - fips/fips_test_suite.c | 1574 ------- fips/fips_utl.h | 494 --- fips/fipsalgtest.pl | 1209 ----- fips/fipsld | 197 - fips/fipssyms.h | 677 --- fips/hmac/Makefile | 113 - fips/hmac/fips_hmac_selftest.c | 184 - fips/hmac/fips_hmactest.c | 324 -- fips/mkfipsscr.pl | 657 --- fips/rand/Makefile | 279 -- fips/rand/fips_drbg_ctr.c | 436 -- fips/rand/fips_drbg_ec.c | 542 --- fips/rand/fips_drbg_hash.c | 378 -- fips/rand/fips_drbg_hmac.c | 281 -- fips/rand/fips_drbg_lib.c | 579 --- fips/rand/fips_drbg_rand.c | 174 - fips/rand/fips_drbg_selftest.c | 876 ---- fips/rand/fips_drbg_selftest.h | 4012 ----------------- fips/rand/fips_drbgvs.c | 416 -- fips/rand/fips_rand.c | 432 -- fips/rand/fips_rand.h | 135 - fips/rand/fips_rand_lcl.h | 241 - fips/rand/fips_rand_lib.c | 181 - fips/rand/fips_rand_selftest.c | 175 - fips/rand/fips_randtest.c | 261 -- fips/rand/fips_rngvs.c | 258 -- fips/rsa/Makefile | 174 - fips/rsa/fips_rsa_lib.c | 103 - fips/rsa/fips_rsa_selftest.c | 261 -- fips/rsa/fips_rsa_sign.c | 474 -- fips/rsa/fips_rsagtest.c | 389 -- fips/rsa/fips_rsastest.c | 361 -- fips/rsa/fips_rsavtest.c | 365 -- fips/sha/Makefile | 161 - fips/sha/fips_sha1_selftest.c | 94 - fips/sha/fips_shatest.c | 387 -- fips/sha/fips_standalone_sha1.c | 175 - fips/tools/README | 26 - fips/tools/api_fns.pm | 336 -- fips/tools/api_list.pl | 267 -- fips/tools/declarations.dat | 7155 ------------------------------ fips/utl/Makefile | 113 - fips/utl/fips_enc.c | 468 -- fips/utl/fips_err.c | 89 - fips/utl/fips_lck.c | 87 - fips/utl/fips_md.c | 347 -- fips/utl/fips_mem.c | 94 - util/arx.pl | 15 - util/fipsas.pl | 93 - 87 files changed, 4 insertions(+), 37786 deletions(-) delete mode 100644 Makefile.fips delete mode 100644 fips/Makefile delete mode 100644 fips/aes/Makefile delete mode 100644 fips/aes/fips_aes_selftest.c delete mode 100644 fips/aes/fips_aesavs.c delete mode 100644 fips/aes/fips_gcmtest.c delete mode 100644 fips/cmac/Makefile delete mode 100644 fips/cmac/fips_cmac_selftest.c delete mode 100644 fips/cmac/fips_cmactest.c delete mode 100644 fips/des/Makefile delete mode 100644 fips/des/fips_des_selftest.c delete mode 100644 fips/des/fips_desmovs.c delete mode 100644 fips/dh/Makefile delete mode 100644 fips/dh/fips_dh_lib.c delete mode 100644 fips/dh/fips_dhvs.c delete mode 100644 fips/dsa/Makefile delete mode 100644 fips/dsa/fips_dsa_lib.c delete mode 100644 fips/dsa/fips_dsa_selftest.c delete mode 100644 fips/dsa/fips_dsa_sign.c delete mode 100644 fips/dsa/fips_dsatest.c delete mode 100644 fips/dsa/fips_dssvs.c delete mode 100644 fips/ecdh/Makefile delete mode 100644 fips/ecdh/fips_ecdh_selftest.c delete mode 100644 fips/ecdh/fips_ecdhvs.c delete mode 100644 fips/ecdsa/Makefile delete mode 100644 fips/ecdsa/fips_ecdsa_lib.c delete mode 100644 fips/ecdsa/fips_ecdsa_selftest.c delete mode 100644 fips/ecdsa/fips_ecdsa_sign.c delete mode 100644 fips/ecdsa/fips_ecdsavs.c delete mode 100644 fips/fips.c delete mode 100644 fips/fips.h delete mode 100644 fips/fips_auth.in delete mode 100644 fips/fips_canister.c delete mode 100644 fips/fips_locl.h delete mode 100644 fips/fips_post.c delete mode 100644 fips/fips_premain.c delete mode 100644 fips/fips_premain.c.sha1 delete mode 100644 fips/fips_test_suite.c delete mode 100644 fips/fips_utl.h delete mode 100644 fips/fipsalgtest.pl delete mode 100755 fips/fipsld delete mode 100644 fips/fipssyms.h delete mode 100644 fips/hmac/Makefile delete mode 100644 fips/hmac/fips_hmac_selftest.c delete mode 100644 fips/hmac/fips_hmactest.c delete mode 100644 fips/mkfipsscr.pl delete mode 100644 fips/rand/Makefile delete mode 100644 fips/rand/fips_drbg_ctr.c delete mode 100644 fips/rand/fips_drbg_ec.c delete mode 100644 fips/rand/fips_drbg_hash.c delete mode 100644 fips/rand/fips_drbg_hmac.c delete mode 100644 fips/rand/fips_drbg_lib.c delete mode 100644 fips/rand/fips_drbg_rand.c delete mode 100644 fips/rand/fips_drbg_selftest.c delete mode 100644 fips/rand/fips_drbg_selftest.h delete mode 100644 fips/rand/fips_drbgvs.c delete mode 100644 fips/rand/fips_rand.c delete mode 100644 fips/rand/fips_rand.h delete mode 100644 fips/rand/fips_rand_lcl.h delete mode 100644 fips/rand/fips_rand_lib.c delete mode 100644 fips/rand/fips_rand_selftest.c delete mode 100644 fips/rand/fips_randtest.c delete mode 100644 fips/rand/fips_rngvs.c delete mode 100644 fips/rsa/Makefile delete mode 100644 fips/rsa/fips_rsa_lib.c delete mode 100644 fips/rsa/fips_rsa_selftest.c delete mode 100644 fips/rsa/fips_rsa_sign.c delete mode 100644 fips/rsa/fips_rsagtest.c delete mode 100644 fips/rsa/fips_rsastest.c delete mode 100644 fips/rsa/fips_rsavtest.c delete mode 100644 fips/sha/Makefile delete mode 100644 fips/sha/fips_sha1_selftest.c delete mode 100644 fips/sha/fips_shatest.c delete mode 100644 fips/sha/fips_standalone_sha1.c delete mode 100644 fips/tools/README delete mode 100644 fips/tools/api_fns.pm delete mode 100644 fips/tools/api_list.pl delete mode 100644 fips/tools/declarations.dat delete mode 100644 fips/utl/Makefile delete mode 100644 fips/utl/fips_enc.c delete mode 100644 fips/utl/fips_err.c delete mode 100644 fips/utl/fips_lck.c delete mode 100644 fips/utl/fips_md.c delete mode 100644 fips/utl/fips_mem.c delete mode 100644 util/arx.pl delete mode 100644 util/fipsas.pl diff --git a/Configure b/Configure index 5e9337c504..b59f807fbc 100755 --- a/Configure +++ b/Configure @@ -703,8 +703,6 @@ my $install_prefix= "$ENV{'INSTALL_PREFIX'}"; my $cross_compile_prefix=""; my $fipslibdir="/usr/local/ssl/fips-2.0/lib/"; my $nofipscanistercheck=0; -my $fipscanisterinternal="n"; -my $fipscanisteronly = 0; my $baseaddr="0xFB00000"; my $no_threads=0; my $threads=0; @@ -761,21 +759,6 @@ my %disabled = ( # "what" => "comment" [or special keyword "experimental ); my @experimental = (); -# If ssl directory missing assume truncated FIPS tarball -if (!-d "ssl") - { - print STDERR "Auto Configuring fipsonly\n"; - $fips = 1; - $nofipscanistercheck = 1; - $fipslibdir=""; - $fipscanisterinternal="y"; - $fipscanisteronly = 2; - if (! -f "crypto/bn/bn_gf2m.c" ) - { - $disabled{ec2m} = "forced"; - } - } - # This is what $depflags will look like with the above defaults # (we need this to see if we should advise the user to run "make depend"): my $default_depflags = " -DOPENSSL_NO_EC_NISTP_64_GCC_128 -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SCTP -DOPENSSL_NO_SSL_TRACE -DOPENSSL_NO_STORE -DOPENSSL_NO_UNIT_TEST"; @@ -925,32 +908,6 @@ PROCESS_ARGS: $fips = 1; $nofipscanistercheck = 1; } - elsif (/^fipscheck$/) - { - if ($fipscanisteronly != 2) - { - print STDERR <<"EOF"; -ERROR: FIPS not autodetected. Not running from restricted tarball?? -EOF - exit(1); - } - } - elsif (/^fipscanisteronly$/) - { - $fips = 1; - $nofipscanistercheck = 1; - $fipslibdir=""; - $fipscanisterinternal="y"; - $fipscanisteronly = 1; - } - elsif (/^fipscanisterbuild$/) - { - $fips = 1; - $nofipscanistercheck = 1; - $fipslibdir=""; - $fipscanisterinternal="y"; - $fipscanisteronly = 1; - } elsif (/^[-+]/) { if (/^--prefix=(.*)$/) @@ -1574,11 +1531,6 @@ $cflags.=" -DOPENSSL_BN_ASM_GF2m" if ($bn_obj =~ /-gf2m/); if ($fips) { $openssl_other_defines.="#define OPENSSL_FIPS\n"; - if ($fipscanisterinternal eq "y") - { - $openssl_other_defines.="#define OPENSSL_FIPSCANISTER\n"; - $cflags = "-DOPENSSL_FIPSCANISTER $cflags"; - } } $cpuid_obj="mem_clr.o" unless ($cpuid_obj =~ /\.o$/); @@ -1619,7 +1571,6 @@ if ($aes_obj =~ /\.o$/) # aes-xts.o indicates presence of AES_xts_[en|de]crypt... $cflags.=" -DAES_XTS_ASM" if ($aes_obj =~ s/\s*aes\-xts\.o//); $aes_obj =~ s/\s*(vpaes|aesni)\-x86\.o//g if ($no_sse2); - $aes_obj =~ s/\s*(vp|bs)aes-\w*\.o//g if ($fipscanisterinternal eq "y"); $cflags.=" -DVPAES_ASM" if ($aes_obj =~ m/vpaes/); $cflags.=" -DBSAES_ASM" if ($aes_obj =~ m/bsaes/); } @@ -1690,35 +1641,12 @@ if ($strict_warnings) } } -if ($fipscanisterinternal eq "y") - { - open(IN,"fips/fips_auth.h") || die "can't open fips_auth.h"; - while() - { - s/FIPS_AUTH_KEY.*$/FIPS_AUTH_KEY $fips_auth_key/ if defined $fips_auth_key; - s/FIPS_AUTH_CRYPTO_OFFICER.*$/FIPS_AUTH_CRYPTO_OFFICER $fips_auth_officer/ if defined $fips_auth_officer; - s/FIPS_AUTH_CRYPTO_USER.*$/FIPS_AUTH_CRYPTO_USER $fips_auth_user/ if defined $fips_auth_user; - print OUT $_; - } - close IN; - close OUT; - } - -my $mforg = $fipscanisteronly ? "Makefile.fips" : "Makefile.org"; - -open(IN,"<$mforg") || die "unable to read $mforg:$!\n"; +open(IN,"$Makefile.new") || die "unable to create $Makefile.new:$!\n"; -print OUT "### Generated automatically from $mforg by Configure.\n\n"; +print OUT "### Generated automatically from Makefile.org by Configure.\n\n"; my $sdirs=0; -if ($fipscanisteronly) - { - $aes_obj =~ s/aesni-sha1-x86_64.o//; - $bn_obj =~ s/modexp512-x86_64.o//; - } - while () { chomp; @@ -1797,7 +1725,6 @@ while () s/^FIPSCANLIB=.*/FIPSCANLIB=libcrypto/ if $fips; s/^SHARED_FIPS=.*/SHARED_FIPS=/; s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl/; - s/^FIPSCANISTERINTERNAL=.*/FIPSCANISTERINTERNAL=$fipscanisterinternal/; s/^BASEADDR=.*/BASEADDR=$baseaddr/; s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/; s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/; @@ -1821,10 +1748,6 @@ while () s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.\$(SHLIB_MAJOR).dylib .dylib/; } s/^SHARED_LDFLAGS=.*/SHARED_LDFLAGS=$shared_ldflag/; - if ($fipscanisteronly && exists $disabled{"ec2m"}) - { - next if (/ec2_/ || /bn_gf2m/); - } print OUT $_."\n"; } close(IN); @@ -2070,9 +1993,7 @@ EOF $make_targets .= " gentests" if $symlink; (system $make_command.$make_targets) == 0 or die "make $make_targets failed" if $make_targets ne ""; - if ( $fipscanisteronly ) - {} - elsif ( $perl =~ m@^/@) { + if ( $perl =~ m@^/@) { &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";'); &dofile("apps/CA.pl",$perl,'^#!/', '#!%s'); } else { @@ -2080,7 +2001,7 @@ EOF &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";'); &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s'); } - if ($depflags ne $default_depflags && !$make_depend && !$fipscanisteronly) { + if ($depflags ne $default_depflags && !$make_depend) { print </dev/null 2>&1; then \ - $(BUILD_CMD); \ - fi - -reflect: - @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV) - -FIPS_EX_OBJ= ../crypto/aes/aes_cfb.o \ - ../crypto/aes/aes_ecb.o \ - ../crypto/aes/aes_ofb.o \ - ../crypto/bn/bn_add.o \ - ../crypto/bn/bn_blind.o \ - ../crypto/bn/bn_ctx.o \ - ../crypto/bn/bn_div.o \ - ../crypto/bn/bn_exp2.o \ - ../crypto/bn/bn_exp.o \ - ../crypto/bn/bn_gcd.o \ - ../crypto/bn/bn_gf2m.o \ - ../crypto/bn/bn_lib.o \ - ../crypto/bn/bn_mod.o \ - ../crypto/bn/bn_mont.o \ - ../crypto/bn/bn_mul.o \ - ../crypto/bn/bn_nist.o \ - ../crypto/bn/bn_prime.o \ - ../crypto/bn/bn_rand.o \ - ../crypto/bn/bn_recp.o \ - ../crypto/bn/bn_shift.o \ - ../crypto/bn/bn_sqr.o \ - ../crypto/bn/bn_word.o \ - ../crypto/bn/bn_x931p.o \ - ../crypto/buffer/buf_str.o \ - ../crypto/cmac/cmac.o \ - ../crypto/cryptlib.o \ - ../crypto/des/cfb64ede.o \ - ../crypto/des/cfb64enc.o \ - ../crypto/des/cfb_enc.o \ - ../crypto/des/ecb3_enc.o \ - ../crypto/des/ofb64ede.o \ - ../crypto/des/fcrypt.o \ - ../crypto/des/set_key.o \ - ../crypto/dh/dh_check.o \ - ../crypto/dh/dh_gen.o \ - ../crypto/dh/dh_key.o \ - ../crypto/dsa/dsa_gen.o \ - ../crypto/dsa/dsa_key.o \ - ../crypto/dsa/dsa_ossl.o \ - ../crypto/ec/ec_curve.o \ - ../crypto/ec/ec_cvt.o \ - ../crypto/ec/ec_key.o \ - ../crypto/ec/ec_lib.o \ - ../crypto/ec/ecp_mont.o \ - ../crypto/ec/ec_mult.o \ - ../crypto/ec/ecp_nist.o \ - ../crypto/ec/ecp_smpl.o \ - ../crypto/ec/ec2_mult.o \ - ../crypto/ec/ec2_smpl.o \ - ../crypto/ecdh/ech_key.o \ - ../crypto/ecdh/ech_ossl.o \ - ../crypto/ecdsa/ecs_ossl.o \ - ../crypto/evp/e_aes.o \ - ../crypto/evp/e_des3.o \ - ../crypto/evp/e_null.o \ - ../crypto/evp/m_sha1.o \ - ../crypto/evp/m_dss1.o \ - ../crypto/evp/m_dss.o \ - ../crypto/evp/m_ecdsa.o \ - ../crypto/hmac/hmac.o \ - ../crypto/modes/cbc128.o \ - ../crypto/modes/ccm128.o \ - ../crypto/modes/cfb128.o \ - ../crypto/modes/ctr128.o \ - ../crypto/modes/gcm128.o \ - ../crypto/modes/ofb128.o \ - ../crypto/modes/xts128.o \ - ../crypto/rsa/rsa_eay.o \ - ../crypto/rsa/rsa_gen.o \ - ../crypto/rsa/rsa_crpt.o \ - ../crypto/rsa/rsa_none.o \ - ../crypto/rsa/rsa_oaep.o \ - ../crypto/rsa/rsa_pk1.o \ - ../crypto/rsa/rsa_pss.o \ - ../crypto/rsa/rsa_ssl.o \ - ../crypto/rsa/rsa_x931.o \ - ../crypto/rsa/rsa_x931g.o \ - ../crypto/sha/sha1dgst.o \ - ../crypto/sha/sha256.o \ - ../crypto/sha/sha512.o \ - ../crypto/thr_id.o \ - ../crypto/uid.o - -sub_all: build_all -build_all: build_libs - -build_libs: build_crypto build_fips - -build_fips: - @dir=fips; target=all; [ -z "$(FIPSCANLIB)" ] || $(BUILD_ONE_CMD) - -build_crypto: - if [ -n "$(FIPSCANLIB)" ]; then \ - EXCL_OBJ='$(AES_ENC) $(BN_ASM) $(DES_ENC) $(CPUID_OBJ) $(SHA1_ASM_OBJ) $(MODES_ASM_OBJ) $(FIPS_EX_OBJ)' ; export EXCL_OBJ ; \ - ARX='$(PERL) $${TOP}/util/arx.pl $(AR)' ; \ - else \ - ARX='${AR}' ; \ - fi ; export ARX ; \ - if [ $(FIPSCANISTERINTERNAL) = "y" ]; then \ - AS='$(PERL) $${TOP}/util/fipsas.pl $${TOP} $${<} $(CC)' ; \ - else \ - AS='$(CC) -c' ; \ - fi ; export AS ; \ - dir=crypto; target=fips; $(BUILD_ONE_CMD) -build_ssl: - @dir=ssl; target=all; $(BUILD_ONE_CMD) -build_engines: - @dir=engines; target=all; $(BUILD_ONE_CMD) -build_apps: - @dir=apps; target=all; $(BUILD_ONE_CMD) -build_tests: - @dir=test; target=fipsexe; $(BUILD_ONE_CMD) -build_algvs: - @dir=test; target=fipsalgvs; $(BUILD_ONE_CMD) -build_tools: - @dir=tools; target=all; $(BUILD_ONE_CMD) - -all_testapps: build_libs build_testapps -build_testapps: - @dir=crypto; target=testapps; $(BUILD_ONE_CMD) - -libcrypto$(SHLIB_EXT): libcrypto.a build_fips - @if [ "$(SHLIB_TARGET)" != "" ]; then \ - if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \ - FIPSLD_CC="$(CC)"; CC=fips/fipsld; \ - export CC FIPSLD_CC; \ - fi; \ - $(MAKE) SHLIBDIRS=crypto build-shared; \ - else \ - echo "There's no support for shared libraries on this platform" >&2; \ - exit 1; \ - fi - -libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a - @if [ "$(SHLIB_TARGET)" != "" ]; then \ - $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \ - else \ - echo "There's no support for shared libraries on this platform" >&2; \ - exit 1; \ - fi - -clean-shared: - @set -e; for i in $(SHLIBDIRS); do \ - if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \ - tmp="$(SHARED_LIBS_LINK_EXTS)"; \ - for j in $${tmp:-x}; do \ - ( set -x; rm -f lib$$i$$j ); \ - done; \ - fi; \ - ( set -x; rm -f lib$$i$(SHLIB_EXT) ); \ - if [ "$(PLATFORM)" = "Cygwin" ]; then \ - ( set -x; rm -f cyg$$i$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \ - fi; \ - done - -link-shared: - @ set -e; for i in $(SHLIBDIRS); do \ - $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \ - LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \ - LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \ - symlink.$(SHLIB_TARGET); \ - libs="$$libs -l$$i"; \ - done - -build-shared: do_$(SHLIB_TARGET) link-shared - -do_$(SHLIB_TARGET): - @ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \ - if [ "$$i" = "ssl" -a -n "$(LIBKRB5)" ]; then \ - libs="$(LIBKRB5) $$libs"; \ - fi; \ - $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \ - LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \ - LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \ - LIBDEPS="$$libs $(EX_LIBS)" \ - link_a.$(SHLIB_TARGET); \ - libs="-l$$i $$libs"; \ - done - -libcrypto.pc: Makefile - @ ( echo 'prefix=$(INSTALLTOP)'; \ - echo 'exec_prefix=$${prefix}'; \ - echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \ - echo 'includedir=$${prefix}/include'; \ - echo ''; \ - echo 'Name: OpenSSL-libcrypto'; \ - echo 'Description: OpenSSL cryptography library'; \ - echo 'Version: '$(VERSION); \ - echo 'Requires: '; \ - echo 'Libs: -L$${libdir} -lcrypto $(EX_LIBS)'; \ - echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > libcrypto.pc - -libssl.pc: Makefile - @ ( echo 'prefix=$(INSTALLTOP)'; \ - echo 'exec_prefix=$${prefix}'; \ - echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \ - echo 'includedir=$${prefix}/include'; \ - echo ''; \ - echo 'Name: OpenSSL'; \ - echo 'Description: Secure Sockets Layer and cryptography libraries'; \ - echo 'Version: '$(VERSION); \ - echo 'Requires: '; \ - echo 'Libs: -L$${libdir} -lssl -lcrypto $(EX_LIBS)'; \ - echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > libssl.pc - -openssl.pc: Makefile - @ ( echo 'prefix=$(INSTALLTOP)'; \ - echo 'exec_prefix=$${prefix}'; \ - echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \ - echo 'includedir=$${prefix}/include'; \ - echo ''; \ - echo 'Name: OpenSSL'; \ - echo 'Description: Secure Sockets Layer and cryptography libraries and tools'; \ - echo 'Version: '$(VERSION); \ - echo 'Requires: '; \ - echo 'Libs: -L$${libdir} -lssl -lcrypto $(EX_LIBS)'; \ - echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > openssl.pc - -Makefile: Makefile.fips Configure config - @echo "Makefile is older than Makefile.org, Configure or config." - @echo "Reconfigure the source tree (via './config' or 'perl Configure'), please." - @false - -libclean: - rm -f *.map *.so *.so.* *.dll engines/*.so engines/*.dll *.a engines/*.a */lib */*/lib - -clean: libclean - rm -f shlib/*.o *.o core a.out fluff testlog make.log cctest cctest.c - @set -e; target=clean; $(RECURSIVE_BUILD_CMD) - rm -f $(LIBS) - rm -f openssl.pc libssl.pc libcrypto.pc - rm -f speed.* .pure - rm -f $(TARFILE) - @set -e; for i in $(ONEDIRS) ;\ - do \ - rm -fr $$i/*; \ - done - -makefile.one: files - $(PERL) util/mk1mf.pl >makefile.one; \ - sh util/do_ms.sh - -files: - $(PERL) $(TOP)/util/files.pl Makefile > $(TOP)/MINFO - @set -e; target=files; $(RECURSIVE_BUILD_CMD) - -links: - @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl - @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER) - @set -e; dir=fips target=links; $(RECURSIVE_BUILD_CMD) - @(cd crypto ; SDIRS='$(LINKDIRS)' $(MAKE) -e links) - -gentests: - @(cd test && echo "generating dummy tests (if needed)..." && \ - $(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on generate ); - -dclean: - rm -rf *.bak include/openssl certs/.0 - @set -e; target=dclean; $(RECURSIVE_BUILD_CMD) - -test: tests - -tests: - @echo "Not implemented in FIPS build" ; false - -report: - @$(PERL) util/selftest.pl - -depend: - @echo make depend not supported ; false - -lint: - @set -e; target=lint; $(RECURSIVE_BUILD_CMD) - -tags: - rm -f TAGS - find . -name '[^.]*.[ch]' | xargs etags -a - -errors: - $(PERL) util/mkerr.pl -recurse -write - (cd engines; $(MAKE) PERL=$(PERL) errors) - $(PERL) util/ck_errf.pl -strict */*.c */*/*.c - -stacks: - $(PERL) util/mkstack.pl -write - -util/libeay.num:: - $(PERL) util/mkdef.pl crypto update - -util/ssleay.num:: - $(PERL) util/mkdef.pl ssl update - -crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h - $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h -crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num - $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h -crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num - $(PERL) crypto/objects/objxref.pl crypto/objects/obj_mac.num crypto/objects/obj_xref.txt >crypto/objects/obj_xref.h - -apps/openssl-vms.cnf: apps/openssl.cnf - $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf - -crypto/bn/bn_prime.h: crypto/bn/bn_prime.pl - $(PERL) crypto/bn/bn_prime.pl >crypto/bn/bn_prime.h - - -TABLE: Configure - (echo 'Output of `Configure TABLE'"':"; \ - $(PERL) Configure TABLE) > TABLE - -update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend - -# Build distribution tar-file. As the list of files returned by "find" is -# pretty long, on several platforms a "too many arguments" error or similar -# would occur. Therefore the list of files is temporarily stored into a file -# and read directly, requiring GNU-Tar. Call "make TAR=gtar dist" if the normal -# tar does not support the --files-from option. -tar: - find . -type d -print | xargs chmod 755 - find . -type f -print | xargs chmod a+r - find . -type f -perm -0100 -print | xargs chmod a+x - find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE | $(BUILDENV) LINKDIRS='$(LINKDIRS)' $(PERL) util/fipsdist.pl | sort > ../$(TARFILE).list; \ - $(TAR) $(TARFLAGS) --files-from ../$(TARFILE).list -cvf - | \ - tardy --user_number=0 --user_name=openssl \ - --group_number=0 --group_name=openssl \ - --prefix=openssl-$(VERSION) - |\ - gzip --best >../$(TARFILE).gz; \ - rm -f ../$(TARFILE).list; \ - ls -l ../$(TARFILE).gz - -tar-snap: - @$(TAR) $(TARFLAGS) -cvf - \ - `find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE \! -name '*.o' \! -name '*.a' \! -name '*.so' \! -name '*.so.*' \! -name 'openssl' \! -name '*test' \! -name '.#*' \! -name '*~' | sort` |\ - tardy --user_number=0 --user_name=openssl \ - --group_number=0 --group_name=openssl \ - --prefix=openssl-$(VERSION) - > ../$(TARFILE);\ - ls -l ../$(TARFILE) - -dist: - $(PERL) Configure dist fipscanisteronly - @$(MAKE) dist_pem_h - @$(MAKE) SDIRS='$(SDIRS)' clean - @$(MAKE) -f Makefile.fips TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' tar - -dist_pem_h: - (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean) - -install: all install_sw - -install_sw: - @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \ - $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \ - $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl - @set -e; headerlist="$(EXHEADER)"; for i in $$headerlist;\ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done; - @set -e; target=install; $(RECURSIVE_BUILD_CMD) - -# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/fips/Makefile b/fips/Makefile deleted file mode 100644 index fb5083810a..0000000000 --- a/fips/Makefile +++ /dev/null @@ -1,247 +0,0 @@ -# -# OpenSSL/crypto/Makefile -# - -DIR= fips -TOP= .. -CC= cc -INCLUDE= -I. -I$(TOP) -I../include -# INCLUDES targets sudbirs! -INCLUDES= -I.. -I../.. -I../../include -CFLAG= -g -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -RM= rm -f -AR= ar r -ARD= ar d -TEST= fips_test_suite.c -FIPS_TVDIR= testvectors -FIPS_TVOK= $$HOME/fips/tv.ok - -FIPSCANLOC= $(FIPSLIBDIR)fipscanister.o - -RECURSIVE_MAKE= [ -n "$(FDIRS)" ] && for i in $(FDIRS) ; do \ - (cd $$i && echo "making $$target in $(DIR)/$$i..." && \ - $(MAKE) -e TOP=../.. DIR=$$i INCLUDES='${INCLUDES}' $$target ) || exit 1; \ - done; - -PEX_LIBS= -EX_LIBS= - -CFLAGS= $(INCLUDE) $(CFLAG) -DHMAC_EXT=\"$${HMAC_EXT:-sha1}\" -ASFLAGS= $(INCLUDE) $(ASFLAG) -AFLAGS=$(ASFLAGS) - -LIBS= - -FDIRS=sha rand des aes dsa ecdh ecdsa rsa dh cmac hmac utl - -GENERAL=Makefile README fips-lib.com install.com - -LIB= $(TOP)/libcrypto.a -SHARED_LIB= $(FIPSCANLIB)$(SHLIB_EXT) -LIBSRC=fips.c fips_post.c -LIBOBJ=fips.o fips_post.o - -FIPS_OBJ_LISTS=sha/lib hmac/lib rand/lib des/lib aes/lib dsa/lib rsa/lib \ - dh/lib utl/lib ecdsa/lib ecdh/lib cmac/lib - -SRC= $(LIBSRC) - -EXHEADER=fips.h fipssyms.h -HEADER=$(EXHEADER) fips_utl.h fips_locl.h fips_auth.h -EXE=fipsld fips_standalone_sha1 - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - @(cd ..; $(MAKE) DIRS=$(DIR) all) - -testapps: - @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi - -all: - @if [ -n "$(FIPSCANISTERONLY)" ]; then \ - $(MAKE) -e subdirs lib ; \ - elif [ -z "$(FIPSLIBDIR)" ]; then \ - $(MAKE) -e subdirs lib fips_premain_dso$(EXE_EXT); \ - else \ - $(MAKE) -e lib fips_premain_dso$(EXE_EXT) fips_standalone_sha1$(EXE_EXT); \ - fi - -# Idea behind fipscanister.o is to "seize" the sequestered code between -# known symbols for fingerprinting purposes, which would be commonly -# done with ld -r start.o ... end.o. The latter however presents a minor -# challenge on multi-ABI platforms. As just implied, we'd rather use ld, -# but the trouble is that we don't generally know how ABI-selection -# compiler flag is translated to corresponding linker flag. All compiler -# drivers seem to recognize -r flag and pass it down to linker, but some -# of them, including gcc, erroneously add -lc, as well as run-time -# components, such as crt1.o and alike. Fortunately among those vendor -# compilers which were observed to misinterpret -r flag multi-ABI ones -# are equipped with smart linkers, which don't require any ABI-selection -# flag and simply assume that all objects are of the same type as first -# one in command line. So the idea is to identify gcc and deficient -# vendor compiler drivers... - -fipscanister.o: fips_start.o $(LIBOBJ) $(FIPS_OBJ_LISTS) fips_end.o - FIPS_ASM=""; \ - list="$(BN_ASM)"; for i in $$list; do FIPS_ASM="$$FIPS_ASM ../crypto/bn/$$i" ; done; \ - list="$(AES_ENC)"; for i in $$list; do FIPS_ASM="$$FIPS_ASM ../crypto/aes/$$i" ; done; \ - list="$(DES_ENC)"; for i in $$list; do FIPS_ASM="$$FIPS_ASM ../crypto/des/$$i" ; done; \ - list="$(SHA1_ASM_OBJ)"; for i in $$list; do FIPS_ASM="$$FIPS_ASM ../crypto/sha/$$i" ; done; \ - list="$(MODES_ASM_OBJ)"; for i in $$list; do FIPS_ASM="$$FIPS_ASM ../crypto/modes/$$i" ; done; \ - CPUID=""; \ - list="$(CPUID_OBJ)"; for i in $$list; do CPUID="$$CPUID ../crypto/$$i" ; done; \ - objs="fips_start.o $(LIBOBJ) $(FIPS_EX_OBJ) $$CPUID $$FIPS_ASM"; \ - for i in $(FIPS_OBJ_LISTS); do \ - dir=`dirname $$i`; script="s|^|$$dir/|;s| | $$dir/|g"; \ - objs="$$objs `sed "$$script" $$i`"; \ - done; \ - objs="$$objs fips_end.o" ; \ - os="`(uname -s) 2>/dev/null`"; cflags="$(CFLAGS)"; \ - case "$$os" in \ - AIX) cflags="$$cflags -Wl,-bnoobjreorder" ;; \ - HP-UX) cflags="$$cflags -Wl,+sectionmerge" ;; \ - esac; \ - if [ -n "${FIPS_SITE_LD}" ]; then \ - set -x; ${FIPS_SITE_LD} -r -o $@ $$objs; \ - elif $(CC) -dumpversion >/dev/null 2>&1; then \ - set -x; $(CC) $$cflags -r -nostdlib -o $@ $$objs ; \ - else case "$$os" in \ - OSF1|SunOS) set -x; /usr/ccs/bin/ld -r -o $@ $$objs ;; \ - *) set -x; $(CC) $$cflags -r -o $@ $$objs ;; \ - esac fi - ./fips_standalone_sha1$(EXE_EXT) fipscanister.o > fipscanister.o.sha1 - -# If another exception is immediately required, assign approprite -# site-specific ld command to FIPS_SITE_LD environment variable. - -fips_start.o: fips_canister.c - $(CC) $(CFLAGS) -DFIPS_START -c -o $@ fips_canister.c -fips_end.o: fips_canister.c - $(CC) $(CFLAGS) -DFIPS_END -c -o $@ fips_canister.c -fips_premain_dso$(EXE_EXT): fips_premain.c - $(CC) $(CFLAGS) -DFINGERPRINT_PREMAIN_DSO_LOAD -o $@ fips_premain.c \ - $(FIPSLIBDIR)fipscanister.o ../libcrypto.a $(EX_LIBS) -# this is executed only when linking with external fipscanister.o -fips_standalone_sha1$(EXE_EXT): sha/fips_standalone_sha1.c - if [ -z "$(HOSTCC)" ] ; then \ - $(CC) $(CFLAGS) -DFIPSCANISTER_O -o $@ sha/fips_standalone_sha1.c $(FIPSLIBDIR)fipscanister.o $(EX_LIBS) ; \ - else \ - $(HOSTCC) $(HOSTCFLAGS) -o $ $@ -I../include -I../crypto sha/fips_standalone_sha1.c ../crypto/sha/sha1dgst.c ; \ - fi - -subdirs: - @target=all; $(RECURSIVE_MAKE) - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - @target=files; $(RECURSIVE_MAKE) - -links: - @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl ../test $(TEST) - @target=links; $(RECURSIVE_MAKE) - -# lib: and $(LIB): are splitted to avoid end-less loop -lib: $(LIB) - if [ "$(FIPSCANISTERINTERNAL)" = "n" -a -n "$(FIPSCANLOC)" ]; then $(AR) ../$(FIPSCANLIB).a $(FIPSCANLOC); fi - @touch lib - -$(LIB): $(FIPSLIBDIR)fipscanister.o - $(AR) $(LIB) $(FIPSLIBDIR)fipscanister.o - $(RANLIB) $(LIB) || echo Never mind. - -$(FIPSCANLIB): $(FIPSCANLOC) - $(AR) ../$(FIPSCANLIB).a $(FIPSCANLOC) - if [ "$(FIPSCANLIB)" = "libfips" ]; then \ - $(AR) $(LIB) $(FIPSCANLOC) ; \ - $(RANLIB) $(LIB) || echo Never Mind. ; \ - fi - $(RANLIB) ../$(FIPSCANLIB).a || echo Never mind. - @touch lib - -shared: lib subdirs fips_premain_dso$(EXE_EXT) - -libs: - @target=lib; $(RECURSIVE_MAKE) - -fips_test: top - @target=fips_test; $(RECURSIVE_MAKE) - -fips_test_diff: - @if diff -b -B -I '^\#' -cr -X fips-nodiff.txt $(FIPS_TVDIR) $(FIPS_TVOK) ; then \ - echo "FIPS diff OK" ; \ - else \ - echo "***FIPS DIFF ERROR***" ; exit 1 ; \ - fi - - -install: - @[ -n "$(INSTALLTOP)" ] # should be set by top Makefile... - @headerlist="$(EXHEADER)"; for i in $$headerlist ;\ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done; - @target=install; $(RECURSIVE_MAKE) - for i in $(EXE) ; \ - do \ - echo "installing $$i"; \ - cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \ - chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i; \ - done - cp -p -f $(FIPSLIBDIR)fipscanister.o $(FIPSLIBDIR)fipscanister.o.sha1 \ - $(FIPSLIBDIR)fips_premain.c $(FIPSLIBDIR)fips_premain.c.sha1 \ - $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/; \ - chmod 0444 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/fips* - -lint: - @target=lint; $(RECURSIVE_MAKE) - -depend: - @[ -z "$(THIS)" ] || $(MAKEDEPEND) -- $(CFLAG) $(INCLUDE) $(DEPFLAG) -- $(PROGS) $(LIBSRC) - @[ -z "$(THIS)" ] || (set -e; target=depend; $(RECURSIVE_MAKE) ) - @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi - -clean: - rm -f fipscanister.o.sha1 fips_premain_dso$(EXE_EXT) fips_standalone_sha1$(EXE_EXT) \ - *.s *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff - @target=clean; $(RECURSIVE_MAKE) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - @target=dclean; $(RECURSIVE_MAKE) - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips.o: ../include/openssl/aes.h ../include/openssl/asn1.h -fips.o: ../include/openssl/bio.h ../include/openssl/crypto.h -fips.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h -fips.o: ../include/openssl/ec.h ../include/openssl/ecdsa.h -fips.o: ../include/openssl/err.h ../include/openssl/evp.h -fips.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h -fips.o: ../include/openssl/hmac.h ../include/openssl/lhash.h -fips.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h -fips.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h -fips.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h -fips.o: ../include/openssl/rsa.h ../include/openssl/safestack.h -fips.o: ../include/openssl/stack.h ../include/openssl/symhacks.h fips.c -fips.o: fips_locl.h -fips_post.o: ../include/openssl/aes.h ../include/openssl/asn1.h -fips_post.o: ../include/openssl/bio.h ../include/openssl/crypto.h -fips_post.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h -fips_post.o: ../include/openssl/ec.h ../include/openssl/ecdsa.h -fips_post.o: ../include/openssl/err.h ../include/openssl/evp.h -fips_post.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h -fips_post.o: ../include/openssl/hmac.h ../include/openssl/lhash.h -fips_post.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h -fips_post.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h -fips_post.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h -fips_post.o: ../include/openssl/rsa.h ../include/openssl/safestack.h -fips_post.o: ../include/openssl/stack.h ../include/openssl/symhacks.h -fips_post.o: fips_locl.h fips_post.c diff --git a/fips/aes/Makefile b/fips/aes/Makefile deleted file mode 100644 index b9702c587d..0000000000 --- a/fips/aes/Makefile +++ /dev/null @@ -1,126 +0,0 @@ -# -# OpenSSL/fips/aes/Makefile -# - -DIR= aes -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -ASFLAGS= $(INCLUDES) $(ASFLAG) -AFLAGS= $(ASFLAGS) - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST=fips_aesavs.c fips_gcmtest.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC=fips_aes_selftest.c -LIBOBJ=fips_aes_selftest.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -fips_test: - -find ../testvectors/aes/req -name '*.req' > testlist - -rm -rf ../testvectors/aes/rsp - mkdir ../testvectors/aes/rsp - if [ -s testlist ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_aesavs -d testlist; fi - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) \ - $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff testlist -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_aes_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_aes_selftest.o: ../../include/openssl/crypto.h -fips_aes_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h -fips_aes_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_aes_selftest.o: ../../include/openssl/lhash.h -fips_aes_selftest.o: ../../include/openssl/obj_mac.h -fips_aes_selftest.o: ../../include/openssl/objects.h -fips_aes_selftest.o: ../../include/openssl/opensslconf.h -fips_aes_selftest.o: ../../include/openssl/opensslv.h -fips_aes_selftest.o: ../../include/openssl/ossl_typ.h -fips_aes_selftest.o: ../../include/openssl/safestack.h -fips_aes_selftest.o: ../../include/openssl/stack.h -fips_aes_selftest.o: ../../include/openssl/symhacks.h ../fips_locl.h -fips_aes_selftest.o: fips_aes_selftest.c -fips_aesavs.o: ../../e_os.h ../../include/openssl/aes.h -fips_aesavs.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_aesavs.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_aesavs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_aesavs.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_aesavs.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_aesavs.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_aesavs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_aesavs.o: ../../include/openssl/opensslconf.h -fips_aesavs.o: ../../include/openssl/opensslv.h -fips_aesavs.o: ../../include/openssl/ossl_typ.h -fips_aesavs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_aesavs.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_aesavs.c -fips_gcmtest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_gcmtest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_gcmtest.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h -fips_gcmtest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_gcmtest.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_gcmtest.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_gcmtest.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_gcmtest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_gcmtest.o: ../../include/openssl/opensslconf.h -fips_gcmtest.o: ../../include/openssl/opensslv.h -fips_gcmtest.o: ../../include/openssl/ossl_typ.h -fips_gcmtest.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_gcmtest.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_gcmtest.c diff --git a/fips/aes/fips_aes_selftest.c b/fips/aes/fips_aes_selftest.c deleted file mode 100644 index c31a266d42..0000000000 --- a/fips/aes/fips_aes_selftest.c +++ /dev/null @@ -1,387 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2003 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include "fips_locl.h" - -#ifdef OPENSSL_FIPS -__fips_constseg -static const struct - { - const unsigned char key[16]; - const unsigned char plaintext[16]; - const unsigned char ciphertext[16]; - } tests[]= - { - { - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, - 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F }, - { 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77, - 0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF }, - { 0x69,0xC4,0xE0,0xD8,0x6A,0x7B,0x04,0x30, - 0xD8,0xCD,0xB7,0x80,0x70,0xB4,0xC5,0x5A }, - }, - }; - -int FIPS_selftest_aes() - { - int n; - int ret = 0; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - - for(n=0 ; n < 1 ; ++n) - { - if (fips_cipher_test(FIPS_TEST_CIPHER, &ctx, EVP_aes_128_ecb(), - tests[n].key, NULL, - tests[n].plaintext, - tests[n].ciphertext, - 16) <= 0) - goto err; - } - ret = 1; - err: - FIPS_cipher_ctx_cleanup(&ctx); - if (ret == 0) - FIPSerr(FIPS_F_FIPS_SELFTEST_AES,FIPS_R_SELFTEST_FAILED); - return ret; - } - -/* AES-CCM test data from NIST public test vectors */ - -__fips_constseg -static const unsigned char ccm_key[] = { - 0xce,0xb0,0x09,0xae,0xa4,0x45,0x44,0x51,0xfe,0xad,0xf0,0xe6, - 0xb3,0x6f,0x45,0x55,0x5d,0xd0,0x47,0x23,0xba,0xa4,0x48,0xe8 -}; -__fips_constseg -static const unsigned char ccm_nonce[] = { - 0x76,0x40,0x43,0xc4,0x94,0x60,0xb7 -}; -__fips_constseg -static const unsigned char ccm_adata[] = { - 0x6e,0x80,0xdd,0x7f,0x1b,0xad,0xf3,0xa1,0xc9,0xab,0x25,0xc7, - 0x5f,0x10,0xbd,0xe7,0x8c,0x23,0xfa,0x0e,0xb8,0xf9,0xaa,0xa5, - 0x3a,0xde,0xfb,0xf4,0xcb,0xf7,0x8f,0xe4 -}; -__fips_constseg -static const unsigned char ccm_pt[] = { - 0xc8,0xd2,0x75,0xf9,0x19,0xe1,0x7d,0x7f,0xe6,0x9c,0x2a,0x1f, - 0x58,0x93,0x9d,0xfe,0x4d,0x40,0x37,0x91,0xb5,0xdf,0x13,0x10 -}; -__fips_constseg -static const unsigned char ccm_ct[] = { - 0x8a,0x0f,0x3d,0x82,0x29,0xe4,0x8e,0x74,0x87,0xfd,0x95,0xa2, - 0x8a,0xd3,0x92,0xc8,0x0b,0x36,0x81,0xd4,0xfb,0xc7,0xbb,0xfd -}; -__fips_constseg -static const unsigned char ccm_tag[] = { - 0x2d,0xd6,0xef,0x1c,0x45,0xd4,0xcc,0xb7,0x23,0xdc,0x07,0x44, - 0x14,0xdb,0x50,0x6d -}; - -int FIPS_selftest_aes_ccm(void) - { - int ret = 0, do_corrupt = 0; - unsigned char out[128], tag[16]; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - memset(out, 0, sizeof(out)); - if (!fips_post_started(FIPS_TEST_CCM, 0, 0)) - return 1; - if (!fips_post_corrupt(FIPS_TEST_CCM, 0, NULL)) - do_corrupt = 1; - if (!FIPS_cipherinit(&ctx, EVP_aes_192_ccm(), NULL, NULL, 1)) - goto err; - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_SET_IVLEN, - sizeof(ccm_nonce), NULL)) - goto err; - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_SET_TAG, - sizeof(ccm_tag), NULL)) - goto err; - if (!FIPS_cipherinit(&ctx, NULL, ccm_key, ccm_nonce, 1)) - goto err; - if (FIPS_cipher(&ctx, NULL, NULL, sizeof(ccm_pt)) != sizeof(ccm_pt)) - goto err; - if (FIPS_cipher(&ctx, NULL, ccm_adata, sizeof(ccm_adata)) < 0) - goto err; - if (FIPS_cipher(&ctx, out, ccm_pt, sizeof(ccm_pt)) != sizeof(ccm_ct)) - goto err; - - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_GET_TAG, 16, tag)) - goto err; - if (memcmp(tag, ccm_tag, sizeof(ccm_tag)) - || memcmp(out, ccm_ct, sizeof(ccm_ct))) - goto err; - - memset(out, 0, sizeof(out)); - - /* Modify expected tag value */ - if (do_corrupt) - tag[0]++; - - if (!FIPS_cipherinit(&ctx, EVP_aes_192_ccm(), NULL, NULL, 0)) - goto err; - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_SET_IVLEN, - sizeof(ccm_nonce), NULL)) - goto err; - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_SET_TAG, 16, tag)) - goto err; - if (!FIPS_cipherinit(&ctx, NULL, ccm_key, ccm_nonce, 0)) - goto err; - if (FIPS_cipher(&ctx, NULL, NULL, sizeof(ccm_ct)) != sizeof(ccm_ct)) - goto err; - if (FIPS_cipher(&ctx, NULL, ccm_adata, sizeof(ccm_adata)) < 0) - goto err; - if (FIPS_cipher(&ctx, out, ccm_ct, sizeof(ccm_ct)) != sizeof(ccm_pt)) - goto err; - - if (memcmp(out, ccm_pt, sizeof(ccm_pt))) - goto err; - - ret = 1; - - err: - FIPS_cipher_ctx_cleanup(&ctx); - - if (ret == 0) - { - fips_post_failed(FIPS_TEST_CCM, 0, NULL); - FIPSerr(FIPS_F_FIPS_SELFTEST_AES_CCM,FIPS_R_SELFTEST_FAILED); - return 0; - } - else - return fips_post_success(FIPS_TEST_CCM, 0, NULL); - - } - -/* AES-GCM test data from NIST public test vectors */ - -__fips_constseg -static const unsigned char gcm_key[] = { - 0xee,0xbc,0x1f,0x57,0x48,0x7f,0x51,0x92,0x1c,0x04,0x65,0x66, - 0x5f,0x8a,0xe6,0xd1,0x65,0x8b,0xb2,0x6d,0xe6,0xf8,0xa0,0x69, - 0xa3,0x52,0x02,0x93,0xa5,0x72,0x07,0x8f -}; -__fips_constseg -static const unsigned char gcm_iv[] = { - 0x99,0xaa,0x3e,0x68,0xed,0x81,0x73,0xa0,0xee,0xd0,0x66,0x84 -}; -__fips_constseg -static const unsigned char gcm_pt[] = { - 0xf5,0x6e,0x87,0x05,0x5b,0xc3,0x2d,0x0e,0xeb,0x31,0xb2,0xea, - 0xcc,0x2b,0xf2,0xa5 -}; -__fips_constseg -static const unsigned char gcm_aad[] = { - 0x4d,0x23,0xc3,0xce,0xc3,0x34,0xb4,0x9b,0xdb,0x37,0x0c,0x43, - 0x7f,0xec,0x78,0xde -}; -__fips_constseg -static const unsigned char gcm_ct[] = { - 0xf7,0x26,0x44,0x13,0xa8,0x4c,0x0e,0x7c,0xd5,0x36,0x86,0x7e, - 0xb9,0xf2,0x17,0x36 -}; -__fips_constseg -static const unsigned char gcm_tag[] = { - 0x67,0xba,0x05,0x10,0x26,0x2a,0xe4,0x87,0xd7,0x37,0xee,0x62, - 0x98,0xf7,0x7e,0x0c -}; - -int FIPS_selftest_aes_gcm(void) - { - int ret = 0, do_corrupt = 0; - unsigned char out[128], tag[16]; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - memset(out, 0, sizeof(out)); - memset(tag, 0, sizeof(tag)); - if (!fips_post_started(FIPS_TEST_GCM, 0, 0)) - return 1; - if (!fips_post_corrupt(FIPS_TEST_GCM, 0, NULL)) - do_corrupt = 1; - if (!FIPS_cipherinit(&ctx, EVP_aes_256_gcm(), NULL, NULL, 1)) - goto err; - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, - sizeof(gcm_iv), NULL)) - goto err; - if (!FIPS_cipherinit(&ctx, NULL, gcm_key, gcm_iv, 1)) - goto err; - if (FIPS_cipher(&ctx, NULL, gcm_aad, sizeof(gcm_aad)) < 0) - goto err; - if (FIPS_cipher(&ctx, out, gcm_pt, sizeof(gcm_pt)) != sizeof(gcm_ct)) - goto err; - if (FIPS_cipher(&ctx, NULL, NULL, 0) < 0) - goto err; - - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_GET_TAG, 16, tag)) - goto err; - - if (memcmp(tag, gcm_tag, 16) || memcmp(out, gcm_ct, 16)) - goto err; - - memset(out, 0, sizeof(out)); - - /* Modify expected tag value */ - if (do_corrupt) - tag[0]++; - - if (!FIPS_cipherinit(&ctx, EVP_aes_256_gcm(), NULL, NULL, 0)) - goto err; - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, - sizeof(gcm_iv), NULL)) - goto err; - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_SET_TAG, 16, tag)) - goto err; - if (!FIPS_cipherinit(&ctx, NULL, gcm_key, gcm_iv, 0)) - goto err; - if (FIPS_cipher(&ctx, NULL, gcm_aad, sizeof(gcm_aad)) < 0) - goto err; - if (FIPS_cipher(&ctx, out, gcm_ct, sizeof(gcm_ct)) != sizeof(gcm_pt)) - goto err; - if (FIPS_cipher(&ctx, NULL, NULL, 0) < 0) - goto err; - - if (memcmp(out, gcm_pt, 16)) - goto err; - - ret = 1; - - err: - FIPS_cipher_ctx_cleanup(&ctx); - - if (ret == 0) - { - fips_post_failed(FIPS_TEST_GCM, 0, NULL); - FIPSerr(FIPS_F_FIPS_SELFTEST_AES_GCM,FIPS_R_SELFTEST_FAILED); - return 0; - } - else - return fips_post_success(FIPS_TEST_GCM, 0, NULL); - - } - - -__fips_constseg -static const unsigned char XTS_128_key[] = { - 0xa1,0xb9,0x0c,0xba,0x3f,0x06,0xac,0x35,0x3b,0x2c,0x34,0x38, - 0x76,0x08,0x17,0x62,0x09,0x09,0x23,0x02,0x6e,0x91,0x77,0x18, - 0x15,0xf2,0x9d,0xab,0x01,0x93,0x2f,0x2f -}; -__fips_constseg -static const unsigned char XTS_128_i[] = { - 0x4f,0xae,0xf7,0x11,0x7c,0xda,0x59,0xc6,0x6e,0x4b,0x92,0x01, - 0x3e,0x76,0x8a,0xd5 -}; -__fips_constseg -static const unsigned char XTS_128_pt[] = { - 0xeb,0xab,0xce,0x95,0xb1,0x4d,0x3c,0x8d,0x6f,0xb3,0x50,0x39, - 0x07,0x90,0x31,0x1c -}; -__fips_constseg -static const unsigned char XTS_128_ct[] = { - 0x77,0x8a,0xe8,0xb4,0x3c,0xb9,0x8d,0x5a,0x82,0x50,0x81,0xd5, - 0xbe,0x47,0x1c,0x63 -}; - -__fips_constseg -static const unsigned char XTS_256_key[] = { - 0x1e,0xa6,0x61,0xc5,0x8d,0x94,0x3a,0x0e,0x48,0x01,0xe4,0x2f, - 0x4b,0x09,0x47,0x14,0x9e,0x7f,0x9f,0x8e,0x3e,0x68,0xd0,0xc7, - 0x50,0x52,0x10,0xbd,0x31,0x1a,0x0e,0x7c,0xd6,0xe1,0x3f,0xfd, - 0xf2,0x41,0x8d,0x8d,0x19,0x11,0xc0,0x04,0xcd,0xa5,0x8d,0xa3, - 0xd6,0x19,0xb7,0xe2,0xb9,0x14,0x1e,0x58,0x31,0x8e,0xea,0x39, - 0x2c,0xf4,0x1b,0x08 -}; -__fips_constseg -static const unsigned char XTS_256_i[] = { - 0xad,0xf8,0xd9,0x26,0x27,0x46,0x4a,0xd2,0xf0,0x42,0x8e,0x84, - 0xa9,0xf8,0x75,0x64 -}; -__fips_constseg -static const unsigned char XTS_256_pt[] = { - 0x2e,0xed,0xea,0x52,0xcd,0x82,0x15,0xe1,0xac,0xc6,0x47,0xe8, - 0x10,0xbb,0xc3,0x64,0x2e,0x87,0x28,0x7f,0x8d,0x2e,0x57,0xe3, - 0x6c,0x0a,0x24,0xfb,0xc1,0x2a,0x20,0x2e -}; -__fips_constseg -static const unsigned char XTS_256_ct[] = { - 0xcb,0xaa,0xd0,0xe2,0xf6,0xce,0xa3,0xf5,0x0b,0x37,0xf9,0x34, - 0xd4,0x6a,0x9b,0x13,0x0b,0x9d,0x54,0xf0,0x7e,0x34,0xf3,0x6a, - 0xf7,0x93,0xe8,0x6f,0x73,0xc6,0xd7,0xdb -}; - -int FIPS_selftest_aes_xts() - { - int ret = 1; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - - if (fips_cipher_test(FIPS_TEST_XTS, &ctx, EVP_aes_128_xts(), - XTS_128_key, XTS_128_i, XTS_128_pt, XTS_128_ct, - sizeof(XTS_128_pt)) <= 0) - ret = 0; - - if (fips_cipher_test(FIPS_TEST_XTS, &ctx, EVP_aes_256_xts(), - XTS_256_key, XTS_256_i, XTS_256_pt, XTS_256_ct, - sizeof(XTS_256_pt)) <= 0) - ret = 0; - - FIPS_cipher_ctx_cleanup(&ctx); - if (ret == 0) - FIPSerr(FIPS_F_FIPS_SELFTEST_AES_XTS,FIPS_R_SELFTEST_FAILED); - return ret; - } - -#endif diff --git a/fips/aes/fips_aesavs.c b/fips/aes/fips_aesavs.c deleted file mode 100644 index fecaf990c6..0000000000 --- a/fips/aes/fips_aesavs.c +++ /dev/null @@ -1,938 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2004 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@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. - * - */ -/*--------------------------------------------- - NIST AES Algorithm Validation Suite - Test Program - - Donated to OpenSSL by: - V-ONE Corporation - 20250 Century Blvd, Suite 300 - Germantown, MD 20874 - U.S.A. - ----------------------------------------------*/ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include "e_os.h" - -#ifndef OPENSSL_FIPS - -int main(int argc, char *argv[]) -{ - printf("No FIPS AES support\n"); - return(0); -} - -#else - -#include -#include "fips_utl.h" - -#define AES_BLOCK_SIZE 16 - -#define VERBOSE 0 - -/*-----------------------------------------------*/ - -static int AESTest(EVP_CIPHER_CTX *ctx, - char *amode, int akeysz, unsigned char *aKey, - unsigned char *iVec, - int dir, /* 0 = decrypt, 1 = encrypt */ - unsigned char *plaintext, unsigned char *ciphertext, int len) - { - const EVP_CIPHER *cipher = NULL; - - if (strcasecmp(amode, "CBC") == 0) - { - switch (akeysz) - { - case 128: - cipher = EVP_aes_128_cbc(); - break; - - case 192: - cipher = EVP_aes_192_cbc(); - break; - - case 256: - cipher = EVP_aes_256_cbc(); - break; - } - - } - else if (strcasecmp(amode, "ECB") == 0) - { - switch (akeysz) - { - case 128: - cipher = EVP_aes_128_ecb(); - break; - - case 192: - cipher = EVP_aes_192_ecb(); - break; - - case 256: - cipher = EVP_aes_256_ecb(); - break; - } - } - else if (strcasecmp(amode, "CFB128") == 0) - { - switch (akeysz) - { - case 128: - cipher = EVP_aes_128_cfb128(); - break; - - case 192: - cipher = EVP_aes_192_cfb128(); - break; - - case 256: - cipher = EVP_aes_256_cfb128(); - break; - } - - } - else if (fips_strncasecmp(amode, "OFB", 3) == 0) - { - switch (akeysz) - { - case 128: - cipher = EVP_aes_128_ofb(); - break; - - case 192: - cipher = EVP_aes_192_ofb(); - break; - - case 256: - cipher = EVP_aes_256_ofb(); - break; - } - } - else if(!strcasecmp(amode,"CFB1")) - { - switch (akeysz) - { - case 128: - cipher = EVP_aes_128_cfb1(); - break; - - case 192: - cipher = EVP_aes_192_cfb1(); - break; - - case 256: - cipher = EVP_aes_256_cfb1(); - break; - } - } - else if(!strcasecmp(amode,"CFB8")) - { - switch (akeysz) - { - case 128: - cipher = EVP_aes_128_cfb8(); - break; - - case 192: - cipher = EVP_aes_192_cfb8(); - break; - - case 256: - cipher = EVP_aes_256_cfb8(); - break; - } - } - else - { - printf("Unknown mode: %s\n", amode); - return 0; - } - if (!cipher) - { - printf("Invalid key size: %d\n", akeysz); - return 0; - } - if (FIPS_cipherinit(ctx, cipher, aKey, iVec, dir) <= 0) - return 0; - if(!strcasecmp(amode,"CFB1")) - M_EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPH_FLAG_LENGTH_BITS); - if (dir) - FIPS_cipher(ctx, ciphertext, plaintext, len); - else - FIPS_cipher(ctx, plaintext, ciphertext, len); - return 1; - } - -/*-----------------------------------------------*/ -char *t_tag[2] = {"PLAINTEXT", "CIPHERTEXT"}; -char *t_mode[6] = {"CBC","ECB","OFB","CFB1","CFB8","CFB128"}; -enum Mode {CBC, ECB, OFB, CFB1, CFB8, CFB128}; -enum XCrypt {XDECRYPT, XENCRYPT}; - -/*=============================*/ -/* Monte Carlo Tests */ -/*-----------------------------*/ - -/*#define gb(a,b) (((a)[(b)/8] >> ((b)%8))&1)*/ -/*#define sb(a,b,v) ((a)[(b)/8]=((a)[(b)/8]&~(1 << ((b)%8)))|(!!(v) << ((b)%8)))*/ - -#define gb(a,b) (((a)[(b)/8] >> (7-(b)%8))&1) -#define sb(a,b,v) ((a)[(b)/8]=((a)[(b)/8]&~(1 << (7-(b)%8)))|(!!(v) << (7-(b)%8))) - -static int do_mct(char *amode, - int akeysz, unsigned char *aKey,unsigned char *iVec, - int dir, unsigned char *text, int len, - FILE *rfp) - { - int ret = 0; - unsigned char key[101][32]; - unsigned char iv[101][AES_BLOCK_SIZE]; - unsigned char ptext[1001][32]; - unsigned char ctext[1001][32]; - unsigned char ciphertext[64+4]; - int i, j, n, n1, n2; - int imode = 0, nkeysz = akeysz/8; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - - if (len > 32) - { - printf("\n>>>> Length exceeds 32 for %s %d <<<<\n\n", - amode, akeysz); - return -1; - } - for (imode = 0; imode < 6; ++imode) - if (strcmp(amode, t_mode[imode]) == 0) - break; - if (imode == 6) - { - printf("Unrecognized mode: %s\n", amode); - return -1; - } - - memcpy(key[0], aKey, nkeysz); - if (iVec) - memcpy(iv[0], iVec, AES_BLOCK_SIZE); - if (dir == XENCRYPT) - memcpy(ptext[0], text, len); - else - memcpy(ctext[0], text, len); - for (i = 0; i < 100; ++i) - { - /* printf("Iteration %d\n", i); */ - if (i > 0) - { - fprintf(rfp,"COUNT = %d" RESP_EOL ,i); - OutputValue("KEY",key[i],nkeysz,rfp,0); - if (imode != ECB) /* ECB */ - OutputValue("IV",iv[i],AES_BLOCK_SIZE,rfp,0); - /* Output Ciphertext | Plaintext */ - OutputValue(t_tag[dir^1],dir ? ptext[0] : ctext[0],len,rfp, - imode == CFB1); - } - for (j = 0; j < 1000; ++j) - { - switch (imode) - { - case ECB: - if (j == 0) - { /* set up encryption */ - ret = AESTest(&ctx, amode, akeysz, key[i], NULL, - dir, /* 0 = decrypt, 1 = encrypt */ - ptext[j], ctext[j], len); - if (dir == XENCRYPT) - memcpy(ptext[j+1], ctext[j], len); - else - memcpy(ctext[j+1], ptext[j], len); - } - else - { - if (dir == XENCRYPT) - { - FIPS_cipher(&ctx, ctext[j], ptext[j], len); - memcpy(ptext[j+1], ctext[j], len); - } - else - { - FIPS_cipher(&ctx, ptext[j], ctext[j], len); - memcpy(ctext[j+1], ptext[j], len); - } - } - break; - - case CBC: - case OFB: - case CFB128: - if (j == 0) - { - ret = AESTest(&ctx, amode, akeysz, key[i], iv[i], - dir, /* 0 = decrypt, 1 = encrypt */ - ptext[j], ctext[j], len); - if (dir == XENCRYPT) - memcpy(ptext[j+1], iv[i], len); - else - memcpy(ctext[j+1], iv[i], len); - } - else - { - if (dir == XENCRYPT) - { - FIPS_cipher(&ctx, ctext[j], ptext[j], len); - memcpy(ptext[j+1], ctext[j-1], len); - } - else - { - FIPS_cipher(&ctx, ptext[j], ctext[j], len); - memcpy(ctext[j+1], ptext[j-1], len); - } - } - break; - - case CFB8: - if (j == 0) - { - ret = AESTest(&ctx, amode, akeysz, key[i], iv[i], - dir, /* 0 = decrypt, 1 = encrypt */ - ptext[j], ctext[j], len); - } - else - { - if (dir == XENCRYPT) - FIPS_cipher(&ctx, ctext[j], ptext[j], len); - else - FIPS_cipher(&ctx, ptext[j], ctext[j], len); - } - if (dir == XENCRYPT) - { - if (j < 16) - memcpy(ptext[j+1], &iv[i][j], len); - else - memcpy(ptext[j+1], ctext[j-16], len); - } - else - { - if (j < 16) - memcpy(ctext[j+1], &iv[i][j], len); - else - memcpy(ctext[j+1], ptext[j-16], len); - } - break; - - case CFB1: - if(j == 0) - { -#if 0 - /* compensate for wrong endianness of input file */ - if(i == 0) - ptext[0][0]<<=7; -#endif - ret = AESTest(&ctx,amode,akeysz,key[i],iv[i],dir, - ptext[j], ctext[j], len); - } - else - { - if (dir == XENCRYPT) - FIPS_cipher(&ctx, ctext[j], ptext[j], len); - else - FIPS_cipher(&ctx, ptext[j], ctext[j], len); - - } - if(dir == XENCRYPT) - { - if(j < 128) - sb(ptext[j+1],0,gb(iv[i],j)); - else - sb(ptext[j+1],0,gb(ctext[j-128],0)); - } - else - { - if(j < 128) - sb(ctext[j+1],0,gb(iv[i],j)); - else - sb(ctext[j+1],0,gb(ptext[j-128],0)); - } - break; - } - } - --j; /* reset to last of range */ - /* Output Ciphertext | Plaintext */ - OutputValue(t_tag[dir],dir ? ctext[j] : ptext[j],len,rfp, - imode == CFB1); - fprintf(rfp, RESP_EOL); /* add separator */ - - /* Compute next KEY */ - if (dir == XENCRYPT) - { - if (imode == CFB8) - { /* ct = CT[j-15] || CT[j-14] || ... || CT[j] */ - for (n1 = 0, n2 = nkeysz-1; n1 < nkeysz; ++n1, --n2) - ciphertext[n1] = ctext[j-n2][0]; - } - else if(imode == CFB1) - { - for(n1=0,n2=akeysz-1 ; n1 < akeysz ; ++n1,--n2) - sb(ciphertext,n1,gb(ctext[j-n2],0)); - } - else - switch (akeysz) - { - case 128: - memcpy(ciphertext, ctext[j], 16); - break; - case 192: - memcpy(ciphertext, ctext[j-1]+8, 8); - memcpy(ciphertext+8, ctext[j], 16); - break; - case 256: - memcpy(ciphertext, ctext[j-1], 16); - memcpy(ciphertext+16, ctext[j], 16); - break; - } - } - else - { - if (imode == CFB8) - { /* ct = CT[j-15] || CT[j-14] || ... || CT[j] */ - for (n1 = 0, n2 = nkeysz-1; n1 < nkeysz; ++n1, --n2) - ciphertext[n1] = ptext[j-n2][0]; - } - else if(imode == CFB1) - { - for(n1=0,n2=akeysz-1 ; n1 < akeysz ; ++n1,--n2) - sb(ciphertext,n1,gb(ptext[j-n2],0)); - } - else - switch (akeysz) - { - case 128: - memcpy(ciphertext, ptext[j], 16); - break; - case 192: - memcpy(ciphertext, ptext[j-1]+8, 8); - memcpy(ciphertext+8, ptext[j], 16); - break; - case 256: - memcpy(ciphertext, ptext[j-1], 16); - memcpy(ciphertext+16, ptext[j], 16); - break; - } - } - /* Compute next key: Key[i+1] = Key[i] xor ct */ - for (n = 0; n < nkeysz; ++n) - key[i+1][n] = key[i][n] ^ ciphertext[n]; - - /* Compute next IV and text */ - if (dir == XENCRYPT) - { - switch (imode) - { - case ECB: - memcpy(ptext[0], ctext[j], AES_BLOCK_SIZE); - break; - case CBC: - case OFB: - case CFB128: - memcpy(iv[i+1], ctext[j], AES_BLOCK_SIZE); - memcpy(ptext[0], ctext[j-1], AES_BLOCK_SIZE); - break; - case CFB8: - /* IV[i+1] = ct */ - for (n1 = 0, n2 = 15; n1 < 16; ++n1, --n2) - iv[i+1][n1] = ctext[j-n2][0]; - ptext[0][0] = ctext[j-16][0]; - break; - case CFB1: - for(n1=0,n2=127 ; n1 < 128 ; ++n1,--n2) - sb(iv[i+1],n1,gb(ctext[j-n2],0)); - ptext[0][0]=ctext[j-128][0]&0x80; - break; - } - } - else - { - switch (imode) - { - case ECB: - memcpy(ctext[0], ptext[j], AES_BLOCK_SIZE); - break; - case CBC: - case OFB: - case CFB128: - memcpy(iv[i+1], ptext[j], AES_BLOCK_SIZE); - memcpy(ctext[0], ptext[j-1], AES_BLOCK_SIZE); - break; - case CFB8: - for (n1 = 0, n2 = 15; n1 < 16; ++n1, --n2) - iv[i+1][n1] = ptext[j-n2][0]; - ctext[0][0] = ptext[j-16][0]; - break; - case CFB1: - for(n1=0,n2=127 ; n1 < 128 ; ++n1,--n2) - sb(iv[i+1],n1,gb(ptext[j-n2],0)); - ctext[0][0]=ptext[j-128][0]&0x80; - break; - } - } - } - FIPS_cipher_ctx_cleanup(&ctx); - return ret; - } - -/*================================================*/ -/*---------------------------- - # Config info for v-one - # AESVS MMT test data for ECB - # State : Encrypt and Decrypt - # Key Length : 256 - # Fri Aug 30 04:07:22 PM - ----------------------------*/ - -static int proc_file(char *rqfile, char *rspfile) - { - char afn[256], rfn[256]; - FILE *afp = NULL, *rfp = NULL; - char ibuf[2048]; - char tbuf[2048]; - int len; - char algo[8] = ""; - char amode[8] = ""; - char atest[8] = ""; - int akeysz = 0; - unsigned char iVec[20], aKey[40]; - int dir = -1, err = 0, step = 0; - unsigned char plaintext[2048]; - unsigned char ciphertext[2048]; - char *rp; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - - if (!rqfile || !(*rqfile)) - { - printf("No req file\n"); - return -1; - } - strcpy(afn, rqfile); - - if ((afp = fopen(afn, "r")) == NULL) - { - printf("Cannot open file: %s, %s\n", - afn, strerror(errno)); - return -1; - } - if (!rspfile) - { - strcpy(rfn,afn); - rp=strstr(rfn,"req/"); -#ifdef OPENSSL_SYS_WIN32 - if (!rp) - rp=strstr(rfn,"req\\"); -#endif - assert(rp); - memcpy(rp,"rsp",3); - rp = strstr(rfn, ".req"); - memcpy(rp, ".rsp", 4); - rspfile = rfn; - } - if ((rfp = fopen(rspfile, "w")) == NULL) - { - printf("Cannot open file: %s, %s\n", - rfn, strerror(errno)); - fclose(afp); - afp = NULL; - return -1; - } - while (!err && (fgets(ibuf, sizeof(ibuf), afp)) != NULL) - { - tidy_line(tbuf, ibuf); - /* printf("step=%d ibuf=%s",step,ibuf); */ - switch (step) - { - case 0: /* read preamble */ - if (ibuf[0] == '\n') - { /* end of preamble */ - if ((*algo == '\0') || - (*amode == '\0') || - (akeysz == 0)) - { - printf("Missing Algorithm, Mode or KeySize (%s/%s/%d)\n", - algo,amode,akeysz); - err = 1; - } - else - { - copy_line(ibuf, rfp); - ++ step; - } - } - else if (ibuf[0] != '#') - { - printf("Invalid preamble item: %s\n", ibuf); - err = 1; - } - else - { /* process preamble */ - char *xp, *pp = ibuf+2; - int n; - if (akeysz) - { /* insert current time & date */ - time_t rtim = time(0); - fputs("# ", rfp); - copy_line(ctime(&rtim), rfp); - } - else - { - copy_line(ibuf, rfp); - if (strncmp(pp, "AESVS ", 6) == 0) - { - strcpy(algo, "AES"); - /* get test type */ - pp += 6; - xp = strchr(pp, ' '); - n = xp-pp; - strncpy(atest, pp, n); - atest[n] = '\0'; - /* get mode */ - xp = strrchr(pp, ' '); /* get mode" */ - n = strlen(xp+1)-1; - strncpy(amode, xp+1, n); - amode[n] = '\0'; - /* amode[3] = '\0'; */ - if (VERBOSE) - printf("Test = %s, Mode = %s\n", atest, amode); - } - else if (fips_strncasecmp(pp, "Key Length : ", 13) == 0) - { - akeysz = atoi(pp+13); - if (VERBOSE) - printf("Key size = %d\n", akeysz); - } - } - } - break; - - case 1: /* [ENCRYPT] | [DECRYPT] */ - if (ibuf[0] == '[') - { - copy_line(ibuf, rfp); - ++step; - if (fips_strncasecmp(ibuf, "[ENCRYPT]", 9) == 0) - dir = 1; - else if (fips_strncasecmp(ibuf, "[DECRYPT]", 9) == 0) - dir = 0; - else - { - printf("Invalid keyword: %s\n", ibuf); - err = 1; - } - break; - } - else if (dir == -1) - { - err = 1; - printf("Missing ENCRYPT/DECRYPT keyword\n"); - break; - } - else - step = 2; - - case 2: /* KEY = xxxx */ - copy_line(ibuf, rfp); - if(*ibuf == '\n') - break; - if(!fips_strncasecmp(ibuf,"COUNT = ",8)) - break; - - if (fips_strncasecmp(ibuf, "KEY = ", 6) != 0) - { - printf("Missing KEY\n"); - err = 1; - } - else - { - len = hex2bin((char*)ibuf+6, aKey); - if (len < 0) - { - printf("Invalid KEY\n"); - err =1; - break; - } - PrintValue("KEY", aKey, len); - if (strcmp(amode, "ECB") == 0) - { - memset(iVec, 0, sizeof(iVec)); - step = (dir)? 4: 5; /* no ivec for ECB */ - } - else - ++step; - } - break; - - case 3: /* IV = xxxx */ - copy_line(ibuf, rfp); - if (fips_strncasecmp(ibuf, "IV = ", 5) != 0) - { - printf("Missing IV\n"); - err = 1; - } - else - { - len = hex2bin((char*)ibuf+5, iVec); - if (len < 0) - { - printf("Invalid IV\n"); - err =1; - break; - } - PrintValue("IV", iVec, len); - step = (dir)? 4: 5; - } - break; - - case 4: /* PLAINTEXT = xxxx */ - copy_line(ibuf, rfp); - if (fips_strncasecmp(ibuf, "PLAINTEXT = ", 12) != 0) - { - printf("Missing PLAINTEXT\n"); - err = 1; - } - else - { - int nn = strlen(ibuf+12); - if(!strcmp(amode,"CFB1")) - len=bint2bin(ibuf+12,nn-1,plaintext); - else - len=hex2bin(ibuf+12, plaintext); - if (len < 0) - { - printf("Invalid PLAINTEXT: %s", ibuf+12); - err =1; - break; - } - if (len >= (int)sizeof(plaintext)) - { - printf("Buffer overflow\n"); - } - PrintValue("PLAINTEXT", (unsigned char*)plaintext, len); - if (strcmp(atest, "MCT") == 0) /* Monte Carlo Test */ - { - if(do_mct(amode, akeysz, aKey, iVec, - dir, (unsigned char*)plaintext, len, - rfp) < 0) - err = 1; - } - else - { - AESTest(&ctx, amode, akeysz, aKey, iVec, - dir, /* 0 = decrypt, 1 = encrypt */ - plaintext, ciphertext, len); - OutputValue("CIPHERTEXT",ciphertext,len,rfp, - !strcmp(amode,"CFB1")); - } - step = 6; - } - break; - - case 5: /* CIPHERTEXT = xxxx */ - copy_line(ibuf, rfp); - if (fips_strncasecmp(ibuf, "CIPHERTEXT = ", 13) != 0) - { - printf("Missing KEY\n"); - err = 1; - } - else - { - if(!strcmp(amode,"CFB1")) - len=bint2bin(ibuf+13,strlen(ibuf+13)-1,ciphertext); - else - len = hex2bin(ibuf+13,ciphertext); - if (len < 0) - { - printf("Invalid CIPHERTEXT\n"); - err =1; - break; - } - - PrintValue("CIPHERTEXT", ciphertext, len); - if (strcmp(atest, "MCT") == 0) /* Monte Carlo Test */ - { - do_mct(amode, akeysz, aKey, iVec, - dir, ciphertext, len, rfp); - } - else - { - AESTest(&ctx, amode, akeysz, aKey, iVec, - dir, /* 0 = decrypt, 1 = encrypt */ - plaintext, ciphertext, len); - OutputValue("PLAINTEXT",(unsigned char *)plaintext,len,rfp, - !strcmp(amode,"CFB1")); - } - step = 6; - } - break; - - case 6: - if (ibuf[0] != '\n') - { - err = 1; - printf("Missing terminator\n"); - } - else if (strcmp(atest, "MCT") != 0) - { /* MCT already added terminating nl */ - copy_line(ibuf, rfp); - } - step = 1; - break; - } - } - if (rfp) - fclose(rfp); - if (afp) - fclose(afp); - FIPS_cipher_ctx_cleanup(&ctx); - return err; - } - -/*-------------------------------------------------- - Processes either a single file or - a set of files whose names are passed in a file. - A single file is specified as: - aes_test -f xxx.req - A set of files is specified as: - aes_test -d xxxxx.xxx - The default is: -d req.txt ---------------------------------------------------*/ -#ifdef FIPS_ALGVS -int fips_aesavs_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - char *rqlist = "req.txt", *rspfile = NULL; - FILE *fp = NULL; - char fn[250] = "", rfn[256] = ""; - int d_opt = 1; - fips_algtest_init(); - - if (argc > 1) - { - if (strcasecmp(argv[1], "-d") == 0) - { - d_opt = 1; - } - else if (strcasecmp(argv[1], "-f") == 0) - { - d_opt = 0; - } - else - { - printf("Invalid parameter: %s\n", argv[1]); - return 0; - } - if (argc < 3) - { - printf("Missing parameter\n"); - return 0; - } - if (d_opt) - rqlist = argv[2]; - else - { - strcpy(fn, argv[2]); - rspfile = argv[3]; - } - } - if (d_opt) - { /* list of files (directory) */ - if (!(fp = fopen(rqlist, "r"))) - { - printf("Cannot open req list file\n"); - return -1; - } - while (fgets(fn, sizeof(fn), fp)) - { - strtok(fn, "\r\n"); - strcpy(rfn, fn); - if (VERBOSE) - printf("Processing: %s\n", rfn); - if (proc_file(rfn, rspfile)) - { - printf(">>> Processing failed for: %s <<<\n", rfn); - return 1; - } - } - fclose(fp); - } - else /* single file */ - { - if (VERBOSE) - printf("Processing: %s\n", fn); - if (proc_file(fn, rspfile)) - { - printf(">>> Processing failed for: %s <<<\n", fn); - } - } - return 0; - } - -#endif diff --git a/fips/aes/fips_gcmtest.c b/fips/aes/fips_gcmtest.c deleted file mode 100644 index 9f50857fb9..0000000000 --- a/fips/aes/fips_gcmtest.c +++ /dev/null @@ -1,571 +0,0 @@ -/* fips/aes/fips_gcmtest.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - - -#define OPENSSL_FIPSAPI -#include - -#ifndef OPENSSL_FIPS -#include - -int main(int argc, char **argv) -{ - printf("No FIPS GCM support\n"); - return(0); -} -#else - -#include -#include -#include -#include -#include -#include -#include - -#include "fips_utl.h" - -static void gcmtest(FILE *in, FILE *out, int encrypt) - { - char buf[2048]; - char lbuf[2048]; - char *keyword, *value; - int keylen = -1, ivlen = -1, aadlen = -1, taglen = -1, ptlen = -1; - int rv; - long l; - unsigned char *key = NULL, *iv = NULL, *aad = NULL, *tag = NULL; - unsigned char *ct = NULL, *pt = NULL; - EVP_CIPHER_CTX ctx; - const EVP_CIPHER *gcm = NULL; - FIPS_cipher_ctx_init(&ctx); - - while(fgets(buf,sizeof buf,in) != NULL) - { - fputs(buf,out); - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - if(!strcmp(keyword,"[Keylen")) - { - keylen = atoi(value); - if (keylen == 128) - gcm = EVP_aes_128_gcm(); - else if (keylen == 192) - gcm = EVP_aes_192_gcm(); - else if (keylen == 256) - gcm = EVP_aes_256_gcm(); - else - { - fprintf(stderr, "Unsupported keylen %d\n", - keylen); - } - keylen >>= 3; - } - else if (!strcmp(keyword, "[IVlen")) - ivlen = atoi(value) >> 3; - else if (!strcmp(keyword, "[AADlen")) - aadlen = atoi(value) >> 3; - else if (!strcmp(keyword, "[Taglen")) - taglen = atoi(value) >> 3; - else if (!strcmp(keyword, "[PTlen")) - ptlen = atoi(value) >> 3; - else if(!strcmp(keyword,"Key")) - { - key = hex2bin_m(value, &l); - if (l != keylen) - { - fprintf(stderr, "Inconsistent Key length\n"); - exit(1); - } - } - else if(!strcmp(keyword,"IV")) - { - iv = hex2bin_m(value, &l); - if (l != ivlen) - { - fprintf(stderr, "Inconsistent IV length\n"); - exit(1); - } - } - else if(!strcmp(keyword,"PT")) - { - pt = hex2bin_m(value, &l); - if (l != ptlen) - { - fprintf(stderr, "Inconsistent PT length\n"); - exit(1); - } - } - else if(!strcmp(keyword,"CT")) - { - ct = hex2bin_m(value, &l); - if (l != ptlen) - { - fprintf(stderr, "Inconsistent CT length\n"); - exit(1); - } - } - else if(!strcmp(keyword,"AAD")) - { - aad = hex2bin_m(value, &l); - if (l != aadlen) - { - fprintf(stderr, "Inconsistent AAD length\n"); - exit(1); - } - } - else if(!strcmp(keyword,"Tag")) - { - tag = hex2bin_m(value, &l); - if (l != taglen) - { - fprintf(stderr, "Inconsistent Tag length\n"); - exit(1); - } - } - if (encrypt && pt && aad && (iv || encrypt==1)) - { - tag = OPENSSL_malloc(taglen); - FIPS_cipherinit(&ctx, gcm, NULL, NULL, 1); - /* Relax FIPS constraints for testing */ - M_EVP_CIPHER_CTX_set_flags(&ctx, EVP_CIPH_FLAG_NON_FIPS_ALLOW); - FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, ivlen, 0); - if (encrypt == 1) - { - static unsigned char iv_fixed[4] = {1,2,3,4}; - if (!iv) - iv = OPENSSL_malloc(ivlen); - FIPS_cipherinit(&ctx, NULL, key, NULL, 1); - FIPS_cipher_ctx_ctrl(&ctx, - EVP_CTRL_GCM_SET_IV_FIXED, - 4, iv_fixed); - if (!FIPS_cipher_ctx_ctrl(&ctx, - EVP_CTRL_GCM_IV_GEN, 0, iv)) - { - fprintf(stderr, "IV gen error\n"); - exit(1); - } - OutputValue("IV", iv, ivlen, out, 0); - } - else - FIPS_cipherinit(&ctx, NULL, key, iv, 1); - - - if (aadlen) - FIPS_cipher(&ctx, NULL, aad, aadlen); - if (ptlen) - { - ct = OPENSSL_malloc(ptlen); - rv = FIPS_cipher(&ctx, ct, pt, ptlen); - } - FIPS_cipher(&ctx, NULL, NULL, 0); - FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_GET_TAG, - taglen, tag); - OutputValue("CT", ct, ptlen, out, 0); - OutputValue("Tag", tag, taglen, out, 0); - if (iv) - OPENSSL_free(iv); - if (aad) - OPENSSL_free(aad); - if (ct) - OPENSSL_free(ct); - if (pt) - OPENSSL_free(pt); - if (key) - OPENSSL_free(key); - if (tag) - OPENSSL_free(tag); - iv = aad = ct = pt = key = tag = NULL; - } - if (!encrypt && tag) - { - FIPS_cipherinit(&ctx, gcm, NULL, NULL, 0); - /* Relax FIPS constraints for testing */ - M_EVP_CIPHER_CTX_set_flags(&ctx, EVP_CIPH_FLAG_NON_FIPS_ALLOW); - FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, ivlen, 0); - FIPS_cipherinit(&ctx, NULL, key, iv, 0); - FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_SET_TAG, taglen, tag); - if (aadlen) - FIPS_cipher(&ctx, NULL, aad, aadlen); - if (ptlen) - { - pt = OPENSSL_malloc(ptlen); - rv = FIPS_cipher(&ctx, pt, ct, ptlen); - } - rv = FIPS_cipher(&ctx, NULL, NULL, 0); - if (rv < 0) - fprintf(out, "FAIL" RESP_EOL); - else - OutputValue("PT", pt, ptlen, out, 0); - if (iv) - OPENSSL_free(iv); - if (aad) - OPENSSL_free(aad); - if (ct) - OPENSSL_free(ct); - if (pt) - OPENSSL_free(pt); - if (key) - OPENSSL_free(key); - if (tag) - OPENSSL_free(tag); - iv = aad = ct = pt = key = tag = NULL; - } - } - FIPS_cipher_ctx_cleanup(&ctx); - } - -static void xtstest(FILE *in, FILE *out) - { - char buf[204800]; - char lbuf[204800]; - char *keyword, *value; - int inlen = 0; - int encrypt = 0; - long l; - unsigned char *key = NULL, *iv = NULL; - unsigned char *inbuf = NULL, *outbuf = NULL; - EVP_CIPHER_CTX ctx; - const EVP_CIPHER *xts = NULL; - FIPS_cipher_ctx_init(&ctx); - - while(fgets(buf,sizeof buf,in) != NULL) - { - fputs(buf,out); - if (buf[0] == '[' && strlen(buf) >= 9) - { - if(!strncmp(buf,"[ENCRYPT]", 9)) - encrypt = 1; - else if(!strncmp(buf,"[DECRYPT]", 9)) - encrypt = 0; - } - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - else if(!strcmp(keyword,"Key")) - { - key = hex2bin_m(value, &l); - if (l == 32) - xts = EVP_aes_128_xts(); - else if (l == 64) - xts = EVP_aes_256_xts(); - else - { - fprintf(stderr, "Inconsistent Key length\n"); - exit(1); - } - } - else if(!strcmp(keyword,"i")) - { - iv = hex2bin_m(value, &l); - if (l != 16) - { - fprintf(stderr, "Inconsistent i length\n"); - exit(1); - } - } - else if(encrypt && !strcmp(keyword,"PT")) - { - inbuf = hex2bin_m(value, &l); - inlen = l; - } - else if(!encrypt && !strcmp(keyword,"CT")) - { - inbuf = hex2bin_m(value, &l); - inlen = l; - } - if (inbuf) - { - FIPS_cipherinit(&ctx, xts, key, iv, encrypt); - outbuf = OPENSSL_malloc(inlen); - FIPS_cipher(&ctx, outbuf, inbuf, inlen); - OutputValue(encrypt ? "CT":"PT", outbuf, inlen, out, 0); - OPENSSL_free(inbuf); - OPENSSL_free(outbuf); - OPENSSL_free(key); - OPENSSL_free(iv); - iv = key = inbuf = outbuf = NULL; - } - } - FIPS_cipher_ctx_cleanup(&ctx); - } - -static void ccmtest(FILE *in, FILE *out) - { - char buf[200048]; - char lbuf[200048]; - char *keyword, *value; - long l; - unsigned char *Key = NULL, *Nonce = NULL; - unsigned char *Adata = NULL, *Payload = NULL; - unsigned char *CT = NULL; - int Plen = -1, Nlen = -1, Tlen = -1, Alen = -1; - int decr = 0; - EVP_CIPHER_CTX ctx; - const EVP_CIPHER *ccm = NULL; - FIPS_cipher_ctx_init(&ctx); - - while(fgets(buf,sizeof buf,in) != NULL) - { - char *p; - fputs(buf,out); - redo: - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - - /* If surrounded by square brackets zap them */ - if (keyword[0] == '[') - { - keyword++; - p = strchr(value, ']'); - if (p) - *p = 0; - } - /* See if we have a comma separated list of parameters - * if so copy rest of line back to buffer and redo later. - */ - p = strchr(value, ','); - if (p) - { - *p = 0; - strcpy(buf, p + 1); - strcat(buf, "\n"); - decr = 1; - } - if (!strcmp(keyword,"Plen")) - Plen = atoi(value); - else if (!strcmp(keyword,"Nlen")) - Nlen = atoi(value); - else if (!strcmp(keyword,"Tlen")) - Tlen = atoi(value); - else if (!strcmp(keyword,"Alen")) - Alen = atoi(value); - if (p) - goto redo; - if (!strcmp(keyword,"Key")) - { - if (Key) - OPENSSL_free(Key); - Key = hex2bin_m(value, &l); - if (l == 16) - ccm = EVP_aes_128_ccm(); - else if (l == 24) - ccm = EVP_aes_192_ccm(); - else if (l == 32) - ccm = EVP_aes_256_ccm(); - else - { - fprintf(stderr, "Inconsistent Key length\n"); - exit(1); - } - } - else if (!strcmp(keyword,"Nonce")) - { - if (Nonce) - OPENSSL_free(Nonce); - Nonce = hex2bin_m(value, &l); - if (l != Nlen) - { - fprintf(stderr, "Inconsistent nonce length\n"); - exit(1); - } - } - else if (!strcmp(keyword,"Payload") && !decr) - { - Payload = hex2bin_m(value, &l); - if (Plen && l != Plen) - { - fprintf(stderr, "Inconsistent Payload length\n"); - exit(1); - } - } - else if (!strcmp(keyword,"Adata")) - { - if (Adata) - OPENSSL_free(Adata); - Adata = hex2bin_m(value, &l); - if (Alen && l != Alen) - { - fprintf(stderr, "Inconsistent Payload length\n"); - exit(1); - } - } - else if (!strcmp(keyword,"CT") && decr) - { - CT = hex2bin_m(value, &l); - if (l != (Plen + Tlen)) - { - fprintf(stderr, "Inconsistent CT length\n"); - exit(1); - } - } - if (Payload) - { - FIPS_cipherinit(&ctx, ccm, NULL, NULL, 1); - FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_SET_IVLEN, Nlen, 0); - FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_SET_TAG, Tlen, 0); - FIPS_cipherinit(&ctx, NULL, Key, Nonce, 1); - - FIPS_cipher(&ctx, NULL, NULL, Plen); - FIPS_cipher(&ctx, NULL, Adata, Alen); - CT = OPENSSL_malloc(Plen + Tlen); - FIPS_cipher(&ctx, CT, Payload, Plen); - FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_GET_TAG, Tlen, - CT + Plen); - OutputValue("CT", CT, Plen + Tlen, out, 0); - OPENSSL_free(CT); - OPENSSL_free(Payload); - CT = Payload = NULL; - } - if (CT) - { - int rv; - int len = Plen == 0 ? 1: Plen; - FIPS_cipherinit(&ctx, ccm, NULL, NULL, 0); - FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_SET_IVLEN, Nlen, 0); - FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_CCM_SET_TAG, - Tlen, CT + Plen); - FIPS_cipherinit(&ctx, NULL, Key, Nonce, 0); - FIPS_cipher(&ctx, NULL, NULL, Plen); - FIPS_cipher(&ctx, NULL, Adata, Alen); - Payload = OPENSSL_malloc(len); - rv = FIPS_cipher(&ctx, Payload, CT, Plen); - if (rv >= 0) - { - if (rv == 0) - Payload[0] = 0; - fputs("Result = Pass" RESP_EOL, out); - OutputValue("Payload", Payload, len, out, 0); - } - else - fputs("Result = Fail" RESP_EOL, out); - OPENSSL_free(CT); - OPENSSL_free(Payload); - CT = Payload = NULL; - } - } - if (Key) - OPENSSL_free(Key); - if (Nonce) - OPENSSL_free(Nonce); - if (Adata) - OPENSSL_free(Adata); - FIPS_cipher_ctx_cleanup(&ctx); - } - -#ifdef FIPS_ALGVS -int fips_gcmtest_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - int encrypt; - int xts = 0, ccm = 0; - FILE *in, *out; - if (argc == 4) - { - in = fopen(argv[2], "r"); - if (!in) - { - fprintf(stderr, "Error opening input file\n"); - exit(1); - } - out = fopen(argv[3], "w"); - if (!out) - { - fprintf(stderr, "Error opening output file\n"); - exit(1); - } - } - else if (argc == 2) - { - in = stdin; - out = stdout; - } - else - { - fprintf(stderr,"%s [-encrypt|-decrypt]\n",argv[0]); - exit(1); - } - fips_algtest_init(); - if(!strcmp(argv[1],"-encrypt")) - encrypt = 1; - else if(!strcmp(argv[1],"-encryptIVext")) - encrypt = 2; - else if(!strcmp(argv[1],"-decrypt")) - encrypt = 0; - else if(!strcmp(argv[1],"-ccm")) - ccm = 1; - else if(!strcmp(argv[1],"-xts")) - xts = 1; - else - { - fprintf(stderr,"Don't know how to %s.\n",argv[1]); - exit(1); - } - - if (ccm) - ccmtest(in, out); - else if (xts) - xtstest(in, out); - else - gcmtest(in, out, encrypt); - - if (argc == 4) - { - fclose(in); - fclose(out); - } - - return 0; -} - -#endif diff --git a/fips/cmac/Makefile b/fips/cmac/Makefile deleted file mode 100644 index fcbb8d28d6..0000000000 --- a/fips/cmac/Makefile +++ /dev/null @@ -1,115 +0,0 @@ -# -# OpenSSL/fips/cmac/Makefile -# - -DIR= cmac -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST=fips_cmactest.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= fips_cmac_selftest.c -LIBOBJ= fips_cmac_selftest.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= $(EXHEADER) - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -Q=../testvectors/cmac/req -A=../testvectors/cmac/rsp - -fips_test: - -rm -rf $(A) - mkdir $(A) - if [ -f $(Q)/CMACGenAES256.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_cmactest -g < $(Q)/CMACGenAES256.req > $(A)/CMACGenAES256.rsp; fi - if [ -f $(Q)/CMACVerAES256.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_cmactest -v < $(Q)/CMACVerAES256.req > $(A)/CMACVerAES256.rsp; fi - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_cmac_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_cmac_selftest.o: ../../include/openssl/cmac.h -fips_cmac_selftest.o: ../../include/openssl/crypto.h -fips_cmac_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h -fips_cmac_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_cmac_selftest.o: ../../include/openssl/lhash.h -fips_cmac_selftest.o: ../../include/openssl/obj_mac.h -fips_cmac_selftest.o: ../../include/openssl/objects.h -fips_cmac_selftest.o: ../../include/openssl/opensslconf.h -fips_cmac_selftest.o: ../../include/openssl/opensslv.h -fips_cmac_selftest.o: ../../include/openssl/ossl_typ.h -fips_cmac_selftest.o: ../../include/openssl/safestack.h -fips_cmac_selftest.o: ../../include/openssl/stack.h -fips_cmac_selftest.o: ../../include/openssl/symhacks.h ../fips_locl.h -fips_cmac_selftest.o: fips_cmac_selftest.c -fips_cmactest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_cmactest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_cmactest.o: ../../include/openssl/cmac.h ../../include/openssl/crypto.h -fips_cmactest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_cmactest.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_cmactest.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_cmactest.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_cmactest.o: ../../include/openssl/obj_mac.h -fips_cmactest.o: ../../include/openssl/objects.h -fips_cmactest.o: ../../include/openssl/opensslconf.h -fips_cmactest.o: ../../include/openssl/opensslv.h -fips_cmactest.o: ../../include/openssl/ossl_typ.h -fips_cmactest.o: ../../include/openssl/safestack.h -fips_cmactest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_cmactest.o: ../fips_utl.h fips_cmactest.c diff --git a/fips/cmac/fips_cmac_selftest.c b/fips/cmac/fips_cmac_selftest.c deleted file mode 100644 index 70764dd7a1..0000000000 --- a/fips/cmac/fips_cmac_selftest.c +++ /dev/null @@ -1,182 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include "fips_locl.h" - -#ifdef OPENSSL_FIPS -typedef struct { - int nid; - const unsigned char key[EVP_MAX_KEY_LENGTH]; size_t keysize; - const unsigned char msg[64]; size_t msgsize; - const unsigned char mac[32]; size_t macsize; -} CMAC_KAT; - -/* from http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf */ -__fips_constseg -static const CMAC_KAT vector[] = { - { NID_aes_128_cbc, /* Count = 32 from CMACGenAES128.txt */ - { 0x77,0xa7,0x7f,0xaf, 0x29,0x0c,0x1f,0xa3, - 0x0c,0x68,0x3d,0xf1, 0x6b,0xa7,0xa7,0x7b, }, 128, - { 0x02,0x06,0x83,0xe1, 0xf0,0x39,0x2f,0x4c, - 0xac,0x54,0x31,0x8b, 0x60,0x29,0x25,0x9e, - 0x9c,0x55,0x3d,0xbc, 0x4b,0x6a,0xd9,0x98, - 0xe6,0x4d,0x58,0xe4, 0xe7,0xdc,0x2e,0x13, }, 256, - { 0xfb,0xfe,0xa4,0x1b, }, 32 - }, - { NID_aes_192_cbc, /* Count = 23 from CMACGenAES192.txt */ - { 0x7b,0x32,0x39,0x13, 0x69,0xaa,0x4c,0xa9, - 0x75,0x58,0x09,0x5b, 0xe3,0xc3,0xec,0x86, - 0x2b,0xd0,0x57,0xce, 0xf1,0xe3,0x2d,0x62, }, 192, - { 0x0 }, 0, - { 0xe4,0xd9,0x34,0x0b, 0x03,0xe6,0x7d,0xef, - 0xd4,0x96,0x9c,0xc1, 0xed,0x37,0x35,0xe6, }, 128, - }, - { NID_aes_256_cbc, /* Count = 33 from CMACGenAES256.txt */ - { 0x0b,0x12,0x2a,0xc8, 0xf3,0x4e,0xd1,0xfe, - 0x08,0x2a,0x36,0x25, 0xd1,0x57,0x56,0x14, - 0x54,0x16,0x7a,0xc1, 0x45,0xa1,0x0b,0xbf, - 0x77,0xc6,0xa7,0x05, 0x96,0xd5,0x74,0xf1, }, 256, - { 0x49,0x8b,0x53,0xfd, 0xec,0x87,0xed,0xcb, - 0xf0,0x70,0x97,0xdc, 0xcd,0xe9,0x3a,0x08, - 0x4b,0xad,0x75,0x01, 0xa2,0x24,0xe3,0x88, - 0xdf,0x34,0x9c,0xe1, 0x89,0x59,0xfe,0x84, - 0x85,0xf8,0xad,0x15, 0x37,0xf0,0xd8,0x96, - 0xea,0x73,0xbe,0xdc, 0x72,0x14,0x71,0x3f, }, 384, - { 0xf6,0x2c,0x46,0x32, 0x9b, }, 40, - }, - { NID_des_ede3_cbc, /* Count = 41 from CMACGenTDES3.req */ - { 0x89,0xbc,0xd9,0x52, 0xa8,0xc8,0xab,0x37, - 0x1a,0xf4,0x8a,0xc7, 0xd0,0x70,0x85,0xd5, - 0xef,0xf7,0x02,0xe6, 0xd6,0x2c,0xdc,0x23, }, 192, - { 0xfa,0x62,0x0c,0x1b, 0xbe,0x97,0x31,0x9e, - 0x9a,0x0c,0xf0,0x49, 0x21,0x21,0xf7,0xa2, - 0x0e,0xb0,0x8a,0x6a, 0x70,0x9d,0xcb,0xd0, - 0x0a,0xaf,0x38,0xe4, 0xf9,0x9e,0x75,0x4e, }, 256, - { 0x8f,0x49,0xa1,0xb7, 0xd6,0xaa,0x22,0x58, }, 64, - }, -}; - -int FIPS_selftest_cmac() - { - size_t n, outlen; - unsigned char out[32]; - const EVP_CIPHER *cipher; - CMAC_CTX *ctx = CMAC_CTX_new(); - const CMAC_KAT *t; - int subid = -1, rv = 1; - - for(n=0,t=vector; nnid); - if (!cipher) - { - rv = -1; - goto err; - } - subid = M_EVP_CIPHER_nid(cipher); - if (!fips_post_started(FIPS_TEST_CMAC, subid, 0)) - continue; - if (!CMAC_Init(ctx, t->key, t->keysize/8, cipher, 0)) - { - rv = -1; - goto err; - } - if (!CMAC_Update(ctx, t->msg, t->msgsize/8)) - { - rv = -1; - goto err; - } - - if (!fips_post_corrupt(FIPS_TEST_CMAC, subid, NULL)) - { - if (!CMAC_Update(ctx, t->msg, 1)) - { - rv = -1; - goto err; - } - } - if (!CMAC_Final(ctx, out, &outlen)) - { - rv = -1; - goto err; - } - CMAC_CTX_cleanup(ctx); - - if(outlen < t->macsize/8 || memcmp(out,t->mac,t->macsize/8)) - { - fips_post_failed(FIPS_TEST_CMAC, subid, NULL); - rv = 0; - } - else if (!fips_post_success(FIPS_TEST_CMAC, subid, NULL)) - { - rv = 0; - goto err; - } - } - - err: - CMAC_CTX_free(ctx); - - if (rv == -1) - { - fips_post_failed(FIPS_TEST_CMAC, subid, NULL); - rv = 0; - } - if (!rv) - FIPSerr(FIPS_F_FIPS_SELFTEST_CMAC,FIPS_R_SELFTEST_FAILED); - - return rv; - } -#endif diff --git a/fips/cmac/fips_cmactest.c b/fips/cmac/fips_cmactest.c deleted file mode 100644 index 2c8c7664e9..0000000000 --- a/fips/cmac/fips_cmactest.c +++ /dev/null @@ -1,517 +0,0 @@ -/* fips_cmactest.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2005. - */ -/* ==================================================================== - * Copyright (c) 2005 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef OPENSSL_FIPS - -int main(int argc, char *argv[]) -{ - printf("No FIPS CMAC support\n"); - return(0); -} - -#else - -#include -#include "fips_utl.h" - -static int cmac_test(const EVP_CIPHER *cipher, FILE *out, FILE *in, - int mode, int Klen_counts_keys, int known_keylen); -static int print_cmac_gen(const EVP_CIPHER *cipher, FILE *out, - unsigned char *Key, int Klen, - unsigned char *Msg, int Msglen, - int Tlen); -static int print_cmac_ver(const EVP_CIPHER *cipher, FILE *out, - unsigned char *Key, int Klen, - unsigned char *Msg, int Msglen, - unsigned char *Mac, int Maclen, - int Tlen); - -#ifdef FIPS_ALGVS -int fips_cmactest_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - FILE *in = NULL, *out = NULL; - int mode = 0; /* 0 => Generate, 1 => Verify */ - int Klen_counts_keys = 0; /* 0 => Klen is size of one key - 1 => Klen is amount of keys - */ - int known_keylen = 0; /* Only set when Klen_counts_keys = 1 */ - const EVP_CIPHER *cipher = 0; - int ret = 1; - fips_algtest_init(); - - while (argc > 1 && argv[1][0] == '-') - { - switch (argv[1][1]) - { - case 'a': - { - char *p = &argv[1][2]; - if (*p == '\0') - { - if (argc <= 2) - { - fprintf(stderr, "Option %s needs a value\n", argv[1]); - goto end; - } - argv++; - argc--; - p = &argv[1][0]; - } - if (!strcmp(p, "aes128")) - cipher = EVP_aes_128_cbc(); - else if (!strcmp(p, "aes192")) - cipher = EVP_aes_192_cbc(); - else if (!strcmp(p, "aes256")) - cipher = EVP_aes_256_cbc(); - else if (!strcmp(p, "tdea3") || !strcmp(p, "tdes3")) - { - cipher = EVP_des_ede3_cbc(); - Klen_counts_keys = 1; - known_keylen = 8; - } - else - { - fprintf(stderr, "Unknown algorithm %s\n", p); - goto end; - } - } - break; - case 'g': - mode = 0; - break; - case 'v': - mode = 1; - break; - default: - fprintf(stderr, "Unknown option %s\n", argv[1]); - goto end; - } - argv++; - argc--; - } - if (argc == 1) - in = stdin; - else - in = fopen(argv[1], "r"); - - if (argc < 2) - out = stdout; - else - out = fopen(argv[2], "w"); - - if (!in) - { - fprintf(stderr, "FATAL input initialization error\n"); - goto end; - } - - if (!out) - { - fprintf(stderr, "FATAL output initialization error\n"); - goto end; - } - - if (!cmac_test(cipher, out, in, mode, - Klen_counts_keys, known_keylen)) - { - fprintf(stderr, "FATAL cmac file processing error\n"); - goto end; - } - else - ret = 0; - - end: - - if (in && (in != stdin)) - fclose(in); - if (out && (out != stdout)) - fclose(out); - - return ret; - - } - -#define CMAC_TEST_MAXLINELEN 150000 - -int cmac_test(const EVP_CIPHER *cipher, FILE *out, FILE *in, - int mode, int Klen_counts_keys, int known_keylen) - { - char *linebuf, *olinebuf, *p, *q; - char *keyword, *value; - unsigned char **Keys = NULL, *Msg = NULL, *Mac = NULL; - unsigned char *Key = NULL; - int Count, Klen, Mlen, Tlen; - long Keylen, Msglen, Maclen; - int ret = 0; - int lnum = 0; - - olinebuf = OPENSSL_malloc(CMAC_TEST_MAXLINELEN); - linebuf = OPENSSL_malloc(CMAC_TEST_MAXLINELEN); - - if (!linebuf || !olinebuf) - goto error; - - Count = -1; - Klen = -1; - Mlen = -1; - Tlen = -1; - - while (fgets(olinebuf, CMAC_TEST_MAXLINELEN, in)) - { - lnum++; - strcpy(linebuf, olinebuf); - keyword = linebuf; - /* Skip leading space */ - while (isspace((unsigned char)*keyword)) - keyword++; - - /* Skip comments */ - if (keyword[0] == '#') - { - if (fputs(olinebuf, out) < 0) - goto error; - continue; - } - - /* Look for = sign */ - p = strchr(linebuf, '='); - - /* If no = or starts with [ (for [L=20] line) just copy */ - if (!p) - { - if (fputs(olinebuf, out) < 0) - goto error; - continue; - } - - q = p - 1; - - /* Remove trailing space */ - while (isspace((unsigned char)*q)) - *q-- = 0; - - *p = 0; - value = p + 1; - - /* Remove leading space from value */ - while (isspace((unsigned char)*value)) - value++; - - /* Remove trailing space from value */ - p = value + strlen(value) - 1; - - while (*p == '\n' || isspace((unsigned char)*p)) - *p-- = 0; - - if (!strcmp(keyword, "Count")) - { - if (Count != -1) - goto parse_error; - Count = atoi(value); - if (Count < 0) - goto parse_error; - } - else if (!strcmp(keyword, "Klen")) - { - if (Klen != -1) - goto parse_error; - Klen = atoi(value); - if (Klen < 0) - goto parse_error; - if (Klen_counts_keys) - { - Keys = OPENSSL_malloc(sizeof(*Keys) * Klen); - memset(Keys, '\0', sizeof(*Keys) * Klen); - } - else - { - Keys = OPENSSL_malloc(sizeof(*Keys)); - memset(Keys, '\0', sizeof(*Keys)); - } - } - else if (!strcmp(keyword, "Mlen")) - { - if (Mlen != -1) - goto parse_error; - Mlen = atoi(value); - if (Mlen < 0) - goto parse_error; - } - else if (!strcmp(keyword, "Tlen")) - { - if (Tlen != -1) - goto parse_error; - Tlen = atoi(value); - if (Tlen < 0) - goto parse_error; - } - else if (!strcmp(keyword, "Key") && !Klen_counts_keys) - { - if (Keys[0]) - goto parse_error; - Keys[0] = hex2bin_m(value, &Keylen); - if (!Keys[0]) - goto parse_error; - } - else if (!strncmp(keyword, "Key", 3) && Klen_counts_keys) - { - int keynum = atoi(keyword + 3); - if (!keynum || keynum > Klen || Keys[keynum-1]) - goto parse_error; - Keys[keynum-1] = hex2bin_m(value, &Keylen); - if (!Keys[keynum-1]) - goto parse_error; - } - else if (!strcmp(keyword, "Msg")) - { - if (Msg) - goto parse_error; - Msg = hex2bin_m(value, &Msglen); - if (!Msg) - goto parse_error; - } - else if (!strcmp(keyword, "Mac")) - { - if (mode == 0) - continue; - if (Mac) - goto parse_error; - Mac = hex2bin_m(value, &Maclen); - if (!Mac) - goto parse_error; - } - else if (!strcmp(keyword, "Result")) - { - if (mode == 1) - continue; - goto parse_error; - } - else - goto parse_error; - - fputs(olinebuf, out); - - if (Keys && Msg && (!mode || Mac) && (Tlen > 0) && (Klen > 0)) - { - if (Klen_counts_keys) - { - int x; - Key = OPENSSL_malloc(Klen * known_keylen); - for (x = 0; x < Klen; x++) - { - memcpy(Key + x * known_keylen, - Keys[x], known_keylen); - OPENSSL_free(Keys[x]); - } - Klen *= known_keylen; - } - else - { - Key = OPENSSL_malloc(Klen); - memcpy(Key, Keys[0], Klen); - OPENSSL_free(Keys[0]); - } - OPENSSL_free(Keys); - - switch(mode) - { - case 0: - if (!print_cmac_gen(cipher, out, - Key, Klen, - Msg, Mlen, - Tlen)) - goto error; - break; - case 1: - if (!print_cmac_ver(cipher, out, - Key, Klen, - Msg, Mlen, - Mac, Maclen, - Tlen)) - goto error; - break; - } - - OPENSSL_free(Key); - Key = NULL; - OPENSSL_free(Msg); - Msg = NULL; - OPENSSL_free(Mac); - Mac = NULL; - Klen = -1; - Mlen = -1; - Tlen = -1; - Count = -1; - } - } - - - ret = 1; - - - error: - - if (olinebuf) - OPENSSL_free(olinebuf); - if (linebuf) - OPENSSL_free(linebuf); - if (Key) - OPENSSL_free(Key); - if (Msg) - OPENSSL_free(Msg); - if (Mac) - OPENSSL_free(Mac); - - return ret; - - parse_error: - - fprintf(stderr, "FATAL parse error processing line %d\n", lnum); - - goto error; - - } - -static int print_cmac_gen(const EVP_CIPHER *cipher, FILE *out, - unsigned char *Key, int Klen, - unsigned char *Msg, int Mlen, - int Tlen) - { - int rc, i; - size_t reslen; - unsigned char res[128]; - CMAC_CTX *cmac_ctx = CMAC_CTX_new(); - - CMAC_Init(cmac_ctx, Key, Klen, cipher, 0); - CMAC_Update(cmac_ctx, Msg, Mlen); - if (!CMAC_Final(cmac_ctx, res, &reslen)) - { - fputs("Error calculating CMAC\n", stderr); - rc = 0; - } - else if (Tlen > (int)reslen) - { - fputs("Parameter error, Tlen > CMAC length\n", stderr); - rc = 0; - } - else - { - fputs("Mac = ", out); - for (i = 0; i < Tlen; i++) - fprintf(out, "%02x", res[i]); - fputs(RESP_EOL, out); - rc = 1; - } - CMAC_CTX_free(cmac_ctx); - return rc; - } - -static int print_cmac_ver(const EVP_CIPHER *cipher, FILE *out, - unsigned char *Key, int Klen, - unsigned char *Msg, int Mlen, - unsigned char *Mac, int Maclen, - int Tlen) - { - int rc = 1; - size_t reslen; - unsigned char res[128]; - CMAC_CTX *cmac_ctx = CMAC_CTX_new(); - - CMAC_Init(cmac_ctx, Key, Klen, cipher, 0); - CMAC_Update(cmac_ctx, Msg, Mlen); - if (!CMAC_Final(cmac_ctx, res, &reslen)) - { - fputs("Error calculating CMAC\n", stderr); - rc = 0; - } - else if (Tlen > (int)reslen) - { - fputs("Parameter error, Tlen > CMAC length\n", stderr); - rc = 0; - } - else if (Tlen != Maclen) - { - fputs("Parameter error, Tlen != resulting Mac length\n", stderr); - rc = 0; - } - else - { - if (!memcmp(Mac, res, Maclen)) - fputs("Result = P" RESP_EOL, out); - else - fputs("Result = F" RESP_EOL, out); - } - CMAC_CTX_free(cmac_ctx); - return rc; - } - -#endif diff --git a/fips/des/Makefile b/fips/des/Makefile deleted file mode 100644 index 4ea4e64b16..0000000000 --- a/fips/des/Makefile +++ /dev/null @@ -1,113 +0,0 @@ -# -# OpenSSL/fips/des/Makefile -# - -DIR= des -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -ASFLAGS= $(INCLUDES) $(ASFLAG) -AFLAGS= $(ASFLAGS) - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST= fips_desmovs.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC=fips_des_selftest.c -LIBOBJ=fips_des_selftest.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -fips_test: - -find ../testvectors/tdes/req -name '*.req' > testlist - -rm -rf ../testvectors/tdes/rsp - mkdir ../testvectors/tdes/rsp - if [ -s testlist ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_desmovs -d testlist; fi - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) \ - $(SRC) $(TEST) -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff testlist -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_des_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_des_selftest.o: ../../include/openssl/crypto.h -fips_des_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h -fips_des_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_des_selftest.o: ../../include/openssl/lhash.h -fips_des_selftest.o: ../../include/openssl/obj_mac.h -fips_des_selftest.o: ../../include/openssl/objects.h -fips_des_selftest.o: ../../include/openssl/opensslconf.h -fips_des_selftest.o: ../../include/openssl/opensslv.h -fips_des_selftest.o: ../../include/openssl/ossl_typ.h -fips_des_selftest.o: ../../include/openssl/safestack.h -fips_des_selftest.o: ../../include/openssl/stack.h -fips_des_selftest.o: ../../include/openssl/symhacks.h fips_des_selftest.c -fips_desmovs.o: ../../e_os.h ../../include/openssl/aes.h -fips_desmovs.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_desmovs.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_desmovs.o: ../../include/openssl/des.h ../../include/openssl/des_old.h -fips_desmovs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_desmovs.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_desmovs.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_desmovs.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_desmovs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_desmovs.o: ../../include/openssl/opensslconf.h -fips_desmovs.o: ../../include/openssl/opensslv.h -fips_desmovs.o: ../../include/openssl/ossl_typ.h -fips_desmovs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_desmovs.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h -fips_desmovs.o: ../../include/openssl/ui_compat.h ../fips_utl.h fips_desmovs.c diff --git a/fips/des/fips_des_selftest.c b/fips/des/fips_des_selftest.c deleted file mode 100644 index a014f6f33f..0000000000 --- a/fips/des/fips_des_selftest.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2003 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include - -#ifdef OPENSSL_FIPS - -__fips_constseg -static const struct - { - const unsigned char key[24]; - const unsigned char plaintext[8]; - const unsigned char ciphertext[8]; - } tests3[]= - { - { - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10, - 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0 }, - { 0x8f,0x8f,0xbf,0x9b,0x5d,0x48,0xb4,0x1c }, - { 0x59,0x8c,0xe5,0xd3,0x6c,0xa2,0xea,0x1b }, - }, - { - { 0xDC,0xBA,0x98,0x76,0x54,0x32,0x10,0xFE, - 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF, - 0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4 }, - { 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF }, - { 0x11,0x25,0xb0,0x35,0xbe,0xa0,0x82,0x86 }, - }, - }; - -int FIPS_selftest_des() - { - int n, ret = 0; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - - /* Encrypt/decrypt with 3DES and compare to known answers */ - for(n=0 ; n < 2 ; ++n) - { - if (!fips_cipher_test(FIPS_TEST_CIPHER, &ctx, EVP_des_ede3_ecb(), - tests3[n].key, NULL, - tests3[n].plaintext, tests3[n].ciphertext, 8)) - goto err; - } - ret = 1; - err: - FIPS_cipher_ctx_cleanup(&ctx); - if (ret == 0) - FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); - - return ret; - } -#endif diff --git a/fips/des/fips_desmovs.c b/fips/des/fips_desmovs.c deleted file mode 100644 index 2bbeb53459..0000000000 --- a/fips/des/fips_desmovs.c +++ /dev/null @@ -1,710 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2004 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@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. - * - */ -/*--------------------------------------------- - NIST DES Modes of Operation Validation System - Test Program - - Based on the AES Validation Suite, which was: - Donated to OpenSSL by: - V-ONE Corporation - 20250 Century Blvd, Suite 300 - Germantown, MD 20874 - U.S.A. - ----------------------------------------------*/ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include "e_os.h" - -#ifndef OPENSSL_FIPS - -int main(int argc, char *argv[]) -{ - printf("No FIPS DES support\n"); - return(0); -} - -#else - -#include "fips_utl.h" -#include - -#define DES_BLOCK_SIZE 8 - -#define VERBOSE 0 - -static int DESTest(EVP_CIPHER_CTX *ctx, - char *amode, int akeysz, unsigned char *aKey, - unsigned char *iVec, - int dir, /* 0 = decrypt, 1 = encrypt */ - unsigned char *out, unsigned char *in, int len) - { - const EVP_CIPHER *cipher = NULL; - - if (akeysz != 192) - { - printf("Invalid key size: %d\n", akeysz); - return 0; - } - - if (fips_strcasecmp(amode, "CBC") == 0) - cipher = EVP_des_ede3_cbc(); - else if (fips_strcasecmp(amode, "ECB") == 0) - cipher = EVP_des_ede3_ecb(); - else if (fips_strcasecmp(amode, "CFB64") == 0) - cipher = EVP_des_ede3_cfb64(); - else if (fips_strncasecmp(amode, "OFB", 3) == 0) - cipher = EVP_des_ede3_ofb(); - else if(!fips_strcasecmp(amode,"CFB8")) - cipher = EVP_des_ede3_cfb8(); - else if(!fips_strcasecmp(amode,"CFB1")) - cipher = EVP_des_ede3_cfb1(); - else - { - printf("Unknown mode: %s\n", amode); - return 0; - } - - if (FIPS_cipherinit(ctx, cipher, aKey, iVec, dir) <= 0) - return 0; - if(!fips_strcasecmp(amode,"CFB1")) - M_EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPH_FLAG_LENGTH_BITS); - FIPS_cipher(ctx, out, in, len); - - return 1; - } -#if 0 -static void DebugValue(char *tag, unsigned char *val, int len) - { - char obuf[2048]; - int olen; - olen = bin2hex(val, len, obuf); - printf("%s = %.*s\n", tag, olen, obuf); - } -#endif -static void shiftin(unsigned char *dst,unsigned char *src,int nbits) - { - int n; - - /* move the bytes... */ - memmove(dst,dst+nbits/8,3*8-nbits/8); - /* append new data */ - memcpy(dst+3*8-nbits/8,src,(nbits+7)/8); - /* left shift the bits */ - if(nbits%8) - for(n=0 ; n < 3*8 ; ++n) - dst[n]=(dst[n] << (nbits%8))|(dst[n+1] >> (8-nbits%8)); - } - -/*-----------------------------------------------*/ -char *tdes_t_tag[2] = {"PLAINTEXT", "CIPHERTEXT"}; -char *tdes_t_mode[6] = {"CBC","ECB","OFB","CFB1","CFB8","CFB64"}; -enum tdes_Mode {TCBC, TECB, TOFB, TCFB1, TCFB8, TCFB64}; -int Sizes[6]={64,64,64,1,8,64}; - -static int do_tmct(char *amode, - int akeysz, int numkeys, unsigned char *akey,unsigned char *ivec, - int dir, unsigned char *text, int len, - FILE *rfp) - { - int i,imode; - unsigned char nk[4*8]; /* longest key+8 */ - unsigned char text0[8]; - - for (imode=0 ; imode < 6 ; ++imode) - if(!strcmp(amode,tdes_t_mode[imode])) - break; - if (imode == 6) - { - printf("Unrecognized mode: %s\n", amode); - return 0; - } - for(i=0 ; i < 400 ; ++i) - { - int j; - int n; - int kp=akeysz/64; - unsigned char old_iv[8]; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - - fprintf(rfp,RESP_EOL "COUNT = %d" RESP_EOL,i); - if(kp == 1) - OutputValue("KEY",akey,8,rfp,0); - else - for(n=0 ; n < kp ; ++n) - { - fprintf(rfp,"KEY%d",n+1); - OutputValue("",akey+n*8,8,rfp,0); - } - - if(imode != TECB) - OutputValue("IV",ivec,8,rfp,0); - OutputValue(tdes_t_tag[dir^1],text,len,rfp,imode == TCFB1); -#if 0 - /* compensate for endianness */ - if(imode == TCFB1) - text[0]<<=7; -#endif - memcpy(text0,text,8); - - for(j=0 ; j < 10000 ; ++j) - { - unsigned char old_text[8]; - - memcpy(old_text,text,8); - if(j == 0) - { - memcpy(old_iv,ivec,8); - DESTest(&ctx,amode,akeysz,akey,ivec,dir,text,text,len); - } - else - { - memcpy(old_iv,ctx.iv,8); - FIPS_cipher(&ctx,text,text,len); - } - if(j == 9999) - { - OutputValue(tdes_t_tag[dir],text,len,rfp,imode == TCFB1); - /* memcpy(ivec,text,8); */ - } - /* DebugValue("iv",ctx.iv,8); */ - /* accumulate material for the next key */ - shiftin(nk,text,Sizes[imode]); - /* DebugValue("nk",nk,24);*/ - if((dir && (imode == TCFB1 || imode == TCFB8 - || imode == TCFB64 || imode == TCBC)) || imode == TOFB) - memcpy(text,old_iv,8); - - if(!dir && (imode == TCFB1 || imode == TCFB8 || imode == TCFB64)) - { - /* the test specifies using the output of the raw DES operation - which we don't have, so reconstruct it... */ - for(n=0 ; n < 8 ; ++n) - text[n]^=old_text[n]; - } - } - for(n=0 ; n < 8 ; ++n) - akey[n]^=nk[16+n]; - for(n=0 ; n < 8 ; ++n) - akey[8+n]^=nk[8+n]; - for(n=0 ; n < 8 ; ++n) - akey[16+n]^=nk[n]; - if(numkeys < 3) - memcpy(&akey[2*8],akey,8); - if(numkeys < 2) - memcpy(&akey[8],akey,8); - DES_set_odd_parity((DES_cblock *)akey); - DES_set_odd_parity((DES_cblock *)(akey+8)); - DES_set_odd_parity((DES_cblock *)(akey+16)); - memcpy(ivec,ctx.iv,8); - - /* pointless exercise - the final text doesn't depend on the - initial text in OFB mode, so who cares what it is? (Who - designed these tests?) */ - if(imode == TOFB) - for(n=0 ; n < 8 ; ++n) - text[n]=text0[n]^old_iv[n]; - FIPS_cipher_ctx_cleanup(&ctx); - } - return 1; - } - -static int tproc_file(char *rqfile, char *rspfile) - { - char afn[256], rfn[256]; - FILE *afp = NULL, *rfp = NULL; - char ibuf[2048], tbuf[2048]; - int len; - char amode[8] = ""; - char atest[100] = ""; - int akeysz=0; - unsigned char iVec[20], aKey[40]; - int dir = -1, err = 0, step = 0, echo = 1; - unsigned char plaintext[2048]; - unsigned char ciphertext[2048]; - char *rp; - EVP_CIPHER_CTX ctx; - int numkeys=1; - FIPS_cipher_ctx_init(&ctx); - - if (!rqfile || !(*rqfile)) - { - printf("No req file\n"); - return -1; - } - strcpy(afn, rqfile); - - if ((afp = fopen(afn, "r")) == NULL) - { - printf("Cannot open file: %s, %s\n", - afn, strerror(errno)); - return -1; - } - if (!rspfile) - { - strcpy(rfn,afn); - rp=strstr(rfn,"req/"); -#ifdef OPENSSL_SYS_WIN32 - if (!rp) - rp=strstr(rfn,"req\\"); -#endif - assert(rp); - memcpy(rp,"rsp",3); - rp = strstr(rfn, ".req"); - memcpy(rp, ".rsp", 4); - rspfile = rfn; - } - if ((rfp = fopen(rspfile, "w")) == NULL) - { - printf("Cannot open file: %s, %s\n", - rfn, strerror(errno)); - fclose(afp); - afp = NULL; - return -1; - } - while (!err && (fgets(ibuf, sizeof(ibuf), afp)) != NULL) - { - tidy_line(tbuf, ibuf); - /* printf("step=%d ibuf=%s",step,ibuf);*/ - if(step == 3 && !strcmp(amode,"ECB")) - { - memset(iVec, 0, sizeof(iVec)); - step = (dir)? 4: 5; /* no ivec for ECB */ - } - switch (step) - { - case 0: /* read preamble */ - if (ibuf[0] == '\n') - { /* end of preamble */ - if (*amode == '\0') - { - printf("Missing Mode\n"); - err = 1; - } - else - { - copy_line(ibuf, rfp); - ++ step; - } - } - else if (ibuf[0] != '#') - { - printf("Invalid preamble item: %s\n", ibuf); - err = 1; - } - else - { /* process preamble */ - char *xp, *pp = ibuf+2; - int n; - if(*amode) - { /* insert current time & date */ - time_t rtim = time(0); - fputs("# ", rfp); - copy_line(ctime(&rtim), rfp); - } - else - { - copy_line(ibuf, rfp); - if(!strncmp(pp,"INVERSE ",8) || !strncmp(pp,"DES ",4) - || !strncmp(pp,"TDES ",5) - || !strncmp(pp,"PERMUTATION ",12) - || !strncmp(pp,"SUBSTITUTION ",13) - || !strncmp(pp,"VARIABLE ",9)) - { - /* get test type */ - if(!strncmp(pp,"DES ",4)) - pp+=4; - else if(!strncmp(pp,"TDES ",5)) - pp+=5; - xp = strchr(pp, ' '); - n = xp-pp; - strncpy(atest, pp, n); - atest[n] = '\0'; - /* get mode */ - xp = strrchr(pp, ' '); /* get mode" */ - n = strlen(xp+1)-1; - strncpy(amode, xp+1, n); - amode[n] = '\0'; - if (!strcmp(atest, "Monte")) - echo = 0; - /* amode[3] = '\0'; */ - if (VERBOSE) - printf("Test=%s, Mode=%s\n",atest,amode); - } - } - } - break; - - case 1: /* [ENCRYPT] | [DECRYPT] */ - if(ibuf[0] == '\n') - break; - if (ibuf[0] == '[') - { - copy_line(ibuf, rfp); - ++step; - if (fips_strncasecmp(ibuf, "[ENCRYPT]", 9) == 0) - dir = 1; - else if (fips_strncasecmp(ibuf, "[DECRYPT]", 9) == 0) - dir = 0; - else - { - printf("Invalid keyword: %s\n", ibuf); - err = 1; - } - break; - } - else if (dir == -1) - { - err = 1; - printf("Missing ENCRYPT/DECRYPT keyword\n"); - break; - } - else - step = 2; - - case 2: /* KEY = xxxx */ - if(*ibuf == '\n') - { - copy_line(ibuf, rfp); - break; - } - if(!fips_strncasecmp(ibuf,"COUNT = ",8)) - { - copy_line(ibuf, rfp); - break; - } - if(!fips_strncasecmp(ibuf,"COUNT=",6)) - { - copy_line(ibuf, rfp); - break; - } - if(!fips_strncasecmp(ibuf,"NumKeys = ",10)) - { - numkeys=atoi(ibuf+10); - break; - } - if (echo) - copy_line(ibuf, rfp); - if(!fips_strncasecmp(ibuf,"KEY = ",6)) - { - akeysz=64; - len = hex2bin((char*)ibuf+6, aKey); - if (len < 0) - { - printf("Invalid KEY\n"); - err=1; - break; - } - PrintValue("KEY", aKey, len); - ++step; - } - else if(!fips_strncasecmp(ibuf,"KEYs = ",7)) - { - akeysz=64*3; - len=hex2bin(ibuf+7,aKey); - if(len != 8) - { - printf("Invalid KEY\n"); - err=1; - break; - } - memcpy(aKey+8,aKey,8); - memcpy(aKey+16,aKey,8); - ibuf[4]='\0'; - PrintValue("KEYs",aKey,len); - ++step; - } - else if(!fips_strncasecmp(ibuf,"KEY",3)) - { - int n=ibuf[3]-'1'; - - akeysz=64*3; - len=hex2bin(ibuf+7,aKey+n*8); - if(len != 8) - { - printf("Invalid KEY\n"); - err=1; - break; - } - ibuf[4]='\0'; - PrintValue(ibuf,aKey,len); - if(n == 2) - ++step; - } - else - { - printf("Missing KEY\n"); - err = 1; - } - break; - - case 3: /* IV = xxxx */ - if (echo) - copy_line(ibuf, rfp); - if (fips_strncasecmp(ibuf, "IV = ", 5) != 0) - { - printf("Missing IV\n"); - err = 1; - } - else - { - len = hex2bin((char*)ibuf+5, iVec); - if (len < 0) - { - printf("Invalid IV\n"); - err =1; - break; - } - PrintValue("IV", iVec, len); - step = (dir)? 4: 5; - } - break; - - case 4: /* PLAINTEXT = xxxx */ - if (echo) - copy_line(ibuf, rfp); - if (fips_strncasecmp(ibuf, "PLAINTEXT = ", 12) != 0) - { - printf("Missing PLAINTEXT\n"); - err = 1; - } - else - { - int nn = strlen(ibuf+12); - if(!strcmp(amode,"CFB1")) - len=bint2bin(ibuf+12,nn-1,plaintext); - else - len=hex2bin(ibuf+12, plaintext); - if (len < 0) - { - printf("Invalid PLAINTEXT: %s", ibuf+12); - err =1; - break; - } - if (len >= (int)sizeof(plaintext)) - { - printf("Buffer overflow\n"); - } - PrintValue("PLAINTEXT", (unsigned char*)plaintext, len); - if (strcmp(atest, "Monte") == 0) /* Monte Carlo Test */ - { - if (!do_tmct(amode,akeysz,numkeys,aKey,iVec, - dir,plaintext,len,rfp)) - return -1; - } - else - { - assert(dir == 1); - DESTest(&ctx, amode, akeysz, aKey, iVec, - dir, /* 0 = decrypt, 1 = encrypt */ - ciphertext, plaintext, len); - OutputValue("CIPHERTEXT",ciphertext,len,rfp, - !strcmp(amode,"CFB1")); - } - step = 6; - } - break; - - case 5: /* CIPHERTEXT = xxxx */ - if (echo) - copy_line(ibuf, rfp); - if (fips_strncasecmp(ibuf, "CIPHERTEXT = ", 13) != 0) - { - printf("Missing KEY\n"); - err = 1; - } - else - { - if(!strcmp(amode,"CFB1")) - len=bint2bin(ibuf+13,strlen(ibuf+13)-1,ciphertext); - else - len = hex2bin(ibuf+13,ciphertext); - if (len < 0) - { - printf("Invalid CIPHERTEXT\n"); - err =1; - break; - } - - PrintValue("CIPHERTEXT", ciphertext, len); - if (strcmp(atest, "Monte") == 0) /* Monte Carlo Test */ - { - do_tmct(amode, akeysz, numkeys, aKey, iVec, - dir, ciphertext, len, rfp); - } - else - { - assert(dir == 0); - DESTest(&ctx, amode, akeysz, aKey, iVec, - dir, /* 0 = decrypt, 1 = encrypt */ - plaintext, ciphertext, len); - OutputValue("PLAINTEXT",(unsigned char *)plaintext,len,rfp, - !strcmp(amode,"CFB1")); - } - step = 6; - } - break; - - case 6: - if (ibuf[0] != '\n') - { - err = 1; - printf("Missing terminator\n"); - } - else if (strcmp(atest, "MCT") != 0) - { /* MCT already added terminating nl */ - copy_line(ibuf, rfp); - } - step = 1; - break; - } - } - if (rfp) - fclose(rfp); - if (afp) - fclose(afp); - FIPS_cipher_ctx_cleanup(&ctx); - return err; - } - -/*-------------------------------------------------- - Processes either a single file or - a set of files whose names are passed in a file. - A single file is specified as: - aes_test -f xxx.req - A set of files is specified as: - aes_test -d xxxxx.xxx - The default is: -d req.txt ---------------------------------------------------*/ -#ifdef FIPS_ALGVS -int fips_desmovs_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - char *rqlist = "req.txt", *rspfile = NULL; - FILE *fp = NULL; - char fn[250] = "", rfn[256] = ""; - int d_opt = 1; - - fips_algtest_init(); - if (argc > 1) - { - if (fips_strcasecmp(argv[1], "-d") == 0) - { - d_opt = 1; - } - else if (fips_strcasecmp(argv[1], "-f") == 0) - { - d_opt = 0; - } - else - { - printf("Invalid parameter: %s\n", argv[1]); - return 0; - } - if (argc < 3) - { - printf("Missing parameter\n"); - return 0; - } - if (d_opt) - rqlist = argv[2]; - else - { - strcpy(fn, argv[2]); - rspfile = argv[3]; - } - } - if (d_opt) - { /* list of files (directory) */ - if (!(fp = fopen(rqlist, "r"))) - { - printf("Cannot open req list file\n"); - return -1; - } - while (fgets(fn, sizeof(fn), fp)) - { - strtok(fn, "\r\n"); - strcpy(rfn, fn); - printf("Processing: %s\n", rfn); - if (tproc_file(rfn, rspfile)) - { - printf(">>> Processing failed for: %s <<<\n", rfn); - return -1; - } - } - fclose(fp); - } - else /* single file */ - { - if (VERBOSE) - printf("Processing: %s\n", fn); - if (tproc_file(fn, rspfile)) - { - printf(">>> Processing failed for: %s <<<\n", fn); - } - } - return 0; - } - -#endif diff --git a/fips/dh/Makefile b/fips/dh/Makefile deleted file mode 100644 index 5707621426..0000000000 --- a/fips/dh/Makefile +++ /dev/null @@ -1,99 +0,0 @@ -# -# OpenSSL/fips/dh/Makefile -# - -DIR= dh -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST= fips_dhvs.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= fips_dh_lib.c -LIBOBJ= fips_dh_lib.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= $(EXHEADER) - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -fips_test: - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_dh_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_dh_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h -fips_dh_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h -fips_dh_lib.o: ../../include/openssl/opensslconf.h -fips_dh_lib.o: ../../include/openssl/opensslv.h -fips_dh_lib.o: ../../include/openssl/ossl_typ.h -fips_dh_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_dh_lib.o: ../../include/openssl/symhacks.h fips_dh_lib.c -fips_dhvs.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_dhvs.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_dhvs.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h -fips_dhvs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_dhvs.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_dhvs.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_dhvs.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_dhvs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_dhvs.o: ../../include/openssl/opensslconf.h -fips_dhvs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h -fips_dhvs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_dhvs.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_dhvs.c diff --git a/fips/dh/fips_dh_lib.c b/fips/dh/fips_dh_lib.c deleted file mode 100644 index 747d949389..0000000000 --- a/fips/dh/fips_dh_lib.c +++ /dev/null @@ -1,98 +0,0 @@ -/* fips_dh_lib.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2007. - */ -/* ==================================================================== - * Copyright (c) 2007 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include - -/* Minimal FIPS versions of FIPS_dh_new() and FIPS_dh_free(): to - * reduce external dependencies. - */ - -DH *FIPS_dh_new(void) - { - DH *ret; - ret = OPENSSL_malloc(sizeof(DH)); - if (!ret) - return NULL; - memset(ret, 0, sizeof(DH)); - ret->meth = DH_OpenSSL(); - if (ret->meth->init) - ret->meth->init(ret); - return ret; - } - -void FIPS_dh_free(DH *r) - { - if (!r) - return; - if (r->meth->finish) - r->meth->finish(r); - if (r->p != NULL) BN_clear_free(r->p); - if (r->g != NULL) BN_clear_free(r->g); - if (r->q != NULL) BN_clear_free(r->q); - if (r->j != NULL) BN_clear_free(r->j); - if (r->seed) OPENSSL_free(r->seed); - if (r->counter != NULL) BN_clear_free(r->counter); - if (r->pub_key != NULL) BN_clear_free(r->pub_key); - if (r->priv_key != NULL) BN_clear_free(r->priv_key); - OPENSSL_free(r); - } diff --git a/fips/dh/fips_dhvs.c b/fips/dh/fips_dhvs.c deleted file mode 100644 index 0fb52f79a4..0000000000 --- a/fips/dh/fips_dhvs.c +++ /dev/null @@ -1,292 +0,0 @@ -/* fips/dh/fips_dhvs.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - - -#define OPENSSL_FIPSAPI -#include - -#ifndef OPENSSL_FIPS -#include - -int main(int argc, char **argv) -{ - printf("No FIPS DH support\n"); - return(0); -} -#else - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "fips_utl.h" - -static const EVP_MD *parse_md(char *line) - { - char *p; - if (line[0] != '[' || line[1] != 'F') - return NULL; - p = strchr(line, '-'); - if (!p) - return NULL; - line = p + 1; - p = strchr(line, ']'); - if (!p) - return NULL; - *p = 0; - p = line; - while(isspace(*p)) - p++; - if (!strcmp(p, "SHA1")) - return EVP_sha1(); - else if (!strcmp(p, "SHA224")) - return EVP_sha224(); - else if (!strcmp(p, "SHA256")) - return EVP_sha256(); - else if (!strcmp(p, "SHA384")) - return EVP_sha384(); - else if (!strcmp(p, "SHA512")) - return EVP_sha512(); - else - return NULL; - } - -static void output_Zhash(FILE *out, int exout, - DH *dh, BIGNUM *peerkey, const EVP_MD *md, - unsigned char *rhash, size_t rhashlen) - { - unsigned char *Z; - unsigned char chash[EVP_MAX_MD_SIZE]; - int Zlen; - if (rhash == NULL) - { - rhashlen = M_EVP_MD_size(md); - if (!DH_generate_key(dh)) - exit (1); - do_bn_print_name(out, "YephemIUT", dh->pub_key); - if (exout) - do_bn_print_name(out, "XephemIUT", dh->priv_key); - } - Z = OPENSSL_malloc(BN_num_bytes(dh->p)); - if (!Z) - exit(1); - Zlen = DH_compute_key_padded(Z, peerkey, dh); - if (exout) - OutputValue("Z", Z, Zlen, out, 0); - FIPS_digest(Z, Zlen, chash, NULL, md); - OutputValue(rhash ? "IUTHashZZ" : "HashZZ", chash, rhashlen, out, 0); - if (rhash) - { - fprintf(out, "Result = %s\n", - memcmp(chash, rhash, rhashlen) ? "F" : "P"); - } - else - { - BN_clear_free(dh->priv_key); - BN_clear_free(dh->pub_key); - dh->priv_key = NULL; - dh->pub_key = NULL; - } - OPENSSL_cleanse(Z, Zlen); - OPENSSL_free(Z); - } - -#ifdef FIPS_ALGVS -int fips_dhvs_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - char **args = argv + 1; - int argn = argc - 1; - FILE *in, *out; - char buf[2048], lbuf[2048]; - unsigned char *rhash; - long rhashlen; - DH *dh = NULL; - const EVP_MD *md = NULL; - BIGNUM *peerkey = NULL; - char *keyword = NULL, *value = NULL; - int do_verify = -1, exout = 0; - - fips_algtest_init(); - - if (argn && !strcmp(*args, "dhver")) - { - do_verify = 1; - args++; - argn--; - } - else if (argn && !strcmp(*args, "dhgen")) - { - do_verify = 0; - args++; - argn--; - } - - if (argn && !strcmp(*args, "-exout")) - { - exout = 1; - args++; - argn--; - } - - if (do_verify == -1) - { - fprintf(stderr,"%s [dhver|dhgen|] [-exout] (infile outfile)\n",argv[0]); - exit(1); - } - - if (argn == 2) - { - in = fopen(*args, "r"); - if (!in) - { - fprintf(stderr, "Error opening input file\n"); - exit(1); - } - out = fopen(args[1], "w"); - if (!out) - { - fprintf(stderr, "Error opening output file\n"); - exit(1); - } - } - else if (argn == 0) - { - in = stdin; - out = stdout; - } - else - { - fprintf(stderr,"%s [dhver|dhgen|] [-exout] (infile outfile)\n",argv[0]); - exit(1); - } - - dh = FIPS_dh_new(); - - while (fgets(buf, sizeof(buf), in) != NULL) - { - fputs(buf, out); - if (strlen(buf) > 6 && !strncmp(buf, "[F", 2)) - { - md = parse_md(buf); - if (md == NULL) - goto parse_error; - if (dh) - FIPS_dh_free(dh); - dh = FIPS_dh_new(); - continue; - } - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - if (!strcmp(keyword, "P")) - { - if (!do_hex2bn(&dh->p, value)) - goto parse_error; - } - else if (!strcmp(keyword, "Q")) - { - if (!do_hex2bn(&dh->q, value)) - goto parse_error; - } - else if (!strcmp(keyword, "G")) - { - if (!do_hex2bn(&dh->g, value)) - goto parse_error; - } - else if (!strcmp(keyword, "XephemIUT")) - { - if (!do_hex2bn(&dh->priv_key, value)) - goto parse_error; - } - else if (!strcmp(keyword, "YephemIUT")) - { - if (!do_hex2bn(&dh->pub_key, value)) - goto parse_error; - } - else if (!strcmp(keyword, "YephemCAVS")) - { - if (!do_hex2bn(&peerkey, value)) - goto parse_error; - if (do_verify == 0) - output_Zhash(out, exout, dh, peerkey, md, - NULL, 0); - } - else if (!strcmp(keyword, "CAVSHashZZ")) - { - if (!md) - goto parse_error; - rhash = hex2bin_m(value, &rhashlen); - if (!rhash || rhashlen != M_EVP_MD_size(md)) - goto parse_error; - output_Zhash(out, exout, dh, peerkey, md, - rhash, rhashlen); - } - } - if (in && in != stdin) - fclose(in); - if (out && out != stdout) - fclose(out); - return 0; - parse_error: - fprintf(stderr, "Error Parsing request file\n"); - exit(1); - } - -#endif diff --git a/fips/dsa/Makefile b/fips/dsa/Makefile deleted file mode 100644 index 03245cab75..0000000000 --- a/fips/dsa/Makefile +++ /dev/null @@ -1,149 +0,0 @@ -# -# OpenSSL/fips/dsa/Makefile -# - -DIR= dsa -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST=fips_dsatest.c fips_dssvs.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= fips_dsa_selftest.c \ - fips_dsa_lib.c fips_dsa_sign.c -LIBOBJ= fips_dsa_selftest.o \ - fips_dsa_lib.o fips_dsa_sign.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= $(EXHEADER) - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -Q=../testvectors/dsa/req -A=../testvectors/dsa/rsp - -fips_test: - -rm -rf $A - mkdir $A - if [ -f $(Q)/PQGGen.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_dssvs pqg < $(Q)/PQGGen.req > $(A)/PQGGen.rsp; fi - if [ -f $(Q)/KeyPair.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_dssvs keypair < $(Q)/KeyPair.req > $(A)/KeyPair.rsp; fi - if [ -f $(Q)/SigGen.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_dssvs siggen < $(Q)/SigGen.req > $(A)/SigGen.rsp; fi - if [ -f $(Q)/SigVer.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_dssvs sigver < $Q/SigVer.req > $A/SigVer.rsp; fi - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_dsa_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_dsa_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h -fips_dsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h -fips_dsa_lib.o: ../../include/openssl/opensslconf.h -fips_dsa_lib.o: ../../include/openssl/opensslv.h -fips_dsa_lib.o: ../../include/openssl/ossl_typ.h -fips_dsa_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_dsa_lib.o: ../../include/openssl/symhacks.h fips_dsa_lib.c -fips_dsa_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_dsa_selftest.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_dsa_selftest.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h -fips_dsa_selftest.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_dsa_selftest.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h -fips_dsa_selftest.o: ../../include/openssl/obj_mac.h -fips_dsa_selftest.o: ../../include/openssl/objects.h -fips_dsa_selftest.o: ../../include/openssl/opensslconf.h -fips_dsa_selftest.o: ../../include/openssl/opensslv.h -fips_dsa_selftest.o: ../../include/openssl/ossl_typ.h -fips_dsa_selftest.o: ../../include/openssl/safestack.h -fips_dsa_selftest.o: ../../include/openssl/stack.h -fips_dsa_selftest.o: ../../include/openssl/symhacks.h ../fips_locl.h -fips_dsa_selftest.o: fips_dsa_selftest.c -fips_dsa_sign.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_dsa_sign.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_dsa_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h -fips_dsa_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_dsa_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_dsa_sign.o: ../../include/openssl/objects.h -fips_dsa_sign.o: ../../include/openssl/opensslconf.h -fips_dsa_sign.o: ../../include/openssl/opensslv.h -fips_dsa_sign.o: ../../include/openssl/ossl_typ.h -fips_dsa_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h -fips_dsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_dsa_sign.o: fips_dsa_sign.c -fips_dsatest.o: ../../e_os.h ../../include/openssl/aes.h -fips_dsatest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_dsatest.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_dsatest.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h -fips_dsatest.o: ../../include/openssl/ec.h ../../include/openssl/err.h -fips_dsatest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_dsatest.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_dsatest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_dsatest.o: ../../include/openssl/objects.h -fips_dsatest.o: ../../include/openssl/opensslconf.h -fips_dsatest.o: ../../include/openssl/opensslv.h -fips_dsatest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h -fips_dsatest.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_dsatest.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_dsatest.c -fips_dssvs.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_dssvs.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_dssvs.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h -fips_dssvs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_dssvs.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_dssvs.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_dssvs.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_dssvs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_dssvs.o: ../../include/openssl/opensslconf.h -fips_dssvs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h -fips_dssvs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_dssvs.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_dssvs.c diff --git a/fips/dsa/fips_dsa_lib.c b/fips/dsa/fips_dsa_lib.c deleted file mode 100644 index 2e2f192aff..0000000000 --- a/fips/dsa/fips_dsa_lib.c +++ /dev/null @@ -1,121 +0,0 @@ -/* fips_dsa_lib.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2007. - */ -/* ==================================================================== - * Copyright (c) 2007 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include - -/* Minimal FIPS versions of FIPS_dsa_new() and FIPS_dsa_free: to - * reduce external dependencies. - */ - -DSA *FIPS_dsa_new(void) - { - DSA *ret; - ret = OPENSSL_malloc(sizeof(DSA)); - if (!ret) - return NULL; - memset(ret, 0, sizeof(DSA)); - ret->meth = DSA_OpenSSL(); - if (ret->meth->init) - ret->meth->init(ret); - return ret; - } - -void FIPS_dsa_free(DSA *r) - { - if (!r) - return; - if (r->meth->finish) - r->meth->finish(r); - if (r->p != NULL) BN_clear_free(r->p); - if (r->q != NULL) BN_clear_free(r->q); - if (r->g != NULL) BN_clear_free(r->g); - if (r->pub_key != NULL) BN_clear_free(r->pub_key); - if (r->priv_key != NULL) BN_clear_free(r->priv_key); - if (r->kinv != NULL) BN_clear_free(r->kinv); - if (r->r != NULL) BN_clear_free(r->r); - OPENSSL_free(r); - } - -DSA_SIG *FIPS_dsa_sig_new(void) - { - DSA_SIG *sig; - sig = OPENSSL_malloc(sizeof(DSA_SIG)); - if (!sig) - return NULL; - sig->r = NULL; - sig->s = NULL; - return sig; - } - -void FIPS_dsa_sig_free(DSA_SIG *sig) - { - if (sig) - { - if (sig->r) - BN_free(sig->r); - if (sig->s) - BN_free(sig->s); - OPENSSL_free(sig); - } - } - diff --git a/fips/dsa/fips_dsa_selftest.c b/fips/dsa/fips_dsa_selftest.c deleted file mode 100644 index 131f304025..0000000000 --- a/fips/dsa/fips_dsa_selftest.c +++ /dev/null @@ -1,183 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include "fips_locl.h" - -#ifdef OPENSSL_FIPS - -__fips_constseg -static const unsigned char dsa_test_2048_p[] = { - 0xa8,0x53,0x78,0xd8,0xfd,0x3f,0x8d,0x72,0xec,0x74,0x18,0x08, - 0x0d,0xa2,0x13,0x17,0xe4,0x3e,0xc4,0xb6,0x2b,0xa8,0xc8,0x62, - 0x3b,0x7e,0x4d,0x04,0x44,0x1d,0xd1,0xa0,0x65,0x86,0x62,0x59, - 0x64,0x93,0xca,0x8e,0x9e,0x8f,0xbb,0x7e,0x34,0xaa,0xdd,0xb6, - 0x2e,0x5d,0x67,0xb6,0xd0,0x9a,0x6e,0x61,0xb7,0x69,0xe7,0xc3, - 0x52,0xaa,0x2b,0x10,0xe2,0x0c,0xa0,0x63,0x69,0x63,0xb5,0x52, - 0x3e,0x86,0x47,0x0d,0xec,0xbb,0xed,0xa0,0x27,0xe7,0x97,0xe7, - 0xb6,0x76,0x35,0xd4,0xd4,0x9c,0x30,0x70,0x0e,0x74,0xaf,0x8a, - 0x0f,0xf1,0x56,0xa8,0x01,0xaf,0x57,0xa2,0x6e,0x70,0x78,0xf1, - 0xd8,0x2f,0x74,0x90,0x8e,0xcb,0x6d,0x07,0xe7,0x0b,0x35,0x03, - 0xee,0xd9,0x4f,0xa3,0x2c,0xf1,0x7a,0x7f,0xc3,0xd6,0xcf,0x40, - 0xdc,0x7b,0x00,0x83,0x0e,0x6a,0x25,0x66,0xdc,0x07,0x3e,0x34, - 0x33,0x12,0x51,0x7c,0x6a,0xa5,0x15,0x2b,0x4b,0xfe,0xcd,0x2e, - 0x55,0x1f,0xee,0x34,0x63,0x18,0xa1,0x53,0x42,0x3c,0x99,0x6b, - 0x0d,0x5d,0xcb,0x91,0x02,0xae,0xdd,0x38,0x79,0x86,0x16,0xf1, - 0xf1,0xe0,0xd6,0xc4,0x03,0x52,0x5b,0x1f,0x9b,0x3d,0x4d,0xc7, - 0x66,0xde,0x2d,0xfc,0x4a,0x56,0xd7,0xb8,0xba,0x59,0x63,0xd6, - 0x0f,0x3e,0x16,0x31,0x88,0x70,0xad,0x43,0x69,0x52,0xe5,0x57, - 0x65,0x37,0x4e,0xab,0x85,0xe8,0xec,0x17,0xd6,0xb9,0xa4,0x54, - 0x7b,0x9b,0x5f,0x27,0x52,0xf3,0x10,0x5b,0xe8,0x09,0xb2,0x3a, - 0x2c,0x8d,0x74,0x69,0xdb,0x02,0xe2,0x4d,0x59,0x23,0x94,0xa7, - 0xdb,0xa0,0x69,0xe9 -}; -__fips_constseg -static const unsigned char dsa_test_2048_q[] = { - 0xd2,0x77,0x04,0x4e,0x50,0xf5,0xa4,0xe3,0xf5,0x10,0xa5,0x0a, - 0x0b,0x84,0xfd,0xff,0xbc,0xa0,0x47,0xed,0x27,0x60,0x20,0x56, - 0x74,0x41,0xa0,0xa5 -}; -__fips_constseg -static const unsigned char dsa_test_2048_g[] = { - 0x13,0xd7,0x54,0xe2,0x1f,0xd2,0x41,0x65,0x5d,0xa8,0x91,0xc5, - 0x22,0xa6,0x5a,0x72,0xa8,0x9b,0xdc,0x64,0xec,0x9b,0x54,0xa8, - 0x21,0xed,0x4a,0x89,0x8b,0x49,0x0e,0x0c,0x4f,0xcb,0x72,0x19, - 0x2a,0x4a,0x20,0xf5,0x41,0xf3,0xf2,0x92,0x53,0x99,0xf0,0xba, - 0xec,0xf9,0x29,0xaa,0xfb,0xf7,0x9d,0xfe,0x43,0x32,0x39,0x3b, - 0x32,0xcd,0x2e,0x2f,0xcf,0x27,0x2f,0x32,0xa6,0x27,0x43,0x4a, - 0x0d,0xf2,0x42,0xb7,0x5b,0x41,0x4d,0xf3,0x72,0x12,0x1e,0x53, - 0xa5,0x53,0xf2,0x22,0xf8,0x36,0xb0,0x00,0xf0,0x16,0x48,0x5b, - 0x6b,0xd0,0x89,0x84,0x51,0x80,0x1d,0xcd,0x8d,0xe6,0x4c,0xd5, - 0x36,0x56,0x96,0xff,0xc5,0x32,0xd5,0x28,0xc5,0x06,0x62,0x0a, - 0x94,0x2a,0x03,0x05,0x04,0x6d,0x8f,0x18,0x76,0x34,0x1f,0x1e, - 0x57,0x0b,0xc3,0x97,0x4b,0xa6,0xb9,0xa4,0x38,0xe9,0x70,0x23, - 0x02,0xa2,0xe6,0xe6,0x7b,0xfd,0x06,0xd3,0x2b,0xc6,0x79,0x96, - 0x22,0x71,0xd7,0xb4,0x0c,0xd7,0x2f,0x38,0x6e,0x64,0xe0,0xd7, - 0xef,0x86,0xca,0x8c,0xa5,0xd1,0x42,0x28,0xdc,0x2a,0x4f,0x16, - 0xe3,0x18,0x98,0x86,0xb5,0x99,0x06,0x74,0xf4,0x20,0x0f,0x3a, - 0x4c,0xf6,0x5a,0x3f,0x0d,0xdb,0xa1,0xfa,0x67,0x2d,0xff,0x2f, - 0x5e,0x14,0x3d,0x10,0xe4,0xe9,0x7a,0xe8,0x4f,0x6d,0xa0,0x95, - 0x35,0xd5,0xb9,0xdf,0x25,0x91,0x81,0xa7,0x9b,0x63,0xb0,0x69, - 0xe9,0x49,0x97,0x2b,0x02,0xba,0x36,0xb3,0x58,0x6a,0xab,0x7e, - 0x45,0xf3,0x22,0xf8,0x2e,0x4e,0x85,0xca,0x3a,0xb8,0x55,0x91, - 0xb3,0xc2,0xa9,0x66 -}; - -__fips_constseg -static const unsigned char dsa_test_2048_pub_key[] = { - 0x24,0x52,0xf3,0xcc,0xbe,0x9e,0xd5,0xca,0x7d,0xc7,0x4c,0x60, - 0x2b,0x99,0x22,0x6e,0x8f,0x2f,0xab,0x38,0xe7,0xd7,0xdd,0xfb, - 0x75,0x53,0x9b,0x17,0x15,0x5e,0x9f,0xcf,0xd1,0xab,0xa5,0x64, - 0xeb,0x85,0x35,0xd8,0x12,0xc9,0xc2,0xdc,0xf9,0x72,0x84,0x44, - 0x1b,0xc4,0x82,0x24,0x36,0x24,0xc7,0xf4,0x57,0x58,0x0c,0x1c, - 0x38,0xa5,0x7c,0x46,0xc4,0x57,0x39,0x24,0x70,0xed,0xb5,0x2c, - 0xb5,0xa6,0xe0,0x3f,0xe6,0x28,0x7b,0xb6,0xf4,0x9a,0x42,0xa2, - 0x06,0x5a,0x05,0x4f,0x03,0x08,0x39,0xdf,0x1f,0xd3,0x14,0x9c, - 0x4c,0xa0,0x53,0x1d,0xd8,0xca,0x8a,0xaa,0x9c,0xc7,0x33,0x71, - 0x93,0x38,0x73,0x48,0x33,0x61,0x18,0x22,0x45,0x45,0xe8,0x8c, - 0x80,0xff,0xd8,0x76,0x5d,0x74,0x36,0x03,0x33,0xcc,0xab,0x99, - 0x72,0x77,0x9b,0x65,0x25,0xa6,0x5b,0xdd,0x0d,0x10,0xc6,0x75, - 0xc1,0x09,0xbb,0xd3,0xe5,0xbe,0x4d,0x72,0xef,0x6e,0xba,0x6e, - 0x43,0x8d,0x52,0x26,0x23,0x7d,0xb8,0x88,0x37,0x9c,0x5f,0xcc, - 0x47,0xa3,0x84,0x7f,0xf6,0x37,0x11,0xba,0xed,0x6d,0x03,0xaf, - 0xe8,0x1e,0x69,0x4a,0x41,0x3b,0x68,0x0b,0xd3,0x8a,0xb4,0x90, - 0x3f,0x83,0x70,0xa7,0x07,0xef,0x55,0x1d,0x49,0x41,0x02,0x6d, - 0x95,0x79,0xd6,0x91,0xde,0x8e,0xda,0xa1,0x61,0x05,0xeb,0x9d, - 0xba,0x3c,0x2f,0x4c,0x1b,0xec,0x50,0x82,0x75,0xaa,0x02,0x07, - 0xe2,0x51,0xb5,0xec,0xcb,0x28,0x6a,0x4b,0x01,0xd4,0x49,0xd3, - 0x0a,0xcb,0x67,0x37,0x17,0xa0,0xd2,0xfb,0x3b,0x50,0xc8,0x93, - 0xf7,0xda,0xb1,0x4f -}; -__fips_constseg -static const unsigned char dsa_test_2048_priv_key[] = { - 0x0c,0x4b,0x30,0x89,0xd1,0xb8,0x62,0xcb,0x3c,0x43,0x64,0x91, - 0xf0,0x91,0x54,0x70,0xc5,0x27,0x96,0xe3,0xac,0xbe,0xe8,0x00, - 0xec,0x55,0xf6,0xcc -}; - -int FIPS_selftest_dsa() - { - DSA *dsa=NULL; - EVP_PKEY pk; - int ret = 0; - - dsa = FIPS_dsa_new(); - - if(dsa == NULL) - goto err; - - fips_load_key_component(dsa, p, dsa_test_2048); - fips_load_key_component(dsa, q, dsa_test_2048); - fips_load_key_component(dsa, g, dsa_test_2048); - fips_load_key_component(dsa, pub_key, dsa_test_2048); - fips_load_key_component(dsa, priv_key, dsa_test_2048); - - pk.type = EVP_PKEY_DSA; - pk.pkey.dsa = dsa; - - if (!fips_pkey_signature_test(FIPS_TEST_SIGNATURE, &pk, NULL, 0, - NULL, 0, EVP_sha384(), 0, - "DSA SHA384")) - goto err; - ret = 1; - - err: - if (dsa) - FIPS_dsa_free(dsa); - return ret; - } -#endif diff --git a/fips/dsa/fips_dsa_sign.c b/fips/dsa/fips_dsa_sign.c deleted file mode 100644 index 274bcd9016..0000000000 --- a/fips/dsa/fips_dsa_sign.c +++ /dev/null @@ -1,141 +0,0 @@ -/* fips_dsa_sign.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2007. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include - -#ifdef OPENSSL_FIPS - -/* FIPS versions of DSA_sign() and DSA_verify(). - * Handle DSA_SIG structures to avoid need to handle ASN1. - */ - -DSA_SIG * FIPS_dsa_sign_ctx(DSA *dsa, EVP_MD_CTX *ctx) - { - DSA_SIG *s; - unsigned char dig[EVP_MAX_MD_SIZE]; - unsigned int dlen; - FIPS_digestfinal(ctx, dig, &dlen); - s = dsa->meth->dsa_do_sign(dig,dlen,dsa); - OPENSSL_cleanse(dig, dlen); - return s; - } - -DSA_SIG * FIPS_dsa_sign_digest(DSA *dsa, const unsigned char *dig, int dlen) - { - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_DSA_SIGN_DIGEST, FIPS_R_SELFTEST_FAILED); - return NULL; - } - return dsa->meth->dsa_do_sign(dig, dlen, dsa); - } - -int FIPS_dsa_verify_ctx(DSA *dsa, EVP_MD_CTX *ctx, DSA_SIG *s) - { - int ret=-1; - unsigned char dig[EVP_MAX_MD_SIZE]; - unsigned int dlen; - FIPS_digestfinal(ctx, dig, &dlen); - ret=dsa->meth->dsa_do_verify(dig,dlen,s,dsa); - OPENSSL_cleanse(dig, dlen); - return ret; - } - -int FIPS_dsa_verify_digest(DSA *dsa, - const unsigned char *dig, int dlen, DSA_SIG *s) - { - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_DSA_VERIFY_DIGEST, FIPS_R_SELFTEST_FAILED); - return -1; - } - return dsa->meth->dsa_do_verify(dig,dlen,s,dsa); - } - -int FIPS_dsa_verify(DSA *dsa, const unsigned char *msg, size_t msglen, - const EVP_MD *mhash, DSA_SIG *s) - { - int ret=-1; - unsigned char dig[EVP_MAX_MD_SIZE]; - unsigned int dlen; - FIPS_digest(msg, msglen, dig, &dlen, mhash); - ret=FIPS_dsa_verify_digest(dsa, dig, dlen, s); - OPENSSL_cleanse(dig, dlen); - return ret; - } - -DSA_SIG * FIPS_dsa_sign(DSA *dsa, const unsigned char *msg, size_t msglen, - const EVP_MD *mhash) - { - DSA_SIG *s; - unsigned char dig[EVP_MAX_MD_SIZE]; - unsigned int dlen; - FIPS_digest(msg, msglen, dig, &dlen, mhash); - s = FIPS_dsa_sign_digest(dsa, dig, dlen); - OPENSSL_cleanse(dig, dlen); - return s; - } - -#endif diff --git a/fips/dsa/fips_dsatest.c b/fips/dsa/fips_dsatest.c deleted file mode 100644 index 3c95d176b8..0000000000 --- a/fips/dsa/fips_dsatest.c +++ /dev/null @@ -1,256 +0,0 @@ -/* crypto/dsa/dsatest.c */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * 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 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 acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The 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.] - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include - -#include "e_os.h" - -#include -#include -#include -#include -#include -#include - - -#if defined(OPENSSL_NO_DSA) || !defined(OPENSSL_FIPS) -int main(int argc, char *argv[]) -{ - printf("No FIPS DSA support\n"); - return(0); -} -#else -#include -#include -#include -#include - -#ifdef OPENSSL_SYS_WIN16 -#define MS_CALLBACK _far _loadds -#else -#define MS_CALLBACK -#endif - -#include "fips_utl.h" - -static int MS_CALLBACK dsa_cb(int p, int n, BN_GENCB *cb); - -/* seed, out_p, out_q, out_g are taken from the earlier validation test - * vectors. - */ - -static unsigned char seed[20] = { - 0x1c, 0xfb, 0xa9, 0x6c, 0xf7, 0x95, 0xb3, 0x2e, 0x01, 0x01, 0x3c, 0x8d, - 0x7f, 0x6e, 0xf4, 0x59, 0xcc, 0x2f, 0x19, 0x59 - }; - -static unsigned char out_p[] = { - 0xc2, 0x3c, 0x48, 0x31, 0x7e, 0x3b, 0x4e, 0x5d, 0x3c, 0x93, 0x78, 0x60, - 0x5c, 0xf2, 0x60, 0xbb, 0x5a, 0xfa, 0x7f, 0x17, 0xf9, 0x26, 0x69, 0x46, - 0xe7, 0x07, 0xbb, 0x3b, 0x2e, 0xc4, 0xb5, 0x66, 0xf7, 0x4d, 0xae, 0x9b, - 0x8f, 0xf0, 0x42, 0xea, 0xb3, 0xa0, 0x7e, 0x81, 0x85, 0x89, 0xe6, 0xb0, - 0x29, 0x03, 0x6b, 0xcc, 0xfb, 0x8e, 0x46, 0x15, 0x4d, 0xc1, 0x69, 0xd8, - 0x2f, 0xef, 0x5c, 0x8b, 0x29, 0x32, 0x41, 0xbd, 0x13, 0x72, 0x3d, 0xac, - 0x81, 0xcc, 0x86, 0x6c, 0x06, 0x5d, 0x51, 0xa1, 0xa5, 0x07, 0x0c, 0x3e, - 0xbe, 0xdd, 0xf4, 0x6e, 0xa8, 0xed, 0xb4, 0x2f, 0xbd, 0x3e, 0x64, 0xea, - 0xee, 0x92, 0xec, 0x51, 0xe1, 0x0d, 0xab, 0x25, 0x45, 0xae, 0x55, 0x21, - 0x4d, 0xd6, 0x96, 0x6f, 0xe6, 0xaa, 0xd3, 0xca, 0x87, 0x92, 0xb1, 0x1c, - 0x3c, 0xaf, 0x29, 0x09, 0x8b, 0xc6, 0xed, 0xe1 - }; - -static unsigned char out_q[] = { - 0xae, 0x0a, 0x8c, 0xfb, 0x80, 0xe1, 0xc6, 0xd1, 0x09, 0x0f, 0x26, 0xde, - 0x91, 0x53, 0xc2, 0x8b, 0x2b, 0x0f, 0xde, 0x7f - }; - -static unsigned char out_g[] = { - 0x0d, 0x7d, 0x92, 0x74, 0x10, 0xf6, 0xa4, 0x43, 0x86, 0x9a, 0xd1, 0xd9, - 0x56, 0x00, 0xbc, 0x18, 0x97, 0x99, 0x4e, 0x9a, 0x93, 0xfb, 0x00, 0x3d, - 0x6c, 0xa0, 0x1b, 0x95, 0x6b, 0xbd, 0xf7, 0x7a, 0xbc, 0x36, 0x3f, 0x3d, - 0xb9, 0xbf, 0xf9, 0x91, 0x37, 0x68, 0xd1, 0xb9, 0x1e, 0xfe, 0x7f, 0x10, - 0xc0, 0x6a, 0xcd, 0x5f, 0xc1, 0x65, 0x1a, 0xb8, 0xe7, 0xab, 0xb5, 0xc6, - 0x8d, 0xb7, 0x86, 0xad, 0x3a, 0xbf, 0x6b, 0x7b, 0x0a, 0x66, 0xbe, 0xd5, - 0x58, 0x23, 0x16, 0x48, 0x83, 0x29, 0xb6, 0xa7, 0x64, 0xc7, 0x08, 0xbe, - 0x55, 0x4c, 0x6f, 0xcb, 0x34, 0xc1, 0x73, 0xb0, 0x39, 0x68, 0x52, 0xdf, - 0x27, 0x7f, 0x32, 0xbc, 0x2b, 0x0d, 0x63, 0xed, 0x75, 0x3e, 0xb5, 0x54, - 0xac, 0xc8, 0x20, 0x2a, 0x73, 0xe8, 0x29, 0x51, 0x03, 0x77, 0xe8, 0xc9, - 0x61, 0x32, 0x25, 0xaf, 0x21, 0x5b, 0x6e, 0xda - }; - - -__fips_constseg -static const unsigned char str1[]="12345678901234567890"; - -__fips_constseg -static const char rnd_seed[] = "string to make the random number generator think it has entropy"; - -int main(int argc, char **argv) - { - DSA *dsa=NULL; - DSA_SIG *sig = NULL; - int counter,ret=0,i,j; - unsigned char buf[256]; - unsigned long h; - BN_GENCB cb; - BN_GENCB_set(&cb, dsa_cb, stderr); - - fips_algtest_init(); - - fprintf(stderr,"test generation of DSA parameters\n"); - - dsa = FIPS_dsa_new(); - DSA_generate_parameters_ex(dsa, 1024,seed,20,&counter,&h,&cb); - - fprintf(stderr,"seed\n"); - for (i=0; i<20; i+=4) - { - fprintf(stderr,"%02X%02X%02X%02X ", - seed[i],seed[i+1],seed[i+2],seed[i+3]); - } - fprintf(stderr,"\ncounter=%d h=%ld\n",counter,h); - - if (dsa == NULL) goto end; - if (counter != 16) - { - fprintf(stderr,"counter should be 105\n"); - goto end; - } - if (h != 2) - { - fprintf(stderr,"h should be 2\n"); - goto end; - } - - i=BN_bn2bin(dsa->q,buf); - j=sizeof(out_q); - if ((i != j) || (memcmp(buf,out_q,i) != 0)) - { - fprintf(stderr,"q value is wrong\n"); - goto end; - } - - i=BN_bn2bin(dsa->p,buf); - j=sizeof(out_p); - if ((i != j) || (memcmp(buf,out_p,i) != 0)) - { - fprintf(stderr,"p value is wrong\n"); - goto end; - } - - i=BN_bn2bin(dsa->g,buf); - j=sizeof(out_g); - if ((i != j) || (memcmp(buf,out_g,i) != 0)) - { - fprintf(stderr,"g value is wrong\n"); - goto end; - } - DSA_generate_key(dsa); - - sig = FIPS_dsa_sign(dsa, str1, 20, EVP_sha1()); - if (!sig) - goto end; - - if (FIPS_dsa_verify(dsa, str1, 20, EVP_sha1(), sig) != 1) - goto end; - - ret = 1; - -end: - if (sig) - FIPS_dsa_sig_free(sig); - if (dsa != NULL) FIPS_dsa_free(dsa); -#if 0 - CRYPTO_mem_leaks(bio_err); -#endif - EXIT(!ret); - return(!ret); - } - -static int cb_exit(int ec) - { - EXIT(ec); - return(0); /* To keep some compilers quiet */ - } - -static int MS_CALLBACK dsa_cb(int p, int n, BN_GENCB *cb) - { - char c='*'; - static int ok=0,num=0; - - if (p == 0) { c='.'; num++; }; - if (p == 1) c='+'; - if (p == 2) { c='*'; ok++; } - if (p == 3) c='\n'; - fwrite(&c,1, 1, cb->arg); - fflush(cb->arg); - - if (!ok && (p == 0) && (num > 1)) - { - fprintf(cb->arg,"error in dsatest\n"); - cb_exit(1); - } - return 1; - } -#endif diff --git a/fips/dsa/fips_dssvs.c b/fips/dsa/fips_dssvs.c deleted file mode 100644 index 6a0b40fc41..0000000000 --- a/fips/dsa/fips_dssvs.c +++ /dev/null @@ -1,793 +0,0 @@ - -#define OPENSSL_FIPSAPI -#include - -#ifndef OPENSSL_FIPS -#include - -int main(int argc, char **argv) -{ - printf("No FIPS DSA support\n"); - return(0); -} -#else - -#include -#include -#include -#include -#include -#include -#include - -#include "fips_utl.h" - -static int parse_mod(char *line, int *pdsa2, int *pL, int *pN, - const EVP_MD **pmd) - { - char lbuf[10240]; - char *keyword, *value; - - char *p; - p = strchr(line, ','); - if (!p) - { - *pL = atoi(line); - *pdsa2 = 0; - *pN = 160; - if (pmd) - *pmd = EVP_sha1(); - return 1; - } - *pdsa2 = 1; - *p = 0; - if (!parse_line2(&keyword, &value, lbuf, line, 0)) - return 0; - if (strcmp(keyword, "L")) - return 0; - *pL = atoi(value); - strcpy(line, p + 1); - if (pmd) - p = strchr(line, ','); - else - p = strchr(line, ']'); - if (!p) - return 0; - *p = 0; - if (!parse_line2(&keyword, &value, lbuf, line, 0)) - return 0; - if (strcmp(keyword, "N")) - return 0; - *pN = atoi(value); - if (!pmd) - return 1; - strcpy(line, p + 1); - p = strchr(line, ']'); - if (!p) - return 0; - *p = 0; - p = line; - while(isspace(*p)) - p++; - if (!strcmp(p, "SHA-1")) - *pmd = EVP_sha1(); - else if (!strcmp(p, "SHA-224")) - *pmd = EVP_sha224(); - else if (!strcmp(p, "SHA-256")) - *pmd = EVP_sha256(); - else if (!strcmp(p, "SHA-384")) - *pmd = EVP_sha384(); - else if (!strcmp(p, "SHA-512")) - *pmd = EVP_sha512(); - else - return 0; - return 1; - } - -static void primes(FILE *in, FILE *out) - { - char buf[10240]; - char lbuf[10240]; - char *keyword, *value; - - while(fgets(buf,sizeof buf,in) != NULL) - { - fputs(buf,out); - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - if(!strcmp(keyword,"Prime")) - { - BIGNUM *pp; - - pp=BN_new(); - do_hex2bn(&pp,value); - fprintf(out, "result= %c" RESP_EOL, - BN_is_prime_ex(pp,20,NULL,NULL) ? 'P' : 'F'); - } - } - } - -int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits, - const EVP_MD *evpmd, const unsigned char *seed_in, size_t seed_len, - unsigned char *seed_out, - int *counter_ret, unsigned long *h_ret, BN_GENCB *cb); -int dsa_builtin_paramgen2(DSA *ret, size_t L, size_t N, - const EVP_MD *evpmd, const unsigned char *seed_in, size_t seed_len, - int idx, unsigned char *seed_out, - int *counter_ret, unsigned long *h_ret, BN_GENCB *cb); - -int dsa_paramgen_check_g(DSA *dsa); - -static void pqg(FILE *in, FILE *out) - { - char buf[1024]; - char lbuf[1024]; - char *keyword, *value; - int dsa2, L, N; - const EVP_MD *md = NULL; - BIGNUM *p = NULL, *q = NULL; - enum pqtype { PQG_NONE, PQG_PQ, PQG_G, PQG_GCANON} - pqg_type = PQG_NONE; - int seedlen=-1, idxlen, idx = -1; - unsigned char seed[1024], idtmp[1024]; - - while(fgets(buf,sizeof buf,in) != NULL) - { - if (buf[0] == '[') - { - if (strstr(buf, "Probable")) - pqg_type = PQG_PQ; - else if (strstr(buf, "Unverifiable")) - pqg_type = PQG_G; - else if (strstr(buf, "Canonical")) - pqg_type = PQG_GCANON; - } - if (!parse_line(&keyword, &value, lbuf, buf)) - { - fputs(buf,out); - continue; - } - if (strcmp(keyword, "Num")) - fputs(buf,out); - if(!strcmp(keyword,"[mod")) - { - if (!parse_mod(value, &dsa2, &L, &N, &md)) - { - fprintf(stderr, "Mod Parse Error\n"); - exit (1); - } - } - else if(!strcmp(keyword,"N") - || (!strcmp(keyword, "Num") && pqg_type == PQG_PQ)) - { - int n=atoi(value); - - while(n--) - { - DSA *dsa; - int counter; - unsigned long h; - dsa = FIPS_dsa_new(); - - if (!dsa2 && !dsa_builtin_paramgen(dsa, L, N, md, - NULL, 0, seed, - &counter, &h, NULL)) - { - fprintf(stderr, "Parameter Generation error\n"); - exit(1); - } - if (dsa2 && dsa_builtin_paramgen2(dsa, L, N, md, - NULL, 0, -1, seed, - &counter, &h, NULL) <= 0) - { - fprintf(stderr, "Parameter Generation error\n"); - exit(1); - } - - do_bn_print_name(out, "P",dsa->p); - do_bn_print_name(out, "Q",dsa->q); - if (!dsa2) - do_bn_print_name(out, "G",dsa->g); - OutputValue(dsa2 ? "domain_parameter_seed" : "Seed", - seed, M_EVP_MD_size(md), out, 0); - if (!dsa2) - { - fprintf(out, "c = %d" RESP_EOL, counter); - fprintf(out, "H = %lx" RESP_EOL RESP_EOL,h); - } - else - { - fprintf(out, "counter = %d" RESP_EOL RESP_EOL, counter); - } - FIPS_dsa_free(dsa); - } - } - else if(!strcmp(keyword,"P")) - p=hex2bn(value); - else if(!strcmp(keyword,"Q")) - q=hex2bn(value); - else if(!strcmp(keyword,"domain_parameter_seed")) - seedlen = hex2bin(value, seed); - else if(!strcmp(keyword,"firstseed")) - seedlen = hex2bin(value, seed); - else if(!strcmp(keyword,"pseed")) - seedlen += hex2bin(value, seed + seedlen); - else if(!strcmp(keyword,"qseed")) - seedlen += hex2bin(value, seed + seedlen); - else if(!strcmp(keyword,"index")) - { - idxlen = hex2bin(value, idtmp); - if (idxlen != 1) - { - fprintf(stderr, "Index value error\n"); - exit (1); - } - idx = idtmp[0]; - } - if ((idx >= 0 && pqg_type == PQG_GCANON) || (q && pqg_type == PQG_G)) - { - DSA *dsa; - dsa = FIPS_dsa_new(); - dsa->p = p; - dsa->q = q; - p = q = NULL; - if (dsa_builtin_paramgen2(dsa, L, N, md, - seed, seedlen, idx, NULL, - NULL, NULL, NULL) <= 0) - { - fprintf(stderr, "Parameter Generation error\n"); - exit(1); - } - do_bn_print_name(out, "G",dsa->g); - FIPS_dsa_free(dsa); - idx = -1; - } - } - } - -static void pqgver(FILE *in, FILE *out) - { - char buf[1024]; - char lbuf[1024]; - char *keyword, *value; - BIGNUM *p = NULL, *q = NULL, *g = NULL; - int counter=-1, counter2; - unsigned long h=0, h2; - DSA *dsa=NULL; - int dsa2, L, N, part_test = 0; - const EVP_MD *md = NULL; - int seedlen=-1, idxlen, idx = -1; - unsigned char seed[1024], idtmp[1024]; - - while(fgets(buf,sizeof buf,in) != NULL) - { - if (!parse_line(&keyword, &value, lbuf, buf)) - { - if (p && q) - { - part_test = 1; - goto partial; - } - fputs(buf,out); - continue; - } - fputs(buf, out); - if(!strcmp(keyword,"[mod")) - { - if (!parse_mod(value, &dsa2, &L, &N, &md)) - { - fprintf(stderr, "Mod Parse Error\n"); - exit (1); - } - } - else if(!strcmp(keyword,"P")) - p=hex2bn(value); - else if(!strcmp(keyword,"Q")) - q=hex2bn(value); - else if(!strcmp(keyword,"G")) - g=hex2bn(value); - else if(!strcmp(keyword,"firstseed")) - seedlen = hex2bin(value, seed); - else if(!strcmp(keyword,"pseed")) - seedlen += hex2bin(value, seed + seedlen); - else if(!strcmp(keyword,"qseed")) - seedlen += hex2bin(value, seed + seedlen); - else if(!strcmp(keyword,"Seed") - || !strcmp(keyword,"domain_parameter_seed")) - { - seedlen = hex2bin(value, seed); - if (!dsa2 && seedlen != 20) - { - fprintf(stderr, "Seed parse length error\n"); - exit (1); - } - if (idx > 0) - part_test = 1; - } - else if(!strcmp(keyword,"index")) - { - idxlen = hex2bin(value, idtmp); - if (idxlen != 1) - { - fprintf(stderr, "Index value error\n"); - exit (1); - } - idx = idtmp[0]; - } - else if(!strcmp(keyword,"c")) - counter = atoi(buf+4); - partial: - if (part_test && idx < 0 && h == 0 && g) - { - dsa = FIPS_dsa_new(); - dsa->p = BN_dup(p); - dsa->q = BN_dup(q); - dsa->g = BN_dup(g); - if (dsa_paramgen_check_g(dsa)) - fprintf(out, "Result = P" RESP_EOL); - else - fprintf(out, "Result = F" RESP_EOL); - BN_free(p); - BN_free(q); - BN_free(g); - p = NULL; - q = NULL; - g = NULL; - FIPS_dsa_free(dsa); - dsa = NULL; - part_test = 0; - } - else if(!strcmp(keyword,"H") || part_test) - { - if (!part_test) - h = atoi(value); - if (!p || !q || (!g && !part_test)) - { - fprintf(stderr, "Parse Error\n"); - exit (1); - } - dsa = FIPS_dsa_new(); - if (idx >= 0) - { - dsa->p = BN_dup(p); - dsa->q = BN_dup(q); - } - no_err = 1; - if (!dsa2 && !dsa_builtin_paramgen(dsa, L, N, md, - seed, seedlen, NULL, - &counter2, &h2, NULL)) - { - fprintf(stderr, "Parameter Generation error\n"); - exit(1); - } - if (dsa2 && dsa_builtin_paramgen2(dsa, L, N, md, - seed, seedlen, idx, NULL, - &counter2, &h2, NULL) < 0) - { - fprintf(stderr, "Parameter Generation error\n"); - exit(1); - } - no_err = 0; - if (idx >= 0) - { - if (BN_cmp(dsa->g, g)) - fprintf(out, "Result = F" RESP_EOL); - else - fprintf(out, "Result = P" RESP_EOL); - } - else if (BN_cmp(dsa->p, p) || BN_cmp(dsa->q, q) || - (!part_test && - ((BN_cmp(dsa->g, g) || (counter != counter2) || (h != h2))))) - fprintf(out, "Result = F" RESP_EOL); - else - fprintf(out, "Result = P" RESP_EOL); - BN_free(p); - BN_free(q); - BN_free(g); - p = NULL; - q = NULL; - g = NULL; - FIPS_dsa_free(dsa); - dsa = NULL; - if (part_test) - { - if (idx == -1) - fputs(buf,out); - part_test = 0; - } - idx = -1; - } - } - } - -/* Keypair verification routine. NB: this isn't part of the standard FIPS140-2 - * algorithm tests. It is an additional test to perform sanity checks on the - * output of the KeyPair test. - */ - -static int dss_paramcheck(int L, int N, BIGNUM *p, BIGNUM *q, BIGNUM *g, - BN_CTX *ctx) - { - BIGNUM *rem = NULL; - if (BN_num_bits(p) != L) - return 0; - if (BN_num_bits(q) != N) - return 0; - if (BN_is_prime_ex(p, BN_prime_checks, ctx, NULL) != 1) - return 0; - if (BN_is_prime_ex(q, BN_prime_checks, ctx, NULL) != 1) - return 0; - rem = BN_new(); - if (!BN_mod(rem, p, q, ctx) || !BN_is_one(rem) - || (BN_cmp(g, BN_value_one()) <= 0) - || !BN_mod_exp(rem, g, q, p, ctx) || !BN_is_one(rem)) - { - BN_free(rem); - return 0; - } - /* Todo: check g */ - BN_free(rem); - return 1; - } - -static void keyver(FILE *in, FILE *out) - { - char buf[1024]; - char lbuf[1024]; - char *keyword, *value; - BIGNUM *p = NULL, *q = NULL, *g = NULL, *X = NULL, *Y = NULL; - BIGNUM *Y2; - BN_CTX *ctx = NULL; - int dsa2, L, N; - int paramcheck = 0; - - ctx = BN_CTX_new(); - Y2 = BN_new(); - - while(fgets(buf,sizeof buf,in) != NULL) - { - if (!parse_line(&keyword, &value, lbuf, buf)) - { - fputs(buf,out); - continue; - } - if(!strcmp(keyword,"[mod")) - { - if (p) - BN_free(p); - p = NULL; - if (q) - BN_free(q); - q = NULL; - if (g) - BN_free(g); - g = NULL; - paramcheck = 0; - if (!parse_mod(value, &dsa2, &L, &N, NULL)) - { - fprintf(stderr, "Mod Parse Error\n"); - exit (1); - } - } - else if(!strcmp(keyword,"P")) - p=hex2bn(value); - else if(!strcmp(keyword,"Q")) - q=hex2bn(value); - else if(!strcmp(keyword,"G")) - g=hex2bn(value); - else if(!strcmp(keyword,"X")) - X=hex2bn(value); - else if(!strcmp(keyword,"Y")) - { - Y=hex2bn(value); - if (!p || !q || !g || !X || !Y) - { - fprintf(stderr, "Parse Error\n"); - exit (1); - } - do_bn_print_name(out, "P",p); - do_bn_print_name(out, "Q",q); - do_bn_print_name(out, "G",g); - do_bn_print_name(out, "X",X); - do_bn_print_name(out, "Y",Y); - if (!paramcheck) - { - if (dss_paramcheck(L, N, p, q, g, ctx)) - paramcheck = 1; - else - paramcheck = -1; - } - if (paramcheck != 1) - fprintf(out, "Result = F" RESP_EOL); - else - { - if (!BN_mod_exp(Y2, g, X, p, ctx) || BN_cmp(Y2, Y)) - fprintf(out, "Result = F" RESP_EOL); - else - fprintf(out, "Result = P" RESP_EOL); - } - BN_free(X); - BN_free(Y); - X = NULL; - Y = NULL; - } - } - if (p) - BN_free(p); - if (q) - BN_free(q); - if (g) - BN_free(g); - if (Y2) - BN_free(Y2); - if (ctx) - BN_CTX_free(ctx); - } - -static void keypair(FILE *in, FILE *out) - { - char buf[1024]; - char lbuf[1024]; - char *keyword, *value; - int dsa2, L, N; - - while(fgets(buf,sizeof buf,in) != NULL) - { - if (!parse_line(&keyword, &value, lbuf, buf)) - { - continue; - } - if(!strcmp(keyword,"[mod")) - { - if (!parse_mod(value, &dsa2, &L, &N, NULL)) - { - fprintf(stderr, "Mod Parse Error\n"); - exit (1); - } - fputs(buf,out); - } - else if(!strcmp(keyword,"N")) - { - DSA *dsa; - int n=atoi(value); - - dsa = FIPS_dsa_new(); - if (!dsa) - { - fprintf(stderr, "DSA allocation error\n"); - exit(1); - } - if (!dsa2 && !dsa_builtin_paramgen(dsa, L, N, NULL, NULL, 0, - NULL, NULL, NULL, NULL)) - { - fprintf(stderr, "Parameter Generation error\n"); - exit(1); - } - if (dsa2 && dsa_builtin_paramgen2(dsa, L, N, NULL, NULL, 0, -1, - NULL, NULL, NULL, NULL) <= 0) - { - fprintf(stderr, "Parameter Generation error\n"); - exit(1); - } - do_bn_print_name(out, "P",dsa->p); - do_bn_print_name(out, "Q",dsa->q); - do_bn_print_name(out, "G",dsa->g); - fputs(RESP_EOL, out); - - while(n--) - { - if (!DSA_generate_key(dsa)) - exit(1); - - do_bn_print_name(out, "X",dsa->priv_key); - do_bn_print_name(out, "Y",dsa->pub_key); - fputs(RESP_EOL, out); - } - FIPS_dsa_free(dsa); - } - } - } - -static void siggen(FILE *in, FILE *out) - { - char buf[1024]; - char lbuf[1024]; - char *keyword, *value; - int dsa2, L, N; - const EVP_MD *md = NULL; - DSA *dsa=NULL; - - while(fgets(buf,sizeof buf,in) != NULL) - { - if (!parse_line(&keyword, &value, lbuf, buf)) - { - fputs(buf,out); - continue; - } - fputs(buf,out); - if(!strcmp(keyword,"[mod")) - { - if (!parse_mod(value, &dsa2, &L, &N, &md)) - { - fprintf(stderr, "Mod Parse Error\n"); - exit (1); - } - if (dsa) - FIPS_dsa_free(dsa); - dsa = FIPS_dsa_new(); - if (!dsa2 && !dsa_builtin_paramgen(dsa, L, N, md, NULL, 0, - NULL, NULL, NULL, NULL)) - { - fprintf(stderr, "Parameter Generation error\n"); - exit(1); - } - if (dsa2 && dsa_builtin_paramgen2(dsa, L, N, md, NULL, 0, -1, - NULL, NULL, NULL, NULL) <= 0) - { - fprintf(stderr, "Parameter Generation error\n"); - exit(1); - } - do_bn_print_name(out, "P",dsa->p); - do_bn_print_name(out, "Q",dsa->q); - do_bn_print_name(out, "G",dsa->g); - fputs(RESP_EOL, out); - } - else if(!strcmp(keyword,"Msg")) - { - unsigned char msg[1024]; - int n; - DSA_SIG *sig; - - n=hex2bin(value,msg); - - if (!DSA_generate_key(dsa)) - exit(1); - do_bn_print_name(out, "Y",dsa->pub_key); - - sig = FIPS_dsa_sign(dsa, msg, n, md); - - do_bn_print_name(out, "R",sig->r); - do_bn_print_name(out, "S",sig->s); - fputs(RESP_EOL, out); - FIPS_dsa_sig_free(sig); - } - } - if (dsa) - FIPS_dsa_free(dsa); - } - -static void sigver(FILE *in, FILE *out) - { - DSA *dsa=NULL; - char buf[1024]; - char lbuf[1024]; - unsigned char msg[1024]; - char *keyword, *value; - int n=0; - int dsa2, L, N; - const EVP_MD *md = NULL; - DSA_SIG sg, *sig = &sg; - - sig->r = NULL; - sig->s = NULL; - - while(fgets(buf,sizeof buf,in) != NULL) - { - if (!parse_line(&keyword, &value, lbuf, buf)) - { - fputs(buf,out); - continue; - } - fputs(buf,out); - if(!strcmp(keyword,"[mod")) - { - if (!parse_mod(value, &dsa2, &L, &N, &md)) - { - fprintf(stderr, "Mod Parse Error\n"); - exit (1); - } - if (dsa) - FIPS_dsa_free(dsa); - dsa = FIPS_dsa_new(); - } - else if(!strcmp(keyword,"P")) - do_hex2bn(&dsa->p, value); - else if(!strcmp(keyword,"Q")) - do_hex2bn(&dsa->q, value); - else if(!strcmp(keyword,"G")) - do_hex2bn(&dsa->g, value); - else if(!strcmp(keyword,"Msg")) - n=hex2bin(value,msg); - else if(!strcmp(keyword,"Y")) - do_hex2bn(&dsa->pub_key, value); - else if(!strcmp(keyword,"R")) - sig->r=hex2bn(value); - else if(!strcmp(keyword,"S")) - { - int r; - sig->s=hex2bn(value); - - no_err = 1; - r = FIPS_dsa_verify(dsa, msg, n, md, sig); - no_err = 0; - if (sig->s) - { - BN_free(sig->s); - sig->s = NULL; - } - if (sig->r) - { - BN_free(sig->r); - sig->r = NULL; - } - - fprintf(out, "Result = %c" RESP_EOL RESP_EOL, r == 1 ? 'P' : 'F'); - } - } - if (dsa) - FIPS_dsa_free(dsa); - } - -#ifdef FIPS_ALGVS -int fips_dssvs_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - FILE *in, *out; - if (argc == 4) - { - in = fopen(argv[2], "r"); - if (!in) - { - fprintf(stderr, "Error opening input file\n"); - exit(1); - } - out = fopen(argv[3], "w"); - if (!out) - { - fprintf(stderr, "Error opening output file\n"); - exit(1); - } - } - else if (argc == 2) - { - in = stdin; - out = stdout; - } - else - { - fprintf(stderr,"%s [prime|pqg|pqgver|keypair|keyver|siggen|sigver]\n",argv[0]); - exit(1); - } - fips_algtest_init(); - if(!strcmp(argv[1],"prime")) - primes(in, out); - else if(!strcmp(argv[1],"pqg")) - pqg(in, out); - else if(!strcmp(argv[1],"pqgver")) - pqgver(in, out); - else if(!strcmp(argv[1],"keypair")) - keypair(in, out); - else if(!strcmp(argv[1],"keyver")) - keyver(in, out); - else if(!strcmp(argv[1],"siggen")) - siggen(in, out); - else if(!strcmp(argv[1],"sigver")) - sigver(in, out); - else - { - fprintf(stderr,"Don't know how to %s.\n",argv[1]); - exit(1); - } - - if (argc == 4) - { - fclose(in); - fclose(out); - } - - return 0; - } - -#endif diff --git a/fips/ecdh/Makefile b/fips/ecdh/Makefile deleted file mode 100644 index 9debc25f47..0000000000 --- a/fips/ecdh/Makefile +++ /dev/null @@ -1,106 +0,0 @@ -# -# OpenSSL/fips/ecdh/Makefile -# - -DIR= ecdh -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST= fips_ecdhvs.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= fips_ecdh_selftest.c -LIBOBJ= fips_ecdh_selftest.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= $(EXHEADER) - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -fips_test: - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_ecdh_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_ecdh_selftest.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_ecdh_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_ecdh_selftest.o: ../../include/openssl/ecdh.h ../../include/openssl/err.h -fips_ecdh_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_ecdh_selftest.o: ../../include/openssl/lhash.h -fips_ecdh_selftest.o: ../../include/openssl/obj_mac.h -fips_ecdh_selftest.o: ../../include/openssl/objects.h -fips_ecdh_selftest.o: ../../include/openssl/opensslconf.h -fips_ecdh_selftest.o: ../../include/openssl/opensslv.h -fips_ecdh_selftest.o: ../../include/openssl/ossl_typ.h -fips_ecdh_selftest.o: ../../include/openssl/safestack.h -fips_ecdh_selftest.o: ../../include/openssl/stack.h -fips_ecdh_selftest.o: ../../include/openssl/symhacks.h ../fips_locl.h -fips_ecdh_selftest.o: fips_ecdh_selftest.c -fips_ecdhvs.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_ecdhvs.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_ecdhvs.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_ecdhvs.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h -fips_ecdhvs.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_ecdhvs.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_ecdhvs.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_ecdhvs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_ecdhvs.o: ../../include/openssl/opensslconf.h -fips_ecdhvs.o: ../../include/openssl/opensslv.h -fips_ecdhvs.o: ../../include/openssl/ossl_typ.h -fips_ecdhvs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_ecdhvs.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_ecdhvs.c diff --git a/fips/ecdh/fips_ecdh_selftest.c b/fips/ecdh/fips_ecdh_selftest.c deleted file mode 100644 index 0b16c57aae..0000000000 --- a/fips/ecdh/fips_ecdh_selftest.c +++ /dev/null @@ -1,257 +0,0 @@ -/* fips/ecdh/fips_ecdh_selftest.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2011. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef OPENSSL_FIPS - -#include "fips_locl.h" - -__fips_constseg -static const unsigned char p224_qcavsx[] = { - 0x3c,0x81,0x15,0x16,0xab,0xa6,0xad,0xd7,0xe5,0xf3,0xea,0x1f, - 0x88,0x57,0x43,0x29,0x35,0x6f,0x0a,0xd2,0x38,0xc7,0x11,0x8a, - 0x90,0xd1,0x46,0x63 -}; -__fips_constseg -static const unsigned char p224_qcavsy[] = { - 0x4a,0x87,0x54,0x7b,0x7d,0x69,0xdd,0xb8,0x48,0x73,0xb2,0x1e, - 0x33,0xfa,0xf6,0x32,0xb4,0x25,0x73,0x55,0x87,0x08,0x16,0xd2, - 0xdd,0xa6,0x77,0xcf -}; -__fips_constseg -static const unsigned char p224_qiutx[] = { - 0x23,0xff,0x15,0x91,0x83,0xd6,0xad,0x98,0x93,0x98,0xbd,0x2e, - 0x01,0xeb,0x5a,0x45,0xe2,0x2a,0xf9,0xc5,0x3b,0x37,0xe1,0x87, - 0x32,0xa5,0x16,0x5f -}; -__fips_constseg -static const unsigned char p224_qiuty[] = { - 0x5e,0x70,0xb7,0x9d,0x9e,0x55,0x2d,0x67,0x4e,0x29,0xa4,0x9d, - 0x06,0x81,0x11,0xb4,0xb4,0xab,0xe2,0xdf,0xdc,0xe4,0xf1,0x69, - 0x55,0x54,0xe3,0x37 -}; -__fips_constseg -static const unsigned char p224_qiutd[] = { - 0xd7,0xdc,0x9c,0x53,0x04,0x72,0x67,0x59,0x92,0x80,0x9e,0x6f, - 0xdd,0xe6,0x0b,0x35,0x09,0xe0,0x95,0x45,0xe6,0x13,0x0e,0x22, - 0x43,0x6a,0x63,0xef -}; -__fips_constseg -static const unsigned char p224_ziut[] = { - 0x84,0x37,0xcf,0x6d,0xfa,0x58,0xbd,0x1f,0x47,0x15,0x45,0x1f, - 0x2c,0x20,0x53,0x7a,0xf4,0xb0,0xe6,0x19,0xcc,0xa9,0x30,0xc6, - 0x5c,0x1a,0xf2,0xdd -}; - -typedef struct - { - int curve; - const unsigned char *x1; - size_t x1len; - const unsigned char *y1; - size_t y1len; - const unsigned char *d1; - size_t d1len; - const unsigned char *x2; - size_t x2len; - const unsigned char *y2; - size_t y2len; - const unsigned char *z; - size_t zlen; - } ECDH_SELFTEST_DATA; - -#define make_ecdh_test(nid, pr) { nid, \ - pr##_qiutx, sizeof(pr##_qiutx), \ - pr##_qiuty, sizeof(pr##_qiuty), \ - pr##_qiutd, sizeof(pr##_qiutd), \ - pr##_qcavsx, sizeof(pr##_qcavsx), \ - pr##_qcavsy, sizeof(pr##_qcavsy), \ - pr##_ziut, sizeof(pr##_ziut) } - -static ECDH_SELFTEST_DATA test_ecdh_data[] = - { - make_ecdh_test(NID_secp224r1, p224), - }; - -int FIPS_selftest_ecdh(void) - { - EC_KEY *ec1 = NULL, *ec2 = NULL; - const EC_POINT *ecp = NULL; - BIGNUM *x = NULL, *y = NULL, *d = NULL; - unsigned char *ztmp = NULL; - int rv = 1; - size_t i; - - for (i = 0; i < sizeof(test_ecdh_data)/sizeof(ECDH_SELFTEST_DATA); i++) - { - ECDH_SELFTEST_DATA *ecd = test_ecdh_data + i; - if (!fips_post_started(FIPS_TEST_ECDH, ecd->curve, 0)) - continue; - ztmp = OPENSSL_malloc(ecd->zlen); - - x = BN_bin2bn(ecd->x1, ecd->x1len, x); - y = BN_bin2bn(ecd->y1, ecd->y1len, y); - d = BN_bin2bn(ecd->d1, ecd->d1len, d); - - if (!x || !y || !d || !ztmp) - { - rv = -1; - goto err; - } - - ec1 = EC_KEY_new_by_curve_name(ecd->curve); - if (!ec1) - { - rv = -1; - goto err; - } - EC_KEY_set_flags(ec1, EC_FLAG_COFACTOR_ECDH); - - if (!EC_KEY_set_public_key_affine_coordinates(ec1, x, y)) - { - rv = -1; - goto err; - } - - if (!EC_KEY_set_private_key(ec1, d)) - { - rv = -1; - goto err; - } - - x = BN_bin2bn(ecd->x2, ecd->x2len, x); - y = BN_bin2bn(ecd->y2, ecd->y2len, y); - - if (!x || !y) - { - rv = -1; - goto err; - } - - ec2 = EC_KEY_new_by_curve_name(ecd->curve); - if (!ec2) - { - rv = -1; - goto err; - } - EC_KEY_set_flags(ec1, EC_FLAG_COFACTOR_ECDH); - - if (!EC_KEY_set_public_key_affine_coordinates(ec2, x, y)) - { - rv = -1; - goto err; - } - - ecp = EC_KEY_get0_public_key(ec2); - if (!ecp) - { - rv = -1; - goto err; - } - - if (!ECDH_compute_key(ztmp, ecd->zlen, ecp, ec1, 0)) - { - rv = -1; - goto err; - } - - if (!fips_post_corrupt(FIPS_TEST_ECDH, ecd->curve, NULL)) - ztmp[0] ^= 0x1; - - if (memcmp(ztmp, ecd->z, ecd->zlen)) - { - fips_post_failed(FIPS_TEST_ECDH, ecd->curve, 0); - rv = 0; - } - else if (!fips_post_success(FIPS_TEST_ECDH, ecd->curve, 0)) - goto err; - - EC_KEY_free(ec1); - ec1 = NULL; - EC_KEY_free(ec2); - ec2 = NULL; - OPENSSL_free(ztmp); - ztmp = NULL; - } - - err: - - if (x) - BN_clear_free(x); - if (y) - BN_clear_free(y); - if (d) - BN_clear_free(d); - if (ec1) - EC_KEY_free(ec1); - if (ec2) - EC_KEY_free(ec2); - if (ztmp) - OPENSSL_free(ztmp); - - return rv; - - } - -#endif diff --git a/fips/ecdh/fips_ecdhvs.c b/fips/ecdh/fips_ecdhvs.c deleted file mode 100644 index a1422868b3..0000000000 --- a/fips/ecdh/fips_ecdhvs.c +++ /dev/null @@ -1,496 +0,0 @@ -/* fips/ecdh/fips_ecdhvs.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - - -#define OPENSSL_FIPSAPI -#include - -#ifndef OPENSSL_FIPS -#include - -int main(int argc, char **argv) -{ - printf("No FIPS ECDH support\n"); - return(0); -} -#else - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "fips_utl.h" - -static const EVP_MD *eparse_md(char *line) - { - char *p; - if (line[0] != '[' || line[1] != 'E') - return NULL; - p = strchr(line, '-'); - if (!p) - return NULL; - line = p + 1; - p = strchr(line, ']'); - if (!p) - return NULL; - *p = 0; - p = line; - while(isspace(*p)) - p++; - if (!strcmp(p, "SHA1")) - return EVP_sha1(); - else if (!strcmp(p, "SHA224")) - return EVP_sha224(); - else if (!strcmp(p, "SHA256")) - return EVP_sha256(); - else if (!strcmp(p, "SHA384")) - return EVP_sha384(); - else if (!strcmp(p, "SHA512")) - return EVP_sha512(); - else - return NULL; - } - -static int lookup_curve2(char *cname) - { - char *p; - p = strchr(cname, ']'); - if (!p) - { - fprintf(stderr, "Parse error: missing ]\n"); - return NID_undef; - } - *p = 0; - - if (!strcmp(cname, "B-163")) - return NID_sect163r2; - if (!strcmp(cname, "B-233")) - return NID_sect233r1; - if (!strcmp(cname, "B-283")) - return NID_sect283r1; - if (!strcmp(cname, "B-409")) - return NID_sect409r1; - if (!strcmp(cname, "B-571")) - return NID_sect571r1; - if (!strcmp(cname, "K-163")) - return NID_sect163k1; - if (!strcmp(cname, "K-233")) - return NID_sect233k1; - if (!strcmp(cname, "K-283")) - return NID_sect283k1; - if (!strcmp(cname, "K-409")) - return NID_sect409k1; - if (!strcmp(cname, "K-571")) - return NID_sect571k1; - if (!strcmp(cname, "P-192")) - return NID_X9_62_prime192v1; - if (!strcmp(cname, "P-224")) - return NID_secp224r1; - if (!strcmp(cname, "P-256")) - return NID_X9_62_prime256v1; - if (!strcmp(cname, "P-384")) - return NID_secp384r1; - if (!strcmp(cname, "P-521")) - return NID_secp521r1; - - fprintf(stderr, "Unknown Curve name %s\n", cname); - return NID_undef; - } - -static int lookup_curve(char *cname) - { - char *p; - p = strchr(cname, ':'); - if (!p) - { - fprintf(stderr, "Parse error: missing :\n"); - return NID_undef; - } - cname = p + 1; - while(isspace(*cname)) - cname++; - return lookup_curve2(cname); - } - -static EC_POINT *make_peer(EC_GROUP *group, BIGNUM *x, BIGNUM *y) - { - EC_POINT *peer; - int rv; - BN_CTX *c; - peer = EC_POINT_new(group); - if (!peer) - return NULL; - c = BN_CTX_new(); - if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) - == NID_X9_62_prime_field) - rv = EC_POINT_set_affine_coordinates_GFp(group, peer, x, y, c); - else -#ifdef OPENSSL_NO_EC2M - { - fprintf(stderr, "ERROR: GF2m not supported\n"); - exit(1); - } -#else - rv = EC_POINT_set_affine_coordinates_GF2m(group, peer, x, y, c); -#endif - - BN_CTX_free(c); - if (rv) - return peer; - EC_POINT_free(peer); - return NULL; - } - -static int ec_print_key(FILE *out, EC_KEY *key, int add_e, int exout) - { - const EC_POINT *pt; - const EC_GROUP *grp; - const EC_METHOD *meth; - int rv; - BIGNUM *tx, *ty; - const BIGNUM *d = NULL; - BN_CTX *ctx; - ctx = BN_CTX_new(); - if (!ctx) - return 0; - tx = BN_CTX_get(ctx); - ty = BN_CTX_get(ctx); - if (!tx || !ty) - return 0; - grp = EC_KEY_get0_group(key); - pt = EC_KEY_get0_public_key(key); - if (exout) - d = EC_KEY_get0_private_key(key); - meth = EC_GROUP_method_of(grp); - if (EC_METHOD_get_field_type(meth) == NID_X9_62_prime_field) - rv = EC_POINT_get_affine_coordinates_GFp(grp, pt, tx, ty, ctx); - else -#ifdef OPENSSL_NO_EC2M - { - fprintf(stderr, "ERROR: GF2m not supported\n"); - exit(1); - } -#else - rv = EC_POINT_get_affine_coordinates_GF2m(grp, pt, tx, ty, ctx); -#endif - - if (add_e) - { - do_bn_print_name(out, "QeIUTx", tx); - do_bn_print_name(out, "QeIUTy", ty); - if (d) - do_bn_print_name(out, "QeIUTd", d); - } - else - { - do_bn_print_name(out, "QIUTx", tx); - do_bn_print_name(out, "QIUTy", ty); - if (d) - do_bn_print_name(out, "QIUTd", d); - } - - BN_CTX_free(ctx); - - return rv; - - } - -static void ec_output_Zhash(FILE *out, int exout, EC_GROUP *group, - BIGNUM *ix, BIGNUM *iy, BIGNUM *id, BIGNUM *cx, - BIGNUM *cy, const EVP_MD *md, - unsigned char *rhash, size_t rhashlen) - { - EC_KEY *ec = NULL; - EC_POINT *peerkey = NULL; - unsigned char *Z; - unsigned char chash[EVP_MAX_MD_SIZE]; - int Zlen; - ec = EC_KEY_new(); - EC_KEY_set_flags(ec, EC_FLAG_COFACTOR_ECDH); - EC_KEY_set_group(ec, group); - peerkey = make_peer(group, cx, cy); - if (rhash == NULL) - { - if (md) - rhashlen = M_EVP_MD_size(md); - EC_KEY_generate_key(ec); - ec_print_key(out, ec, md ? 1 : 0, exout); - } - else - { - EC_KEY_set_public_key_affine_coordinates(ec, ix, iy); - EC_KEY_set_private_key(ec, id); - } - Zlen = (EC_GROUP_get_degree(group) + 7)/8; - Z = OPENSSL_malloc(Zlen); - if (!Z) - exit(1); - ECDH_compute_key(Z, Zlen, peerkey, ec, 0); - if (md) - { - if (exout) - OutputValue("Z", Z, Zlen, out, 0); - FIPS_digest(Z, Zlen, chash, NULL, md); - OutputValue(rhash ? "IUTHashZZ" : "HashZZ", - chash, rhashlen, out, 0); - if (rhash) - { - fprintf(out, "Result = %s\n", - memcmp(chash, rhash, rhashlen) ? "F" : "P"); - } - } - else - OutputValue("ZIUT", Z, Zlen, out, 0); - OPENSSL_cleanse(Z, Zlen); - OPENSSL_free(Z); - EC_KEY_free(ec); - EC_POINT_free(peerkey); - } - -#ifdef FIPS_ALGVS -int fips_ecdhvs_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - char **args = argv + 1; - int argn = argc - 1; - FILE *in, *out; - char buf[2048], lbuf[2048]; - unsigned char *rhash = NULL; - long rhashlen; - BIGNUM *cx = NULL, *cy = NULL; - BIGNUM *id = NULL, *ix = NULL, *iy = NULL; - const EVP_MD *md = NULL; - EC_GROUP *group = NULL; - char *keyword = NULL, *value = NULL; - int do_verify = -1, exout = 0; - int rv = 1; - - int curve_nids[5] = {0,0,0,0,0}; - int param_set = -1; - - fips_algtest_init(); - - if (argn && !strcmp(*args, "ecdhver")) - { - do_verify = 1; - args++; - argn--; - } - else if (argn && !strcmp(*args, "ecdhgen")) - { - do_verify = 0; - args++; - argn--; - } - - if (argn && !strcmp(*args, "-exout")) - { - exout = 1; - args++; - argn--; - } - - if (do_verify == -1) - { - fprintf(stderr,"%s [ecdhver|ecdhgen|] [-exout] (infile outfile)\n",argv[0]); - exit(1); - } - - if (argn == 2) - { - in = fopen(*args, "r"); - if (!in) - { - fprintf(stderr, "Error opening input file\n"); - exit(1); - } - out = fopen(args[1], "w"); - if (!out) - { - fprintf(stderr, "Error opening output file\n"); - exit(1); - } - } - else if (argn == 0) - { - in = stdin; - out = stdout; - } - else - { - fprintf(stderr,"%s [dhver|dhgen|] [-exout] (infile outfile)\n",argv[0]); - exit(1); - } - - while (fgets(buf, sizeof(buf), in) != NULL) - { - fputs(buf, out); - if (buf[0] == '[' && buf[1] == 'E') - { - int c = buf[2]; - if (c < 'A' || c > 'E') - goto parse_error; - param_set = c - 'A'; - /* If just [E?] then initial paramset */ - if (buf[3] == ']') - continue; - if (group) - EC_GROUP_free(group); - group = EC_GROUP_new_by_curve_name(curve_nids[c - 'A']); - } - if (strlen(buf) > 10 && !strncmp(buf, "[Curve", 6)) - { - int nid; - if (param_set == -1) - goto parse_error; - nid = lookup_curve(buf); - if (nid == NID_undef) - goto parse_error; - curve_nids[param_set] = nid; - } - - if (strlen(buf) > 4 && buf[0] == '[' && buf[2] == '-') - { - int nid = lookup_curve2(buf + 1); - if (nid == NID_undef) - goto parse_error; - if (group) - EC_GROUP_free(group); - group = EC_GROUP_new_by_curve_name(nid); - if (!group) - { - fprintf(stderr, "ERROR: unsupported curve %s\n", buf + 1); - return 1; - } - } - - if (strlen(buf) > 6 && !strncmp(buf, "[E", 2)) - { - md = eparse_md(buf); - if (md == NULL) - goto parse_error; - continue; - } - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - if (!strcmp(keyword, "QeCAVSx") || !strcmp(keyword, "QCAVSx")) - { - if (!do_hex2bn(&cx, value)) - goto parse_error; - } - else if (!strcmp(keyword, "QeCAVSy") || !strcmp(keyword, "QCAVSy")) - { - if (!do_hex2bn(&cy, value)) - goto parse_error; - if (do_verify == 0) - ec_output_Zhash(out, exout, group, - NULL, NULL, NULL, - cx, cy, md, rhash, rhashlen); - } - else if (!strcmp(keyword, "deIUT")) - { - if (!do_hex2bn(&id, value)) - goto parse_error; - } - else if (!strcmp(keyword, "QeIUTx")) - { - if (!do_hex2bn(&ix, value)) - goto parse_error; - } - else if (!strcmp(keyword, "QeIUTy")) - { - if (!do_hex2bn(&iy, value)) - goto parse_error; - } - else if (!strcmp(keyword, "CAVSHashZZ")) - { - if (!md) - goto parse_error; - rhash = hex2bin_m(value, &rhashlen); - if (!rhash || rhashlen != M_EVP_MD_size(md)) - goto parse_error; - ec_output_Zhash(out, exout, group, ix, iy, id, cx, cy, - md, rhash, rhashlen); - } - } - rv = 0; - parse_error: - if (id) - BN_free(id); - if (ix) - BN_free(ix); - if (iy) - BN_free(iy); - if (cx) - BN_free(cx); - if (cy) - BN_free(cy); - if (group) - EC_GROUP_free(group); - if (in && in != stdin) - fclose(in); - if (out && out != stdout) - fclose(out); - if (rv) - fprintf(stderr, "Error Parsing request file\n"); - return rv; - } - -#endif diff --git a/fips/ecdsa/Makefile b/fips/ecdsa/Makefile deleted file mode 100644 index b8a02c9d0c..0000000000 --- a/fips/ecdsa/Makefile +++ /dev/null @@ -1,130 +0,0 @@ -# -# OpenSSL/fips/ecdsa/Makefile -# - -DIR= ecdsa -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST= fips_ecdsavs.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= fips_ecdsa_lib.c fips_ecdsa_sign.c fips_ecdsa_selftest.c -LIBOBJ= fips_ecdsa_lib.o fips_ecdsa_sign.o fips_ecdsa_selftest.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= $(EXHEADER) - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -fips_test: - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_ecdsa_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_ecdsa_lib.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_ecdsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_ecdsa_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/fips.h -fips_ecdsa_lib.o: ../../include/openssl/opensslconf.h -fips_ecdsa_lib.o: ../../include/openssl/opensslv.h -fips_ecdsa_lib.o: ../../include/openssl/ossl_typ.h -fips_ecdsa_lib.o: ../../include/openssl/safestack.h -fips_ecdsa_lib.o: ../../include/openssl/stack.h -fips_ecdsa_lib.o: ../../include/openssl/symhacks.h fips_ecdsa_lib.c -fips_ecdsa_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_ecdsa_selftest.o: ../../include/openssl/bn.h -fips_ecdsa_selftest.o: ../../include/openssl/crypto.h -fips_ecdsa_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_ecdsa_selftest.o: ../../include/openssl/ecdsa.h -fips_ecdsa_selftest.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_ecdsa_selftest.o: ../../include/openssl/fips.h -fips_ecdsa_selftest.o: ../../include/openssl/lhash.h -fips_ecdsa_selftest.o: ../../include/openssl/obj_mac.h -fips_ecdsa_selftest.o: ../../include/openssl/objects.h -fips_ecdsa_selftest.o: ../../include/openssl/opensslconf.h -fips_ecdsa_selftest.o: ../../include/openssl/opensslv.h -fips_ecdsa_selftest.o: ../../include/openssl/ossl_typ.h -fips_ecdsa_selftest.o: ../../include/openssl/safestack.h -fips_ecdsa_selftest.o: ../../include/openssl/stack.h -fips_ecdsa_selftest.o: ../../include/openssl/symhacks.h fips_ecdsa_selftest.c -fips_ecdsa_sign.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_ecdsa_sign.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_ecdsa_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_ecdsa_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h -fips_ecdsa_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h -fips_ecdsa_sign.o: ../../include/openssl/obj_mac.h -fips_ecdsa_sign.o: ../../include/openssl/objects.h -fips_ecdsa_sign.o: ../../include/openssl/opensslconf.h -fips_ecdsa_sign.o: ../../include/openssl/opensslv.h -fips_ecdsa_sign.o: ../../include/openssl/ossl_typ.h -fips_ecdsa_sign.o: ../../include/openssl/safestack.h -fips_ecdsa_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h -fips_ecdsa_sign.o: ../../include/openssl/symhacks.h fips_ecdsa_sign.c -fips_ecdsavs.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_ecdsavs.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_ecdsavs.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_ecdsavs.o: ../../include/openssl/ec.h ../../include/openssl/ecdsa.h -fips_ecdsavs.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_ecdsavs.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_ecdsavs.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_ecdsavs.o: ../../include/openssl/objects.h -fips_ecdsavs.o: ../../include/openssl/opensslconf.h -fips_ecdsavs.o: ../../include/openssl/opensslv.h -fips_ecdsavs.o: ../../include/openssl/ossl_typ.h -fips_ecdsavs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_ecdsavs.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_ecdsavs.c diff --git a/fips/ecdsa/fips_ecdsa_lib.c b/fips/ecdsa/fips_ecdsa_lib.c deleted file mode 100644 index b16bc5b505..0000000000 --- a/fips/ecdsa/fips_ecdsa_lib.c +++ /dev/null @@ -1,93 +0,0 @@ -/* fips_dsa_lib.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2007. - */ -/* ==================================================================== - * Copyright (c) 2007 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include - -ECDSA_SIG *FIPS_ecdsa_sig_new(void) - { - ECDSA_SIG *sig; - sig = OPENSSL_malloc(sizeof(ECDSA_SIG)); - if (!sig) - return NULL; - sig->r = BN_new(); - sig->s = BN_new(); - if (!sig->r || !sig->s) - { - FIPS_ecdsa_sig_free(sig); - return NULL; - } - return sig; - } - -void FIPS_ecdsa_sig_free(ECDSA_SIG *sig) - { - if (sig) - { - if (sig->r) - BN_free(sig->r); - if (sig->s) - BN_free(sig->s); - OPENSSL_free(sig); - } - } - diff --git a/fips/ecdsa/fips_ecdsa_selftest.c b/fips/ecdsa/fips_ecdsa_selftest.c deleted file mode 100644 index 7d1007e19d..0000000000 --- a/fips/ecdsa/fips_ecdsa_selftest.c +++ /dev/null @@ -1,198 +0,0 @@ -/* fips/ecdsa/fips_ecdsa_selftest.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2011. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef OPENSSL_FIPS - -__fips_constseg -static const char P_224_name[] = "ECDSA P-224"; - -__fips_constseg -static const unsigned char P_224_d[] = { - 0x98,0x1f,0xb5,0xf1,0xfc,0x87,0x1d,0x7d,0xde,0x1e,0x01,0x64, - 0x09,0x9b,0xe7,0x1b,0x9f,0xad,0x63,0xdd,0x33,0x01,0xd1,0x50, - 0x80,0x93,0x50,0x30 -}; -__fips_constseg -static const unsigned char P_224_qx[] = { - 0x95,0x47,0x99,0x44,0x29,0x8f,0x51,0x39,0xe2,0x53,0xec,0x79, - 0xb0,0x4d,0xde,0x87,0x1a,0x76,0x54,0xd5,0x96,0xb8,0x7a,0x6d, - 0xf4,0x1c,0x2c,0x87 -}; -__fips_constseg -static const unsigned char P_224_qy[] = { - 0x91,0x5f,0xd5,0x31,0xdd,0x24,0xe5,0x78,0xd9,0x08,0x24,0x8a, - 0x49,0x99,0xec,0x55,0xf2,0x82,0xb3,0xc4,0xb7,0x33,0x68,0xe4, - 0x24,0xa9,0x12,0x82 -}; - -#ifndef OPENSSL_NO_EC2M - -__fips_constseg -static const char K_233_name[] = "ECDSA K-233"; - -__fips_constseg -static const unsigned char K_233_d[] = { - 0x10,0x0a,0xe0,0xae,0xcf,0x1b,0xa4,0x55,0x1a,0xd4,0xc8,0x3f, - 0xc3,0x7e,0xdc,0x97,0x40,0x2c,0x6a,0xc8,0xe2,0x50,0x09,0xf8, - 0x1c,0x70,0x23,0xcb,0xde -}; -__fips_constseg -static const unsigned char K_233_qx[] = { - 0x01,0xa6,0xbf,0x38,0x32,0xe2,0xd7,0x15,0x4a,0xc8,0xaa,0x1f, - 0x9d,0xdb,0xb8,0x8f,0x9a,0x9b,0xc0,0xb4,0xc1,0xb6,0xa5,0x5c, - 0x93,0xb9,0x8a,0x83,0x65,0xe9 -}; -__fips_constseg -static const unsigned char K_233_qy[] = { - 0x01,0x81,0x3d,0xfe,0x38,0x56,0x8f,0x3c,0x23,0x29,0xc6,0x59, - 0xcb,0xa5,0x90,0x86,0xd1,0x8c,0xd8,0xb0,0xf2,0xd4,0x35,0x2b, - 0x11,0x40,0x33,0x9a,0x88,0x10 -}; - -#endif - -typedef struct - { - int curve; - const char *name; - const unsigned char *x; - size_t xlen; - const unsigned char *y; - size_t ylen; - const unsigned char *d; - size_t dlen; - } EC_SELFTEST_DATA; - -#define make_ecdsa_test(nid, pr) { nid, pr##_name, \ - pr##_qx, sizeof(pr##_qx), \ - pr##_qy, sizeof(pr##_qy), \ - pr##_d, sizeof(pr##_d)} - -static EC_SELFTEST_DATA test_ec_data[] = - { - make_ecdsa_test(NID_secp224r1, P_224), -#ifndef OPENSSL_NO_EC2M - make_ecdsa_test(NID_sect233k1, K_233) -#endif - }; - -int FIPS_selftest_ecdsa() - { - EC_KEY *ec = NULL; - BIGNUM *x = NULL, *y = NULL, *d = NULL; - EVP_PKEY pk; - int rv = 0; - size_t i; - - for (i = 0; i < sizeof(test_ec_data)/sizeof(EC_SELFTEST_DATA); i++) - { - EC_SELFTEST_DATA *ecd = test_ec_data + i; - - x = BN_bin2bn(ecd->x, ecd->xlen, x); - y = BN_bin2bn(ecd->y, ecd->ylen, y); - d = BN_bin2bn(ecd->d, ecd->dlen, d); - - if (!x || !y || !d) - goto err; - - ec = EC_KEY_new_by_curve_name(ecd->curve); - if (!ec) - goto err; - - if (!EC_KEY_set_public_key_affine_coordinates(ec, x, y)) - goto err; - - if (!EC_KEY_set_private_key(ec, d)) - goto err; - - pk.type = EVP_PKEY_EC; - pk.pkey.ec = ec; - - if (!fips_pkey_signature_test(FIPS_TEST_SIGNATURE, &pk, NULL, 0, - NULL, 0, EVP_sha512(), 0, - ecd->name)) - goto err; - EC_KEY_free(ec); - ec = NULL; - } - - rv = 1; - - err: - - if (x) - BN_clear_free(x); - if (y) - BN_clear_free(y); - if (d) - BN_clear_free(d); - if (ec) - EC_KEY_free(ec); - - return rv; - - } - -#endif diff --git a/fips/ecdsa/fips_ecdsa_sign.c b/fips/ecdsa/fips_ecdsa_sign.c deleted file mode 100644 index a7839ee592..0000000000 --- a/fips/ecdsa/fips_ecdsa_sign.c +++ /dev/null @@ -1,114 +0,0 @@ -/* fips_ecdsa_sign.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2011. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include - -ECDSA_SIG * FIPS_ecdsa_sign_ctx(EC_KEY *key, EVP_MD_CTX *ctx) - { - ECDSA_SIG *s; - unsigned char dig[EVP_MAX_MD_SIZE]; - unsigned int dlen; - FIPS_digestfinal(ctx, dig, &dlen); - s = FIPS_ecdsa_sign_digest(key, dig, dlen); - OPENSSL_cleanse(dig, dlen); - return s; - } - -int FIPS_ecdsa_verify_ctx(EC_KEY *key, EVP_MD_CTX *ctx, ECDSA_SIG *s) - { - int ret=-1; - unsigned char dig[EVP_MAX_MD_SIZE]; - unsigned int dlen; - FIPS_digestfinal(ctx, dig, &dlen); - ret = FIPS_ecdsa_verify_digest(key, dig, dlen, s); - OPENSSL_cleanse(dig, dlen); - return ret; - } - -int FIPS_ecdsa_verify(EC_KEY *key, const unsigned char *msg, size_t msglen, - const EVP_MD *mhash, ECDSA_SIG *s) - { - int ret=-1; - unsigned char dig[EVP_MAX_MD_SIZE]; - unsigned int dlen; - FIPS_digest(msg, msglen, dig, &dlen, mhash); - ret=FIPS_ecdsa_verify_digest(key, dig, dlen, s); - OPENSSL_cleanse(dig, dlen); - return ret; - } - -ECDSA_SIG * FIPS_ecdsa_sign(EC_KEY *key, - const unsigned char *msg, size_t msglen, - const EVP_MD *mhash) - { - ECDSA_SIG *s; - unsigned char dig[EVP_MAX_MD_SIZE]; - unsigned int dlen; - FIPS_digest(msg, msglen, dig, &dlen, mhash); - s = FIPS_ecdsa_sign_digest(key, dig, dlen); - OPENSSL_cleanse(dig, dlen); - return s; - } - diff --git a/fips/ecdsa/fips_ecdsavs.c b/fips/ecdsa/fips_ecdsavs.c deleted file mode 100644 index 5745a6d37a..0000000000 --- a/fips/ecdsa/fips_ecdsavs.c +++ /dev/null @@ -1,533 +0,0 @@ -/* fips/ecdsa/fips_ecdsavs.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -#define OPENSSL_FIPSAPI -#include -#include - -#ifndef OPENSSL_FIPS - -int main(int argc, char **argv) -{ - printf("No FIPS ECDSA support\n"); - return(0); -} -#else - -#include -#include -#include -#include -#include -#include -#include "fips_utl.h" - -#include - - -static int elookup_curve(char *in, char *curve_name, const EVP_MD **pmd) - { - char *cname, *p; - /* Copy buffer as we will change it */ - strcpy(curve_name, in); - cname = curve_name + 1; - p = strchr(cname, ']'); - if (!p) - { - fprintf(stderr, "Parse error: missing ]\n"); - return NID_undef; - } - *p = 0; - p = strchr(cname, ','); - if (p) - { - if (!pmd) - { - fprintf(stderr, "Parse error: unexpected digest\n"); - return NID_undef; - } - *p = 0; - p++; - - if (!strcmp(p, "SHA-1")) - *pmd = EVP_sha1(); - else if (!strcmp(p, "SHA-224")) - *pmd = EVP_sha224(); - else if (!strcmp(p, "SHA-256")) - *pmd = EVP_sha256(); - else if (!strcmp(p, "SHA-384")) - *pmd = EVP_sha384(); - else if (!strcmp(p, "SHA-512")) - *pmd = EVP_sha512(); - else - { - fprintf(stderr, "Unknown digest %s\n", p); - return NID_undef; - } - } - else if(pmd) - *pmd = EVP_sha1(); - - if (!strcmp(cname, "B-163")) - return NID_sect163r2; - if (!strcmp(cname, "B-233")) - return NID_sect233r1; - if (!strcmp(cname, "B-283")) - return NID_sect283r1; - if (!strcmp(cname, "B-409")) - return NID_sect409r1; - if (!strcmp(cname, "B-571")) - return NID_sect571r1; - if (!strcmp(cname, "K-163")) - return NID_sect163k1; - if (!strcmp(cname, "K-233")) - return NID_sect233k1; - if (!strcmp(cname, "K-283")) - return NID_sect283k1; - if (!strcmp(cname, "K-409")) - return NID_sect409k1; - if (!strcmp(cname, "K-571")) - return NID_sect571k1; - if (!strcmp(cname, "P-192")) - return NID_X9_62_prime192v1; - if (!strcmp(cname, "P-224")) - return NID_secp224r1; - if (!strcmp(cname, "P-256")) - return NID_X9_62_prime256v1; - if (!strcmp(cname, "P-384")) - return NID_secp384r1; - if (!strcmp(cname, "P-521")) - return NID_secp521r1; - - fprintf(stderr, "Unknown Curve name %s\n", cname); - return NID_undef; - } - -static int ec_get_pubkey(EC_KEY *key, BIGNUM *x, BIGNUM *y) - { - const EC_POINT *pt; - const EC_GROUP *grp; - const EC_METHOD *meth; - int rv; - BN_CTX *ctx; - ctx = BN_CTX_new(); - if (!ctx) - return 0; - grp = EC_KEY_get0_group(key); - pt = EC_KEY_get0_public_key(key); - meth = EC_GROUP_method_of(grp); - if (EC_METHOD_get_field_type(meth) == NID_X9_62_prime_field) - rv = EC_POINT_get_affine_coordinates_GFp(grp, pt, x, y, ctx); - else -#ifdef OPENSSL_NO_EC2M - { - fprintf(stderr, "ERROR: GF2m not supported\n"); - exit(1); - } -#else - rv = EC_POINT_get_affine_coordinates_GF2m(grp, pt, x, y, ctx); -#endif - - BN_CTX_free(ctx); - - return rv; - - } - -static int KeyPair(FILE *in, FILE *out) - { - char buf[2048], lbuf[2048]; - char *keyword, *value; - int curve_nid = NID_undef; - int i, count; - BIGNUM *Qx = NULL, *Qy = NULL; - const BIGNUM *d = NULL; - EC_KEY *key = NULL; - Qx = BN_new(); - Qy = BN_new(); - while(fgets(buf, sizeof buf, in) != NULL) - { - if (*buf == '[' && buf[2] == '-') - { - if (buf[2] == '-') - curve_nid = elookup_curve(buf, lbuf, NULL); - fputs(buf, out); - continue; - } - if (!parse_line(&keyword, &value, lbuf, buf)) - { - fputs(buf, out); - continue; - } - if (!strcmp(keyword, "N")) - { - count = atoi(value); - - for (i = 0; i < count; i++) - { - - key = EC_KEY_new_by_curve_name(curve_nid); - if (!EC_KEY_generate_key(key)) - { - fprintf(stderr, "Error generating key\n"); - return 0; - } - - if (!ec_get_pubkey(key, Qx, Qy)) - { - fprintf(stderr, "Error getting public key\n"); - return 0; - } - - d = EC_KEY_get0_private_key(key); - - do_bn_print_name(out, "d", d); - do_bn_print_name(out, "Qx", Qx); - do_bn_print_name(out, "Qy", Qy); - fputs(RESP_EOL, out); - EC_KEY_free(key); - - } - - } - - } - BN_free(Qx); - BN_free(Qy); - return 1; - } - -static int PKV(FILE *in, FILE *out) - { - - char buf[2048], lbuf[2048]; - char *keyword, *value; - int curve_nid = NID_undef; - BIGNUM *Qx = NULL, *Qy = NULL; - EC_KEY *key = NULL; - while(fgets(buf, sizeof buf, in) != NULL) - { - fputs(buf, out); - if (*buf == '[' && buf[2] == '-') - { - curve_nid = elookup_curve(buf, lbuf, NULL); - if (curve_nid == NID_undef) - return 0; - - } - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - if (!strcmp(keyword, "Qx")) - { - if (!do_hex2bn(&Qx, value)) - { - fprintf(stderr, "Invalid Qx value\n"); - return 0; - } - } - if (!strcmp(keyword, "Qy")) - { - int rv; - if (!do_hex2bn(&Qy, value)) - { - fprintf(stderr, "Invalid Qy value\n"); - return 0; - } - key = EC_KEY_new_by_curve_name(curve_nid); - no_err = 1; - rv = EC_KEY_set_public_key_affine_coordinates(key, Qx, Qy); - no_err = 0; - EC_KEY_free(key); - fprintf(out, "Result = %s" RESP_EOL, rv ? "P":"F"); - } - - } - BN_free(Qx); - BN_free(Qy); - return 1; - } - -static int SigGen(FILE *in, FILE *out) - { - char buf[2048], lbuf[2048]; - char *keyword, *value; - unsigned char *msg; - int curve_nid = NID_undef; - long mlen; - BIGNUM *Qx = NULL, *Qy = NULL; - EC_KEY *key = NULL; - ECDSA_SIG *sig = NULL; - const EVP_MD *digest = NULL; - Qx = BN_new(); - Qy = BN_new(); - while(fgets(buf, sizeof buf, in) != NULL) - { - fputs(buf, out); - if (*buf == '[') - { - curve_nid = elookup_curve(buf, lbuf, &digest); - if (curve_nid == NID_undef) - return 0; - } - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - if (!strcmp(keyword, "Msg")) - { - msg = hex2bin_m(value, &mlen); - if (!msg) - { - fprintf(stderr, "Invalid Message\n"); - return 0; - } - - key = EC_KEY_new_by_curve_name(curve_nid); - if (!EC_KEY_generate_key(key)) - { - fprintf(stderr, "Error generating key\n"); - return 0; - } - - if (!ec_get_pubkey(key, Qx, Qy)) - { - fprintf(stderr, "Error getting public key\n"); - return 0; - } - - sig = FIPS_ecdsa_sign(key, msg, mlen, digest); - - if (!sig) - { - fprintf(stderr, "Error signing message\n"); - return 0; - } - - do_bn_print_name(out, "Qx", Qx); - do_bn_print_name(out, "Qy", Qy); - do_bn_print_name(out, "R", sig->r); - do_bn_print_name(out, "S", sig->s); - - EC_KEY_free(key); - OPENSSL_free(msg); - FIPS_ecdsa_sig_free(sig); - - } - - } - BN_free(Qx); - BN_free(Qy); - return 1; - } - -static int SigVer(FILE *in, FILE *out) - { - char buf[2048], lbuf[2048]; - char *keyword, *value; - unsigned char *msg = NULL; - int curve_nid = NID_undef; - long mlen; - BIGNUM *Qx = NULL, *Qy = NULL; - EC_KEY *key = NULL; - ECDSA_SIG sg, *sig = &sg; - const EVP_MD *digest = NULL; - sig->r = NULL; - sig->s = NULL; - while(fgets(buf, sizeof buf, in) != NULL) - { - fputs(buf, out); - if (*buf == '[') - { - curve_nid = elookup_curve(buf, lbuf, &digest); - if (curve_nid == NID_undef) - return 0; - } - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - if (!strcmp(keyword, "Msg")) - { - msg = hex2bin_m(value, &mlen); - if (!msg) - { - fprintf(stderr, "Invalid Message\n"); - return 0; - } - } - - if (!strcmp(keyword, "Qx")) - { - if (!do_hex2bn(&Qx, value)) - { - fprintf(stderr, "Invalid Qx value\n"); - return 0; - } - } - if (!strcmp(keyword, "Qy")) - { - if (!do_hex2bn(&Qy, value)) - { - fprintf(stderr, "Invalid Qy value\n"); - return 0; - } - } - if (!strcmp(keyword, "R")) - { - if (!do_hex2bn(&sig->r, value)) - { - fprintf(stderr, "Invalid R value\n"); - return 0; - } - } - if (!strcmp(keyword, "S")) - { - int rv; - if (!do_hex2bn(&sig->s, value)) - { - fprintf(stderr, "Invalid S value\n"); - return 0; - } - key = EC_KEY_new_by_curve_name(curve_nid); - rv = EC_KEY_set_public_key_affine_coordinates(key, Qx, Qy); - - if (rv != 1) - { - fprintf(stderr, "Error setting public key\n"); - return 0; - } - - no_err = 1; - rv = FIPS_ecdsa_verify(key, msg, mlen, digest, sig); - EC_KEY_free(key); - if (msg) - OPENSSL_free(msg); - no_err = 0; - - fprintf(out, "Result = %s" RESP_EOL, rv ? "P":"F"); - } - - } - if (sig->r) - BN_free(sig->r); - if (sig->s) - BN_free(sig->s); - if (Qx) - BN_free(Qx); - if (Qy) - BN_free(Qy); - return 1; - } -#ifdef FIPS_ALGVS -int fips_ecdsavs_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - FILE *in = NULL, *out = NULL; - const char *cmd = argv[1]; - int rv = 0; - fips_algtest_init(); - - if (argc == 4) - { - in = fopen(argv[2], "r"); - if (!in) - { - fprintf(stderr, "Error opening input file\n"); - exit(1); - } - out = fopen(argv[3], "w"); - if (!out) - { - fprintf(stderr, "Error opening output file\n"); - exit(1); - } - } - else if (argc == 2) - { - in = stdin; - out = stdout; - } - - if (!cmd) - { - fprintf(stderr, "fips_ecdsavs [KeyPair|PKV|SigGen|SigVer]\n"); - return 1; - } - if (!strcmp(cmd, "KeyPair")) - rv = KeyPair(in, out); - else if (!strcmp(cmd, "PKV")) - rv = PKV(in, out); - else if (!strcmp(cmd, "SigVer")) - rv = SigVer(in, out); - else if (!strcmp(cmd, "SigGen")) - rv = SigGen(in, out); - else - { - fprintf(stderr, "Unknown command %s\n", cmd); - return 1; - } - - if (argc == 4) - { - fclose(in); - fclose(out); - } - - if (rv <= 0) - { - fprintf(stderr, "Error running %s\n", cmd); - return 1; - } - - return 0; - } - -#endif diff --git a/fips/fips.c b/fips/fips.c deleted file mode 100644 index 36ac8d1b0c..0000000000 --- a/fips/fips.c +++ /dev/null @@ -1,443 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "fips_locl.h" -#include "fips_auth.h" - -#ifdef OPENSSL_FIPS - -#include - -#ifndef PATH_MAX -#define PATH_MAX 1024 -#endif - -#define atox(c) ((c)>='a'?((c)-'a'+10):((c)>='A'?(c)-'A'+10:(c)-'0')) - -static int fips_selftest_fail = 0; -static int fips_auth_fail = 0; -static int fips_mode = 0; -static int fips_started = 0; - -static int fips_is_owning_thread(void); -static int fips_set_owning_thread(void); -static int fips_clear_owning_thread(void); -static unsigned char *fips_signature_witness(void); - -#define fips_w_lock() CRYPTO_w_lock(CRYPTO_LOCK_FIPS) -#define fips_w_unlock() CRYPTO_w_unlock(CRYPTO_LOCK_FIPS) -#define fips_r_lock() CRYPTO_r_lock(CRYPTO_LOCK_FIPS) -#define fips_r_unlock() CRYPTO_r_unlock(CRYPTO_LOCK_FIPS) - -static void fips_set_mode(int onoff) - { - int owning_thread = fips_is_owning_thread(); - - if (fips_started) - { - if (!owning_thread) fips_w_lock(); - fips_mode = onoff; - if (!owning_thread) fips_w_unlock(); - } - } - -int FIPS_module_mode(void) - { - int ret = 0; - int owning_thread = fips_is_owning_thread(); - - if (fips_started) - { - if (!owning_thread) fips_r_lock(); - ret = fips_mode; - if (!owning_thread) fips_r_unlock(); - } - return ret; - } - -int FIPS_selftest_failed(void) - { - int ret = 0; - if (fips_started) - { - int owning_thread = fips_is_owning_thread(); - - if (!owning_thread) fips_r_lock(); - ret = fips_selftest_fail; - if (!owning_thread) fips_r_unlock(); - } - return ret; - } - -/* Selftest failure fatal exit routine. This will be called - * during *any* cryptographic operation. It has the minimum - * overhead possible to avoid too big a performance hit. - */ - -void FIPS_selftest_check(void) - { - if (fips_selftest_fail) - { - OpenSSLDie(__FILE__,__LINE__, "FATAL FIPS SELFTEST FAILURE"); - } - } - -void fips_set_selftest_fail(void) - { - fips_selftest_fail = 1; - } - -extern const void *FIPS_text_start(), *FIPS_text_end(); -extern const unsigned char FIPS_rodata_start[], FIPS_rodata_end[]; -unsigned char FIPS_signature [20] = { 0 }; -__fips_constseg -static const char FIPS_hmac_key[]="etaonrishdlcupfm"; - -unsigned int FIPS_incore_fingerprint(unsigned char *sig,unsigned int len) - { - const unsigned char *p1 = FIPS_text_start(); - const unsigned char *p2 = FIPS_text_end(); - const unsigned char *p3 = FIPS_rodata_start; - const unsigned char *p4 = FIPS_rodata_end; - HMAC_CTX c; - - HMAC_CTX_init(&c); - HMAC_Init(&c,FIPS_hmac_key,strlen(FIPS_hmac_key),EVP_sha1()); - - /* detect overlapping regions */ - if (p1<=p3 && p2>=p3) - p3=p1, p4=p2>p4?p2:p4, p1=NULL, p2=NULL; - else if (p3<=p1 && p4>=p1) - p3=p3, p4=p2>p4?p2:p4, p1=NULL, p2=NULL; - - if (p1) - HMAC_Update(&c,p1,(size_t)p2-(size_t)p1); - - if (FIPS_signature>=p3 && FIPS_signature=FIPS_rodata_start && FIPS_signature -#include - -#ifndef OPENSSL_FIPS -#error FIPS is disabled. -#endif - -#ifdef OPENSSL_FIPS - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef OPENSSL_FIPSCANISTER -#define OPENSSL_FIPSCAPABLE -#endif - -struct dsa_st; -struct ec_key_st; -struct rsa_st; -struct evp_pkey_st; -struct env_md_st; -struct env_md_ctx_st; -struct evp_cipher_st; -struct evp_cipher_ctx_st; -struct ec_method_st; -struct ecdsa_method; -struct dh_method; -struct CMAC_CTX_st; -struct hmac_ctx_st; - -unsigned long FIPS_module_version(void); -const char *FIPS_module_version_text(void); - -int FIPS_module_mode_set(int onoff, const char *auth); -int FIPS_module_mode(void); -const void *FIPS_rand_check(void); -int FIPS_selftest(void); -int FIPS_selftest_failed(void); -void FIPS_selftest_check(void); -int FIPS_selftest_sha1(void); -int FIPS_selftest_aes_ccm(void); -int FIPS_selftest_aes_gcm(void); -int FIPS_selftest_aes_xts(void); -int FIPS_selftest_aes(void); -int FIPS_selftest_des(void); -int FIPS_selftest_rsa(void); -int FIPS_selftest_dsa(void); -int FIPS_selftest_ecdsa(void); -int FIPS_selftest_ecdh(void); -void FIPS_x931_stick(int onoff); -void FIPS_drbg_stick(int onoff); -int FIPS_selftest_x931(void); -int FIPS_selftest_hmac(void); -int FIPS_selftest_drbg(void); -int FIPS_selftest_drbg_all(void); -int FIPS_selftest_cmac(void); - -unsigned int FIPS_incore_fingerprint(unsigned char *sig,unsigned int len); -int FIPS_check_incore_fingerprint(void); - -void fips_set_selftest_fail(void); -int fips_check_rsa(struct rsa_st *rsa); -int fips_check_rsa_prng(struct rsa_st *rsa, int bits); -int fips_check_dsa_prng(struct dsa_st *dsa, size_t L, size_t N); -int fips_check_ec_prng(struct ec_key_st *ec); - -void FIPS_set_locking_callbacks(void (*func)(int mode, int type, - const char *file,int line), - int (*add_cb)(int *pointer, int amount, - int type, const char *file, int line)); - -void FIPS_set_error_callbacks( - void (*put_cb)(int lib, int func,int reason,const char *file,int line), - void (*add_cb)(int num, va_list args) ); - -void FIPS_set_malloc_callbacks( - void *(*malloc_cb)(int num, const char *file, int line), - void (*free_cb)(void *)); - -void FIPS_get_timevec(unsigned char *buf, unsigned long *pctr); - -/* POST callback operation value: */ -/* All tests started */ -#define FIPS_POST_BEGIN 1 -/* All tests end: result in id */ -#define FIPS_POST_END 2 -/* One individual test started */ -#define FIPS_POST_STARTED 3 -/* Individual test success */ -#define FIPS_POST_SUCCESS 4 -/* Individual test failure */ -#define FIPS_POST_FAIL 5 -/* Induce failure in test if zero return */ -#define FIPS_POST_CORRUPT 6 - -/* Test IDs */ -/* HMAC integrity test */ -#define FIPS_TEST_INTEGRITY 1 -/* Digest test */ -#define FIPS_TEST_DIGEST 2 -/* Symmetric cipher test */ -#define FIPS_TEST_CIPHER 3 -/* Public key signature test */ -#define FIPS_TEST_SIGNATURE 4 -/* HMAC test */ -#define FIPS_TEST_HMAC 5 -/* CMAC test */ -#define FIPS_TEST_CMAC 6 -/* GCM test */ -#define FIPS_TEST_GCM 7 -/* CCM test */ -#define FIPS_TEST_CCM 8 -/* XTS test */ -#define FIPS_TEST_XTS 9 -/* X9.31 PRNG */ -#define FIPS_TEST_X931 10 -/* DRNB */ -#define FIPS_TEST_DRBG 11 -/* Keygen pairwise consistency test */ -#define FIPS_TEST_PAIRWISE 12 -/* Continuous PRNG test */ -#define FIPS_TEST_CONTINUOUS 13 -/* ECDH test */ -#define FIPS_TEST_ECDH 14 - -/* Minimum authorisation string length */ -#define FIPS_AUTH_MIN_LEN 16 - -void FIPS_post_set_callback( - int (*post_cb)(int op, int id, int subid, void *ex)); - -#define FIPS_ERROR_IGNORED(alg) OpenSSLDie(__FILE__, __LINE__, \ - alg " previous FIPS forbidden algorithm error ignored"); - -int fips_pkey_signature_test(int id, struct evp_pkey_st *pkey, - const unsigned char *tbs, size_t tbslen, - const unsigned char *kat, size_t katlen, - const struct env_md_st *digest, int pad_mode, - const char *fail_str); - -int fips_cipher_test(int id, struct evp_cipher_ctx_st *ctx, - const struct evp_cipher_st *cipher, - const unsigned char *key, - const unsigned char *iv, - const unsigned char *plaintext, - const unsigned char *ciphertext, - int len); - -const struct env_md_st *FIPS_get_digestbynid(int nid); - -const struct evp_cipher_st *FIPS_get_cipherbynid(int nid); - -struct rsa_st *FIPS_rsa_new(void); -void FIPS_rsa_free(struct rsa_st *r); -int FIPS_rsa_sign_ctx(struct rsa_st *rsa, struct env_md_ctx_st *ctx, - int rsa_pad_mode, int saltlen, - const struct env_md_st *mgf1Hash, - unsigned char *sigret, unsigned int *siglen); -int FIPS_rsa_sign_digest(struct rsa_st *rsa, - const unsigned char *md, int md_len, - const struct env_md_st *mhash, - int rsa_pad_mode, int saltlen, - const struct env_md_st *mgf1Hash, - unsigned char *sigret, unsigned int *siglen); -int FIPS_rsa_verify_ctx(struct rsa_st *rsa, struct env_md_ctx_st *ctx, - int rsa_pad_mode, int saltlen, - const struct env_md_st *mgf1Hash, - const unsigned char *sigbuf, unsigned int siglen); -int FIPS_rsa_verify_digest(struct rsa_st *rsa, - const unsigned char *dig, int diglen, - const struct env_md_st *mhash, - int rsa_pad_mode, int saltlen, - const struct env_md_st *mgf1Hash, - const unsigned char *sigbuf, unsigned int siglen); - -int FIPS_rsa_sign(struct rsa_st *rsa, const unsigned char *msg, int msglen, - const struct env_md_st *mhash, int rsa_pad_mode, - int saltlen, const struct env_md_st *mgf1Hash, - unsigned char *sigret, unsigned int *siglen); - -int FIPS_rsa_verify(struct rsa_st *rsa, const unsigned char *msg, int msglen, - const struct env_md_st *mhash, int rsa_pad_mode, - int saltlen, const struct env_md_st *mgf1Hash, - const unsigned char *sigbuf, unsigned int siglen); - -#ifdef OPENSSL_FIPSCAPABLE - -int FIPS_digestinit(EVP_MD_CTX *ctx, const EVP_MD *type); -int FIPS_digestupdate(EVP_MD_CTX *ctx, const void *data, size_t count); -int FIPS_digestfinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size); -int FIPS_md_ctx_cleanup(EVP_MD_CTX *ctx); - -int FIPS_cipherinit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, const unsigned char *iv, int enc); -int FIPS_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, - const unsigned char *in, unsigned int inl); -int FIPS_cipher_ctx_cleanup(EVP_CIPHER_CTX *c); - -const EVP_CIPHER *FIPS_evp_aes_128_cbc(void); -const EVP_CIPHER *FIPS_evp_aes_128_ccm(void); -const EVP_CIPHER *FIPS_evp_aes_128_cfb1(void); -const EVP_CIPHER *FIPS_evp_aes_128_cfb128(void); -const EVP_CIPHER *FIPS_evp_aes_128_cfb8(void); -const EVP_CIPHER *FIPS_evp_aes_128_ctr(void); -const EVP_CIPHER *FIPS_evp_aes_128_ecb(void); -const EVP_CIPHER *FIPS_evp_aes_128_gcm(void); -const EVP_CIPHER *FIPS_evp_aes_128_ofb(void); -const EVP_CIPHER *FIPS_evp_aes_128_xts(void); -const EVP_CIPHER *FIPS_evp_aes_192_cbc(void); -const EVP_CIPHER *FIPS_evp_aes_192_ccm(void); -const EVP_CIPHER *FIPS_evp_aes_192_cfb1(void); -const EVP_CIPHER *FIPS_evp_aes_192_cfb128(void); -const EVP_CIPHER *FIPS_evp_aes_192_cfb8(void); -const EVP_CIPHER *FIPS_evp_aes_192_ctr(void); -const EVP_CIPHER *FIPS_evp_aes_192_ecb(void); -const EVP_CIPHER *FIPS_evp_aes_192_gcm(void); -const EVP_CIPHER *FIPS_evp_aes_192_ofb(void); -const EVP_CIPHER *FIPS_evp_aes_256_cbc(void); -const EVP_CIPHER *FIPS_evp_aes_256_ccm(void); -const EVP_CIPHER *FIPS_evp_aes_256_cfb1(void); -const EVP_CIPHER *FIPS_evp_aes_256_cfb128(void); -const EVP_CIPHER *FIPS_evp_aes_256_cfb8(void); -const EVP_CIPHER *FIPS_evp_aes_256_ctr(void); -const EVP_CIPHER *FIPS_evp_aes_256_ecb(void); -const EVP_CIPHER *FIPS_evp_aes_256_gcm(void); -const EVP_CIPHER *FIPS_evp_aes_256_ofb(void); -const EVP_CIPHER *FIPS_evp_aes_256_xts(void); -const EVP_CIPHER *FIPS_evp_des_ede(void); -const EVP_CIPHER *FIPS_evp_des_ede3(void); -const EVP_CIPHER *FIPS_evp_des_ede3_cbc(void); -const EVP_CIPHER *FIPS_evp_des_ede3_cfb1(void); -const EVP_CIPHER *FIPS_evp_des_ede3_cfb64(void); -const EVP_CIPHER *FIPS_evp_des_ede3_cfb8(void); -const EVP_CIPHER *FIPS_evp_des_ede3_ecb(void); -const EVP_CIPHER *FIPS_evp_des_ede3_ofb(void); -const EVP_CIPHER *FIPS_evp_des_ede_cbc(void); -const EVP_CIPHER *FIPS_evp_des_ede_cfb64(void); -const EVP_CIPHER *FIPS_evp_des_ede_ecb(void); -const EVP_CIPHER *FIPS_evp_des_ede_ofb(void); -const EVP_CIPHER *FIPS_evp_enc_null(void); -const EVP_MD *FIPS_evp_sha1(void); -const EVP_MD *FIPS_evp_sha224(void); -const EVP_MD *FIPS_evp_sha256(void); -const EVP_MD *FIPS_evp_sha384(void); -const EVP_MD *FIPS_evp_sha512(void); -const EVP_MD *FIPS_evp_dss1(void); -const EVP_MD *FIPS_evp_dss(void); -const EVP_MD *FIPS_evp_ecdsa(void); - -const RSA_METHOD *FIPS_rsa_pkcs1_ssleay(void); -int FIPS_rsa_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); - -const struct dsa_method *FIPS_dsa_openssl(void); -int FIPS_dsa_generate_key(DSA *dsa); -int FIPS_dsa_generate_parameters_ex(DSA *dsa, int bits, - const unsigned char *seed,int seed_len, - int *counter_ret, unsigned long *h_ret, BN_GENCB *cb); - -int fips_dsa_builtin_paramgen2(DSA *ret, size_t L, size_t N, - const EVP_MD *evpmd, const unsigned char *seed_in, size_t seed_len, - unsigned char *seed_out, - int *counter_ret, unsigned long *h_ret, BN_GENCB *cb); - -const struct ec_method_st *fips_ec_gf2m_simple_method(void); -const struct ec_method_st *fips_ec_gfp_simple_method(void); -const struct ec_method_st *fips_ec_gfp_mont_method(void); -const struct ec_method_st *fips_ec_gfp_nist_method(void); - -const struct ecdsa_method *FIPS_ecdsa_openssl(void); -const struct ecdh_method *FIPS_ecdh_openssl(void); - -int FIPS_ec_key_generate_key(struct ec_key_st *key); - -const struct dh_method *FIPS_dh_openssl(void); -int FIPS_dh_generate_parameters_ex(DH *dh, int prime_len, - int generator, BN_GENCB *cb); - -int FIPS_cmac_init(struct CMAC_CTX_st *ctx, const void *key, size_t keylen, - const EVP_CIPHER *cipher, ENGINE *impl); -int FIPS_cmac_update(struct CMAC_CTX_st *ctx, const void *in, size_t dlen); -int FIPS_cmac_final(struct CMAC_CTX_st *ctx, unsigned char *out, - size_t *poutlen); -void FIPS_cmac_ctx_cleanup(struct CMAC_CTX_st *ctx); - -void FIPS_hmac_ctx_cleanup(struct hmac_ctx_st *ctx); -int FIPS_hmac_init_ex(struct hmac_ctx_st *ctx, const void *key, int len, - const EVP_MD *md, ENGINE *impl); -int FIPS_hmac_update(struct hmac_ctx_st *ctx, - const unsigned char *data, size_t len); -int FIPS_hmac_final(struct hmac_ctx_st *ctx, - unsigned char *md, unsigned int *len); - -#endif - -/* 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. - */ -void ERR_load_FIPS_strings(void); - -/* Error codes for the FIPS functions. */ - -/* Function codes. */ -#define FIPS_F_DH_BUILTIN_GENPARAMS 100 -#define FIPS_F_DH_INIT 148 -#define FIPS_F_DRBG_RESEED 162 -#define FIPS_F_DSA_BUILTIN_PARAMGEN 101 -#define FIPS_F_DSA_BUILTIN_PARAMGEN2 102 -#define FIPS_F_DSA_DO_SIGN 103 -#define FIPS_F_DSA_DO_VERIFY 104 -#define FIPS_F_ECDH_COMPUTE_KEY 163 -#define FIPS_F_ECDSA_DO_SIGN 164 -#define FIPS_F_ECDSA_DO_VERIFY 165 -#define FIPS_F_EC_KEY_GENERATE_KEY 166 -#define FIPS_F_FIPS_CHECK_DSA 105 -#define FIPS_F_FIPS_CHECK_DSA_PRNG 151 -#define FIPS_F_FIPS_CHECK_EC 106 -#define FIPS_F_FIPS_CHECK_EC_PRNG 152 -#define FIPS_F_FIPS_CHECK_INCORE_FINGERPRINT 107 -#define FIPS_F_FIPS_CHECK_RSA 108 -#define FIPS_F_FIPS_CHECK_RSA_PRNG 150 -#define FIPS_F_FIPS_CIPHER 160 -#define FIPS_F_FIPS_CIPHERINIT 109 -#define FIPS_F_FIPS_CIPHER_CTX_CTRL 161 -#define FIPS_F_FIPS_DIGESTFINAL 158 -#define FIPS_F_FIPS_DIGESTINIT 110 -#define FIPS_F_FIPS_DIGESTUPDATE 159 -#define FIPS_F_FIPS_DRBG_BYTES 111 -#define FIPS_F_FIPS_DRBG_CHECK 146 -#define FIPS_F_FIPS_DRBG_CPRNG_TEST 112 -#define FIPS_F_FIPS_DRBG_ERROR_CHECK 114 -#define FIPS_F_FIPS_DRBG_GENERATE 113 -#define FIPS_F_FIPS_DRBG_INIT 115 -#define FIPS_F_FIPS_DRBG_INSTANTIATE 116 -#define FIPS_F_FIPS_DRBG_NEW 117 -#define FIPS_F_FIPS_DRBG_RESEED 118 -#define FIPS_F_FIPS_DRBG_SINGLE_KAT 119 -#define FIPS_F_FIPS_DSA_SIGN_DIGEST 154 -#define FIPS_F_FIPS_DSA_VERIFY_DIGEST 155 -#define FIPS_F_FIPS_GET_ENTROPY 147 -#define FIPS_F_FIPS_MODULE_MODE_SET 120 -#define FIPS_F_FIPS_PKEY_SIGNATURE_TEST 121 -#define FIPS_F_FIPS_RAND_ADD 122 -#define FIPS_F_FIPS_RAND_BYTES 123 -#define FIPS_F_FIPS_RAND_PSEUDO_BYTES 124 -#define FIPS_F_FIPS_RAND_SEED 125 -#define FIPS_F_FIPS_RAND_SET_METHOD 126 -#define FIPS_F_FIPS_RAND_STATUS 127 -#define FIPS_F_FIPS_RSA_SIGN_DIGEST 156 -#define FIPS_F_FIPS_RSA_VERIFY_DIGEST 157 -#define FIPS_F_FIPS_SELFTEST_AES 128 -#define FIPS_F_FIPS_SELFTEST_AES_CCM 145 -#define FIPS_F_FIPS_SELFTEST_AES_GCM 129 -#define FIPS_F_FIPS_SELFTEST_AES_XTS 144 -#define FIPS_F_FIPS_SELFTEST_CMAC 130 -#define FIPS_F_FIPS_SELFTEST_DES 131 -#define FIPS_F_FIPS_SELFTEST_DSA 132 -#define FIPS_F_FIPS_SELFTEST_ECDSA 133 -#define FIPS_F_FIPS_SELFTEST_HMAC 134 -#define FIPS_F_FIPS_SELFTEST_SHA1 135 -#define FIPS_F_FIPS_SELFTEST_X931 136 -#define FIPS_F_FIPS_SET_PRNG_KEY 153 -#define FIPS_F_HASH_FINAL 137 -#define FIPS_F_RSA_BUILTIN_KEYGEN 138 -#define FIPS_F_RSA_EAY_INIT 149 -#define FIPS_F_RSA_EAY_PRIVATE_DECRYPT 139 -#define FIPS_F_RSA_EAY_PRIVATE_ENCRYPT 140 -#define FIPS_F_RSA_EAY_PUBLIC_DECRYPT 141 -#define FIPS_F_RSA_EAY_PUBLIC_ENCRYPT 142 -#define FIPS_F_RSA_X931_GENERATE_KEY_EX 143 - -/* Reason codes. */ -#define FIPS_R_ADDITIONAL_INPUT_ERROR_UNDETECTED 150 -#define FIPS_R_ADDITIONAL_INPUT_TOO_LONG 100 -#define FIPS_R_ALREADY_INSTANTIATED 101 -#define FIPS_R_AUTHENTICATION_FAILURE 151 -#define FIPS_R_CONTRADICTING_EVIDENCE 102 -#define FIPS_R_DRBG_NOT_INITIALISED 152 -#define FIPS_R_DRBG_STUCK 103 -#define FIPS_R_ENTROPY_ERROR_UNDETECTED 104 -#define FIPS_R_ENTROPY_NOT_REQUESTED_FOR_RESEED 105 -#define FIPS_R_ENTROPY_SOURCE_STUCK 142 -#define FIPS_R_ERROR_INITIALISING_DRBG 106 -#define FIPS_R_ERROR_INSTANTIATING_DRBG 107 -#define FIPS_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 108 -#define FIPS_R_ERROR_RETRIEVING_ENTROPY 109 -#define FIPS_R_ERROR_RETRIEVING_NONCE 110 -#define FIPS_R_FINGERPRINT_DOES_NOT_MATCH 111 -#define FIPS_R_FINGERPRINT_DOES_NOT_MATCH_NONPIC_RELOCATED 112 -#define FIPS_R_FINGERPRINT_DOES_NOT_MATCH_SEGMENT_ALIASING 113 -#define FIPS_R_FIPS_MODE_ALREADY_SET 114 -#define FIPS_R_FIPS_SELFTEST_FAILED 115 -#define FIPS_R_FUNCTION_ERROR 116 -#define FIPS_R_GENERATE_ERROR 117 -#define FIPS_R_GENERATE_ERROR_UNDETECTED 118 -#define FIPS_R_INSTANTIATE_ERROR 119 -#define FIPS_R_INSUFFICIENT_SECURITY_STRENGTH 120 -#define FIPS_R_INTERNAL_ERROR 121 -#define FIPS_R_INVALID_KEY_LENGTH 122 -#define FIPS_R_INVALID_PARAMETERS 144 -#define FIPS_R_IN_ERROR_STATE 123 -#define FIPS_R_KEY_TOO_SHORT 124 -#define FIPS_R_NONCE_ERROR_UNDETECTED 149 -#define FIPS_R_NON_FIPS_METHOD 125 -#define FIPS_R_NOPR_TEST1_FAILURE 145 -#define FIPS_R_NOPR_TEST2_FAILURE 146 -#define FIPS_R_NOT_INSTANTIATED 126 -#define FIPS_R_PAIRWISE_TEST_FAILED 127 -#define FIPS_R_PERSONALISATION_ERROR_UNDETECTED 128 -#define FIPS_R_PERSONALISATION_STRING_TOO_LONG 129 -#define FIPS_R_PRNG_STRENGTH_TOO_LOW 143 -#define FIPS_R_PR_TEST1_FAILURE 147 -#define FIPS_R_PR_TEST2_FAILURE 148 -#define FIPS_R_REQUEST_LENGTH_ERROR_UNDETECTED 130 -#define FIPS_R_REQUEST_TOO_LARGE_FOR_DRBG 131 -#define FIPS_R_RESEED_COUNTER_ERROR 132 -#define FIPS_R_RESEED_ERROR 133 -#define FIPS_R_SELFTEST_FAILED 134 -#define FIPS_R_SELFTEST_FAILURE 135 -#define FIPS_R_STRENGTH_ERROR_UNDETECTED 136 -#define FIPS_R_TEST_FAILURE 137 -#define FIPS_R_UNINSTANTIATE_ERROR 141 -#define FIPS_R_UNINSTANTIATE_ZEROISE_ERROR 138 -#define FIPS_R_UNSUPPORTED_DRBG_TYPE 139 -#define FIPS_R_UNSUPPORTED_PLATFORM 140 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/fips/fips_auth.in b/fips/fips_auth.in deleted file mode 100644 index 1895ee8b2c..0000000000 --- a/fips/fips_auth.in +++ /dev/null @@ -1,52 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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@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. - * - */ - -#define FIPS_AUTH_KEY "etaonrishdlcupfm" -#define FIPS_AUTH_CRYPTO_OFFICER "7f92562d409c903322c0f94a1188ae8178339a4f" -#define FIPS_AUTH_CRYPTO_USER "cb6cbdaad26cd210a8b31a5d56a876ee1d51a96c" diff --git a/fips/fips_canister.c b/fips/fips_canister.c deleted file mode 100644 index 7be48426d9..0000000000 --- a/fips/fips_canister.c +++ /dev/null @@ -1,240 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2005 The OpenSSL Project. Rights for redistribution - * and usage in source and binary forms are granted according to the - * OpenSSL license. - */ - -#include -#if defined(__DECC) -# include -# pragma __nostandard -#endif - -const void *FIPS_text_start(void); -const void *FIPS_text_end(void); - -#include "e_os.h" - -#if !defined(POINTER_TO_FUNCTION_IS_POINTER_TO_1ST_INSTRUCTION) -# if (defined(__sun) && (defined(__sparc) || defined(__sparcv9))) || \ - (defined(__sgi) && (defined(__mips) || defined(mips))) || \ - (defined(__osf__) && defined(__alpha)) || \ - (defined(__linux) && (defined(__arm) || defined(__arm__))) || \ - (defined(__i386) || defined(__i386__)) || \ - (defined(__x86_64) || defined(__x86_64__)) || \ - (defined(vax) || defined(__vax__)) -# define POINTER_TO_FUNCTION_IS_POINTER_TO_1ST_INSTRUCTION -# endif -#endif - -#if !defined(FIPS_REF_POINT_IS_CROSS_COMPILER_AWARE) -# if (defined(__ANDROID__) && (defined(__arm__) || defined(__arm) || \ - defined(__i386__)|| defined(__i386))) || \ - (defined(__vxworks) && (defined(__ppc__) || defined(__ppc) || \ - defined(__mips__)|| defined(__mips))) || \ - (defined(__linux) && ((defined(__PPC__) && !defined(__PPC64__)) || \ - defined(__arm__) || defined(__arm))) || \ - (defined(__APPLE__) /* verified on all MacOS X & iOS flavors */)|| \ - (defined(_WIN32) && defined(_MSC_VER)) -# define FIPS_REF_POINT_IS_CROSS_COMPILER_AWARE -# endif -#endif - -#if defined(__xlC__) && __xlC__>=0x600 && (defined(_POWER) || defined(_ARCH_PPC)) -static void *instruction_pointer_xlc(void); -# pragma mc_func instruction_pointer_xlc {\ - "7c0802a6" /* mflr r0 */ \ - "48000005" /* bl $+4 */ \ - "7c6802a6" /* mflr r3 */ \ - "7c0803a6" /* mtlr r0 */ } -# pragma reg_killed_by instruction_pointer_xlc gr0 gr3 -# define INSTRUCTION_POINTER_IMPLEMENTED(ret) (ret=instruction_pointer_xlc()); -#endif - -#ifdef FIPS_START -# define FIPS_ref_point FIPS_text_start -# ifdef FIPS_REF_POINT_IS_CROSS_COMPILER_AWARE -# define instruction_pointer FIPS_text_startX -# endif -/* Some compilers put string literals into a separate segment. As we - * are mostly interested to hash AES tables in .rodata, we declare - * reference points accordingly. In case you wonder, the values are - * big-endian encoded variable names, just to prevent these arrays - * from being merged by linker. */ -# if defined(_MSC_VER) -# pragma code_seg("fipstx") -# pragma code_seg() - __declspec(allocate("fipstx")) -const unsigned int FIPS_text_startX[]= - { 0x46495053, 0x5f746578, 0x745f7374, 0x61727458 }; -# pragma const_seg("fipsro$a") -# pragma const_seg() - __declspec(allocate("fipsro$a")) -# endif -const unsigned int FIPS_rodata_start[]= - { 0x46495053, 0x5f726f64, 0x6174615f, 0x73746172 }; -#else -# define FIPS_ref_point FIPS_text_end -# ifdef FIPS_REF_POINT_IS_CROSS_COMPILER_AWARE -# define instruction_pointer FIPS_text_endX -# endif -# if defined(_MSC_VER) -# pragma code_seg("fipstx$z") -# pragma code_seg() - __declspec(allocate("fipstx$z")) -const unsigned int FIPS_text_endX[]= - { 0x46495053, 0x5f746578, 0x745f656e, 0x64585b5d }; -# pragma const_seg("fipsro$z") -# pragma const_seg() - __declspec(allocate("fipsro$z")) -# endif -const unsigned int FIPS_rodata_end[]= - { 0x46495053, 0x5f726f64, 0x6174615f, 0x656e645b }; -#endif - -#if !defined(_MSC_VER) || !defined(instruction_pointer) -/* - * I declare reference function as static in order to avoid certain - * pitfalls in -dynamic linker behaviour... - */ -static void *instruction_pointer(void) -{ void *ret=NULL; -/* These are ABI-neutral CPU-specific snippets. ABI-neutrality means - * that they are designed to work under any OS running on particular - * CPU, which is why you don't find any #ifdef THIS_OR_THAT_OS in - * this function. */ -#if defined(INSTRUCTION_POINTER_IMPLEMENTED) - INSTRUCTION_POINTER_IMPLEMENTED(ret); -#elif defined(__GNUC__) && __GNUC__>=2 -# if defined(__alpha) || defined(__alpha__) -# define INSTRUCTION_POINTER_IMPLEMENTED - __asm __volatile ( "br %0,1f\n1:" : "=r"(ret) ); -# elif defined(__i386) || defined(__i386__) -# define INSTRUCTION_POINTER_IMPLEMENTED - __asm __volatile ( "call 1f\n1: popl %0" : "=r"(ret) ); - ret = (void *)((size_t)ret&~3UL); /* align for better performance */ -# elif defined(__ia64) || defined(__ia64__) -# define INSTRUCTION_POINTER_IMPLEMENTED - __asm __volatile ( "mov %0=ip" : "=r"(ret) ); -# elif defined(__hppa) || defined(__hppa__) || defined(__pa_risc) -# define INSTRUCTION_POINTER_IMPLEMENTED - __asm __volatile ( "blr %%r0,%0\n\tnop" : "=r"(ret) ); - ret = (void *)((size_t)ret&~3UL); /* mask privilege level */ -# elif defined(__mips) || defined(__mips__) -# define INSTRUCTION_POINTER_IMPLEMENTED - void *scratch; - __asm __volatile ( "move %1,$31\n\t" /* save ra */ - "bal .+8; nop\n\t" - "move %0,$31\n\t" - "move $31,%1" /* restore ra */ - : "=r"(ret),"=r"(scratch) ); -# elif defined(__ppc__) || defined(__ppc) || \ - defined(__powerpc) || defined(__powerpc__) || \ - defined(__POWERPC__) || defined(_POWER) || defined(__PPC__) || \ - defined(__PPC64__) || defined(__ppc64__) || defined(__powerpc64__) -# define INSTRUCTION_POINTER_IMPLEMENTED - void *scratch; - __asm __volatile ( "mfspr %1,8\n\t" /* save lr */ - "bl $+4\n\t" - "mfspr %0,8\n\t" /* mflr ret */ - "mtspr 8,%1" /* restore lr */ - : "=r"(ret),"=r"(scratch) ); -# elif defined(__s390__) || defined(__s390x__) -# define INSTRUCTION_POINTER_IMPLEMENTED - __asm __volatile ( "bras %0,1f\n1:" : "=r"(ret) ); - ret = (void *)((size_t)ret&~3UL); -# elif defined(__sparc) || defined(__sparc__) || defined(__sparcv9) -# define INSTRUCTION_POINTER_IMPLEMENTED - void *scratch; - __asm __volatile ( "mov %%o7,%1\n\t" - "call .+8; nop\n\t" - "mov %%o7,%0\n\t" - "mov %1,%%o7" - : "=r"(ret),"=r"(scratch) ); -# elif defined(__x86_64) || defined(__x86_64__) -# define INSTRUCTION_POINTER_IMPLEMENTED - __asm __volatile ( "leaq 0(%%rip),%0" : "=r"(ret) ); - ret = (void *)((size_t)ret&~3UL); /* align for better performance */ -# elif defined(__arm) || defined(__arm__) -# define INSTRUCTION_POINTER_IMPLEMENTED - __asm __volatile ( "sub %0,pc,#8" : "=r"(ret) ); -# endif -#elif defined(__DECC) && defined(__alpha) -# define INSTRUCTION_POINTER_IMPLEMENTED - ret = (void *)(size_t)asm("br %v0,1f\n1:"); -#elif defined(_MSC_VER) && defined(_M_IX86) -# define INSTRUCTION_POINTER_IMPLEMENTED - void *scratch; - _asm { - call self - self: pop eax - mov scratch,eax - } - ret = (void *)((size_t)scratch&~3UL); -#endif - return ret; -} -#endif - -/* - * This function returns pointer to an instruction in the vicinity of - * its entry point, but not outside this object module. This guarantees - * that sequestered code is covered... - */ -const void *FIPS_ref_point() -{ -#if defined(FIPS_REF_POINT_IS_CROSS_COMPILER_AWARE) -# if defined(__thumb__) || defined(__thumb) - return (void *)((size_t)instruction_pointer&~1); -# else - return (void *)instruction_pointer; -# endif -#elif defined(INSTRUCTION_POINTER_IMPLEMENTED) - return instruction_pointer(); -/* Below we essentially cover vendor compilers which do not support - * inline assembler... */ -#elif defined(_AIX) - struct { void *ip,*gp,*env; } *p = (void *)instruction_pointer; - return p->ip; -#elif defined(_HPUX_SOURCE) -# if defined(__hppa) || defined(__hppa__) - struct { void *i[4]; } *p = (void *)FIPS_ref_point; - - if (sizeof(p) == 8) /* 64-bit */ - return p->i[2]; - else if ((size_t)p & 2) - { p = (void *)((size_t)p&~3UL); - return p->i[0]; - } - else - return (void *)p; -# elif defined(__ia64) || defined(__ia64__) - struct { unsigned long long ip,gp; } *p=(void *)instruction_pointer; - return (void *)(size_t)p->ip; -# endif -#elif (defined(__VMS) || defined(VMS)) && !(defined(vax) || defined(__vax__)) - /* applies to both alpha and ia64 */ - struct { unsigned __int64 opaque,ip; } *p=(void *)instruction_pointer; - return (void *)(size_t)p->ip; -#elif defined(__VOS__) - /* applies to both pa-risc and ia32 */ - struct { void *dp,*ip,*gp; } *p = (void *)instruction_pointer; - return p->ip; -#elif defined(_WIN32) -# if defined(_WIN64) && defined(_M_IA64) - struct { void *ip,*gp; } *p = (void *)FIPS_ref_point; - return p->ip; -# else - return (void *)FIPS_ref_point; -# endif -/* - * In case you wonder why there is no #ifdef __linux. All Linux targets - * are GCC-based and therefore are covered by instruction_pointer above - * [well, some are covered by by the one below]... - */ -#elif defined(POINTER_TO_FUNCTION_IS_POINTER_TO_1ST_INSTRUCTION) - return (void *)instruction_pointer; -#else - return NULL; -#endif -} diff --git a/fips/fips_locl.h b/fips/fips_locl.h deleted file mode 100644 index df3863f91e..0000000000 --- a/fips/fips_locl.h +++ /dev/null @@ -1,76 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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@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. - * - */ - -#ifdef OPENSSL_FIPS - -#ifdef __cplusplus -extern "C" { -#endif - -#define FIPS_MAX_CIPHER_TEST_SIZE 32 -#define fips_load_key_component(key, comp, pre) \ - key->comp = BN_bin2bn(pre##_##comp, sizeof(pre##_##comp), key->comp); \ - if (!key->comp) \ - goto err - -int fips_post_begin(void); -void fips_post_end(void); -int fips_post_started(int id, int subid, void *ex); -int fips_post_success(int id, int subid, void *ex); -int fips_post_failed(int id, int subid, void *ex); -int fips_post_corrupt(int id, int subid, void *ex); -int fips_post_status(void); - -#define FIPS_MODULE_VERSION_NUMBER 0x20000000L -#define FIPS_MODULE_VERSION_TEXT "FIPS 2.0-dev unvalidated test module xx XXX xxxx" - -#ifdef __cplusplus -} -#endif -#endif diff --git a/fips/fips_post.c b/fips/fips_post.c deleted file mode 100644 index 5a002db7da..0000000000 --- a/fips/fips_post.c +++ /dev/null @@ -1,387 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef OPENSSL_FIPS - -/* Power on self test (POST) support functions */ - -#include -#include "fips_locl.h" - -/* POST notification callback */ - -int (*fips_post_cb)(int op, int id, int subid, void *ex); - -void FIPS_post_set_callback( - int (*post_cb)(int op, int id, int subid, void *ex)) - { - fips_post_cb = post_cb; - } - -/* POST status: i.e. status of all tests */ -#define FIPS_POST_STATUS_NOT_STARTED 0 -#define FIPS_POST_STATUS_OK 1 -#define FIPS_POST_STATUS_RUNNING 2 -#define FIPS_POST_STATUS_FAILED -1 -static int post_status = 0; -/* Set to 1 if any test failed */ -static int post_failure = 0; - -/* All tests started */ - -int fips_post_begin(void) - { - post_failure = 0; - post_status = FIPS_POST_STATUS_NOT_STARTED; - if (fips_post_cb) - if (!fips_post_cb(FIPS_POST_BEGIN, 0, 0, NULL)) - return 0; - post_status = FIPS_POST_STATUS_RUNNING; - return 1; - } - -void fips_post_end(void) - { - if (post_failure) - { - post_status = FIPS_POST_STATUS_FAILED; - if(fips_post_cb) - fips_post_cb(FIPS_POST_END, 0, 0, NULL); - } - else - { - post_status = FIPS_POST_STATUS_OK; - if (fips_post_cb) - fips_post_cb(FIPS_POST_END, 1, 0, NULL); - } - } - -/* A self test started */ -int fips_post_started(int id, int subid, void *ex) - { - if (fips_post_cb) - return fips_post_cb(FIPS_POST_STARTED, id, subid, ex); - return 1; - } -/* A self test passed successfully */ -int fips_post_success(int id, int subid, void *ex) - { - if (fips_post_cb) - return fips_post_cb(FIPS_POST_SUCCESS, id, subid, ex); - return 1; - } -/* A self test failed */ -int fips_post_failed(int id, int subid, void *ex) - { - post_failure = 1; - if (fips_post_cb) - return fips_post_cb(FIPS_POST_FAIL, id, subid, ex); - return 1; - } -/* Indicate if a self test failure should be induced */ -int fips_post_corrupt(int id, int subid, void *ex) - { - if (fips_post_cb) - return fips_post_cb(FIPS_POST_CORRUPT, id, subid, ex); - return 1; - } -/* Note: if selftests running return status OK so their operation is - * not interrupted. This will only happen while selftests are actually - * running so will not interfere with normal operation. - */ -int fips_post_status(void) - { - return post_status > 0 ? 1 : 0; - } -/* Run all selftests */ -int FIPS_selftest(void) - { - int rv = 1; - fips_post_begin(); - if(!FIPS_check_incore_fingerprint()) - rv = 0; - if (!FIPS_selftest_drbg()) - rv = 0; - if (!FIPS_selftest_x931()) - rv = 0; - if (!FIPS_selftest_sha1()) - rv = 0; - if (!FIPS_selftest_hmac()) - rv = 0; - if (!FIPS_selftest_cmac()) - rv = 0; - if (!FIPS_selftest_aes()) - rv = 0; - if (!FIPS_selftest_aes_ccm()) - rv = 0; - if (!FIPS_selftest_aes_gcm()) - rv = 0; - if (!FIPS_selftest_aes_xts()) - rv = 0; - if (!FIPS_selftest_des()) - rv = 0; - if (!FIPS_selftest_rsa()) - rv = 0; - if (!FIPS_selftest_ecdsa()) - rv = 0; - if (!FIPS_selftest_dsa()) - rv = 0; - if (!FIPS_selftest_ecdh()) - rv = 0; - fips_post_end(); - return rv; - } - -/* Generalized public key test routine. Signs and verifies the data - * supplied in tbs using mesage digest md and setting RSA padding mode - * pad_mode. If the 'kat' parameter is not NULL it will - * additionally check the signature matches it: a known answer test - * The string "fail_str" is used for identification purposes in case - * of failure. If "pkey" is NULL just perform a message digest check. - */ - -int fips_pkey_signature_test(int id, EVP_PKEY *pkey, - const unsigned char *tbs, size_t tbslen, - const unsigned char *kat, size_t katlen, - const EVP_MD *digest, int pad_mode, - const char *fail_str) - { - int subid; - int ret = 0; - unsigned char *sig = NULL; - unsigned int siglen; - __fips_constseg - static const unsigned char str1[]="12345678901234567890"; - DSA_SIG *dsig = NULL; - ECDSA_SIG *esig = NULL; - EVP_MD_CTX mctx; - FIPS_md_ctx_init(&mctx); - - if (tbs == NULL) - tbs = str1; - - if (tbslen == 0) - tbslen = strlen((char *)tbs); - - if (digest == NULL) - digest = EVP_sha256(); - - subid = M_EVP_MD_type(digest); - - - if (!fips_post_started(id, subid, pkey)) - return 1; - - if (!pkey || pkey->type == EVP_PKEY_RSA) - { - size_t sigsize; - if (!pkey) - sigsize = EVP_MAX_MD_SIZE; - else - sigsize = RSA_size(pkey->pkey.rsa); - - sig = OPENSSL_malloc(sigsize); - if (!sig) - { - FIPSerr(FIPS_F_FIPS_PKEY_SIGNATURE_TEST,ERR_R_MALLOC_FAILURE); - goto error; - } - } - - if (!FIPS_digestinit(&mctx, digest)) - goto error; - if (!FIPS_digestupdate(&mctx, tbs, tbslen)) - goto error; - - if (!fips_post_corrupt(id, subid, pkey)) - { - if (!FIPS_digestupdate(&mctx, tbs, 1)) - goto error; - } - - if (pkey == NULL) - { - if (!FIPS_digestfinal(&mctx, sig, &siglen)) - goto error; - } - else if (pkey->type == EVP_PKEY_RSA) - { - if (!FIPS_rsa_sign_ctx(pkey->pkey.rsa, &mctx, - pad_mode, 0, NULL, sig, &siglen)) - goto error; - } - else if (pkey->type == EVP_PKEY_DSA) - { - dsig = FIPS_dsa_sign_ctx(pkey->pkey.dsa, &mctx); - if (!dsig) - goto error; - } - else if (pkey->type == EVP_PKEY_EC) - { - esig = FIPS_ecdsa_sign_ctx(pkey->pkey.ec, &mctx); - if (!esig) - goto error; - } - - if (kat && ((siglen != katlen) || memcmp(kat, sig, katlen))) - goto error; -#if 0 - { - /* Debug code to print out self test KAT discrepancies */ - unsigned int i; - fprintf(stderr, "%s=", fail_str); - for (i = 0; i < siglen; i++) - fprintf(stderr, "%02X", sig[i]); - fprintf(stderr, "\n"); - goto error; - } -#endif - /* If just digest test we've finished */ - if (pkey == NULL) - { - ret = 1; - /* Well actually success as we've set ret to 1 */ - goto error; - } - if (!FIPS_digestinit(&mctx, digest)) - goto error; - if (!FIPS_digestupdate(&mctx, tbs, tbslen)) - goto error; - if (pkey->type == EVP_PKEY_RSA) - { - ret = FIPS_rsa_verify_ctx(pkey->pkey.rsa, &mctx, - pad_mode, 0, NULL, sig, siglen); - } - else if (pkey->type == EVP_PKEY_DSA) - { - ret = FIPS_dsa_verify_ctx(pkey->pkey.dsa, &mctx, dsig); - } - else if (pkey->type == EVP_PKEY_EC) - { - ret = FIPS_ecdsa_verify_ctx(pkey->pkey.ec, &mctx, esig); - } - - error: - if (dsig != NULL) - FIPS_dsa_sig_free(dsig); - if (esig != NULL) - FIPS_ecdsa_sig_free(esig); - if (sig) - OPENSSL_free(sig); - FIPS_md_ctx_cleanup(&mctx); - if (ret != 1) - { - FIPSerr(FIPS_F_FIPS_PKEY_SIGNATURE_TEST,FIPS_R_TEST_FAILURE); - if (fail_str) - FIPS_add_error_data(2, "Type=", fail_str); - fips_post_failed(id, subid, pkey); - return 0; - } - return fips_post_success(id, subid, pkey); - } - -/* Generalized symmetric cipher test routine. Encrypt data, verify result - * against known answer, decrypt and compare with original plaintext. - */ - -int fips_cipher_test(int id, EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, - const unsigned char *iv, - const unsigned char *plaintext, - const unsigned char *ciphertext, - int len) - { - unsigned char pltmp[FIPS_MAX_CIPHER_TEST_SIZE]; - unsigned char citmp[FIPS_MAX_CIPHER_TEST_SIZE]; - int subid = M_EVP_CIPHER_nid(cipher); - int rv = 0; - OPENSSL_assert(len <= FIPS_MAX_CIPHER_TEST_SIZE); - memset(pltmp, 0, FIPS_MAX_CIPHER_TEST_SIZE); - memset(citmp, 0, FIPS_MAX_CIPHER_TEST_SIZE); - - if (!fips_post_started(id, subid, NULL)) - return 1; - if (FIPS_cipherinit(ctx, cipher, key, iv, 1) <= 0) - goto error; - if (!FIPS_cipher(ctx, citmp, plaintext, len)) - goto error; - if (memcmp(citmp, ciphertext, len)) - goto error; - if (!fips_post_corrupt(id, subid, NULL)) - citmp[0] ^= 0x1; - if (FIPS_cipherinit(ctx, cipher, key, iv, 0) <= 0) - goto error; - FIPS_cipher(ctx, pltmp, citmp, len); - if (memcmp(pltmp, plaintext, len)) - goto error; - rv = 1; - error: - if (rv == 0) - { - fips_post_failed(id, subid, NULL); - return 0; - } - return fips_post_success(id, subid, NULL); - } - -#endif diff --git a/fips/fips_premain.c b/fips/fips_premain.c deleted file mode 100644 index 7dc5246006..0000000000 --- a/fips/fips_premain.c +++ /dev/null @@ -1,181 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2005 The OpenSSL Project. Rights for redistribution - * and usage in source and binary forms are granted according to the - * OpenSSL license. - */ - -#include -#include -#include -#if defined(__unix) || defined(__unix__) || defined(__vxworks) || defined(__ANDROID__) || defined(__APPLE__) -#include -#endif - -#ifndef FINGERPRINT_PREMAIN_DSO_LOAD - -#if defined(__GNUC__) && __GNUC__>=2 - void FINGERPRINT_premain(void) __attribute__((constructor)); - /* Most commonly this results in pointer to premain to be dropped - * to .ctors segment, which is traversed by GCC crtbegin.o upon - * program startup. Except on a.out OpenBSD where it results in - * _GLOBAL_$I$premain() {premain();} being auto-generated by - * compiler... But one way or another this is believed to cover - * *all* GCC targets. */ -#elif defined(_MSC_VER) -# ifdef _WINDLL - __declspec(dllexport) /* this is essentially cosmetics... */ -# endif - void FINGERPRINT_premain(void); - static int premain_wrapper(void) { FINGERPRINT_premain(); return 0; } -# ifdef _WIN64 -# pragma section(".CRT$XCU",read) - __declspec(allocate(".CRT$XCU")) -# else -# pragma data_seg(".CRT$XCU") -# endif - static int (*p)(void) = premain_wrapper; - /* This results in pointer to premain to appear in .CRT segment, - * which is traversed by Visual C run-time initialization code. - * This applies to both Win32 and [all flavors of] Win64. */ -# pragma data_seg() -#elif defined(__SUNPRO_C) - void FINGERPRINT_premain(void); -# pragma init(FINGERPRINT_premain) - /* This results in a call to premain to appear in .init segment. */ -#elif defined(__DECC) && (defined(__VMS) || defined(VMS)) - void FINGERPRINT_premain(void); -# pragma __nostandard - globaldef { "LIB$INITIALIZ" } readonly _align (LONGWORD) - int spare[8] = {0}; - globaldef { "LIB$INITIALIZE" } readonly _align (LONGWORD) - void (*x_FINGERPRINT_premain)(void) = FINGERPRINT_premain; - /* Refer to LIB$INITIALIZE to ensure it exists in the image. */ - int lib$initialize(); - globaldef int (*lib_init_ref)() = lib$initialize; -# pragma __standard -#elif 0 - The rest has to be taken care of through command line: - - -Wl,-init,FINGERPRINT_premain on OSF1 and IRIX - -Wl,+init,FINGERPRINT_premain on HP-UX - -Wl,-binitfini:FINGERPRINT_premain on AIX - - On ELF platforms this results in a call to premain to appear in - .init segment... -#endif - -#ifndef HMAC_SHA1_SIG -#define HMAC_SHA1_SIG "?have to make sure this string is unique" -#endif - -#if defined(_MSC_VER) -# pragma const_seg("fipsro") -# pragma const_seg() - __declspec(allocate("fipsro")) -#endif -static const unsigned char FINGERPRINT_ascii_value[41] = HMAC_SHA1_SIG; - -#define atox(c) ((c)>='a'?((c)-'a'+10):((c)>='A'?(c)-'A'+10:(c)-'0')) - -extern const void *FIPS_text_start(), *FIPS_text_end(); -extern const unsigned char FIPS_rodata_start[], FIPS_rodata_end[]; -extern unsigned char FIPS_signature[20]; -extern unsigned int FIPS_incore_fingerprint(unsigned char *,unsigned int); - -/* - * As name suggests this code is executed prior main(). We use this - * opportunity to fingerprint sequestered code in virtual address - * space of target application. - */ -void FINGERPRINT_premain(void) -{ unsigned char sig[sizeof(FIPS_signature)]; - const unsigned char * volatile p=FINGERPRINT_ascii_value; - unsigned int len=sizeof(sig),i; - - /* "volatilization" is done to disengage unwanted optimization... */ - if (*((volatile unsigned char *)p)=='?') - { if (FIPS_text_start()==NULL) - { fprintf(stderr,"FIPS_text_start() returns NULL\n"); - _exit(1); - } -#if defined(DEBUG_FINGERPRINT_PREMAIN) - fprintf(stderr,".text:%p+%d=%p\n",FIPS_text_start(), - (int)((size_t)FIPS_text_end()-(size_t)FIPS_text_start()), - FIPS_text_end()); - fprintf(stderr,".rodata:%p+%d=%p\n",FIPS_rodata_start, - (int)((size_t)FIPS_rodata_end-(size_t)FIPS_rodata_start), - FIPS_rodata_end); -#endif - - len=FIPS_incore_fingerprint(sig,sizeof(sig)); - - if (len!=sizeof(sig)) - { fprintf(stderr,"fingerprint length mismatch: %u\n",len); - _exit(1); - } - - for (i=0;i -#include -#include - -int main(int argc,char *argv[]) -{ DSO *dso; - DSO_FUNC_TYPE func; - BIO *bio_err; - - if (argc < 2) - { fprintf (stderr,"usage: %s libcrypto.dso\n",argv[0]); - return 1; - } - - if ((bio_err=BIO_new(BIO_s_file())) == NULL) - { fprintf (stderr,"unable to allocate BIO\n"); - return 1; - } - BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); - ERR_load_crypto_strings(); - - dso = DSO_load(NULL,argv[1],NULL,DSO_FLAG_NO_NAME_TRANSLATION); - if (dso == NULL) - { ERR_print_errors(bio_err); - return 1; - } - - /* This is not normally reached, because FINGERPRINT_premain should - * have executed and terminated application already upon DSO_load... */ - func = DSO_bind_func(dso,"FINGERPRINT_premain"); - if (func == NULL) - { ERR_print_errors(bio_err); - return 1; - } - - (*func)(); - - return 0; -} - -#endif diff --git a/fips/fips_premain.c.sha1 b/fips/fips_premain.c.sha1 deleted file mode 100644 index b9fb5dfc1d..0000000000 --- a/fips/fips_premain.c.sha1 +++ /dev/null @@ -1 +0,0 @@ -HMAC-SHA1(fips_premain.c)= 1eaf66f76187877ff403708a2948d240f92736a0 diff --git a/fips/fips_test_suite.c b/fips/fips_test_suite.c deleted file mode 100644 index cf8f085e95..0000000000 --- a/fips/fips_test_suite.c +++ /dev/null @@ -1,1574 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2003 The OpenSSL Project. All rights reserved. - * - * - * This command is intended as a test driver for the FIPS-140 testing - * lab performing FIPS-140 validation. It demonstrates the use of the - * OpenSSL library ito perform a variety of common cryptographic - * functions. A power-up self test is demonstrated by deliberately - * pointing to an invalid executable hash - * - * Contributed by Steve Marquess. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifndef OPENSSL_FIPS -int main(int argc, char *argv[]) - { - printf("No FIPS support\n"); - return(0); - } -#else - -#define ERR_clear_error() while(0) - -#include -#include -#include - -#include -#include -#include "fips_utl.h" - -/* AES: encrypt and decrypt known plaintext, verify result matches original plaintext -*/ -static int FIPS_aes_test(void) - { - int ret = 0; - unsigned char pltmp[16]; - unsigned char citmp[16]; - unsigned char key[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; - unsigned char plaintext[16] = "etaonrishdlcu"; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - if (FIPS_cipherinit(&ctx, EVP_aes_128_ecb(), key, NULL, 1) <= 0) - goto err; - FIPS_cipher(&ctx, citmp, plaintext, 16); - if (FIPS_cipherinit(&ctx, EVP_aes_128_ecb(), key, NULL, 0) <= 0) - goto err; - FIPS_cipher(&ctx, pltmp, citmp, 16); - if (memcmp(pltmp, plaintext, 16)) - goto err; - ret = 1; - err: - FIPS_cipher_ctx_cleanup(&ctx); - return ret; - } - -static int FIPS_aes_gcm_test(void) - { - int ret = 0; - unsigned char pltmp[16]; - unsigned char citmp[16]; - unsigned char tagtmp[16]; - unsigned char key[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; - unsigned char iv[16] = {21,22,23,24,25,26,27,28,29,30,31,32}; - unsigned char aad[] = "Some text AAD"; - unsigned char plaintext[16] = "etaonrishdlcu"; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - if (FIPS_cipherinit(&ctx, EVP_aes_128_gcm(), key, iv, 1) <= 0) - goto err; - FIPS_cipher(&ctx, NULL, aad, sizeof(aad)); - FIPS_cipher(&ctx, citmp, plaintext, 16); - FIPS_cipher(&ctx, NULL, NULL, 0); - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_GET_TAG, 16, tagtmp)) - goto err; - - if (FIPS_cipherinit(&ctx, EVP_aes_128_gcm(), key, iv, 0) <= 0) - goto err; - if (!FIPS_cipher_ctx_ctrl(&ctx, EVP_CTRL_GCM_SET_TAG, 16, tagtmp)) - goto err; - - FIPS_cipher(&ctx, NULL, aad, sizeof(aad)); - - FIPS_cipher(&ctx, pltmp, citmp, 16); - - if (FIPS_cipher(&ctx, NULL, NULL, 0) < 0) - goto err; - - if (memcmp(pltmp, plaintext, 16)) - goto err; - - ret = 1; - err: - FIPS_cipher_ctx_cleanup(&ctx); - return ret; - } - -static int FIPS_des3_test(void) - { - int ret = 0; - unsigned char pltmp[8]; - unsigned char citmp[8]; - unsigned char key[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24}; - unsigned char plaintext[] = { 'e', 't', 'a', 'o', 'n', 'r', 'i', 's' }; - EVP_CIPHER_CTX ctx; - FIPS_cipher_ctx_init(&ctx); - if (FIPS_cipherinit(&ctx, EVP_des_ede3_ecb(), key, NULL, 1) <= 0) - goto err; - FIPS_cipher(&ctx, citmp, plaintext, 8); - if (FIPS_cipherinit(&ctx, EVP_des_ede3_ecb(), key, NULL, 0) <= 0) - goto err; - FIPS_cipher(&ctx, pltmp, citmp, 8); - if (memcmp(pltmp, plaintext, 8)) - goto err; - ret = 1; - err: - FIPS_cipher_ctx_cleanup(&ctx); - return ret; - } - -/* - * DSA: generate keys and sign, verify input plaintext. - */ -static int FIPS_dsa_test(int bad) - { - DSA *dsa = NULL; - unsigned char dgst[] = "etaonrishdlc"; - int r = 0; - DSA_SIG *sig = NULL; - - ERR_clear_error(); - dsa = FIPS_dsa_new(); - if (!dsa) - goto end; - if (!DSA_generate_parameters_ex(dsa, 1024,NULL,0,NULL,NULL,NULL)) - goto end; - if (!DSA_generate_key(dsa)) - goto end; - if (bad) - BN_add_word(dsa->pub_key, 1); - - sig = FIPS_dsa_sign(dsa, dgst, sizeof(dgst) -1, EVP_sha256()); - if (!sig) - goto end; - - r = FIPS_dsa_verify(dsa, dgst, sizeof(dgst) -1, EVP_sha256(), sig); - end: - if (sig) - FIPS_dsa_sig_free(sig); - if (dsa) - FIPS_dsa_free(dsa); - if (r != 1) - return 0; - return 1; - } - -/* - * RSA: generate keys and sign, verify input plaintext. - */ -static int FIPS_rsa_test(int bad) - { - RSA *key; - unsigned char input_ptext[] = "etaonrishdlc"; - unsigned char buf[256]; - unsigned int slen; - BIGNUM *bn; - int r = 0; - - ERR_clear_error(); - key = FIPS_rsa_new(); - bn = BN_new(); - if (!key || !bn) - return 0; - BN_set_word(bn, 65537); - if (!RSA_generate_key_ex(key, 2048,bn,NULL)) - return 0; - BN_free(bn); - if (bad) - BN_add_word(key->n, 1); - - if (!FIPS_rsa_sign(key, input_ptext, sizeof(input_ptext) - 1, EVP_sha256(), - RSA_PKCS1_PADDING, 0, NULL, buf, &slen)) - goto end; - - r = FIPS_rsa_verify(key, input_ptext, sizeof(input_ptext) - 1, EVP_sha256(), - RSA_PKCS1_PADDING, 0, NULL, buf, slen); - end: - if (key) - FIPS_rsa_free(key); - if (r != 1) - return 0; - return 1; - } - -/* SHA1: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_sha1_test() - { - unsigned char digest[SHA_DIGEST_LENGTH] = - { 0x11, 0xf1, 0x9a, 0x3a, 0xec, 0x1a, 0x1e, 0x8e, 0x65, 0xd4, 0x9a, 0x38, 0x0c, 0x8b, 0x1e, 0x2c, 0xe8, 0xb3, 0xc5, 0x18 }; - unsigned char str[] = "etaonrishd"; - - unsigned char md[SHA_DIGEST_LENGTH]; - - ERR_clear_error(); - if (!FIPS_digest(str,sizeof(str) - 1,md, NULL, EVP_sha1())) return 0; - if (memcmp(md,digest,sizeof(md))) - return 0; - return 1; - } - -/* SHA256: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_sha256_test() - { - unsigned char digest[SHA256_DIGEST_LENGTH] = - {0xf5, 0x53, 0xcd, 0xb8, 0xcf, 0x1, 0xee, 0x17, 0x9b, 0x93, 0xc9, 0x68, 0xc0, 0xea, 0x40, 0x91, - 0x6, 0xec, 0x8e, 0x11, 0x96, 0xc8, 0x5d, 0x1c, 0xaf, 0x64, 0x22, 0xe6, 0x50, 0x4f, 0x47, 0x57}; - unsigned char str[] = "etaonrishd"; - - unsigned char md[SHA256_DIGEST_LENGTH]; - - ERR_clear_error(); - if (!FIPS_digest(str,sizeof(str) - 1,md, NULL, EVP_sha256())) return 0; - if (memcmp(md,digest,sizeof(md))) - return 0; - return 1; - } - -/* SHA512: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_sha512_test() - { - unsigned char digest[SHA512_DIGEST_LENGTH] = - {0x99, 0xc9, 0xe9, 0x5b, 0x88, 0xd4, 0x78, 0x88, 0xdf, 0x88, 0x5f, 0x94, 0x71, 0x64, 0x28, 0xca, - 0x16, 0x1f, 0x3d, 0xf4, 0x1f, 0xf3, 0x0f, 0xc5, 0x03, 0x99, 0xb2, 0xd0, 0xe7, 0x0b, 0x94, 0x4a, - 0x45, 0xd2, 0x6c, 0x4f, 0x20, 0x06, 0xef, 0x71, 0xa9, 0x25, 0x7f, 0x24, 0xb1, 0xd9, 0x40, 0x22, - 0x49, 0x54, 0x10, 0xc2, 0x22, 0x9d, 0x27, 0xfe, 0xbd, 0xd6, 0xd6, 0xeb, 0x2d, 0x42, 0x1d, 0xa3}; - unsigned char str[] = "etaonrishd"; - - unsigned char md[SHA512_DIGEST_LENGTH]; - - ERR_clear_error(); - if (!FIPS_digest(str,sizeof(str) - 1,md, NULL, EVP_sha512())) return 0; - if (memcmp(md,digest,sizeof(md))) - return 0; - return 1; - } - -/* HMAC-SHA1: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_hmac_sha1_test() - { - unsigned char key[] = "etaonrishd"; - unsigned char iv[] = "Sample text"; - unsigned char kaval[EVP_MAX_MD_SIZE] = - {0x73, 0xf7, 0xa0, 0x48, 0xf8, 0x94, 0xed, 0xdd, 0x0a, 0xea, 0xea, 0x56, 0x1b, 0x61, 0x2e, 0x70, - 0xb2, 0xfb, 0xec, 0xc6}; - - unsigned char out[EVP_MAX_MD_SIZE]; - unsigned int outlen; - - ERR_clear_error(); - if (!HMAC(EVP_sha1(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; - if (memcmp(out,kaval,outlen)) - return 0; - return 1; - } - -/* HMAC-SHA224: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_hmac_sha224_test() - { - unsigned char key[] = "etaonrishd"; - unsigned char iv[] = "Sample text"; - unsigned char kaval[EVP_MAX_MD_SIZE] = - {0x75, 0x58, 0xd5, 0xbd, 0x55, 0x6d, 0x87, 0x0f, 0x75, 0xff, 0xbe, 0x1c, 0xb2, 0xf0, 0x20, 0x35, - 0xe5, 0x62, 0x49, 0xb6, 0x94, 0xb9, 0xfc, 0x65, 0x34, 0x33, 0x3a, 0x19}; - - unsigned char out[EVP_MAX_MD_SIZE]; - unsigned int outlen; - - ERR_clear_error(); - if (!HMAC(EVP_sha224(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; - if (memcmp(out,kaval,outlen)) - return 0; - return 1; - } - -/* HMAC-SHA256: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_hmac_sha256_test() - { - unsigned char key[] = "etaonrishd"; - unsigned char iv[] = "Sample text"; - unsigned char kaval[EVP_MAX_MD_SIZE] = - {0xe9, 0x17, 0xc1, 0x7b, 0x4c, 0x6b, 0x77, 0xda, 0xd2, 0x30, 0x36, 0x02, 0xf5, 0x72, 0x33, 0x87, - 0x9f, 0xc6, 0x6e, 0x7b, 0x7e, 0xa8, 0xea, 0xaa, 0x9f, 0xba, 0xee, 0x51, 0xff, 0xda, 0x24, 0xf4}; - - unsigned char out[EVP_MAX_MD_SIZE]; - unsigned int outlen; - - ERR_clear_error(); - if (!HMAC(EVP_sha256(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; - if (memcmp(out,kaval,outlen)) - return 0; - return 1; - } - -/* HMAC-SHA384: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_hmac_sha384_test() - { - unsigned char key[] = "etaonrishd"; - unsigned char iv[] = "Sample text"; - unsigned char kaval[EVP_MAX_MD_SIZE] = - {0xb2, 0x9d, 0x40, 0x58, 0x32, 0xc4, 0xe3, 0x31, 0xb6, 0x63, 0x08, 0x26, 0x99, 0xef, 0x3b, 0x10, - 0xe2, 0xdf, 0xf8, 0xff, 0xc6, 0xe1, 0x03, 0x29, 0x81, 0x2a, 0x1b, 0xac, 0xb0, 0x07, 0x39, 0x08, - 0xf3, 0x91, 0x35, 0x11, 0x76, 0xd6, 0x4c, 0x20, 0xfb, 0x4d, 0xc3, 0xf3, 0xb8, 0x9b, 0x88, 0x1c}; - - unsigned char out[EVP_MAX_MD_SIZE]; - unsigned int outlen; - - ERR_clear_error(); - if (!HMAC(EVP_sha384(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; - if (memcmp(out,kaval,outlen)) - return 0; - return 1; - } - -/* HMAC-SHA512: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_hmac_sha512_test() - { - unsigned char key[] = "etaonrishd"; - unsigned char iv[] = "Sample text"; - unsigned char kaval[EVP_MAX_MD_SIZE] = - {0xcd, 0x3e, 0xb9, 0x51, 0xb8, 0xbc, 0x7f, 0x9a, 0x23, 0xaf, 0xf3, 0x77, 0x59, 0x85, 0xa9, 0xe6, - 0xf7, 0xd1, 0x51, 0x96, 0x17, 0xe0, 0x92, 0xd8, 0xa6, 0x3b, 0xc1, 0xad, 0x7e, 0x24, 0xca, 0xb1, - 0xd7, 0x79, 0x0a, 0xa5, 0xea, 0x2c, 0x02, 0x58, 0x0b, 0xa6, 0x52, 0x6b, 0x61, 0x7f, 0xeb, 0x9c, - 0x47, 0x86, 0x5d, 0x74, 0x2b, 0x88, 0xdf, 0xee, 0x46, 0x69, 0x96, 0x3d, 0xa6, 0xd9, 0x2a, 0x53}; - - unsigned char out[EVP_MAX_MD_SIZE]; - unsigned int outlen; - - ERR_clear_error(); - if (!HMAC(EVP_sha512(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; - if (memcmp(out,kaval,outlen)) - return 0; - return 1; - } - -/* CMAC-AES128: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_cmac_aes128_test() - { - unsigned char key[16] = { 0x2b,0x7e,0x15,0x16, 0x28,0xae,0xd2,0xa6, - 0xab,0xf7,0x15,0x88, 0x09,0xcf,0x4f,0x3c, }; - unsigned char data[] = "Sample text"; - unsigned char kaval[EVP_MAX_MD_SIZE] = - { 0x16,0x83,0xfe,0xac, 0x52,0x9b,0xae,0x23, - 0xd7,0xd5,0x66,0xf5, 0xd2,0x8d,0xbd,0x2a, }; - - unsigned char *out = NULL; - size_t outlen; - CMAC_CTX *ctx = CMAC_CTX_new(); - int r = 0; - - ERR_clear_error(); - - if (!ctx) - goto end; - if (!CMAC_Init(ctx,key,sizeof(key),EVP_aes_128_cbc(),NULL)) - goto end; - if (!CMAC_Update(ctx,data,sizeof(data)-1)) - goto end; - /* This should return 1. If not, there's a programming error... */ - if (!CMAC_Final(ctx, out, &outlen)) - goto end; - out = OPENSSL_malloc(outlen); - if (!CMAC_Final(ctx, out, &outlen)) - goto end; -#if 0 - { - char *hexout = OPENSSL_malloc(outlen * 2 + 1); - bin2hex(out, outlen, hexout); - printf("CMAC-AES128: res = %s\n", hexout); - OPENSSL_free(hexout); - } - r = 1; -#else - if (!memcmp(out,kaval,outlen)) - r = 1; -#endif - end: - CMAC_CTX_free(ctx); - if (out) - OPENSSL_free(out); - return r; - } - -/* CMAC-AES192: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_cmac_aes192_test() - { - unsigned char key[] = { 0x8e,0x73,0xb0,0xf7, 0xda,0x0e,0x64,0x52, - 0xc8,0x10,0xf3,0x2b, 0x80,0x90,0x79,0xe5, - 0x62,0xf8,0xea,0xd2, 0x52,0x2c,0x6b,0x7b, }; - unsigned char data[] = "Sample text"; - unsigned char kaval[] = - { 0xd6,0x99,0x19,0x25, 0xe5,0x1d,0x95,0x48, - 0xb1,0x4a,0x0b,0xf2, 0xc6,0x3c,0x47,0x1f, }; - - unsigned char *out = NULL; - size_t outlen; - CMAC_CTX *ctx = CMAC_CTX_new(); - int r = 0; - - ERR_clear_error(); - - if (!ctx) - goto end; - if (!CMAC_Init(ctx,key,sizeof(key),EVP_aes_192_cbc(),NULL)) - goto end; - if (!CMAC_Update(ctx,data,sizeof(data)-1)) - goto end; - /* This should return 1. If not, there's a programming error... */ - if (!CMAC_Final(ctx, out, &outlen)) - goto end; - out = OPENSSL_malloc(outlen); - if (!CMAC_Final(ctx, out, &outlen)) - goto end; -#if 0 - { - char *hexout = OPENSSL_malloc(outlen * 2 + 1); - bin2hex(out, outlen, hexout); - printf("CMAC-AES192: res = %s\n", hexout); - OPENSSL_free(hexout); - } - r = 1; -#else - if (!memcmp(out,kaval,outlen)) - r = 1; -#endif - end: - CMAC_CTX_free(ctx); - if (out) - OPENSSL_free(out); - return r; - } - -/* CMAC-AES256: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_cmac_aes256_test() - { - unsigned char key[] = { 0x60,0x3d,0xeb,0x10, 0x15,0xca,0x71,0xbe, - 0x2b,0x73,0xae,0xf0, 0x85,0x7d,0x77,0x81, - 0x1f,0x35,0x2c,0x07, 0x3b,0x61,0x08,0xd7, - 0x2d,0x98,0x10,0xa3, 0x09,0x14,0xdf,0xf4, }; - unsigned char data[] = "Sample text"; - unsigned char kaval[] = - { 0xec,0xc2,0xcf,0x63, 0xc7,0xce,0xfc,0xa4, - 0xb0,0x86,0x37,0x5f, 0x15,0x60,0xba,0x1f, }; - - unsigned char *out = NULL; - size_t outlen; - CMAC_CTX *ctx = CMAC_CTX_new(); - int r = 0; - - ERR_clear_error(); - - if (!ctx) - goto end; - if (!CMAC_Init(ctx,key,sizeof(key),EVP_aes_256_cbc(),NULL)) - goto end; - if (!CMAC_Update(ctx,data,sizeof(data)-1)) - goto end; - /* This should return 1. If not, there's a programming error... */ - if (!CMAC_Final(ctx, out, &outlen)) - goto end; - out = OPENSSL_malloc(outlen); - if (!CMAC_Final(ctx, out, &outlen)) - goto end; -#if 0 - { - char *hexout = OPENSSL_malloc(outlen * 2 + 1); - bin2hex(out, outlen, hexout); - printf("CMAC-AES256: res = %s\n", hexout); - OPENSSL_free(hexout); - } - r = 1; -#else - if (!memcmp(out,kaval,outlen)) - r = 1; -#endif - end: - CMAC_CTX_free(ctx); - if (out) - OPENSSL_free(out); - return r; - } - -/* CMAC-TDEA3: generate hash of known digest value and compare to known - precomputed correct hash -*/ -static int FIPS_cmac_tdea3_test() - { - unsigned char key[] = { 0x8a,0xa8,0x3b,0xf8, 0xcb,0xda,0x10,0x62, - 0x0b,0xc1,0xbf,0x19, 0xfb,0xb6,0xcd,0x58, - 0xbc,0x31,0x3d,0x4a, 0x37,0x1c,0xa8,0xb5, }; - unsigned char data[] = "Sample text"; - unsigned char kaval[EVP_MAX_MD_SIZE] = - { 0xb4,0x06,0x4e,0xbf, 0x59,0x89,0xba,0x68, }; - - unsigned char *out = NULL; - size_t outlen; - CMAC_CTX *ctx = CMAC_CTX_new(); - int r = 0; - - ERR_clear_error(); - - if (!ctx) - goto end; - if (!CMAC_Init(ctx,key,sizeof(key),EVP_des_ede3_cbc(),NULL)) - goto end; - if (!CMAC_Update(ctx,data,sizeof(data)-1)) - goto end; - /* This should return 1. If not, there's a programming error... */ - if (!CMAC_Final(ctx, out, &outlen)) - goto end; - out = OPENSSL_malloc(outlen); - if (!CMAC_Final(ctx, out, &outlen)) - goto end; -#if 0 - { - char *hexout = OPENSSL_malloc(outlen * 2 + 1); - bin2hex(out, outlen, hexout); - printf("CMAC-TDEA3: res = %s\n", hexout); - OPENSSL_free(hexout); - } - r = 1; -#else - if (!memcmp(out,kaval,outlen)) - r = 1; -#endif - end: - CMAC_CTX_free(ctx); - if (out) - OPENSSL_free(out); - return r; - } - - -/* DH: generate shared parameters -*/ -static int dh_test() - { - DH *dh; - ERR_clear_error(); - dh = FIPS_dh_new(); - if (!dh) - return 0; - if (!DH_generate_parameters_ex(dh, 1024, 2, NULL)) - return 0; - FIPS_dh_free(dh); - return 1; - } - -/* Zeroize -*/ -static int Zeroize() - { - RSA *key; - BIGNUM *bn; - unsigned char userkey[16] = - { 0x48, 0x50, 0xf0, 0xa3, 0x3a, 0xed, 0xd3, 0xaf, 0x6e, 0x47, 0x7f, 0x83, 0x02, 0xb1, 0x09, 0x68 }; - size_t i; - int n; - - key = FIPS_rsa_new(); - bn = BN_new(); - if (!key || !bn) - return 0; - BN_set_word(bn, 65537); - if (!RSA_generate_key_ex(key, 1024,bn,NULL)) - return 0; - BN_free(bn); - - n = BN_num_bytes(key->d); - printf(" Generated %d byte RSA private key\n", n); - printf("\tBN key before overwriting:\n"); - do_bn_print(stdout, key->d); - BN_rand(key->d,n*8,-1,0); - printf("\tBN key after overwriting:\n"); - do_bn_print(stdout, key->d); - - printf("\tchar buffer key before overwriting: \n\t\t"); - for(i = 0; i < sizeof(userkey); i++) printf("%02x", userkey[i]); - printf("\n"); - RAND_bytes(userkey, sizeof userkey); - printf("\tchar buffer key after overwriting: \n\t\t"); - for(i = 0; i < sizeof(userkey); i++) printf("%02x", userkey[i]); - printf("\n"); - - FIPS_rsa_free(key); - - return 1; - } - -/* Dummy Entropy for DRBG tests. WARNING: THIS IS TOTALLY BOGUS - * HAS ZERO SECURITY AND MUST NOT BE USED IN REAL APPLICATIONS. - */ - -static unsigned char dummy_drbg_entropy[1024]; - -static size_t drbg_test_cb(DRBG_CTX *ctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) - { - *pout = dummy_drbg_entropy; - /* Round up to multiple of block size */ - return (min_len + 0xf) & ~0xf; - } - -/* Callback which returns 0 to indicate entropy source failure */ -static size_t drbg_fail_cb(DRBG_CTX *ctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) - { - return 0; - } - -/* DRBG test: just generate lots of data and trigger health checks */ - -static int do_drbg_test(int type, int flags) - { - DRBG_CTX *dctx; - int rv = 0; - size_t i; - unsigned char randout[1024]; - dctx = FIPS_drbg_new(type, flags); - if (!dctx) - return 0; - FIPS_drbg_set_callbacks(dctx, drbg_test_cb, 0, 0x10, drbg_test_cb, 0); - for (i = 0; i < sizeof(dummy_drbg_entropy); i++) - { - dummy_drbg_entropy[i] = i & 0xff; - } - if (!FIPS_drbg_instantiate(dctx, dummy_drbg_entropy, 10)) - goto err; - FIPS_drbg_set_check_interval(dctx, 10); - for (i = 0; i < 32; i++) - { - if (!FIPS_drbg_generate(dctx, randout, sizeof(randout), 0, NULL, 0)) - goto err; - if (!FIPS_drbg_generate(dctx, randout, sizeof(randout), 0, dummy_drbg_entropy, 1)) - goto err; - } - rv = 1; - err: - FIPS_drbg_free(dctx); - return rv; - } - -typedef struct - { - int type, flags; - } DRBG_LIST; - -static int do_drbg_all(void) - { - static DRBG_LIST drbg_types[] = - { - {NID_sha1, 0}, - {NID_sha224, 0}, - {NID_sha256, 0}, - {NID_sha384, 0}, - {NID_sha512, 0}, - {NID_hmacWithSHA1, 0}, - {NID_hmacWithSHA224, 0}, - {NID_hmacWithSHA256, 0}, - {NID_hmacWithSHA384, 0}, - {NID_hmacWithSHA512, 0}, - {NID_aes_128_ctr, 0}, - {NID_aes_192_ctr, 0}, - {NID_aes_256_ctr, 0}, - {NID_aes_128_ctr, DRBG_FLAG_CTR_USE_DF}, - {NID_aes_192_ctr, DRBG_FLAG_CTR_USE_DF}, - {NID_aes_256_ctr, DRBG_FLAG_CTR_USE_DF}, - {(NID_X9_62_prime256v1 << 16)|NID_sha1, 0}, - {(NID_X9_62_prime256v1 << 16)|NID_sha224, 0}, - {(NID_X9_62_prime256v1 << 16)|NID_sha256, 0}, - {(NID_X9_62_prime256v1 << 16)|NID_sha384, 0}, - {(NID_X9_62_prime256v1 << 16)|NID_sha512, 0}, - {(NID_secp384r1 << 16)|NID_sha224, 0}, - {(NID_secp384r1 << 16)|NID_sha256, 0}, - {(NID_secp384r1 << 16)|NID_sha384, 0}, - {(NID_secp384r1 << 16)|NID_sha512, 0}, - {(NID_secp521r1 << 16)|NID_sha256, 0}, - {(NID_secp521r1 << 16)|NID_sha384, 0}, - {(NID_secp521r1 << 16)|NID_sha512, 0}, - {0, 0} - }; - DRBG_LIST *lst; - int rv = 1; - for (lst = drbg_types;; lst++) - { - if (lst->type == 0) - break; - if (!do_drbg_test(lst->type, lst->flags)) - rv = 0; - } - return rv; - } - -static int Error; -static const char * Fail(const char *msg) - { - Error++; - return msg; - } - -static void test_msg(const char *msg, int result) - { - printf("%s...%s\n", msg, result ? "successful" : Fail("Failed!")); - } - -/* Table of IDs for POST translating between NIDs and names */ - -typedef struct - { - int id; - const char *name; - } POST_ID; - -POST_ID id_list[] = { - {NID_sha1, "SHA1"}, - {NID_sha224, "SHA224"}, - {NID_sha256, "SHA256"}, - {NID_sha384, "SHA384"}, - {NID_sha512, "SHA512"}, - {NID_hmacWithSHA1, "HMAC-SHA1"}, - {NID_hmacWithSHA224, "HMAC-SHA224"}, - {NID_hmacWithSHA256, "HMAC-SHA256"}, - {NID_hmacWithSHA384, "HMAC-SHA384"}, - {NID_hmacWithSHA512, "HMAC-SHA512"}, - {EVP_PKEY_RSA, "RSA"}, - {EVP_PKEY_DSA, "DSA"}, - {EVP_PKEY_EC, "ECDSA"}, - {NID_aes_128_cbc, "AES-128-CBC"}, - {NID_aes_192_cbc, "AES-192-CBC"}, - {NID_aes_256_cbc, "AES-256-CBC"}, - {NID_aes_128_ctr, "AES-128-CTR"}, - {NID_aes_192_ctr, "AES-192-CTR"}, - {NID_aes_256_ctr, "AES-256-CTR"}, - {NID_aes_128_ecb, "AES-128-ECB"}, - {NID_aes_128_xts, "AES-128-XTS"}, - {NID_aes_256_xts, "AES-256-XTS"}, - {NID_des_ede3_cbc, "DES-EDE3-CBC"}, - {NID_des_ede3_ecb, "DES-EDE3-ECB"}, - {NID_secp224r1, "P-224"}, - {NID_sect233r1, "B-233"}, - {NID_sect233k1, "K-233"}, - {NID_X9_62_prime256v1, "P-256"}, - {NID_secp384r1, "P-384"}, - {NID_secp521r1, "P-521"}, - {0, NULL} -}; - -static const char *lookup_id(int id) - { - POST_ID *n; - static char out[40]; - for (n = id_list; n->name; n++) - { - if (n->id == id) - return n->name; - } - sprintf(out, "ID=%d", id); - return out; - } - -static int fail_id = -1; -static int fail_sub = -1; -static int fail_key = -1; - -static int st_err, post_quiet = 0; - -static int post_cb(int op, int id, int subid, void *ex) - { - const char *idstr, *exstr = ""; - char asctmp[20]; - int keytype = -1; - int exp_fail = 0; -#ifdef FIPS_POST_TIME - static struct timespec start, end, tstart, tend; -#endif - switch(id) - { - case FIPS_TEST_INTEGRITY: - idstr = "Integrity"; - break; - - case FIPS_TEST_DIGEST: - idstr = "Digest"; - exstr = lookup_id(subid); - break; - - case FIPS_TEST_CIPHER: - exstr = lookup_id(subid); - idstr = "Cipher"; - break; - - case FIPS_TEST_SIGNATURE: - if (ex) - { - EVP_PKEY *pkey = ex; - keytype = pkey->type; - if (keytype == EVP_PKEY_EC) - { - const EC_GROUP *grp; - int cnid; - grp = EC_KEY_get0_group(pkey->pkey.ec); - cnid = EC_GROUP_get_curve_name(grp); - sprintf(asctmp, "ECDSA %s", lookup_id(cnid)); - exstr = asctmp; - } - else - exstr = lookup_id(keytype); - } - idstr = "Signature"; - break; - - case FIPS_TEST_HMAC: - exstr = lookup_id(subid); - idstr = "HMAC"; - break; - - case FIPS_TEST_CMAC: - idstr = "CMAC"; - exstr = lookup_id(subid); - break; - - case FIPS_TEST_GCM: - idstr = "GCM"; - break; - - case FIPS_TEST_XTS: - idstr = "XTS"; - exstr = lookup_id(subid); - break; - - case FIPS_TEST_CCM: - idstr = "CCM"; - break; - - case FIPS_TEST_X931: - idstr = "X9.31 PRNG"; - sprintf(asctmp, "keylen=%d", subid); - exstr = asctmp; - break; - - case FIPS_TEST_DRBG: - idstr = "DRBG"; - if (*(int *)ex & DRBG_FLAG_CTR_USE_DF) - { - sprintf(asctmp, "%s DF", lookup_id(subid)); - exstr = asctmp; - } - else if (subid >> 16) - { - sprintf(asctmp, "%s %s", - lookup_id(subid >> 16), - lookup_id(subid & 0xFFFF)); - exstr = asctmp; - } - else - exstr = lookup_id(subid); - break; - - case FIPS_TEST_PAIRWISE: - if (ex) - { - EVP_PKEY *pkey = ex; - keytype = pkey->type; - exstr = lookup_id(keytype); - } - idstr = "Pairwise Consistency"; - break; - - case FIPS_TEST_CONTINUOUS: - idstr = "Continuous PRNG"; - break; - - case FIPS_TEST_ECDH: - idstr = "ECDH"; - exstr = lookup_id(subid); - break; - - default: - idstr = "Unknown"; - break; - - } - - if (fail_id == id - && (fail_key == -1 || fail_key == keytype) - && (fail_sub == -1 || fail_sub == subid)) - exp_fail = 1; - - switch(op) - { - case FIPS_POST_BEGIN: -#ifdef FIPS_POST_TIME - clock_getres(CLOCK_REALTIME, &tstart); - printf("\tTimer resolution %ld s, %ld ns\n", - (long)tstart.tv_sec, (long)tstart.tv_nsec); - clock_gettime(CLOCK_REALTIME, &tstart); -#endif - printf("\tPOST started\n"); - break; - - case FIPS_POST_END: - printf("\tPOST %s\n", id ? "Success" : "Failed"); -#ifdef FIPS_POST_TIME - clock_gettime(CLOCK_REALTIME, &tend); - printf("\t\tTook %f seconds\n", - (double)((tend.tv_sec+tend.tv_nsec*1e-9) - - (tstart.tv_sec+tstart.tv_nsec*1e-9))); -#endif - break; - - case FIPS_POST_STARTED: - if (!post_quiet && !exp_fail) - printf("\t\t%s %s test started\n", idstr, exstr); -#ifdef FIPS_POST_TIME - clock_gettime(CLOCK_REALTIME, &start); -#endif - break; - - case FIPS_POST_SUCCESS: - if (exp_fail) - { - printf("\t\t%s %s test OK but should've failed\n", - idstr, exstr); - st_err++; - } - else if (!post_quiet) - printf("\t\t%s %s test OK\n", idstr, exstr); -#ifdef FIPS_POST_TIME - clock_gettime(CLOCK_REALTIME, &end); - printf("\t\t\tTook %f seconds\n", - (double)((end.tv_sec+end.tv_nsec*1e-9) - - (start.tv_sec+start.tv_nsec*1e-9))); -#endif - break; - - case FIPS_POST_FAIL: - if (exp_fail) - { - printf("\t\t%s %s test failed as expected\n", - idstr, exstr); - } - else - { - printf("\t\t%s %s test Failed Incorrectly!!\n", - idstr, exstr); - st_err++; - } - break; - - case FIPS_POST_CORRUPT: - if (exp_fail) - { - printf("\t\t%s %s test failure induced\n", idstr, exstr); - return 0; - } - break; - - } - return 1; - } - -/* Test POST induced failures */ - -typedef struct - { - const char *name; - int id, subid, keyid; - } fail_list; - -static fail_list flist[] = - { - {"Integrity", FIPS_TEST_INTEGRITY, -1, -1}, - {"AES", FIPS_TEST_CIPHER, NID_aes_128_ecb, -1}, - {"DES3", FIPS_TEST_CIPHER, NID_des_ede3_ecb, -1}, - {"AES-GCM", FIPS_TEST_GCM, -1, -1}, - {"AES-CCM", FIPS_TEST_CCM, -1, -1}, - {"AES-XTS", FIPS_TEST_XTS, -1, -1}, - {"Digest", FIPS_TEST_DIGEST, -1, -1}, - {"HMAC", FIPS_TEST_HMAC, -1, -1}, - {"CMAC", FIPS_TEST_CMAC, -1, -1}, - {"DRBG", FIPS_TEST_DRBG, -1, -1}, - {"X9.31 PRNG", FIPS_TEST_X931, -1, -1}, - {"RSA", FIPS_TEST_SIGNATURE, -1, EVP_PKEY_RSA}, - {"DSA", FIPS_TEST_SIGNATURE, -1, EVP_PKEY_DSA}, - {"ECDSA", FIPS_TEST_SIGNATURE, -1, EVP_PKEY_EC}, - {"ECDH", FIPS_TEST_ECDH, -1, -1}, - {NULL, -1, -1, -1} - }; - -static int do_fail_all(int fullpost, int fullerr) - { - fail_list *ftmp; - int rv; - size_t i; - RSA *rsa = NULL; - DSA *dsa = NULL; - DRBG_CTX *dctx = NULL, *defctx = NULL; - EC_KEY *ec = NULL; - BIGNUM *bn = NULL; - unsigned char out[10]; - if (!fullpost) - post_quiet = 1; - if (!fullerr) - no_err = 1; - FIPS_module_mode_set(0, NULL); - for (ftmp = flist; ftmp->name; ftmp++) - { - printf(" Testing induced failure of %s test\n", ftmp->name); - fail_id = ftmp->id; - fail_sub = ftmp->subid; - fail_key = ftmp->keyid; - rv = FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS); - if (rv) - { - printf("\tFIPS mode incorrectly successful!!\n"); - st_err++; - } - } - printf(" Testing induced failure of RSA keygen test\n"); - /* NB POST will succeed with a pairwise test failures as - * it is not used during POST. - */ - fail_id = FIPS_TEST_PAIRWISE; - fail_key = EVP_PKEY_RSA; - /* Now enter FIPS mode successfully */ - if (!FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS)) - { - printf("\tError entering FIPS mode\n"); - st_err++; - } - - rsa = FIPS_rsa_new(); - bn = BN_new(); - if (!rsa || !bn) - return 0; - BN_set_word(bn, 65537); - if (RSA_generate_key_ex(rsa, 2048,bn,NULL)) - { - printf("\tRSA key generated OK incorrectly!!\n"); - st_err++; - } - else - printf("\tRSA key generation failed as expected.\n"); - - /* Leave FIPS mode to clear error */ - FIPS_module_mode_set(0, NULL); - - printf(" Testing induced failure of DSA keygen test\n"); - fail_key = EVP_PKEY_DSA; - /* Enter FIPS mode successfully */ - if (!FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS)) - { - printf("\tError entering FIPS mode\n"); - st_err++; - } - dsa = FIPS_dsa_new(); - if (!dsa) - return 0; - if (!DSA_generate_parameters_ex(dsa, 1024,NULL,0,NULL,NULL,NULL)) - return 0; - if (DSA_generate_key(dsa)) - { - printf("\tDSA key generated OK incorrectly!!\n"); - st_err++; - } - else - printf("\tDSA key generation failed as expected.\n"); - - /* Leave FIPS mode to clear error */ - FIPS_module_mode_set(0, NULL); - /* Enter FIPS mode successfully */ - if (!FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS)) - { - printf("\tError entering FIPS mode\n"); - st_err++; - } - - printf(" Testing induced failure of ECDSA keygen test\n"); - fail_key = EVP_PKEY_EC; - - ec = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); - - if (!ec) - return 0; - - if (EC_KEY_generate_key(ec)) - { - printf("\tECDSA key generated OK incorrectly!!\n"); - st_err++; - } - else - printf("\tECDSA key generation failed as expected.\n"); - - FIPS_ec_key_free(ec); - ec = NULL; - - fail_id = -1; - fail_sub = -1; - fail_key = -1; - /* Leave FIPS mode to clear error */ - FIPS_module_mode_set(0, NULL); - /* Enter FIPS mode successfully */ - if (!FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS)) - { - printf("\tError entering FIPS mode\n"); - st_err++; - } - /* Induce continuous PRNG failure for DRBG */ - printf(" Testing induced failure of DRBG CPRNG test\n"); - FIPS_drbg_stick(1); - - /* Initialise a DRBG context */ - dctx = FIPS_drbg_new(NID_sha1, 0); - if (!dctx) - return 0; - for (i = 0; i < sizeof(dummy_drbg_entropy); i++) - { - dummy_drbg_entropy[i] = i & 0xff; - } - FIPS_drbg_set_callbacks(dctx, drbg_test_cb, 0, 0x10, drbg_test_cb, 0); - if (!FIPS_drbg_instantiate(dctx, dummy_drbg_entropy, 10)) - { - printf("\tDRBG instantiate error!!\n"); - st_err++; - } - if (FIPS_drbg_generate(dctx, out, sizeof(out), 0, NULL, 0)) - { - printf("\tDRBG continuous PRNG OK incorrectly!!\n"); - st_err++; - } - else - printf("\tDRBG continuous PRNG failed as expected\n"); - FIPS_drbg_stick(0); - - /* Leave FIPS mode to clear error */ - FIPS_module_mode_set(0, NULL); - /* Enter FIPS mode successfully */ - if (!FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS)) - { - printf("\tError entering FIPS mode\n"); - st_err++; - } - - FIPS_drbg_free(dctx); - - /* Induce continuous PRNG failure for DRBG entropy source*/ - printf(" Testing induced failure of DRBG entropy CPRNG test\n"); - - /* Initialise a DRBG context */ - dctx = FIPS_drbg_new(NID_sha1, 0); - if (!dctx) - return 0; - for (i = 0; i < sizeof(dummy_drbg_entropy); i++) - { - dummy_drbg_entropy[i] = i & 0xf; - } - FIPS_drbg_set_callbacks(dctx, drbg_test_cb, 0, 0x10, drbg_test_cb, 0); - if (FIPS_drbg_instantiate(dctx, dummy_drbg_entropy, 10)) - { - printf("\tDRBG continuous PRNG entropy OK incorrectly!!\n"); - st_err++; - } - else - printf("\tDRBG continuous PRNG entropy failed as expected\n"); - /* Leave FIPS mode to clear error */ - FIPS_module_mode_set(0, NULL); - /* Enter FIPS mode successfully */ - if (!FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS)) - { - printf("\tError entering FIPS mode\n"); - st_err++; - } - FIPS_drbg_free(dctx); - - /* Leave FIPS mode to clear error */ - FIPS_module_mode_set(0, NULL); - /* Enter FIPS mode successfully */ - if (!FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS)) - { - printf("\tError entering FIPS mode\n"); - st_err++; - } - - printf(" Testing induced failure of X9.31 CPRNG test\n"); - FIPS_x931_stick(1); - if (!FIPS_x931_set_key(dummy_drbg_entropy, 32)) - { - printf("\tError initialiasing X9.31 PRNG\n"); - st_err++; - } - if (!FIPS_x931_seed(dummy_drbg_entropy + 32, 16)) - { - printf("\tError seeding X9.31 PRNG\n"); - st_err++; - } - if (FIPS_x931_bytes(out, 10) > 0) - { - printf("\tX9.31 continuous PRNG failure OK incorrectly!!\n"); - st_err++; - } - else - printf("\tX9.31 continuous PRNG failed as expected\n"); - FIPS_x931_stick(0); - - /* Leave FIPS mode to clear error */ - FIPS_module_mode_set(0, NULL); - /* Enter FIPS mode successfully */ - if (!FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS)) - { - printf("\tError entering FIPS mode\n"); - st_err++; - } - - printf(" Testing operation failure with DRBG entropy failure\n"); - - /* Generate DSA key for later use */ - if (DSA_generate_key(dsa)) - printf("\tDSA key generated OK as expected.\n"); - else - { - printf("\tDSA key generation FAILED!!\n"); - st_err++; - } - - /* Initialise default DRBG context */ - defctx = FIPS_get_default_drbg(); - if (!defctx) - return 0; - if (!FIPS_drbg_init(defctx, NID_sha512, 0)) - return 0; - /* Set entropy failure callback */ - FIPS_drbg_set_callbacks(defctx, drbg_fail_cb, 0, 0x10, drbg_test_cb, 0); - if (FIPS_drbg_instantiate(defctx, dummy_drbg_entropy, 10)) - { - printf("\tDRBG entropy fail OK incorrectly!!\n"); - st_err++; - } - else - printf("\tDRBG entropy fail failed as expected\n"); - - if (FIPS_dsa_sign(dsa, dummy_drbg_entropy, 5, EVP_sha256())) - { - printf("\tDSA signing OK incorrectly!!\n"); - st_err++; - } - else - printf("\tDSA signing failed as expected\n"); - - ec = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); - - if (!ec) - return 0; - - if (EC_KEY_generate_key(ec)) - { - printf("\tECDSA key generated OK incorrectly!!\n"); - st_err++; - } - else - printf("\tECDSA key generation failed as expected.\n"); - - printf(" Induced failure test completed with %d errors\n", st_err); - post_quiet = 0; - no_err = 0; - BN_free(bn); - FIPS_rsa_free(rsa); - FIPS_dsa_free(dsa); - FIPS_ec_key_free(ec); - if (st_err) - return 0; - return 1; - } - -#ifdef FIPS_ALGVS -int fips_test_suite_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - char **args = argv + 1; - int bad_rsa = 0, bad_dsa = 0; - int do_rng_stick = 0; - int do_drbg_stick = 0; - int no_exit = 0; - int no_dh = 0, no_drbg = 0; - char *pass = FIPS_AUTH_USER_PASS; - int fullpost = 0, fullerr = 0; - - FIPS_post_set_callback(post_cb); - - printf("\tFIPS-mode test application\n"); - - printf("\t%s\n\n", FIPS_module_version_text()); - - while(*args) { - /* Corrupted KAT tests */ - if (!strcmp(*args, "integrity")) { - fail_id = FIPS_TEST_INTEGRITY; - } else if (!strcmp(*args, "aes")) { - fail_id = FIPS_TEST_CIPHER; - fail_sub = NID_aes_128_ecb; - } else if (!strcmp(*args, "aes-ccm")) { - fail_id = FIPS_TEST_CCM; - } else if (!strcmp(*args, "aes-gcm")) { - fail_id = FIPS_TEST_GCM; - } else if (!strcmp(*args, "aes-xts")) { - fail_id = FIPS_TEST_XTS; - } else if (!strcmp(*args, "des")) { - fail_id = FIPS_TEST_CIPHER; - fail_sub = NID_des_ede3_ecb; - } else if (!strcmp(*args, "dsa")) { - fail_id = FIPS_TEST_SIGNATURE; - fail_key = EVP_PKEY_DSA; - } else if (!strcmp(argv[1], "ecdh")) { - fail_id = FIPS_TEST_ECDH; - } else if (!strcmp(*args, "ecdsa")) { - fail_id = FIPS_TEST_SIGNATURE; - fail_key = EVP_PKEY_EC; - } else if (!strcmp(*args, "rsa")) { - fail_id = FIPS_TEST_SIGNATURE; - fail_key = EVP_PKEY_RSA; - } else if (!strcmp(*args, "rsakey")) { - printf("RSA key generation and signature validation with corrupted key...\n"); - bad_rsa = 1; - no_exit = 1; - } else if (!strcmp(*args, "rsakeygen")) { - fail_id = FIPS_TEST_PAIRWISE; - fail_key = EVP_PKEY_RSA; - no_exit = 1; - } else if (!strcmp(*args, "dsakey")) { - printf("DSA key generation and signature validation with corrupted key...\n"); - bad_dsa = 1; - no_exit = 1; - } else if (!strcmp(*args, "dsakeygen")) { - fail_id = FIPS_TEST_PAIRWISE; - fail_key = EVP_PKEY_DSA; - no_exit = 1; - } else if (!strcmp(*args, "sha1")) { - fail_id = FIPS_TEST_DIGEST; - } else if (!strcmp(*args, "hmac")) { - fail_id = FIPS_TEST_HMAC; - } else if (!strcmp(*args, "cmac")) { - fail_id = FIPS_TEST_CMAC; - } else if (!strcmp(*args, "drbg")) { - fail_id = FIPS_TEST_DRBG; - } else if (!strcmp(argv[1], "rng")) { - fail_id = FIPS_TEST_X931; - } else if (!strcmp(*args, "nodrbg")) { - no_drbg = 1; - no_exit = 1; - } else if (!strcmp(*args, "nodh")) { - no_dh = 1; - no_exit = 1; - } else if (!strcmp(*args, "post")) { - fail_id = -1; - } else if (!strcmp(*args, "rngstick")) { - do_rng_stick = 1; - no_exit = 1; - printf("RNG test with stuck continuous test...\n"); - } else if (!strcmp(*args, "drbgentstick")) { - do_entropy_stick(); - } else if (!strcmp(*args, "drbgstick")) { - do_drbg_stick = 1; - no_exit = 1; - printf("DRBG test with stuck continuous test...\n"); - } else if (!strcmp(*args, "user")) { - pass = FIPS_AUTH_USER_PASS; - } else if (!strcmp(*args, "officer")) { - pass = FIPS_AUTH_OFFICER_PASS; - } else if (!strcmp(*args, "badpass")) { - pass = "bad invalid password"; - } else if (!strcmp(*args, "nopass")) { - pass = ""; - } else if (!strcmp(*args, "fullpost")) { - fullpost = 1; - no_exit = 1; - } else if (!strcmp(*args, "fullerr")) { - fullerr = 1; - no_exit = 1; - } else { - printf("Bad argument \"%s\"\n", *args); - return 1; - } - args++; - } - - if ((argc != 1) && !no_exit) { - fips_algtest_init_nofips(); - if (!FIPS_module_mode_set(1, pass)) { - printf("Power-up self test failed\n"); - return 1; - } - printf("Power-up self test successful\n"); - return 0; - } - - fips_algtest_init_nofips(); - - /* Non-Approved cryptographic operation - */ - printf("1. Non-Approved cryptographic operation test...\n"); - if (no_dh) - printf("\t D-H test skipped\n"); - else - test_msg("\ta. Included algorithm (D-H)...", dh_test()); - - /* Power-up self test - */ - ERR_clear_error(); - test_msg("2. Automatic power-up self test", FIPS_module_mode_set(1, pass)); - if (!FIPS_module_mode()) - return 1; - if (do_drbg_stick) - FIPS_drbg_stick(1); - if (do_rng_stick) - FIPS_x931_stick(1); - - /* AES encryption/decryption - */ - test_msg("3a. AES encryption/decryption", FIPS_aes_test()); - /* AES GCM encryption/decryption - */ - test_msg("3b. AES-GCM encryption/decryption", FIPS_aes_gcm_test()); - - /* RSA key generation and encryption/decryption - */ - test_msg("4. RSA key generation and encryption/decryption", - FIPS_rsa_test(bad_rsa)); - - /* DES-CBC encryption/decryption - */ - test_msg("5. DES-ECB encryption/decryption", FIPS_des3_test()); - - /* DSA key generation and signature validation - */ - test_msg("6. DSA key generation and signature validation", - FIPS_dsa_test(bad_dsa)); - - /* SHA-1 hash - */ - test_msg("7a. SHA-1 hash", FIPS_sha1_test()); - - /* SHA-256 hash - */ - test_msg("7b. SHA-256 hash", FIPS_sha256_test()); - - /* SHA-512 hash - */ - test_msg("7c. SHA-512 hash", FIPS_sha512_test()); - - /* HMAC-SHA-1 hash - */ - test_msg("7d. HMAC-SHA-1 hash", FIPS_hmac_sha1_test()); - - /* HMAC-SHA-224 hash - */ - test_msg("7e. HMAC-SHA-224 hash", FIPS_hmac_sha224_test()); - - /* HMAC-SHA-256 hash - */ - test_msg("7f. HMAC-SHA-256 hash", FIPS_hmac_sha256_test()); - - /* HMAC-SHA-384 hash - */ - test_msg("7g. HMAC-SHA-384 hash", FIPS_hmac_sha384_test()); - - /* HMAC-SHA-512 hash - */ - test_msg("7h. HMAC-SHA-512 hash", FIPS_hmac_sha512_test()); - - /* CMAC-AES-128 hash - */ - test_msg("8a. CMAC-AES-128 hash", FIPS_cmac_aes128_test()); - - /* CMAC-AES-192 hash - */ - test_msg("8b. CMAC-AES-192 hash", FIPS_cmac_aes192_test()); - - /* CMAC-AES-256 hash - */ - test_msg("8c. CMAC-AES-256 hash", FIPS_cmac_aes256_test()); - -# if 0 /* Not a FIPS algorithm */ - /* CMAC-TDEA-2 hash - */ - test_msg("8d. CMAC-TDEA-2 hash", FIPS_cmac_tdea2_test()); -#endif - - /* CMAC-TDEA-3 hash - */ - test_msg("8e. CMAC-TDEA-3 hash", FIPS_cmac_tdea3_test()); - - /* Non-Approved cryptographic operation - */ - printf("9. Non-Approved cryptographic operation test...\n"); - printf("\ta. Included algorithm (D-H)...%s\n", - no_dh ? "skipped" : - dh_test() ? "successful as expected" - : Fail("failed INCORRECTLY!") ); - - /* Zeroization - */ - printf("10. Zero-ization...\n\t%s\n", - Zeroize() ? "successful as expected" - : Fail("failed INCORRECTLY!") ); - - printf("11. Complete DRBG health check...\n"); - printf("\t%s\n", FIPS_selftest_drbg_all() ? "successful as expected" - : Fail("failed INCORRECTLY!") ); - - printf("12. DRBG generation check...\n"); - if (no_drbg) - printf("\tskipped\n"); - else - printf("\t%s\n", do_drbg_all() ? "successful as expected" - : Fail("failed INCORRECTLY!") ); - - printf("13. Induced test failure check...\n"); - printf("\t%s\n", do_fail_all(fullpost, fullerr) ? "successful as expected" - : Fail("failed INCORRECTLY!") ); - printf("\nAll tests completed with %d errors\n", Error); - return Error ? 1 : 0; - } - -#endif diff --git a/fips/fips_utl.h b/fips/fips_utl.h deleted file mode 100644 index 491bc2ace9..0000000000 --- a/fips/fips_utl.h +++ /dev/null @@ -1,494 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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@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 FIPS_UTL_H -#define FIPS_UTL_H - -#define OPENSSL_FIPSAPI - -#include -#include - -#ifdef OPENSSL_SYS_WIN32 -#define RESP_EOL "\n" -#else -#define RESP_EOL "\r\n" -#endif - -#ifndef FIPS_AUTH_OFFICER_PASS -#define FIPS_AUTH_OFFICER_PASS "Default FIPS Crypto Officer Password" -#endif - -#ifndef FIPS_AUTH_USER_PASS -#define FIPS_AUTH_USER_PASS "Default FIPS Crypto User Password" -#endif - - -int hex2bin(const char *in, unsigned char *out); -unsigned char *hex2bin_m(const char *in, long *plen); -int do_hex2bn(BIGNUM **pr, const char *in); -int do_bn_print(FILE *out, const BIGNUM *bn); -int do_bn_print_name(FILE *out, const char *name, const BIGNUM *bn); -int parse_line(char **pkw, char **pval, char *linebuf, char *olinebuf); -int parse_line2(char **pkw, char **pval, char *linebuf, char *olinebuf, int eol); -BIGNUM *hex2bn(const char *in); -int tidy_line(char *linebuf, char *olinebuf); -int copy_line(const char *in, FILE *ofp); -int bint2bin(const char *in, int len, unsigned char *out); -int bin2bint(const unsigned char *in,int len,char *out); -void PrintValue(char *tag, unsigned char *val, int len); -void OutputValue(char *tag, unsigned char *val, int len, FILE *rfp,int bitmode); -void fips_algtest_init(void); -void do_entropy_stick(void); -int fips_strncasecmp(const char *str1, const char *str2, size_t n); -int fips_strcasecmp(const char *str1, const char *str2); - -static int no_err; - -static void put_err_cb(int lib, int func,int reason,const char *file,int line) - { - if (no_err) - return; - fprintf(stderr, "ERROR:%08lX:lib=%d,func=%d,reason=%d" - ":file=%s:line=%d\n", - ERR_PACK(lib, func, reason), - lib, func, reason, file, line); - } - -static void add_err_cb(int num, va_list args) - { - int i; - char *str; - if (no_err) - return; - fputs("\t", stderr); - for (i = 0; i < num; i++) - { - str = va_arg(args, char *); - if (str) - fputs(str, stderr); - } - fputs("\n", stderr); - } - -/* Dummy Entropy to keep DRBG happy. WARNING: THIS IS TOTALLY BOGUS - * HAS ZERO SECURITY AND MUST NOT BE USED IN REAL APPLICATIONS. - */ - -static unsigned char dummy_entropy[1024]; - -static size_t dummy_cb(DRBG_CTX *ctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) - { - *pout = dummy_entropy; - return min_len; - } - -static int entropy_stick = 0; - -static void fips_algtest_init_nofips(void) - { - DRBG_CTX *ctx; - size_t i; - FIPS_set_error_callbacks(put_err_cb, add_err_cb); - for (i = 0; i < sizeof(dummy_entropy); i++) - dummy_entropy[i] = i & 0xff; - if (entropy_stick) - memcpy(dummy_entropy + 32, dummy_entropy + 16, 16); - ctx = FIPS_get_default_drbg(); - FIPS_drbg_init(ctx, NID_aes_256_ctr, DRBG_FLAG_CTR_USE_DF); - FIPS_drbg_set_callbacks(ctx, dummy_cb, 0, 16, dummy_cb, 0); - FIPS_drbg_instantiate(ctx, dummy_entropy, 10); - FIPS_rand_set_method(FIPS_drbg_method()); - } - -void do_entropy_stick(void) - { - entropy_stick = 1; - } - -void fips_algtest_init(void) - { - fips_algtest_init_nofips(); - if (!FIPS_module_mode_set(1, FIPS_AUTH_USER_PASS)) - { - fprintf(stderr, "Error entering FIPS mode\n"); - exit(1); - } - } - -int hex2bin(const char *in, unsigned char *out) - { - int n1, n2, isodd = 0; - unsigned char ch; - - n1 = strlen(in); - if (in[n1 - 1] == '\n') - n1--; - - if (n1 & 1) - isodd = 1; - - for (n1=0,n2=0 ; in[n1] && in[n1] != '\n' ; ) - { /* first byte */ - if ((in[n1] >= '0') && (in[n1] <= '9')) - ch = in[n1++] - '0'; - else if ((in[n1] >= 'A') && (in[n1] <= 'F')) - ch = in[n1++] - 'A' + 10; - else if ((in[n1] >= 'a') && (in[n1] <= 'f')) - ch = in[n1++] - 'a' + 10; - else - return -1; - if(!in[n1]) - { - out[n2++]=ch; - break; - } - /* If input is odd length first digit is least significant: assumes - * all digits valid hex and null terminated which is true for the - * strings we pass. - */ - if (n1 == 1 && isodd) - { - out[n2++] = ch; - continue; - } - out[n2] = ch << 4; - /* second byte */ - if ((in[n1] >= '0') && (in[n1] <= '9')) - ch = in[n1++] - '0'; - else if ((in[n1] >= 'A') && (in[n1] <= 'F')) - ch = in[n1++] - 'A' + 10; - else if ((in[n1] >= 'a') && (in[n1] <= 'f')) - ch = in[n1++] - 'a' + 10; - else - return -1; - out[n2++] |= ch; - } - return n2; - } - -unsigned char *hex2bin_m(const char *in, long *plen) - { - unsigned char *p; - if (strlen(in) == 0) - { - *plen = 0; - return OPENSSL_malloc(1); - } - p = OPENSSL_malloc((strlen(in) + 1)/2); - *plen = hex2bin(in, p); - return p; - } - -int do_hex2bn(BIGNUM **pr, const char *in) - { - unsigned char *p; - long plen; - int r = 0; - p = hex2bin_m(in, &plen); - if (!p) - return 0; - if (!*pr) - *pr = BN_new(); - if (!*pr) - return 0; - if (BN_bin2bn(p, plen, *pr)) - r = 1; - OPENSSL_free(p); - return r; - } - -int do_bn_print(FILE *out, const BIGNUM *bn) - { - int len, i; - unsigned char *tmp; - len = BN_num_bytes(bn); - if (len == 0) - { - fputs("00", out); - return 1; - } - - tmp = OPENSSL_malloc(len); - if (!tmp) - { - fprintf(stderr, "Memory allocation error\n"); - return 0; - } - BN_bn2bin(bn, tmp); - for (i = 0; i < len; i++) - fprintf(out, "%02x", tmp[i]); - OPENSSL_free(tmp); - return 1; - } - -int do_bn_print_name(FILE *out, const char *name, const BIGNUM *bn) - { - int r; - fprintf(out, "%s = ", name); - r = do_bn_print(out, bn); - if (!r) - return 0; - fputs(RESP_EOL, out); - return 1; - } - -int parse_line(char **pkw, char **pval, char *linebuf, char *olinebuf) - { - return parse_line2(pkw, pval, linebuf, olinebuf, 1); - } - -int parse_line2(char **pkw, char **pval, char *linebuf, char *olinebuf, int eol) - { - char *keyword, *value, *p, *q; - strcpy(linebuf, olinebuf); - keyword = linebuf; - /* Skip leading space */ - while (isspace((unsigned char)*keyword)) - keyword++; - - /* Look for = sign */ - p = strchr(linebuf, '='); - - /* If no '=' exit */ - if (!p) - return 0; - - q = p - 1; - - /* Remove trailing space */ - while (isspace((unsigned char)*q)) - *q-- = 0; - - *p = 0; - value = p + 1; - - /* Remove leading space from value */ - while (isspace((unsigned char)*value)) - value++; - - /* Remove trailing space from value */ - p = value + strlen(value) - 1; - - if (eol && *p != '\n') - fprintf(stderr, "Warning: missing EOL\n"); - - while (*p == '\n' || isspace((unsigned char)*p)) - *p-- = 0; - - *pkw = keyword; - *pval = value; - return 1; - } - -BIGNUM *hex2bn(const char *in) - { - BIGNUM *p=NULL; - - if (!do_hex2bn(&p, in)) - return NULL; - - return p; - } - -/* To avoid extensive changes to test program at this stage just convert - * the input line into an acceptable form. Keyword lines converted to form - * "keyword = value\n" no matter what white space present, all other lines - * just have leading and trailing space removed. - */ - -int tidy_line(char *linebuf, char *olinebuf) - { - char *keyword, *value, *p, *q; - strcpy(linebuf, olinebuf); - keyword = linebuf; - /* Skip leading space */ - while (isspace((unsigned char)*keyword)) - keyword++; - /* Look for = sign */ - p = strchr(linebuf, '='); - - /* If no '=' just chop leading, trailing ws */ - if (!p) - { - p = keyword + strlen(keyword) - 1; - while (*p == '\n' || isspace((unsigned char)*p)) - *p-- = 0; - strcpy(olinebuf, keyword); - strcat(olinebuf, "\n"); - return 1; - } - - q = p - 1; - - /* Remove trailing space */ - while (isspace((unsigned char)*q)) - *q-- = 0; - - *p = 0; - value = p + 1; - - /* Remove leading space from value */ - while (isspace((unsigned char)*value)) - value++; - - /* Remove trailing space from value */ - p = value + strlen(value) - 1; - - while (*p == '\n' || isspace((unsigned char)*p)) - *p-- = 0; - - strcpy(olinebuf, keyword); - strcat(olinebuf, " = "); - strcat(olinebuf, value); - strcat(olinebuf, "\n"); - - return 1; - } -/* Copy supplied line to ofp replacing \n with \r\n */ -int copy_line(const char *in, FILE *ofp) - { - const char *p; - p = strchr(in, '\n'); - if (p) - { - fwrite(in, 1, (size_t)(p - in), ofp); - fputs(RESP_EOL, ofp); - } - else - fputs(in, ofp); - return 1; - } - -/* NB: this return the number of _bits_ read */ -int bint2bin(const char *in, int len, unsigned char *out) - { - int n; - - memset(out,0,len); - for(n=0 ; n < len ; ++n) - if(in[n] == '1') - out[n/8]|=(0x80 >> (n%8)); - return len; - } - -int bin2bint(const unsigned char *in,int len,char *out) - { - int n; - - for(n=0 ; n < len ; ++n) - out[n]=(in[n/8]&(0x80 >> (n%8))) ? '1' : '0'; - return n; - } - -/*-----------------------------------------------*/ - -void PrintValue(char *tag, unsigned char *val, int len) -{ -#ifdef VERBOSE - OutputValue(tag, val, len, stdout, 0); -#endif -} - -void OutputValue(char *tag, unsigned char *val, int len, FILE *rfp,int bitmode) - { - char obuf[2048]; - int olen; - - if(bitmode) - { - olen=bin2bint(val,len,obuf); - fprintf(rfp, "%s = %.*s" RESP_EOL, tag, olen, obuf); - } - else - { - int i; - fprintf(rfp, "%s = ", tag); - for (i = 0; i < len; i++) - fprintf(rfp, "%02x", val[i]); - fputs(RESP_EOL, rfp); - } - -#if VERBOSE - printf("%s = %.*s\n", tag, olen, obuf); -#endif - } - -/* Not all platforms support strcasecmp and strncasecmp: implement versions - * in here to avoid need to include them in the validated module. Taken - * from crypto/o_str.c written by Richard Levitte (richard@levitte.org) - */ - -int fips_strncasecmp(const char *str1, const char *str2, size_t n) - { - while (*str1 && *str2 && n) - { - int res = toupper(*str1) - toupper(*str2); - if (res) return res < 0 ? -1 : 1; - str1++; - str2++; - n--; - } - if (n == 0) - return 0; - if (*str1) - return 1; - if (*str2) - return -1; - return 0; - } - -int fips_strcasecmp(const char *str1, const char *str2) - { - return fips_strncasecmp(str1, str2, (size_t)-1); - } - - -#endif diff --git a/fips/fipsalgtest.pl b/fips/fipsalgtest.pl deleted file mode 100644 index 30cd9c0ebd..0000000000 --- a/fips/fipsalgtest.pl +++ /dev/null @@ -1,1209 +0,0 @@ -#!/usr/bin/perl -w -# Perl utility to run or verify FIPS 140-2 CAVP algorithm tests based on the -# pathnames of input algorithm test files actually present (the unqualified -# file names are consistent but the pathnames are not). -# - -# FIPS test definitions -# List of all the unqualified file names we expect and command lines to run - -# DSA tests -my @fips_dsa_test_list = ( - - "DSA", - - [ "PQGGen", "fips_dssvs pqg", "path:[^C]DSA/.*PQGGen" ], - [ "KeyPair", "fips_dssvs keypair", "path:[^C]DSA/.*KeyPair" ], - [ "SigGen", "fips_dssvs siggen", "path:[^C]DSA/.*SigGen" ], - [ "SigVer", "fips_dssvs sigver", "path:[^C]DSA/.*SigVer" ] - -); - -my @fips_dsa_pqgver_test_list = ( - - [ "PQGVer", "fips_dssvs pqgver", "path:[^C]DSA/.*PQGVer" ] - -); - -# DSA2 tests -my @fips_dsa2_test_list = ( - - "DSA2", - - [ "PQGGen", "fips_dssvs pqg", "path:[^C]DSA2/.*PQGGen" ], - [ "KeyPair", "fips_dssvs keypair", "path:[^C]DSA2/.*KeyPair" ], - [ "SigGen", "fips_dssvs siggen", "path:[^C]DSA2/.*SigGen" ], - [ "SigVer", "fips_dssvs sigver", "path:[^C]DSA2/.*SigVer" ], - [ "PQGVer", "fips_dssvs pqgver", "path:[^C]DSA2/.*PQGVer" ] - -); - -# ECDSA and ECDSA2 tests -my @fips_ecdsa_test_list = ( - - "ECDSA", - - [ "KeyPair", "fips_ecdsavs KeyPair", "path:/ECDSA/.*KeyPair" ], - [ "PKV", "fips_ecdsavs PKV", "path:/ECDSA/.*PKV" ], - [ "SigGen", "fips_ecdsavs SigGen", "path:/ECDSA/.*SigGen" ], - [ "SigVer", "fips_ecdsavs SigVer", "path:/ECDSA/.*SigVer" ], - - "ECDSA2", - - [ "KeyPair", "fips_ecdsavs KeyPair", "path:/ECDSA2/.*KeyPair" ], - [ "PKV", "fips_ecdsavs PKV", "path:/ECDSA2/.*PKV" ], - [ "SigGen", "fips_ecdsavs SigGen", "path:/ECDSA2/.*SigGen" ], - [ "SigVer", "fips_ecdsavs SigVer", "path:/ECDSA2/.*SigVer" ], - -); - -# RSA tests - -my @fips_rsa_test_list = ( - - "RSA", - - [ "SigGen15", "fips_rsastest" ], - [ "SigVer15", "fips_rsavtest" ], - [ "SigVerRSA", "fips_rsavtest -x931" ], - [ "KeyGenRSA", "fips_rsagtest" ], - [ "SigGenRSA", "fips_rsastest -x931" ] - -); - -# Special cases for PSS. The filename itself is -# not sufficient to determine the test. Addditionally we -# need to examine the file contents to determine the salt length -# In these cases the test filename has (saltlen) appended. - -# RSA PSS salt length 0 tests - -my @fips_rsa_pss0_test_list = ( - - [ "SigGenPSS(0)", "fips_rsastest -saltlen 0", - 'file:^\s*#\s*salt\s+len:\s+0\s*$' ], - [ "SigVerPSS(0)", "fips_rsavtest -saltlen 0", - 'file:^\s*#\s*salt\s+len:\s+0\s*$' ], - -); - -# RSA PSS salt length 62 tests - -my @fips_rsa_pss62_test_list = ( - [ "SigGenPSS(62)", "fips_rsastest -saltlen 62", - 'file:^\s*#\s*salt\s+len:\s+62\s*$' ], - [ "SigVerPSS(62)", "fips_rsavtest -saltlen 62", - 'file:^\s*#\s*salt\s+len:\s+62\s*$' ], -); - -# SHA tests - -my @fips_sha_test_list = ( - - "SHA", - - [ "SHA1LongMsg", "fips_shatest" ], - [ "SHA1Monte", "fips_shatest" ], - [ "SHA1ShortMsg", "fips_shatest" ], - [ "SHA224LongMsg", "fips_shatest" ], - [ "SHA224Monte", "fips_shatest" ], - [ "SHA224ShortMsg", "fips_shatest" ], - [ "SHA256LongMsg", "fips_shatest" ], - [ "SHA256Monte", "fips_shatest" ], - [ "SHA256ShortMsg", "fips_shatest" ], - [ "SHA384LongMsg", "fips_shatest" ], - [ "SHA384Monte", "fips_shatest" ], - [ "SHA384ShortMsg", "fips_shatest" ], - [ "SHA512LongMsg", "fips_shatest" ], - [ "SHA512Monte", "fips_shatest" ], - [ "SHA512ShortMsg", "fips_shatest" ] - -); - -# HMAC - -my @fips_hmac_test_list = ( - - "HMAC", - - [ "HMAC", "fips_hmactest" ] - -); - -# CMAC - -my @fips_cmac_test_list = ( - - "CMAC", - - [ "CMACGenAES128", "fips_cmactest -a aes128 -g" ], - [ "CMACVerAES128", "fips_cmactest -a aes128 -v" ], - [ "CMACGenAES192", "fips_cmactest -a aes192 -g" ], - [ "CMACVerAES192", "fips_cmactest -a aes192 -v" ], - [ "CMACGenAES256", "fips_cmactest -a aes256 -g" ], - [ "CMACVerAES256", "fips_cmactest -a aes256 -v" ], - [ "CMACGenTDES3", "fips_cmactest -a tdes3 -g" ], - [ "CMACVerTDES3", "fips_cmactest -a tdes3 -v" ], - -); - -# RAND tests, AES version - -my @fips_rand_aes_test_list = ( - - "RAND (AES)", - - [ "ANSI931_AES128MCT", "fips_rngvs mct" ], - [ "ANSI931_AES192MCT", "fips_rngvs mct" ], - [ "ANSI931_AES256MCT", "fips_rngvs mct" ], - [ "ANSI931_AES128VST", "fips_rngvs vst" ], - [ "ANSI931_AES192VST", "fips_rngvs vst" ], - [ "ANSI931_AES256VST", "fips_rngvs vst" ] - -); - -# RAND tests, DES2 version - -my @fips_rand_des2_test_list = ( - - "RAND (DES2)", - - [ "ANSI931_TDES2MCT", "fips_rngvs mct" ], - [ "ANSI931_TDES2VST", "fips_rngvs vst" ] - -); - -# AES tests - -my @fips_aes_test_list = ( - - "AES", - - [ "CBCGFSbox128", "fips_aesavs -f" ], - [ "CBCGFSbox192", "fips_aesavs -f" ], - [ "CBCGFSbox256", "fips_aesavs -f" ], - [ "CBCKeySbox128", "fips_aesavs -f" ], - [ "CBCKeySbox192", "fips_aesavs -f" ], - [ "CBCKeySbox256", "fips_aesavs -f" ], - [ "CBCMCT128", "fips_aesavs -f" ], - [ "CBCMCT192", "fips_aesavs -f" ], - [ "CBCMCT256", "fips_aesavs -f" ], - [ "CBCMMT128", "fips_aesavs -f" ], - [ "CBCMMT192", "fips_aesavs -f" ], - [ "CBCMMT256", "fips_aesavs -f" ], - [ "CBCVarKey128", "fips_aesavs -f" ], - [ "CBCVarKey192", "fips_aesavs -f" ], - [ "CBCVarKey256", "fips_aesavs -f" ], - [ "CBCVarTxt128", "fips_aesavs -f" ], - [ "CBCVarTxt192", "fips_aesavs -f" ], - [ "CBCVarTxt256", "fips_aesavs -f" ], - [ "CFB128GFSbox128", "fips_aesavs -f" ], - [ "CFB128GFSbox192", "fips_aesavs -f" ], - [ "CFB128GFSbox256", "fips_aesavs -f" ], - [ "CFB128KeySbox128", "fips_aesavs -f" ], - [ "CFB128KeySbox192", "fips_aesavs -f" ], - [ "CFB128KeySbox256", "fips_aesavs -f" ], - [ "CFB128MCT128", "fips_aesavs -f" ], - [ "CFB128MCT192", "fips_aesavs -f" ], - [ "CFB128MCT256", "fips_aesavs -f" ], - [ "CFB128MMT128", "fips_aesavs -f" ], - [ "CFB128MMT192", "fips_aesavs -f" ], - [ "CFB128MMT256", "fips_aesavs -f" ], - [ "CFB128VarKey128", "fips_aesavs -f" ], - [ "CFB128VarKey192", "fips_aesavs -f" ], - [ "CFB128VarKey256", "fips_aesavs -f" ], - [ "CFB128VarTxt128", "fips_aesavs -f" ], - [ "CFB128VarTxt192", "fips_aesavs -f" ], - [ "CFB128VarTxt256", "fips_aesavs -f" ], - [ "CFB8GFSbox128", "fips_aesavs -f" ], - [ "CFB8GFSbox192", "fips_aesavs -f" ], - [ "CFB8GFSbox256", "fips_aesavs -f" ], - [ "CFB8KeySbox128", "fips_aesavs -f" ], - [ "CFB8KeySbox192", "fips_aesavs -f" ], - [ "CFB8KeySbox256", "fips_aesavs -f" ], - [ "CFB8MCT128", "fips_aesavs -f" ], - [ "CFB8MCT192", "fips_aesavs -f" ], - [ "CFB8MCT256", "fips_aesavs -f" ], - [ "CFB8MMT128", "fips_aesavs -f" ], - [ "CFB8MMT192", "fips_aesavs -f" ], - [ "CFB8MMT256", "fips_aesavs -f" ], - [ "CFB8VarKey128", "fips_aesavs -f" ], - [ "CFB8VarKey192", "fips_aesavs -f" ], - [ "CFB8VarKey256", "fips_aesavs -f" ], - [ "CFB8VarTxt128", "fips_aesavs -f" ], - [ "CFB8VarTxt192", "fips_aesavs -f" ], - [ "CFB8VarTxt256", "fips_aesavs -f" ], - - [ "ECBGFSbox128", "fips_aesavs -f" ], - [ "ECBGFSbox192", "fips_aesavs -f" ], - [ "ECBGFSbox256", "fips_aesavs -f" ], - [ "ECBKeySbox128", "fips_aesavs -f" ], - [ "ECBKeySbox192", "fips_aesavs -f" ], - [ "ECBKeySbox256", "fips_aesavs -f" ], - [ "ECBMCT128", "fips_aesavs -f" ], - [ "ECBMCT192", "fips_aesavs -f" ], - [ "ECBMCT256", "fips_aesavs -f" ], - [ "ECBMMT128", "fips_aesavs -f" ], - [ "ECBMMT192", "fips_aesavs -f" ], - [ "ECBMMT256", "fips_aesavs -f" ], - [ "ECBVarKey128", "fips_aesavs -f" ], - [ "ECBVarKey192", "fips_aesavs -f" ], - [ "ECBVarKey256", "fips_aesavs -f" ], - [ "ECBVarTxt128", "fips_aesavs -f" ], - [ "ECBVarTxt192", "fips_aesavs -f" ], - [ "ECBVarTxt256", "fips_aesavs -f" ], - [ "OFBGFSbox128", "fips_aesavs -f" ], - [ "OFBGFSbox192", "fips_aesavs -f" ], - [ "OFBGFSbox256", "fips_aesavs -f" ], - [ "OFBKeySbox128", "fips_aesavs -f" ], - [ "OFBKeySbox192", "fips_aesavs -f" ], - [ "OFBKeySbox256", "fips_aesavs -f" ], - [ "OFBMCT128", "fips_aesavs -f" ], - [ "OFBMCT192", "fips_aesavs -f" ], - [ "OFBMCT256", "fips_aesavs -f" ], - [ "OFBMMT128", "fips_aesavs -f" ], - [ "OFBMMT192", "fips_aesavs -f" ], - [ "OFBMMT256", "fips_aesavs -f" ], - [ "OFBVarKey128", "fips_aesavs -f" ], - [ "OFBVarKey192", "fips_aesavs -f" ], - [ "OFBVarKey256", "fips_aesavs -f" ], - [ "OFBVarTxt128", "fips_aesavs -f" ], - [ "OFBVarTxt192", "fips_aesavs -f" ], - [ "OFBVarTxt256", "fips_aesavs -f" ] - -); - -my @fips_aes_cfb1_test_list = ( - - # AES CFB1 tests - - [ "CFB1GFSbox128", "fips_aesavs -f" ], - [ "CFB1GFSbox192", "fips_aesavs -f" ], - [ "CFB1GFSbox256", "fips_aesavs -f" ], - [ "CFB1KeySbox128", "fips_aesavs -f" ], - [ "CFB1KeySbox192", "fips_aesavs -f" ], - [ "CFB1KeySbox256", "fips_aesavs -f" ], - [ "CFB1MCT128", "fips_aesavs -f" ], - [ "CFB1MCT192", "fips_aesavs -f" ], - [ "CFB1MCT256", "fips_aesavs -f" ], - [ "CFB1MMT128", "fips_aesavs -f" ], - [ "CFB1MMT192", "fips_aesavs -f" ], - [ "CFB1MMT256", "fips_aesavs -f" ], - [ "CFB1VarKey128", "fips_aesavs -f" ], - [ "CFB1VarKey192", "fips_aesavs -f" ], - [ "CFB1VarKey256", "fips_aesavs -f" ], - [ "CFB1VarTxt128", "fips_aesavs -f" ], - [ "CFB1VarTxt192", "fips_aesavs -f" ], - [ "CFB1VarTxt256", "fips_aesavs -f" ] - -); - -my @fips_aes_ccm_test_list = ( - - # AES CCM tests - - "AES CCM", - - [ "DVPT128", "fips_gcmtest -ccm" ], - [ "DVPT192", "fips_gcmtest -ccm" ], - [ "DVPT256", "fips_gcmtest -ccm" ], - [ "VADT128", "fips_gcmtest -ccm" ], - [ "VADT192", "fips_gcmtest -ccm" ], - [ "VADT256", "fips_gcmtest -ccm" ], - [ "VNT128", "fips_gcmtest -ccm" ], - [ "VNT192", "fips_gcmtest -ccm" ], - [ "VNT256", "fips_gcmtest -ccm" ], - [ "VPT128", "fips_gcmtest -ccm" ], - [ "VPT192", "fips_gcmtest -ccm" ], - [ "VPT256", "fips_gcmtest -ccm" ], - [ "VTT128", "fips_gcmtest -ccm" ], - [ "VTT192", "fips_gcmtest -ccm" ], - [ "VTT256", "fips_gcmtest -ccm" ] - -); - -my @fips_aes_gcm_test_list = ( - - # AES GCM tests - - "AES GCM", - - [ "gcmDecrypt128", "fips_gcmtest -decrypt" ], - [ "gcmDecrypt192", "fips_gcmtest -decrypt" ], - [ "gcmDecrypt256", "fips_gcmtest -decrypt" ], - [ "gcmEncryptIntIV128", "fips_gcmtest -encrypt" ], - [ "gcmEncryptIntIV192", "fips_gcmtest -encrypt" ], - [ "gcmEncryptIntIV256", "fips_gcmtest -encrypt" ], - -); - -my @fips_aes_xts_test_list = ( - # AES XTS tests - - "AES XTS", - - [ "XTSGenAES128", "fips_gcmtest -xts" ], - [ "XTSGenAES256", "fips_gcmtest -xts" ], - -); - -# Triple DES tests - -my @fips_des3_test_list = ( - - "Triple DES", - - [ "TCBCinvperm", "fips_desmovs -f" ], - [ "TCBCMMT1", "fips_desmovs -f" ], - [ "TCBCMMT2", "fips_desmovs -f" ], - [ "TCBCMMT3", "fips_desmovs -f" ], - [ "TCBCMonte1", "fips_desmovs -f" ], - [ "TCBCMonte2", "fips_desmovs -f" ], - [ "TCBCMonte3", "fips_desmovs -f" ], - [ "TCBCpermop", "fips_desmovs -f" ], - [ "TCBCsubtab", "fips_desmovs -f" ], - [ "TCBCvarkey", "fips_desmovs -f" ], - [ "TCBCvartext", "fips_desmovs -f" ], - [ "TCFB64invperm", "fips_desmovs -f" ], - [ "TCFB64MMT1", "fips_desmovs -f" ], - [ "TCFB64MMT2", "fips_desmovs -f" ], - [ "TCFB64MMT3", "fips_desmovs -f" ], - [ "TCFB64Monte1", "fips_desmovs -f" ], - [ "TCFB64Monte2", "fips_desmovs -f" ], - [ "TCFB64Monte3", "fips_desmovs -f" ], - [ "TCFB64permop", "fips_desmovs -f" ], - [ "TCFB64subtab", "fips_desmovs -f" ], - [ "TCFB64varkey", "fips_desmovs -f" ], - [ "TCFB64vartext", "fips_desmovs -f" ], - [ "TCFB8invperm", "fips_desmovs -f" ], - [ "TCFB8MMT1", "fips_desmovs -f" ], - [ "TCFB8MMT2", "fips_desmovs -f" ], - [ "TCFB8MMT3", "fips_desmovs -f" ], - [ "TCFB8Monte1", "fips_desmovs -f" ], - [ "TCFB8Monte2", "fips_desmovs -f" ], - [ "TCFB8Monte3", "fips_desmovs -f" ], - [ "TCFB8permop", "fips_desmovs -f" ], - [ "TCFB8subtab", "fips_desmovs -f" ], - [ "TCFB8varkey", "fips_desmovs -f" ], - [ "TCFB8vartext", "fips_desmovs -f" ], - [ "TECBinvperm", "fips_desmovs -f" ], - [ "TECBMMT1", "fips_desmovs -f" ], - [ "TECBMMT2", "fips_desmovs -f" ], - [ "TECBMMT3", "fips_desmovs -f" ], - [ "TECBMonte1", "fips_desmovs -f" ], - [ "TECBMonte2", "fips_desmovs -f" ], - [ "TECBMonte3", "fips_desmovs -f" ], - [ "TECBpermop", "fips_desmovs -f" ], - [ "TECBsubtab", "fips_desmovs -f" ], - [ "TECBvarkey", "fips_desmovs -f" ], - [ "TECBvartext", "fips_desmovs -f" ], - [ "TOFBinvperm", "fips_desmovs -f" ], - [ "TOFBMMT1", "fips_desmovs -f" ], - [ "TOFBMMT2", "fips_desmovs -f" ], - [ "TOFBMMT3", "fips_desmovs -f" ], - [ "TOFBMonte1", "fips_desmovs -f" ], - [ "TOFBMonte2", "fips_desmovs -f" ], - [ "TOFBMonte3", "fips_desmovs -f" ], - [ "TOFBpermop", "fips_desmovs -f" ], - [ "TOFBsubtab", "fips_desmovs -f" ], - [ "TOFBvarkey", "fips_desmovs -f" ], - [ "TOFBvartext", "fips_desmovs -f" ] - -); - -my @fips_des3_cfb1_test_list = ( - - # DES3 CFB1 tests - - [ "TCFB1invperm", "fips_desmovs -f" ], - [ "TCFB1MMT1", "fips_desmovs -f" ], - [ "TCFB1MMT2", "fips_desmovs -f" ], - [ "TCFB1MMT3", "fips_desmovs -f" ], - [ "TCFB1Monte1", "fips_desmovs -f" ], - [ "TCFB1Monte2", "fips_desmovs -f" ], - [ "TCFB1Monte3", "fips_desmovs -f" ], - [ "TCFB1permop", "fips_desmovs -f" ], - [ "TCFB1subtab", "fips_desmovs -f" ], - [ "TCFB1varkey", "fips_desmovs -f" ], - [ "TCFB1vartext", "fips_desmovs -f" ], - -); - -my @fips_drbg_test_list = ( - - # SP800-90 DRBG tests - "SP800-90 DRBG", - [ "CTR_DRBG", "fips_drbgvs" ], - [ "Dual_EC_DRBG", "fips_drbgvs" ], - [ "Hash_DRBG", "fips_drbgvs" ], - [ "HMAC_DRBG", "fips_drbgvs" ] - -); - -my @fips_dh_test_list = ( - - # DH - "DH Ephemeral Primitives Only", - [ "KASValidityTest_FFCEphem_NOKC_ZZOnly_init", "fips_dhvs dhver" ], - [ "KASValidityTest_FFCEphem_NOKC_ZZOnly_resp", "fips_dhvs dhver" ], - -); - -my @fips_ecdh_test_list = ( - - # ECDH - "ECDH Ephemeral Primitives Only", - [ "KAS_ECC_CDH_PrimitiveTest", "fips_ecdhvs ecdhgen" ], -# [ "KASValidityTest_ECCEphemeralUnified_NOKC_ZZOnly_init", -# "fips_ecdhvs ecdhver" ], -# [ "KASValidityTest_ECCEphemeralUnified_NOKC_ZZOnly_resp", -# "fips_ecdhvs ecdhver" ], - -); - - -# Verification special cases. -# In most cases the output of a test is deterministic and -# it can be compared to a known good result. A few involve -# the genration and use of random keys and the output will -# be different each time. In thoses cases we perform special tests -# to simply check their consistency. For example signature generation -# output will be run through signature verification to see if all outputs -# show as valid. -# - -my %verify_special = ( - "DSA:PQGGen" => "fips_dssvs pqgver", - "DSA:KeyPair" => "fips_dssvs keyver", - "DSA:SigGen" => "fips_dssvs sigver", - "DSA2:PQGGen" => "fips_dssvs pqgver", - "DSA2:KeyPair" => "fips_dssvs keyver", - "DSA2:SigGen" => "fips_dssvs sigver", - "ECDSA:KeyPair" => "fips_ecdsavs PKV", - "ECDSA:SigGen" => "fips_ecdsavs SigVer", - "ECDSA2:KeyPair" => "fips_ecdsavs PKV", - "ECDSA2:SigGen" => "fips_ecdsavs SigVer", - "RSA:SigGen15" => "fips_rsavtest", - "RSA:SigGenRSA" => "fips_rsavtest -x931", - "RSA:SigGenPSS(0)" => "fips_rsavtest -saltlen 0", - "RSA:SigGenPSS(62)" => "fips_rsavtest -saltlen 62", - "ECDH Ephemeral Primitives Only:KAS_ECC_CDH_PrimitiveTest" => "skip" -); - -my $win32 = $^O =~ m/mswin/i; -my $onedir = 0; -my $filter = ""; -my $tvdir; -my $tprefix; -my $debug = 0; -my $quiet = 0; -my $notest = 0; -my $verify = 1; -my $rspdir = "resp"; -my $ignore_missing = 0; -my $ignore_bogus = 0; -my $bufout = ''; -my $list_tests = 0; -my $minimal_script = 0; -my $outfile = ''; -my $no_warn_missing = 0; -my $no_warn_bogus = 0; -my $rmcmd = "rm -rf"; -my $mkcmd = "mkdir"; -my $cmpall = 0; - -my %fips_enabled = ( - "dsa" => 1, - "dsa2" => 2, - "dsa-pqgver" => 2, - "ecdsa" => 2, - "rsa" => 1, - "rsa-pss0" => 2, - "rsa-pss62" => 1, - "sha" => 1, - "hmac" => 1, - "cmac" => 2, - "rand-aes" => 1, - "rand-des2" => 0, - "aes" => 1, - "aes-cfb1" => 2, - "des3" => 1, - "des3-cfb1" => 2, - "drbg" => 2, - "aes-ccm" => 2, - "aes-xts" => 2, - "aes-gcm" => 2, - "dh" => 0, - "ecdh" => 2, - "v2" => 1, -); - -foreach (@ARGV) { - if ( $_ eq "--win32" ) { - $win32 = 1; - } - elsif ( $_ eq "--onedir" ) { - $onedir = 1; - } - elsif ( $_ eq "--debug" ) { - $debug = 1; - } - elsif ( $_ eq "--quiet-missing" ) { - $ignore_missing = 1; - $no_warn_missing = 1; - } - elsif ( $_ eq "--ignore-missing" ) { - $ignore_missing = 1; - } - elsif ( $_ eq "--quiet-bogus" ) { - $ignore_bogus = 1; - $no_warn_bogus = 1; - } - elsif ( $_ eq "--ignore-bogus" ) { - $ignore_bogus = 1; - } - elsif ( $_ eq "--minimal-script" ) { - $minimal_script = 1; - } - elsif (/--generate-script=(.*)$/) { - $outfile = $1; - $verify = 0; - } elsif ( $_ eq "--generate" ) { - $verify = 0; - } - elsif ( $_ eq "--compare-all" ) { - $cmpall = 1; - } - elsif ( $_ eq "--notest" ) { - $notest = 1; - } - elsif ( $_ eq "--quiet" ) { - $quiet = 1; - } - elsif (/--dir=(.*)$/) { - $tvdir = $1; - } - elsif (/--rspdir=(.*)$/) { - $rspdir = $1; - } - elsif (/--tprefix=(.*)$/) { - $tprefix = $1; - } - elsif (/^--disable-all$/) { - foreach (keys %fips_enabled) { - $fips_enabled{$_} = 0; - } - } - elsif (/^--(enable|disable)-(.*)$/) { - if ( !exists $fips_enabled{$2} ) { - print STDERR "Unknown test $2\n"; - exit(1); - } - if ( $1 eq "enable" ) { - $fips_enabled{$2} = 1; - } - else { - $fips_enabled{$2} = 0; - } - } - elsif (/--filter=(.*)$/) { - $filter = $1; - } - elsif (/--rm=(.*)$/) { - $rmcmd = $1; - } - elsif (/--script-tprefix=(.*)$/) { - $stprefix = $1; - } - elsif (/--mkdir=(.*)$/) { - $mkcmd = $1; - } - elsif (/^--list-tests$/) { - $list_tests = 1; - } - else { - Help(); - exit(1); - } -} - -my @fips_test_list; - - -if (!$fips_enabled{"v2"}) { - foreach (keys %fips_enabled) { - $fips_enabled{$_} = 0 if $fips_enabled{$_} == 2; - } -} - -push @fips_test_list, @fips_dsa_test_list if $fips_enabled{"dsa"}; -push @fips_test_list, @fips_dsa_pqgver_test_list if $fips_enabled{"dsa-pqgver"}; -push @fips_test_list, @fips_dsa2_test_list if $fips_enabled{"dsa2"}; -push @fips_test_list, @fips_ecdsa_test_list if $fips_enabled{"ecdsa"}; -push @fips_test_list, @fips_rsa_test_list if $fips_enabled{"rsa"}; -push @fips_test_list, @fips_rsa_pss0_test_list if $fips_enabled{"rsa-pss0"}; -push @fips_test_list, @fips_rsa_pss62_test_list if $fips_enabled{"rsa-pss62"}; -push @fips_test_list, @fips_sha_test_list if $fips_enabled{"sha"}; -push @fips_test_list, @fips_hmac_test_list if $fips_enabled{"hmac"}; -push @fips_test_list, @fips_cmac_test_list if $fips_enabled{"cmac"}; -push @fips_test_list, @fips_rand_aes_test_list if $fips_enabled{"rand-aes"}; -push @fips_test_list, @fips_rand_des2_test_list if $fips_enabled{"rand-des2"}; -push @fips_test_list, @fips_aes_test_list if $fips_enabled{"aes"}; -push @fips_test_list, @fips_aes_cfb1_test_list if $fips_enabled{"aes-cfb1"}; -push @fips_test_list, @fips_des3_test_list if $fips_enabled{"des3"}; -push @fips_test_list, @fips_des3_cfb1_test_list if $fips_enabled{"des3-cfb1"}; -push @fips_test_list, @fips_drbg_test_list if $fips_enabled{"drbg"}; -push @fips_test_list, @fips_aes_ccm_test_list if $fips_enabled{"aes-ccm"}; -push @fips_test_list, @fips_aes_gcm_test_list if $fips_enabled{"aes-gcm"}; -push @fips_test_list, @fips_aes_xts_test_list if $fips_enabled{"aes-xts"}; -push @fips_test_list, @fips_dh_test_list if $fips_enabled{"dh"}; -push @fips_test_list, @fips_ecdh_test_list if $fips_enabled{"ecdh"}; - -if ($list_tests) { - my ( $test, $en ); - print "=====TEST LIST=====\n"; - foreach $test ( sort keys %fips_enabled ) { - $en = $fips_enabled{$test}; - $test =~ tr/[a-z]/[A-Z]/; - printf "%-10s %s\n", $test, $en ? "enabled" : "disabled"; - } - exit(0); -} - -foreach (@fips_test_list) { - next unless ref($_); - my $nm = $$_[0]; - $$_[3] = ""; - $$_[4] = ""; -} - -$tvdir = "." unless defined $tvdir; - -if ($win32) { - if ( !defined $tprefix ) { - if ($onedir) { - $tprefix = ".\\"; - } - else { - $tprefix = "..\\out32dll\\"; - } - } -} -else { - if ($onedir) { - $tprefix = "./" unless defined $tprefix; - } - else { - $tprefix = "../test/" unless defined $tprefix; - } -} - -sanity_check_exe( $win32, $tprefix) if $outfile eq ""; - -find_files( $filter, $tvdir ); - -sanity_check_files(); - -my ( $runerr, $cmperr, $cmpok, $scheckrunerr, $scheckerr, $scheckok, $skipcnt ) - = ( 0, 0, 0, 0, 0, 0, 0 ); - -exit(0) if $notest; -print "Outputting commands to $outfile\n" if $outfile ne ""; -run_tests( $verify, $win32, $tprefix, $filter, $tvdir, $outfile ); - -if ($verify) { - print "ALGORITHM TEST VERIFY SUMMARY REPORT:\n"; - print "Tests skipped due to missing files: $skipcnt\n"; - print "Algorithm test program execution failures: $runerr\n"; - print "Test comparisons successful: $cmpok\n"; - print "Test comparisons failed: $cmperr\n"; - print "Test sanity checks successful: $scheckok\n"; - print "Test sanity checks failed: $scheckerr\n"; - print "Sanity check program execution failures: $scheckrunerr\n"; - - if ( $runerr || $cmperr || $scheckrunerr || $scheckerr ) { - print "***TEST FAILURE***\n"; - } - else { - print "***ALL TESTS SUCCESSFUL***\n"; - } -} -elsif ($outfile eq "") { - print "ALGORITHM TEST SUMMARY REPORT:\n"; - print "Tests skipped due to missing files: $skipcnt\n"; - print "Algorithm test program execution failures: $runerr\n"; - - if ($runerr) { - print "***TEST FAILURE***\n"; - } - else { - print "***ALL TESTS SUCCESSFUL***\n"; - } -} - -#-------------------------------- -sub Help { - ( my $cmd ) = ( $0 =~ m#([^/]+)$# ); - print < Optional root for *.req file search - --filter= Regex for input files of interest - --onedir Assume all components in current directory - --rspdir= Name of subdirectories containing *.rsp files, default "resp" - --tprefix= Pathname prefix for directory containing test programs - --ignore-bogus Ignore duplicate or bogus files - --ignore-missing Ignore missing test files - --quiet Shhh.... - --quiet-bogus Skip unrecognized file warnings - --quiet-missing Skip missing request file warnings - --generate Generate algorithm test output - --generate-script= Generate script to call algorithm programs - --minimal-script Simplest possible output for --generate-script - --win32 Win32 environment - --compare-all Verify unconditionally for all tests - --list-tests Show individual tests - --mkdir= Specify "mkdir" command - --notest Exit before running tests - --rm= Specify "rm" command - --script-tprefix Pathname prefix for --generate-script output - --enable- Enable algorithm set . - --disable- Disable algorithm set . - Where can be one of: -EOF - -while (my ($key, $value) = each %fips_enabled) - { - printf "\t\t%-20s(%s by default)\n", $key , - $value == 1 ? "enabled" : "disabled"; - } -} - -# Sanity check to see if all necessary executables exist - -sub sanity_check_exe { - my ( $win32, $tprefix, ) = @_; - my %exe_list; - my $bad = 0; - foreach (@fips_test_list) { - next unless ref($_); - my $cmd = $_->[1]; - $cmd =~ s/ .*$//; - $cmd = $tprefix . $cmd; - $cmd .= ".exe" if $win32; - $exe_list{$cmd} = 1; - } - - foreach ( sort keys %exe_list ) { - if ( !-f $_ ) { - print STDERR "ERROR: can't find executable $_\n"; - $bad = 1; - } - } - if ($bad) { - print STDERR "FATAL ERROR: executables missing\n"; - exit(1); - } - elsif ($debug) { - print STDERR "Executable sanity check passed OK\n"; - } -} - -# Search for all request and response files - -sub find_files { - my ( $filter, $dir ) = @_; - my ( $dirh, $testname, $tref ); - opendir( $dirh, $dir ); - while ( $_ = readdir($dirh) ) { - next if ( $_ eq "." || $_ eq ".." ); - $_ = "$dir/$_"; - if ( -f "$_" ) { - if (/\/([^\/]*)\.rsp$/) { - $tref = find_test($1, $_); - if ( defined $tref ) { - $testname = $$tref[0]; - if ( $$tref[4] eq "" ) { - $$tref[4] = $_; - } - else { - print STDERR -"WARNING: duplicate response file $_ for test $testname\n"; - $nbogus++; - } - } - else { - print STDERR "WARNING: bogus file $_\n" unless $no_warn_bogus; - $nbogus++; - } - } - next unless /$filter.*\.req$/i; - if (/\/([^\/]*)\.req$/) { - $tref = find_test($1, $_); - if ( defined $tref ) { - $testname = $$tref[0]; - if ( $$tref[3] eq "" ) { - $$tref[3] = $_; - } - else { - print STDERR -"WARNING: duplicate request file $_ for test $testname\n"; - $nbogus++; - } - - } - elsif ( !/SHAmix\.req$/ ) { - print STDERR "WARNING: unrecognized filename $_\n" unless $no_warn_bogus; - $nbogus++; - } - } - } - elsif ( -d "$_" ) { - find_files( $filter, $_ ); - } - } - closedir($dirh); -} -# -# Find test based on filename. -# In ambiguous cases search file contents for a match -# - -sub find_test { - my ( $test, $path ) = @_; - foreach $tref (@fips_test_list) { - next unless ref($tref); - my ( $tst, $cmd, $excmd, $req, $resp ) = @$tref; - my $regexp; - $tst =~ s/\(.*$//; - $test =~ s/_186-2//; - if (defined $excmd) { - if ($excmd =~ /^path:(.*)$/) { - my $fmatch = $1; - return $tref if ($path =~ /$fmatch/); - next; - } - elsif ($excmd =~ /^file:(.*)$/) { - $regexp = $1; - } - } - if ($test eq $tst) { - return $tref if (!defined $regexp); - my $found = 0; - my $line; - open( IN, $path ) || die "Can't Open File $path"; - while ($line = ) { - if ($line =~ /$regexp/i) { - $found = 1; - last; - } - } - close IN; - return $tref if $found == 1; - } - } - return undef; -} - -sub sanity_check_files { - my $bad = 0; - foreach (@fips_test_list) { - next unless ref($_); - my ( $tst, $cmd, $regexp, $req, $resp ) = @$_; - - #print STDERR "FILES $tst, $cmd, $req, $resp\n"; - if ( $req eq "" ) { - print STDERR "WARNING: missing request file for $tst\n" unless $no_warn_missing; - $bad = 1; - next; - } - if ( $verify && $resp eq "" ) { - print STDERR "WARNING: no response file for test $tst\n"; - $bad = 1; - } - elsif ( !$verify && $resp ne "" ) { - print STDERR "WARNING: response file $resp will be overwritten\n"; - } - } - if ($bad) { - print STDERR "ERROR: test vector file set not complete\n"; - exit(1) unless $ignore_missing; - } - if ($nbogus) { - print STDERR - "ERROR: $nbogus bogus or duplicate request and response files\n"; - exit(1) unless $ignore_bogus; - } - if ( $debug && !$nbogus && !$bad ) { - print STDERR "test vector file set complete\n"; - } -} - -sub run_tests { - my ( $verify, $win32, $tprefix, $filter, $tvdir, $outfile ) = @_; - my ( $tname, $tref ); - my $bad = 0; - my $lastdir = ""; - $stprefix = $tprefix unless defined $stprefix; - if ($outfile ne "") { - open OUT, ">$outfile" || die "Can't open $outfile"; - } - if ($outfile ne "" && !$minimal_script) { - if ($win32) { - print OUT <<\END; -@echo off -rem Test vector run script -rem Auto generated by fipsalgtest.pl script -rem Do not edit - -echo Running Algorithm Tests - -END - } else { - print OUT <) { - if (/^Result\s*=\s*(\S*)\s*$/i) - - { - if ( $1 eq "F" ) { - $fcount++; - } - else { - $pcount++; - } - } - } - close VER; - - unlink $vout; - if ( $fcount || $debug ) { - print STDERR "DEBUG: $tname, Pass=$pcount, Fail=$fcount\n"; - } - if ( $fcount || !$pcount ) { - $scheckerr++; - } - else { - $scheckok++; - } - - } - elsif ( !cmp_file( $tname, $rsp, $out ) ) { - $cmperr++; - } - else { - $cmpok++; - } - unlink $out; - } - } - if ($outfile ne "") { - print OUT "\n\necho All Tests Completed\n" unless $minimal_script; - close OUT; - } -} - -sub cmp_file { - my ( $tname, $rsp, $tst ) = @_; - my ( $rspf, $tstf ); - my ( $rspline, $tstline ); - my $monte = 0; - if ( !open( $rspf, $rsp ) ) { - print STDERR "ERROR: can't open request file $rsp\n"; - return 0; - } - if ( !open( $tstf, $tst ) ) { - print STDERR "ERROR: can't open output file $tst\n"; - return 0; - } - $monte = 1 if ($rsp =~ /Monte[123]/); - for ( ; ; ) { - $rspline = next_line($rspf); - $tstline = next_line($tstf); - if ( !defined($rspline) && !defined($tstline) ) { - print STDERR "DEBUG: $tname file comparison OK\n" if $debug; - return 1; - } - # Workaround for old broken DES3 MCT format which added bogus - # extra lines: after [ENCRYPT] or [DECRYPT] skip until first - # COUNT line. - if ($monte) { - if ($rspline =~ /CRYPT/) { - do { - $rspline = next_line($rspf); - } while (defined($rspline) && $rspline !~ /COUNT/); - } - if ($tstline =~ /CRYPT/) { - do { - $tstline = next_line($tstf); - } while (defined($tstline) && $tstline !~ /COUNT/); - } - } - if ( !defined($rspline) ) { - print STDERR "ERROR: $tname EOF on $rsp\n"; - return 0; - } - if ( !defined($tstline) ) { - print STDERR "ERROR: $tname EOF on $tst\n"; - return 0; - } - - # Workaround for bug in RAND des2 test output */ - if ( $tstline =~ /^Key2 =/ && $rspline =~ /^Key1 =/ ) { - $rspline =~ s/^Key1/Key2/; - } - - if ( $tstline ne $rspline ) { - print STDERR "ERROR: $tname mismatch:\n"; - print STDERR "\t \"$tstline\" != \"$rspline\"\n"; - return 0; - } - } - return 1; -} - -sub next_line { - my ($in) = @_; - - while (<$in>) { - chomp; - - # Delete comments - s/#.*$//; - - # Ignore blank lines - next if (/^\s*$/); - - # Translate multiple space into one - s/\s+/ /g; - # Delete trailing whitespace - s/\s+$//; - # Remove leading zeroes - s/= 00/= /; - # Translate to upper case - return uc $_; - } - return undef; -} diff --git a/fips/fipsld b/fips/fipsld deleted file mode 100755 index 50f20752b1..0000000000 --- a/fips/fipsld +++ /dev/null @@ -1,197 +0,0 @@ -#!/bin/sh -e -# -# Copyright (c) 2005-2011 The OpenSSL Project. -# -# Depending on output file name, the script either embeds fingerprint -# into libcrypto.so or static application. "Static" refers to static -# libcrypto.a, not [necessarily] application per se. -# -# Even though this script is called fipsld, it expects C compiler -# command line syntax and $FIPSLD_CC or $CC environment variable set -# and can even be used to compile source files. - -#set -x - -CC=${FIPSLD_CC:-${CC}} -[ -n "${CC}" ] || { echo '$CC is not defined'; exit 1; } - -# Initially -c wasn't intended to be interpreted here, but it might -# make life easier for those who want to build FIPS-ified applications -# with minimal [if any] modifications to their Makefiles... -( while [ "x$1" != "x" -a "x$1" != "x-c" -a "x$1" != "x-E" ]; do shift; done; - [ $# -ge 1 ] -) && exec ${CC} "$@" - -TARGET=`(while [ "x$1" != "x" -a "x$1" != "x-o" ]; do shift; done; echo $2)` - -# If using an auto-tooled (autoconf/automake/libtool) project, -# configure will fail when testing the compiler or even performing -# simple checks. Pass-through to compiler directly if application is -# is not being linked with libcrypto, allowing auto-tooled applications -# to utilize fipsld (e.g. CC=/usr/local/ssl/bin/fipsld FIPSLD_CC=gcc -# ./configure && make). But keep in mind[!] that if certified code -# resides in a shared library, then fipsld *may not* be used and -# end-developer should not modify application configuration and build -# procedures. This is because in-core fingerprint and associated -# procedures are already embedded into and executed in shared library -# context. -case `basename "${TARGET}"` in -libcrypto*|libfips*|*.dll) ;; -*) case "$*" in - *libcrypto.a*|*-lcrypto*|*fipscanister.o*) ;; - *) exec ${CC} "$@" ;; - esac -esac - -[ -n "${TARGET}" ] || { echo 'no -o specified'; exit 1; } - -# Turn on debugging output? -( while [ "x$1" != "x" -a "x$1" != "x-DDEBUG_FINGERPRINT_PREMAIN" ]; do shift; done; - [ $# -ge 1 ] -) && set -x - -THERE="`echo $0 | sed -e 's|[^/]*$||'`".. - -# fipscanister.o can appear in command line -CANISTER_O=`(while [ "x$1" != "x" ]; do case "$1" in *fipscanister.o) echo $1; exit;; esac; shift; done)` -if [ -z "${CANISTER_O}" ]; then - # If set, FIPSLIBDIR is location of installed validated FIPS module - if [ -n "${FIPSLIBDIR}" ]; then - CANISTER_O="${FIPSLIBDIR}/fipscanister.o" - elif [ -f "${THERE}/fips/fipscanister.o" ]; then - CANISTER_O="${THERE}/fips/fipscanister.o" - elif [ -f "${THERE}/lib/fipscanister.o" ]; then - CANISTER_O="${THERE}/lib/fipscanister.o" - fi - CANISTER_O_CMD="${CANISTER_O}" -fi -[ -f ${CANISTER_O} ] || { echo "unable to find ${CANISTER_O}"; exit 1; } - -PREMAIN_C=`dirname "${CANISTER_O}"`/fips_premain.c - -HMAC_KEY="etaonrishdlcupfm" - -case "${CROSS_COMPILE:-`(uname -s) 2>/dev/null`}" in -OSF1|IRIX*) _WL_PREMAIN="-Wl,-init,FINGERPRINT_premain" ;; -HP-UX) _WL_PREMAIN="-Wl,+init,FINGERPRINT_premain" ;; -AIX) _WL_PREMAIN="-Wl,-binitfini:FINGERPRINT_premain,-bnoobjreorder";; -Darwin) ( while [ "x$1" != "x" -a "x$1" != "x-dynamiclib" ]; do shift; done; - [ $# -ge 1 ] - ) && _WL_PREMAIN="-Wl,-init,_FINGERPRINT_premain" ;; -esac - -case "${TARGET}" in -[!/]*) TARGET=./${TARGET} ;; -esac - -case `basename "${TARGET}"` in -lib*|*.dll) # must be linking a shared lib... - # Shared lib creation can be taking place in the source - # directory only, but fipscanister.o can reside elsewhere... - - if [ -x "${THERE}/fips/fips_standalone_sha1" ]; then - FINGERTYPE="${THERE}/fips/fips_standalone_sha1" - PREMAIN_DSO="${THERE}/fips/fips_premain_dso" - elif [ -x "${THERE}/bin/fips_standalone_sha1" ]; then - FINGERTYPE="${THERE}/bin/fips_standalone_sha1" - PREMAIN_DSO="./fips_premain_dso" - fi - - # verify fipspremain.c against its detached signature... - ${FINGERTYPE} "${PREMAIN_C}" | sed "s/(.*\//(/" | \ - diff -w "${PREMAIN_C}.sha1" - || \ - { echo "${PREMAIN_C} fingerprint mismatch"; exit 1; } - # verify fipscanister.o against its detached signature... - ${FINGERTYPE} "${CANISTER_O}" | sed "s/(.*\//(/" | \ - diff -w "${CANISTER_O}.sha1" - || \ - { echo "${CANISTER_O} fingerprint mismatch"; exit 1; } - - [ -z "${FIPSLD_LIBCRYPTO}" -a -f "${THERE}/libcrypto.a" ] && \ - FIPSLD_LIBCRYPTO="${THERE}/libcrypto.a" - - - # Temporarily remove fipscanister.o from libcrypto.a! - # We are required to use the standalone copy... - if [ -n "${FIPSLD_LIBCRYPTO}" ]; then - if ${CROSS_COMPILE}ar d "${FIPSLD_LIBCRYPTO}" fipscanister.o; then - (${CROSS_COMPILE}ranlib "${FIPSLD_LIBCRYPTO}") 2>/dev/null || : - trap '${CROSS_COMPILE}ar r "${FIPSLD_LIBCRYPTO}" "${CANISTER_O}"; - (${CROSS_COMPILE}ranlib "${FIPSLD_LIBCRYPTO}") 2>/dev/null || :; - sleep 1; - touch -c "${TARGET}"' 0 - fi - fi - - /bin/rm -f "${TARGET}" - ${CC} ${CANISTER_O_CMD:+"${CANISTER_O_CMD}"} \ - "${PREMAIN_C}" \ - ${_WL_PREMAIN} "$@" - - if [ "x${FIPS_SIG}" != "x" ]; then - # embed signature - "${FIPS_SIG}" "${TARGET}" - [ $? -ne 42 ] && exit $? - fi - - # generate signature... - SIG=`"${PREMAIN_DSO}" "${TARGET}"` - - /bin/rm -f "${TARGET}" - if [ -z "${SIG}" ]; then - echo "unable to collect signature"; exit 1 - fi - - # recompile with signature... - ${CC} ${CANISTER_O_CMD:+"${CANISTER_O_CMD}"} \ - -DHMAC_SHA1_SIG=\"${SIG}\" "${PREMAIN_C}" \ - ${_WL_PREMAIN} "$@" - ;; - -*) # must be linking statically... - # Static linking can be taking place either in the source - # directory or off the installed binary target destination. - if [ -x "${THERE}/fips/fips_standalone_sha1" ]; then - FINGERTYPE="${THERE}/fips/fips_standalone_sha1" - elif [ -x "${THERE}/bin/fips_standalone_sha1" ]; then - FINGERTYPE="${THERE}/bin/fips_standalone_sha1" - else # Installed tree is expected to contain - # lib/fipscanister.o, lib/fipscanister.o.sha1 and - # lib/fips_premain.c [not to mention bin/openssl]. - FINGERTYPE="${THERE}/bin/openssl sha1 -hmac ${HMAC_KEY}" - fi - - # verify fipscanister.o against its detached signature... - ${FINGERTYPE} "${CANISTER_O}" | sed "s/(.*\//(/" | \ - diff -w "${CANISTER_O}.sha1" - || \ - { echo "${CANISTER_O} fingerprint mismatch"; exit 1; } - - # verify fips_premain.c against its detached signature... - ${FINGERTYPE} "${PREMAIN_C}" | sed "s/(.*\//(/" | \ - diff -w "${PREMAIN_C}.sha1" - || \ - { echo "${PREMAIN_C} fingerprint mismatch"; exit 1; } - - /bin/rm -f "${TARGET}" - ${CC} ${CANISTER_O_CMD:+"${CANISTER_O_CMD}"} \ - "${PREMAIN_C}" \ - ${_WL_PREMAIN} "$@" - - if [ "x${FIPS_SIG}" != "x" ]; then - # embed signature - "${FIPS_SIG}" "${TARGET}" - [ $? -ne 42 ] && exit $? - fi - - # generate signature... - SIG=`"${TARGET}"` - - /bin/rm -f "${TARGET}" - if [ -z "${SIG}" ]; then - echo "unable to collect signature"; exit 1 - fi - - # recompile with signature... - ${CC} ${CANISTER_O_CMD:+"${CANISTER_O_CMD}"} \ - -DHMAC_SHA1_SIG=\"${SIG}\" "${PREMAIN_C}" \ - ${_WL_PREMAIN} "$@" - ;; -esac diff --git a/fips/fipssyms.h b/fips/fipssyms.h deleted file mode 100644 index 5b1e188785..0000000000 --- a/fips/fipssyms.h +++ /dev/null @@ -1,677 +0,0 @@ - -/* Where necessary redirect standard OpenSSL APIs to FIPS versions */ - -#define CRYPTO_lock FIPS_lock -#define CRYPTO_add_lock FIPS_add_lock -#define CRYPTO_malloc FIPS_malloc -#define CRYPTO_free FIPS_free - -#define ERR_put_error FIPS_put_error -#define ERR_add_error_data FIPS_add_error_data - -#define EVP_MD_CTX_init FIPS_md_ctx_init -#define EVP_MD_CTX_cleanup FIPS_md_ctx_cleanup -#define EVP_MD_CTX_create FIPS_md_ctx_create -#define EVP_MD_CTX_destroy FIPS_md_ctx_destroy -#define EVP_DigestInit_ex(ctx, type, impl) FIPS_digestinit(ctx, type) -#define EVP_DigestInit FIPS_digestinit -#define EVP_DigestUpdate FIPS_digestupdate -#define EVP_Digest(data, count, md, size, type, impl) \ - FIPS_digest(data, count, md, size, type) -#define EVP_DigestFinal_ex FIPS_digestfinal -#define EVP_MD_CTX_copy_ex FIPS_md_ctx_copy - -#define EVP_CipherInit_ex(ctx, cipher, impl, key, iv, enc) \ - FIPS_cipherinit(ctx, cipher, key, iv, enc) - -#define EVP_CipherInit FIPS_cipherinit - -#define EVP_CIPHER_CTX_init FIPS_cipher_ctx_init -#define EVP_CIPHER_CTX_cleanup FIPS_cipher_ctx_cleanup -#define EVP_Cipher FIPS_cipher -#define EVP_CIPHER_CTX_ctrl FIPS_cipher_ctx_ctrl -#define EVP_CIPHER_CTX_new FIPS_cipher_ctx_new -#define EVP_CIPHER_CTX_free FIPS_cipher_ctx_free -#define EVP_CIPHER_CTX_copy FIPS_cipher_ctx_copy -#define EVP_CIPHER_CTX_set_key_length FIPS_cipher_ctx_set_key_length - -#define DSA_SIG_new FIPS_dsa_sig_new -#define DSA_SIG_free FIPS_dsa_sig_free - -#define ECDSA_SIG_new FIPS_ecdsa_sig_new -#define ECDSA_SIG_free FIPS_ecdsa_sig_free - -#define ecdsa_check fips_ecdsa_check -#define ecdh_check fips_ecdh_check - -#define RAND_bytes FIPS_rand_bytes -#define RAND_pseudo_bytes FIPS_rand_pseudo_bytes -#define RAND_add FIPS_rand_add -#define RAND_seed FIPS_rand_seed -#define RAND_status FIPS_rand_status - -/* Rename symbols so they don't clash with standard OpenSSL */ - -#define AES_cfb128_encrypt fips_aes_cfb128_encrypt -#define AES_cfb1_encrypt fips_aes_cfb1_encrypt -#define AES_cfb8_encrypt fips_aes_cfb8_encrypt -#define AES_ecb_encrypt fips_aes_ecb_encrypt -#define AES_ofb128_encrypt fips_aes_ofb128_encrypt -#define BN_BLINDING_convert fips_bn_blinding_convert -#define BN_BLINDING_convert_ex fips_bn_blinding_convert_ex -#define BN_BLINDING_create_param fips_bn_blinding_create_param -#define BN_BLINDING_free fips_bn_blinding_free -#define BN_BLINDING_get_flags fips_bn_blinding_get_flags -#define BN_BLINDING_invert fips_bn_blinding_invert -#define BN_BLINDING_invert_ex fips_bn_blinding_invert_ex -#define BN_BLINDING_new fips_bn_blinding_new -#define BN_BLINDING_set_flags fips_bn_blinding_set_flags -#define BN_BLINDING_thread_id fips_bn_blinding_thread_id -#define BN_BLINDING_update fips_bn_blinding_update -#define BN_BLINDING_get_thread_id fips_bn_blinding_get_thread_id -#define BN_BLINDING_set_thread_id fips_bn_blinding_set_thread_id -#define BN_CTX_end fips_bn_ctx_end -#define BN_CTX_init fips_bn_ctx_init -#define BN_CTX_free fips_bn_ctx_free -#define BN_CTX_get fips_bn_ctx_get -#define BN_CTX_new fips_bn_ctx_new -#define BN_CTX_start fips_bn_ctx_start -#define BN_GENCB_call fips_bn_gencb_call -#define BN_GF2m_add fips_bn_gf2m_add -#define BN_GF2m_arr2poly fips_bn_gf2m_arr2poly -#define BN_GF2m_mod fips_bn_gf2m_mod -#define BN_GF2m_mod_arr fips_bn_gf2m_mod_arr -#define BN_GF2m_mod_div fips_bn_gf2m_mod_div -#define BN_GF2m_mod_div_arr fips_bn_gf2m_mod_div_arr -#define BN_GF2m_mod_exp fips_bn_gf2m_mod_exp -#define BN_GF2m_mod_exp_arr fips_bn_gf2m_mod_exp_arr -#define BN_GF2m_mod_inv fips_bn_gf2m_mod_inv -#define BN_GF2m_mod_inv_arr fips_bn_gf2m_mod_inv_arr -#define BN_GF2m_mod_mul fips_bn_gf2m_mod_mul -#define BN_GF2m_mod_mul_arr fips_bn_gf2m_mod_mul_arr -#define BN_GF2m_mod_solve_quad fips_bn_gf2m_mod_solve_quad -#define BN_GF2m_mod_solve_quad_arr fips_bn_gf2m_mod_solve_quad_arr -#define BN_GF2m_mod_sqr fips_bn_gf2m_mod_sqr -#define BN_GF2m_mod_sqr_arr fips_bn_gf2m_mod_sqr_arr -#define BN_GF2m_mod_sqrt fips_bn_gf2m_mod_sqrt -#define BN_GF2m_mod_sqrt_arr fips_bn_gf2m_mod_sqrt_arr -#define BN_GF2m_poly2arr fips_bn_gf2m_poly2arr -#define BN_MONT_CTX_copy fips_bn_mont_ctx_copy -#define BN_MONT_CTX_free fips_bn_mont_ctx_free -#define BN_MONT_CTX_init fips_bn_mont_ctx_init -#define BN_MONT_CTX_new fips_bn_mont_ctx_new -#define BN_MONT_CTX_set fips_bn_mont_ctx_set -#define BN_MONT_CTX_set_locked fips_bn_mont_ctx_set_locked -#define BN_RECP_CTX_free fips_bn_recp_ctx_free -#define BN_RECP_CTX_init fips_bn_recp_ctx_init -#define BN_RECP_CTX_new fips_bn_recp_ctx_new -#define BN_RECP_CTX_set fips_bn_recp_ctx_set -#define BN_X931_derive_prime_ex FIPS_bn_x931_derive_prime_ex -#define BN_X931_generate_Xpq FIPS_bn_x931_generate_xpq -#define BN_X931_generate_prime_ex FIPS_bn_x931_generate_prime_ex -#define BN_add fips_bn_add -#define BN_add_word fips_bn_add_word -#define BN_bin2bn FIPS_bn_bin2bn -#define BN_bn2bin FIPS_bn_bn2bin -#define BN_bntest_rand fips_bn_bntest_rand -#define BN_clear FIPS_bn_clear -#define BN_clear_bit fips_bn_clear_bit -#define BN_clear_free FIPS_bn_clear_free -#define BN_cmp fips_bn_cmp -#define BN_copy fips_bn_copy -#define BN_div fips_bn_div -#define BN_div_recp fips_bn_div_recp -#define BN_div_word fips_bn_div_word -#define BN_dup fips_bn_dup -#define BN_exp fips_bn_exp -#define BN_free FIPS_bn_free -#define BN_gcd fips_bn_gcd -#define BN_generate_prime_ex FIPS_bn_generate_prime_ex -#define BN_get0_nist_prime_192 fips_bn_get0_nist_prime_192 -#define BN_get0_nist_prime_224 fips_bn_get0_nist_prime_224 -#define BN_get0_nist_prime_256 fips_bn_get0_nist_prime_256 -#define BN_get0_nist_prime_384 fips_bn_get0_nist_prime_384 -#define BN_get0_nist_prime_521 fips_bn_get0_nist_prime_521 -#define BN_get_word FIPS_bn_get_word -#define BN_init fips_bn_init -#define BN_is_bit_set FIPS_bn_is_bit_set -#define BN_is_prime_ex FIPS_bn_is_prime_ex -#define BN_is_prime_fasttest_ex FIPS_bn_is_prime_fasttest_ex -#define BN_lshift fips_bn_lshift -#define BN_lshift1 fips_bn_lshift1 -#define BN_mask_bits fips_bn_mask_bits -#define BN_mod_add fips_bn_mod_add -#define BN_mod_add_quick fips_bn_mod_add_quick -#define BN_mod_exp fips_bn_mod_exp -#define BN_mod_exp2_mont fips_bn_mod_exp2_mont -#define BN_mod_exp_mont fips_bn_mod_exp_mont -#define BN_mod_exp_mont_consttime fips_bn_mod_exp_mont_consttime -#define BN_mod_exp_mont_word fips_bn_mod_exp_mont_word -#define BN_mod_exp_recp fips_bn_mod_exp_recp -#define BN_mod_exp_simple fips_bn_mod_exp_simple -#define BN_mod_inverse fips_bn_mod_inverse -#define BN_mod_lshift fips_bn_mod_lshift -#define BN_mod_lshift1 fips_bn_mod_lshift1 -#define BN_mod_lshift1_quick fips_bn_mod_lshift1_quick -#define BN_mod_lshift_quick fips_bn_mod_lshift_quick -#define BN_mod_mul fips_bn_mod_mul -#define BN_mod_mul_montgomery fips_bn_mod_mul_montgomery -#define BN_mod_mul_reciprocal fips_bn_mod_mul_reciprocal -#define BN_mod_sqr fips_bn_mod_sqr -#define BN_mod_sub fips_bn_mod_sub -#define BN_mod_sub_quick fips_bn_mod_sub_quick -#define BN_mod_word fips_bn_mod_word -#define BN_mul fips_bn_mul -#define BN_mul_word fips_bn_mul_word -#define BN_new FIPS_bn_new -#define BN_nist_mod_192 fips_bn_nist_mod_192 -#define BN_nist_mod_224 fips_bn_nist_mod_224 -#define BN_nist_mod_256 fips_bn_nist_mod_256 -#define BN_nist_mod_384 fips_bn_nist_mod_384 -#define BN_nist_mod_521 fips_bn_nist_mod_521 -#define BN_nist_mod_func fips_bn_nist_mod_func -#define BN_nnmod fips_bn_nnmod -#define BN_num_bits FIPS_bn_num_bits -#define BN_pseudo_rand FIPS_bn_pseudo_rand -#define BN_pseudo_rand_range FIPS_bn_pseudo_rand_range -#define BN_rand FIPS_bn_rand -#define BN_rand_range FIPS_bn_rand_range -#define BN_reciprocal fips_bn_reciprocal -#define BN_rshift fips_bn_rshift -#define BN_rshift1 fips_bn_rshift1 -#define BN_set_bit FIPS_bn_set_bit -#define BN_set_negative fips_bn_set_negative -#define BN_set_word fips_bn_set_word -#define BN_sqr fips_bn_sqr -#define BN_sub fips_bn_sub -#define BN_sub_word fips_bn_sub_word -#define BN_swap fips_bn_swap -#define BN_uadd fips_bn_uadd -#define BN_ucmp fips_bn_ucmp -#define BN_usub fips_bn_usub -#define BN_value_one fips_bn_value_one -#define BN_set_params fips_bn_set_params -#define BN_get_params fips_bn_get_params -#define BN_version FIPS_bn_version -#define BUF_memdup fips_buf_memdup -#define BUF_strdup fips_buf_strdup -#define BUF_strlcat fips_buf_strlcat -#define BUF_strlcpy fips_buf_strlcpy -#define BUF_strndup fips_buf_strndup -#define DllMain fips_dllmain -#define CRYPTO_THREADID_cmp fips_crypto_threadid_cmp -#define CRYPTO_THREADID_cpy fips_crypto_threadid_cpy -#define CRYPTO_THREADID_current fips_crypto_threadid_current -#define CRYPTO_THREADID_get_callback FIPS_crypto_threadid_get_callback -#define CRYPTO_THREADID_hash FIPS_crypto_threadid_hash -#define CRYPTO_THREADID_set_callback FIPS_crypto_threadid_set_callback -#define CRYPTO_THREADID_set_numeric FIPS_crypto_threadid_set_numeric -#define CRYPTO_THREADID_set_pointer FIPS_crypto_threadid_set_pointer -#define CRYPTO_get_id_callback FIPS_crypto_get_id_callback -#define CRYPTO_set_id_callback FIPS_crypto_set_id_callback -#define CRYPTO_thread_id FIPS_crypto_thread_id -#define CRYPTO_ccm128_aad fips_crypto_ccm128_aad -#define CRYPTO_ccm128_decrypt fips_crypto_ccm128_decrypt -#define CRYPTO_ccm128_decrypt_ccm64 fips_crypto_ccm128_decrypt_ccm64 -#define CRYPTO_ccm128_encrypt fips_crypto_ccm128_encrypt -#define CRYPTO_ccm128_encrypt_ccm64 fips_crypto_ccm128_encrypt_ccm64 -#define CRYPTO_ccm128_init fips_crypto_ccm128_init -#define CRYPTO_ccm128_setiv fips_crypto_ccm128_setiv -#define CRYPTO_ccm128_tag fips_crypto_ccm128_tag -#define CRYPTO_cbc128_decrypt fips_crypto_cbc128_decrypt -#define CRYPTO_cbc128_encrypt fips_crypto_cbc128_encrypt -#define CRYPTO_cfb128_1_encrypt fips_crypto_cfb128_1_encrypt -#define CRYPTO_cfb128_8_encrypt fips_crypto_cfb128_8_encrypt -#define CRYPTO_cfb128_encrypt fips_crypto_cfb128_encrypt -#define CRYPTO_ctr128_encrypt fips_crypto_ctr128_encrypt -#define CRYPTO_ctr128_encrypt_ctr32 fips_crypto_ctr128_encrypt_ctr32 -#define CRYPTO_gcm128_aad fips_crypto_gcm128_aad -#define CRYPTO_gcm128_decrypt fips_crypto_gcm128_decrypt -#define CRYPTO_gcm128_decrypt_ctr32 fips_crypto_gcm128_decrypt_ctr32 -#define CRYPTO_gcm128_encrypt fips_crypto_gcm128_encrypt -#define CRYPTO_gcm128_encrypt_ctr32 fips_crypto_gcm128_encrypt_ctr32 -#define CRYPTO_gcm128_finish fips_crypto_gcm128_finish -#define CRYPTO_gcm128_init fips_crypto_gcm128_init -#define CRYPTO_gcm128_new fips_crypto_gcm128_new -#define CRYPTO_gcm128_release fips_crypto_gcm128_release -#define CRYPTO_gcm128_setiv fips_crypto_gcm128_setiv -#define CRYPTO_gcm128_tag fips_crypto_gcm128_tag -#define CRYPTO_ofb128_encrypt fips_crypto_ofb128_encrypt -#define CRYPTO_xts128_encrypt fips_crypto_xts128_encrypt -#define DES_cfb64_encrypt fips_des_cfb64_encrypt -#define DES_cfb_encrypt fips_des_cfb_encrypt -#define DES_check_key_parity FIPS_des_check_key_parity -#define DES_crypt fips_des_crypt -#define DES_ecb3_encrypt fips_des_ecb3_encrypt -#define DES_ede3_cfb64_encrypt fips_des_ede3_cfb64_encrypt -#define DES_ede3_cfb_encrypt fips_des_ede3_cfb_encrypt -#define DES_ede3_ofb64_encrypt fips_des_ede3_ofb64_encrypt -#define DES_fcrypt fips_des_fcrypt -#define DES_is_weak_key fips_des_is_weak_key -#define DES_key_sched fips_des_key_sched -#define DES_set_key fips_des_set_key -#define DES_set_key_checked fips_des_set_key_checked -#define DES_set_key_unchecked fips_des_set_key_unchecked -#define DES_set_odd_parity fips_des_set_odd_parity -#define DH_OpenSSL FIPS_dh_openssl -#define DH_check FIPS_dh_check -#define DH_check_pub_key FIPS_dh_check_pub_key -#define DH_compute_key FIPS_dh_compute_key -#define DH_generate_key FIPS_dh_generate_key -#define DH_generate_parameters_ex FIPS_dh_generate_parameters_ex -#define DSA_OpenSSL FIPS_dsa_openssl -#define DSA_generate_key FIPS_dsa_generate_key -#define DSA_generate_parameters_ex FIPS_dsa_generate_parameters_ex -#define ECDSA_OpenSSL FIPS_ecdsa_openssl -#define EC_EX_DATA_clear_free_all_data fips_ec_ex_data_clear_free_all_data -#define EC_EX_DATA_clear_free_data fips_ec_ex_data_clear_free_data -#define EC_EX_DATA_free_all_data fips_ec_ex_data_free_all_data -#define EC_EX_DATA_free_data fips_ec_ex_data_free_data -#define EC_EX_DATA_get_data fips_ec_ex_data_get_data -#define EC_EX_DATA_set_data fips_ec_ex_data_set_data -#define EC_GF2m_simple_method fips_ec_gf2m_simple_method -#define EC_GFp_mont_method fips_ec_gfp_mont_method -#define EC_GFp_nist_method fips_ec_gfp_nist_method -#define EC_GFp_simple_method fips_ec_gfp_simple_method -#define EC_GROUP_check_discriminant fips_ec_group_check_discriminant -#define EC_GROUP_clear_free FIPS_ec_group_clear_free -#define EC_GROUP_cmp fips_ec_group_cmp -#define EC_GROUP_copy fips_ec_group_copy -#define EC_GROUP_dup fips_ec_group_dup -#define EC_GROUP_free fips_ec_group_free -#define EC_GROUP_get0_generator FIPS_ec_group_get0_generator -#define EC_GROUP_get0_seed FIPS_ec_group_get0_seed -#define EC_GROUP_get_asn1_flag FIPS_ec_group_get_asn1_flag -#define EC_GROUP_get_cofactor FIPS_ec_group_get_cofactor -#define EC_GROUP_get_curve_GF2m FIPS_ec_group_get_curve_gf2m -#define EC_GROUP_get_curve_GFp FIPS_ec_group_get_curve_gfp -#define EC_GROUP_get_curve_name FIPS_ec_group_get_curve_name -#define EC_GROUP_get_degree FIPS_ec_group_get_degree -#define EC_GROUP_get_order FIPS_ec_group_get_order -#define EC_GROUP_get_point_conversion_form fips_ec_group_get_point_conversion_form -#define EC_GROUP_get_seed_len fips_ec_group_get_seed_len -#define EC_GROUP_have_precompute_mult fips_ec_group_have_precompute_mult -#define EC_GROUP_method_of FIPS_ec_group_method_of -#define EC_GROUP_new FIPS_ec_group_new -#define EC_GROUP_new_by_curve_name FIPS_ec_group_new_by_curve_name -#define EC_GROUP_new_curve_GF2m FIPS_ec_group_new_curve_gf2m -#define EC_GROUP_new_curve_GFp FIPS_ec_group_new_curve_gfp -#define EC_GROUP_precompute_mult FIPS_ec_group_precompute_mult -#define EC_GROUP_set_asn1_flag FIPS_ec_group_set_asn1_flag -#define EC_GROUP_set_curve_GF2m FIPS_ec_group_set_curve_gf2m -#define EC_GROUP_set_curve_GFp FIPS_ec_group_set_curve_gfp -#define EC_GROUP_set_curve_name FIPS_ec_group_set_curve_name -#define EC_GROUP_set_generator FIPS_ec_group_set_generator -#define EC_GROUP_set_point_conversion_form FIPS_ec_group_set_point_conversion_form -#define EC_GROUP_set_seed fips_ec_group_set_seed -#define EC_KEY_check_key FIPS_ec_key_check_key -#define EC_KEY_copy FIPS_ec_key_copy -#define EC_KEY_dup FIPS_ec_key_dup -#define EC_KEY_free FIPS_ec_key_free -#define EC_KEY_generate_key FIPS_ec_key_generate_key -#define EC_KEY_get0_group FIPS_ec_key_get0_group -#define EC_KEY_get0_private_key FIPS_ec_key_get0_private_key -#define EC_KEY_get0_public_key FIPS_ec_key_get0_public_key -#define EC_KEY_get_conv_form FIPS_ec_key_get_conv_form -#define EC_KEY_get_enc_flags FIPS_ec_key_get_enc_flags -#define EC_KEY_get_key_method_data FIPS_ec_key_get_key_method_data -#define EC_KEY_insert_key_method_data FIPS_ec_key_insert_key_method_data -#define EC_KEY_new FIPS_ec_key_new -#define EC_KEY_new_by_curve_name FIPS_ec_key_new_by_curve_name -#define EC_KEY_precompute_mult FIPS_ec_key_precompute_mult -#define EC_KEY_set_asn1_flag FIPS_ec_key_set_asn1_flag -#define EC_KEY_set_conv_form FIPS_ec_key_set_conv_form -#define EC_KEY_set_enc_flags FIPS_ec_key_set_enc_flags -#define EC_KEY_set_flags FIPS_ec_key_set_flags -#define EC_KEY_clear_flags FIPS_ec_key_clear_flags -#define EC_KEY_get_flags FIPS_ec_key_get_flags -#define EC_KEY_set_group FIPS_ec_key_set_group -#define EC_KEY_set_private_key FIPS_ec_key_set_private_key -#define EC_KEY_set_public_key FIPS_ec_key_set_public_key -#define EC_KEY_set_public_key_affine_coordinates FIPS_ec_key_set_public_key_affine_coordinates -#define EC_KEY_up_ref FIPS_ec_key_up_ref -#define EC_METHOD_get_field_type FIPS_ec_method_get_field_type -#define EC_POINT_add fips_ec_point_add -#define EC_POINT_clear_free FIPS_ec_point_clear_free -#define EC_POINT_cmp fips_ec_point_cmp -#define EC_POINT_copy fips_ec_point_copy -#define EC_POINT_dbl fips_ec_point_dbl -#define EC_POINT_dup fips_ec_point_dup -#define EC_POINT_free FIPS_ec_point_free -#define EC_POINT_get_Jprojective_coordinates_GFp FIPS_ec_point_get_jprojective_coordinates_gfp -#define EC_POINT_get_affine_coordinates_GF2m FIPS_ec_point_get_affine_coordinates_gf2m -#define EC_POINT_get_affine_coordinates_GFp FIPS_ec_point_get_affine_coordinates_gfp -#define EC_POINT_invert fips_ec_point_invert -#define EC_POINT_is_at_infinity FIPS_ec_point_is_at_infinity -#define EC_POINT_is_on_curve FIPS_ec_point_is_on_curve -#define EC_POINT_make_affine FIPS_ec_point_make_affine -#define EC_POINT_method_of FIPS_ec_point_method_of -#define EC_POINT_mul FIPS_ec_point_mul -#define EC_POINT_new FIPS_ec_point_new -#define EC_POINT_set_Jprojective_coordinates_GFp fips_ec_point_set_jprojective_coordinates_gfp -#define EC_POINT_set_affine_coordinates_GF2m fips_ec_point_set_affine_coordinates_gf2m -#define EC_POINT_set_affine_coordinates_GFp fips_ec_point_set_affine_coordinates_gfp -#define EC_POINT_set_to_infinity FIPS_ec_point_set_to_infinity -#define EC_POINTs_make_affine FIPS_ec_points_make_affine -#define EC_POINTs_mul fips_ec_points_mul -#define EC_get_builtin_curves FIPS_ec_get_builtin_curves -#define EVP_aes_128_cbc FIPS_evp_aes_128_cbc -#define EVP_aes_128_ccm FIPS_evp_aes_128_ccm -#define EVP_aes_128_cfb1 FIPS_evp_aes_128_cfb1 -#define EVP_aes_128_cfb128 FIPS_evp_aes_128_cfb128 -#define EVP_aes_128_cfb8 FIPS_evp_aes_128_cfb8 -#define EVP_aes_128_ctr FIPS_evp_aes_128_ctr -#define EVP_aes_128_ecb FIPS_evp_aes_128_ecb -#define EVP_aes_128_gcm FIPS_evp_aes_128_gcm -#define EVP_aes_128_ofb FIPS_evp_aes_128_ofb -#define EVP_aes_128_xts FIPS_evp_aes_128_xts -#define EVP_aes_192_cbc FIPS_evp_aes_192_cbc -#define EVP_aes_192_ccm FIPS_evp_aes_192_ccm -#define EVP_aes_192_cfb1 FIPS_evp_aes_192_cfb1 -#define EVP_aes_192_cfb128 FIPS_evp_aes_192_cfb128 -#define EVP_aes_192_cfb8 FIPS_evp_aes_192_cfb8 -#define EVP_aes_192_ctr FIPS_evp_aes_192_ctr -#define EVP_aes_192_ecb FIPS_evp_aes_192_ecb -#define EVP_aes_192_gcm FIPS_evp_aes_192_gcm -#define EVP_aes_192_ofb FIPS_evp_aes_192_ofb -#define EVP_aes_256_cbc FIPS_evp_aes_256_cbc -#define EVP_aes_256_ccm FIPS_evp_aes_256_ccm -#define EVP_aes_256_cfb1 FIPS_evp_aes_256_cfb1 -#define EVP_aes_256_cfb128 FIPS_evp_aes_256_cfb128 -#define EVP_aes_256_cfb8 FIPS_evp_aes_256_cfb8 -#define EVP_aes_256_ctr FIPS_evp_aes_256_ctr -#define EVP_aes_256_ecb FIPS_evp_aes_256_ecb -#define EVP_aes_256_gcm FIPS_evp_aes_256_gcm -#define EVP_aes_256_ofb FIPS_evp_aes_256_ofb -#define EVP_aes_256_xts FIPS_evp_aes_256_xts -#define EVP_des_ede FIPS_evp_des_ede -#define EVP_des_ede3 FIPS_evp_des_ede3 -#define EVP_des_ede3_cbc FIPS_evp_des_ede3_cbc -#define EVP_des_ede3_cfb1 FIPS_evp_des_ede3_cfb1 -#define EVP_des_ede3_cfb64 FIPS_evp_des_ede3_cfb64 -#define EVP_des_ede3_cfb8 FIPS_evp_des_ede3_cfb8 -#define EVP_des_ede3_ecb FIPS_evp_des_ede3_ecb -#define EVP_des_ede3_ofb FIPS_evp_des_ede3_ofb -#define EVP_des_ede_cbc FIPS_evp_des_ede_cbc -#define EVP_des_ede_cfb64 FIPS_evp_des_ede_cfb64 -#define EVP_des_ede_ecb FIPS_evp_des_ede_ecb -#define EVP_des_ede_ofb FIPS_evp_des_ede_ofb -#define EVP_enc_null FIPS_evp_enc_null -#define EVP_sha1 FIPS_evp_sha1 -#define EVP_dss FIPS_evp_dss -#define EVP_dss1 FIPS_evp_dss1 -#define EVP_ecdsa FIPS_evp_ecdsa -#define EVP_sha224 FIPS_evp_sha224 -#define EVP_sha256 FIPS_evp_sha256 -#define EVP_sha384 FIPS_evp_sha384 -#define EVP_sha512 FIPS_evp_sha512 -#define HMAC FIPS_hmac -#define HMAC_CTX_cleanup FIPS_hmac_ctx_cleanup -#define HMAC_CTX_copy FIPS_hmac_ctx_copy -#define HMAC_CTX_init FIPS_hmac_ctx_init -#define HMAC_CTX_set_flags FIPS_hmac_ctx_set_flags -#define HMAC_Final FIPS_hmac_final -#define HMAC_Init FIPS_hmac_init -#define HMAC_Init_ex FIPS_hmac_init_ex -#define HMAC_Update FIPS_hmac_update -#define OPENSSL_NONPIC_relocated fips_openssl_nonpic_relocated -#define OPENSSL_ia32cap_loc fips_openssl_ia32cap_loc -#define OPENSSL_isservice fips_openssl_isservice -#define OPENSSL_issetugid fips_openssl_issetugid -#define OPENSSL_showfatal FIPS_openssl_showfatal -#define OPENSSL_stderr FIPS_openssl_stderr -#define OpenSSLDie FIPS_openssldie -#define PKCS1_MGF1 fips_pkcs1_mgf1 -#define RSA_PKCS1_SSLeay FIPS_rsa_pkcs1_ssleay -#define RSA_X931_derive_ex FIPS_rsa_x931_derive_ex -#define RSA_X931_generate_key_ex FIPS_rsa_x931_generate_key_ex -#define RSA_X931_hash_id fips_rsa_x931_hash_id -#define RSA_blinding_off FIPS_rsa_blinding_off -#define RSA_blinding_on FIPS_rsa_blinding_on -#define RSA_flags FIPS_rsa_flags -#define RSA_generate_key_ex FIPS_rsa_generate_key_ex -#define RSA_padding_add_PKCS1_OAEP fips_rsa_padding_add_pkcs1_oaep -#define RSA_padding_add_PKCS1_PSS fips_rsa_padding_add_pkcs1_pss -#define RSA_padding_add_PKCS1_PSS_mgf1 fips_rsa_padding_add_pkcs1_pss_mgf1 -#define RSA_padding_add_PKCS1_type_1 fips_rsa_padding_add_pkcs1_type_1 -#define RSA_padding_add_PKCS1_type_2 fips_rsa_padding_add_pkcs1_type_2 -#define RSA_padding_add_SSLv23 fips_rsa_padding_add_sslv23 -#define RSA_padding_add_X931 fips_rsa_padding_add_x931 -#define RSA_padding_add_none fips_rsa_padding_add_none -#define RSA_padding_check_PKCS1_OAEP fips_rsa_padding_check_pkcs1_oaep -#define RSA_padding_check_PKCS1_type_1 fips_rsa_padding_check_pkcs1_type_1 -#define RSA_padding_check_PKCS1_type_2 fips_rsa_padding_check_pkcs1_type_2 -#define RSA_padding_check_SSLv23 fips_rsa_padding_check_sslv23 -#define RSA_padding_check_X931 fips_rsa_padding_check_x931 -#define RSA_padding_check_none fips_rsa_padding_check_none -#define RSA_private_decrypt FIPS_rsa_private_decrypt -#define RSA_private_encrypt FIPS_rsa_private_encrypt -#define RSA_public_decrypt FIPS_rsa_public_decrypt -#define RSA_public_encrypt FIPS_rsa_public_encrypt -#define RSA_setup_blinding fips_rsa_setup_blinding -#define RSA_size FIPS_rsa_size -#define RSA_verify_PKCS1_PSS fips_rsa_verify_pkcs1_pss -#define RSA_verify_PKCS1_PSS_mgf1 fips_rsa_verify_pkcs1_pss_mgf1 -#define SHA1_Final fips_sha1_final -#define SHA1_Init fips_sha1_init -#define SHA1_Transform fips_sha1_transform -#define SHA1_Update fips_sha1_update -#define SHA1_version fips_sha1_version -#define SHA224 fips_sha224 -#define SHA224_Final fips_sha224_final -#define SHA224_Init fips_sha224_init -#define SHA224_Update fips_sha224_update -#define SHA256_Final fips_sha256_final -#define SHA256_Init fips_sha256_init -#define SHA256_Transform fips_sha256_transform -#define SHA256_Update fips_sha256_update -#define SHA256_version fips_sha256_version -#define SHA384 fips_sha384 -#define SHA384_Final fips_sha384_final -#define SHA384_Init fips_sha384_init -#define SHA384_Update fips_sha384_update -#define SHA512_Final fips_sha512_final -#define SHA512_Init fips_sha512_init -#define SHA512_Transform fips_sha512_transform -#define SHA512_Update fips_sha512_update -#define SHA512_version fips_sha512_version -#define _shadow_DES_check_key fips__shadow_des_check_key -#define bn_add_part_words fips_bn_add_part_words -#define bn_cmp_part_words fips_bn_cmp_part_words -#define bn_cmp_words fips_bn_cmp_words -#define bn_dup_expand fips_bn_dup_expand -#define bn_expand2 fips_bn_expand2 -#define bn_mul_high fips_bn_mul_high -#define bn_mul_low_normal fips_bn_mul_low_normal -#define bn_mul_low_recursive fips_bn_mul_low_recursive -#define bn_mul_normal fips_bn_mul_normal -#define bn_mul_part_recursive fips_bn_mul_part_recursive -#define bn_mul_recursive fips_bn_mul_recursive -#define bn_sqr_normal fips_bn_sqr_normal -#define bn_sqr_recursive fips_bn_sqr_recursive -#define dsa_builtin_paramgen fips_dsa_builtin_paramgen -#define dsa_builtin_paramgen2 fips_dsa_builtin_paramgen2 -#define dsa_paramgen_check_g fips_dsa_paramgen_check_g -#define ec_GF2m_have_precompute_mult fips_ec_gf2m_have_precompute_mult -#define ec_GF2m_precompute_mult fips_ec_gf2m_precompute_mult -#define ec_GF2m_simple_add fips_ec_gf2m_simple_add -#define ec_GF2m_simple_cmp fips_ec_gf2m_simple_cmp -#define ec_GF2m_simple_dbl fips_ec_gf2m_simple_dbl -#define ec_GF2m_simple_field_div fips_ec_gf2m_simple_field_div -#define ec_GF2m_simple_field_mul fips_ec_gf2m_simple_field_mul -#define ec_GF2m_simple_field_sqr fips_ec_gf2m_simple_field_sqr -#define ec_GF2m_simple_group_check_discriminant fips_ec_gf2m_simple_group_check_discriminant -#define ec_GF2m_simple_group_clear_finish fips_ec_gf2m_simple_group_clear_finish -#define ec_GF2m_simple_group_copy fips_ec_gf2m_simple_group_copy -#define ec_GF2m_simple_group_finish fips_ec_gf2m_simple_group_finish -#define ec_GF2m_simple_group_get_curve fips_ec_gf2m_simple_group_get_curve -#define ec_GF2m_simple_group_get_degree fips_ec_gf2m_simple_group_get_degree -#define ec_GF2m_simple_group_init fips_ec_gf2m_simple_group_init -#define ec_GF2m_simple_group_set_curve fips_ec_gf2m_simple_group_set_curve -#define ec_GF2m_simple_invert fips_ec_gf2m_simple_invert -#define ec_GF2m_simple_is_at_infinity fips_ec_gf2m_simple_is_at_infinity -#define ec_GF2m_simple_is_on_curve fips_ec_gf2m_simple_is_on_curve -#define ec_GF2m_simple_make_affine fips_ec_gf2m_simple_make_affine -#define ec_GF2m_simple_mul fips_ec_gf2m_simple_mul -#define ec_GF2m_simple_point_clear_finish fips_ec_gf2m_simple_point_clear_finish -#define ec_GF2m_simple_point_copy fips_ec_gf2m_simple_point_copy -#define ec_GF2m_simple_point_finish fips_ec_gf2m_simple_point_finish -#define ec_GF2m_simple_point_get_affine_coordinates fips_ec_gf2m_simple_point_get_affine_coordinates -#define ec_GF2m_simple_point_init fips_ec_gf2m_simple_point_init -#define ec_GF2m_simple_point_set_affine_coordinates fips_ec_gf2m_simple_point_set_affine_coordinates -#define ec_GF2m_simple_point_set_to_infinity fips_ec_gf2m_simple_point_set_to_infinity -#define ec_GF2m_simple_points_make_affine fips_ec_gf2m_simple_points_make_affine -#define ec_GFp_mont_field_decode fips_ec_gfp_mont_field_decode -#define ec_GFp_mont_field_encode fips_ec_gfp_mont_field_encode -#define ec_GFp_mont_field_mul fips_ec_gfp_mont_field_mul -#define ec_GFp_mont_field_set_to_one fips_ec_gfp_mont_field_set_to_one -#define ec_GFp_mont_field_sqr fips_ec_gfp_mont_field_sqr -#define ec_GFp_mont_group_clear_finish fips_ec_gfp_mont_group_clear_finish -#define ec_GFp_mont_group_copy fips_ec_gfp_mont_group_copy -#define ec_GFp_mont_group_finish fips_ec_gfp_mont_group_finish -#define ec_GFp_mont_group_init fips_ec_gfp_mont_group_init -#define ec_GFp_mont_group_set_curve fips_ec_gfp_mont_group_set_curve -#define ec_GFp_nist_field_mul fips_ec_gfp_nist_field_mul -#define ec_GFp_nist_field_sqr fips_ec_gfp_nist_field_sqr -#define ec_GFp_nist_group_copy fips_ec_gfp_nist_group_copy -#define ec_GFp_nist_group_set_curve fips_ec_gfp_nist_group_set_curve -#define ec_GFp_simple_add fips_ec_gfp_simple_add -#define ec_GFp_simple_cmp fips_ec_gfp_simple_cmp -#define ec_GFp_simple_dbl fips_ec_gfp_simple_dbl -#define ec_GFp_simple_field_mul fips_ec_gfp_simple_field_mul -#define ec_GFp_simple_field_sqr fips_ec_gfp_simple_field_sqr -#define ec_GFp_simple_get_Jprojective_coordinates_GFp fips_ec_gfp_simple_get_jprojective_coordinates_gfp -#define ec_GFp_simple_group_check_discriminant fips_ec_gfp_simple_group_check_discriminant -#define ec_GFp_simple_group_clear_finish fips_ec_gfp_simple_group_clear_finish -#define ec_GFp_simple_group_copy fips_ec_gfp_simple_group_copy -#define ec_GFp_simple_group_finish fips_ec_gfp_simple_group_finish -#define ec_GFp_simple_group_get_curve fips_ec_gfp_simple_group_get_curve -#define ec_GFp_simple_group_get_degree fips_ec_gfp_simple_group_get_degree -#define ec_GFp_simple_group_init fips_ec_gfp_simple_group_init -#define ec_GFp_simple_group_set_curve fips_ec_gfp_simple_group_set_curve -#define ec_GFp_simple_invert fips_ec_gfp_simple_invert -#define ec_GFp_simple_is_at_infinity fips_ec_gfp_simple_is_at_infinity -#define ec_GFp_simple_is_on_curve fips_ec_gfp_simple_is_on_curve -#define ec_GFp_simple_make_affine fips_ec_gfp_simple_make_affine -#define ec_GFp_simple_point_clear_finish fips_ec_gfp_simple_point_clear_finish -#define ec_GFp_simple_point_copy fips_ec_gfp_simple_point_copy -#define ec_GFp_simple_point_finish fips_ec_gfp_simple_point_finish -#define ec_GFp_simple_point_get_affine_coordinates fips_ec_gfp_simple_point_get_affine_coordinates -#define ec_GFp_simple_point_init fips_ec_gfp_simple_point_init -#define ec_GFp_simple_point_set_affine_coordinates fips_ec_gfp_simple_point_set_affine_coordinates -#define ec_GFp_simple_point_set_to_infinity fips_ec_gfp_simple_point_set_to_infinity -#define ec_GFp_simple_points_make_affine fips_ec_gfp_simple_points_make_affine -#define ec_GFp_simple_set_Jprojective_coordinates_GFp fips_ec_gfp_simple_set_jprojective_coordinates_gfp -#define ec_wNAF_have_precompute_mult fips_ec_wnaf_have_precompute_mult -#define ec_wNAF_mul fips_ec_wnaf_mul -#define ec_wNAF_precompute_mult fips_ec_wnaf_precompute_mult -#define int_bn_mod_inverse fips_int_bn_mod_inverse -#define cleanse_ctr fips_cleanse_ctr -#define DH_compute_key_padded FIPS_dh_compute_key_padded -#define ECDH_OpenSSL FIPS_ecdh_openssl -#define ECDH_compute_key FIPS_ecdh_compute_key - -#define CMAC_CTX_cleanup FIPS_cmac_ctx_cleanup -#define CMAC_CTX_copy FIPS_cmac_ctx_copy -#define CMAC_CTX_free FIPS_cmac_ctx_free -#define CMAC_CTX_get0_cipher_ctx FIPS_cmac_ctx_get0_cipher_ctx -#define CMAC_CTX_new FIPS_cmac_ctx_new -#define CMAC_Init FIPS_cmac_init -#define CMAC_Update FIPS_cmac_update -#define CMAC_Final FIPS_cmac_final -#define CMAC_resume FIPS_cmac_resume - -/* assembler symbols */ -#define gcm_gmult_4bit_x86 fips_gcm_gmult_4bit_x86 -#define gcm_ghash_4bit_x86 fips_gcm_ghash_4bit_x86 -#define AES_cbc_encrypt fips_aes_cbc_encrypt -#define AES_decrypt fips_aes_decrypt -#define AES_encrypt fips_aes_encrypt -#define AES_set_decrypt_key fips_aes_set_decrypt_key -#define AES_set_encrypt_key fips_aes_set_encrypt_key -#define BN_from_montgomery fips_bn_from_montgomery -#define BN_num_bits_word FIPS_bn_num_bits_word -#define DES_SPtrans fips_des_sptrans -#define DES_decrypt3 fips_des_decrypt3 -#define DES_ede3_cbc_encrypt fips_des_ede3_cbc_encrypt -#define DES_encrypt1 fips_des_encrypt1 -#define DES_encrypt2 fips_des_encrypt2 -#define DES_encrypt3 fips_des_encrypt3 -#define DES_ncbc_encrypt fips_des_ncbc_encrypt -#define OPENSSL_altivec_probe fips_openssl_altivec_probe -#define OPENSSL_atomic_add fips_openssl_atomic_add -#define OPENSSL_cleanse FIPS_openssl_cleanse -#define OPENSSL_cpuid_setup fips_openssl_cpuid_setup -#define OPENSSL_ia32_cpuid fips_openssl_ia32_cpuid -#define OPENSSL_ia32cap_P fips_openssl_ia32cap_p -#define OPENSSL_instrument_bus fips_openssl_instrument_bus -#define OPENSSL_instrument_bus2 fips_openssl_instrument_bus2 -#define OPENSSL_ppc64_probe fips_openssl_ppc64_probe -#define OPENSSL_rdtsc fips_openssl_rdtsc -#define OPENSSL_wipe_cpu fips_openssl_wipe_cpu -#define SHA256 fips_sha256 -#define SHA512 fips_sha512 -#define aesni_ccm64_decrypt_blocks fips_aesni_ccm64_decrypt_blocks -#define aesni_ccm64_encrypt_blocks fips_aesni_ccm64_encrypt_blocks -#define aesni_ctr32_encrypt_blocks fips_aesni_ctr32_encrypt_blocks -#define aesni_ecb_encrypt fips_aesni_ecb_encrypt -#define aesni_encrypt fips_aesni_encrypt -#define bn_add_words fips_bn_add_words -#define bn_div_words fips_bn_div_words -#define bn_mul_add_words fips_bn_mul_add_words -#define bn_mul_comba4 fips_bn_mul_comba4 -#define bn_mul_comba8 fips_bn_mul_comba8 -#define bn_mul_mont fips_bn_mul_mont -#define bn_sqr_mont fips_bn_sqr_mont -#define bn_mul_mont_fpu64 fips_bn_mul_mont_fpu64 -#define bn_mul_mont_int fips_bn_mul_mont_int -#define bn_mul_words fips_bn_mul_words -#define bn_sqr_comba4 fips_bn_sqr_comba4 -#define bn_sqr_comba8 fips_bn_sqr_comba8 -#define bn_sqr_words fips_bn_sqr_words -#define bn_sub_part_words fips_bn_sub_part_words -#define bn_sub_words fips_bn_sub_words -#define fcrypt_body fips_fcrypt_body -#define gcm_ghash_4bit fips_gcm_ghash_4bit -#define gcm_ghash_clmul fips_gcm_ghash_clmul -#define gcm_gmult_4bit fips_gcm_gmult_4bit -#define gcm_gmult_clmul fips_gcm_gmult_clmul -#define gcm_init_clmul fips_gcm_init_clmul -#define sha1_block_data_order fips_sha1_block_data_order -#define sha256_block_data_order fips_sha256_block_data_order -#define sha512_block_data_order fips_sha512_block_data_order -#define gcm_gmult_4bit_mmx fips_gcm_gmult_4bit_mmx -#define gcm_ghash_4bit_mmx fips_gcm_ghash_4bit_mmx -#define OPENSSL_far_spin fips_openssl_far_spin -#define OPENSSL_indirect_call fips_openssl_indirect_call -#define OPENSSL_instrument_halt fips_openssl_instrument_halt -#define OPENSSL_armcap fips_openssl_armcap -#define aesni_cbc_encrypt fips_aesni_cbc_encrypt -#define aesni_decrypt fips_aesni_decrypt -#define aesni_set_decrypt_key fips_aesni_set_decrypt_key -#define aesni_set_encrypt_key fips_aesni_set_encrypt_key -#define bn_GF2m_mul_2x2 fips_bn_GF2m_mul_2x2 -#define gcm_ghash_neon fips_gcm_ghash_neon -#define gcm_gmult_neon fips_gcm_gmult_neon -#define aesni_xts_decrypt fips_aesni_xts_decrypt -#define aesni_xts_encrypt fips_aesni_xts_encrypt -#define OPENSSL_ia32_rdrand fips_openssl_ia32_rdrand -#define OPENSSL_armcap_P fips_openssl_armcap_P -#define _armv7_neon_probe _fips_armv7_neon_probe -#define _armv7_tick _fips_armv7_tick -#define _sparcv9_rdtick _fips_sparcv9_rdtick -#define _sparcv9_vis1_probe _fips_sparcv9_vis1_probe -#define _sparcv9_vis2_probe _fips_sparcv9_vis2_probe -#define _sparcv9_fmadd_probe _fips_sparcv9_fmadd_probe -#define _sparcv9_vis1_instrument _fips_sparcv9_vis1_instrument -#define bn_mul_mont_gather5 fips_bn_mul_mont_gather5 -#define bn_scatter5 fips_bn_scatter5 -#define bn_gather5 fips_bn_gather5 - -#if defined(_MSC_VER) -# pragma const_seg("fipsro$b") -# pragma const_seg() -# define __fips_constseg __declspec(allocate("fipsro$b")) -#else -# define __fips_constseg -#endif diff --git a/fips/hmac/Makefile b/fips/hmac/Makefile deleted file mode 100644 index 5a6ca87944..0000000000 --- a/fips/hmac/Makefile +++ /dev/null @@ -1,113 +0,0 @@ -# -# OpenSSL/fips/hmac/Makefile -# - -DIR= hmac -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST=fips_hmactest.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= fips_hmac_selftest.c -LIBOBJ= fips_hmac_selftest.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= $(EXHEADER) - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -Q=../testvectors/hmac/req -A=../testvectors/hmac/rsp - -fips_test: - -rm -rf $(A) - mkdir $(A) - if [ -f $(Q)/HMAC.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_hmactest < $(Q)/HMAC.req > $(A)/HMAC.rsp; fi - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_hmac_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_hmac_selftest.o: ../../include/openssl/crypto.h -fips_hmac_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h -fips_hmac_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_hmac_selftest.o: ../../include/openssl/hmac.h -fips_hmac_selftest.o: ../../include/openssl/lhash.h -fips_hmac_selftest.o: ../../include/openssl/obj_mac.h -fips_hmac_selftest.o: ../../include/openssl/objects.h -fips_hmac_selftest.o: ../../include/openssl/opensslconf.h -fips_hmac_selftest.o: ../../include/openssl/opensslv.h -fips_hmac_selftest.o: ../../include/openssl/ossl_typ.h -fips_hmac_selftest.o: ../../include/openssl/safestack.h -fips_hmac_selftest.o: ../../include/openssl/stack.h -fips_hmac_selftest.o: ../../include/openssl/symhacks.h ../fips_locl.h -fips_hmac_selftest.o: fips_hmac_selftest.c -fips_hmactest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_hmactest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_hmactest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_hmactest.o: ../../include/openssl/ec.h ../../include/openssl/err.h -fips_hmactest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_hmactest.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_hmactest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_hmactest.o: ../../include/openssl/objects.h -fips_hmactest.o: ../../include/openssl/opensslconf.h -fips_hmactest.o: ../../include/openssl/opensslv.h -fips_hmactest.o: ../../include/openssl/ossl_typ.h -fips_hmactest.o: ../../include/openssl/safestack.h -fips_hmactest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_hmactest.o: ../fips_utl.h fips_hmactest.c diff --git a/fips/hmac/fips_hmac_selftest.c b/fips/hmac/fips_hmac_selftest.c deleted file mode 100644 index 037761ce9f..0000000000 --- a/fips/hmac/fips_hmac_selftest.c +++ /dev/null @@ -1,184 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include "fips_locl.h" - -#ifdef OPENSSL_FIPS -typedef struct { - int nid; - const unsigned char kaval[EVP_MAX_MD_SIZE]; -} HMAC_KAT; - -/* from http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf */ -/* "0123456789:;<=>?@ABC" */ -__fips_constseg -static const unsigned char hmac_kat_key[] = { - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, - 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43 - }; -/* "Sample #2" */ -__fips_constseg -static const unsigned char hmac_kat_data[] = { - 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x23, 0x32 - }; - -__fips_constseg -static const HMAC_KAT vector[] = { - { NID_sha1, - { 0x09,0x22,0xd3,0x40,0x5f,0xaa,0x3d,0x19, - 0x4f,0x82,0xa4,0x58,0x30,0x73,0x7d,0x5c, - 0xc6,0xc7,0x5d,0x24 } - }, - { NID_sha224, - { 0xdd,0xef,0x0a,0x40,0xcb,0x7d,0x50,0xfb, - 0x6e,0xe6,0xce,0xa1,0x20,0xba,0x26,0xaa, - 0x08,0xf3,0x07,0x75,0x87,0xb8,0xad,0x1b, - 0x8c,0x8d,0x12,0xc7 } - }, - { NID_sha256, - { 0xb8,0xf2,0x0d,0xb5,0x41,0xea,0x43,0x09, - 0xca,0x4e,0xa9,0x38,0x0c,0xd0,0xe8,0x34, - 0xf7,0x1f,0xbe,0x91,0x74,0xa2,0x61,0x38, - 0x0d,0xc1,0x7e,0xae,0x6a,0x34,0x51,0xd9 } - }, - { NID_sha384, - { 0x08,0xbc,0xb0,0xda,0x49,0x1e,0x87,0xad, - 0x9a,0x1d,0x6a,0xce,0x23,0xc5,0x0b,0xf6, - 0xb7,0x18,0x06,0xa5,0x77,0xcd,0x49,0x04, - 0x89,0xf1,0xe6,0x23,0x44,0x51,0x51,0x9f, - 0x85,0x56,0x80,0x79,0x0c,0xbd,0x4d,0x50, - 0xa4,0x5f,0x29,0xe3,0x93,0xf0,0xe8,0x7f } - }, - { NID_sha512, - { 0x80,0x9d,0x44,0x05,0x7c,0x5b,0x95,0x41, - 0x05,0xbd,0x04,0x13,0x16,0xdb,0x0f,0xac, - 0x44,0xd5,0xa4,0xd5,0xd0,0x89,0x2b,0xd0, - 0x4e,0x86,0x64,0x12,0xc0,0x90,0x77,0x68, - 0xf1,0x87,0xb7,0x7c,0x4f,0xae,0x2c,0x2f, - 0x21,0xa5,0xb5,0x65,0x9a,0x4f,0x4b,0xa7, - 0x47,0x02,0xa3,0xde,0x9b,0x51,0xf1,0x45, - 0xbd,0x4f,0x25,0x27,0x42,0x98,0x99,0x05 } - }, -}; - -int FIPS_selftest_hmac() - { - size_t n; - unsigned int outlen; - unsigned char out[EVP_MAX_MD_SIZE]; - const EVP_MD *md; - const HMAC_KAT *t; - int rv = 1, subid = -1; - HMAC_CTX c; - HMAC_CTX_init(&c); - - - for(n=0,t=vector; nnid); - if (!md) - { - rv = -1; - goto err; - } - subid = M_EVP_MD_type(md); - if (!fips_post_started(FIPS_TEST_HMAC, subid, 0)) - continue; - if (!HMAC_Init_ex(&c, hmac_kat_key, sizeof(hmac_kat_key), - md, NULL)) - { - rv = -1; - goto err; - } - if (!HMAC_Update(&c, hmac_kat_data, sizeof(hmac_kat_data))) - { - rv = -1; - goto err; - } - if (!fips_post_corrupt(FIPS_TEST_HMAC, subid, NULL)) - { - if (!HMAC_Update(&c, hmac_kat_data, 1)) - { - rv = -1; - goto err; - } - } - if (!HMAC_Final(&c, out, &outlen)) - { - rv = -1; - goto err; - } - - if(memcmp(out,t->kaval,outlen)) - { - fips_post_failed(FIPS_TEST_HMAC, subid, NULL); - rv = 0; - } - else if (!fips_post_success(FIPS_TEST_HMAC, subid, NULL)) - goto err; - } - - err: - HMAC_CTX_cleanup(&c); - if (rv == -1) - { - fips_post_failed(FIPS_TEST_HMAC, subid, NULL); - rv = 0; - } - if (!rv) - FIPSerr(FIPS_F_FIPS_SELFTEST_HMAC,FIPS_R_SELFTEST_FAILED); - return rv; - } -#endif diff --git a/fips/hmac/fips_hmactest.c b/fips/hmac/fips_hmactest.c deleted file mode 100644 index da9c8d7926..0000000000 --- a/fips/hmac/fips_hmactest.c +++ /dev/null @@ -1,324 +0,0 @@ -/* fips_hmactest.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2005. - */ -/* ==================================================================== - * Copyright (c) 2005 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef OPENSSL_FIPS - -int main(int argc, char *argv[]) -{ - printf("No FIPS HMAC support\n"); - return(0); -} - -#else - -#include -#include "fips_utl.h" - -static int hmac_test(const EVP_MD *md, FILE *out, FILE *in); -static int print_hmac(const EVP_MD *md, FILE *out, - unsigned char *Key, int Klen, - unsigned char *Msg, int Msglen, int Tlen); - -#ifdef FIPS_ALGVS -int fips_hmactest_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - FILE *in = NULL, *out = NULL; - - int ret = 1; - fips_algtest_init(); - - if (argc == 1) - in = stdin; - else - in = fopen(argv[1], "r"); - - if (argc < 2) - out = stdout; - else - out = fopen(argv[2], "w"); - - if (!in) - { - fprintf(stderr, "FATAL input initialization error\n"); - goto end; - } - - if (!out) - { - fprintf(stderr, "FATAL output initialization error\n"); - goto end; - } - - if (!hmac_test(EVP_sha1(), out, in)) - { - fprintf(stderr, "FATAL hmac file processing error\n"); - goto end; - } - else - ret = 0; - - end: - - if (in && (in != stdin)) - fclose(in); - if (out && (out != stdout)) - fclose(out); - - return ret; - - } - -#define HMAC_TEST_MAXLINELEN 1024 - -int hmac_test(const EVP_MD *md, FILE *out, FILE *in) - { - char *linebuf, *olinebuf, *p, *q; - char *keyword, *value; - unsigned char *Key = NULL, *Msg = NULL; - int Count, Klen, Tlen; - long Keylen, Msglen; - int ret = 0; - int lnum = 0; - - olinebuf = OPENSSL_malloc(HMAC_TEST_MAXLINELEN); - linebuf = OPENSSL_malloc(HMAC_TEST_MAXLINELEN); - - if (!linebuf || !olinebuf) - goto error; - - Count = -1; - Klen = -1; - Tlen = -1; - - while (fgets(olinebuf, HMAC_TEST_MAXLINELEN, in)) - { - lnum++; - strcpy(linebuf, olinebuf); - keyword = linebuf; - /* Skip leading space */ - while (isspace((unsigned char)*keyword)) - keyword++; - - /* Look for = sign */ - p = strchr(linebuf, '='); - - /* If no = or starts with [ (for [L=20] line) just copy */ - if (!p) - { - if (fputs(olinebuf, out) < 0) - goto error; - continue; - } - - q = p - 1; - - /* Remove trailing space */ - while (isspace((unsigned char)*q)) - *q-- = 0; - - *p = 0; - value = p + 1; - - /* Remove leading space from value */ - while (isspace((unsigned char)*value)) - value++; - - /* Remove trailing space from value */ - p = value + strlen(value) - 1; - - while (*p == '\n' || isspace((unsigned char)*p)) - *p-- = 0; - - if (!strcmp(keyword,"[L") && *p==']') - { - switch (atoi(value)) - { - case 20: md=EVP_sha1(); break; - case 28: md=EVP_sha224(); break; - case 32: md=EVP_sha256(); break; - case 48: md=EVP_sha384(); break; - case 64: md=EVP_sha512(); break; - default: goto parse_error; - } - } - else if (!strcmp(keyword, "Count")) - { - if (Count != -1) - goto parse_error; - Count = atoi(value); - if (Count < 0) - goto parse_error; - } - else if (!strcmp(keyword, "Klen")) - { - if (Klen != -1) - goto parse_error; - Klen = atoi(value); - if (Klen < 0) - goto parse_error; - } - else if (!strcmp(keyword, "Tlen")) - { - if (Tlen != -1) - goto parse_error; - Tlen = atoi(value); - if (Tlen < 0) - goto parse_error; - } - else if (!strcmp(keyword, "Msg")) - { - if (Msg) - goto parse_error; - Msg = hex2bin_m(value, &Msglen); - if (!Msg) - goto parse_error; - } - else if (!strcmp(keyword, "Key")) - { - if (Key) - goto parse_error; - Key = hex2bin_m(value, &Keylen); - if (!Key) - goto parse_error; - } - else if (!strcmp(keyword, "Mac")) - continue; - else - goto parse_error; - - fputs(olinebuf, out); - - if (Key && Msg && (Tlen > 0) && (Klen > 0)) - { - if (!print_hmac(md, out, Key, Klen, Msg, Msglen, Tlen)) - goto error; - OPENSSL_free(Key); - Key = NULL; - OPENSSL_free(Msg); - Msg = NULL; - Klen = -1; - Tlen = -1; - Count = -1; - } - - } - - - ret = 1; - - - error: - - if (olinebuf) - OPENSSL_free(olinebuf); - if (linebuf) - OPENSSL_free(linebuf); - if (Key) - OPENSSL_free(Key); - if (Msg) - OPENSSL_free(Msg); - - return ret; - - parse_error: - - fprintf(stderr, "FATAL parse error processing line %d\n", lnum); - - goto error; - - } - -static int print_hmac(const EVP_MD *emd, FILE *out, - unsigned char *Key, int Klen, - unsigned char *Msg, int Msglen, int Tlen) - { - int i, mdlen; - unsigned char md[EVP_MAX_MD_SIZE]; - if (!HMAC(emd, Key, Klen, Msg, Msglen, md, - (unsigned int *)&mdlen)) - { - fputs("Error calculating HMAC\n", stderr); - return 0; - } - if (Tlen > mdlen) - { - fputs("Parameter error, Tlen > HMAC length\n", stderr); - return 0; - } - fputs("Mac = ", out); - for (i = 0; i < Tlen; i++) - fprintf(out, "%02x", md[i]); - fputs(RESP_EOL, out); - return 1; - } - -#endif diff --git a/fips/mkfipsscr.pl b/fips/mkfipsscr.pl deleted file mode 100644 index 361641d36e..0000000000 --- a/fips/mkfipsscr.pl +++ /dev/null @@ -1,657 +0,0 @@ -#!/usr/local/bin/perl -w -# Quick & dirty utility to generate a script for executing the -# FIPS 140-2 CMVP algorithm tests based on the pathnames of -# input algorithm test files actually present (the unqualified -# file names are consistent but the pathnames are not). -# - -# List of all the unqualified file names we expect. -my %fips_tests = ( - -# FIPS test definitions - -# DSA tests - -"PQGGen" => "fips_dssvs pqg", -"KeyPair" => "fips_dssvs keypair", -"SigGen" => "fips_dssvs siggen", -"SigVer" => "fips_dssvs sigver", - -# SHA tests - -"SHA1LongMsg" => "fips_shatest", -"SHA1Monte" => "fips_shatest", -"SHA1ShortMsg" => "fips_shatest", -"SHA224LongMsg" => "fips_shatest", -"SHA224Monte" => "fips_shatest", -"SHA224ShortMsg" => "fips_shatest", -"SHA256LongMsg" => "fips_shatest", -"SHA256Monte" => "fips_shatest", -"SHA256ShortMsg" => "fips_shatest", -"SHA384LongMsg" => "fips_shatest", -"SHA384Monte" => "fips_shatest", -"SHA384ShortMsg" => "fips_shatest", -"SHA512LongMsg" => "fips_shatest", -"SHA512Monte" => "fips_shatest", -"SHA512ShortMsg" => "fips_shatest", - -# HMAC - -"HMAC" => "fips_hmactest", - -# RAND tests - -"ANSI931_AES128MCT" => "fips_rngvs mct", -"ANSI931_AES192MCT" => "fips_rngvs mct", -"ANSI931_AES256MCT" => "fips_rngvs mct", -"ANSI931_AES128VST" => "fips_rngvs vst", -"ANSI931_AES192VST" => "fips_rngvs vst", -"ANSI931_AES256VST" => "fips_rngvs vst", - -# RSA tests - -"SigGen15" => "fips_rsastest", -"SigVer15" => "fips_rsavtest", -"SigGenPSS" => "fips_rsastest -saltlen SALT", -"SigVerPSS" => "fips_rsavtest -saltlen SALT", -"SigGenRSA" => "fips_rsastest -x931", -"SigVerRSA" => "fips_rsavtest -x931", -"KeyGenRSA" => "fips_rsagtest", - -# AES tests - -"CBCGFSbox128" => "fips_aesavs -f", -"CBCGFSbox192" => "fips_aesavs -f", -"CBCGFSbox256" => "fips_aesavs -f", -"CBCKeySbox128" => "fips_aesavs -f", -"CBCKeySbox192" => "fips_aesavs -f", -"CBCKeySbox256" => "fips_aesavs -f", -"CBCMCT128" => "fips_aesavs -f", -"CBCMCT192" => "fips_aesavs -f", -"CBCMCT256" => "fips_aesavs -f", -"CBCMMT128" => "fips_aesavs -f", -"CBCMMT192" => "fips_aesavs -f", -"CBCMMT256" => "fips_aesavs -f", -"CBCVarKey128" => "fips_aesavs -f", -"CBCVarKey192" => "fips_aesavs -f", -"CBCVarKey256" => "fips_aesavs -f", -"CBCVarTxt128" => "fips_aesavs -f", -"CBCVarTxt192" => "fips_aesavs -f", -"CBCVarTxt256" => "fips_aesavs -f", -"CFB128GFSbox128" => "fips_aesavs -f", -"CFB128GFSbox192" => "fips_aesavs -f", -"CFB128GFSbox256" => "fips_aesavs -f", -"CFB128KeySbox128" => "fips_aesavs -f", -"CFB128KeySbox192" => "fips_aesavs -f", -"CFB128KeySbox256" => "fips_aesavs -f", -"CFB128MCT128" => "fips_aesavs -f", -"CFB128MCT192" => "fips_aesavs -f", -"CFB128MCT256" => "fips_aesavs -f", -"CFB128MMT128" => "fips_aesavs -f", -"CFB128MMT192" => "fips_aesavs -f", -"CFB128MMT256" => "fips_aesavs -f", -"CFB128VarKey128" => "fips_aesavs -f", -"CFB128VarKey192" => "fips_aesavs -f", -"CFB128VarKey256" => "fips_aesavs -f", -"CFB128VarTxt128" => "fips_aesavs -f", -"CFB128VarTxt192" => "fips_aesavs -f", -"CFB128VarTxt256" => "fips_aesavs -f", -"CFB8GFSbox128" => "fips_aesavs -f", -"CFB8GFSbox192" => "fips_aesavs -f", -"CFB8GFSbox256" => "fips_aesavs -f", -"CFB8KeySbox128" => "fips_aesavs -f", -"CFB8KeySbox192" => "fips_aesavs -f", -"CFB8KeySbox256" => "fips_aesavs -f", -"CFB8MCT128" => "fips_aesavs -f", -"CFB8MCT192" => "fips_aesavs -f", -"CFB8MCT256" => "fips_aesavs -f", -"CFB8MMT128" => "fips_aesavs -f", -"CFB8MMT192" => "fips_aesavs -f", -"CFB8MMT256" => "fips_aesavs -f", -"CFB8VarKey128" => "fips_aesavs -f", -"CFB8VarKey192" => "fips_aesavs -f", -"CFB8VarKey256" => "fips_aesavs -f", -"CFB8VarTxt128" => "fips_aesavs -f", -"CFB8VarTxt192" => "fips_aesavs -f", -"CFB8VarTxt256" => "fips_aesavs -f", -#"CFB1GFSbox128" => "fips_aesavs -f", -#"CFB1GFSbox192" => "fips_aesavs -f", -#"CFB1GFSbox256" => "fips_aesavs -f", -#"CFB1KeySbox128" => "fips_aesavs -f", -#"CFB1KeySbox192" => "fips_aesavs -f", -#"CFB1KeySbox256" => "fips_aesavs -f", -#"CFB1MCT128" => "fips_aesavs -f", -#"CFB1MCT192" => "fips_aesavs -f", -#"CFB1MCT256" => "fips_aesavs -f", -#"CFB1MMT128" => "fips_aesavs -f", -#"CFB1MMT192" => "fips_aesavs -f", -#"CFB1MMT256" => "fips_aesavs -f", -#"CFB1VarKey128" => "fips_aesavs -f", -#"CFB1VarKey192" => "fips_aesavs -f", -#"CFB1VarKey256" => "fips_aesavs -f", -#"CFB1VarTxt128" => "fips_aesavs -f", -#"CFB1VarTxt192" => "fips_aesavs -f", -#"CFB1VarTxt256" => "fips_aesavs -f", -"ECBGFSbox128" => "fips_aesavs -f", -"ECBGFSbox192" => "fips_aesavs -f", -"ECBGFSbox256" => "fips_aesavs -f", -"ECBKeySbox128" => "fips_aesavs -f", -"ECBKeySbox192" => "fips_aesavs -f", -"ECBKeySbox256" => "fips_aesavs -f", -"ECBMCT128" => "fips_aesavs -f", -"ECBMCT192" => "fips_aesavs -f", -"ECBMCT256" => "fips_aesavs -f", -"ECBMMT128" => "fips_aesavs -f", -"ECBMMT192" => "fips_aesavs -f", -"ECBMMT256" => "fips_aesavs -f", -"ECBVarKey128" => "fips_aesavs -f", -"ECBVarKey192" => "fips_aesavs -f", -"ECBVarKey256" => "fips_aesavs -f", -"ECBVarTxt128" => "fips_aesavs -f", -"ECBVarTxt192" => "fips_aesavs -f", -"ECBVarTxt256" => "fips_aesavs -f", -"OFBGFSbox128" => "fips_aesavs -f", -"OFBGFSbox192" => "fips_aesavs -f", -"OFBGFSbox256" => "fips_aesavs -f", -"OFBKeySbox128" => "fips_aesavs -f", -"OFBKeySbox192" => "fips_aesavs -f", -"OFBKeySbox256" => "fips_aesavs -f", -"OFBMCT128" => "fips_aesavs -f", -"OFBMCT192" => "fips_aesavs -f", -"OFBMCT256" => "fips_aesavs -f", -"OFBMMT128" => "fips_aesavs -f", -"OFBMMT192" => "fips_aesavs -f", -"OFBMMT256" => "fips_aesavs -f", -"OFBVarKey128" => "fips_aesavs -f", -"OFBVarKey192" => "fips_aesavs -f", -"OFBVarKey256" => "fips_aesavs -f", -"OFBVarTxt128" => "fips_aesavs -f", -"OFBVarTxt192" => "fips_aesavs -f", -"OFBVarTxt256" => "fips_aesavs -f", - -# Triple DES tests - -"TCBCinvperm" => "fips_desmovs -f", -"TCBCMMT1" => "fips_desmovs -f", -"TCBCMMT2" => "fips_desmovs -f", -"TCBCMMT3" => "fips_desmovs -f", -"TCBCMonte1" => "fips_desmovs -f", -"TCBCMonte2" => "fips_desmovs -f", -"TCBCMonte3" => "fips_desmovs -f", -"TCBCpermop" => "fips_desmovs -f", -"TCBCsubtab" => "fips_desmovs -f", -"TCBCvarkey" => "fips_desmovs -f", -"TCBCvartext" => "fips_desmovs -f", -"TCFB64invperm" => "fips_desmovs -f", -"TCFB64MMT1" => "fips_desmovs -f", -"TCFB64MMT2" => "fips_desmovs -f", -"TCFB64MMT3" => "fips_desmovs -f", -"TCFB64Monte1" => "fips_desmovs -f", -"TCFB64Monte2" => "fips_desmovs -f", -"TCFB64Monte3" => "fips_desmovs -f", -"TCFB64permop" => "fips_desmovs -f", -"TCFB64subtab" => "fips_desmovs -f", -"TCFB64varkey" => "fips_desmovs -f", -"TCFB64vartext" => "fips_desmovs -f", -"TCFB8invperm" => "fips_desmovs -f", -"TCFB8MMT1" => "fips_desmovs -f", -"TCFB8MMT2" => "fips_desmovs -f", -"TCFB8MMT3" => "fips_desmovs -f", -"TCFB8Monte1" => "fips_desmovs -f", -"TCFB8Monte2" => "fips_desmovs -f", -"TCFB8Monte3" => "fips_desmovs -f", -"TCFB8permop" => "fips_desmovs -f", -"TCFB8subtab" => "fips_desmovs -f", -"TCFB8varkey" => "fips_desmovs -f", -"TCFB8vartext" => "fips_desmovs -f", -"TECBinvperm" => "fips_desmovs -f", -"TECBMMT1" => "fips_desmovs -f", -"TECBMMT2" => "fips_desmovs -f", -"TECBMMT3" => "fips_desmovs -f", -"TECBMonte1" => "fips_desmovs -f", -"TECBMonte2" => "fips_desmovs -f", -"TECBMonte3" => "fips_desmovs -f", -"TECBpermop" => "fips_desmovs -f", -"TECBsubtab" => "fips_desmovs -f", -"TECBvarkey" => "fips_desmovs -f", -"TECBvartext" => "fips_desmovs -f", -"TOFBinvperm" => "fips_desmovs -f", -"TOFBMMT1" => "fips_desmovs -f", -"TOFBMMT2" => "fips_desmovs -f", -"TOFBMMT3" => "fips_desmovs -f", -"TOFBMonte1" => "fips_desmovs -f", -"TOFBMonte2" => "fips_desmovs -f", -"TOFBMonte3" => "fips_desmovs -f", -"TOFBpermop" => "fips_desmovs -f", -"TOFBsubtab" => "fips_desmovs -f", -"TOFBvarkey" => "fips_desmovs -f", -"TOFBvartext" => "fips_desmovs -f", -"TCBCinvperm" => "fips_desmovs -f", -"TCBCMMT1" => "fips_desmovs -f", -"TCBCMMT2" => "fips_desmovs -f", -"TCBCMMT3" => "fips_desmovs -f", -"TCBCMonte1" => "fips_desmovs -f", -"TCBCMonte2" => "fips_desmovs -f", -"TCBCMonte3" => "fips_desmovs -f", -"TCBCpermop" => "fips_desmovs -f", -"TCBCsubtab" => "fips_desmovs -f", -"TCBCvarkey" => "fips_desmovs -f", -"TCBCvartext" => "fips_desmovs -f", -"TCFB64invperm" => "fips_desmovs -f", -"TCFB64MMT1" => "fips_desmovs -f", -"TCFB64MMT2" => "fips_desmovs -f", -"TCFB64MMT3" => "fips_desmovs -f", -"TCFB64Monte1" => "fips_desmovs -f", -"TCFB64Monte2" => "fips_desmovs -f", -"TCFB64Monte3" => "fips_desmovs -f", -"TCFB64permop" => "fips_desmovs -f", -"TCFB64subtab" => "fips_desmovs -f", -"TCFB64varkey" => "fips_desmovs -f", -"TCFB64vartext" => "fips_desmovs -f", -"TCFB8invperm" => "fips_desmovs -f", -"TCFB8MMT1" => "fips_desmovs -f", -"TCFB8MMT2" => "fips_desmovs -f", -"TCFB8MMT3" => "fips_desmovs -f", -"TCFB8Monte1" => "fips_desmovs -f", -"TCFB8Monte2" => "fips_desmovs -f", -"TCFB8Monte3" => "fips_desmovs -f", -"TCFB8permop" => "fips_desmovs -f", -"TCFB8subtab" => "fips_desmovs -f", -"TCFB8varkey" => "fips_desmovs -f", -"TCFB8vartext" => "fips_desmovs -f", -"TECBinvperm" => "fips_desmovs -f", -"TECBMMT1" => "fips_desmovs -f", -"TECBMMT2" => "fips_desmovs -f", -"TECBMMT3" => "fips_desmovs -f", -"TECBMonte1" => "fips_desmovs -f", -"TECBMonte2" => "fips_desmovs -f", -"TECBMonte3" => "fips_desmovs -f", -"TECBpermop" => "fips_desmovs -f", -"TECBsubtab" => "fips_desmovs -f", -"TECBvarkey" => "fips_desmovs -f", -"TECBvartext" => "fips_desmovs -f", -"TOFBinvperm" => "fips_desmovs -f", -"TOFBMMT1" => "fips_desmovs -f", -"TOFBMMT2" => "fips_desmovs -f", -"TOFBMMT3" => "fips_desmovs -f", -"TOFBMonte1" => "fips_desmovs -f", -"TOFBMonte2" => "fips_desmovs -f", -"TOFBMonte3" => "fips_desmovs -f", -"TOFBpermop" => "fips_desmovs -f", -"TOFBsubtab" => "fips_desmovs -f", -"TOFBvarkey" => "fips_desmovs -f", -"TOFBvartext" => "fips_desmovs -f" - -); -my %salt_names = ( -"SigVerPSS (salt 0)" => "SigVerPSS", -"SigVerPSS (salt 62)" => "SigVerPSS", -"SigGenPSS (salt 0)" => "SigGenPSS", -"SigGenPSS (salt 62)" => "SigGenPSS", -); - - -my $win32 = $^O =~ m/mswin/i; -my $onedir = 0; -my $filter = ""; -my $tvdir; -my $tprefix; -my $shwrap_prefix; -my $shwrap; -my $rmcmd = "rm -rf"; -my $mkcmd = "mkdir"; -my $debug = 0; -my $quiet = 0; -my $rspdir = "rsp"; -my $rspignore = 0; -my @bogus = (); # list of unmatched *.rsp files -my $bufout = ''; -my $bufdir = ''; -my %_programs = (); # list of external programs to check - -foreach (@ARGV) - { - if ($_ eq "--win32") - { - $win32 = 1; - } - elsif ($_ eq "--onedir") - { - $onedir = 1; - } - elsif ($_ eq "--debug") - { - $debug = 1; - } - elsif ($_ eq "--quiet") - { - $quiet = 1; - } - elsif (/--dir=(.*)$/) - { - $tvdir = $1; - } - elsif (/--rspdir=(.*)$/) - { - $rspdir = $1; - } - elsif (/--noshwrap$/) - { - $shwrap = ""; - } - elsif (/--rspignore$/) - { - $rspignore = 1; - } - elsif (/--tprefix=(.*)$/) - { - $tprefix = $1; - } - elsif (/--shwrap_prefix=(.*)$/) - { - $shwrap_prefix = $1; - } - elsif (/--filter=(.*)$/) - { - $filter = $1; - } - elsif (/--mkdir=(.*)$/) - { - $mkcmd = $1; - } - elsif (/--rm=(.*)$/) - { - $rmcmd = $1; - } - elsif (/--outfile=(.*)$/) - { - $outfile = $1; - } - else - { - &Help(); - exit(1); - } - } - -$tvdir = "." unless defined $tvdir; - -if ($win32) - { - if (!defined $tprefix) - { - if ($onedir) - { - $tprefix = ".\\"; - } - else - { - $tprefix = "..\\out32dll\\"; - } - } - - $bufinit .= <$outfile") || die "Error opening $outfile: $!"; - print OUT $bufinit; - if (!$rspignore && @bogus) - { - print STDERR "ERROR: please remove bogus *.rsp files\n"; - print OUT < Optional root for *.req file search - --filter= - --onedir Assume all components in current directory - --outfile= Optional name of output script, default fipstests.{sh|bat} - --rspdir= Name of subdirectories containing *.rsp files, default "resp" - --rspignore Ignore any bogus *.rsp files - --shwrap_prefix= - --tprefix= - --quiet Shhh.... - --win32 Generate script for Win32 environment -EOF -} - -#-------------------------------- -sub countentry { - my ($key,$value) = @_; - if ($value == 0) - { - print STDERR "WARNING: test file $key not found\n" unless $quiet; - } - elsif ($value > 1) - { - print STDERR "WARNING: test file $key found $value times\n" unless $quiet; - } - else - { - print STDERR "Found test file $key\n" if $debug; - } - } - -#-------------------------------- -sub recurse_test - { - my ($win32, $tprefix, $filter, $dir) = @_; - my $dirh; - opendir($dirh, $dir); - while ($_ = readdir($dirh)) - { - next if ($_ eq "." || $_ eq ".."); - $_ = "$dir/$_"; - if (-f "$_") - { - if (/\/([^\/]*)\.rsp$/) - { - if (exists $fips_tests{$1}) - { - $debug && print "DEBUG: $1 found, will be overwritten\n"; - } - else - { - print STDERR "ERROR: bogus file $_\n"; - push @bogus, $_; - } - } - next unless /$filter.*\.req$/i; - if (/\/([^\/]*)\.req$/ && exists $fips_tests{$1}) - { - $fips_found{$1}++; - test_line($win32, $_, $tprefix, $1); - } - elsif (! /SHAmix\.req$/) - { - print STDERR "WARNING: unrecognized filename $_\n"; - } - } - elsif (-d "$_") - { - if (/$filter.*req$/i) - { - test_dir($win32, $_); - } - recurse_test($win32, $tprefix, $filter, $_); - } - } - closedir($dirh); - } - -#-------------------------------- -sub test_dir - { - my ($win32, $req) = @_; - my $rsp = $req; - $rsp =~ s/req$/$rspdir/; - if ($win32) - { - $rsp =~ tr|/|\\|; - $req =~ tr|/|\\|; - $bufdir = <) - { - if (/^\s*#\s*salt\s+len:\s+(\d+)\s*$/i) - { - my $sl = $1; - print STDERR "$req salt length $sl\n" if $debug; - $tcmd =~ s/SALT$/$sl/; - $salt_found{"$tnam (salt $sl)"}++; - last; - } - } - close IN; - if ($tcmd =~ /SALT$/) - { - die "Can't detect salt length for $req"; - } - } - - if ($win32) - { - $req =~ tr|/|\\|; - $rsp =~ tr|/|\\|; - $bufout .= "$tprefix$tcmd < \"$req\" > \"$rsp\"\n"; - $_programs{"$tprefix$tcmd.exe"} = 1; - } - else - { - $bufout .= < "$rsp" || { echo "$req failure" ; exit 1; } -END - $_programs{"$tprefix$tcmd"} = 1; - } - } - diff --git a/fips/rand/Makefile b/fips/rand/Makefile deleted file mode 100644 index 61ed391271..0000000000 --- a/fips/rand/Makefile +++ /dev/null @@ -1,279 +0,0 @@ -# -# OpenSSL/fips/rand/Makefile -# - -DIR= rand -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST= fips_randtest.c fips_rngvs.c fips_drbgvs.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= fips_rand.c fips_rand_selftest.c fips_drbg_lib.c \ - fips_drbg_hash.c fips_drbg_hmac.c fips_drbg_ctr.c fips_drbg_ec.c \ - fips_drbg_selftest.c fips_drbg_rand.c fips_rand_lib.c -LIBOBJ= fips_rand.o fips_rand_selftest.o fips_drbg_lib.o \ - fips_drbg_hash.o fips_drbg_hmac.o fips_drbg_ctr.o fips_drbg_ec.o \ - fips_drbg_selftest.o fips_drbg_rand.o fips_rand_lib.o - -SRC= $(LIBSRC) - -EXHEADER= fips_rand.h -HEADER= $(EXHEADER) fips_rand_lcl.h fips_drbg_selftest.h - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips SDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -Q=../testvectors/rng/req -A=../testvectors/rng/rsp - -fips_test: - -rm -rf $(A) - mkdir $(A) - if [ -f $(Q)/ANSI931_AES128MCT.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs mct < $(Q)/ANSI931_AES128MCT.req > $(A)/ANSI931_AES128MCT.rsp; fi - if [ -f $(Q)/ANSI931_AES192MCT.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs mct < $(Q)/ANSI931_AES192MCT.req > $(A)/ANSI931_AES192MCT.rsp; fi - if [ -f $(Q)/ANSI931_AES256MCT.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs mct < $(Q)/ANSI931_AES256MCT.req > $(A)/ANSI931_AES256MCT.rsp; fi - if [ -f $(Q)/ANSI931_AES128VST.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs vst < $(Q)/ANSI931_AES128VST.req > $(A)/ANSI931_AES128VST.rsp; fi - if [ -f $(Q)/ANSI931_AES192VST.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs vst < $(Q)/ANSI931_AES192VST.req > $(A)/ANSI931_AES192VST.rsp; fi - if [ -f $(Q)/ANSI931_AES256VST.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs vst < $(Q)/ANSI931_AES256VST.req > $(A)/ANSI931_AES256VST.rsp; fi - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_drbg_ctr.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_drbg_ctr.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h -fips_drbg_ctr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_drbg_ctr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_drbg_ctr.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_drbg_ctr.o: ../../include/openssl/obj_mac.h -fips_drbg_ctr.o: ../../include/openssl/objects.h -fips_drbg_ctr.o: ../../include/openssl/opensslconf.h -fips_drbg_ctr.o: ../../include/openssl/opensslv.h -fips_drbg_ctr.o: ../../include/openssl/ossl_typ.h -fips_drbg_ctr.o: ../../include/openssl/safestack.h -fips_drbg_ctr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_drbg_ctr.o: fips_drbg_ctr.c fips_rand_lcl.h -fips_drbg_ec.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_drbg_ec.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_drbg_ec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_drbg_ec.o: ../../include/openssl/ec.h ../../include/openssl/evp.h -fips_drbg_ec.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_drbg_ec.o: ../../include/openssl/hmac.h ../../include/openssl/obj_mac.h -fips_drbg_ec.o: ../../include/openssl/objects.h -fips_drbg_ec.o: ../../include/openssl/opensslconf.h -fips_drbg_ec.o: ../../include/openssl/opensslv.h -fips_drbg_ec.o: ../../include/openssl/ossl_typ.h -fips_drbg_ec.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_drbg_ec.o: ../../include/openssl/symhacks.h fips_drbg_ec.c fips_rand_lcl.h -fips_drbg_hash.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_drbg_hash.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h -fips_drbg_hash.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_drbg_hash.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_drbg_hash.o: ../../include/openssl/fips_rand.h -fips_drbg_hash.o: ../../include/openssl/hmac.h ../../include/openssl/obj_mac.h -fips_drbg_hash.o: ../../include/openssl/objects.h -fips_drbg_hash.o: ../../include/openssl/opensslconf.h -fips_drbg_hash.o: ../../include/openssl/opensslv.h -fips_drbg_hash.o: ../../include/openssl/ossl_typ.h -fips_drbg_hash.o: ../../include/openssl/safestack.h -fips_drbg_hash.o: ../../include/openssl/stack.h -fips_drbg_hash.o: ../../include/openssl/symhacks.h fips_drbg_hash.c -fips_drbg_hash.o: fips_rand_lcl.h -fips_drbg_hmac.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_drbg_hmac.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h -fips_drbg_hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_drbg_hmac.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_drbg_hmac.o: ../../include/openssl/fips_rand.h -fips_drbg_hmac.o: ../../include/openssl/hmac.h ../../include/openssl/obj_mac.h -fips_drbg_hmac.o: ../../include/openssl/objects.h -fips_drbg_hmac.o: ../../include/openssl/opensslconf.h -fips_drbg_hmac.o: ../../include/openssl/opensslv.h -fips_drbg_hmac.o: ../../include/openssl/ossl_typ.h -fips_drbg_hmac.o: ../../include/openssl/safestack.h -fips_drbg_hmac.o: ../../include/openssl/stack.h -fips_drbg_hmac.o: ../../include/openssl/symhacks.h fips_drbg_hmac.c -fips_drbg_hmac.o: fips_rand_lcl.h -fips_drbg_lib.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_drbg_lib.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h -fips_drbg_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_drbg_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_drbg_lib.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_drbg_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_drbg_lib.o: ../../include/openssl/objects.h -fips_drbg_lib.o: ../../include/openssl/opensslconf.h -fips_drbg_lib.o: ../../include/openssl/opensslv.h -fips_drbg_lib.o: ../../include/openssl/ossl_typ.h -fips_drbg_lib.o: ../../include/openssl/safestack.h -fips_drbg_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_drbg_lib.o: fips_drbg_lib.c fips_rand_lcl.h -fips_drbg_rand.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_drbg_rand.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h -fips_drbg_rand.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_drbg_rand.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_drbg_rand.o: ../../include/openssl/fips_rand.h -fips_drbg_rand.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_drbg_rand.o: ../../include/openssl/obj_mac.h -fips_drbg_rand.o: ../../include/openssl/objects.h -fips_drbg_rand.o: ../../include/openssl/opensslconf.h -fips_drbg_rand.o: ../../include/openssl/opensslv.h -fips_drbg_rand.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h -fips_drbg_rand.o: ../../include/openssl/safestack.h -fips_drbg_rand.o: ../../include/openssl/stack.h -fips_drbg_rand.o: ../../include/openssl/symhacks.h fips_drbg_rand.c -fips_drbg_rand.o: fips_rand_lcl.h -fips_drbg_selftest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_drbg_selftest.o: ../../include/openssl/bio.h -fips_drbg_selftest.o: ../../include/openssl/crypto.h -fips_drbg_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_drbg_selftest.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_drbg_selftest.o: ../../include/openssl/fips_rand.h -fips_drbg_selftest.o: ../../include/openssl/hmac.h -fips_drbg_selftest.o: ../../include/openssl/lhash.h -fips_drbg_selftest.o: ../../include/openssl/obj_mac.h -fips_drbg_selftest.o: ../../include/openssl/objects.h -fips_drbg_selftest.o: ../../include/openssl/opensslconf.h -fips_drbg_selftest.o: ../../include/openssl/opensslv.h -fips_drbg_selftest.o: ../../include/openssl/ossl_typ.h -fips_drbg_selftest.o: ../../include/openssl/safestack.h -fips_drbg_selftest.o: ../../include/openssl/stack.h -fips_drbg_selftest.o: ../../include/openssl/symhacks.h ../fips_locl.h -fips_drbg_selftest.o: fips_drbg_selftest.c fips_drbg_selftest.h fips_rand_lcl.h -fips_drbgvs.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_drbgvs.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_drbgvs.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h -fips_drbgvs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_drbgvs.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_drbgvs.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_drbgvs.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_drbgvs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_drbgvs.o: ../../include/openssl/opensslconf.h -fips_drbgvs.o: ../../include/openssl/opensslv.h -fips_drbgvs.o: ../../include/openssl/ossl_typ.h -fips_drbgvs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_drbgvs.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_drbgvs.c -fips_rand.o: ../../e_os.h ../../include/openssl/aes.h -fips_rand.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_rand.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_rand.o: ../../include/openssl/ec.h ../../include/openssl/err.h -fips_rand.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_rand.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_rand.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_rand.o: ../../include/openssl/objects.h -fips_rand.o: ../../include/openssl/opensslconf.h -fips_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h -fips_rand.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h -fips_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_rand.o: ../fips_locl.h fips_rand.c -fips_rand_lib.o: ../../e_os.h ../../include/openssl/aes.h -fips_rand_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_rand_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_rand_lib.o: ../../include/openssl/ec.h ../../include/openssl/err.h -fips_rand_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_rand_lib.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_rand_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_rand_lib.o: ../../include/openssl/objects.h -fips_rand_lib.o: ../../include/openssl/opensslconf.h -fips_rand_lib.o: ../../include/openssl/opensslv.h -fips_rand_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h -fips_rand_lib.o: ../../include/openssl/safestack.h -fips_rand_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_rand_lib.o: fips_rand_lib.c -fips_rand_selftest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_rand_selftest.o: ../../include/openssl/bio.h -fips_rand_selftest.o: ../../include/openssl/crypto.h -fips_rand_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_rand_selftest.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_rand_selftest.o: ../../include/openssl/fips.h -fips_rand_selftest.o: ../../include/openssl/fips_rand.h -fips_rand_selftest.o: ../../include/openssl/hmac.h -fips_rand_selftest.o: ../../include/openssl/lhash.h -fips_rand_selftest.o: ../../include/openssl/obj_mac.h -fips_rand_selftest.o: ../../include/openssl/objects.h -fips_rand_selftest.o: ../../include/openssl/opensslconf.h -fips_rand_selftest.o: ../../include/openssl/opensslv.h -fips_rand_selftest.o: ../../include/openssl/ossl_typ.h -fips_rand_selftest.o: ../../include/openssl/rand.h -fips_rand_selftest.o: ../../include/openssl/safestack.h -fips_rand_selftest.o: ../../include/openssl/stack.h -fips_rand_selftest.o: ../../include/openssl/symhacks.h ../fips_locl.h -fips_rand_selftest.o: fips_rand_selftest.c -fips_randtest.o: ../../e_os.h ../../include/openssl/aes.h -fips_randtest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_randtest.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_randtest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_randtest.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_randtest.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_randtest.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_randtest.o: ../../include/openssl/obj_mac.h -fips_randtest.o: ../../include/openssl/objects.h -fips_randtest.o: ../../include/openssl/opensslconf.h -fips_randtest.o: ../../include/openssl/opensslv.h -fips_randtest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h -fips_randtest.o: ../../include/openssl/safestack.h -fips_randtest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_randtest.o: ../fips_utl.h fips_randtest.c -fips_rngvs.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_rngvs.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_rngvs.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h -fips_rngvs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -fips_rngvs.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_rngvs.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h -fips_rngvs.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h -fips_rngvs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_rngvs.o: ../../include/openssl/opensslconf.h -fips_rngvs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h -fips_rngvs.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h -fips_rngvs.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_rngvs.o: ../fips_utl.h fips_rngvs.c diff --git a/fips/rand/fips_drbg_ctr.c b/fips/rand/fips_drbg_ctr.c deleted file mode 100644 index 4483681f63..0000000000 --- a/fips/rand/fips_drbg_ctr.c +++ /dev/null @@ -1,436 +0,0 @@ -/* fips/rand/fips_drbg_ctr.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -#include -#include -#include -#include -#include -#include "fips_rand_lcl.h" - -static void inc_128(DRBG_CTR_CTX *cctx) - { - int i; - unsigned char c; - unsigned char *p = cctx->V + 15; - for (i = 0; i < 16; i++) - { - c = *p; - c++; - *p = c; - if (c) - return; - p--; - } - } - -static void ctr_XOR(DRBG_CTR_CTX *cctx, const unsigned char *in, size_t inlen) - { - size_t i, n; - /* Any zero padding will have no effect on the result as we - * are XORing. So just process however much input we have. - */ - - if (!in || !inlen) - return; - - if (inlen < cctx->keylen) - n = inlen; - else - n = cctx->keylen; - - for (i = 0; i < n; i++) - cctx->K[i] ^= in[i]; - if (inlen <= cctx->keylen) - return; - - n = inlen - cctx->keylen; - /* Should never happen */ - if (n > 16) - n = 16; - for (i = 0; i < 16; i++) - cctx->V[i] ^= in[i + cctx->keylen]; - } - -/* Process a complete block using BCC algorithm of SPP 800-90 10.4.3 */ - -static void ctr_BCC_block(DRBG_CTR_CTX *cctx, unsigned char *out, - const unsigned char *in) - { - int i; - for (i = 0; i < 16; i++) - out[i] ^= in[i]; - AES_encrypt(out, out, &cctx->df_ks); -#if 0 -fprintf(stderr, "BCC in+out\n"); -BIO_dump_fp(stderr, in, 16); -BIO_dump_fp(stderr, out, 16); -#endif - } - -/* Handle several BCC operations for as much data as we need for K and X */ -static void ctr_BCC_blocks(DRBG_CTR_CTX *cctx, const unsigned char *in) - { - ctr_BCC_block(cctx, cctx->KX, in); - ctr_BCC_block(cctx, cctx->KX + 16, in); - if (cctx->keylen != 16) - ctr_BCC_block(cctx, cctx->KX + 32, in); - } -/* Initialise BCC blocks: these have the value 0,1,2 in leftmost positions: - * see 10.4.2 stage 7. - */ -static void ctr_BCC_init(DRBG_CTR_CTX *cctx) - { - memset(cctx->KX, 0, 48); - memset(cctx->bltmp, 0, 16); - ctr_BCC_block(cctx, cctx->KX, cctx->bltmp); - cctx->bltmp[3] = 1; - ctr_BCC_block(cctx, cctx->KX + 16, cctx->bltmp); - if (cctx->keylen != 16) - { - cctx->bltmp[3] = 2; - ctr_BCC_block(cctx, cctx->KX + 32, cctx->bltmp); - } - } - -/* Process several blocks into BCC algorithm, some possibly partial */ -static void ctr_BCC_update(DRBG_CTR_CTX *cctx, - const unsigned char *in, size_t inlen) - { - if (!in || !inlen) - return; - /* If we have partial block handle it first */ - if (cctx->bltmp_pos) - { - size_t left = 16 - cctx->bltmp_pos; - /* If we now have a complete block process it */ - if (inlen >= left) - { - memcpy(cctx->bltmp + cctx->bltmp_pos, in, left); - ctr_BCC_blocks(cctx, cctx->bltmp); - cctx->bltmp_pos = 0; - inlen -= left; - in += left; - } - } - /* Process zero or more complete blocks */ - while (inlen >= 16) - { - ctr_BCC_blocks(cctx, in); - in += 16; - inlen -= 16; - } - /* Copy any remaining partial block to the temporary buffer */ - if (inlen > 0) - { - memcpy(cctx->bltmp + cctx->bltmp_pos, in, inlen); - cctx->bltmp_pos += inlen; - } - } - -static void ctr_BCC_final(DRBG_CTR_CTX *cctx) - { - if (cctx->bltmp_pos) - { - memset(cctx->bltmp + cctx->bltmp_pos, 0, 16 - cctx->bltmp_pos); - ctr_BCC_blocks(cctx, cctx->bltmp); - } - } - -static void ctr_df(DRBG_CTR_CTX *cctx, - const unsigned char *in1, size_t in1len, - const unsigned char *in2, size_t in2len, - const unsigned char *in3, size_t in3len) - { - size_t inlen; - unsigned char *p = cctx->bltmp; - static unsigned char c80 = 0x80; - - ctr_BCC_init(cctx); - if (!in1) - in1len = 0; - if (!in2) - in2len = 0; - if (!in3) - in3len = 0; - inlen = in1len + in2len + in3len; - /* Initialise L||N in temporary block */ - *p++ = (inlen >> 24) & 0xff; - *p++ = (inlen >> 16) & 0xff; - *p++ = (inlen >> 8) & 0xff; - *p++ = inlen & 0xff; - /* NB keylen is at most 32 bytes */ - *p++ = 0; - *p++ = 0; - *p++ = 0; - *p = (unsigned char)((cctx->keylen + 16) & 0xff); - cctx->bltmp_pos = 8; - ctr_BCC_update(cctx, in1, in1len); - ctr_BCC_update(cctx, in2, in2len); - ctr_BCC_update(cctx, in3, in3len); - ctr_BCC_update(cctx, &c80, 1); - ctr_BCC_final(cctx); - /* Set up key K */ - AES_set_encrypt_key(cctx->KX, cctx->keylen * 8, &cctx->df_kxks); - /* X follows key K */ - AES_encrypt(cctx->KX + cctx->keylen, cctx->KX, &cctx->df_kxks); - AES_encrypt(cctx->KX, cctx->KX + 16, &cctx->df_kxks); - if (cctx->keylen != 16) - AES_encrypt(cctx->KX + 16, cctx->KX + 32, &cctx->df_kxks); -#if 0 -fprintf(stderr, "Output of ctr_df:\n"); -BIO_dump_fp(stderr, cctx->KX, cctx->keylen + 16); -#endif - } - -/* NB the no-df Update in SP800-90 specifies a constant input length - * of seedlen, however other uses of this algorithm pad the input with - * zeroes if necessary and have up to two parameters XORed together, - * handle both cases in this function instead. - */ - -static void ctr_Update(DRBG_CTX *dctx, - const unsigned char *in1, size_t in1len, - const unsigned char *in2, size_t in2len, - const unsigned char *nonce, size_t noncelen) - { - DRBG_CTR_CTX *cctx = &dctx->d.ctr; - /* ks is already setup for correct key */ - inc_128(cctx); - AES_encrypt(cctx->V, cctx->K, &cctx->ks); - /* If keylen longer than 128 bits need extra encrypt */ - if (cctx->keylen != 16) - { - inc_128(cctx); - AES_encrypt(cctx->V, cctx->K + 16, &cctx->ks); - } - inc_128(cctx); - AES_encrypt(cctx->V, cctx->V, &cctx->ks); - /* If 192 bit key part of V is on end of K */ - if (cctx->keylen == 24) - { - memcpy(cctx->V + 8, cctx->V, 8); - memcpy(cctx->V, cctx->K + 24, 8); - } - - if (dctx->xflags & DRBG_FLAG_CTR_USE_DF) - { - /* If no input reuse existing derived value */ - if (in1 || nonce || in2) - ctr_df(cctx, in1, in1len, nonce, noncelen, in2, in2len); - /* If this a reuse input in1len != 0 */ - if (in1len) - ctr_XOR(cctx, cctx->KX, dctx->seedlen); - } - else - { - ctr_XOR(cctx, in1, in1len); - ctr_XOR(cctx, in2, in2len); - } - - AES_set_encrypt_key(cctx->K, dctx->strength, &cctx->ks); -#if 0 -fprintf(stderr, "K+V after update is:\n"); -BIO_dump_fp(stderr, cctx->K, cctx->keylen); -BIO_dump_fp(stderr, cctx->V, 16); -#endif - } - -static int drbg_ctr_instantiate(DRBG_CTX *dctx, - const unsigned char *ent, size_t entlen, - const unsigned char *nonce, size_t noncelen, - const unsigned char *pers, size_t perslen) - { - DRBG_CTR_CTX *cctx = &dctx->d.ctr; - memset(cctx->K, 0, sizeof(cctx->K)); - memset(cctx->V, 0, sizeof(cctx->V)); - AES_set_encrypt_key(cctx->K, dctx->strength, &cctx->ks); - ctr_Update(dctx, ent, entlen, pers, perslen, nonce, noncelen); - return 1; - } - -static int drbg_ctr_reseed(DRBG_CTX *dctx, - const unsigned char *ent, size_t entlen, - const unsigned char *adin, size_t adinlen) - { - ctr_Update(dctx, ent, entlen, adin, adinlen, NULL, 0); - return 1; - } - -static int drbg_ctr_generate(DRBG_CTX *dctx, - unsigned char *out, size_t outlen, - const unsigned char *adin, size_t adinlen) - { - DRBG_CTR_CTX *cctx = &dctx->d.ctr; - if (adin && adinlen) - { - ctr_Update(dctx, adin, adinlen, NULL, 0, NULL, 0); - /* This means we reuse derived value */ - if (dctx->xflags & DRBG_FLAG_CTR_USE_DF) - { - adin = NULL; - adinlen = 1; - } - } - else - adinlen = 0; - - for (;;) - { - inc_128(cctx); - if (!(dctx->xflags & DRBG_FLAG_TEST) && !dctx->lb_valid) - { - AES_encrypt(cctx->V, dctx->lb, &cctx->ks); - dctx->lb_valid = 1; - continue; - } - if (outlen < 16) - { - /* Use K as temp space as it will be updated */ - AES_encrypt(cctx->V, cctx->K, &cctx->ks); - if (!fips_drbg_cprng_test(dctx, cctx->K)) - return 0; - memcpy(out, cctx->K, outlen); - break; - } - AES_encrypt(cctx->V, out, &cctx->ks); - if (!fips_drbg_cprng_test(dctx, out)) - return 0; - out += 16; - outlen -= 16; - if (outlen == 0) - break; - } - - ctr_Update(dctx, adin, adinlen, NULL, 0, NULL, 0); - - return 1; - - } - -static int drbg_ctr_uninstantiate(DRBG_CTX *dctx) - { - memset(&dctx->d.ctr, 0, sizeof(DRBG_CTR_CTX)); - return 1; - } - -int fips_drbg_ctr_init(DRBG_CTX *dctx) - { - DRBG_CTR_CTX *cctx = &dctx->d.ctr; - - size_t keylen; - - switch (dctx->type) - { - case NID_aes_128_ctr: - keylen = 16; - break; - - case NID_aes_192_ctr: - keylen = 24; - break; - - case NID_aes_256_ctr: - keylen = 32; - break; - - default: - return -2; - } - - dctx->instantiate = drbg_ctr_instantiate; - dctx->reseed = drbg_ctr_reseed; - dctx->generate = drbg_ctr_generate; - dctx->uninstantiate = drbg_ctr_uninstantiate; - - cctx->keylen = keylen; - dctx->strength = keylen * 8; - dctx->blocklength = 16; - dctx->seedlen = keylen + 16; - - if (dctx->xflags & DRBG_FLAG_CTR_USE_DF) - { - /* df initialisation */ - static unsigned char df_key[32] = - { - 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, - 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, - 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f - }; - /* Set key schedule for df_key */ - AES_set_encrypt_key(df_key, dctx->strength, &cctx->df_ks); - - dctx->min_entropy = cctx->keylen; - dctx->max_entropy = DRBG_MAX_LENGTH; - dctx->min_nonce = dctx->min_entropy / 2; - dctx->max_nonce = DRBG_MAX_LENGTH; - dctx->max_pers = DRBG_MAX_LENGTH; - dctx->max_adin = DRBG_MAX_LENGTH; - } - else - { - dctx->min_entropy = dctx->seedlen; - dctx->max_entropy = dctx->seedlen; - /* Nonce not used */ - dctx->min_nonce = 0; - dctx->max_nonce = 0; - dctx->max_pers = dctx->seedlen; - dctx->max_adin = dctx->seedlen; - } - - dctx->max_request = 1<<16; - dctx->reseed_interval = 1<<24; - - return 1; - } diff --git a/fips/rand/fips_drbg_ec.c b/fips/rand/fips_drbg_ec.c deleted file mode 100644 index 6be6534ce7..0000000000 --- a/fips/rand/fips_drbg_ec.c +++ /dev/null @@ -1,542 +0,0 @@ -/* fips/rand/fips_drbg_ec.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include "fips_rand_lcl.h" - -/*#define EC_DRBG_TRACE*/ - -#ifdef EC_DRBG_TRACE -static void hexprint(FILE *out, const unsigned char *buf, int buflen) - { - int i; - fprintf(out, "\t"); - for (i = 0; i < buflen; i++) - fprintf(out, "%02X", buf[i]); - fprintf(out, "\n"); - } -static void bnprint(FILE *out, const char *name, const BIGNUM *b) - { - unsigned char *tmp; - int len; - len = BN_num_bytes(b); - tmp = OPENSSL_malloc(len); - BN_bn2bin(b, tmp); - fprintf(out, "%s\n", name); - hexprint(out, tmp, len); - OPENSSL_free(tmp); - } -#if 0 -static void ecprint(FILE *out, EC_GROUP *grp, EC_POINT *pt) - { - BIGNUM *x, *y; - x = BN_new(); - y = BN_new(); - EC_POINT_get_affine_coordinates_GFp(grp, pt, x, y, NULL); - bnprint(out, "\tPoint X: ", x); - bnprint(out, "\tPoint Y: ", y); - BN_free(x); - BN_free(y); - } -#endif -#endif - -/* This is Hash_df from SP 800-90 10.4.1 */ - -static int hash_df(DRBG_CTX *dctx, unsigned char *out, - const unsigned char *in1, size_t in1len, - const unsigned char *in2, size_t in2len, - const unsigned char *in3, size_t in3len) - { - DRBG_EC_CTX *ectx = &dctx->d.ec; - EVP_MD_CTX *mctx = &ectx->mctx; - unsigned char *vtmp = ectx->vtmp; - unsigned char tmp[6]; - size_t mdlen = M_EVP_MD_size(ectx->md); - /* Standard only ever needs seedlen bytes which is always less than - * maximum permitted so no need to check length. - */ - size_t outlen = dctx->seedlen; - size_t nbits = (outlen << 3) - ectx->exbits; - tmp[0] = 1; - tmp[1] = (nbits >> 24) & 0xff; - tmp[2] = (nbits >> 16) & 0xff; - tmp[3] = (nbits >> 8) & 0xff; - tmp[4] = nbits & 0xff; - if (!in1) - { - tmp[5] = (unsigned char)in1len; - in1 = tmp + 5; - in1len = 1; - } - for (;;) - { - if (!FIPS_digestinit(mctx, ectx->md)) - return 0; - if (!FIPS_digestupdate(mctx, tmp, 5)) - return 0; - if (in1 && !FIPS_digestupdate(mctx, in1, in1len)) - return 0; - if (in2 && !FIPS_digestupdate(mctx, in2, in2len)) - return 0; - if (in3 && !FIPS_digestupdate(mctx, in3, in3len)) - return 0; - if (outlen < mdlen) - { - if (!FIPS_digestfinal(mctx, vtmp, NULL)) - return 0; - memcpy(out, vtmp, outlen); - OPENSSL_cleanse(vtmp, mdlen); - return 1; - } - else if(!FIPS_digestfinal(mctx, out, NULL)) - return 0; - - outlen -= mdlen; - if (outlen == 0) - return 1; - tmp[0]++; - out += mdlen; - } - } - -static int bn2binpad(unsigned char *to, size_t tolen, BIGNUM *b) - { - size_t blen; - blen = BN_num_bytes(b); - /* If BIGNUM length greater than buffer, mask to get rightmost - * bytes. NB: modifies b but this doesn't matter for our purposes. - */ - if (blen > tolen) - { - BN_mask_bits(b, tolen << 3); - /* Update length because mask operation might create leading - * zeroes. - */ - blen = BN_num_bytes(b); - } - /* If b length smaller than buffer pad with zeroes */ - if (blen < tolen) - { - memset(to, 0, tolen - blen); - to += tolen - blen; - } - - /* This call cannot fail */ - BN_bn2bin(b, to); - return 1; - } -/* Convert buffer to a BIGNUM discarding extra bits if necessary */ -static int bin2bnbits(DRBG_CTX *dctx, BIGNUM *r, const unsigned char *buf) - { - DRBG_EC_CTX *ectx = &dctx->d.ec; - if (!BN_bin2bn(buf, dctx->seedlen, r)) - return 0; - /* If we have extra bits right shift off the end of r */ - if (ectx->exbits) - { - if (!BN_rshift(r, r, ectx->exbits)) - return 0; - } - return 1; - } - -/* Calculate r = phi(s * P) or r= phi(s * Q) */ - -static int drbg_ec_mul(DRBG_EC_CTX *ectx, BIGNUM *r, const BIGNUM *s, int use_q) - { - if (use_q) - { - if (!EC_POINT_mul(ectx->curve, ectx->ptmp, - NULL, ectx->Q, s, ectx->bctx)) - return 0; - } - else - { - if (!EC_POINT_mul(ectx->curve, ectx->ptmp, - s, NULL, NULL, ectx->bctx)) - return 0; - } - /* Get x coordinate of result */ - if (!EC_POINT_get_affine_coordinates_GFp(ectx->curve, ectx->ptmp, r, - NULL, ectx->bctx)) - return 0; - return 1; - } - -static int drbg_ec_instantiate(DRBG_CTX *dctx, - const unsigned char *ent, size_t ent_len, - const unsigned char *nonce, size_t nonce_len, - const unsigned char *pstr, size_t pstr_len) - { - DRBG_EC_CTX *ectx = &dctx->d.ec; - if (!hash_df(dctx, ectx->sbuf, - ent, ent_len, nonce, nonce_len, pstr, pstr_len)) - return 0; - if (!bin2bnbits(dctx, ectx->s, ectx->sbuf)) - return 0; - return 1; - } - - -static int drbg_ec_reseed(DRBG_CTX *dctx, - const unsigned char *ent, size_t ent_len, - const unsigned char *adin, size_t adin_len) - { - DRBG_EC_CTX *ectx = &dctx->d.ec; - /* Convert s value to a binary buffer. Save it to tbuf as we are - * about to overwrite it. - */ - if (ectx->exbits) - BN_lshift(ectx->s, ectx->s, ectx->exbits); - bn2binpad(ectx->tbuf, dctx->seedlen, ectx->s); - if (!hash_df(dctx, ectx->sbuf, ectx->tbuf, dctx->seedlen, - ent, ent_len, adin, adin_len)) - return 0; - if (!bin2bnbits(dctx, ectx->s, ectx->sbuf)) - return 0; - dctx->reseed_counter = 0; - return 1; - } - -static int drbg_ec_generate(DRBG_CTX *dctx, - unsigned char *out, size_t outlen, - const unsigned char *adin, size_t adin_len) - { - DRBG_EC_CTX *ectx = &dctx->d.ec; - BIGNUM *t, *r; - BIGNUM *s = ectx->s; - /* special case: check reseed interval */ - if (out == NULL) - { - size_t nb = (outlen + dctx->blocklength - 1)/dctx->blocklength; - if (dctx->reseed_counter + nb > dctx->reseed_interval) - dctx->status = DRBG_STATUS_RESEED; - return 1; - } - - BN_CTX_start(ectx->bctx); - r = BN_CTX_get(ectx->bctx); - if (!r) - goto err; - if (adin && adin_len) - { - size_t i; - t = BN_CTX_get(ectx->bctx); - if (!t) - goto err; - /* Convert s to buffer */ - if (ectx->exbits) - BN_lshift(s, s, ectx->exbits); - bn2binpad(ectx->sbuf, dctx->seedlen, s); - /* Step 2 */ - if (!hash_df(dctx, ectx->tbuf, adin, adin_len, - NULL, 0, NULL, 0)) - goto err; - /* Step 5 */ - for (i = 0; i < dctx->seedlen; i++) - ectx->tbuf[i] ^= ectx->sbuf[i]; - if (!bin2bnbits(dctx, t, ectx->tbuf)) - return 0; - } - else - /* Note if no additional input the algorithm never - * needs separate values for t and s. - */ - t = s; - -#ifdef EC_DRBG_TRACE - bnprint(stderr, "s at start of generate: ", s); -#endif - - for (;;) - { - /* Step #6, calculate s = t * P */ - if (!drbg_ec_mul(ectx, s, t, 0)) - goto err; -#ifdef EC_DRBG_TRACE - bnprint(stderr, "s in generate: ", ectx->s); -#endif - /* Step #7, calculate r = s * Q */ - if (!drbg_ec_mul(ectx, r, s, 1)) - goto err; -#ifdef EC_DRBG_TRACE - bnprint(stderr, "r in generate is: ", r); -#endif - dctx->reseed_counter++; - /* Get rightmost bits of r to output buffer */ - - if (!(dctx->xflags & DRBG_FLAG_TEST) && !dctx->lb_valid) - { - if (!bn2binpad(dctx->lb, dctx->blocklength, r)) - goto err; - dctx->lb_valid = 1; - continue; - } - if (outlen < dctx->blocklength) - { - if (!bn2binpad(ectx->vtmp, dctx->blocklength, r)) - goto err; - if (!fips_drbg_cprng_test(dctx, ectx->vtmp)) - goto err; - memcpy(out, ectx->vtmp, outlen); - break; - } - else - { - if (!bn2binpad(out, dctx->blocklength, r)) - goto err; - if (!fips_drbg_cprng_test(dctx, out)) - goto err; - } - outlen -= dctx->blocklength; - if (!outlen) - break; - out += dctx->blocklength; - /* Step #5 after first pass */ - t = s; -#ifdef EC_DRBG_TRACE - fprintf(stderr, "Random bits written:\n"); - hexprint(stderr, out, dctx->blocklength); -#endif - } - if (!drbg_ec_mul(ectx, ectx->s, ectx->s, 0)) - return 0; -#ifdef EC_DRBG_TRACE - bnprint(stderr, "s after generate is: ", s); -#endif - BN_CTX_end(ectx->bctx); - return 1; - err: - BN_CTX_end(ectx->bctx); - return 0; - } - -static int drbg_ec_uninstantiate(DRBG_CTX *dctx) - { - DRBG_EC_CTX *ectx = &dctx->d.ec; - EVP_MD_CTX_cleanup(&ectx->mctx); - EC_GROUP_free(ectx->curve); - EC_POINT_free(ectx->Q); - EC_POINT_free(ectx->ptmp); - BN_clear_free(ectx->s); - BN_CTX_free(ectx->bctx); - OPENSSL_cleanse(&dctx->d.ec, sizeof(DRBG_EC_CTX)); - return 1; - } - -/* Q points from SP 800-90 A.1, P is generator */ - -__fips_constseg -static const unsigned char p_256_qx[] = { - 0xc9,0x74,0x45,0xf4,0x5c,0xde,0xf9,0xf0,0xd3,0xe0,0x5e,0x1e, - 0x58,0x5f,0xc2,0x97,0x23,0x5b,0x82,0xb5,0xbe,0x8f,0xf3,0xef, - 0xca,0x67,0xc5,0x98,0x52,0x01,0x81,0x92 -}; -__fips_constseg -static const unsigned char p_256_qy[] = { - 0xb2,0x8e,0xf5,0x57,0xba,0x31,0xdf,0xcb,0xdd,0x21,0xac,0x46, - 0xe2,0xa9,0x1e,0x3c,0x30,0x4f,0x44,0xcb,0x87,0x05,0x8a,0xda, - 0x2c,0xb8,0x15,0x15,0x1e,0x61,0x00,0x46 -}; - -__fips_constseg -static const unsigned char p_384_qx[] = { - 0x8e,0x72,0x2d,0xe3,0x12,0x5b,0xdd,0xb0,0x55,0x80,0x16,0x4b, - 0xfe,0x20,0xb8,0xb4,0x32,0x21,0x6a,0x62,0x92,0x6c,0x57,0x50, - 0x2c,0xee,0xde,0x31,0xc4,0x78,0x16,0xed,0xd1,0xe8,0x97,0x69, - 0x12,0x41,0x79,0xd0,0xb6,0x95,0x10,0x64,0x28,0x81,0x50,0x65 -}; -__fips_constseg -static const unsigned char p_384_qy[] = { - 0x02,0x3b,0x16,0x60,0xdd,0x70,0x1d,0x08,0x39,0xfd,0x45,0xee, - 0xc3,0x6f,0x9e,0xe7,0xb3,0x2e,0x13,0xb3,0x15,0xdc,0x02,0x61, - 0x0a,0xa1,0xb6,0x36,0xe3,0x46,0xdf,0x67,0x1f,0x79,0x0f,0x84, - 0xc5,0xe0,0x9b,0x05,0x67,0x4d,0xbb,0x7e,0x45,0xc8,0x03,0xdd -}; - -__fips_constseg -static const unsigned char p_521_qx[] = { - 0x01,0xb9,0xfa,0x3e,0x51,0x8d,0x68,0x3c,0x6b,0x65,0x76,0x36, - 0x94,0xac,0x8e,0xfb,0xae,0xc6,0xfa,0xb4,0x4f,0x22,0x76,0x17, - 0x1a,0x42,0x72,0x65,0x07,0xdd,0x08,0xad,0xd4,0xc3,0xb3,0xf4, - 0xc1,0xeb,0xc5,0xb1,0x22,0x2d,0xdb,0xa0,0x77,0xf7,0x22,0x94, - 0x3b,0x24,0xc3,0xed,0xfa,0x0f,0x85,0xfe,0x24,0xd0,0xc8,0xc0, - 0x15,0x91,0xf0,0xbe,0x6f,0x63 -}; -__fips_constseg -static const unsigned char p_521_qy[] = { - 0x01,0xf3,0xbd,0xba,0x58,0x52,0x95,0xd9,0xa1,0x11,0x0d,0x1d, - 0xf1,0xf9,0x43,0x0e,0xf8,0x44,0x2c,0x50,0x18,0x97,0x6f,0xf3, - 0x43,0x7e,0xf9,0x1b,0x81,0xdc,0x0b,0x81,0x32,0xc8,0xd5,0xc3, - 0x9c,0x32,0xd0,0xe0,0x04,0xa3,0x09,0x2b,0x7d,0x32,0x7c,0x0e, - 0x7a,0x4d,0x26,0xd2,0xc7,0xb6,0x9b,0x58,0xf9,0x06,0x66,0x52, - 0x91,0x1e,0x45,0x77,0x79,0xde -}; - -int fips_drbg_ec_init(DRBG_CTX *dctx) - { - const EVP_MD *md; - const unsigned char *Q_x, *Q_y; - BIGNUM *x, *y; - size_t ptlen; - int md_nid = dctx->type & 0xffff; - int curve_nid = dctx->type >> 16; - DRBG_EC_CTX *ectx = &dctx->d.ec; - md = FIPS_get_digestbynid(md_nid); - if (!md) - return -2; - - /* These are taken from SP 800-90 10.3.1 table 4 */ - switch (curve_nid) - { - case NID_X9_62_prime256v1: - dctx->strength = 128; - dctx->seedlen = 32; - dctx->blocklength = 30; - ectx->exbits = 0; - Q_x = p_256_qx; - Q_y = p_256_qy; - ptlen = sizeof(p_256_qx); - break; - - case NID_secp384r1: - if (md_nid == NID_sha1) - return -2; - dctx->strength = 192; - dctx->seedlen = 48; - dctx->blocklength = 46; - ectx->exbits = 0; - Q_x = p_384_qx; - Q_y = p_384_qy; - ptlen = sizeof(p_384_qx); - break; - - case NID_secp521r1: - if (md_nid == NID_sha1 || md_nid == NID_sha224) - return -2; - dctx->strength = 256; - dctx->seedlen = 66; - dctx->blocklength = 63; - ectx->exbits = 7; - Q_x = p_521_qx; - Q_y = p_521_qy; - ptlen = sizeof(p_521_qx); - break; - - default: - return -2; - } - - dctx->iflags |= DRBG_CUSTOM_RESEED; - dctx->reseed_counter = 0; - dctx->instantiate = drbg_ec_instantiate; - dctx->reseed = drbg_ec_reseed; - dctx->generate = drbg_ec_generate; - dctx->uninstantiate = drbg_ec_uninstantiate; - - ectx->md = md; - EVP_MD_CTX_init(&ectx->mctx); - - dctx->min_entropy = dctx->strength / 8; - dctx->max_entropy = 2 << 10; - - dctx->min_nonce = dctx->min_entropy / 2; - dctx->max_nonce = 2 << 10; - - dctx->max_pers = 2 << 10; - dctx->max_adin = 2 << 10; - - dctx->reseed_interval = 1<<24; - dctx->max_request = dctx->reseed_interval * dctx->blocklength; - - /* Setup internal structures */ - ectx->bctx = BN_CTX_new(); - if (!ectx->bctx) - return 0; - BN_CTX_start(ectx->bctx); - - ectx->s = BN_new(); - - ectx->curve = EC_GROUP_new_by_curve_name(curve_nid); - - ectx->Q = EC_POINT_new(ectx->curve); - ectx->ptmp = EC_POINT_new(ectx->curve); - - x = BN_CTX_get(ectx->bctx); - y = BN_CTX_get(ectx->bctx); - - if (!ectx->s || !ectx->curve || !ectx->Q || !y) - goto err; - - if (!BN_bin2bn(Q_x, ptlen, x) || !BN_bin2bn(Q_y, ptlen, y)) - goto err; - if (!EC_POINT_set_affine_coordinates_GFp(ectx->curve, ectx->Q, - x, y, ectx->bctx)) - goto err; - - BN_CTX_end(ectx->bctx); - - return 1; - err: - BN_CTX_end(ectx->bctx); - drbg_ec_uninstantiate(dctx); - return 0; - } diff --git a/fips/rand/fips_drbg_hash.c b/fips/rand/fips_drbg_hash.c deleted file mode 100644 index 4b3b723407..0000000000 --- a/fips/rand/fips_drbg_hash.c +++ /dev/null @@ -1,378 +0,0 @@ -/* fips/rand/fips_drbg_hash.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include "fips_rand_lcl.h" - -/* This is Hash_df from SP 800-90 10.4.1 */ - -static int hash_df(DRBG_CTX *dctx, unsigned char *out, - const unsigned char *in1, size_t in1len, - const unsigned char *in2, size_t in2len, - const unsigned char *in3, size_t in3len, - const unsigned char *in4, size_t in4len) - { - EVP_MD_CTX *mctx = &dctx->d.hash.mctx; - unsigned char *vtmp = dctx->d.hash.vtmp; - unsigned char tmp[6]; - /* Standard only ever needs seedlen bytes which is always less than - * maximum permitted so no need to check length. - */ - size_t outlen = dctx->seedlen; - tmp[0] = 1; - tmp[1] = ((outlen * 8) >> 24) & 0xff; - tmp[2] = ((outlen * 8) >> 16) & 0xff; - tmp[3] = ((outlen * 8) >> 8) & 0xff; - tmp[4] = (outlen * 8) & 0xff; - if (!in1) - { - tmp[5] = (unsigned char)in1len; - in1 = tmp + 5; - in1len = 1; - } - for (;;) - { - if (!FIPS_digestinit(mctx, dctx->d.hash.md)) - return 0; - if (!FIPS_digestupdate(mctx, tmp, 5)) - return 0; - if (in1 && !FIPS_digestupdate(mctx, in1, in1len)) - return 0; - if (in2 && !FIPS_digestupdate(mctx, in2, in2len)) - return 0; - if (in3 && !FIPS_digestupdate(mctx, in3, in3len)) - return 0; - if (in4 && !FIPS_digestupdate(mctx, in4, in4len)) - return 0; - if (outlen < dctx->blocklength) - { - if (!FIPS_digestfinal(mctx, vtmp, NULL)) - return 0; - memcpy(out, vtmp, outlen); - OPENSSL_cleanse(vtmp, dctx->blocklength); - return 1; - } - else if(!FIPS_digestfinal(mctx, out, NULL)) - return 0; - - outlen -= dctx->blocklength; - if (outlen == 0) - return 1; - tmp[0]++; - out += dctx->blocklength; - } - } - - -/* Add an unsigned buffer to the buf value, storing the result in buf. For - * this algorithm the length of input never exceeds the seed length. - */ - -static void ctx_add_buf(DRBG_CTX *dctx, unsigned char *buf, - unsigned char *in, size_t inlen) - { - size_t i = inlen; - const unsigned char *q; - unsigned char c, *p; - p = buf + dctx->seedlen; - q = in + inlen; - - OPENSSL_assert(i <= dctx->seedlen); - - /* Special case: zero length, just increment buffer */ - if (i) - c = 0; - else - c = 1; - - while (i) - { - int r; - p--; - q--; - r = *p + *q + c; - /* Carry */ - if (r > 0xff) - c = 1; - else - c = 0; - *p = r & 0xff; - i--; - } - - i = dctx->seedlen - inlen; - - /* If not adding whole buffer handle final carries */ - if (c && i) - { - do - { - p--; - c = *p; - c++; - *p = c; - if(c) - return; - } while(i--); - } - } - -/* Finalise and add hash to V */ - -static int ctx_add_md(DRBG_CTX *dctx) - { - if (!FIPS_digestfinal(&dctx->d.hash.mctx, dctx->d.hash.vtmp, NULL)) - return 0; - ctx_add_buf(dctx, dctx->d.hash.V, dctx->d.hash.vtmp, dctx->blocklength); - return 1; - } - -static int hash_gen(DRBG_CTX *dctx, unsigned char *out, size_t outlen) - { - DRBG_HASH_CTX *hctx = &dctx->d.hash; - if (outlen == 0) - return 1; - memcpy(hctx->vtmp, hctx->V, dctx->seedlen); - for(;;) - { - FIPS_digestinit(&hctx->mctx, hctx->md); - FIPS_digestupdate(&hctx->mctx, hctx->vtmp, dctx->seedlen); - if (!(dctx->xflags & DRBG_FLAG_TEST) && !dctx->lb_valid) - { - FIPS_digestfinal(&hctx->mctx, dctx->lb, NULL); - dctx->lb_valid = 1; - } - else if (outlen < dctx->blocklength) - { - FIPS_digestfinal(&hctx->mctx, hctx->vtmp, NULL); - if (!fips_drbg_cprng_test(dctx, hctx->vtmp)) - return 0; - memcpy(out, hctx->vtmp, outlen); - return 1; - } - else - { - FIPS_digestfinal(&hctx->mctx, out, NULL); - if (!fips_drbg_cprng_test(dctx, out)) - return 0; - outlen -= dctx->blocklength; - if (outlen == 0) - return 1; - out += dctx->blocklength; - } - ctx_add_buf(dctx, hctx->vtmp, NULL, 0); - } - } - -static int drbg_hash_instantiate(DRBG_CTX *dctx, - const unsigned char *ent, size_t ent_len, - const unsigned char *nonce, size_t nonce_len, - const unsigned char *pstr, size_t pstr_len) - { - DRBG_HASH_CTX *hctx = &dctx->d.hash; - if (!hash_df(dctx, hctx->V, - ent, ent_len, nonce, nonce_len, pstr, pstr_len, - NULL, 0)) - return 0; - if (!hash_df(dctx, hctx->C, - NULL, 0, hctx->V, dctx->seedlen, - NULL, 0, NULL, 0)) - return 0; - -#ifdef HASH_DRBG_TRACE - fprintf(stderr, "V+C after instantiate:\n"); - hexprint(stderr, hctx->V, dctx->seedlen); - hexprint(stderr, hctx->C, dctx->seedlen); -#endif - return 1; - } - - -static int drbg_hash_reseed(DRBG_CTX *dctx, - const unsigned char *ent, size_t ent_len, - const unsigned char *adin, size_t adin_len) - { - DRBG_HASH_CTX *hctx = &dctx->d.hash; - /* V about to be updated so use C as output instead */ - if (!hash_df(dctx, hctx->C, - NULL, 1, hctx->V, dctx->seedlen, - ent, ent_len, adin, adin_len)) - return 0; - memcpy(hctx->V, hctx->C, dctx->seedlen); - if (!hash_df(dctx, hctx->C, NULL, 0, - hctx->V, dctx->seedlen, NULL, 0, NULL, 0)) - return 0; -#ifdef HASH_DRBG_TRACE - fprintf(stderr, "V+C after reseed:\n"); - hexprint(stderr, hctx->V, dctx->seedlen); - hexprint(stderr, hctx->C, dctx->seedlen); -#endif - return 1; - } - -static int drbg_hash_generate(DRBG_CTX *dctx, - unsigned char *out, size_t outlen, - const unsigned char *adin, size_t adin_len) - { - DRBG_HASH_CTX *hctx = &dctx->d.hash; - EVP_MD_CTX *mctx = &hctx->mctx; - unsigned char tmp[4]; - if (adin && adin_len) - { - tmp[0] = 2; - if (!FIPS_digestinit(mctx, hctx->md)) - return 0; - if (!EVP_DigestUpdate(mctx, tmp, 1)) - return 0; - if (!EVP_DigestUpdate(mctx, hctx->V, dctx->seedlen)) - return 0; - if (!EVP_DigestUpdate(mctx, adin, adin_len)) - return 0; - if (!ctx_add_md(dctx)) - return 0; - } - if (!hash_gen(dctx, out, outlen)) - return 0; - - tmp[0] = 3; - if (!FIPS_digestinit(mctx, hctx->md)) - return 0; - if (!EVP_DigestUpdate(mctx, tmp, 1)) - return 0; - if (!EVP_DigestUpdate(mctx, hctx->V, dctx->seedlen)) - return 0; - - if (!ctx_add_md(dctx)) - return 0; - - ctx_add_buf(dctx, hctx->V, hctx->C, dctx->seedlen); - - tmp[0] = (dctx->reseed_counter >> 24) & 0xff; - tmp[1] = (dctx->reseed_counter >> 16) & 0xff; - tmp[2] = (dctx->reseed_counter >> 8) & 0xff; - tmp[3] = dctx->reseed_counter & 0xff; - ctx_add_buf(dctx, hctx->V, tmp, 4); -#ifdef HASH_DRBG_TRACE - fprintf(stderr, "V+C after generate:\n"); - hexprint(stderr, hctx->V, dctx->seedlen); - hexprint(stderr, hctx->C, dctx->seedlen); -#endif - return 1; - } - -static int drbg_hash_uninstantiate(DRBG_CTX *dctx) - { - EVP_MD_CTX_cleanup(&dctx->d.hash.mctx); - OPENSSL_cleanse(&dctx->d.hash, sizeof(DRBG_HASH_CTX)); - return 1; - } - -int fips_drbg_hash_init(DRBG_CTX *dctx) - { - const EVP_MD *md; - DRBG_HASH_CTX *hctx = &dctx->d.hash; - md = FIPS_get_digestbynid(dctx->type); - if (!md) - return -2; - switch (dctx->type) - { - case NID_sha1: - dctx->strength = 128; - break; - - case NID_sha224: - dctx->strength = 192; - break; - - default: - dctx->strength = 256; - break; - } - - dctx->instantiate = drbg_hash_instantiate; - dctx->reseed = drbg_hash_reseed; - dctx->generate = drbg_hash_generate; - dctx->uninstantiate = drbg_hash_uninstantiate; - - dctx->d.hash.md = md; - EVP_MD_CTX_init(&hctx->mctx); - - /* These are taken from SP 800-90 10.1 table 2 */ - - dctx->blocklength = M_EVP_MD_size(md); - if (dctx->blocklength > 32) - dctx->seedlen = 111; - else - dctx->seedlen = 55; - - - dctx->min_entropy = dctx->strength / 8; - dctx->max_entropy = DRBG_MAX_LENGTH; - - dctx->min_nonce = dctx->min_entropy / 2; - dctx->max_nonce = DRBG_MAX_LENGTH; - - dctx->max_pers = DRBG_MAX_LENGTH; - dctx->max_adin = DRBG_MAX_LENGTH; - - dctx->max_request = 1<<16; - dctx->reseed_interval = 1<<24; - - return 1; - } diff --git a/fips/rand/fips_drbg_hmac.c b/fips/rand/fips_drbg_hmac.c deleted file mode 100644 index 3984782f5f..0000000000 --- a/fips/rand/fips_drbg_hmac.c +++ /dev/null @@ -1,281 +0,0 @@ -/* fips/rand/fips_drbg_hmac.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "fips_rand_lcl.h" - -static int drbg_hmac_update(DRBG_CTX *dctx, - const unsigned char *in1, size_t in1len, - const unsigned char *in2, size_t in2len, - const unsigned char *in3, size_t in3len - ) - { - static unsigned char c0 = 0, c1 = 1; - DRBG_HMAC_CTX *hmac = &dctx->d.hmac; - HMAC_CTX *hctx = &hmac->hctx; - - if (!HMAC_Init_ex(hctx, hmac->K, dctx->blocklength, hmac->md, NULL)) - return 0; - if (!HMAC_Update(hctx, hmac->V, dctx->blocklength)) - return 0; - if (!HMAC_Update(hctx, &c0, 1)) - return 0; - if (in1len && !HMAC_Update(hctx, in1, in1len)) - return 0; - if (in2len && !HMAC_Update(hctx, in2, in2len)) - return 0; - if (in3len && !HMAC_Update(hctx, in3, in3len)) - return 0; - - if (!HMAC_Final(hctx, hmac->K, NULL)) - return 0; - - if (!HMAC_Init_ex(hctx, hmac->K, dctx->blocklength, hmac->md, NULL)) - return 0; - if (!HMAC_Update(hctx, hmac->V, dctx->blocklength)) - return 0; - - if (!HMAC_Final(hctx, hmac->V, NULL)) - return 0; - - if (!in1len && !in2len && !in3len) - return 1; - - if (!HMAC_Init_ex(hctx, hmac->K, dctx->blocklength, hmac->md, NULL)) - return 0; - if (!HMAC_Update(hctx, hmac->V, dctx->blocklength)) - return 0; - if (!HMAC_Update(hctx, &c1, 1)) - return 0; - if (in1len && !HMAC_Update(hctx, in1, in1len)) - return 0; - if (in2len && !HMAC_Update(hctx, in2, in2len)) - return 0; - if (in3len && !HMAC_Update(hctx, in3, in3len)) - return 0; - - if (!HMAC_Final(hctx, hmac->K, NULL)) - return 0; - - if (!HMAC_Init_ex(hctx, hmac->K, dctx->blocklength, hmac->md, NULL)) - return 0; - if (!HMAC_Update(hctx, hmac->V, dctx->blocklength)) - return 0; - - if (!HMAC_Final(hctx, hmac->V, NULL)) - return 0; - - return 1; - - } - -static int drbg_hmac_instantiate(DRBG_CTX *dctx, - const unsigned char *ent, size_t ent_len, - const unsigned char *nonce, size_t nonce_len, - const unsigned char *pstr, size_t pstr_len) - { - DRBG_HMAC_CTX *hmac = &dctx->d.hmac; - memset(hmac->K, 0, dctx->blocklength); - memset(hmac->V, 1, dctx->blocklength); - if (!drbg_hmac_update(dctx, - ent, ent_len, nonce, nonce_len, pstr, pstr_len)) - return 0; - -#ifdef HMAC_DRBG_TRACE - fprintf(stderr, "K+V after instantiate:\n"); - hexprint(stderr, hmac->K, hmac->blocklength); - hexprint(stderr, hmac->V, hmac->blocklength); -#endif - return 1; - } - -static int drbg_hmac_reseed(DRBG_CTX *dctx, - const unsigned char *ent, size_t ent_len, - const unsigned char *adin, size_t adin_len) - { - if (!drbg_hmac_update(dctx, - ent, ent_len, adin, adin_len, NULL, 0)) - return 0; - -#ifdef HMAC_DRBG_TRACE - { - DRBG_HMAC_CTX *hmac = &dctx->d.hmac; - fprintf(stderr, "K+V after reseed:\n"); - hexprint(stderr, hmac->K, hmac->blocklength); - hexprint(stderr, hmac->V, hmac->blocklength); - } -#endif - return 1; - } - -static int drbg_hmac_generate(DRBG_CTX *dctx, - unsigned char *out, size_t outlen, - const unsigned char *adin, size_t adin_len) - { - DRBG_HMAC_CTX *hmac = &dctx->d.hmac; - HMAC_CTX *hctx = &hmac->hctx; - const unsigned char *Vtmp = hmac->V; - if (adin_len && !drbg_hmac_update(dctx, adin, adin_len, - NULL, 0, NULL, 0)) - return 0; - for (;;) - { - if (!HMAC_Init_ex(hctx, hmac->K, dctx->blocklength, - hmac->md, NULL)) - return 0; - if (!HMAC_Update(hctx, Vtmp, dctx->blocklength)) - return 0; - if (!(dctx->xflags & DRBG_FLAG_TEST) && !dctx->lb_valid) - { - if (!HMAC_Final(hctx, dctx->lb, NULL)) - return 0; - dctx->lb_valid = 1; - Vtmp = dctx->lb; - continue; - } - else if (outlen > dctx->blocklength) - { - if (!HMAC_Final(hctx, out, NULL)) - return 0; - if (!fips_drbg_cprng_test(dctx, out)) - return 0; - Vtmp = out; - } - else - { - if (!HMAC_Final(hctx, hmac->V, NULL)) - return 0; - if (!fips_drbg_cprng_test(dctx, hmac->V)) - return 0; - memcpy(out, hmac->V, outlen); - break; - } - out += dctx->blocklength; - outlen -= dctx->blocklength; - } - if (!drbg_hmac_update(dctx, adin, adin_len, NULL, 0, NULL, 0)) - return 0; - - return 1; - } - -static int drbg_hmac_uninstantiate(DRBG_CTX *dctx) - { - HMAC_CTX_cleanup(&dctx->d.hmac.hctx); - OPENSSL_cleanse(&dctx->d.hmac, sizeof(DRBG_HMAC_CTX)); - return 1; - } - -int fips_drbg_hmac_init(DRBG_CTX *dctx) - { - const EVP_MD *md = NULL; - DRBG_HMAC_CTX *hctx = &dctx->d.hmac; - dctx->strength = 256; - switch (dctx->type) - { - case NID_hmacWithSHA1: - md = EVP_sha1(); - dctx->strength = 128; - break; - - case NID_hmacWithSHA224: - md = EVP_sha224(); - dctx->strength = 192; - break; - - case NID_hmacWithSHA256: - md = EVP_sha256(); - break; - - case NID_hmacWithSHA384: - md = EVP_sha384(); - break; - - case NID_hmacWithSHA512: - md = EVP_sha512(); - break; - - default: - dctx->strength = 0; - return -2; - } - dctx->instantiate = drbg_hmac_instantiate; - dctx->reseed = drbg_hmac_reseed; - dctx->generate = drbg_hmac_generate; - dctx->uninstantiate = drbg_hmac_uninstantiate; - HMAC_CTX_init(&hctx->hctx); - hctx->md = md; - dctx->blocklength = M_EVP_MD_size(md); - dctx->seedlen = M_EVP_MD_size(md); - - dctx->min_entropy = dctx->strength / 8; - dctx->max_entropy = DRBG_MAX_LENGTH; - - dctx->min_nonce = dctx->min_entropy / 2; - dctx->max_nonce = DRBG_MAX_LENGTH; - - dctx->max_pers = DRBG_MAX_LENGTH; - dctx->max_adin = DRBG_MAX_LENGTH; - - dctx->max_request = 1<<16; - dctx->reseed_interval = 1<<24; - - return 1; - } diff --git a/fips/rand/fips_drbg_lib.c b/fips/rand/fips_drbg_lib.c deleted file mode 100644 index ee162d05eb..0000000000 --- a/fips/rand/fips_drbg_lib.c +++ /dev/null @@ -1,579 +0,0 @@ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include "fips_rand_lcl.h" - -/* Support framework for SP800-90 DRBGs */ - -int FIPS_drbg_init(DRBG_CTX *dctx, int type, unsigned int flags) - { - int rv; - memset(dctx, 0, sizeof(DRBG_CTX)); - dctx->status = DRBG_STATUS_UNINITIALISED; - dctx->xflags = flags; - dctx->type = type; - - dctx->iflags = 0; - dctx->entropy_blocklen = 0; - dctx->health_check_cnt = 0; - dctx->health_check_interval = DRBG_HEALTH_INTERVAL; - - rv = fips_drbg_hash_init(dctx); - - if (rv == -2) - rv = fips_drbg_ctr_init(dctx); - if (rv == -2) - rv = fips_drbg_hmac_init(dctx); - if (rv == -2) - rv = fips_drbg_ec_init(dctx); - - if (rv <= 0) - { - if (rv == -2) - FIPSerr(FIPS_F_FIPS_DRBG_INIT, FIPS_R_UNSUPPORTED_DRBG_TYPE); - else - FIPSerr(FIPS_F_FIPS_DRBG_INIT, FIPS_R_ERROR_INITIALISING_DRBG); - } - - /* If not in test mode run selftests on DRBG of the same type */ - - if (!(dctx->xflags & DRBG_FLAG_TEST)) - { - if (!FIPS_drbg_health_check(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_INIT, FIPS_R_SELFTEST_FAILURE); - return 0; - } - } - - return rv; - } - -DRBG_CTX *FIPS_drbg_new(int type, unsigned int flags) - { - DRBG_CTX *dctx; - dctx = OPENSSL_malloc(sizeof(DRBG_CTX)); - if (!dctx) - { - FIPSerr(FIPS_F_FIPS_DRBG_NEW, ERR_R_MALLOC_FAILURE); - return NULL; - } - - if (type == 0) - { - memset(dctx, 0, sizeof(DRBG_CTX)); - dctx->type = 0; - dctx->status = DRBG_STATUS_UNINITIALISED; - return dctx; - } - - if (FIPS_drbg_init(dctx, type, flags) <= 0) - { - OPENSSL_free(dctx); - return NULL; - } - - return dctx; - } - -void FIPS_drbg_free(DRBG_CTX *dctx) - { - if (dctx->uninstantiate) - dctx->uninstantiate(dctx); - /* Don't free up default DRBG */ - if (dctx == FIPS_get_default_drbg()) - { - memset(dctx, 0, sizeof(DRBG_CTX)); - dctx->type = 0; - dctx->status = DRBG_STATUS_UNINITIALISED; - } - else - { - OPENSSL_cleanse(&dctx->d, sizeof(dctx->d)); - OPENSSL_free(dctx); - } - } - -static size_t fips_get_entropy(DRBG_CTX *dctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) - { - unsigned char *tout, *p; - size_t bl = dctx->entropy_blocklen, rv; - if (!dctx->get_entropy) - return 0; - if (dctx->xflags & DRBG_FLAG_TEST || !bl) - return dctx->get_entropy(dctx, pout, entropy, min_len, max_len); - rv = dctx->get_entropy(dctx, &tout, entropy + bl, - min_len + bl, max_len + bl); - *pout = tout + bl; - if (rv < (min_len + bl) || (rv % bl)) - return 0; - /* Compare consecutive blocks for continuous PRNG test */ - for (p = tout; p < tout + rv - bl; p += bl) - { - if (!memcmp(p, p + bl, bl)) - { - FIPSerr(FIPS_F_FIPS_GET_ENTROPY, FIPS_R_ENTROPY_SOURCE_STUCK); - return 0; - } - } - rv -= bl; - if (rv > max_len) - return max_len; - return rv; - } - -static void fips_cleanup_entropy(DRBG_CTX *dctx, - unsigned char *out, size_t olen) - { - size_t bl; - if (dctx->xflags & DRBG_FLAG_TEST) - bl = 0; - else - bl = dctx->entropy_blocklen; - /* Call cleanup with original arguments */ - dctx->cleanup_entropy(dctx, out - bl, olen + bl); - } - - -int FIPS_drbg_instantiate(DRBG_CTX *dctx, - const unsigned char *pers, size_t perslen) - { - size_t entlen = 0, noncelen = 0; - unsigned char *nonce = NULL, *entropy = NULL; - -#if 0 - /* Put here so error script picks them up */ - FIPSerr(FIPS_F_FIPS_DRBG_INSTANTIATE, - FIPS_R_PERSONALISATION_STRING_TOO_LONG); - FIPSerr(FIPS_F_FIPS_DRBG_INSTANTIATE, FIPS_R_IN_ERROR_STATE); - FIPSerr(FIPS_F_FIPS_DRBG_INSTANTIATE, FIPS_R_ALREADY_INSTANTIATED); - FIPSerr(FIPS_F_FIPS_DRBG_INSTANTIATE, FIPS_R_ERROR_RETRIEVING_ENTROPY); - FIPSerr(FIPS_F_FIPS_DRBG_INSTANTIATE, FIPS_R_ERROR_RETRIEVING_NONCE); - FIPSerr(FIPS_F_FIPS_DRBG_INSTANTIATE, FIPS_R_INSTANTIATE_ERROR); - FIPSerr(FIPS_F_FIPS_DRBG_INSTANTIATE, FIPS_R_DRBG_NOT_INITIALISED); -#endif - - int r = 0; - - if (perslen > dctx->max_pers) - { - r = FIPS_R_PERSONALISATION_STRING_TOO_LONG; - goto end; - } - - if (!dctx->instantiate) - { - r = FIPS_R_DRBG_NOT_INITIALISED; - goto end; - } - - if (dctx->status != DRBG_STATUS_UNINITIALISED) - { - if (dctx->status == DRBG_STATUS_ERROR) - r = FIPS_R_IN_ERROR_STATE; - else - r = FIPS_R_ALREADY_INSTANTIATED; - goto end; - } - - dctx->status = DRBG_STATUS_ERROR; - - entlen = fips_get_entropy(dctx, &entropy, dctx->strength, - dctx->min_entropy, dctx->max_entropy); - - if (entlen < dctx->min_entropy || entlen > dctx->max_entropy) - { - r = FIPS_R_ERROR_RETRIEVING_ENTROPY; - goto end; - } - - if (dctx->max_nonce > 0 && dctx->get_nonce) - { - noncelen = dctx->get_nonce(dctx, &nonce, - dctx->strength / 2, - dctx->min_nonce, dctx->max_nonce); - - if (noncelen < dctx->min_nonce || noncelen > dctx->max_nonce) - { - r = FIPS_R_ERROR_RETRIEVING_NONCE; - goto end; - } - - } - - if (!dctx->instantiate(dctx, - entropy, entlen, - nonce, noncelen, - pers, perslen)) - { - r = FIPS_R_ERROR_INSTANTIATING_DRBG; - goto end; - } - - - dctx->status = DRBG_STATUS_READY; - if (!(dctx->iflags & DRBG_CUSTOM_RESEED)) - dctx->reseed_counter = 1; - - end: - - if (entropy && dctx->cleanup_entropy) - fips_cleanup_entropy(dctx, entropy, entlen); - - if (nonce && dctx->cleanup_nonce) - dctx->cleanup_nonce(dctx, nonce, noncelen); - - if (dctx->status == DRBG_STATUS_READY) - return 1; - - if (r && !(dctx->iflags & DRBG_FLAG_NOERR)) - FIPSerr(FIPS_F_FIPS_DRBG_INSTANTIATE, r); - - return 0; - - } - -static int drbg_reseed(DRBG_CTX *dctx, - const unsigned char *adin, size_t adinlen, int hcheck) - { - unsigned char *entropy = NULL; - size_t entlen = 0; - int r = 0; - -#if 0 - FIPSerr(FIPS_F_DRBG_RESEED, FIPS_R_NOT_INSTANTIATED); - FIPSerr(FIPS_F_DRBG_RESEED, FIPS_R_ADDITIONAL_INPUT_TOO_LONG); -#endif - if (dctx->status != DRBG_STATUS_READY - && dctx->status != DRBG_STATUS_RESEED) - { - if (dctx->status == DRBG_STATUS_ERROR) - r = FIPS_R_IN_ERROR_STATE; - else if(dctx->status == DRBG_STATUS_UNINITIALISED) - r = FIPS_R_NOT_INSTANTIATED; - goto end; - } - - if (!adin) - adinlen = 0; - else if (adinlen > dctx->max_adin) - { - r = FIPS_R_ADDITIONAL_INPUT_TOO_LONG; - goto end; - } - - dctx->status = DRBG_STATUS_ERROR; - /* Peform health check on all reseed operations if not a prediction - * resistance request and not in test mode. - */ - if (hcheck && !(dctx->xflags & DRBG_FLAG_TEST)) - { - if (!FIPS_drbg_health_check(dctx)) - { - r = FIPS_R_SELFTEST_FAILURE; - goto end; - } - } - - entlen = fips_get_entropy(dctx, &entropy, dctx->strength, - dctx->min_entropy, dctx->max_entropy); - - if (entlen < dctx->min_entropy || entlen > dctx->max_entropy) - { - r = FIPS_R_ERROR_RETRIEVING_ENTROPY; - goto end; - } - - if (!dctx->reseed(dctx, entropy, entlen, adin, adinlen)) - goto end; - - dctx->status = DRBG_STATUS_READY; - if (!(dctx->iflags & DRBG_CUSTOM_RESEED)) - dctx->reseed_counter = 1; - end: - - if (entropy && dctx->cleanup_entropy) - fips_cleanup_entropy(dctx, entropy, entlen); - - if (dctx->status == DRBG_STATUS_READY) - return 1; - - if (r && !(dctx->iflags & DRBG_FLAG_NOERR)) - FIPSerr(FIPS_F_DRBG_RESEED, r); - - return 0; - } - -int FIPS_drbg_reseed(DRBG_CTX *dctx, - const unsigned char *adin, size_t adinlen) - { - return drbg_reseed(dctx, adin, adinlen, 1); - } - -static int fips_drbg_check(DRBG_CTX *dctx) - { - if (dctx->xflags & DRBG_FLAG_TEST) - return 1; - dctx->health_check_cnt++; - if (dctx->health_check_cnt >= dctx->health_check_interval) - { - if (!FIPS_drbg_health_check(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_CHECK, FIPS_R_SELFTEST_FAILURE); - return 0; - } - } - return 1; - } - -int FIPS_drbg_generate(DRBG_CTX *dctx, unsigned char *out, size_t outlen, - int prediction_resistance, - const unsigned char *adin, size_t adinlen) - { - int r = 0; - - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_DRBG_GENERATE, FIPS_R_SELFTEST_FAILED); - return 0; - } - - if (!fips_drbg_check(dctx)) - return 0; - - if (dctx->status != DRBG_STATUS_READY - && dctx->status != DRBG_STATUS_RESEED) - { - if (dctx->status == DRBG_STATUS_ERROR) - r = FIPS_R_IN_ERROR_STATE; - else if(dctx->status == DRBG_STATUS_UNINITIALISED) - r = FIPS_R_NOT_INSTANTIATED; - goto end; - } - - if (outlen > dctx->max_request) - { - r = FIPS_R_REQUEST_TOO_LARGE_FOR_DRBG; - return 0; - } - - if (adinlen > dctx->max_adin) - { - r = FIPS_R_ADDITIONAL_INPUT_TOO_LONG; - goto end; - } - - if (dctx->iflags & DRBG_CUSTOM_RESEED) - dctx->generate(dctx, NULL, outlen, NULL, 0); - else if (dctx->reseed_counter >= dctx->reseed_interval) - dctx->status = DRBG_STATUS_RESEED; - - if (dctx->status == DRBG_STATUS_RESEED || prediction_resistance) - { - /* If prediction resistance request don't do health check */ - int hcheck = prediction_resistance ? 0 : 1; - - if (!drbg_reseed(dctx, adin, adinlen, hcheck)) - { - r = FIPS_R_RESEED_ERROR; - goto end; - } - adin = NULL; - adinlen = 0; - } - - if (!dctx->generate(dctx, out, outlen, adin, adinlen)) - { - r = FIPS_R_GENERATE_ERROR; - dctx->status = DRBG_STATUS_ERROR; - goto end; - } - if (!(dctx->iflags & DRBG_CUSTOM_RESEED)) - { - if (dctx->reseed_counter >= dctx->reseed_interval) - dctx->status = DRBG_STATUS_RESEED; - else - dctx->reseed_counter++; - } - - end: - if (r) - { - if (!(dctx->iflags & DRBG_FLAG_NOERR)) - FIPSerr(FIPS_F_FIPS_DRBG_GENERATE, r); - return 0; - } - - return 1; - } - -int FIPS_drbg_uninstantiate(DRBG_CTX *dctx) - { - int rv; - if (!dctx->uninstantiate) - rv = 1; - else - rv = dctx->uninstantiate(dctx); - /* Although we'd like to cleanse here we can't because we have to - * test the uninstantiate really zeroes the data. - */ - memset(&dctx->d, 0, sizeof(dctx->d)); - dctx->status = DRBG_STATUS_UNINITIALISED; - /* If method has problems uninstantiating, return error */ - return rv; - } - -int FIPS_drbg_set_callbacks(DRBG_CTX *dctx, - size_t (*get_entropy)(DRBG_CTX *ctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len), - void (*cleanup_entropy)(DRBG_CTX *ctx, unsigned char *out, size_t olen), - size_t entropy_blocklen, - size_t (*get_nonce)(DRBG_CTX *ctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len), - void (*cleanup_nonce)(DRBG_CTX *ctx, unsigned char *out, size_t olen)) - { - if (dctx->status != DRBG_STATUS_UNINITIALISED) - return 0; - dctx->entropy_blocklen = entropy_blocklen; - dctx->get_entropy = get_entropy; - dctx->cleanup_entropy = cleanup_entropy; - dctx->get_nonce = get_nonce; - dctx->cleanup_nonce = cleanup_nonce; - return 1; - } - -int FIPS_drbg_set_rand_callbacks(DRBG_CTX *dctx, - size_t (*get_adin)(DRBG_CTX *ctx, unsigned char **pout), - void (*cleanup_adin)(DRBG_CTX *ctx, unsigned char *out, size_t olen), - int (*rand_seed_cb)(DRBG_CTX *ctx, const void *buf, int num), - int (*rand_add_cb)(DRBG_CTX *ctx, - const void *buf, int num, double entropy)) - { - if (dctx->status != DRBG_STATUS_UNINITIALISED) - return 0; - dctx->get_adin = get_adin; - dctx->cleanup_adin = cleanup_adin; - dctx->rand_seed_cb = rand_seed_cb; - dctx->rand_add_cb = rand_add_cb; - return 1; - } - -void *FIPS_drbg_get_app_data(DRBG_CTX *dctx) - { - return dctx->app_data; - } - -void FIPS_drbg_set_app_data(DRBG_CTX *dctx, void *app_data) - { - dctx->app_data = app_data; - } - -size_t FIPS_drbg_get_blocklength(DRBG_CTX *dctx) - { - return dctx->blocklength; - } - -int FIPS_drbg_get_strength(DRBG_CTX *dctx) - { - return dctx->strength; - } - -void FIPS_drbg_set_check_interval(DRBG_CTX *dctx, int interval) - { - dctx->health_check_interval = interval; - } - -void FIPS_drbg_set_reseed_interval(DRBG_CTX *dctx, int interval) - { - dctx->reseed_interval = interval; - } - -static int drbg_stick = 0; - -void FIPS_drbg_stick(int onoff) - { - drbg_stick = onoff; - } - -/* Continuous DRBG utility function */ -int fips_drbg_cprng_test(DRBG_CTX *dctx, const unsigned char *out) - { - /* No CPRNG in test mode */ - if (dctx->xflags & DRBG_FLAG_TEST) - return 1; - /* Check block is valid: should never happen */ - if (dctx->lb_valid == 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_CPRNG_TEST, FIPS_R_INTERNAL_ERROR); - fips_set_selftest_fail(); - return 0; - } - if (drbg_stick) - memcpy(dctx->lb, out, dctx->blocklength); - /* Check against last block: fail if match */ - if (!memcmp(dctx->lb, out, dctx->blocklength)) - { - FIPSerr(FIPS_F_FIPS_DRBG_CPRNG_TEST, FIPS_R_DRBG_STUCK); - fips_set_selftest_fail(); - return 0; - } - /* Save last block for next comparison */ - memcpy(dctx->lb, out, dctx->blocklength); - return 1; - } diff --git a/fips/rand/fips_drbg_rand.c b/fips/rand/fips_drbg_rand.c deleted file mode 100644 index 764a78cbfd..0000000000 --- a/fips/rand/fips_drbg_rand.c +++ /dev/null @@ -1,174 +0,0 @@ -/* fips/rand/fips_drbg_rand.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include "fips_rand_lcl.h" - -/* Mapping of SP800-90 DRBGs to OpenSSL RAND_METHOD */ - -/* Since we only have one global PRNG used at any time in OpenSSL use a global - * variable to store context. - */ - -static DRBG_CTX ossl_dctx; - -DRBG_CTX *FIPS_get_default_drbg(void) - { - return &ossl_dctx; - } - -static int fips_drbg_bytes(unsigned char *out, int count) - { - DRBG_CTX *dctx = &ossl_dctx; - int rv = 0; - unsigned char *adin = NULL; - size_t adinlen = 0; - CRYPTO_w_lock(CRYPTO_LOCK_RAND); - do - { - size_t rcnt; - if (count > (int)dctx->max_request) - rcnt = dctx->max_request; - else - rcnt = count; - if (dctx->get_adin) - { - adinlen = dctx->get_adin(dctx, &adin); - if (adinlen && !adin) - { - FIPSerr(FIPS_F_FIPS_DRBG_BYTES, FIPS_R_ERROR_RETRIEVING_ADDITIONAL_INPUT); - goto err; - } - } - rv = FIPS_drbg_generate(dctx, out, rcnt, 0, adin, adinlen); - if (adin) - { - if (dctx->cleanup_adin) - dctx->cleanup_adin(dctx, adin, adinlen); - adin = NULL; - } - if (!rv) - goto err; - out += rcnt; - count -= rcnt; - } - while (count); - rv = 1; - err: - CRYPTO_w_unlock(CRYPTO_LOCK_RAND); - return rv; - } - -static int fips_drbg_pseudo(unsigned char *out, int count) - { - if (fips_drbg_bytes(out, count) <= 0) - return -1; - return 1; - } - -static int fips_drbg_status(void) - { - DRBG_CTX *dctx = &ossl_dctx; - int rv; - CRYPTO_r_lock(CRYPTO_LOCK_RAND); - rv = dctx->status == DRBG_STATUS_READY ? 1 : 0; - CRYPTO_r_unlock(CRYPTO_LOCK_RAND); - return rv; - } - -static void fips_drbg_cleanup(void) - { - DRBG_CTX *dctx = &ossl_dctx; - CRYPTO_w_lock(CRYPTO_LOCK_RAND); - FIPS_drbg_uninstantiate(dctx); - CRYPTO_w_unlock(CRYPTO_LOCK_RAND); - } - -static int fips_drbg_seed(const void *seed, int seedlen) - { - DRBG_CTX *dctx = &ossl_dctx; - if (dctx->rand_seed_cb) - return dctx->rand_seed_cb(dctx, seed, seedlen); - return 1; - } - -static int fips_drbg_add(const void *seed, int seedlen, - double add_entropy) - { - DRBG_CTX *dctx = &ossl_dctx; - if (dctx->rand_add_cb) - return dctx->rand_add_cb(dctx, seed, seedlen, add_entropy); - return 1; - } - -static const RAND_METHOD rand_drbg_meth = - { - fips_drbg_seed, - fips_drbg_bytes, - fips_drbg_cleanup, - fips_drbg_add, - fips_drbg_pseudo, - fips_drbg_status - }; - -const RAND_METHOD *FIPS_drbg_method(void) - { - return &rand_drbg_meth; - } - diff --git a/fips/rand/fips_drbg_selftest.c b/fips/rand/fips_drbg_selftest.c deleted file mode 100644 index a787323d6d..0000000000 --- a/fips/rand/fips_drbg_selftest.c +++ /dev/null @@ -1,876 +0,0 @@ -/* fips/rand/fips_drbg_selftest.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include "fips_rand_lcl.h" -#include "fips_locl.h" - -#include "fips_drbg_selftest.h" - -typedef struct { - int post; - int nid; - unsigned int flags; - - /* KAT data for no PR */ - const unsigned char *ent; - size_t entlen; - const unsigned char *nonce; - size_t noncelen; - const unsigned char *pers; - size_t perslen; - const unsigned char *adin; - size_t adinlen; - const unsigned char *entreseed; - size_t entreseedlen; - const unsigned char *adinreseed; - size_t adinreseedlen; - const unsigned char *adin2; - size_t adin2len; - const unsigned char *kat; - size_t katlen; - const unsigned char *kat2; - size_t kat2len; - - /* KAT data for PR */ - const unsigned char *ent_pr; - size_t entlen_pr; - const unsigned char *nonce_pr; - size_t noncelen_pr; - const unsigned char *pers_pr; - size_t perslen_pr; - const unsigned char *adin_pr; - size_t adinlen_pr; - const unsigned char *entpr_pr; - size_t entprlen_pr; - const unsigned char *ading_pr; - size_t adinglen_pr; - const unsigned char *entg_pr; - size_t entglen_pr; - const unsigned char *kat_pr; - size_t katlen_pr; - const unsigned char *kat2_pr; - size_t kat2len_pr; - - } DRBG_SELFTEST_DATA; - -#define make_drbg_test_data(nid, flag, pr, p) {p, nid, flag | DRBG_FLAG_TEST, \ - pr##_entropyinput, sizeof(pr##_entropyinput), \ - pr##_nonce, sizeof(pr##_nonce), \ - pr##_personalizationstring, sizeof(pr##_personalizationstring), \ - pr##_additionalinput, sizeof(pr##_additionalinput), \ - pr##_entropyinputreseed, sizeof(pr##_entropyinputreseed), \ - pr##_additionalinputreseed, sizeof(pr##_additionalinputreseed), \ - pr##_additionalinput2, sizeof(pr##_additionalinput2), \ - pr##_int_returnedbits, sizeof(pr##_int_returnedbits), \ - pr##_returnedbits, sizeof(pr##_returnedbits), \ - pr##_pr_entropyinput, sizeof(pr##_pr_entropyinput), \ - pr##_pr_nonce, sizeof(pr##_pr_nonce), \ - pr##_pr_personalizationstring, sizeof(pr##_pr_personalizationstring), \ - pr##_pr_additionalinput, sizeof(pr##_pr_additionalinput), \ - pr##_pr_entropyinputpr, sizeof(pr##_pr_entropyinputpr), \ - pr##_pr_additionalinput2, sizeof(pr##_pr_additionalinput2), \ - pr##_pr_entropyinputpr2, sizeof(pr##_pr_entropyinputpr2), \ - pr##_pr_int_returnedbits, sizeof(pr##_pr_int_returnedbits), \ - pr##_pr_returnedbits, sizeof(pr##_pr_returnedbits), \ - } - -#define make_drbg_test_data_df(nid, pr, p) \ - make_drbg_test_data(nid, DRBG_FLAG_CTR_USE_DF, pr, p) - -#define make_drbg_test_data_ec(curve, md, pr, p) \ - make_drbg_test_data((curve << 16) | md , 0, pr, p) - -static DRBG_SELFTEST_DATA drbg_test[] = { - make_drbg_test_data_df(NID_aes_128_ctr, aes_128_use_df, 0), - make_drbg_test_data_df(NID_aes_192_ctr, aes_192_use_df, 0), - make_drbg_test_data_df(NID_aes_256_ctr, aes_256_use_df, 1), - make_drbg_test_data(NID_aes_128_ctr, 0, aes_128_no_df, 0), - make_drbg_test_data(NID_aes_192_ctr, 0, aes_192_no_df, 0), - make_drbg_test_data(NID_aes_256_ctr, 0, aes_256_no_df, 1), - make_drbg_test_data(NID_sha1, 0, sha1, 0), - make_drbg_test_data(NID_sha224, 0, sha224, 0), - make_drbg_test_data(NID_sha256, 0, sha256, 1), - make_drbg_test_data(NID_sha384, 0, sha384, 0), - make_drbg_test_data(NID_sha512, 0, sha512, 0), - make_drbg_test_data(NID_hmacWithSHA1, 0, hmac_sha1, 0), - make_drbg_test_data(NID_hmacWithSHA224, 0, hmac_sha224, 0), - make_drbg_test_data(NID_hmacWithSHA256, 0, hmac_sha256, 1), - make_drbg_test_data(NID_hmacWithSHA384, 0, hmac_sha384, 0), - make_drbg_test_data(NID_hmacWithSHA512, 0, hmac_sha512, 0), - make_drbg_test_data_ec(NID_X9_62_prime256v1, NID_sha1, p_256_sha1, 0), - make_drbg_test_data_ec(NID_X9_62_prime256v1, NID_sha224, p_256_sha224, 0), - make_drbg_test_data_ec(NID_X9_62_prime256v1, NID_sha256, p_256_sha256, 1), - make_drbg_test_data_ec(NID_X9_62_prime256v1, NID_sha384, p_256_sha384, 0), - make_drbg_test_data_ec(NID_X9_62_prime256v1, NID_sha512, p_256_sha512, 0), - make_drbg_test_data_ec(NID_secp384r1, NID_sha224, p_384_sha224, 0), - make_drbg_test_data_ec(NID_secp384r1, NID_sha256, p_384_sha256, 0), - make_drbg_test_data_ec(NID_secp384r1, NID_sha384, p_384_sha384, 0), - make_drbg_test_data_ec(NID_secp384r1, NID_sha512, p_384_sha512, 0), - make_drbg_test_data_ec(NID_secp521r1, NID_sha256, p_521_sha256, 0), - make_drbg_test_data_ec(NID_secp521r1, NID_sha384, p_521_sha384, 0), - make_drbg_test_data_ec(NID_secp521r1, NID_sha512, p_521_sha512, 0), - {0,0,0} - }; - -typedef struct - { - const unsigned char *ent; - size_t entlen; - int entcnt; - const unsigned char *nonce; - size_t noncelen; - int noncecnt; - } TEST_ENT; - -static size_t test_entropy(DRBG_CTX *dctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) - { - TEST_ENT *t = FIPS_drbg_get_app_data(dctx); - *pout = (unsigned char *)t->ent; - t->entcnt++; - return t->entlen; - } - -static size_t test_nonce(DRBG_CTX *dctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) - { - TEST_ENT *t = FIPS_drbg_get_app_data(dctx); - *pout = (unsigned char *)t->nonce; - t->noncecnt++; - return t->noncelen; - } - -static int fips_drbg_single_kat(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td, - int quick) - { - TEST_ENT t; - int rv = 0; - size_t adinlen; - unsigned char randout[1024]; - - /* Initial test without PR */ - - /* Instantiate DRBG with test entropy, nonce and personalisation - * string. - */ - - if (!FIPS_drbg_init(dctx, td->nid, td->flags)) - return 0; - if (!FIPS_drbg_set_callbacks(dctx, test_entropy, 0, 0, test_nonce, 0)) - return 0; - - FIPS_drbg_set_app_data(dctx, &t); - - t.ent = td->ent; - t.entlen = td->entlen; - t.nonce = td->nonce; - t.noncelen = td->noncelen; - t.entcnt = 0; - t.noncecnt = 0; - - if (!FIPS_drbg_instantiate(dctx, td->pers, td->perslen)) - goto err; - - /* Note for CTR without DF some additional input values - * ignore bytes after the keylength: so reduce adinlen - * to half to ensure invalid data is fed in. - */ - if (!fips_post_corrupt(FIPS_TEST_DRBG, dctx->type, &dctx->iflags)) - adinlen = td->adinlen / 2; - else - adinlen = td->adinlen; - - /* Generate with no PR and verify output matches expected data */ - if (!FIPS_drbg_generate(dctx, randout, td->katlen, 0, - td->adin, adinlen)) - goto err; - - if (memcmp(randout, td->kat, td->katlen)) - { - FIPSerr(FIPS_F_FIPS_DRBG_SINGLE_KAT, FIPS_R_NOPR_TEST1_FAILURE); - goto err2; - } - /* If abbreviated POST end of test */ - if (quick) - { - rv = 1; - goto err; - } - /* Reseed DRBG with test entropy and additional input */ - t.ent = td->entreseed; - t.entlen = td->entreseedlen; - - if (!FIPS_drbg_reseed(dctx, td->adinreseed, td->adinreseedlen)) - goto err; - - /* Generate with no PR and verify output matches expected data */ - if (!FIPS_drbg_generate(dctx, randout, td->kat2len, 0, - td->adin2, td->adin2len)) - goto err; - - if (memcmp(randout, td->kat2, td->kat2len)) - { - FIPSerr(FIPS_F_FIPS_DRBG_SINGLE_KAT, FIPS_R_NOPR_TEST2_FAILURE); - goto err2; - } - - FIPS_drbg_uninstantiate(dctx); - - /* Now test with PR */ - - /* Instantiate DRBG with test entropy, nonce and personalisation - * string. - */ - if (!FIPS_drbg_init(dctx, td->nid, td->flags)) - return 0; - if (!FIPS_drbg_set_callbacks(dctx, test_entropy, 0, 0, test_nonce, 0)) - return 0; - - FIPS_drbg_set_app_data(dctx, &t); - - t.ent = td->ent_pr; - t.entlen = td->entlen_pr; - t.nonce = td->nonce_pr; - t.noncelen = td->noncelen_pr; - t.entcnt = 0; - t.noncecnt = 0; - - if (!FIPS_drbg_instantiate(dctx, td->pers_pr, td->perslen_pr)) - goto err; - - /* Now generate with PR: we need to supply entropy as this will - * perform a reseed operation. Check output matches expected value. - */ - - t.ent = td->entpr_pr; - t.entlen = td->entprlen_pr; - - /* Note for CTR without DF some additional input values - * ignore bytes after the keylength: so reduce adinlen - * to half to ensure invalid data is fed in. - */ - if (!fips_post_corrupt(FIPS_TEST_DRBG, dctx->type, &dctx->iflags)) - adinlen = td->adinlen_pr / 2; - else - adinlen = td->adinlen_pr; - if (!FIPS_drbg_generate(dctx, randout, td->katlen_pr, 1, - td->adin_pr, adinlen)) - goto err; - - if (memcmp(randout, td->kat_pr, td->katlen_pr)) - { - FIPSerr(FIPS_F_FIPS_DRBG_SINGLE_KAT, FIPS_R_PR_TEST1_FAILURE); - goto err2; - } - - /* Now generate again with PR: supply new entropy again. - * Check output matches expected value. - */ - - t.ent = td->entg_pr; - t.entlen = td->entglen_pr; - - if (!FIPS_drbg_generate(dctx, randout, td->kat2len_pr, 1, - td->ading_pr, td->adinglen_pr)) - goto err; - - if (memcmp(randout, td->kat2_pr, td->kat2len_pr)) - { - FIPSerr(FIPS_F_FIPS_DRBG_SINGLE_KAT, FIPS_R_PR_TEST2_FAILURE); - goto err2; - } - /* All OK, test complete */ - rv = 1; - - err: - if (rv == 0) - FIPSerr(FIPS_F_FIPS_DRBG_SINGLE_KAT, FIPS_R_SELFTEST_FAILED); - err2: - FIPS_drbg_uninstantiate(dctx); - - return rv; - - } - -/* Initialise a DRBG based on selftest data */ - -static int do_drbg_init(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td, TEST_ENT *t) - { - - if (!FIPS_drbg_init(dctx, td->nid, td->flags)) - return 0; - - if (!FIPS_drbg_set_callbacks(dctx, test_entropy, 0, 0, test_nonce, 0)) - return 0; - - FIPS_drbg_set_app_data(dctx, t); - - t->ent = td->ent; - t->entlen = td->entlen; - t->nonce = td->nonce; - t->noncelen = td->noncelen; - t->entcnt = 0; - t->noncecnt = 0; - return 1; - } - -/* Initialise and instantiate DRBG based on selftest data */ -static int do_drbg_instantiate(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td, - TEST_ENT *t) - { - if (!do_drbg_init(dctx, td, t)) - return 0; - if (!FIPS_drbg_instantiate(dctx, td->pers, td->perslen)) - return 0; - - return 1; - } - -/* This function performs extensive error checking as required by SP800-90. - * Induce several failure modes and check an error condition is set. - * This function along with fips_drbg_single_kat peforms the health checking - * operation. - */ - -static int fips_drbg_error_check(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td) - { - unsigned char randout[1024]; - TEST_ENT t; - size_t i; - unsigned int reseed_counter_tmp; - unsigned char *p = (unsigned char *)dctx; - - /* Initialise DRBG */ - - if (!do_drbg_init(dctx, td, &t)) - goto err; - - /* Don't report induced errors */ - dctx->iflags |= DRBG_FLAG_NOERR; - - /* Personalisation string tests */ - - /* Test detection of too large personlisation string */ - - if (FIPS_drbg_instantiate(dctx, td->pers, dctx->max_pers + 1) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_PERSONALISATION_ERROR_UNDETECTED); - goto err; - } - - /* Entropy source tests */ - - /* Test entropy source failure detecion: i.e. returns no data */ - - t.entlen = 0; - - if (FIPS_drbg_instantiate(dctx, td->pers, td->perslen) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_ERROR_UNDETECTED); - goto err; - } - - /* Try to generate output from uninstantiated DRBG */ - if (FIPS_drbg_generate(dctx, randout, td->katlen, 0, - td->adin, td->adinlen)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_GENERATE_ERROR_UNDETECTED); - goto err; - } - - dctx->iflags &= ~DRBG_FLAG_NOERR; - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - if (!do_drbg_init(dctx, td, &t)) - goto err; - - dctx->iflags |= DRBG_FLAG_NOERR; - - /* Test insufficient entropy */ - - t.entlen = dctx->min_entropy - 1; - - if (FIPS_drbg_instantiate(dctx, td->pers, td->perslen) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_ERROR_UNDETECTED); - goto err; - } - - dctx->iflags &= ~DRBG_FLAG_NOERR; - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - /* Test too much entropy */ - - if (!do_drbg_init(dctx, td, &t)) - goto err; - - dctx->iflags |= DRBG_FLAG_NOERR; - - t.entlen = dctx->max_entropy + 1; - - if (FIPS_drbg_instantiate(dctx, td->pers, td->perslen) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_ERROR_UNDETECTED); - goto err; - } - - dctx->iflags &= ~DRBG_FLAG_NOERR; - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - /* Nonce tests */ - - /* Test too small nonce */ - - if (dctx->min_nonce) - { - - if (!do_drbg_init(dctx, td, &t)) - goto err; - - dctx->iflags |= DRBG_FLAG_NOERR; - - t.noncelen = dctx->min_nonce - 1; - - if (FIPS_drbg_instantiate(dctx, td->pers, td->perslen) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_NONCE_ERROR_UNDETECTED); - goto err; - } - - dctx->iflags &= ~DRBG_FLAG_NOERR; - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - } - - /* Test too large nonce */ - - if (dctx->max_nonce) - { - - if (!do_drbg_init(dctx, td, &t)) - goto err; - - dctx->iflags |= DRBG_FLAG_NOERR; - - t.noncelen = dctx->max_nonce + 1; - - if (FIPS_drbg_instantiate(dctx, td->pers, td->perslen) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_NONCE_ERROR_UNDETECTED); - goto err; - } - - dctx->iflags &= ~DRBG_FLAG_NOERR; - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - } - - /* Instantiate with valid data. */ - if (!do_drbg_instantiate(dctx, td, &t)) - goto err; - - /* Check generation is now OK */ - if (!FIPS_drbg_generate(dctx, randout, td->katlen, 0, - td->adin, td->adinlen)) - goto err; - - dctx->iflags |= DRBG_FLAG_NOERR; - - /* Request too much data for one request */ - if (FIPS_drbg_generate(dctx, randout, dctx->max_request + 1, 0, - td->adin, td->adinlen)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_REQUEST_LENGTH_ERROR_UNDETECTED); - goto err; - } - - /* Try too large additional input */ - if (FIPS_drbg_generate(dctx, randout, td->katlen, 0, - td->adin, dctx->max_adin + 1)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ADDITIONAL_INPUT_ERROR_UNDETECTED); - goto err; - } - - /* Check prediction resistance request fails if entropy source - * failure. - */ - - t.entlen = 0; - - if (FIPS_drbg_generate(dctx, randout, td->katlen, 1, - td->adin, td->adinlen)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_ERROR_UNDETECTED); - goto err; - } - - dctx->iflags &= ~DRBG_FLAG_NOERR; - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - - /* Instantiate again with valid data */ - - if (!do_drbg_instantiate(dctx, td, &t)) - goto err; - /* Test reseed counter works */ - /* Save initial reseed counter */ - reseed_counter_tmp = dctx->reseed_counter; - /* Set reseed counter to beyond interval */ - dctx->reseed_counter = dctx->reseed_interval; - - /* Generate output and check entropy has been requested for reseed */ - t.entcnt = 0; - if (!FIPS_drbg_generate(dctx, randout, td->katlen, 0, - td->adin, td->adinlen)) - goto err; - if (t.entcnt != 1) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_NOT_REQUESTED_FOR_RESEED); - goto err; - } - /* Check reseed counter has been reset */ - if (dctx->reseed_counter != reseed_counter_tmp + 1) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_RESEED_COUNTER_ERROR); - goto err; - } - - dctx->iflags &= ~DRBG_FLAG_NOERR; - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - /* Check prediction resistance request fails if entropy source - * failure. - */ - - t.entlen = 0; - - dctx->iflags |= DRBG_FLAG_NOERR; - if (FIPS_drbg_generate(dctx, randout, td->katlen, 1, - td->adin, td->adinlen)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_ERROR_UNDETECTED); - goto err; - } - - dctx->iflags &= ~DRBG_FLAG_NOERR; - - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - - if (!do_drbg_instantiate(dctx, td, &t)) - goto err; - /* Test reseed counter works */ - /* Save initial reseed counter */ - reseed_counter_tmp = dctx->reseed_counter; - /* Set reseed counter to beyond interval */ - dctx->reseed_counter = dctx->reseed_interval; - - /* Generate output and check entropy has been requested for reseed */ - t.entcnt = 0; - if (!FIPS_drbg_generate(dctx, randout, td->katlen, 0, - td->adin, td->adinlen)) - goto err; - if (t.entcnt != 1) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_NOT_REQUESTED_FOR_RESEED); - goto err; - } - /* Check reseed counter has been reset */ - if (dctx->reseed_counter != reseed_counter_tmp + 1) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_RESEED_COUNTER_ERROR); - goto err; - } - - dctx->iflags &= ~DRBG_FLAG_NOERR; - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - /* Explicit reseed tests */ - - /* Test explicit reseed with too large additional input */ - if (!do_drbg_init(dctx, td, &t)) - goto err; - - dctx->iflags |= DRBG_FLAG_NOERR; - - if (FIPS_drbg_reseed(dctx, td->adin, dctx->max_adin + 1) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ADDITIONAL_INPUT_ERROR_UNDETECTED); - goto err; - } - - /* Test explicit reseed with entropy source failure */ - - t.entlen = 0; - - if (FIPS_drbg_reseed(dctx, td->adin, td->adinlen) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_ERROR_UNDETECTED); - goto err; - } - - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - /* Test explicit reseed with too much entropy */ - - if (!do_drbg_init(dctx, td, &t)) - goto err; - - dctx->iflags |= DRBG_FLAG_NOERR; - - t.entlen = dctx->max_entropy + 1; - - if (FIPS_drbg_reseed(dctx, td->adin, td->adinlen) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_ERROR_UNDETECTED); - goto err; - } - - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - /* Test explicit reseed with too little entropy */ - - if (!do_drbg_init(dctx, td, &t)) - goto err; - - dctx->iflags |= DRBG_FLAG_NOERR; - - t.entlen = dctx->min_entropy - 1; - - if (FIPS_drbg_reseed(dctx, td->adin, td->adinlen) > 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_ENTROPY_ERROR_UNDETECTED); - goto err; - } - - if (!FIPS_drbg_uninstantiate(dctx)) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ERROR); - goto err; - } - - p = (unsigned char *)&dctx->d; - /* Standard says we have to check uninstantiate really zeroes - * the data... - */ - for (i = 0; i < sizeof(dctx->d); i++) - { - if (*p != 0) - { - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_UNINSTANTIATE_ZEROISE_ERROR); - goto err; - } - p++; - } - - return 1; - - err: - /* A real error as opposed to an induced one: underlying function will - * indicate the error. - */ - if (!(dctx->iflags & DRBG_FLAG_NOERR)) - FIPSerr(FIPS_F_FIPS_DRBG_ERROR_CHECK, FIPS_R_FUNCTION_ERROR); - FIPS_drbg_uninstantiate(dctx); - return 0; - - } - -int fips_drbg_kat(DRBG_CTX *dctx, int nid, unsigned int flags) - { - DRBG_SELFTEST_DATA *td; - flags |= DRBG_FLAG_TEST; - for (td = drbg_test; td->nid != 0; td++) - { - if (td->nid == nid && td->flags == flags) - { - if (!fips_drbg_single_kat(dctx, td, 0)) - return 0; - return fips_drbg_error_check(dctx, td); - } - } - return 0; - } - -int FIPS_drbg_health_check(DRBG_CTX *dctx) - { - int rv; - DRBG_CTX *tctx = NULL; - tctx = FIPS_drbg_new(0, 0); - fips_post_started(FIPS_TEST_DRBG, dctx->type, &dctx->xflags); - if (!tctx) - return 0; - rv = fips_drbg_kat(tctx, dctx->type, dctx->xflags); - if (tctx) - FIPS_drbg_free(tctx); - if (rv) - fips_post_success(FIPS_TEST_DRBG, dctx->type, &dctx->xflags); - else - fips_post_failed(FIPS_TEST_DRBG, dctx->type, &dctx->xflags); - if (!rv) - dctx->status = DRBG_STATUS_ERROR; - else - dctx->health_check_cnt = 0; - return rv; - } - -int FIPS_selftest_drbg(void) - { - DRBG_CTX *dctx; - DRBG_SELFTEST_DATA *td; - int rv = 1; - dctx = FIPS_drbg_new(0, 0); - if (!dctx) - return 0; - for (td = drbg_test; td->nid != 0; td++) - { - if (td->post != 1) - continue; - if (!fips_post_started(FIPS_TEST_DRBG, td->nid, &td->flags)) - return 1; - if (!fips_drbg_single_kat(dctx, td, 1)) - { - fips_post_failed(FIPS_TEST_DRBG, td->nid, &td->flags); - rv = 0; - continue; - } - if (!fips_post_success(FIPS_TEST_DRBG, td->nid, &td->flags)) - return 0; - } - FIPS_drbg_free(dctx); - return rv; - } - - -int FIPS_selftest_drbg_all(void) - { - DRBG_CTX *dctx; - DRBG_SELFTEST_DATA *td; - int rv = 1; - dctx = FIPS_drbg_new(0, 0); - if (!dctx) - return 0; - for (td = drbg_test; td->nid != 0; td++) - { - if (!fips_post_started(FIPS_TEST_DRBG, td->nid, &td->flags)) - return 1; - if (!fips_drbg_single_kat(dctx, td, 0)) - { - fips_post_failed(FIPS_TEST_DRBG, td->nid, &td->flags); - rv = 0; - continue; - } - if (!fips_drbg_error_check(dctx, td)) - { - fips_post_failed(FIPS_TEST_DRBG, td->nid, &td->flags); - rv = 0; - continue; - } - if (!fips_post_success(FIPS_TEST_DRBG, td->nid, &td->flags)) - return 0; - } - FIPS_drbg_free(dctx); - return rv; - } - diff --git a/fips/rand/fips_drbg_selftest.h b/fips/rand/fips_drbg_selftest.h deleted file mode 100644 index 31e1961553..0000000000 --- a/fips/rand/fips_drbg_selftest.h +++ /dev/null @@ -1,4012 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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.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. - * - */ - -/* Selftest and health check data for the SP800-90 DRBG */ - - -/* AES-128 use df PR */ -__fips_constseg -static const unsigned char aes_128_use_df_pr_entropyinput[] = - { - 0x61,0x52,0x7c,0xe3,0x23,0x7d,0x0a,0x07,0x10,0x0c,0x50,0x33, - 0xc8,0xdb,0xff,0x12 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_pr_nonce[] = - { - 0x51,0x0d,0x85,0x77,0xed,0x22,0x97,0x28 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_pr_personalizationstring[] = - { - 0x59,0x9f,0xbb,0xcd,0xd5,0x25,0x69,0xb5,0xcb,0xb5,0x03,0xfe, - 0xd7,0xd7,0x01,0x67 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_pr_additionalinput[] = - { - 0xef,0x88,0x76,0x01,0xaf,0x3c,0xfe,0x8b,0xaf,0x26,0x06,0x9e, - 0x9a,0x47,0x08,0x76 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_pr_entropyinputpr[] = - { - 0xe2,0x76,0xf9,0xf6,0x3a,0xba,0x10,0x9f,0xbf,0x47,0x0e,0x51, - 0x09,0xfb,0xa3,0xb6 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_pr_int_returnedbits[] = - { - 0xd4,0x98,0x8a,0x46,0x80,0x4c,0xdb,0xa3,0x59,0x02,0x57,0x52, - 0x66,0x1c,0xea,0x5b - }; - -__fips_constseg -static const unsigned char aes_128_use_df_pr_additionalinput2[] = - { - 0x88,0x8c,0x91,0xd6,0xbe,0x56,0x6e,0x08,0x9a,0x62,0x2b,0x11, - 0x3f,0x5e,0x31,0x06 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_pr_entropyinputpr2[] = - { - 0xc0,0x5c,0x6b,0x98,0x01,0x0d,0x58,0x18,0x51,0x18,0x96,0xae, - 0xa7,0xe3,0xa8,0x67 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_pr_returnedbits[] = - { - 0xcf,0x01,0xac,0x22,0x31,0x06,0x8e,0xfc,0xce,0x56,0xea,0x24, - 0x0f,0x38,0x43,0xc6 - }; - - -/* AES-128 use df No PR */ -__fips_constseg -static const unsigned char aes_128_use_df_entropyinput[] = - { - 0x1f,0x8e,0x34,0x82,0x0c,0xb7,0xbe,0xc5,0x01,0x3e,0xd0,0xa3, - 0x9d,0x7d,0x1c,0x9b - }; - -__fips_constseg -static const unsigned char aes_128_use_df_nonce[] = - { - 0xd5,0x4d,0xbd,0x4a,0x93,0x7f,0xb8,0x96 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_personalizationstring[] = - { - 0xab,0xd6,0x3f,0x04,0xfe,0x27,0x6b,0x2d,0xd7,0xc3,0x1c,0xf3, - 0x38,0x66,0xba,0x1b - }; - -__fips_constseg -static const unsigned char aes_128_use_df_additionalinput[] = - { - 0xfe,0xf4,0x09,0xa8,0xb7,0x73,0x27,0x9c,0x5f,0xa7,0xea,0x46, - 0xb5,0xe2,0xb2,0x41 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_int_returnedbits[] = - { - 0x42,0xe4,0x4e,0x7b,0x27,0xdd,0xcb,0xbc,0x0a,0xcf,0xa6,0x67, - 0xe7,0x57,0x11,0xb4 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_entropyinputreseed[] = - { - 0x14,0x26,0x69,0xd9,0xf3,0x65,0x03,0xd6,0x6b,0xb9,0x44,0x0b, - 0xc7,0xc4,0x9e,0x39 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_additionalinputreseed[] = - { - 0x55,0x2e,0x60,0x9a,0x05,0x72,0x8a,0xa8,0xef,0x22,0x81,0x5a, - 0xc8,0x93,0xfa,0x84 - }; - -__fips_constseg -static const unsigned char aes_128_use_df_additionalinput2[] = - { - 0x3c,0x40,0xc8,0xc4,0x16,0x0c,0x21,0xa4,0x37,0x2c,0x8f,0xa5, - 0x06,0x0c,0x15,0x2c - }; - -__fips_constseg -static const unsigned char aes_128_use_df_returnedbits[] = - { - 0xe1,0x3e,0x99,0x98,0x86,0x67,0x0b,0x63,0x7b,0xbe,0x3f,0x88, - 0x46,0x81,0xc7,0x19 - }; - - -/* AES-192 use df PR */ -__fips_constseg -static const unsigned char aes_192_use_df_pr_entropyinput[] = - { - 0x2b,0x4e,0x8b,0xe1,0xf1,0x34,0x80,0x56,0x81,0xf9,0x74,0xec, - 0x17,0x44,0x2a,0xf1,0x14,0xb0,0xbf,0x97,0x39,0xb7,0x04,0x7d - }; - -__fips_constseg -static const unsigned char aes_192_use_df_pr_nonce[] = - { - 0xd6,0x9d,0xeb,0x14,0x4e,0x6c,0x30,0x1e,0x39,0x55,0x73,0xd0, - 0xd1,0x80,0x78,0xfa - }; - -__fips_constseg -static const unsigned char aes_192_use_df_pr_personalizationstring[] = - { - 0xfc,0x43,0x4a,0xf8,0x9a,0x55,0xb3,0x53,0x83,0xe2,0x18,0x16, - 0x0c,0xdc,0xcd,0x5e,0x4f,0xa0,0x03,0x01,0x2b,0x9f,0xe4,0xd5, - 0x7d,0x49,0xf0,0x41,0x9e,0x3d,0x99,0x04 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_pr_additionalinput[] = - { - 0x5e,0x9f,0x49,0x6f,0x21,0x8b,0x1d,0x32,0xd5,0x84,0x5c,0xac, - 0xaf,0xdf,0xe4,0x79,0x9e,0xaf,0xa9,0x82,0xd0,0xf8,0x4f,0xcb, - 0x69,0x10,0x0a,0x7e,0x81,0x57,0xb5,0x36 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_pr_entropyinputpr[] = - { - 0xd4,0x81,0x0c,0xd7,0x66,0x39,0xec,0x42,0x53,0x87,0x41,0xa5, - 0x1e,0x7d,0x80,0x91,0x8e,0xbb,0xed,0xac,0x14,0x02,0x1a,0xd5 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_pr_int_returnedbits[] = - { - 0xdf,0x1d,0x39,0x45,0x7c,0x9b,0xc6,0x2b,0x7d,0x8c,0x93,0xe9, - 0x19,0x30,0x6b,0x67 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_pr_additionalinput2[] = - { - 0x00,0x71,0x27,0x4e,0xd3,0x14,0xf1,0x20,0x7f,0x4a,0x41,0x32, - 0x2a,0x97,0x11,0x43,0x8f,0x4a,0x15,0x7b,0x9b,0x51,0x79,0xda, - 0x49,0x3d,0xde,0xe8,0xbc,0x93,0x91,0x99 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_pr_entropyinputpr2[] = - { - 0x90,0xee,0x76,0xa1,0x45,0x8d,0xb7,0x40,0xb0,0x11,0xbf,0xd0, - 0x65,0xd7,0x3c,0x7c,0x4f,0x20,0x3f,0x4e,0x11,0x9d,0xb3,0x5e - }; - -__fips_constseg -static const unsigned char aes_192_use_df_pr_returnedbits[] = - { - 0x24,0x3b,0x20,0xa4,0x37,0x66,0xba,0x72,0x39,0x3f,0xcf,0x3c, - 0x7e,0x1a,0x2b,0x83 - }; - - -/* AES-192 use df No PR */ -__fips_constseg -static const unsigned char aes_192_use_df_entropyinput[] = - { - 0x8d,0x74,0xa4,0x50,0x1a,0x02,0x68,0x0c,0x2a,0x69,0xc4,0x82, - 0x3b,0xbb,0xda,0x0e,0x7f,0x77,0xa3,0x17,0x78,0x57,0xb2,0x7b - }; - -__fips_constseg -static const unsigned char aes_192_use_df_nonce[] = - { - 0x75,0xd5,0x1f,0xac,0xa4,0x8d,0x42,0x78,0xd7,0x69,0x86,0x9d, - 0x77,0xd7,0x41,0x0e - }; - -__fips_constseg -static const unsigned char aes_192_use_df_personalizationstring[] = - { - 0x4e,0x33,0x41,0x3c,0x9c,0xc2,0xd2,0x53,0xaf,0x90,0xea,0xcf, - 0x19,0x50,0x1e,0xe6,0x6f,0x63,0xc8,0x32,0x22,0xdc,0x07,0x65, - 0x9c,0xd3,0xf8,0x30,0x9e,0xed,0x35,0x70 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_additionalinput[] = - { - 0x5d,0x8b,0x8c,0xc1,0xdf,0x0e,0x02,0x78,0xfb,0x19,0xb8,0x69, - 0x78,0x4e,0x9c,0x52,0xbc,0xc7,0x20,0xc9,0xe6,0x5e,0x77,0x22, - 0x28,0x3d,0x0c,0x9e,0x68,0xa8,0x45,0xd7 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_int_returnedbits[] = - { - 0xd5,0xe7,0x08,0xc5,0x19,0x99,0xd5,0x31,0x03,0x0a,0x74,0xb6, - 0xb7,0xed,0xe9,0xea - }; - -__fips_constseg -static const unsigned char aes_192_use_df_entropyinputreseed[] = - { - 0x9c,0x26,0xda,0xf1,0xac,0xd9,0x5a,0xd6,0xa8,0x65,0xf5,0x02, - 0x8f,0xdc,0xa2,0x09,0x54,0xa6,0xe2,0xa4,0xde,0x32,0xe0,0x01 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_additionalinputreseed[] = - { - 0x9b,0x90,0xb0,0x3a,0x0e,0x3a,0x80,0x07,0x4a,0xf4,0xda,0x76, - 0x28,0x30,0x3c,0xee,0x54,0x1b,0x94,0x59,0x51,0x43,0x56,0x77, - 0xaf,0x88,0xdd,0x63,0x89,0x47,0x06,0x65 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_additionalinput2[] = - { - 0x3c,0x11,0x64,0x7a,0x96,0xf5,0xd8,0xb8,0xae,0xd6,0x70,0x4e, - 0x16,0x96,0xde,0xe9,0x62,0xbc,0xee,0x28,0x2f,0x26,0xa6,0xf0, - 0x56,0xef,0xa3,0xf1,0x6b,0xa1,0xb1,0x77 - }; - -__fips_constseg -static const unsigned char aes_192_use_df_returnedbits[] = - { - 0x0b,0xe2,0x56,0x03,0x1e,0xdb,0x2c,0x6d,0x7f,0x1b,0x15,0x58, - 0x1a,0xf9,0x13,0x28 - }; - - -/* AES-256 use df PR */ -__fips_constseg -static const unsigned char aes_256_use_df_pr_entropyinput[] = - { - 0x61,0x68,0xfc,0x1a,0xf0,0xb5,0x95,0x6b,0x85,0x09,0x9b,0x74, - 0x3f,0x13,0x78,0x49,0x3b,0x85,0xec,0x93,0x13,0x3b,0xa9,0x4f, - 0x96,0xab,0x2c,0xe4,0xc8,0x8f,0xdd,0x6a - }; - -__fips_constseg -static const unsigned char aes_256_use_df_pr_nonce[] = - { - 0xad,0xd2,0xbb,0xba,0xb7,0x65,0x89,0xc3,0x21,0x6c,0x55,0x33, - 0x2b,0x36,0xff,0xa4 - }; - -__fips_constseg -static const unsigned char aes_256_use_df_pr_personalizationstring[] = - { - 0x6e,0xca,0xe7,0x20,0x72,0xd3,0x84,0x5a,0x32,0xd3,0x4b,0x24, - 0x72,0xc4,0x63,0x2b,0x9d,0x12,0x24,0x0c,0x23,0x26,0x8e,0x83, - 0x16,0x37,0x0b,0xd1,0x06,0x4f,0x68,0x6d - }; - -__fips_constseg -static const unsigned char aes_256_use_df_pr_additionalinput[] = - { - 0x7e,0x08,0x4a,0xbb,0xe3,0x21,0x7c,0xc9,0x23,0xd2,0xf8,0xb0, - 0x73,0x98,0xba,0x84,0x74,0x23,0xab,0x06,0x8a,0xe2,0x22,0xd3, - 0x7b,0xce,0x9b,0xd2,0x4a,0x76,0xb8,0xde - }; - -__fips_constseg -static const unsigned char aes_256_use_df_pr_entropyinputpr[] = - { - 0x0b,0x23,0xaf,0xdf,0xf1,0x62,0xd7,0xd3,0x43,0x97,0xf8,0x77, - 0x04,0xa8,0x42,0x20,0xbd,0xf6,0x0f,0xc1,0x17,0x2f,0x9f,0x54, - 0xbb,0x56,0x17,0x86,0x68,0x0e,0xba,0xa9 - }; - -__fips_constseg -static const unsigned char aes_256_use_df_pr_int_returnedbits[] = - { - 0x31,0x8e,0xad,0xaf,0x40,0xeb,0x6b,0x74,0x31,0x46,0x80,0xc7, - 0x17,0xab,0x3c,0x7a - }; - -__fips_constseg -static const unsigned char aes_256_use_df_pr_additionalinput2[] = - { - 0x94,0x6b,0xc9,0x9f,0xab,0x8d,0xc5,0xec,0x71,0x88,0x1d,0x00, - 0x8c,0x89,0x68,0xe4,0xc8,0x07,0x77,0x36,0x17,0x6d,0x79,0x78, - 0xc7,0x06,0x4e,0x99,0x04,0x28,0x29,0xc3 - }; - -__fips_constseg -static const unsigned char aes_256_use_df_pr_entropyinputpr2[] = - { - 0xbf,0x6c,0x59,0x2a,0x0d,0x44,0x0f,0xae,0x9a,0x5e,0x03,0x73, - 0xd8,0xa6,0xe1,0xcf,0x25,0x61,0x38,0x24,0x86,0x9e,0x53,0xe8, - 0xa4,0xdf,0x56,0xf4,0x06,0x07,0x9c,0x0f - }; - -__fips_constseg -static const unsigned char aes_256_use_df_pr_returnedbits[] = - { - 0x22,0x4a,0xb4,0xb8,0xb6,0xee,0x7d,0xb1,0x9e,0xc9,0xf9,0xa0, - 0xd9,0xe2,0x97,0x00 - }; - - -/* AES-256 use df No PR */ -__fips_constseg -static const unsigned char aes_256_use_df_entropyinput[] = - { - 0xa5,0x3e,0x37,0x10,0x17,0x43,0x91,0x93,0x59,0x1e,0x47,0x50, - 0x87,0xaa,0xdd,0xd5,0xc1,0xc3,0x86,0xcd,0xca,0x0d,0xdb,0x68, - 0xe0,0x02,0xd8,0x0f,0xdc,0x40,0x1a,0x47 - }; - -__fips_constseg -static const unsigned char aes_256_use_df_nonce[] = - { - 0xa9,0x4d,0xa5,0x5a,0xfd,0xc5,0x0c,0xe5,0x1c,0x9a,0x3b,0x8a, - 0x4c,0x44,0x84,0x40 - }; - -__fips_constseg -static const unsigned char aes_256_use_df_personalizationstring[] = - { - 0x8b,0x52,0xa2,0x4a,0x93,0xc3,0x4e,0xa7,0x1e,0x1c,0xa7,0x05, - 0xeb,0x82,0x9b,0xa6,0x5d,0xe4,0xd4,0xe0,0x7f,0xa3,0xd8,0x6b, - 0x37,0x84,0x5f,0xf1,0xc7,0xd5,0xf6,0xd2 - }; - -__fips_constseg -static const unsigned char aes_256_use_df_additionalinput[] = - { - 0x20,0xf4,0x22,0xed,0xf8,0x5c,0xa1,0x6a,0x01,0xcf,0xbe,0x5f, - 0x8d,0x6c,0x94,0x7f,0xae,0x12,0xa8,0x57,0xdb,0x2a,0xa9,0xbf, - 0xc7,0xb3,0x65,0x81,0x80,0x8d,0x0d,0x46 - }; - -__fips_constseg -static const unsigned char aes_256_use_df_int_returnedbits[] = - { - 0x4e,0x44,0xfd,0xf3,0x9e,0x29,0xa2,0xb8,0x0f,0x5d,0x6c,0xe1, - 0x28,0x0c,0x3b,0xc1 - }; - -__fips_constseg -static const unsigned char aes_256_use_df_entropyinputreseed[] = - { - 0xdd,0x40,0xe5,0x98,0x7b,0x27,0x16,0x73,0x15,0x68,0xd2,0x76, - 0xbf,0x0c,0x67,0x15,0x75,0x79,0x03,0xd3,0xde,0xde,0x91,0x46, - 0x42,0xdd,0xd4,0x67,0xc8,0x79,0xc8,0x1e - }; - -__fips_constseg -static const unsigned char aes_256_use_df_additionalinputreseed[] = - { - 0x7f,0xd8,0x1f,0xbd,0x2a,0xb5,0x1c,0x11,0x5d,0x83,0x4e,0x99, - 0xf6,0x5c,0xa5,0x40,0x20,0xed,0x38,0x8e,0xd5,0x9e,0xe0,0x75, - 0x93,0xfe,0x12,0x5e,0x5d,0x73,0xfb,0x75 - }; - -__fips_constseg -static const unsigned char aes_256_use_df_additionalinput2[] = - { - 0xcd,0x2c,0xff,0x14,0x69,0x3e,0x4c,0x9e,0xfd,0xfe,0x26,0x0d, - 0xe9,0x86,0x00,0x49,0x30,0xba,0xb1,0xc6,0x50,0x57,0x77,0x2a, - 0x62,0x39,0x2c,0x3b,0x74,0xeb,0xc9,0x0d - }; - -__fips_constseg -static const unsigned char aes_256_use_df_returnedbits[] = - { - 0x4f,0x78,0xbe,0xb9,0x4d,0x97,0x8c,0xe9,0xd0,0x97,0xfe,0xad, - 0xfa,0xfd,0x35,0x5e - }; - - -/* AES-128 no df PR */ -__fips_constseg -static const unsigned char aes_128_no_df_pr_entropyinput[] = - { - 0x9a,0x25,0x65,0x10,0x67,0xd5,0xb6,0x6b,0x70,0xa1,0xb3,0xa4, - 0x43,0x95,0x80,0xc0,0x84,0x0a,0x79,0xb0,0x88,0x74,0xf2,0xbf, - 0x31,0x6c,0x33,0x38,0x0b,0x00,0xb2,0x5a - }; - -__fips_constseg -static const unsigned char aes_128_no_df_pr_nonce[] = - { - 0x78,0x47,0x6b,0xf7,0x90,0x8e,0x87,0xf1 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_pr_personalizationstring[] = - { - 0xf7,0x22,0x1d,0x3a,0xbe,0x1d,0xca,0x32,0x1b,0xbd,0x87,0x0c, - 0x51,0x24,0x19,0xee,0xa3,0x23,0x09,0x63,0x33,0x3d,0xa8,0x0c, - 0x1c,0xfa,0x42,0x89,0xcc,0x6f,0xa0,0xa8 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_pr_additionalinput[] = - { - 0xc9,0xe0,0x80,0xbf,0x8c,0x45,0x58,0x39,0xff,0x00,0xab,0x02, - 0x4c,0x3e,0x3a,0x95,0x9b,0x80,0xa8,0x21,0x2a,0xee,0xba,0x73, - 0xb1,0xd9,0xcf,0x28,0xf6,0x8f,0x9b,0x12 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_pr_entropyinputpr[] = - { - 0x4c,0xa8,0xc5,0xf0,0x59,0x9e,0xa6,0x8d,0x26,0x53,0xd7,0x8a, - 0xa9,0xd8,0xf7,0xed,0xb2,0xf9,0x12,0x42,0xe1,0xe5,0xbd,0xe7, - 0xe7,0x1d,0x74,0x99,0x00,0x9d,0x31,0x3e - }; - -__fips_constseg -static const unsigned char aes_128_no_df_pr_int_returnedbits[] = - { - 0xe2,0xac,0x20,0xf0,0x80,0xe7,0xbc,0x7e,0x9c,0x7b,0x65,0x71, - 0xaf,0x19,0x32,0x16 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_pr_additionalinput2[] = - { - 0x32,0x7f,0x38,0x8b,0x73,0x0a,0x78,0x83,0xdc,0x30,0xbe,0x9f, - 0x10,0x1f,0xf5,0x1f,0xca,0x00,0xb5,0x0d,0xd6,0x9d,0x60,0x83, - 0x51,0x54,0x7d,0x38,0x23,0x3a,0x52,0x50 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_pr_entropyinputpr2[] = - { - 0x18,0x61,0x53,0x56,0xed,0xed,0xd7,0x20,0xfb,0x71,0x04,0x7a, - 0xb2,0xac,0xc1,0x28,0xcd,0xf2,0xc2,0xfc,0xaa,0xb1,0x06,0x07, - 0xe9,0x46,0x95,0x02,0x48,0x01,0x78,0xf9 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_pr_returnedbits[] = - { - 0x29,0xc8,0x1b,0x15,0xb1,0xd1,0xc2,0xf6,0x71,0x86,0x68,0x33, - 0x57,0x82,0x33,0xaf - }; - - -/* AES-128 no df No PR */ -__fips_constseg -static const unsigned char aes_128_no_df_entropyinput[] = - { - 0xc9,0xc5,0x79,0xbc,0xe8,0xc5,0x19,0xd8,0xbc,0x66,0x73,0x67, - 0xf6,0xd3,0x72,0xaa,0xa6,0x16,0xb8,0x50,0xb7,0x47,0x3a,0x42, - 0xab,0xf4,0x16,0xb2,0x96,0xd2,0xb6,0x60 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_nonce[] = - { - 0x5f,0xbf,0x97,0x0c,0x4b,0xa4,0x87,0x13 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_personalizationstring[] = - { - 0xce,0xfb,0x7b,0x3f,0xd4,0x6b,0x29,0x0d,0x69,0x06,0xff,0xbb, - 0xf2,0xe5,0xc6,0x6c,0x0a,0x10,0xa0,0xcf,0x1a,0x48,0xc7,0x8b, - 0x3c,0x16,0x88,0xed,0x50,0x13,0x81,0xce - }; - -__fips_constseg -static const unsigned char aes_128_no_df_additionalinput[] = - { - 0x4b,0x22,0x46,0x18,0x02,0x7b,0xd2,0x1b,0x22,0x42,0x7c,0x37, - 0xd9,0xf6,0xe8,0x9b,0x12,0x30,0x5f,0xe9,0x90,0xe8,0x08,0x24, - 0x4f,0x06,0x66,0xdb,0x19,0x2b,0x13,0x95 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_int_returnedbits[] = - { - 0x2e,0x96,0x70,0x64,0xfa,0xdf,0xdf,0x57,0xb5,0x82,0xee,0xd6, - 0xed,0x3e,0x65,0xc2 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_entropyinputreseed[] = - { - 0x26,0xc0,0x72,0x16,0x3a,0x4b,0xb7,0x99,0xd4,0x07,0xaf,0x66, - 0x62,0x36,0x96,0xa4,0x51,0x17,0xfa,0x07,0x8b,0x17,0x5e,0xa1, - 0x2f,0x3c,0x10,0xe7,0x90,0xd0,0x46,0x00 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_additionalinputreseed[] = - { - 0x83,0x39,0x37,0x7b,0x02,0x06,0xd2,0x12,0x13,0x8d,0x8b,0xf2, - 0xf0,0xf6,0x26,0xeb,0xa4,0x22,0x7b,0xc2,0xe7,0xba,0x79,0xe4, - 0x3b,0x77,0x5d,0x4d,0x47,0xb2,0x2d,0xb4 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_additionalinput2[] = - { - 0x0b,0xb9,0x67,0x37,0xdb,0x83,0xdf,0xca,0x81,0x8b,0xf9,0x3f, - 0xf1,0x11,0x1b,0x2f,0xf0,0x61,0xa6,0xdf,0xba,0xa3,0xb1,0xac, - 0xd3,0xe6,0x09,0xb8,0x2c,0x6a,0x67,0xd6 - }; - -__fips_constseg -static const unsigned char aes_128_no_df_returnedbits[] = - { - 0x1e,0xa7,0xa4,0xe4,0xe1,0xa6,0x7c,0x69,0x9a,0x44,0x6c,0x36, - 0x81,0x37,0x19,0xd4 - }; - - -/* AES-192 no df PR */ -__fips_constseg -static const unsigned char aes_192_no_df_pr_entropyinput[] = - { - 0x9d,0x2c,0xd2,0x55,0x66,0xea,0xe0,0xbe,0x18,0xb7,0x76,0xe7, - 0x73,0x35,0xd8,0x1f,0xad,0x3a,0xe3,0x81,0x0e,0x92,0xd0,0x61, - 0xc9,0x12,0x26,0xf6,0x1c,0xdf,0xfe,0x47,0xaa,0xfe,0x7d,0x5a, - 0x17,0x1f,0x8d,0x9a - }; - -__fips_constseg -static const unsigned char aes_192_no_df_pr_nonce[] = - { - 0x44,0x82,0xed,0xe8,0x4c,0x28,0x5a,0x14,0xff,0x88,0x8d,0x19, - 0x61,0x5c,0xee,0x0f - }; - -__fips_constseg -static const unsigned char aes_192_no_df_pr_personalizationstring[] = - { - 0x47,0xd7,0x9b,0x99,0xaa,0xcb,0xe7,0xd2,0x57,0x66,0x2c,0xe1, - 0x78,0xd6,0x2c,0xea,0xa3,0x23,0x5f,0x2a,0xc1,0x3a,0xf0,0xa4, - 0x20,0x3b,0xfa,0x07,0xd5,0x05,0x02,0xe4,0x57,0x01,0xb6,0x10, - 0x57,0x2e,0xe7,0x55 - }; - -__fips_constseg -static const unsigned char aes_192_no_df_pr_additionalinput[] = - { - 0x4b,0x74,0x0b,0x40,0xce,0x6b,0xc2,0x6a,0x24,0xb4,0xf3,0xad, - 0x7a,0xa5,0x7a,0xa2,0x15,0xe2,0xc8,0x61,0x15,0xc6,0xb7,0x85, - 0x69,0x11,0xad,0x7b,0x14,0xd2,0xf6,0x12,0xa1,0x95,0x5d,0x3f, - 0xe2,0xd0,0x0c,0x2f - }; - -__fips_constseg -static const unsigned char aes_192_no_df_pr_entropyinputpr[] = - { - 0x0c,0x9c,0xad,0x05,0xee,0xae,0x48,0x23,0x89,0x59,0xa1,0x94, - 0xd7,0xd8,0x75,0xd5,0x54,0x93,0xc7,0x4a,0xd9,0x26,0xde,0xeb, - 0xba,0xb0,0x7e,0x30,0x1d,0x5f,0x69,0x40,0x9c,0x3b,0x17,0x58, - 0x1d,0x30,0xb3,0x78 - }; - -__fips_constseg -static const unsigned char aes_192_no_df_pr_int_returnedbits[] = - { - 0xf7,0x93,0xb0,0x6d,0x77,0x83,0xd5,0x38,0x01,0xe1,0x52,0x40, - 0x7e,0x3e,0x0c,0x26 - }; - -__fips_constseg -static const unsigned char aes_192_no_df_pr_additionalinput2[] = - { - 0xbc,0x4b,0x37,0x44,0x1c,0xc5,0x45,0x5f,0x8f,0x51,0x62,0x8a, - 0x85,0x30,0x1d,0x7c,0xe4,0xcf,0xf7,0x44,0xce,0x32,0x3e,0x57, - 0x95,0xa4,0x2a,0xdf,0xfd,0x9e,0x38,0x41,0xb3,0xf6,0xc5,0xee, - 0x0c,0x4b,0xee,0x6e - }; - -__fips_constseg -static const unsigned char aes_192_no_df_pr_entropyinputpr2[] = - { - 0xec,0xaf,0xf6,0x4f,0xb1,0xa0,0x54,0xb5,0x5b,0xe3,0x46,0xb0, - 0x76,0x5a,0x7c,0x3f,0x7b,0x94,0x69,0x21,0x51,0x02,0xe5,0x9f, - 0x04,0x59,0x02,0x98,0xc6,0x43,0x2c,0xcc,0x26,0x4c,0x87,0x6b, - 0x8e,0x0a,0x83,0xdf - }; - -__fips_constseg -static const unsigned char aes_192_no_df_pr_returnedbits[] = - { - 0x74,0x45,0xfb,0x53,0x84,0x96,0xbe,0xff,0x15,0xcc,0x41,0x91, - 0xb9,0xa1,0x21,0x68 - }; - - -/* AES-192 no df No PR */ -__fips_constseg -static const unsigned char aes_192_no_df_entropyinput[] = - { - 0x3c,0x7d,0xb5,0xe0,0x54,0xd9,0x6e,0x8c,0xa9,0x86,0xce,0x4e, - 0x6b,0xaf,0xeb,0x2f,0xe7,0x75,0xe0,0x8b,0xa4,0x3b,0x07,0xfe, - 0xbe,0x33,0x75,0x93,0x80,0x27,0xb5,0x29,0x47,0x8b,0xc7,0x28, - 0x94,0xc3,0x59,0x63 - }; - -__fips_constseg -static const unsigned char aes_192_no_df_nonce[] = - { - 0x43,0xf1,0x7d,0xb8,0xc3,0xfe,0xd0,0x23,0x6b,0xb4,0x92,0xdb, - 0x29,0xfd,0x45,0x71 - }; - -__fips_constseg -static const unsigned char aes_192_no_df_personalizationstring[] = - { - 0x9f,0x24,0x29,0x99,0x9e,0x01,0xab,0xe9,0x19,0xd8,0x23,0x08, - 0xb7,0xd6,0x7e,0x8c,0xc0,0x9e,0x7f,0x6e,0x5b,0x33,0x20,0x96, - 0x0b,0x23,0x2c,0xa5,0x6a,0xf8,0x1b,0x04,0x26,0xdb,0x2e,0x2b, - 0x3b,0x88,0xce,0x35 - }; - -__fips_constseg -static const unsigned char aes_192_no_df_additionalinput[] = - { - 0x94,0xe9,0x7c,0x3d,0xa7,0xdb,0x60,0x83,0x1f,0x98,0x3f,0x0b, - 0x88,0x59,0x57,0x51,0x88,0x9f,0x76,0x49,0x9f,0xa6,0xda,0x71, - 0x1d,0x0d,0x47,0x16,0x63,0xc5,0x68,0xe4,0x5d,0x39,0x69,0xb3, - 0x3e,0xbe,0xd4,0x8e - }; - -__fips_constseg -static const unsigned char aes_192_no_df_int_returnedbits[] = - { - 0xf9,0xd7,0xad,0x69,0xab,0x8f,0x23,0x56,0x70,0x17,0x4f,0x2a, - 0x45,0xe7,0x4a,0xc5 - }; - -__fips_constseg -static const unsigned char aes_192_no_df_entropyinputreseed[] = - { - 0xa6,0x71,0x6a,0x3d,0xba,0xd1,0xe8,0x66,0xa6,0xef,0xb2,0x0e, - 0xa8,0x9c,0xaa,0x4e,0xaf,0x17,0x89,0x50,0x00,0xda,0xa1,0xb1, - 0x0b,0xa4,0xd9,0x35,0x89,0xc8,0xe5,0xb0,0xd9,0xb7,0xc4,0x33, - 0x9b,0xcb,0x7e,0x75 - }; - -__fips_constseg -static const unsigned char aes_192_no_df_additionalinputreseed[] = - { - 0x27,0x21,0xfc,0xc2,0xbd,0xf3,0x3c,0xce,0xc3,0xca,0xc1,0x01, - 0xe0,0xff,0x93,0x12,0x7d,0x54,0x42,0xe3,0x9f,0x03,0xdf,0x27, - 0x04,0x07,0x3c,0x53,0x7f,0xa8,0x66,0xc8,0x97,0x4b,0x61,0x40, - 0x5d,0x7a,0x25,0x79 - }; - -__fips_constseg -static const unsigned char aes_192_no_df_additionalinput2[] = - { - 0x2d,0x8e,0x16,0x5d,0x0b,0x9f,0xeb,0xaa,0xd6,0xec,0x28,0x71, - 0x7c,0x0b,0xc1,0x1d,0xd4,0x44,0x19,0x47,0xfd,0x1d,0x7c,0xe5, - 0xf3,0x27,0xe1,0xb6,0x72,0x0a,0xe0,0xec,0x0e,0xcd,0xef,0x1a, - 0x91,0x6a,0xe3,0x5f - }; - -__fips_constseg -static const unsigned char aes_192_no_df_returnedbits[] = - { - 0xe5,0xda,0xb8,0xe0,0x63,0x59,0x5a,0xcc,0x3d,0xdc,0x9f,0xe8, - 0x66,0x67,0x2c,0x92 - }; - - -/* AES-256 no df PR */ -__fips_constseg -static const unsigned char aes_256_no_df_pr_entropyinput[] = - { - 0x15,0xc7,0x5d,0xcb,0x41,0x4b,0x16,0x01,0x3a,0xd1,0x44,0xe8, - 0x22,0x32,0xc6,0x9c,0x3f,0xe7,0x43,0xf5,0x9a,0xd3,0xea,0xf2, - 0xd7,0x4e,0x6e,0x6a,0x55,0x73,0x40,0xef,0x89,0xad,0x0d,0x03, - 0x96,0x7e,0x78,0x81,0x2f,0x91,0x1b,0x44,0xb0,0x02,0xba,0x1c - }; - -__fips_constseg -static const unsigned char aes_256_no_df_pr_nonce[] = - { - 0xdc,0xe4,0xd4,0x27,0x7a,0x90,0xd7,0x99,0x43,0xa1,0x3c,0x30, - 0xcc,0x4b,0xee,0x2e - }; - -__fips_constseg -static const unsigned char aes_256_no_df_pr_personalizationstring[] = - { - 0xe3,0xe6,0xb9,0x11,0xe4,0x7a,0xa4,0x40,0x6b,0xf8,0x73,0xf7, - 0x7e,0xec,0xc7,0xb9,0x97,0xbf,0xf8,0x25,0x7b,0xbe,0x11,0x9b, - 0x5b,0x6a,0x0c,0x2e,0x2b,0x01,0x51,0xcd,0x41,0x4b,0x6b,0xac, - 0x31,0xa8,0x0b,0xf7,0xe6,0x59,0x42,0xb8,0x03,0x0c,0xf8,0x06 - }; - -__fips_constseg -static const unsigned char aes_256_no_df_pr_additionalinput[] = - { - 0x6a,0x9f,0x00,0x91,0xae,0xfe,0xcf,0x84,0x99,0xce,0xb1,0x40, - 0x6d,0x5d,0x33,0x28,0x84,0xf4,0x8c,0x63,0x4c,0x7e,0xbd,0x2c, - 0x80,0x76,0xee,0x5a,0xaa,0x15,0x07,0x31,0xd8,0xbb,0x8c,0x69, - 0x9d,0x9d,0xbc,0x7e,0x49,0xae,0xec,0x39,0x6b,0xd1,0x1f,0x7e - }; - -__fips_constseg -static const unsigned char aes_256_no_df_pr_entropyinputpr[] = - { - 0xf3,0xb9,0x75,0x9c,0xbd,0x88,0xea,0xa2,0x50,0xad,0xd6,0x16, - 0x1a,0x12,0x3c,0x86,0x68,0xaf,0x6f,0xbe,0x19,0xf2,0xee,0xcc, - 0xa5,0x70,0x84,0x53,0x50,0xcb,0x9f,0x14,0xa9,0xe5,0xee,0xb9, - 0x48,0x45,0x40,0xe2,0xc7,0xc9,0x9a,0x74,0xff,0x8c,0x99,0x1f - }; - -__fips_constseg -static const unsigned char aes_256_no_df_pr_int_returnedbits[] = - { - 0x2e,0xf2,0x45,0x4c,0x62,0x2e,0x0a,0xb9,0x6b,0xa2,0xfd,0x56, - 0x79,0x60,0x93,0xcf - }; - -__fips_constseg -static const unsigned char aes_256_no_df_pr_additionalinput2[] = - { - 0xaf,0x69,0x20,0xe9,0x3b,0x37,0x9d,0x3f,0xb4,0x80,0x02,0x7a, - 0x25,0x7d,0xb8,0xde,0x71,0xc5,0x06,0x0c,0xb4,0xe2,0x8f,0x35, - 0xd8,0x14,0x0d,0x7f,0x76,0x63,0x4e,0xb5,0xee,0xe9,0x6f,0x34, - 0xc7,0x5f,0x56,0x14,0x4a,0xe8,0x73,0x95,0x5b,0x1c,0xb9,0xcb - }; - -__fips_constseg -static const unsigned char aes_256_no_df_pr_entropyinputpr2[] = - { - 0xe5,0xb0,0x2e,0x7e,0x52,0x30,0xe3,0x63,0x82,0xb6,0x44,0xd3, - 0x25,0x19,0x05,0x24,0x9a,0x9f,0x5f,0x27,0x6a,0x29,0xab,0xfa, - 0x07,0xa2,0x42,0x0f,0xc5,0xa8,0x94,0x7c,0x17,0x7b,0x85,0x83, - 0x0c,0x25,0x0e,0x63,0x0b,0xe9,0x12,0x60,0xcd,0xef,0x80,0x0f - }; - -__fips_constseg -static const unsigned char aes_256_no_df_pr_returnedbits[] = - { - 0x5e,0xf2,0x26,0xef,0x9f,0x58,0x5d,0xd5,0x4a,0x10,0xfe,0xa7, - 0x2d,0x5f,0x4a,0x46 - }; - - -/* AES-256 no df No PR */ -__fips_constseg -static const unsigned char aes_256_no_df_entropyinput[] = - { - 0xfb,0xcf,0x1b,0x61,0x16,0x89,0x78,0x23,0xf5,0xd8,0x96,0xe3, - 0x4e,0x64,0x0b,0x29,0x9a,0x3f,0xf8,0xa5,0xed,0xf2,0xfe,0xdb, - 0x16,0xca,0x7f,0x10,0xfa,0x5e,0x18,0x76,0x2c,0x63,0x5e,0x96, - 0xcf,0xb3,0xd6,0xfc,0xaf,0x99,0x39,0x28,0x9c,0x61,0xe8,0xb3 - }; - -__fips_constseg -static const unsigned char aes_256_no_df_nonce[] = - { - 0x12,0x96,0xf0,0x52,0xf3,0x8d,0x81,0xcf,0xde,0x86,0xf2,0x99, - 0x43,0x96,0xb9,0xf0 - }; - -__fips_constseg -static const unsigned char aes_256_no_df_personalizationstring[] = - { - 0x63,0x0d,0x78,0xf5,0x90,0x8e,0x32,0x47,0xb0,0x4d,0x37,0x60, - 0x09,0x96,0xbc,0xbf,0x97,0x7a,0x62,0x14,0x45,0xbd,0x8d,0xcc, - 0x69,0xfb,0x03,0xe1,0x80,0x1c,0xc7,0xe2,0x2a,0xf9,0x37,0x3f, - 0x66,0x4d,0x62,0xd9,0x10,0xe0,0xad,0xc8,0x9a,0xf0,0xa8,0x6d - }; - -__fips_constseg -static const unsigned char aes_256_no_df_additionalinput[] = - { - 0x36,0xc6,0x13,0x60,0xbb,0x14,0xad,0x22,0xb0,0x38,0xac,0xa6, - 0x18,0x16,0x93,0x25,0x86,0xb7,0xdc,0xdc,0x36,0x98,0x2b,0xf9, - 0x68,0x33,0xd3,0xc6,0xff,0xce,0x8d,0x15,0x59,0x82,0x76,0xed, - 0x6f,0x8d,0x49,0x74,0x2f,0xda,0xdc,0x1f,0x17,0xd0,0xde,0x17 - }; - -__fips_constseg -static const unsigned char aes_256_no_df_int_returnedbits[] = - { - 0x16,0x2f,0x8e,0x3f,0x21,0x7a,0x1c,0x20,0x56,0xd1,0x92,0xf6, - 0xd2,0x25,0x75,0x0e - }; - -__fips_constseg -static const unsigned char aes_256_no_df_entropyinputreseed[] = - { - 0x91,0x79,0x76,0xee,0xe0,0xcf,0x9e,0xc2,0xd5,0xd4,0x23,0x9b, - 0x12,0x8c,0x7e,0x0a,0xb7,0xd2,0x8b,0xd6,0x7c,0xa3,0xc6,0xe5, - 0x0e,0xaa,0xc7,0x6b,0xae,0x0d,0xfa,0x53,0x06,0x79,0xa1,0xed, - 0x4d,0x6a,0x0e,0xd8,0x9d,0xbe,0x1b,0x31,0x93,0x7b,0xec,0xfb - }; - -__fips_constseg -static const unsigned char aes_256_no_df_additionalinputreseed[] = - { - 0xd2,0x46,0x50,0x22,0x10,0x14,0x63,0xf7,0xea,0x0f,0xb9,0x7e, - 0x0d,0xe1,0x94,0x07,0xaf,0x09,0x44,0x31,0xea,0x64,0xa4,0x18, - 0x5b,0xf9,0xd8,0xc2,0xfa,0x03,0x47,0xc5,0x39,0x43,0xd5,0x3b, - 0x62,0x86,0x64,0xea,0x2c,0x73,0x8c,0xae,0x9d,0x98,0x98,0x29 - }; - -__fips_constseg -static const unsigned char aes_256_no_df_additionalinput2[] = - { - 0x8c,0xab,0x18,0xf8,0xc3,0xec,0x18,0x5c,0xb3,0x1e,0x9d,0xbe, - 0x3f,0x03,0xb4,0x00,0x98,0x9d,0xae,0xeb,0xf4,0x94,0xf8,0x42, - 0x8f,0xe3,0x39,0x07,0xe1,0xc9,0xad,0x0b,0x1f,0xed,0xc0,0xba, - 0xf6,0xd1,0xec,0x27,0x86,0x7b,0xd6,0x55,0x9b,0x60,0xa5,0xc6 - }; - -__fips_constseg -static const unsigned char aes_256_no_df_returnedbits[] = - { - 0xef,0xd2,0xd8,0x5c,0xdc,0x62,0x25,0x9f,0xaa,0x1e,0x2c,0x67, - 0xf6,0x02,0x32,0xe2 - }; - - -/* SHA-1 PR */ -__fips_constseg -static const unsigned char sha1_pr_entropyinput[] = - { - 0xd2,0x36,0xa5,0x27,0x31,0x73,0xdd,0x11,0x4f,0x93,0xbd,0xe2, - 0x31,0xa5,0x91,0x13 - }; - -__fips_constseg -static const unsigned char sha1_pr_nonce[] = - { - 0xb5,0xb3,0x60,0xef,0xf7,0x63,0x31,0xf3 - }; - -__fips_constseg -static const unsigned char sha1_pr_personalizationstring[] = - { - 0xd4,0xbb,0x02,0x10,0xb2,0x71,0xdb,0x81,0xd6,0xf0,0x42,0x60, - 0xda,0xea,0x77,0x52 - }; - -__fips_constseg -static const unsigned char sha1_pr_additionalinput[] = - { - 0x4d,0xd2,0x6c,0x87,0xfb,0x2c,0x4f,0xa6,0x8d,0x16,0x63,0x22, - 0x6a,0x51,0xe3,0xf8 - }; - -__fips_constseg -static const unsigned char sha1_pr_entropyinputpr[] = - { - 0xc9,0x83,0x9e,0x16,0xf6,0x1c,0x0f,0xb2,0xec,0x60,0x31,0xa9, - 0xcb,0xa9,0x36,0x7a - }; - -__fips_constseg -static const unsigned char sha1_pr_int_returnedbits[] = - { - 0xa8,0x13,0x4f,0xf4,0x31,0x02,0x44,0xe3,0xd3,0x3d,0x61,0x9e, - 0xe5,0xc6,0x3e,0x89,0xb5,0x9b,0x0f,0x35 - }; - -__fips_constseg -static const unsigned char sha1_pr_additionalinput2[] = - { - 0xf9,0xe8,0xd2,0x72,0x13,0x34,0x95,0x6f,0x15,0x49,0x47,0x99, - 0x16,0x03,0x19,0x47 - }; - -__fips_constseg -static const unsigned char sha1_pr_entropyinputpr2[] = - { - 0x4e,0x8c,0x49,0x9b,0x4a,0x5c,0x9b,0x9c,0x3a,0xee,0xfb,0xd2, - 0xae,0xcd,0x8c,0xc4 - }; - -__fips_constseg -static const unsigned char sha1_pr_returnedbits[] = - { - 0x50,0xb4,0xb4,0xcd,0x68,0x57,0xfc,0x2e,0xc1,0x52,0xcc,0xf6, - 0x68,0xa4,0x81,0xed,0x7e,0xe4,0x1d,0x87 - }; - - -/* SHA-1 No PR */ -__fips_constseg -static const unsigned char sha1_entropyinput[] = - { - 0xa9,0x47,0x1b,0x29,0x2d,0x1c,0x05,0xdf,0x76,0xd0,0x62,0xf9, - 0xe2,0x7f,0x4c,0x7b - }; - -__fips_constseg -static const unsigned char sha1_nonce[] = - { - 0x53,0x23,0x24,0xe3,0xec,0x0c,0x54,0x14 - }; - -__fips_constseg -static const unsigned char sha1_personalizationstring[] = - { - 0x7a,0x87,0xa1,0xac,0x1c,0xfd,0xab,0xae,0xf7,0xd6,0xfb,0x76, - 0x28,0xec,0x6d,0xca - }; - -__fips_constseg -static const unsigned char sha1_additionalinput[] = - { - 0xfc,0x92,0x35,0xd6,0x7e,0xb7,0x24,0x65,0xfd,0x12,0x27,0x35, - 0xc0,0x72,0xca,0x28 - }; - -__fips_constseg -static const unsigned char sha1_int_returnedbits[] = - { - 0x57,0x88,0x82,0xe5,0x25,0xa5,0x2c,0x4a,0x06,0x20,0x6c,0x72, - 0x55,0x61,0xdd,0x90,0x71,0x9f,0x95,0xea - }; - -__fips_constseg -static const unsigned char sha1_entropyinputreseed[] = - { - 0x69,0xa5,0x40,0x62,0x98,0x47,0x56,0x73,0x4a,0x8f,0x60,0x96, - 0xd6,0x99,0x27,0xed - }; - -__fips_constseg -static const unsigned char sha1_additionalinputreseed[] = - { - 0xe5,0x40,0x4e,0xbd,0x50,0x00,0xf5,0x15,0xa6,0xee,0x45,0xda, - 0x84,0x3d,0xd4,0xc0 - }; - -__fips_constseg -static const unsigned char sha1_additionalinput2[] = - { - 0x11,0x51,0x14,0xf0,0x09,0x1b,0x4e,0x56,0x0d,0xe9,0xf6,0x1e, - 0x52,0x65,0xcd,0x96 - }; - -__fips_constseg -static const unsigned char sha1_returnedbits[] = - { - 0xa1,0x9c,0x94,0x6e,0x29,0xe1,0x33,0x0d,0x32,0xd6,0xaa,0xce, - 0x71,0x3f,0x52,0x72,0x8b,0x42,0xa8,0xd7 - }; - - -/* SHA-224 PR */ -__fips_constseg -static const unsigned char sha224_pr_entropyinput[] = - { - 0x12,0x69,0x32,0x4f,0x83,0xa6,0xf5,0x14,0xe3,0x49,0x3e,0x75, - 0x3e,0xde,0xad,0xa1,0x29,0xc3,0xf3,0x19,0x20,0xb5,0x4c,0xd9 - }; - -__fips_constseg -static const unsigned char sha224_pr_nonce[] = - { - 0x6a,0x78,0xd0,0xeb,0xbb,0x5a,0xf0,0xee,0xe8,0xc3,0xba,0x71 - }; - -__fips_constseg -static const unsigned char sha224_pr_personalizationstring[] = - { - 0xd5,0xb8,0xb6,0xbc,0xc1,0x5b,0x60,0x31,0x3c,0xf5,0xe5,0xc0, - 0x8e,0x52,0x7a,0xbd,0xea,0x47,0xa9,0x5f,0x8f,0xf9,0x8b,0xae - }; - -__fips_constseg -static const unsigned char sha224_pr_additionalinput[] = - { - 0x1f,0x55,0xec,0xae,0x16,0x12,0x84,0xba,0x84,0x16,0x19,0x88, - 0x8e,0xb8,0x33,0x25,0x54,0xff,0xca,0x79,0xaf,0x07,0x25,0x50 - }; - -__fips_constseg -static const unsigned char sha224_pr_entropyinputpr[] = - { - 0x92,0xa3,0x32,0xa8,0x9a,0x0a,0x58,0x7c,0x1d,0x5a,0x7e,0xe1, - 0xb2,0x73,0xab,0x0e,0x16,0x79,0x23,0xd3,0x29,0x89,0x81,0xe1 - }; - -__fips_constseg -static const unsigned char sha224_pr_int_returnedbits[] = - { - 0xf3,0x38,0x91,0x40,0x37,0x7a,0x51,0x72,0x42,0x74,0x78,0x0a, - 0x69,0xfd,0xa6,0x44,0x43,0x45,0x6c,0x0c,0x5a,0x19,0xff,0xf1, - 0x54,0x60,0xee,0x6a - }; - -__fips_constseg -static const unsigned char sha224_pr_additionalinput2[] = - { - 0x75,0xf3,0x04,0x25,0xdd,0x36,0xa8,0x37,0x46,0xae,0x0c,0x52, - 0x05,0x79,0x4c,0x26,0xdb,0xe9,0x71,0x16,0x4c,0x0a,0xf2,0x60 - }; - -__fips_constseg -static const unsigned char sha224_pr_entropyinputpr2[] = - { - 0xea,0xc5,0x03,0x0a,0x4f,0xb0,0x38,0x8d,0x23,0xd4,0xc8,0x77, - 0xe2,0x6d,0x9c,0x0b,0x44,0xf7,0x2d,0x5b,0xbf,0x5d,0x2a,0x11 - }; - -__fips_constseg -static const unsigned char sha224_pr_returnedbits[] = - { - 0x60,0x50,0x2b,0xe7,0x86,0xd8,0x26,0x73,0xe3,0x1d,0x95,0x20, - 0xb3,0x2c,0x32,0x1c,0xf5,0xce,0x57,0xa6,0x67,0x2b,0xdc,0x4e, - 0xdd,0x11,0x4c,0xc4 - }; - - -/* SHA-224 No PR */ -__fips_constseg -static const unsigned char sha224_entropyinput[] = - { - 0xb2,0x1c,0x77,0x4d,0xf6,0xd3,0xb6,0x40,0xb7,0x30,0x3e,0x29, - 0xb0,0x85,0x1c,0xbe,0x4a,0xea,0x6b,0x5a,0xb5,0x8a,0x97,0xeb - }; - -__fips_constseg -static const unsigned char sha224_nonce[] = - { - 0x42,0x02,0x0a,0x1c,0x98,0x9a,0x77,0x9e,0x9f,0x80,0xba,0xe0 - }; - -__fips_constseg -static const unsigned char sha224_personalizationstring[] = - { - 0x98,0xb8,0x04,0x41,0xfc,0xc1,0x5d,0xc5,0xe9,0xb9,0x08,0xda, - 0xf9,0xfa,0x0d,0x90,0xce,0xdf,0x1d,0x10,0xa9,0x8d,0x50,0x0c - }; - -__fips_constseg -static const unsigned char sha224_additionalinput[] = - { - 0x9a,0x8d,0x39,0x49,0x42,0xd5,0x0b,0xae,0xe1,0xaf,0xb7,0x00, - 0x02,0xfa,0x96,0xb1,0xa5,0x1d,0x2d,0x25,0x78,0xee,0x83,0x3f - }; - -__fips_constseg -static const unsigned char sha224_int_returnedbits[] = - { - 0xe4,0xf5,0x53,0x79,0x5a,0x97,0x58,0x06,0x08,0xba,0x7b,0xfa, - 0xf0,0x83,0x05,0x8c,0x22,0xc0,0xc9,0xdb,0x15,0xe7,0xde,0x20, - 0x55,0x22,0x9a,0xad - }; - -__fips_constseg -static const unsigned char sha224_entropyinputreseed[] = - { - 0x67,0x09,0x48,0xaa,0x07,0x16,0x99,0x89,0x7f,0x6d,0xa0,0xe5, - 0x8f,0xdf,0xbc,0xdb,0xfe,0xe5,0x6c,0x7a,0x95,0x4a,0x66,0x17 - }; - -__fips_constseg -static const unsigned char sha224_additionalinputreseed[] = - { - 0x0f,0x4b,0x1c,0x6f,0xb7,0xe3,0x47,0xe5,0x5d,0x7d,0x38,0xd6, - 0x28,0x9b,0xeb,0x55,0x63,0x09,0x3e,0x7c,0x56,0xea,0xf8,0x19 - }; - -__fips_constseg -static const unsigned char sha224_additionalinput2[] = - { - 0x2d,0x26,0x7c,0x37,0xe4,0x7a,0x28,0x5e,0x5a,0x3c,0xaf,0x3d, - 0x5a,0x8e,0x55,0xa2,0x1a,0x6e,0xc0,0xe5,0xf6,0x21,0xd3,0xf6 - }; - -__fips_constseg -static const unsigned char sha224_returnedbits[] = - { - 0x4d,0x83,0x35,0xdf,0x67,0xa9,0xfc,0x17,0xda,0x70,0xcc,0x8b, - 0x7f,0x77,0xae,0xa2,0x5f,0xb9,0x7e,0x74,0x4c,0x26,0xc1,0x7a, - 0x3b,0xa7,0x5c,0x93 - }; - - -/* SHA-256 PR */ -__fips_constseg -static const unsigned char sha256_pr_entropyinput[] = - { - 0xce,0x49,0x00,0x7a,0x56,0xe3,0x67,0x8f,0xe1,0xb6,0xa7,0xd4, - 0x4f,0x08,0x7a,0x1b,0x01,0xf4,0xfa,0x6b,0xef,0xb7,0xe5,0xeb, - 0x07,0x3d,0x11,0x0d,0xc8,0xea,0x2b,0xfe - }; - -__fips_constseg -static const unsigned char sha256_pr_nonce[] = - { - 0x73,0x41,0xc8,0x92,0x94,0xe2,0xc5,0x5f,0x93,0xfd,0x39,0x5d, - 0x2b,0x91,0x4d,0x38 - }; - -__fips_constseg -static const unsigned char sha256_pr_personalizationstring[] = - { - 0x50,0x6d,0x01,0x01,0x07,0x5a,0x80,0x35,0x7a,0x56,0x1a,0x56, - 0x2f,0x9a,0x0b,0x35,0xb2,0xb1,0xc9,0xe5,0xca,0x69,0x61,0x48, - 0xff,0xfb,0x0f,0xd9,0x4b,0x79,0x1d,0xba - }; - -__fips_constseg -static const unsigned char sha256_pr_additionalinput[] = - { - 0x20,0xb8,0xdf,0x44,0x77,0x5a,0xb8,0xd3,0xbf,0xf6,0xcf,0xac, - 0x5e,0xa6,0x96,0x62,0x73,0x44,0x40,0x4a,0x30,0xfb,0x38,0xa5, - 0x7b,0x0d,0xe4,0x0d,0xc6,0xe4,0x9a,0x1f - }; - -__fips_constseg -static const unsigned char sha256_pr_entropyinputpr[] = - { - 0x04,0xc4,0x65,0xf4,0xd3,0xbf,0x83,0x4b,0xab,0xc8,0x41,0xa8, - 0xc2,0xe0,0x44,0x63,0x77,0x4c,0x6f,0x6c,0x49,0x46,0xff,0x94, - 0x17,0xea,0xe6,0x1a,0x9d,0x5e,0x66,0x78 - }; - -__fips_constseg -static const unsigned char sha256_pr_int_returnedbits[] = - { - 0x07,0x4d,0xac,0x9b,0x86,0xca,0x4a,0xaa,0x6e,0x7a,0x03,0xa2, - 0x5d,0x10,0xea,0x0b,0xf9,0x83,0xcc,0xd1,0xfc,0xe2,0x07,0xc7, - 0x06,0x34,0x60,0x6f,0x83,0x94,0x99,0x76 - }; - -__fips_constseg -static const unsigned char sha256_pr_additionalinput2[] = - { - 0x89,0x4e,0x45,0x8c,0x11,0xf9,0xbc,0x5b,0xac,0x74,0x8b,0x4b, - 0x5f,0xf7,0x19,0xf3,0xf5,0x24,0x54,0x14,0xd1,0x15,0xb1,0x43, - 0x12,0xa4,0x5f,0xd4,0xec,0xfc,0xcd,0x09 - }; - -__fips_constseg -static const unsigned char sha256_pr_entropyinputpr2[] = - { - 0x0e,0xeb,0x1f,0xd7,0xfc,0xd1,0x9d,0xd4,0x05,0x36,0x8b,0xb2, - 0xfb,0xe4,0xf4,0x51,0x0c,0x87,0x9b,0x02,0x44,0xd5,0x92,0x4d, - 0x44,0xfe,0x1a,0x03,0x43,0x56,0xbd,0x86 - }; - -__fips_constseg -static const unsigned char sha256_pr_returnedbits[] = - { - 0x02,0xaa,0xb6,0x1d,0x7e,0x2a,0x40,0x03,0x69,0x2d,0x49,0xa3, - 0x41,0xe7,0x44,0x0b,0xaf,0x7b,0x85,0xe4,0x5f,0x53,0x3b,0x64, - 0xbc,0x89,0xc8,0x82,0xd4,0x78,0x37,0xa2 - }; - - -/* SHA-256 No PR */ -__fips_constseg -static const unsigned char sha256_entropyinput[] = - { - 0x5b,0x1b,0xec,0x4d,0xa9,0x38,0x74,0x5a,0x34,0x0b,0x7b,0xc5, - 0xe5,0xd7,0x66,0x7c,0xbc,0x82,0xb9,0x0e,0x2d,0x1f,0x92,0xd7, - 0xc1,0xbc,0x67,0x69,0xec,0x6b,0x03,0x3c - }; - -__fips_constseg -static const unsigned char sha256_nonce[] = - { - 0xa4,0x0c,0xd8,0x9c,0x61,0xd8,0xc3,0x54,0xfe,0x53,0xc9,0xe5, - 0x5d,0x6f,0x6d,0x35 - }; - -__fips_constseg -static const unsigned char sha256_personalizationstring[] = - { - 0x22,0x5e,0x62,0x93,0x42,0x83,0x78,0x24,0xd8,0x40,0x8c,0xde, - 0x6f,0xf9,0xa4,0x7a,0xc5,0xa7,0x3b,0x88,0xa3,0xee,0x42,0x20, - 0xfd,0x61,0x56,0xc6,0x4c,0x13,0x41,0x9c - }; - -__fips_constseg -static const unsigned char sha256_additionalinput[] = - { - 0xbf,0x74,0x5b,0xf6,0xc5,0x64,0x5e,0x99,0x34,0x8f,0xbc,0xa4, - 0xe2,0xbd,0xd8,0x85,0x26,0x37,0xea,0xba,0x4f,0xf2,0x9a,0x9a, - 0x66,0xfc,0xdf,0x63,0x26,0x26,0x19,0x87 - }; - -__fips_constseg -static const unsigned char sha256_int_returnedbits[] = - { - 0xb3,0xc6,0x07,0x07,0xd6,0x75,0xf6,0x2b,0xd6,0x21,0x96,0xf1, - 0xae,0xdb,0x2b,0xac,0x25,0x2a,0xae,0xae,0x41,0x72,0x03,0x5e, - 0xbf,0xd3,0x64,0xbc,0x59,0xf9,0xc0,0x76 - }; - -__fips_constseg -static const unsigned char sha256_entropyinputreseed[] = - { - 0xbf,0x20,0x33,0x56,0x29,0xa8,0x37,0x04,0x1f,0x78,0x34,0x3d, - 0x81,0x2a,0xc9,0x86,0xc6,0x7a,0x2f,0x88,0x5e,0xd5,0xbe,0x34, - 0x46,0x20,0xa4,0x35,0xeb,0xc7,0xe2,0x9d - }; - -__fips_constseg -static const unsigned char sha256_additionalinputreseed[] = - { - 0x9b,0xae,0x2d,0x2d,0x61,0xa4,0x89,0xeb,0x43,0x46,0xa7,0xda, - 0xef,0x40,0xca,0x4a,0x99,0x11,0x41,0xdc,0x5c,0x94,0xe9,0xac, - 0xd4,0xd0,0xe6,0xbd,0xfb,0x03,0x9c,0xa8 - }; - -__fips_constseg -static const unsigned char sha256_additionalinput2[] = - { - 0x23,0xaa,0x0c,0xbd,0x28,0x33,0xe2,0x51,0xfc,0x71,0xd2,0x15, - 0x1f,0x76,0xfd,0x0d,0xe0,0xb7,0xb5,0x84,0x75,0x5b,0xbe,0xf3, - 0x5c,0xca,0xc5,0x30,0xf2,0x75,0x1f,0xda - }; - -__fips_constseg -static const unsigned char sha256_returnedbits[] = - { - 0x90,0x3c,0xc1,0x10,0x8c,0x12,0x01,0xc6,0xa6,0x3a,0x0f,0x4d, - 0xb6,0x3a,0x4f,0x41,0x9c,0x61,0x75,0x84,0xe9,0x74,0x75,0xfd, - 0xfe,0xf2,0x1f,0x43,0xd8,0x5e,0x24,0xa3 - }; - - -/* SHA-384 PR */ -__fips_constseg -static const unsigned char sha384_pr_entropyinput[] = - { - 0x71,0x9d,0xb2,0x5a,0x71,0x6d,0x04,0xe9,0x1e,0xc7,0x92,0x24, - 0x6e,0x12,0x33,0xa9,0x52,0x64,0x31,0xef,0x71,0xeb,0x22,0x55, - 0x28,0x97,0x06,0x6a,0xc0,0x0c,0xa0,0x7e - }; - -__fips_constseg -static const unsigned char sha384_pr_nonce[] = - { - 0xf5,0x0d,0xfa,0xb0,0xec,0x6a,0x7c,0xd6,0xbd,0x9b,0x05,0xfd, - 0x38,0x3e,0x2e,0x56 - }; - -__fips_constseg -static const unsigned char sha384_pr_personalizationstring[] = - { - 0x74,0xac,0x7e,0x6d,0xb1,0xa4,0xe7,0x21,0xd1,0x1e,0x6e,0x96, - 0x6d,0x4d,0x53,0x46,0x82,0x96,0x6e,0xcf,0xaa,0x81,0x8d,0x7d, - 0x9e,0xe1,0x0f,0x15,0xea,0x41,0xbf,0xe3 - }; - -__fips_constseg -static const unsigned char sha384_pr_additionalinput[] = - { - 0xda,0x95,0xd4,0xd0,0xb8,0x11,0xd3,0x49,0x27,0x5d,0xa9,0x39, - 0x68,0xf3,0xa8,0xe9,0x5d,0x19,0x8a,0x2b,0x66,0xe8,0x69,0x06, - 0x7c,0x9e,0x03,0xa1,0x8b,0x26,0x2d,0x6e - }; - -__fips_constseg -static const unsigned char sha384_pr_entropyinputpr[] = - { - 0x49,0xdf,0x44,0x00,0xe4,0x1c,0x75,0x0b,0x26,0x5a,0x59,0x64, - 0x1f,0x4e,0xb1,0xb2,0x13,0xf1,0x22,0x4e,0xb4,0x6d,0x9a,0xcc, - 0xa0,0x48,0xe6,0xcf,0x1d,0xd1,0x92,0x0d - }; - -__fips_constseg -static const unsigned char sha384_pr_int_returnedbits[] = - { - 0xc8,0x52,0xae,0xbf,0x04,0x3c,0x27,0xb7,0x78,0x18,0xaa,0x8f, - 0xff,0xcf,0xa4,0xf1,0xcc,0xe7,0x68,0xfa,0x22,0xa2,0x13,0x45, - 0xe8,0xdd,0x87,0xe6,0xf2,0x6e,0xdd,0xc7,0x52,0x90,0x9f,0x7b, - 0xfa,0x61,0x2d,0x9d,0x9e,0xcf,0x98,0xac,0x52,0x40,0xce,0xaf - }; - -__fips_constseg -static const unsigned char sha384_pr_additionalinput2[] = - { - 0x61,0x7c,0x03,0x9a,0x3e,0x50,0x57,0x60,0xc5,0x83,0xc9,0xb2, - 0xd1,0x87,0x85,0x66,0x92,0x5d,0x84,0x0e,0x53,0xfb,0x70,0x03, - 0x72,0xfd,0xba,0xae,0x9c,0x8f,0xf8,0x18 - }; - -__fips_constseg -static const unsigned char sha384_pr_entropyinputpr2[] = - { - 0xf8,0xeb,0x89,0xb1,0x8d,0x78,0xbe,0x21,0xe0,0xbb,0x9d,0xb7, - 0x95,0x0e,0xd9,0x46,0x0c,0x8c,0xe2,0x63,0xb7,0x9d,0x67,0x90, - 0xbd,0xc7,0x0b,0xa5,0xce,0xb2,0x65,0x81 - }; - -__fips_constseg -static const unsigned char sha384_pr_returnedbits[] = - { - 0xe6,0x9f,0xfe,0x68,0xd6,0xb5,0x79,0xf1,0x06,0x5f,0xa3,0xbb, - 0x23,0x85,0xd8,0xf0,0x29,0x5a,0x68,0x9e,0xf5,0xf4,0xa6,0x12, - 0xe0,0x9a,0xe2,0xac,0x00,0x1d,0x98,0x26,0xfc,0x53,0x95,0x53, - 0xe4,0x3e,0x17,0xd5,0x08,0x0b,0x70,0x3d,0x67,0x99,0xac,0x66 - }; - - -/* SHA-384 No PR */ -__fips_constseg -static const unsigned char sha384_entropyinput[] = - { - 0x07,0x15,0x27,0x2a,0xaf,0x74,0x24,0x37,0xbc,0xd5,0x14,0x69, - 0xce,0x11,0xff,0xa2,0x6b,0xb8,0x05,0x67,0x34,0xf8,0xbd,0x6d, - 0x6a,0xcc,0xcd,0x60,0xa3,0x68,0xca,0xf4 - }; - -__fips_constseg -static const unsigned char sha384_nonce[] = - { - 0x70,0x17,0xc2,0x5b,0x5d,0x22,0x0b,0x06,0x15,0x54,0x78,0x77, - 0x44,0xaf,0x2f,0x09 - }; - -__fips_constseg -static const unsigned char sha384_personalizationstring[] = - { - 0x89,0x39,0x28,0xb0,0x60,0xeb,0x3d,0xdc,0x55,0x75,0x86,0xeb, - 0xae,0xa2,0x8f,0xbc,0x1b,0x75,0xd4,0xe1,0x0f,0xaa,0x38,0xca, - 0x62,0x8b,0xcb,0x2c,0x26,0xf6,0xbc,0xb1 - }; - -__fips_constseg -static const unsigned char sha384_additionalinput[] = - { - 0x30,0x2b,0x42,0x35,0xef,0xda,0x40,0x55,0x28,0xc6,0x95,0xfb, - 0x54,0x01,0x62,0xd7,0x87,0x14,0x48,0x6d,0x90,0x4c,0xa9,0x02, - 0x54,0x40,0x22,0xc8,0x66,0xa5,0x48,0x48 - }; - -__fips_constseg -static const unsigned char sha384_int_returnedbits[] = - { - 0x82,0xc4,0xa1,0x9c,0x21,0xd2,0xe7,0xa5,0xa6,0xf6,0x5f,0x04, - 0x5c,0xc7,0x31,0x9d,0x8d,0x59,0x74,0x50,0x19,0x89,0x2f,0x63, - 0xd5,0xb7,0x7e,0xeb,0x15,0xe3,0x70,0x83,0xa1,0x24,0x59,0xfa, - 0x2c,0x56,0xf6,0x88,0x3a,0x92,0x93,0xa1,0xfb,0x79,0xc1,0x7a - }; - -__fips_constseg -static const unsigned char sha384_entropyinputreseed[] = - { - 0x39,0xa6,0xe8,0x5c,0x82,0x17,0x71,0x26,0x57,0x4f,0x9f,0xc2, - 0x55,0xff,0x5c,0x9b,0x53,0x1a,0xd1,0x5f,0xbc,0x62,0xe4,0x27, - 0x2d,0x32,0xf0,0xe4,0x52,0x8c,0xc5,0x0c - }; - -__fips_constseg -static const unsigned char sha384_additionalinputreseed[] = - { - 0x8d,0xcb,0x8d,0xce,0x08,0xea,0x80,0xe8,0x9b,0x61,0xa8,0x0f, - 0xaf,0x49,0x20,0x9e,0x74,0xcb,0x57,0x80,0x42,0xb0,0x84,0x5e, - 0x30,0x2a,0x67,0x08,0xf4,0xe3,0x40,0x22 - }; - -__fips_constseg -static const unsigned char sha384_additionalinput2[] = - { - 0x7c,0x8f,0xc2,0xae,0x22,0x4a,0xd6,0xf6,0x05,0xa4,0x7a,0xea, - 0xbb,0x25,0xd0,0xb7,0x5a,0xd6,0xcf,0x9d,0xf3,0x6c,0xe2,0xb2, - 0x4e,0xb4,0xbd,0xf4,0xe5,0x40,0x80,0x94 - }; - -__fips_constseg -static const unsigned char sha384_returnedbits[] = - { - 0x9e,0x7e,0xfb,0x59,0xbb,0xaa,0x3c,0xf7,0xe1,0xf8,0x76,0xdd, - 0x63,0x5f,0xaf,0x23,0xd6,0x64,0x61,0xc0,0x9a,0x09,0x47,0xc9, - 0x33,0xdf,0x6d,0x55,0x91,0x34,0x79,0x70,0xc4,0x99,0x6e,0x54, - 0x09,0x64,0x21,0x1a,0xbd,0x1e,0x80,0x40,0x34,0xad,0xfa,0xd7 - }; - - -/* SHA-512 PR */ -__fips_constseg -static const unsigned char sha512_pr_entropyinput[] = - { - 0x13,0xf7,0x61,0x75,0x65,0x28,0xa2,0x59,0x13,0x5a,0x4a,0x4f, - 0x56,0x60,0x8c,0x53,0x7d,0xb0,0xbd,0x06,0x4f,0xed,0xcc,0xd2, - 0xa2,0xb5,0xfd,0x5b,0x3a,0xab,0xec,0x28 - }; - -__fips_constseg -static const unsigned char sha512_pr_nonce[] = - { - 0xbe,0xa3,0x91,0x93,0x1d,0xc3,0x31,0x3a,0x23,0x33,0x50,0x67, - 0x88,0xc7,0xa2,0xc4 - }; - -__fips_constseg -static const unsigned char sha512_pr_personalizationstring[] = - { - 0x1f,0x59,0x4d,0x7b,0xe6,0x46,0x91,0x48,0xc1,0x25,0xfa,0xff, - 0x89,0x12,0x77,0x35,0xdf,0x3e,0xf4,0x80,0x5f,0xd9,0xb0,0x07, - 0x22,0x41,0xdd,0x48,0x78,0x6b,0x77,0x2b - }; - -__fips_constseg -static const unsigned char sha512_pr_additionalinput[] = - { - 0x30,0xff,0x63,0x6f,0xac,0xd9,0x84,0x39,0x6f,0xe4,0x99,0xce, - 0x91,0x7d,0x7e,0xc8,0x58,0xf2,0x12,0xc3,0xb6,0xad,0xda,0x22, - 0x04,0xa0,0xd2,0x21,0xfe,0xf2,0x95,0x1d - }; - -__fips_constseg -static const unsigned char sha512_pr_entropyinputpr[] = - { - 0x64,0x54,0x13,0xec,0x4f,0x77,0xda,0xb2,0x92,0x2e,0x52,0x80, - 0x11,0x10,0xc2,0xf8,0xe6,0xa7,0xcd,0x4b,0xfc,0x32,0x2e,0x9e, - 0xeb,0xbb,0xb1,0xbf,0x15,0x5c,0x73,0x08 - }; - -__fips_constseg -static const unsigned char sha512_pr_int_returnedbits[] = - { - 0xef,0x1e,0xdc,0x0a,0xa4,0x36,0x91,0x9c,0x3d,0x27,0x97,0x50, - 0x8d,0x36,0x29,0x8d,0xce,0x6a,0x0c,0xf7,0x21,0xc0,0x91,0xae, - 0x0c,0x96,0x72,0xbd,0x52,0x81,0x58,0xfc,0x6d,0xe5,0xf7,0xa5, - 0xfd,0x5d,0xa7,0x58,0x68,0xc8,0x99,0x58,0x8e,0xc8,0xce,0x95, - 0x01,0x7d,0xff,0xa4,0xc8,0xf7,0x63,0xfe,0x5f,0x69,0x83,0x53, - 0xe2,0xc6,0x8b,0xc3 - }; - -__fips_constseg -static const unsigned char sha512_pr_additionalinput2[] = - { - 0xe6,0x9b,0xc4,0x88,0x34,0xca,0xea,0x29,0x2f,0x98,0x05,0xa4, - 0xd3,0xc0,0x7b,0x11,0xe8,0xbb,0x75,0xf2,0xbd,0x29,0xb7,0x40, - 0x25,0x7f,0xc1,0xb7,0xb1,0xf1,0x25,0x61 - }; - -__fips_constseg -static const unsigned char sha512_pr_entropyinputpr2[] = - { - 0x23,0x6d,0xff,0xde,0xfb,0xd1,0xba,0x33,0x18,0xe6,0xbe,0xb5, - 0x48,0x77,0x6d,0x7f,0xa7,0xe1,0x4d,0x48,0x1e,0x3c,0xa7,0x34, - 0x1a,0xc8,0x60,0xdb,0x8f,0x99,0x15,0x99 - }; - -__fips_constseg -static const unsigned char sha512_pr_returnedbits[] = - { - 0x70,0x27,0x31,0xdb,0x92,0x70,0x21,0xfe,0x16,0xb6,0xc8,0x51, - 0x34,0x87,0x65,0xd0,0x4e,0xfd,0xfe,0x68,0xec,0xac,0xdc,0x93, - 0x41,0x38,0x92,0x90,0xb4,0x94,0xf9,0x0d,0xa4,0xf7,0x4e,0x80, - 0x92,0x67,0x48,0x40,0xa7,0x08,0xc7,0xbc,0x66,0x00,0xfd,0xf7, - 0x4c,0x8b,0x17,0x6e,0xd1,0x8f,0x9b,0xf3,0x6f,0xf6,0x34,0xdd, - 0x67,0xf7,0x68,0xdd - }; - - -/* SHA-512 No PR */ -__fips_constseg -static const unsigned char sha512_entropyinput[] = - { - 0xb6,0x0b,0xb7,0xbc,0x84,0x56,0xf6,0x12,0xaf,0x45,0x67,0x17, - 0x7c,0xd1,0xb2,0x78,0x2b,0xa0,0xf2,0xbe,0xb6,0x6d,0x8b,0x56, - 0xc6,0xbc,0x4d,0xe1,0xf7,0xbe,0xce,0xbd - }; - -__fips_constseg -static const unsigned char sha512_nonce[] = - { - 0x9d,0xed,0xc0,0xe5,0x5a,0x98,0x6a,0xcb,0x51,0x7d,0x76,0x31, - 0x5a,0x64,0xf0,0xf7 - }; - -__fips_constseg -static const unsigned char sha512_personalizationstring[] = - { - 0xc2,0x6d,0xa3,0xc3,0x06,0x74,0xe5,0x01,0x5c,0x10,0x17,0xc7, - 0xaf,0x83,0x9d,0x59,0x8d,0x2d,0x29,0x38,0xc5,0x59,0x70,0x8b, - 0x46,0x48,0x2d,0xcf,0x36,0x7d,0x59,0xc0 - }; - -__fips_constseg -static const unsigned char sha512_additionalinput[] = - { - 0xec,0x8c,0xd4,0xf7,0x61,0x6e,0x0d,0x95,0x79,0xb7,0x28,0xad, - 0x5f,0x69,0x74,0x5f,0x2d,0x36,0x06,0x8a,0x6b,0xac,0x54,0x97, - 0xc4,0xa1,0x12,0x85,0x0a,0xdf,0x4b,0x34 - }; - -__fips_constseg -static const unsigned char sha512_int_returnedbits[] = - { - 0x84,0x2f,0x1f,0x68,0x6a,0xa3,0xad,0x1e,0xfb,0xf4,0x15,0xbd, - 0xde,0x38,0xd4,0x30,0x80,0x51,0xe9,0xd3,0xc7,0x20,0x88,0xe9, - 0xf5,0xcc,0xdf,0x57,0x5c,0x47,0x2f,0x57,0x3c,0x5f,0x13,0x56, - 0xcc,0xc5,0x4f,0x84,0xf8,0x10,0x41,0xd5,0x7e,0x58,0x6e,0x19, - 0x19,0x9e,0xaf,0xc2,0x22,0x58,0x41,0x50,0x79,0xc2,0xd8,0x04, - 0x28,0xd4,0x39,0x9a - }; - -__fips_constseg -static const unsigned char sha512_entropyinputreseed[] = - { - 0xfa,0x7f,0x46,0x51,0x83,0x62,0x98,0x16,0x9a,0x19,0xa2,0x49, - 0xa9,0xe6,0x4a,0xd8,0x85,0xe7,0xd4,0x3b,0x2c,0x82,0xc5,0x82, - 0xbf,0x11,0xf9,0x9e,0xbc,0xd0,0x01,0xee - }; - -__fips_constseg -static const unsigned char sha512_additionalinputreseed[] = - { - 0xb9,0x12,0xe0,0x4f,0xf7,0xa7,0xc4,0xd8,0xd0,0x8e,0x99,0x29, - 0x7c,0x9a,0xe9,0xcf,0xc4,0x6c,0xf8,0xc3,0xa7,0x41,0x83,0xd6, - 0x2e,0xfa,0xb8,0x5e,0x8e,0x6b,0x78,0x20 - }; - -__fips_constseg -static const unsigned char sha512_additionalinput2[] = - { - 0xd7,0x07,0x52,0xb9,0x83,0x2c,0x03,0x71,0xee,0xc9,0xc0,0x85, - 0xe1,0x57,0xb2,0xcd,0x3a,0xf0,0xc9,0x34,0x24,0x41,0x1c,0x42, - 0x99,0xb2,0x84,0xe9,0x17,0xd2,0x76,0x92 - }; - -__fips_constseg -static const unsigned char sha512_returnedbits[] = - { - 0x36,0x17,0x5d,0x98,0x2b,0x65,0x25,0x8e,0xc8,0x29,0xdf,0x27, - 0x05,0x36,0x26,0x12,0x8a,0x68,0x74,0x27,0x37,0xd4,0x7f,0x32, - 0xb1,0x12,0xd6,0x85,0x83,0xeb,0x2e,0xa0,0xed,0x4b,0xb5,0x7b, - 0x6f,0x39,0x3c,0x71,0x77,0x02,0x12,0xcc,0x2c,0x3a,0x8e,0x63, - 0xdf,0x4a,0xbd,0x6f,0x6e,0x2e,0xed,0x0a,0x85,0xa5,0x2f,0xa2, - 0x68,0xde,0x42,0xb5 - }; - - -/* HMAC SHA-1 PR */ -__fips_constseg -static const unsigned char hmac_sha1_pr_entropyinput[] = - { - 0x26,0x5f,0x36,0x14,0xff,0x3d,0x83,0xfa,0x73,0x5e,0x75,0xdc, - 0x2c,0x18,0x17,0x1b - }; - -__fips_constseg -static const unsigned char hmac_sha1_pr_nonce[] = - { - 0xc8,0xe3,0x57,0xa5,0x7b,0x74,0x86,0x6e - }; - -__fips_constseg -static const unsigned char hmac_sha1_pr_personalizationstring[] = - { - 0x6e,0xdb,0x0d,0xfe,0x7d,0xac,0x79,0xd0,0xa5,0x3a,0x48,0x85, - 0x80,0xe2,0x7f,0x2a - }; - -__fips_constseg -static const unsigned char hmac_sha1_pr_additionalinput[] = - { - 0x31,0xcd,0x5e,0x43,0xdc,0xfb,0x7a,0x79,0xca,0x88,0xde,0x1f, - 0xd7,0xbb,0x42,0x09 - }; - -__fips_constseg -static const unsigned char hmac_sha1_pr_entropyinputpr[] = - { - 0x7c,0x23,0x95,0x38,0x00,0x95,0xc1,0x78,0x1f,0x8f,0xd7,0x63, - 0x23,0x87,0x2a,0xed - }; - -__fips_constseg -static const unsigned char hmac_sha1_pr_int_returnedbits[] = - { - 0xbb,0x34,0xe7,0x93,0xa3,0x02,0x2c,0x4a,0xd0,0x89,0xda,0x7f, - 0xed,0xf4,0x4c,0xde,0x17,0xec,0xe5,0x6c - }; - -__fips_constseg -static const unsigned char hmac_sha1_pr_additionalinput2[] = - { - 0x49,0xbc,0x2d,0x2c,0xb7,0x32,0xcb,0x20,0xdf,0xf5,0x77,0x58, - 0xa0,0x4b,0x93,0x6e - }; - -__fips_constseg -static const unsigned char hmac_sha1_pr_entropyinputpr2[] = - { - 0x3c,0xaa,0xb0,0x21,0x42,0xb0,0xdd,0x34,0xf0,0x16,0x7f,0x0c, - 0x0f,0xff,0x2e,0xaf - }; - -__fips_constseg -static const unsigned char hmac_sha1_pr_returnedbits[] = - { - 0x8e,0xcb,0xa3,0x64,0xb2,0xb8,0x33,0x6c,0x64,0x3b,0x78,0x16, - 0x99,0x35,0xc8,0x30,0xcb,0x3e,0xa0,0xd8 - }; - - -/* HMAC SHA-1 No PR */ -__fips_constseg -static const unsigned char hmac_sha1_entropyinput[] = - { - 0x32,0x9a,0x2a,0x87,0x7b,0x89,0x7c,0xf6,0xcb,0x95,0xd5,0x40, - 0x17,0xfe,0x47,0x70 - }; - -__fips_constseg -static const unsigned char hmac_sha1_nonce[] = - { - 0x16,0xd8,0xe0,0xc7,0x52,0xcf,0x4a,0x25 - }; - -__fips_constseg -static const unsigned char hmac_sha1_personalizationstring[] = - { - 0x35,0x35,0xa9,0xa5,0x40,0xbe,0x9b,0xd1,0x56,0xdd,0x44,0x00, - 0x72,0xf7,0xd3,0x5e - }; - -__fips_constseg -static const unsigned char hmac_sha1_additionalinput[] = - { - 0x1b,0x2c,0x84,0x2d,0x4a,0x89,0x8f,0x69,0x19,0xf1,0xf3,0xdb, - 0xbb,0xe3,0xaa,0xea - }; - -__fips_constseg -static const unsigned char hmac_sha1_int_returnedbits[] = - { - 0xcf,0xfa,0x7d,0x72,0x0f,0xe6,0xc7,0x96,0xa0,0x69,0x31,0x11, - 0x9b,0x0b,0x1a,0x20,0x1f,0x3f,0xaa,0xd1 - }; - -__fips_constseg -static const unsigned char hmac_sha1_entropyinputreseed[] = - { - 0x90,0x75,0x15,0x04,0x95,0xf1,0xba,0x81,0x0c,0x37,0x94,0x6f, - 0x86,0x52,0x6d,0x9c - }; - -__fips_constseg -static const unsigned char hmac_sha1_additionalinputreseed[] = - { - 0x5b,0x40,0xba,0x5f,0x17,0x70,0xf0,0x4b,0xdf,0xc9,0x97,0x92, - 0x79,0xc5,0x82,0x28 - }; - -__fips_constseg -static const unsigned char hmac_sha1_additionalinput2[] = - { - 0x97,0xc8,0x80,0x90,0xb3,0xaa,0x6e,0x60,0xea,0x83,0x7a,0xe3, - 0x8a,0xca,0xa4,0x7f - }; - -__fips_constseg -static const unsigned char hmac_sha1_returnedbits[] = - { - 0x90,0xbd,0x05,0x56,0x6d,0xb5,0x22,0xd5,0xb9,0x5a,0x29,0x2d, - 0xe9,0x0b,0xe1,0xac,0xde,0x27,0x0b,0xb0 - }; - - -/* HMAC SHA-224 PR */ -__fips_constseg -static const unsigned char hmac_sha224_pr_entropyinput[] = - { - 0x17,0x32,0x2b,0x2e,0x6f,0x1b,0x9c,0x6d,0x31,0xe0,0x34,0x07, - 0xcf,0xed,0xf6,0xb6,0x5a,0x76,0x4c,0xbc,0x62,0x85,0x01,0x90 - }; - -__fips_constseg -static const unsigned char hmac_sha224_pr_nonce[] = - { - 0x38,0xbf,0x5f,0x20,0xb3,0x68,0x2f,0x43,0x61,0x05,0x8f,0x23 - }; - -__fips_constseg -static const unsigned char hmac_sha224_pr_personalizationstring[] = - { - 0xc0,0xc9,0x45,0xac,0x8d,0x27,0x77,0x08,0x0b,0x17,0x6d,0xed, - 0xc1,0x7d,0xd5,0x07,0x9d,0x6e,0xf8,0x23,0x2a,0x22,0x13,0xbd - }; - -__fips_constseg -static const unsigned char hmac_sha224_pr_additionalinput[] = - { - 0xa4,0x3c,0xe7,0x3b,0xea,0x19,0x45,0x32,0xc2,0x83,0x6d,0x21, - 0x8a,0xc0,0xee,0x67,0x45,0xde,0x13,0x7d,0x9d,0x61,0x00,0x3b - }; - -__fips_constseg -static const unsigned char hmac_sha224_pr_entropyinputpr[] = - { - 0x15,0x05,0x74,0x4a,0x7f,0x8d,0x5c,0x60,0x16,0xe5,0x7b,0xad, - 0xf5,0x41,0x8f,0x55,0x60,0xc4,0x09,0xee,0x1e,0x11,0x81,0xab - }; - -__fips_constseg -static const unsigned char hmac_sha224_pr_int_returnedbits[] = - { - 0x6f,0xf5,0x9a,0xe2,0x54,0x53,0x30,0x3d,0x5a,0x27,0x29,0x38, - 0x27,0xf2,0x0d,0x05,0xe9,0x26,0xcb,0x16,0xc3,0x51,0x5f,0x13, - 0x41,0xfe,0x99,0xf2 - }; - -__fips_constseg -static const unsigned char hmac_sha224_pr_additionalinput2[] = - { - 0x73,0x81,0x88,0x84,0x8f,0xed,0x6f,0x10,0x9f,0x93,0xbf,0x17, - 0x35,0x7c,0xef,0xd5,0x8d,0x26,0xa6,0x7a,0xe8,0x09,0x36,0x4f - }; - -__fips_constseg -static const unsigned char hmac_sha224_pr_entropyinputpr2[] = - { - 0xe6,0xcf,0xcf,0x7e,0x12,0xe5,0x43,0xd2,0x38,0xd8,0x24,0x6f, - 0x5a,0x37,0x68,0xbf,0x4f,0xa0,0xff,0xd5,0x61,0x8a,0x93,0xe0 - }; - -__fips_constseg -static const unsigned char hmac_sha224_pr_returnedbits[] = - { - 0xaf,0xf9,0xd8,0x19,0x91,0x30,0x82,0x6f,0xa9,0x1e,0x9d,0xd7, - 0xf3,0x50,0xe0,0xc7,0xd5,0x64,0x96,0x7d,0x4c,0x4d,0x78,0x03, - 0x6d,0xd8,0x9e,0x72 - }; - - -/* HMAC SHA-224 No PR */ -__fips_constseg -static const unsigned char hmac_sha224_entropyinput[] = - { - 0x11,0x82,0xfd,0xd9,0x42,0xf4,0xfa,0xc8,0xf2,0x41,0xe6,0x54, - 0x01,0xae,0x22,0x6e,0xc6,0xaf,0xaf,0xd0,0xa6,0xb2,0xe2,0x6d - }; - -__fips_constseg -static const unsigned char hmac_sha224_nonce[] = - { - 0xa9,0x48,0xd7,0x92,0x39,0x7e,0x2a,0xdc,0x30,0x1f,0x0e,0x2b - }; - -__fips_constseg -static const unsigned char hmac_sha224_personalizationstring[] = - { - 0x11,0xd5,0xf4,0xbd,0x67,0x8c,0x31,0xcf,0xa3,0x3f,0x1e,0x6b, - 0xa8,0x07,0x02,0x0b,0xc8,0x2e,0x6c,0x64,0x41,0x5b,0xc8,0x37 - }; - -__fips_constseg -static const unsigned char hmac_sha224_additionalinput[] = - { - 0x68,0x18,0xc2,0x06,0xeb,0x3e,0x04,0x95,0x44,0x5e,0xfb,0xe6, - 0x41,0xc1,0x5c,0xcc,0x40,0x2f,0xb7,0xd2,0x0f,0xf3,0x6b,0xe7 - }; - -__fips_constseg -static const unsigned char hmac_sha224_int_returnedbits[] = - { - 0x7f,0x45,0xc7,0x5d,0x32,0xe6,0x17,0x60,0xba,0xdc,0xb8,0x42, - 0x1b,0x9c,0xf1,0xfa,0x3b,0x4d,0x29,0x54,0xc6,0x90,0xff,0x5c, - 0xcd,0xd6,0xa9,0xcc - }; - -__fips_constseg -static const unsigned char hmac_sha224_entropyinputreseed[] = - { - 0xc4,0x8e,0x37,0x95,0x69,0x53,0x28,0xd7,0x37,0xbb,0x70,0x95, - 0x1c,0x07,0x1d,0xd9,0xb7,0xe6,0x1b,0xbb,0xfe,0x41,0xeb,0xc9 - }; - -__fips_constseg -static const unsigned char hmac_sha224_additionalinputreseed[] = - { - 0x53,0x17,0xa1,0x6a,0xfa,0x77,0x47,0xb0,0x95,0x56,0x9a,0x20, - 0x57,0xde,0x5c,0x89,0x9f,0x7f,0xe2,0xde,0x17,0x3a,0x50,0x23 - }; - -__fips_constseg -static const unsigned char hmac_sha224_additionalinput2[] = - { - 0x3a,0x32,0xf9,0x85,0x0c,0xc1,0xed,0x76,0x2d,0xdf,0x40,0xc3, - 0x06,0x22,0x66,0xd4,0x9a,0x9a,0xff,0x5a,0x7e,0x7a,0xf3,0x96 - }; - -__fips_constseg -static const unsigned char hmac_sha224_returnedbits[] = - { - 0x43,0xb4,0x57,0x5c,0x38,0x25,0x9d,0xae,0xec,0x96,0xd1,0x85, - 0x3a,0x84,0x8d,0xfe,0x68,0xd5,0x0e,0x5c,0x8f,0x65,0xa5,0x4e, - 0x45,0x84,0xa8,0x94 - }; - - -/* HMAC SHA-256 PR */ -__fips_constseg -static const unsigned char hmac_sha256_pr_entropyinput[] = - { - 0x4d,0xb0,0x43,0xd8,0x34,0x4b,0x10,0x70,0xb1,0x8b,0xed,0xea, - 0x07,0x92,0x9f,0x6c,0x79,0x31,0xaf,0x81,0x29,0xeb,0x6e,0xca, - 0x32,0x48,0x28,0xe7,0x02,0x5d,0xa6,0xa6 - }; - -__fips_constseg -static const unsigned char hmac_sha256_pr_nonce[] = - { - 0x3a,0xae,0x15,0xa9,0x99,0xdc,0xe4,0x67,0x34,0x3b,0x70,0x15, - 0xaa,0xd3,0x30,0x9a - }; - -__fips_constseg -static const unsigned char hmac_sha256_pr_personalizationstring[] = - { - 0x13,0x1d,0x24,0x04,0xb0,0x18,0x81,0x15,0x21,0x51,0x2a,0x24, - 0x52,0x61,0xbe,0x64,0x82,0x6b,0x55,0x2f,0xe2,0xf1,0x40,0x7d, - 0x71,0xd8,0x01,0x86,0x15,0xb7,0x8b,0xb5 - }; - -__fips_constseg -static const unsigned char hmac_sha256_pr_additionalinput[] = - { - 0x8f,0xa6,0x54,0x5f,0xb1,0xd0,0xd8,0xc3,0xe7,0x0c,0x15,0xa9, - 0x23,0x6e,0xfe,0xfb,0x93,0xf7,0x3a,0xbd,0x59,0x01,0xfa,0x18, - 0x8e,0xe9,0x1a,0xa9,0x78,0xfc,0x79,0x0b - }; - -__fips_constseg -static const unsigned char hmac_sha256_pr_entropyinputpr[] = - { - 0xcf,0x24,0xb9,0xeb,0xb3,0xd4,0xcd,0x17,0x37,0x38,0x75,0x79, - 0x15,0xcb,0x2d,0x75,0x51,0xf1,0xcc,0xaa,0x32,0xa4,0xa7,0x36, - 0x7c,0x5c,0xe4,0x47,0xf1,0x3e,0x1d,0xe5 - }; - -__fips_constseg -static const unsigned char hmac_sha256_pr_int_returnedbits[] = - { - 0x52,0x42,0xfa,0xeb,0x85,0xe0,0x30,0x22,0x79,0x00,0x16,0xb2, - 0x88,0x2f,0x14,0x6a,0xb7,0xfc,0xb7,0x53,0xdc,0x4a,0x12,0xef, - 0x54,0xd6,0x33,0xe9,0x20,0xd6,0xfd,0x56 - }; - -__fips_constseg -static const unsigned char hmac_sha256_pr_additionalinput2[] = - { - 0xf4,0xf6,0x49,0xa1,0x2d,0x64,0x2b,0x30,0x58,0xf8,0xbd,0xb8, - 0x75,0xeb,0xbb,0x5e,0x1c,0x9b,0x81,0x6a,0xda,0x14,0x86,0x6e, - 0xd0,0xda,0x18,0xb7,0x88,0xfb,0x59,0xf3 - }; - -__fips_constseg -static const unsigned char hmac_sha256_pr_entropyinputpr2[] = - { - 0x21,0xcd,0x6e,0x46,0xad,0x99,0x07,0x17,0xb4,0x3d,0x76,0x0a, - 0xff,0x5b,0x52,0x50,0x78,0xdf,0x1f,0x24,0x06,0x0d,0x3f,0x74, - 0xa9,0xc9,0x37,0xcf,0xd8,0x26,0x25,0x91 - }; - -__fips_constseg -static const unsigned char hmac_sha256_pr_returnedbits[] = - { - 0xa7,0xaf,0x2f,0x29,0xe0,0x3a,0x72,0x95,0x96,0x1c,0xa9,0xf0, - 0x4a,0x17,0x4d,0x66,0x06,0x10,0xbf,0x39,0x89,0x88,0xb8,0x91, - 0x37,0x18,0x99,0xcf,0x8c,0x53,0x3b,0x7e - }; - - -/* HMAC SHA-256 No PR */ -__fips_constseg -static const unsigned char hmac_sha256_entropyinput[] = - { - 0x96,0xb7,0x53,0x22,0x1e,0x52,0x2a,0x96,0xb1,0x15,0x3c,0x35, - 0x5a,0x8b,0xd3,0x4a,0xa6,0x6c,0x83,0x0a,0x7d,0xa3,0x23,0x3d, - 0x43,0xa1,0x07,0x2c,0x2d,0xe3,0x81,0xcc - }; - -__fips_constseg -static const unsigned char hmac_sha256_nonce[] = - { - 0xf1,0xac,0x97,0xcb,0x5e,0x06,0x48,0xd2,0x94,0xbe,0x15,0x2e, - 0xc7,0xfc,0xc2,0x01 - }; - -__fips_constseg -static const unsigned char hmac_sha256_personalizationstring[] = - { - 0x98,0xc5,0x1e,0x35,0x5e,0x89,0x0d,0xce,0x64,0x6d,0x18,0xa7, - 0x5a,0xc6,0xf3,0xe7,0xd6,0x9e,0xc0,0xea,0xb7,0x3a,0x8d,0x65, - 0xb8,0xeb,0x10,0xd7,0x57,0x18,0xa0,0x32 - }; - -__fips_constseg -static const unsigned char hmac_sha256_additionalinput[] = - { - 0x1b,0x10,0xaf,0xac,0xd0,0x65,0x95,0xad,0x04,0xad,0x03,0x1c, - 0xe0,0x40,0xd6,0x3e,0x1c,0x46,0x53,0x39,0x7c,0xe2,0xbc,0xda, - 0x8c,0xa2,0x33,0xa7,0x9a,0x26,0xd3,0x27 - }; - -__fips_constseg -static const unsigned char hmac_sha256_int_returnedbits[] = - { - 0xba,0x61,0x0e,0x55,0xfe,0x11,0x8a,0x9e,0x0f,0x80,0xdf,0x1d, - 0x03,0x0a,0xfe,0x15,0x94,0x28,0x4b,0xba,0xf4,0x9f,0x51,0x25, - 0x88,0xe5,0x4e,0xfb,0xaf,0xce,0x69,0x90 - }; - -__fips_constseg -static const unsigned char hmac_sha256_entropyinputreseed[] = - { - 0x62,0x7f,0x1e,0x6b,0xe8,0x8e,0xe1,0x35,0x7d,0x9b,0x4f,0xc7, - 0xec,0xc8,0xac,0xef,0x6b,0x13,0x9e,0x05,0x56,0xc1,0x08,0xf9, - 0x2f,0x0f,0x27,0x9c,0xd4,0x15,0xed,0x2d - }; - -__fips_constseg -static const unsigned char hmac_sha256_additionalinputreseed[] = - { - 0xc7,0x76,0x6e,0xa9,0xd2,0xb2,0x76,0x40,0x82,0x25,0x2c,0xb3, - 0x6f,0xac,0xe9,0x74,0xef,0x8f,0x3c,0x8e,0xcd,0xf1,0xbf,0xb3, - 0x49,0x77,0x34,0x88,0x52,0x36,0xe6,0x2e - }; - -__fips_constseg -static const unsigned char hmac_sha256_additionalinput2[] = - { - 0x8d,0xb8,0x0c,0xd1,0xbf,0x70,0xf6,0x19,0xc3,0x41,0x80,0x9f, - 0xe1,0xa5,0xa4,0x1f,0x2c,0x26,0xb1,0xe5,0xd8,0xeb,0xbe,0xf8, - 0xdf,0x88,0x6a,0x89,0xd6,0x05,0xd8,0x9d - }; - -__fips_constseg -static const unsigned char hmac_sha256_returnedbits[] = - { - 0x43,0x12,0x2a,0x2c,0x40,0x53,0x2e,0x7c,0x66,0x34,0xac,0xc3, - 0x43,0xe3,0xe0,0x6a,0xfc,0xfa,0xea,0x87,0x21,0x1f,0xe2,0x26, - 0xc4,0xf9,0x09,0x9a,0x0d,0x6e,0x7f,0xe0 - }; - - -/* HMAC SHA-384 PR */ -__fips_constseg -static const unsigned char hmac_sha384_pr_entropyinput[] = - { - 0x69,0x81,0x98,0x88,0x44,0xf5,0xd6,0x2e,0x00,0x08,0x3b,0xc5, - 0xfb,0xd7,0x8e,0x6f,0x23,0xf8,0x6d,0x09,0xd6,0x85,0x49,0xd1, - 0xf8,0x6d,0xa4,0x58,0x54,0xfd,0x88,0xa9 - }; - -__fips_constseg -static const unsigned char hmac_sha384_pr_nonce[] = - { - 0x6e,0x38,0x81,0xca,0xb7,0xe8,0x6e,0x66,0x49,0x8a,0xb2,0x59, - 0xee,0x16,0xc9,0xde - }; - -__fips_constseg -static const unsigned char hmac_sha384_pr_personalizationstring[] = - { - 0xfe,0x4c,0xd9,0xf4,0x78,0x3b,0x08,0x41,0x8d,0x8f,0x55,0xc4, - 0x43,0x56,0xb6,0x12,0x36,0x6b,0x30,0xb7,0x5e,0xe1,0xb9,0x47, - 0x04,0xb1,0x4e,0xa9,0x00,0xa1,0x52,0xa1 - }; - -__fips_constseg -static const unsigned char hmac_sha384_pr_additionalinput[] = - { - 0x89,0xe9,0xcc,0x8f,0x27,0x3c,0x26,0xd1,0x95,0xc8,0x7d,0x0f, - 0x5b,0x1a,0xf0,0x78,0x39,0x56,0x6f,0xa4,0x23,0xe7,0xd1,0xda, - 0x7c,0x66,0x33,0xa0,0x90,0xc9,0x92,0x88 - }; - -__fips_constseg -static const unsigned char hmac_sha384_pr_entropyinputpr[] = - { - 0xbe,0x3d,0x7c,0x0d,0xca,0xda,0x7c,0x49,0xb8,0x12,0x36,0xc0, - 0xdb,0xad,0x35,0xa8,0xc7,0x0b,0x2a,0x2c,0x69,0x6d,0x25,0x56, - 0x63,0x82,0x11,0x3e,0xa7,0x33,0x70,0x72 - }; - -__fips_constseg -static const unsigned char hmac_sha384_pr_int_returnedbits[] = - { - 0x82,0x3d,0xe6,0x54,0x80,0x42,0xf8,0xba,0x90,0x4f,0x06,0xa6, - 0xd2,0x7f,0xbf,0x79,0x7c,0x12,0x7d,0xa6,0xa2,0x66,0xe8,0xa6, - 0xc0,0xd6,0x4a,0x55,0xbf,0xd8,0x0a,0xc5,0xf8,0x03,0x88,0xdd, - 0x8e,0x87,0xd1,0x5a,0x48,0x26,0x72,0x2a,0x8e,0xcf,0xee,0xba - }; - -__fips_constseg -static const unsigned char hmac_sha384_pr_additionalinput2[] = - { - 0x8f,0xff,0xd9,0x84,0xbb,0x85,0x3a,0x66,0xa1,0x21,0xce,0xb2, - 0x3a,0x3a,0x17,0x22,0x19,0xae,0xc7,0xb6,0x63,0x81,0xd5,0xff, - 0x0d,0xc8,0xe1,0xaf,0x57,0xd2,0xcb,0x60 - }; - -__fips_constseg -static const unsigned char hmac_sha384_pr_entropyinputpr2[] = - { - 0xd7,0xfb,0xc9,0xe8,0xe2,0xf2,0xaa,0x4c,0xb8,0x51,0x2f,0xe1, - 0x22,0xba,0xf3,0xda,0x0a,0x19,0x76,0x71,0x57,0xb2,0x1d,0x94, - 0x09,0x69,0x6c,0xd3,0x97,0x51,0x81,0x87 - }; - -__fips_constseg -static const unsigned char hmac_sha384_pr_returnedbits[] = - { - 0xe6,0x19,0x28,0xa8,0x21,0xce,0x5e,0xdb,0x24,0x79,0x8c,0x76, - 0x5d,0x73,0xb2,0xdf,0xac,0xef,0x85,0xa7,0x3b,0x19,0x09,0x8b, - 0x7f,0x98,0x28,0xa9,0x93,0xd8,0x7a,0xad,0x55,0x8b,0x24,0x9d, - 0xe6,0x98,0xfe,0x47,0xd5,0x48,0xc1,0x23,0xd8,0x1d,0x62,0x75 - }; - - -/* HMAC SHA-384 No PR */ -__fips_constseg -static const unsigned char hmac_sha384_entropyinput[] = - { - 0xc3,0x56,0x2b,0x1d,0xc2,0xbb,0xa8,0xf0,0xae,0x1b,0x0d,0xd3, - 0x5a,0x6c,0xda,0x57,0x8e,0xa5,0x8a,0x0d,0x6c,0x4b,0x18,0xb1, - 0x04,0x3e,0xb4,0x99,0x35,0xc4,0xc0,0x5f - }; - -__fips_constseg -static const unsigned char hmac_sha384_nonce[] = - { - 0xc5,0x49,0x1e,0x66,0x27,0x92,0xbe,0xec,0xb5,0x1e,0x4b,0xb1, - 0x38,0xe3,0xeb,0x62 - }; - -__fips_constseg -static const unsigned char hmac_sha384_personalizationstring[] = - { - 0xbe,0xe7,0x6b,0x57,0xde,0x88,0x11,0x96,0x9b,0x6e,0xea,0xe5, - 0x63,0x83,0x4c,0xb6,0x8d,0x66,0xaa,0x1f,0x8b,0x54,0xe7,0x62, - 0x6d,0x5a,0xfc,0xbf,0x97,0xba,0xcd,0x77 - }; - -__fips_constseg -static const unsigned char hmac_sha384_additionalinput[] = - { - 0xe5,0x28,0x5f,0x43,0xf5,0x83,0x6e,0x0a,0x83,0x5c,0xe3,0x81, - 0x03,0xf2,0xf8,0x78,0x00,0x7c,0x95,0x87,0x16,0xd6,0x6c,0x58, - 0x33,0x6c,0x53,0x35,0x0d,0x66,0xe3,0xce - }; - -__fips_constseg -static const unsigned char hmac_sha384_int_returnedbits[] = - { - 0xe2,0x1f,0xf3,0xda,0x0d,0x19,0x99,0x87,0xc4,0x90,0xa2,0x31, - 0xca,0x2a,0x89,0x58,0x43,0x44,0xb8,0xde,0xcf,0xa4,0xbe,0x3b, - 0x53,0x26,0x22,0x31,0x76,0x41,0x22,0xb5,0xa8,0x70,0x2f,0x4b, - 0x64,0x95,0x4d,0x48,0x96,0x35,0xe6,0xbd,0x3c,0x34,0xdb,0x1b - }; - -__fips_constseg -static const unsigned char hmac_sha384_entropyinputreseed[] = - { - 0x77,0x61,0xba,0xbc,0xf2,0xc1,0xf3,0x4b,0x86,0x65,0xfd,0x48, - 0x0e,0x3c,0x02,0x5e,0xa2,0x7a,0x6b,0x7c,0xed,0x21,0x5e,0xf9, - 0xcd,0xcd,0x77,0x07,0x2b,0xbe,0xc5,0x5c - }; - -__fips_constseg -static const unsigned char hmac_sha384_additionalinputreseed[] = - { - 0x18,0x24,0x5f,0xc6,0x84,0xd1,0x67,0xc3,0x9a,0x11,0xa5,0x8c, - 0x07,0x39,0x21,0x83,0x4d,0x04,0xc4,0x6a,0x28,0x19,0xcf,0x92, - 0x21,0xd9,0x9e,0x41,0x72,0x6c,0x9e,0x63 - }; - -__fips_constseg -static const unsigned char hmac_sha384_additionalinput2[] = - { - 0x96,0x67,0x41,0x28,0x9b,0xb7,0x92,0x8d,0x64,0x3b,0xe4,0xcf, - 0x7e,0xaa,0x1e,0xb1,0x4b,0x1d,0x09,0x56,0x67,0x9c,0xc6,0x6d, - 0x3b,0xe8,0x91,0x9d,0xe1,0x8a,0xb7,0x32 - }; - -__fips_constseg -static const unsigned char hmac_sha384_returnedbits[] = - { - 0xe3,0x59,0x61,0x38,0x92,0xec,0xe2,0x3c,0xff,0xb7,0xdb,0x19, - 0x0f,0x5b,0x93,0x68,0x0d,0xa4,0x94,0x40,0x72,0x0b,0xe0,0xed, - 0x4d,0xcd,0x68,0xa0,0x1e,0xfe,0x67,0xb2,0xfa,0x21,0x56,0x74, - 0xa4,0xad,0xcf,0xb7,0x60,0x66,0x2e,0x40,0xde,0x82,0xca,0xfb - }; - - -/* HMAC SHA-512 PR */ -__fips_constseg -static const unsigned char hmac_sha512_pr_entropyinput[] = - { - 0xaa,0x9e,0x45,0x67,0x0e,0x00,0x2a,0x67,0x98,0xd6,0xda,0x0b, - 0x0f,0x17,0x7e,0xac,0xfd,0x27,0xc4,0xca,0x84,0xdf,0xde,0xba, - 0x85,0xd9,0xbe,0x8f,0xf3,0xff,0x91,0x4d - }; - -__fips_constseg -static const unsigned char hmac_sha512_pr_nonce[] = - { - 0x8c,0x49,0x2f,0x58,0x1e,0x7a,0xda,0x4b,0x7e,0x8a,0x30,0x7b, - 0x86,0xea,0xaf,0xa2 - }; - -__fips_constseg -static const unsigned char hmac_sha512_pr_personalizationstring[] = - { - 0x71,0xe1,0xbb,0xad,0xa7,0x4b,0x2e,0x31,0x3b,0x0b,0xec,0x24, - 0x99,0x38,0xbc,0xaa,0x05,0x4c,0x46,0x44,0xfa,0xad,0x8e,0x02, - 0xc1,0x7e,0xad,0xec,0x54,0xa6,0xd0,0xad - }; - -__fips_constseg -static const unsigned char hmac_sha512_pr_additionalinput[] = - { - 0x3d,0x6e,0xa6,0xa8,0x29,0x2a,0xb2,0xf5,0x98,0x42,0xe4,0x92, - 0x78,0x22,0x67,0xfd,0x1b,0x15,0x1e,0x29,0xaa,0x71,0x3c,0x3c, - 0xe7,0x05,0x20,0xa9,0x29,0xc6,0x75,0x71 - }; - -__fips_constseg -static const unsigned char hmac_sha512_pr_entropyinputpr[] = - { - 0xab,0xb9,0x16,0xd8,0x55,0x35,0x54,0xb7,0x97,0x3f,0x94,0xbc, - 0x2f,0x7c,0x70,0xc7,0xd0,0xed,0xb7,0x4b,0xf7,0xf6,0x6c,0x03, - 0x0c,0xb0,0x03,0xd8,0xbb,0x71,0xd9,0x10 - }; - -__fips_constseg -static const unsigned char hmac_sha512_pr_int_returnedbits[] = - { - 0x8e,0xd3,0xfd,0x52,0x9e,0x83,0x08,0x49,0x18,0x6e,0x23,0x56, - 0x5c,0x45,0x93,0x34,0x05,0xe2,0x98,0x8f,0x0c,0xd4,0x32,0x0c, - 0xfd,0xda,0x5f,0x92,0x3a,0x8c,0x81,0xbd,0xf6,0x6c,0x55,0xfd, - 0xb8,0x20,0xce,0x8d,0x97,0x27,0xe8,0xe8,0xe0,0xb3,0x85,0x50, - 0xa2,0xc2,0xb2,0x95,0x1d,0x48,0xd3,0x7b,0x4b,0x78,0x13,0x35, - 0x05,0x17,0xbe,0x0d - }; - -__fips_constseg -static const unsigned char hmac_sha512_pr_additionalinput2[] = - { - 0xc3,0xfc,0x95,0xaa,0x69,0x06,0xae,0x59,0x41,0xce,0x26,0x08, - 0x29,0x6d,0x45,0xda,0xe8,0xb3,0x6c,0x95,0x60,0x0f,0x70,0x2c, - 0x10,0xba,0x38,0x8c,0xcf,0x29,0x99,0xaa - }; - -__fips_constseg -static const unsigned char hmac_sha512_pr_entropyinputpr2[] = - { - 0x3b,0x9a,0x25,0xce,0xd7,0xf9,0x5c,0xd1,0x3a,0x3e,0xaa,0x71, - 0x14,0x3e,0x19,0xe8,0xce,0xe6,0xfe,0x51,0x84,0xe9,0x1b,0xfe, - 0x3f,0xa7,0xf2,0xfd,0x76,0x5f,0x6a,0xe7 - }; - -__fips_constseg -static const unsigned char hmac_sha512_pr_returnedbits[] = - { - 0xb7,0x82,0xa9,0x57,0x81,0x67,0x53,0xb5,0xa1,0xe9,0x3d,0x35, - 0xf9,0xe4,0x97,0xbe,0xa6,0xca,0xf1,0x01,0x13,0x09,0xe7,0x21, - 0xc0,0xed,0x93,0x5d,0x4b,0xf4,0xeb,0x8d,0x53,0x25,0x8a,0xc4, - 0xb1,0x6f,0x6e,0x37,0xcd,0x2e,0xac,0x39,0xb2,0xb6,0x99,0xa3, - 0x82,0x00,0xb0,0x21,0xf0,0xc7,0x2f,0x4c,0x73,0x92,0xfd,0x00, - 0xb6,0xaf,0xbc,0xd3 - }; - - -/* HMAC SHA-512 No PR */ -__fips_constseg -static const unsigned char hmac_sha512_entropyinput[] = - { - 0x6e,0x85,0xe6,0x25,0x96,0x29,0xa7,0x52,0x5b,0x60,0xba,0xaa, - 0xde,0xdb,0x36,0x0a,0x51,0x9a,0x15,0xae,0x6e,0x18,0xd3,0xfe, - 0x39,0xb9,0x4a,0x96,0xf8,0x77,0xcb,0x95 - }; - -__fips_constseg -static const unsigned char hmac_sha512_nonce[] = - { - 0xe0,0xa6,0x5d,0x08,0xc3,0x7c,0xae,0x25,0x2e,0x80,0xd1,0x3e, - 0xd9,0xaf,0x43,0x3c - }; - -__fips_constseg -static const unsigned char hmac_sha512_personalizationstring[] = - { - 0x53,0x99,0x52,0x5f,0x11,0xa9,0x64,0x66,0x20,0x5e,0x1b,0x5f, - 0x42,0xb3,0xf4,0xda,0xed,0xbb,0x63,0xc1,0x23,0xaf,0xd0,0x01, - 0x90,0x3b,0xd0,0x78,0xe4,0x0b,0xa7,0x20 - }; - -__fips_constseg -static const unsigned char hmac_sha512_additionalinput[] = - { - 0x85,0x90,0x80,0xd3,0x98,0xf1,0x53,0x6d,0x68,0x15,0x8f,0xe5, - 0x60,0x3f,0x17,0x29,0x55,0x8d,0x33,0xb1,0x45,0x64,0x64,0x8d, - 0x50,0x21,0x89,0xae,0xf6,0xfd,0x32,0x73 - }; - -__fips_constseg -static const unsigned char hmac_sha512_int_returnedbits[] = - { - 0x28,0x56,0x30,0x6f,0xf4,0xa1,0x48,0xe0,0xc9,0xf5,0x75,0x90, - 0xcc,0xfb,0xdf,0xdf,0x71,0x3d,0x0a,0x9a,0x03,0x65,0x3b,0x18, - 0x61,0xe3,0xd1,0xda,0xcc,0x4a,0xfe,0x55,0x38,0xf8,0x21,0x6b, - 0xfa,0x18,0x01,0x42,0x39,0x2f,0x99,0x53,0x38,0x15,0x82,0x34, - 0xc5,0x93,0x92,0xbc,0x4d,0x75,0x1a,0x5f,0x21,0x27,0xcc,0xa1, - 0xb1,0x57,0x69,0xe8 - }; - -__fips_constseg -static const unsigned char hmac_sha512_entropyinputreseed[] = - { - 0x8c,0x52,0x7e,0x77,0x72,0x3f,0xa3,0x04,0x97,0x10,0x9b,0x41, - 0xbd,0xe8,0xff,0x89,0xed,0x80,0xe3,0xbd,0xaa,0x12,0x2d,0xca, - 0x75,0x82,0x36,0x77,0x88,0xcd,0xa6,0x73 - }; - -__fips_constseg -static const unsigned char hmac_sha512_additionalinputreseed[] = - { - 0x7e,0x32,0xe3,0x69,0x69,0x07,0x34,0xa2,0x16,0xa2,0x5d,0x1a, - 0x10,0x91,0xd3,0xe2,0x21,0xa2,0xa3,0xdd,0xcd,0x0c,0x09,0x86, - 0x11,0xe1,0x50,0xff,0x5c,0xb7,0xeb,0x5c - }; - -__fips_constseg -static const unsigned char hmac_sha512_additionalinput2[] = - { - 0x7f,0x78,0x66,0xd8,0xfb,0x67,0xcf,0x8d,0x8c,0x08,0x30,0xa5, - 0xf8,0x7d,0xcf,0x44,0x59,0xce,0xf8,0xdf,0x58,0xd3,0x60,0xcb, - 0xa8,0x60,0xb9,0x07,0xc4,0xb1,0x95,0x48 - }; - -__fips_constseg -static const unsigned char hmac_sha512_returnedbits[] = - { - 0xdf,0xa7,0x36,0xd4,0xdc,0x5d,0x4d,0x31,0xad,0x69,0x46,0x9f, - 0xf1,0x7c,0xd7,0x3b,0x4f,0x55,0xf2,0xd7,0xb9,0x9d,0xad,0x7a, - 0x79,0x08,0x59,0xa5,0xdc,0x74,0xf5,0x9b,0x73,0xd2,0x13,0x25, - 0x0b,0x81,0x08,0x08,0x25,0xfb,0x39,0xf2,0xf0,0xa3,0xa4,0x8d, - 0xef,0x05,0x9e,0xb8,0xc7,0x52,0xe4,0x0e,0x42,0xaa,0x7c,0x79, - 0xc2,0xd6,0xfd,0xa5 - }; - - -/* P-256 SHA-1 PR */ -__fips_constseg -static const unsigned char p_256_sha1_pr_entropyinput[] = - { - 0xb7,0xd4,0x38,0x90,0x9a,0xa8,0xfc,0xb6,0xd6,0x3c,0xc5,0x35, - 0x2b,0x0b,0x0e,0x1f - }; - -__fips_constseg -static const unsigned char p_256_sha1_pr_nonce[] = - { - 0xd9,0xae,0xf5,0xe8,0xd5,0x10,0x1f,0x82 - }; - -__fips_constseg -static const unsigned char p_256_sha1_pr_personalizationstring[] = - { - 0x88,0xe8,0x77,0xab,0x01,0x19,0x5e,0xaf,0x50,0x6c,0x89,0x2d, - 0x0c,0x12,0xe2,0x11 - }; - -__fips_constseg -static const unsigned char p_256_sha1_pr_additionalinput[] = - { - 0xd1,0x46,0xa6,0xb0,0x6e,0xc5,0xaa,0x7b,0x6d,0x1a,0xf9,0x36, - 0x8c,0x95,0x9c,0xed - }; - -__fips_constseg -static const unsigned char p_256_sha1_pr_entropyinputpr[] = - { - 0xb0,0x97,0xa8,0x3e,0xd3,0x28,0x3d,0x36,0xdd,0xfe,0x89,0x00, - 0x63,0x4f,0x21,0xfc - }; - -__fips_constseg -static const unsigned char p_256_sha1_pr_int_returnedbits[] = - { - 0x9f,0x66,0x6a,0x38,0x57,0x49,0x15,0xcd,0x5a,0x85,0x03,0x97, - 0x67,0xc3,0x62,0x46,0xb7,0x3a,0xd2,0x08,0x86,0x40,0x4e,0x6d, - 0x67,0xf4,0x19,0x68,0x92,0x63 - }; - -__fips_constseg -static const unsigned char p_256_sha1_pr_additionalinput2[] = - { - 0x0c,0xb6,0x1c,0xc7,0x52,0x47,0xe4,0xf1,0xa7,0x75,0x60,0x3d, - 0x60,0x07,0x72,0x6f - }; - -__fips_constseg -static const unsigned char p_256_sha1_pr_entropyinputpr2[] = - { - 0x39,0x37,0xb6,0x55,0x82,0x71,0x0e,0xd4,0x8f,0x8c,0x10,0xe5, - 0x7c,0x8f,0x5e,0x37 - }; - -__fips_constseg -static const unsigned char p_256_sha1_pr_returnedbits[] = - { - 0x37,0x6c,0x94,0x02,0xbe,0x28,0x42,0xd5,0xe7,0x4d,0x1a,0x6e, - 0xa8,0x5a,0x90,0x9a,0x31,0xa8,0x84,0x16,0xbc,0xe9,0x18,0xa4, - 0xe1,0xa1,0x05,0xf0,0x2a,0xe3 - }; - - -/* P-256 SHA-1 No PR */ -__fips_constseg -static const unsigned char p_256_sha1_entropyinput[] = - { - 0xac,0x08,0x45,0x86,0x79,0xfc,0x4b,0xb4,0x8b,0xe4,0xfd,0x1d, - 0x0e,0xeb,0x1b,0x8f - }; - -__fips_constseg -static const unsigned char p_256_sha1_nonce[] = - { - 0x5e,0xf4,0xe9,0xc5,0x04,0xee,0xb7,0x8a - }; - -__fips_constseg -static const unsigned char p_256_sha1_personalizationstring[] = - { - 0x55,0x0f,0xca,0x3b,0x1c,0xa6,0xf3,0xce,0xcb,0x6f,0xa7,0xc7, - 0x26,0x65,0x0f,0x7c - }; - -__fips_constseg -static const unsigned char p_256_sha1_additionalinput[] = - { - 0x74,0x51,0x73,0xa9,0xee,0x2e,0x21,0xf9,0xba,0x07,0xe4,0xad, - 0x97,0xae,0x1c,0x8b - }; - -__fips_constseg -static const unsigned char p_256_sha1_int_returnedbits[] = - { - 0x8d,0x45,0x11,0xa9,0x74,0x14,0x05,0x94,0x97,0x66,0x71,0xe2, - 0x9b,0x61,0x22,0x85,0xa5,0xaa,0x09,0x01,0x75,0xb5,0xab,0x3a, - 0x3a,0x6e,0x69,0xd3,0xc8,0xc4 - }; - -__fips_constseg -static const unsigned char p_256_sha1_entropyinputreseed[] = - { - 0x34,0xd9,0x8b,0x67,0x82,0xaf,0x97,0x95,0xe9,0x25,0xa7,0x93, - 0x37,0x06,0x73,0x5c - }; - -__fips_constseg -static const unsigned char p_256_sha1_additionalinputreseed[] = - { - 0x39,0x21,0x24,0x27,0x67,0xa1,0xc3,0xc4,0x90,0xc2,0x68,0x68, - 0x26,0x9b,0x32,0xc2 - }; - -__fips_constseg -static const unsigned char p_256_sha1_additionalinput2[] = - { - 0x84,0xa8,0x10,0xe5,0x71,0x0c,0x1e,0x74,0x42,0x6a,0xa5,0x09, - 0x90,0x74,0x39,0xd7 - }; - -__fips_constseg -static const unsigned char p_256_sha1_returnedbits[] = - { - 0x1e,0x0b,0x5c,0x41,0xcd,0xab,0x07,0xbd,0xdc,0x53,0xa7,0x62, - 0xd1,0xd0,0xca,0x19,0xe6,0xbb,0x8e,0xcf,0x1e,0x0a,0x4c,0xc0, - 0x2d,0x8c,0xe2,0xa4,0x89,0x2c - }; - - -/* P-256 SHA-224 PR */ -__fips_constseg -static const unsigned char p_256_sha224_pr_entropyinput[] = - { - 0x92,0x05,0xf0,0x1e,0xc4,0xc4,0x9e,0xab,0x85,0x10,0x16,0xda, - 0xa6,0xb4,0xba,0x6f - }; - -__fips_constseg -static const unsigned char p_256_sha224_pr_nonce[] = - { - 0xa3,0x5e,0xde,0x12,0xdc,0xa7,0x67,0xfd - }; - -__fips_constseg -static const unsigned char p_256_sha224_pr_personalizationstring[] = - { - 0x76,0xa0,0x8d,0x6c,0x0d,0x19,0x5d,0x94,0x9b,0x92,0x67,0x78, - 0x6c,0x02,0xfe,0xe4 - }; - -__fips_constseg -static const unsigned char p_256_sha224_pr_additionalinput[] = - { - 0xe2,0x05,0xcf,0x63,0x0f,0xf1,0xd0,0x41,0xc9,0xe3,0xf6,0xb0, - 0x57,0xaa,0xcd,0x92 - }; - -__fips_constseg -static const unsigned char p_256_sha224_pr_entropyinputpr[] = - { - 0x1a,0xd5,0xa9,0x25,0x52,0xa8,0xba,0x51,0x81,0x99,0x62,0x4d, - 0xbf,0x30,0x44,0xf3 - }; - -__fips_constseg -static const unsigned char p_256_sha224_pr_int_returnedbits[] = - { - 0xbf,0x9e,0x45,0x73,0x67,0x4b,0x25,0xa5,0x58,0x23,0x31,0xd8, - 0x0f,0xf3,0xe5,0x5d,0x0e,0x2d,0x9b,0x4a,0x5f,0x93,0x9c,0xad, - 0x6a,0xc5,0x70,0x4e,0x5e,0x58 - }; - -__fips_constseg -static const unsigned char p_256_sha224_pr_additionalinput2[] = - { - 0x4a,0x85,0x19,0xb2,0x61,0x5d,0xd5,0xc0,0x1f,0x47,0x72,0x8b, - 0x62,0x35,0x19,0xc1 - }; - -__fips_constseg -static const unsigned char p_256_sha224_pr_entropyinputpr2[] = - { - 0xda,0xa7,0x84,0x3f,0xfa,0xf9,0xd1,0x51,0x17,0xf8,0xe3,0x77, - 0xf5,0x20,0x37,0x17 - }; - -__fips_constseg -static const unsigned char p_256_sha224_pr_returnedbits[] = - { - 0x15,0xa4,0xa1,0x53,0x4f,0x63,0x06,0xfe,0x28,0xfd,0x58,0xa9, - 0xac,0x9c,0x83,0xb7,0x3a,0x86,0x82,0x92,0x96,0x89,0xea,0x3d, - 0xbd,0x83,0x3a,0x06,0x2a,0x7d - }; - - -/* P-256 SHA-224 No PR */ -__fips_constseg -static const unsigned char p_256_sha224_entropyinput[] = - { - 0xec,0x5b,0x46,0x4a,0xe1,0xe1,0xcb,0x31,0x86,0xa7,0x11,0x3a, - 0xff,0x87,0x4a,0x66 - }; - -__fips_constseg -static const unsigned char p_256_sha224_nonce[] = - { - 0xd1,0x6c,0x33,0x3c,0x37,0xc9,0xc6,0xac - }; - -__fips_constseg -static const unsigned char p_256_sha224_personalizationstring[] = - { - 0x8b,0xfe,0x68,0x96,0x2d,0xc5,0x91,0xb3,0xf2,0xaa,0x15,0xad, - 0x1a,0x50,0x0c,0x0a - }; - -__fips_constseg -static const unsigned char p_256_sha224_additionalinput[] = - { - 0xd4,0x48,0xfd,0x16,0x41,0xea,0xef,0x06,0x7f,0x4a,0xa2,0x60, - 0x60,0x31,0x20,0x5d - }; - -__fips_constseg -static const unsigned char p_256_sha224_int_returnedbits[] = - { - 0x68,0x64,0x67,0x0c,0x73,0x08,0x00,0x60,0x5a,0xa6,0x9a,0x27, - 0x01,0x81,0xae,0x2e,0x1d,0xa6,0x0a,0x86,0x77,0xef,0x05,0x3f, - 0x42,0xbe,0x46,0x73,0x40,0x1c - }; - -__fips_constseg -static const unsigned char p_256_sha224_entropyinputreseed[] = - { - 0x9c,0xde,0x86,0x11,0x55,0x9a,0xb4,0x2b,0x70,0xf0,0xc6,0x9d, - 0x8d,0x3a,0xc3,0x1e - }; - -__fips_constseg -static const unsigned char p_256_sha224_additionalinputreseed[] = - { - 0x5d,0x5b,0xeb,0x38,0xc5,0x8b,0x2b,0xc8,0x73,0xe3,0x0e,0xca, - 0x35,0xb0,0x4d,0x11 - }; - -__fips_constseg -static const unsigned char p_256_sha224_additionalinput2[] = - { - 0xf7,0xa3,0x79,0x4b,0xb0,0x2c,0x1e,0xc6,0x61,0x69,0x14,0x6a, - 0xed,0xf1,0xa2,0xd8 - }; - -__fips_constseg -static const unsigned char p_256_sha224_returnedbits[] = - { - 0x89,0x75,0x1b,0x89,0x20,0xcc,0xe2,0xaf,0xae,0x5e,0xc1,0xa9, - 0xde,0xc0,0x35,0x0b,0xf6,0x4e,0x04,0xfc,0xa7,0xe6,0x35,0xf9, - 0x16,0x8a,0xc6,0x0c,0x63,0x6b - }; - - -/* P-256 SHA-256 PR */ -__fips_constseg -static const unsigned char p_256_sha256_pr_entropyinput[] = - { - 0x22,0xe4,0x4c,0x01,0x94,0x59,0xce,0x08,0xb3,0x92,0x48,0xe2, - 0x0d,0x1a,0x32,0x4d - }; - -__fips_constseg -static const unsigned char p_256_sha256_pr_nonce[] = - { - 0x8d,0xf9,0x20,0x8a,0x65,0xf4,0x93,0x37 - }; - -__fips_constseg -static const unsigned char p_256_sha256_pr_personalizationstring[] = - { - 0x06,0x7e,0xe8,0x4f,0xdd,0xae,0x8d,0xf1,0xc9,0x13,0x9a,0x81, - 0xd3,0x68,0x76,0xc1 - }; - -__fips_constseg -static const unsigned char p_256_sha256_pr_additionalinput[] = - { - 0xfa,0x8e,0xea,0xf3,0xcf,0xda,0x7c,0x11,0x88,0xaa,0xb9,0x02, - 0x84,0xc4,0x30,0x54 - }; - -__fips_constseg -static const unsigned char p_256_sha256_pr_entropyinputpr[] = - { - 0xbb,0x21,0x72,0x4f,0x83,0x03,0x14,0x18,0x8e,0x88,0xec,0x73, - 0xde,0xed,0x60,0xf7 - }; - -__fips_constseg -static const unsigned char p_256_sha256_pr_int_returnedbits[] = - { - 0xdc,0x40,0x73,0x5e,0x1d,0x21,0x35,0x8c,0xcf,0xa4,0x50,0x05, - 0x5e,0x73,0xbd,0xde,0x5e,0x58,0xcc,0xc0,0x6f,0xd9,0xca,0x8d, - 0x48,0x9d,0x84,0x77,0xc2,0x8e - }; - -__fips_constseg -static const unsigned char p_256_sha256_pr_additionalinput2[] = - { - 0x0e,0xa7,0x4d,0x4f,0x19,0x94,0x34,0x05,0x46,0x3e,0x0c,0x05, - 0x27,0x85,0xd9,0xdf - }; - -__fips_constseg -static const unsigned char p_256_sha256_pr_entropyinputpr2[] = - { - 0x4f,0xae,0x44,0x10,0x2b,0xa1,0xbc,0xd7,0xcb,0xa7,0x49,0x55, - 0x27,0x54,0x36,0x2b - }; - -__fips_constseg -static const unsigned char p_256_sha256_pr_returnedbits[] = - { - 0x1c,0x16,0xf7,0x2b,0xd0,0xb7,0x54,0x5a,0xa5,0x85,0x14,0x63, - 0xd4,0x96,0x81,0x5a,0x6b,0xa4,0xde,0x57,0xbf,0xf3,0x81,0xc7, - 0xf5,0xbc,0xeb,0x4e,0x49,0xdf - }; - - -/* P-256 SHA-256 No PR */ -__fips_constseg -static const unsigned char p_256_sha256_entropyinput[] = - { - 0xa7,0x0b,0x6b,0xf7,0xfb,0x40,0x1a,0xca,0xa9,0x1f,0x16,0xc9, - 0x6a,0xd0,0x4a,0x8c - }; - -__fips_constseg -static const unsigned char p_256_sha256_nonce[] = - { - 0x97,0x8e,0xb1,0x72,0xe8,0x30,0xfc,0x43 - }; - -__fips_constseg -static const unsigned char p_256_sha256_personalizationstring[] = - { - 0x6c,0x90,0x00,0x41,0x84,0x7c,0x58,0x56,0x48,0xf0,0x60,0x04, - 0xe9,0xc0,0xa0,0xd8 - }; - -__fips_constseg -static const unsigned char p_256_sha256_additionalinput[] = - { - 0x69,0xad,0xd7,0x7c,0xbd,0x90,0xa1,0x63,0xcd,0x64,0x7c,0xb3, - 0xce,0xff,0xf2,0xf7 - }; - -__fips_constseg -static const unsigned char p_256_sha256_int_returnedbits[] = - { - 0xe8,0x5a,0x4f,0x5d,0xab,0xc7,0xd2,0x94,0x4d,0xbf,0x02,0x57, - 0xa1,0x89,0x73,0xa1,0xc2,0xca,0xfb,0x46,0x11,0x41,0x47,0x8e, - 0x32,0x45,0xd7,0x8a,0x8a,0x38 - }; - -__fips_constseg -static const unsigned char p_256_sha256_entropyinputreseed[] = - { - 0x5c,0xb4,0x82,0x38,0xa2,0x2d,0x78,0x63,0x2a,0x38,0x77,0x5b, - 0x9a,0x59,0x4d,0x17 - }; - -__fips_constseg -static const unsigned char p_256_sha256_additionalinputreseed[] = - { - 0x43,0x28,0x7f,0x91,0x92,0xad,0x88,0x75,0x64,0xe5,0xef,0x95, - 0x59,0xa9,0x11,0x61 - }; - -__fips_constseg -static const unsigned char p_256_sha256_additionalinput2[] = - { - 0x77,0xee,0xfc,0x84,0x5b,0x69,0xdf,0x9f,0x7e,0xf2,0xb1,0x35, - 0x34,0x28,0x8f,0xcd - }; - -__fips_constseg -static const unsigned char p_256_sha256_returnedbits[] = - { - 0x2d,0x45,0x00,0x60,0x87,0x6c,0xfa,0x69,0x06,0x9e,0x99,0xf9, - 0xf6,0xb6,0x1e,0xf6,0xfb,0x6b,0x54,0x68,0x1a,0xd3,0xda,0x31, - 0x3e,0x60,0x4a,0x31,0x7d,0x41 - }; - - -/* P-256 SHA-384 PR */ -__fips_constseg -static const unsigned char p_256_sha384_pr_entropyinput[] = - { - 0xb3,0x6a,0x1b,0x68,0xe3,0x8a,0xa4,0xad,0x2d,0xa0,0x6a,0xae, - 0x10,0xe5,0x55,0x58 - }; - -__fips_constseg -static const unsigned char p_256_sha384_pr_nonce[] = - { - 0xe2,0xe8,0xd4,0x8d,0xc8,0x47,0xad,0x79 - }; - -__fips_constseg -static const unsigned char p_256_sha384_pr_personalizationstring[] = - { - 0xf9,0xbb,0xac,0xe9,0xd9,0x8a,0x58,0xae,0x58,0xa6,0x68,0xd2, - 0xff,0x49,0x71,0x08 - }; - -__fips_constseg -static const unsigned char p_256_sha384_pr_additionalinput[] = - { - 0xa7,0xa3,0xcc,0xc1,0xbf,0xa7,0x32,0xe8,0xcb,0x21,0xf4,0x35, - 0x42,0xa6,0xdd,0x4b - }; - -__fips_constseg -static const unsigned char p_256_sha384_pr_entropyinputpr[] = - { - 0x37,0xdb,0x5a,0x83,0x9c,0x7a,0x50,0xe3,0xc7,0xbd,0x50,0x63, - 0x88,0x44,0xa1,0x50 - }; - -__fips_constseg -static const unsigned char p_256_sha384_pr_int_returnedbits[] = - { - 0x65,0x3a,0xdd,0x95,0x3a,0x52,0xd7,0x7f,0x8d,0x81,0x1b,0x53, - 0x4e,0xa9,0x5b,0x80,0xa2,0x08,0x1e,0xf5,0x7f,0xac,0x62,0x28, - 0xbc,0x1c,0x02,0xd2,0xe9,0x1e - }; - -__fips_constseg -static const unsigned char p_256_sha384_pr_additionalinput2[] = - { - 0xb3,0xff,0xbc,0x54,0x38,0x49,0x1f,0xad,0x3f,0x33,0x5f,0x45, - 0x21,0x2f,0xcf,0xba - }; - -__fips_constseg -static const unsigned char p_256_sha384_pr_entropyinputpr2[] = - { - 0x43,0x37,0x4a,0x16,0x15,0x1d,0x3d,0xa9,0x3b,0xcf,0xbb,0x73, - 0x67,0xce,0x93,0xbf - }; - -__fips_constseg -static const unsigned char p_256_sha384_pr_returnedbits[] = - { - 0x1e,0x1b,0x69,0x67,0xb8,0xd7,0xb4,0x18,0xb8,0xa0,0x11,0xc7, - 0x5f,0xd7,0x14,0xb7,0x24,0xae,0xa5,0x35,0x06,0xa0,0xd0,0x7f, - 0xcd,0x9b,0x20,0x03,0x66,0xc0 - }; - - -/* P-256 SHA-384 No PR */ -__fips_constseg -static const unsigned char p_256_sha384_entropyinput[] = - { - 0x1c,0x0d,0xa7,0x27,0x1f,0xb4,0xa2,0x4a,0xe5,0x25,0x00,0xbe, - 0xbe,0x80,0x88,0xa8 - }; - -__fips_constseg -static const unsigned char p_256_sha384_nonce[] = - { - 0x2c,0x7e,0x21,0x02,0x46,0x9e,0xe5,0xae - }; - -__fips_constseg -static const unsigned char p_256_sha384_personalizationstring[] = - { - 0x0a,0xf6,0x83,0xa9,0x7b,0x97,0x20,0x60,0xcc,0x46,0x0e,0x52, - 0xd0,0xcb,0x57,0xb5 - }; - -__fips_constseg -static const unsigned char p_256_sha384_additionalinput[] = - { - 0xac,0xd8,0x25,0xef,0x85,0xa8,0x5e,0x55,0x89,0x5b,0x6e,0xf6, - 0x4d,0x4d,0x05,0x53 - }; - -__fips_constseg -static const unsigned char p_256_sha384_int_returnedbits[] = - { - 0x5c,0x71,0x32,0x2f,0x34,0x09,0x99,0x6a,0x4e,0x55,0xaf,0x4b, - 0x73,0x32,0xb5,0xad,0x52,0x4c,0x54,0xa0,0x25,0x3b,0xd9,0x70, - 0xe5,0xe4,0x6f,0x61,0xab,0x8c - }; - -__fips_constseg -static const unsigned char p_256_sha384_entropyinputreseed[] = - { - 0x4b,0x0d,0xa9,0x66,0xc3,0x64,0xe9,0xd5,0x87,0xb1,0x98,0xc2, - 0xeb,0x14,0xd2,0x8a - }; - -__fips_constseg -static const unsigned char p_256_sha384_additionalinputreseed[] = - { - 0x1f,0x11,0x6b,0xc0,0x15,0x38,0xbd,0x62,0x27,0xf7,0x6d,0x97, - 0x77,0xd1,0xcc,0x00 - }; - -__fips_constseg -static const unsigned char p_256_sha384_additionalinput2[] = - { - 0x1d,0x9a,0xe5,0xfc,0xed,0x93,0x3d,0xbb,0x08,0xf3,0xba,0x01, - 0x6f,0x9f,0xdf,0xb1 - }; - -__fips_constseg -static const unsigned char p_256_sha384_returnedbits[] = - { - 0x4a,0xd5,0xd3,0x62,0xbb,0x6e,0x6c,0xb2,0x1c,0x0e,0xf6,0x97, - 0xd3,0x15,0x18,0xb5,0x42,0x59,0xc4,0xf6,0xa9,0x8f,0x1b,0xff, - 0xaa,0xf8,0xf9,0x9c,0xba,0x47 - }; - - -/* P-256 SHA-512 PR */ -__fips_constseg -static const unsigned char p_256_sha512_pr_entropyinput[] = - { - 0x73,0x83,0x07,0x93,0x85,0x39,0x2f,0x96,0xcd,0x74,0x32,0x4d, - 0x68,0x0e,0x97,0x9d - }; - -__fips_constseg -static const unsigned char p_256_sha512_pr_nonce[] = - { - 0xab,0xc6,0xf4,0x38,0x72,0x9b,0x9f,0x36 - }; - -__fips_constseg -static const unsigned char p_256_sha512_pr_personalizationstring[] = - { - 0x88,0x8e,0xc1,0xaf,0xe9,0x1b,0x8a,0xf5,0xf2,0x23,0x44,0x71, - 0xf5,0x9a,0xed,0x5e - }; - -__fips_constseg -static const unsigned char p_256_sha512_pr_additionalinput[] = - { - 0x38,0xf7,0x2b,0x11,0x7b,0xd6,0xfa,0xbd,0x07,0x42,0x46,0x77, - 0xed,0x1b,0x3f,0x95 - }; - -__fips_constseg -static const unsigned char p_256_sha512_pr_entropyinputpr[] = - { - 0x52,0xf2,0x68,0x6d,0xc9,0x1b,0xc7,0xb0,0x52,0x07,0x69,0x79, - 0x25,0x5d,0xbb,0xdb - }; - -__fips_constseg -static const unsigned char p_256_sha512_pr_int_returnedbits[] = - { - 0x23,0xa6,0x84,0x48,0x4f,0xd3,0x1f,0x56,0x57,0xae,0x50,0xea, - 0x9f,0x2b,0x47,0x80,0x6a,0x46,0x10,0x54,0x1d,0x77,0x67,0x79, - 0x45,0xbb,0x1d,0x90,0x2c,0xce - }; - -__fips_constseg -static const unsigned char p_256_sha512_pr_additionalinput2[] = - { - 0x9c,0x46,0x61,0x85,0x2c,0x9e,0x2c,0xd0,0x4d,0xcd,0x73,0x78, - 0x08,0x8d,0x49,0x5b - }; - -__fips_constseg -static const unsigned char p_256_sha512_pr_entropyinputpr2[] = - { - 0x71,0x60,0x46,0x14,0xc1,0xaa,0x21,0xc8,0xf1,0xfe,0x32,0x90, - 0x46,0xfd,0xe9,0x80 - }; - -__fips_constseg -static const unsigned char p_256_sha512_pr_returnedbits[] = - { - 0x7a,0x30,0x7d,0x6e,0xb1,0x22,0xb9,0x68,0x7d,0x00,0x14,0x63, - 0xca,0xe2,0x06,0x03,0xe0,0x94,0xbb,0x45,0x14,0x2d,0xd2,0xd1, - 0xfb,0x35,0xfd,0xe6,0xf1,0x81 - }; - - -/* P-256 SHA-512 No PR */ -__fips_constseg -static const unsigned char p_256_sha512_entropyinput[] = - { - 0x55,0xd0,0x7f,0xb7,0x23,0x81,0x95,0x38,0xa7,0xbf,0x01,0x8d, - 0x06,0x8b,0xbc,0x47 - }; - -__fips_constseg -static const unsigned char p_256_sha512_nonce[] = - { - 0x96,0xab,0x85,0xba,0x88,0x7b,0xf5,0x6e - }; - -__fips_constseg -static const unsigned char p_256_sha512_personalizationstring[] = - { - 0xea,0x25,0x60,0xd0,0x5d,0xd8,0x9c,0x8d,0x43,0x23,0x49,0x0a, - 0xd5,0x57,0xf3,0x54 - }; - -__fips_constseg -static const unsigned char p_256_sha512_additionalinput[] = - { - 0x8e,0xe8,0xfd,0x2e,0xcd,0x27,0xc6,0x7e,0x7a,0xf8,0xe7,0x11, - 0xb8,0x0d,0x20,0x36 - }; - -__fips_constseg -static const unsigned char p_256_sha512_int_returnedbits[] = - { - 0x57,0x18,0x20,0x51,0xd7,0x57,0x13,0xb0,0xa0,0x8f,0x92,0xd2, - 0xf5,0xa0,0x85,0xf3,0xac,0x64,0xb7,0x6b,0x94,0xde,0x9f,0xda, - 0x0a,0x04,0x11,0xdf,0x52,0x27 - }; - -__fips_constseg -static const unsigned char p_256_sha512_entropyinputreseed[] = - { - 0x89,0x1d,0x17,0x0c,0xe4,0x82,0x34,0xe7,0x81,0x6c,0x47,0x47, - 0xc6,0x49,0x50,0x3e - }; - -__fips_constseg -static const unsigned char p_256_sha512_additionalinputreseed[] = - { - 0xe7,0xe4,0x88,0x00,0xa7,0xc9,0xb7,0x6b,0x70,0xda,0xe3,0xf0, - 0x44,0xa9,0x02,0xf6 - }; - -__fips_constseg -static const unsigned char p_256_sha512_additionalinput2[] = - { - 0x09,0x9f,0xd2,0xe8,0xb2,0x0e,0x6e,0x89,0xf5,0x73,0x1c,0x1f, - 0x93,0xf2,0x76,0xb2 - }; - -__fips_constseg -static const unsigned char p_256_sha512_returnedbits[] = - { - 0xdd,0x42,0x2a,0x7b,0x4f,0x84,0x07,0xfa,0x4d,0x17,0x9a,0x2e, - 0x48,0xba,0xbf,0xc5,0x1c,0x42,0xc7,0xc3,0x63,0x4f,0x79,0xb0, - 0xc1,0x54,0x1d,0xa6,0x0a,0x1c - }; - - -/* P-384 SHA-224 PR */ -__fips_constseg -static const unsigned char p_384_sha224_pr_entropyinput[] = - { - 0x34,0xf0,0x89,0xac,0x46,0x33,0xe2,0x7f,0x8c,0x02,0x65,0x09, - 0xe1,0xcf,0x93,0x5b,0x10,0xbc,0xb0,0x43,0x4f,0xc7,0x62,0x19 - }; - -__fips_constseg -static const unsigned char p_384_sha224_pr_nonce[] = - { - 0x55,0x30,0xdf,0xa9,0xfb,0xbe,0x4a,0x2e,0x1d,0x03,0xf5,0x91 - }; - -__fips_constseg -static const unsigned char p_384_sha224_pr_personalizationstring[] = - { - 0x35,0xc7,0x3a,0x7b,0x5a,0x4e,0xd4,0x1a,0x82,0xe2,0xf5,0xed, - 0x40,0x61,0x4b,0xf4,0xb9,0xcf,0xd0,0xc1,0xe2,0x41,0x23,0x04 - }; - -__fips_constseg -static const unsigned char p_384_sha224_pr_additionalinput[] = - { - 0xec,0xef,0x64,0xfb,0x92,0xbb,0xdf,0x8b,0xc8,0xf2,0xad,0xd8, - 0x93,0x21,0x6f,0x11,0xde,0x37,0x52,0xe3,0x16,0x49,0xc7,0xe1 - }; - -__fips_constseg -static const unsigned char p_384_sha224_pr_entropyinputpr[] = - { - 0x59,0xb0,0x7e,0x34,0x49,0x29,0x7e,0x91,0x92,0x91,0x0c,0xca, - 0x8e,0x31,0x62,0x06,0xab,0xf4,0x81,0x80,0xa4,0x55,0x8f,0x0f - }; - -__fips_constseg -static const unsigned char p_384_sha224_pr_int_returnedbits[] = - { - 0x29,0xd9,0x3a,0x95,0xb1,0x34,0xff,0x73,0x06,0x1e,0x08,0x43, - 0xd7,0x1d,0x53,0xd1,0xcf,0x09,0xd2,0x83,0x04,0x44,0x29,0x9d, - 0x0d,0x18,0x76,0x94,0xa8,0x98,0xb4,0xc1,0xb0,0x31,0xbc,0xe6, - 0xf0,0xc7,0x57,0x35,0x5d,0x32,0x78,0x9e,0x1d,0x2a - }; - -__fips_constseg -static const unsigned char p_384_sha224_pr_additionalinput2[] = - { - 0x56,0x8c,0x6f,0x29,0xd6,0x25,0x9f,0xb8,0x6a,0x1d,0x70,0x5f, - 0x6a,0xe7,0xe2,0x2e,0xcc,0x6b,0x78,0x0a,0x3f,0x54,0x73,0x97 - }; - -__fips_constseg -static const unsigned char p_384_sha224_pr_entropyinputpr2[] = - { - 0xe3,0x91,0x20,0x13,0x78,0xc6,0x01,0xfd,0x82,0xd7,0x43,0x1e, - 0xed,0x85,0x4a,0xe2,0x0c,0x6f,0xdc,0x43,0x5f,0x7c,0xfd,0xd0 - }; - -__fips_constseg -static const unsigned char p_384_sha224_pr_returnedbits[] = - { - 0x89,0xa9,0x17,0xd8,0xcb,0x73,0x17,0x69,0x78,0x69,0x50,0x58, - 0x74,0xe4,0x8c,0x6f,0x5c,0xfa,0x6e,0x01,0xb3,0xf0,0xce,0xa9, - 0xd0,0xc0,0x40,0xb3,0x20,0x78,0xe2,0xdb,0xec,0x1f,0x73,0xea, - 0x2e,0xa6,0xf1,0xc8,0xfe,0x7c,0xe7,0x68,0xf7,0x86 - }; - - -/* P-384 SHA-224 No PR */ -__fips_constseg -static const unsigned char p_384_sha224_entropyinput[] = - { - 0x44,0x2c,0xc3,0xc6,0x20,0xe6,0x61,0xec,0xd1,0x2b,0xdf,0x18, - 0x2e,0xc5,0x4a,0xd4,0x80,0x55,0xbd,0x54,0x89,0x01,0x7b,0xbb - }; - -__fips_constseg -static const unsigned char p_384_sha224_nonce[] = - { - 0x16,0x27,0x4b,0xb3,0x0f,0x01,0xd0,0xe6,0x9f,0x5c,0x44,0xa4 - }; - -__fips_constseg -static const unsigned char p_384_sha224_personalizationstring[] = - { - 0x55,0x26,0x3e,0xee,0xaa,0x1b,0x35,0x27,0xef,0x18,0x28,0x62, - 0x51,0x1e,0xbc,0x4c,0x64,0x0d,0xf8,0x20,0xe6,0x0a,0x1d,0xaa - }; - -__fips_constseg -static const unsigned char p_384_sha224_additionalinput[] = - { - 0x27,0x08,0x22,0x32,0x4a,0xd6,0xc6,0x51,0xff,0xc5,0xb7,0x8f, - 0xb4,0x3e,0xa0,0x6e,0xe2,0x55,0xa1,0xf1,0x2e,0x0d,0x89,0x91 - }; - -__fips_constseg -static const unsigned char p_384_sha224_int_returnedbits[] = - { - 0x85,0x0e,0xe3,0xde,0xed,0x40,0xdc,0xec,0x9a,0x2d,0x65,0x24, - 0x2b,0x56,0xd6,0xce,0x7c,0x40,0x07,0xe5,0x61,0x64,0xe5,0xac, - 0x6e,0x48,0xa3,0xda,0x7d,0x4c,0xd6,0x7d,0xd0,0x69,0xa8,0x93, - 0xa7,0xb1,0x91,0xba,0x0d,0x81,0x8f,0x04,0xaf,0x91 - }; - -__fips_constseg -static const unsigned char p_384_sha224_entropyinputreseed[] = - { - 0x27,0x57,0xc2,0x22,0xa6,0x70,0xb9,0x74,0x86,0x59,0x8c,0xff, - 0x7d,0x10,0x0c,0xe3,0x24,0xf1,0x95,0xbd,0x99,0x84,0xca,0x11 - }; - -__fips_constseg -static const unsigned char p_384_sha224_additionalinputreseed[] = - { - 0x5a,0xc3,0x47,0x2c,0x9c,0x1d,0xe0,0x43,0x3b,0x1b,0x01,0xed, - 0x86,0x5d,0x1b,0x3f,0x45,0xb1,0x8e,0xa9,0x79,0x7b,0x88,0x01 - }; - -__fips_constseg -static const unsigned char p_384_sha224_additionalinput2[] = - { - 0x7d,0x48,0x91,0xda,0x00,0x60,0x33,0x2c,0x22,0xe4,0x42,0x61, - 0xbc,0x70,0x05,0x73,0x22,0x23,0x42,0xda,0x7a,0x2b,0xba,0xbb - }; - -__fips_constseg -static const unsigned char p_384_sha224_returnedbits[] = - { - 0xfa,0x7d,0x7b,0x35,0x32,0xbe,0x44,0x91,0x90,0xd2,0x69,0x9a, - 0x06,0xb8,0x52,0x3e,0x3b,0xcf,0x1e,0x81,0xd3,0x20,0x5f,0x5b, - 0x55,0xb6,0xb3,0xc9,0x6b,0xc7,0x0c,0xf1,0xa7,0xbd,0x4a,0x83, - 0x25,0x50,0xc3,0x78,0x3f,0x4e,0xe9,0xed,0x6c,0x4c - }; - - -/* P-384 SHA-256 PR */ -__fips_constseg -static const unsigned char p_384_sha256_pr_entropyinput[] = - { - 0xc6,0xd0,0xc7,0xa3,0x7e,0x2b,0x8c,0xd6,0x23,0xe9,0x9e,0x1f, - 0x77,0x30,0xed,0x6a,0xfc,0xe4,0x7b,0xf0,0x6f,0xd6,0xfe,0x05 - }; - -__fips_constseg -static const unsigned char p_384_sha256_pr_nonce[] = - { - 0x67,0x91,0xca,0x93,0xc8,0x1e,0x93,0x13,0x00,0x72,0x4e,0xa2 - }; - -__fips_constseg -static const unsigned char p_384_sha256_pr_personalizationstring[] = - { - 0xa5,0x5b,0x6e,0xeb,0xc9,0x0d,0x42,0x0b,0x41,0xec,0x0b,0x9e, - 0xde,0xc1,0x80,0x4d,0xe3,0x86,0xa0,0xfe,0x7e,0x92,0x47,0xa3 - }; - -__fips_constseg -static const unsigned char p_384_sha256_pr_additionalinput[] = - { - 0x9a,0x04,0xa9,0x78,0x48,0xa8,0x77,0x0f,0x38,0x2a,0x54,0x66, - 0x34,0xaa,0x31,0xbd,0xf6,0xfb,0xc1,0x14,0xa5,0xcb,0x1c,0xf2 - }; - -__fips_constseg -static const unsigned char p_384_sha256_pr_entropyinputpr[] = - { - 0x19,0x6c,0x48,0xf5,0x64,0xb3,0xb4,0x49,0x6e,0xb8,0xc4,0x8b, - 0xab,0xba,0xb5,0x8e,0xa3,0xf1,0x6e,0xe9,0xf6,0x37,0xa1,0x46 - }; - -__fips_constseg -static const unsigned char p_384_sha256_pr_int_returnedbits[] = - { - 0xfd,0x04,0x26,0x4f,0xbd,0x84,0xe3,0x54,0xb2,0x9b,0xb1,0x84, - 0x66,0x5f,0x02,0xc0,0xcc,0x69,0x7e,0x4d,0x4f,0xc4,0x00,0x8e, - 0x13,0x5d,0xe9,0x0f,0x98,0x71,0xe8,0x7f,0x50,0xd1,0x49,0xc8, - 0xae,0x71,0xe9,0x60,0x94,0x90,0xce,0x6d,0xba,0xab - }; - -__fips_constseg -static const unsigned char p_384_sha256_pr_additionalinput2[] = - { - 0x4d,0x27,0x90,0x17,0x81,0x74,0x4f,0xa4,0x40,0xdf,0x42,0x29, - 0xc5,0x37,0xf1,0x31,0x89,0x90,0x27,0x8a,0x96,0xcc,0x68,0x6e - }; - -__fips_constseg -static const unsigned char p_384_sha256_pr_entropyinputpr2[] = - { - 0x1d,0xbe,0xdf,0x39,0xd8,0x82,0xb2,0x8f,0x7f,0x90,0xac,0x19, - 0xc8,0x65,0xf2,0x5a,0xff,0x4e,0xbb,0xcf,0xcd,0xce,0x2c,0xfd - }; - -__fips_constseg -static const unsigned char p_384_sha256_pr_returnedbits[] = - { - 0x45,0x63,0xac,0xb5,0x1e,0x49,0x99,0x67,0x89,0xd4,0x9c,0xa9, - 0xf8,0x5a,0x05,0x0d,0xeb,0xe6,0xc7,0x78,0x8e,0xf1,0xec,0xe3, - 0xc8,0x52,0xf1,0xfa,0x0f,0xd0,0xd7,0xbe,0x8a,0x34,0x0a,0x1f, - 0x38,0x42,0xc6,0xac,0x61,0xd4,0x32,0xc5,0xd2,0x15 - }; - - -/* P-384 SHA-256 No PR */ -__fips_constseg -static const unsigned char p_384_sha256_entropyinput[] = - { - 0x52,0x92,0xc4,0xac,0xce,0xf5,0x35,0xa4,0x15,0xdb,0xa9,0xe1, - 0xbc,0x7b,0x08,0xa5,0x27,0x16,0xe3,0x50,0x08,0x2d,0x09,0x2d - }; - -__fips_constseg -static const unsigned char p_384_sha256_nonce[] = - { - 0xe8,0x14,0x2b,0xee,0xba,0xac,0xe0,0x25,0xd0,0x3b,0x78,0xc5 - }; - -__fips_constseg -static const unsigned char p_384_sha256_personalizationstring[] = - { - 0x28,0x0c,0x86,0x48,0x5e,0xca,0xfa,0x89,0x1f,0x58,0xb8,0x2c, - 0x41,0x28,0x3f,0x98,0x71,0x66,0x7b,0xb7,0x32,0xa2,0xe1,0x49 - }; - -__fips_constseg -static const unsigned char p_384_sha256_additionalinput[] = - { - 0xdc,0x59,0xb1,0x23,0x39,0x75,0x1b,0x27,0x24,0x5f,0x7a,0x55, - 0x82,0xdc,0xdc,0xe2,0x12,0x65,0xbf,0x8a,0x65,0xdb,0x27,0xdb - }; - -__fips_constseg -static const unsigned char p_384_sha256_int_returnedbits[] = - { - 0xc0,0x86,0xd8,0x67,0xdd,0xe4,0xce,0x15,0x60,0xad,0x45,0x60, - 0x80,0x8b,0x5a,0xb6,0x85,0x6d,0x4a,0xdf,0x8e,0xc0,0x2d,0xbf, - 0xa9,0x8c,0x9b,0x8d,0x03,0xca,0xbf,0x3b,0x1f,0xdc,0xc1,0xac, - 0xa8,0x0f,0x45,0xd6,0x2e,0xd1,0xe6,0x29,0xb5,0x1c - }; - -__fips_constseg -static const unsigned char p_384_sha256_entropyinputreseed[] = - { - 0x9f,0x19,0x9f,0xc8,0x18,0x43,0xfc,0x9a,0x97,0xed,0x20,0x13, - 0xad,0xc9,0xa0,0x65,0xef,0x38,0xd6,0x2e,0xce,0x4d,0xe1,0x1d - }; - -__fips_constseg -static const unsigned char p_384_sha256_additionalinputreseed[] = - { - 0xa6,0x27,0x35,0x9f,0x8a,0xaa,0xf5,0xb3,0x60,0x4b,0x16,0x68, - 0xdd,0x32,0x2e,0x1b,0xb1,0x34,0x47,0x03,0x45,0x3f,0xb6,0x3e - }; - -__fips_constseg -static const unsigned char p_384_sha256_additionalinput2[] = - { - 0x76,0x4e,0x5c,0x75,0x33,0xa5,0x94,0x95,0xf4,0x36,0xa5,0x39, - 0x28,0xc1,0x74,0xd1,0xfa,0x1d,0x8a,0x40,0x6e,0x84,0x4e,0xc7 - }; - -__fips_constseg -static const unsigned char p_384_sha256_returnedbits[] = - { - 0x50,0x15,0xc9,0x98,0x73,0x71,0x55,0xb7,0x7a,0xf4,0xa5,0xe7, - 0xb3,0xe2,0x24,0x2e,0x96,0x5b,0xd1,0xab,0xe8,0x51,0x1f,0xbe, - 0x3b,0x1e,0x1f,0xd4,0x18,0x2d,0x99,0xda,0xb8,0xa5,0x98,0x65, - 0x1d,0xaa,0x1e,0x46,0x8f,0x6b,0x4f,0xa2,0xd5,0xdf - }; - - -/* P-384 SHA-384 PR */ -__fips_constseg -static const unsigned char p_384_sha384_pr_entropyinput[] = - { - 0x3b,0x40,0x57,0x65,0x46,0x14,0xa5,0xf6,0x63,0x21,0xe7,0x33, - 0xd7,0x38,0xa7,0x54,0x33,0x62,0x08,0x08,0x37,0xef,0xbf,0x22 - }; - -__fips_constseg -static const unsigned char p_384_sha384_pr_nonce[] = - { - 0xf4,0xd4,0x11,0x0a,0x4a,0xdb,0xfc,0xbb,0x08,0x7a,0x20,0x51 - }; - -__fips_constseg -static const unsigned char p_384_sha384_pr_personalizationstring[] = - { - 0x5d,0x5b,0x9d,0xe5,0x45,0x62,0x5b,0xd0,0xa8,0x1b,0xea,0xe3, - 0xbd,0x59,0xd4,0xab,0x50,0xbe,0x5d,0x21,0x5d,0x85,0x42,0x16 - }; - -__fips_constseg -static const unsigned char p_384_sha384_pr_additionalinput[] = - { - 0xd9,0xac,0x4b,0x76,0x18,0x46,0xba,0x30,0x88,0xdf,0x41,0xdb, - 0x72,0x9b,0x4d,0xb7,0xbb,0x12,0xd2,0xd8,0x00,0xa0,0x81,0x14 - }; - -__fips_constseg -static const unsigned char p_384_sha384_pr_entropyinputpr[] = - { - 0x46,0x6d,0x66,0xaf,0xcf,0xb3,0x59,0x37,0x52,0x7e,0xa0,0xce, - 0x6d,0xaa,0x40,0xac,0x87,0xce,0x01,0x76,0x8f,0xac,0x49,0x42 - }; - -__fips_constseg -static const unsigned char p_384_sha384_pr_int_returnedbits[] = - { - 0xe1,0xea,0x43,0x73,0x35,0xf8,0x1f,0x2d,0xab,0x82,0x82,0x7f, - 0x82,0xca,0x78,0xb4,0x9b,0xfd,0x89,0xbc,0x83,0xcb,0x8d,0x09, - 0x44,0xb6,0xd6,0x0c,0xd9,0x43,0x97,0x5c,0xf8,0x51,0x5d,0xe3, - 0x0c,0x36,0xe1,0xaf,0xd3,0xbd,0x43,0x08,0xb8,0x65 - }; - -__fips_constseg -static const unsigned char p_384_sha384_pr_additionalinput2[] = - { - 0x6f,0xe5,0x27,0xa8,0x0c,0x4b,0xad,0x03,0xba,0xaa,0x70,0xc5, - 0xc6,0x4c,0xa6,0x6b,0xd9,0xb4,0x74,0x7a,0xea,0x4b,0x07,0xc8 - }; - -__fips_constseg -static const unsigned char p_384_sha384_pr_entropyinputpr2[] = - { - 0xec,0xc8,0x0c,0x3a,0x39,0xd3,0x2e,0xa9,0xab,0x57,0x89,0x1d, - 0x85,0x23,0x54,0x40,0xdf,0x15,0xbd,0x65,0x41,0xe5,0xaf,0xfb - }; - -__fips_constseg -static const unsigned char p_384_sha384_pr_returnedbits[] = - { - 0x3f,0xe0,0xa9,0x90,0x8e,0x27,0x2c,0xbe,0xfe,0xdd,0x35,0x67, - 0x4e,0x9b,0x9b,0x54,0xf3,0xb9,0x53,0xf4,0x62,0x8a,0xad,0x67, - 0x3e,0x68,0x92,0xd5,0xdb,0xd7,0x8f,0xb1,0xf7,0x10,0x5e,0xc6, - 0xc3,0xe8,0x45,0x60,0xde,0x05,0x4e,0x94,0xbc,0x43 - }; - - -/* P-384 SHA-384 No PR */ -__fips_constseg -static const unsigned char p_384_sha384_entropyinput[] = - { - 0x52,0x51,0xd7,0x2a,0x26,0xda,0xeb,0x5c,0xfb,0x23,0x47,0x49, - 0xf7,0x04,0xc6,0x62,0xed,0x72,0x3e,0x70,0x41,0x87,0x75,0x42 - }; - -__fips_constseg -static const unsigned char p_384_sha384_nonce[] = - { - 0x63,0x66,0x35,0x65,0x9b,0xe5,0xd3,0xcb,0x94,0x82,0x81,0x05 - }; - -__fips_constseg -static const unsigned char p_384_sha384_personalizationstring[] = - { - 0x52,0xa4,0xce,0x0e,0x4b,0x72,0x21,0x63,0xad,0x21,0x7f,0x60, - 0x9e,0x5d,0xa7,0xff,0xef,0xf1,0xfb,0x04,0xdb,0x30,0x5a,0x0c - }; - -__fips_constseg -static const unsigned char p_384_sha384_additionalinput[] = - { - 0xd7,0xde,0x8e,0xc4,0xeb,0x69,0xd2,0x2b,0xed,0x00,0x4a,0x6e, - 0x3a,0x13,0xf5,0x48,0xe4,0x83,0xad,0x81,0x4d,0x68,0xe5,0x57 - }; - -__fips_constseg -static const unsigned char p_384_sha384_int_returnedbits[] = - { - 0xbc,0x2d,0x9b,0x3b,0xbb,0x75,0xf4,0xdf,0xda,0x0f,0x10,0x88, - 0xb4,0x95,0x4c,0xf3,0xfa,0xff,0x3d,0x30,0x53,0x0b,0xa7,0xb9, - 0x95,0x27,0xc3,0x11,0xc9,0xef,0xd4,0xfe,0x84,0x9d,0xe0,0x76, - 0xcc,0x39,0x83,0xab,0x3f,0x31,0xe7,0x6d,0x44,0x0f - }; - -__fips_constseg -static const unsigned char p_384_sha384_entropyinputreseed[] = - { - 0xef,0x0f,0xa7,0x4e,0x90,0xe1,0x57,0x9e,0xce,0x52,0xe1,0xa0, - 0xd3,0x0f,0x06,0xa4,0xfe,0x5d,0x55,0x60,0xe2,0xc5,0x45,0x3b - }; - -__fips_constseg -static const unsigned char p_384_sha384_additionalinputreseed[] = - { - 0xec,0x87,0x9e,0x8e,0x58,0xb8,0xa3,0xd3,0x3e,0x49,0x22,0xf5, - 0x68,0x5b,0x60,0x6e,0x7b,0x73,0xd5,0xa4,0x7c,0x9e,0xcd,0xba - }; - -__fips_constseg -static const unsigned char p_384_sha384_additionalinput2[] = - { - 0x1c,0xd2,0xce,0x30,0x31,0x8b,0xbb,0xaf,0xbb,0xa8,0xae,0x20, - 0xa3,0x6b,0xb5,0x37,0xfe,0x09,0x91,0x1a,0x63,0x33,0x29,0x8c - }; - -__fips_constseg -static const unsigned char p_384_sha384_returnedbits[] = - { - 0xd7,0x36,0x7b,0x33,0x50,0x6a,0x59,0xb0,0x7c,0xb3,0xc4,0xe9, - 0xc2,0x16,0x41,0x7b,0xe4,0x4c,0xd8,0x7c,0x6b,0x74,0x00,0x31, - 0xd1,0x97,0x2d,0x7a,0x97,0x22,0x45,0xe6,0xf0,0xcd,0x8e,0xa5, - 0xeb,0xab,0x37,0xd6,0xb7,0xb1,0x9c,0x42,0xfb,0xcf - }; - - -/* P-384 SHA-512 PR */ -__fips_constseg -static const unsigned char p_384_sha512_pr_entropyinput[] = - { - 0x14,0xdf,0x91,0xdb,0xad,0xe2,0x22,0xe5,0x56,0xa1,0x88,0xbd, - 0x42,0x73,0xf7,0x8d,0xdc,0x99,0x54,0x99,0x8a,0xab,0x11,0x4b - }; - -__fips_constseg -static const unsigned char p_384_sha512_pr_nonce[] = - { - 0x10,0x49,0x5d,0xf6,0x5d,0x17,0xa7,0xa6,0xd8,0xc7,0xc8,0xe7 - }; - -__fips_constseg -static const unsigned char p_384_sha512_pr_personalizationstring[] = - { - 0x61,0x59,0xc5,0x8e,0x30,0x77,0x05,0x75,0x87,0xff,0x0b,0x06, - 0x03,0x79,0xa5,0x8b,0x59,0xb8,0x32,0xc9,0x19,0x47,0x7d,0x0e - }; - -__fips_constseg -static const unsigned char p_384_sha512_pr_additionalinput[] = - { - 0x41,0xd5,0x73,0x17,0x13,0x4c,0xe8,0x7c,0x83,0x45,0x84,0xf1, - 0x72,0xae,0x1d,0xea,0x08,0x0a,0x56,0xec,0x16,0xf9,0x1f,0xb6 - }; - -__fips_constseg -static const unsigned char p_384_sha512_pr_entropyinputpr[] = - { - 0xa6,0x85,0xa8,0xa4,0x0f,0xad,0x96,0x32,0x39,0x5e,0x86,0xb0, - 0x8b,0xda,0xb2,0xf0,0x38,0x75,0xf8,0xe2,0xc0,0xbf,0x77,0x62 - }; - -__fips_constseg -static const unsigned char p_384_sha512_pr_int_returnedbits[] = - { - 0xc8,0xf2,0x0c,0x8a,0xe7,0x72,0xe2,0xa3,0x5e,0x0a,0xaa,0x21, - 0x3a,0x92,0x08,0x70,0xaf,0xc2,0x1e,0xed,0xd1,0x2c,0xa0,0xbc, - 0xcb,0x0e,0x46,0xb9,0x34,0x97,0x62,0x03,0x4a,0x93,0xe3,0x6f, - 0x92,0x08,0x71,0x16,0xce,0x3e,0x5b,0x6b,0x9a,0x52 - }; - -__fips_constseg -static const unsigned char p_384_sha512_pr_additionalinput2[] = - { - 0x72,0x72,0xb3,0x26,0x05,0x49,0xf0,0x34,0xb6,0x04,0x75,0x6a, - 0x0a,0x86,0x9c,0x8f,0xe5,0x3d,0x90,0x26,0x42,0x92,0x2a,0x77 - }; - -__fips_constseg -static const unsigned char p_384_sha512_pr_entropyinputpr2[] = - { - 0xf1,0xda,0x51,0xa2,0x21,0x54,0x2d,0x6d,0xec,0x92,0xe5,0x8f, - 0x81,0x96,0x21,0x60,0x93,0x33,0x3d,0xfb,0x92,0xfe,0xae,0xcb - }; - -__fips_constseg -static const unsigned char p_384_sha512_pr_returnedbits[] = - { - 0x12,0x87,0x30,0xc4,0x87,0x61,0x58,0xab,0x79,0x05,0xb4,0xfd, - 0x47,0x95,0x86,0x4c,0x24,0x45,0xb0,0x4b,0x23,0x9a,0xe6,0x72, - 0x03,0xd8,0xc1,0x8a,0xbc,0xd0,0x3b,0xb5,0x8e,0x84,0x9f,0x2d, - 0xa4,0xf6,0x9b,0x89,0xd6,0x92,0x72,0x70,0x63,0xb9 - }; - - -/* P-384 SHA-512 No PR */ -__fips_constseg -static const unsigned char p_384_sha512_entropyinput[] = - { - 0xc7,0x7b,0x0e,0xe1,0x06,0x66,0x63,0x87,0x15,0x09,0x0a,0xe2, - 0xbe,0xdc,0xd5,0x3c,0x65,0xce,0xc5,0x25,0xfd,0xf2,0x23,0xbe - }; - -__fips_constseg -static const unsigned char p_384_sha512_nonce[] = - { - 0x5c,0xe8,0xa7,0x7d,0x45,0x8d,0x89,0xcd,0xb7,0xa3,0x4a,0x98 - }; - -__fips_constseg -static const unsigned char p_384_sha512_personalizationstring[] = - { - 0xa9,0x0e,0x29,0xff,0x2f,0x4e,0x92,0xe3,0xbd,0xcf,0x25,0xfa, - 0x96,0xdf,0x18,0x16,0x9a,0x99,0xb0,0x07,0xfe,0x51,0x24,0x9e - }; - -__fips_constseg -static const unsigned char p_384_sha512_additionalinput[] = - { - 0x1a,0x19,0xdf,0x08,0x35,0x94,0x83,0x30,0xab,0x01,0x98,0x2b, - 0xa5,0xe2,0x6d,0x99,0xe7,0x30,0xd5,0xef,0xf1,0xa7,0x61,0x61 - }; - -__fips_constseg -static const unsigned char p_384_sha512_int_returnedbits[] = - { - 0xa2,0x80,0xdb,0xa3,0x6c,0x7b,0x74,0x57,0x65,0x9d,0x32,0x53, - 0xaf,0xcc,0x91,0x21,0x59,0x3c,0xf2,0xf7,0xf7,0x06,0x29,0xee, - 0xce,0x1f,0x3d,0xdb,0x2c,0x9c,0xb9,0xfb,0xf1,0xe1,0xf1,0xac, - 0x90,0xcd,0x6e,0xc5,0x97,0x1e,0xa2,0x90,0x2b,0x7e - }; - -__fips_constseg -static const unsigned char p_384_sha512_entropyinputreseed[] = - { - 0xf4,0x57,0x3d,0xc5,0x13,0x99,0xb2,0x4d,0xdd,0xdf,0xf3,0xa0, - 0x7b,0x82,0x8a,0x22,0x9a,0x02,0x9c,0xac,0x6f,0xb4,0x07,0xd8 - }; - -__fips_constseg -static const unsigned char p_384_sha512_additionalinputreseed[] = - { - 0x12,0x98,0x84,0xa1,0xb5,0x26,0x7e,0x55,0xe1,0xd1,0x00,0x8f, - 0x50,0x96,0x30,0xa7,0x33,0xf5,0xb4,0x76,0x93,0x7a,0x2d,0x82 - }; - -__fips_constseg -static const unsigned char p_384_sha512_additionalinput2[] = - { - 0xfd,0x4c,0x76,0x61,0x48,0x40,0xa7,0x1e,0xa1,0xe9,0x25,0xcc, - 0xa6,0x21,0x4e,0x87,0xc9,0x27,0x06,0x3e,0x89,0x8b,0x18,0x3c - }; - -__fips_constseg -static const unsigned char p_384_sha512_returnedbits[] = - { - 0x90,0xa9,0xd4,0x1a,0x7f,0xb5,0xdd,0x66,0x5f,0xa7,0xc9,0x53, - 0x57,0xfc,0xc1,0x42,0x93,0x09,0xb4,0xf6,0x6c,0x7a,0xce,0x16, - 0x5e,0xed,0xad,0xea,0x0e,0x34,0x06,0xbb,0x80,0x89,0xba,0xd3, - 0xfe,0x49,0x21,0x4e,0x28,0xa7,0xfe,0xdb,0x27,0xfe - }; - - -/* P-521 SHA-256 PR */ -__fips_constseg -static const unsigned char p_521_sha256_pr_entropyinput[] = - { - 0x1a,0xb3,0x78,0x1e,0x14,0x19,0x83,0x05,0xac,0xb0,0x95,0xe1, - 0x10,0xa3,0xc4,0xbc,0x8e,0x13,0x2c,0xf2,0xad,0x63,0x25,0x1f, - 0x88,0xc4,0xc4,0x4e,0x6d,0x03,0x96,0x5e - }; - -__fips_constseg -static const unsigned char p_521_sha256_pr_nonce[] = - { - 0xd8,0x3d,0x1c,0x7e,0x4a,0x8e,0x28,0x4a,0xd6,0xf7,0xe8,0x0c, - 0x54,0x69,0x31,0xe4 - }; - -__fips_constseg -static const unsigned char p_521_sha256_pr_personalizationstring[] = - { - 0xc7,0xa6,0xb8,0xc0,0x25,0xaa,0x88,0xf5,0xc7,0x6a,0xd2,0xfc, - 0x7a,0x07,0xdd,0xf9,0x02,0xfb,0x79,0x36,0x17,0xc3,0x23,0x6e, - 0x9e,0xcd,0x5c,0x5d,0x2b,0xa3,0x45,0x86 - }; - -__fips_constseg -static const unsigned char p_521_sha256_pr_additionalinput[] = - { - 0xde,0xc5,0x1d,0x59,0x4d,0x25,0x3c,0x4f,0xbb,0x81,0xb3,0x61, - 0xd4,0x84,0x6e,0x4e,0x52,0x80,0xcd,0x5d,0x1a,0xb9,0xdf,0x44, - 0x94,0xf2,0xde,0x54,0x49,0x37,0xea,0xe8 - }; - -__fips_constseg -static const unsigned char p_521_sha256_pr_entropyinputpr[] = - { - 0x4e,0xe6,0x23,0xa4,0x97,0xaf,0x70,0x36,0xed,0xed,0x37,0x6b, - 0xc9,0x31,0x95,0x1e,0x07,0x42,0x42,0x4b,0x24,0x06,0xee,0xa0, - 0xb5,0xb1,0xd7,0x40,0x29,0x2e,0xa8,0xd8 - }; - -__fips_constseg -static const unsigned char p_521_sha256_pr_int_returnedbits[] = - { - 0x7d,0x64,0x63,0x00,0xa5,0x98,0x9b,0xf3,0xf4,0x09,0x44,0x64, - 0xcc,0xa8,0x99,0xbc,0x6e,0xac,0x67,0xb9,0xb1,0xb5,0x3b,0xe8, - 0x99,0xde,0x91,0xe8,0x8b,0x95,0x09,0xcc,0x35,0xde,0xd7,0x78, - 0x97,0x47,0x7d,0xa0,0x5f,0xe4,0x48,0x1e,0x5f,0x14,0xa0,0xda, - 0xd6,0xac,0x59,0xf0,0x31,0xc6,0xb4,0x78,0x70,0x32,0x87,0xd8, - 0xbb,0xe1,0x8e - }; - -__fips_constseg -static const unsigned char p_521_sha256_pr_additionalinput2[] = - { - 0xda,0x8a,0xbb,0x5e,0x1f,0xc7,0x4b,0x7e,0x2b,0x09,0xdd,0x64, - 0x42,0x4b,0x19,0x66,0x16,0xb6,0xec,0x1c,0x46,0xd1,0x23,0x26, - 0x16,0xe9,0x4a,0x3b,0x6e,0xc1,0xc6,0x74 - }; - -__fips_constseg -static const unsigned char p_521_sha256_pr_entropyinputpr2[] = - { - 0x7b,0x4d,0x60,0x68,0xb1,0xd7,0xbe,0xf7,0x40,0xb5,0x84,0xa8, - 0x3b,0x49,0x38,0x8a,0xc2,0x40,0x44,0x0b,0x80,0xc8,0x94,0xbf, - 0x6a,0xf5,0x72,0x74,0xb5,0x6f,0x9f,0x7a - }; - -__fips_constseg -static const unsigned char p_521_sha256_pr_returnedbits[] = - { - 0xb2,0x4e,0x40,0x75,0xaf,0xcf,0x93,0x13,0xaf,0x97,0x49,0x49, - 0x5f,0xdf,0x5d,0x21,0x2f,0x99,0x7d,0xe9,0xb8,0x98,0x3e,0x1f, - 0x06,0xcc,0xca,0xb6,0xcf,0x6d,0xd2,0xd9,0x85,0x45,0x1a,0xd5, - 0x39,0x6a,0x26,0x6c,0x7b,0x7b,0x72,0x18,0xa2,0xf1,0x99,0x7e, - 0xe1,0xa0,0xa6,0x54,0xe4,0x0f,0x73,0x48,0xc2,0x54,0xc2,0xc3, - 0x4f,0x53,0xb3 - }; - - -/* P-521 SHA-256 No PR */ -__fips_constseg -static const unsigned char p_521_sha256_entropyinput[] = - { - 0x69,0x5d,0x57,0x6d,0xe8,0xb1,0x0a,0x01,0xf8,0x1d,0xb9,0x5d, - 0xbd,0xfb,0xec,0x38,0xc9,0xd3,0x70,0x88,0x9a,0x8d,0xf2,0x4e, - 0x55,0xd6,0xde,0xa2,0xc4,0xd2,0x78,0xfb - }; - -__fips_constseg -static const unsigned char p_521_sha256_nonce[] = - { - 0x12,0xd2,0x1a,0xac,0xaf,0x49,0xb2,0xa4,0x9c,0x33,0x2e,0xdb, - 0x46,0xd1,0xc7,0x23 - }; - -__fips_constseg -static const unsigned char p_521_sha256_personalizationstring[] = - { - 0xb7,0xe2,0xeb,0xa9,0x88,0xb5,0x24,0xf3,0x82,0xc6,0x83,0xe3, - 0x5e,0x12,0x32,0xd1,0x50,0x16,0xd4,0x96,0x5e,0x62,0x0b,0xb8, - 0x02,0x5b,0x2e,0xd2,0x01,0x52,0x4a,0x48 - }; - -__fips_constseg -static const unsigned char p_521_sha256_additionalinput[] = - { - 0xf4,0xa2,0xfa,0xae,0x18,0x94,0xdb,0x12,0x0b,0xa8,0x1e,0x4e, - 0x7f,0xdb,0x3d,0x9e,0x06,0xe2,0x77,0x53,0x2b,0x76,0x0a,0xbd, - 0xcc,0xdb,0xae,0x5a,0xbc,0xb0,0x53,0x3f - }; - -__fips_constseg -static const unsigned char p_521_sha256_int_returnedbits[] = - { - 0xbd,0x16,0xe4,0x4d,0x62,0xa1,0xb4,0x4f,0x3f,0xba,0x27,0x58, - 0xa3,0xa1,0x6f,0x92,0xe9,0xe9,0x48,0xd0,0x64,0xba,0xb2,0x17, - 0x54,0x9a,0xcc,0x8d,0xae,0x2e,0x68,0x62,0x42,0xab,0x55,0x24, - 0x47,0x0f,0x71,0xd2,0xa8,0x78,0xf0,0x5b,0x76,0xd0,0x01,0xd7, - 0x86,0xca,0xe5,0xa4,0x41,0x82,0x73,0x51,0x5e,0xa4,0x12,0xa4, - 0xe1,0xea,0xbd - }; - -__fips_constseg -static const unsigned char p_521_sha256_entropyinputreseed[] = - { - 0xda,0x4e,0x7f,0xf0,0x7d,0x4d,0xd8,0x74,0xa2,0x74,0x08,0x82, - 0x1b,0xe2,0xab,0xc9,0xd2,0xae,0x07,0xc3,0xc5,0x94,0x2f,0xfa, - 0x40,0xe0,0x5a,0x95,0x5b,0x99,0x7f,0x28 - }; - -__fips_constseg -static const unsigned char p_521_sha256_additionalinputreseed[] = - { - 0xf3,0x7d,0x64,0xae,0x7a,0xb3,0x9c,0xee,0x0a,0xd3,0x1a,0x56, - 0x3d,0x65,0xac,0x33,0xcc,0x3c,0xb0,0x4a,0x43,0xe3,0xf4,0xe7, - 0x05,0x49,0xcc,0x28,0x81,0xaf,0x73,0x8a - }; - -__fips_constseg -static const unsigned char p_521_sha256_additionalinput2[] = - { - 0x80,0xf2,0xdc,0xd2,0x0e,0x77,0x89,0xd7,0x46,0x67,0x31,0x28, - 0xf6,0xe1,0x1a,0x3f,0x70,0xdb,0x42,0x57,0xc7,0x0a,0xbd,0xf9, - 0x46,0x0e,0x50,0xc8,0x32,0xe0,0x4d,0x8f - }; - -__fips_constseg -static const unsigned char p_521_sha256_returnedbits[] = - { - 0x04,0xce,0x3f,0x47,0x4b,0x90,0x0e,0x0b,0x5d,0x61,0xd2,0xe4, - 0xca,0x19,0x98,0x3e,0xda,0xbb,0xe0,0x68,0x42,0x16,0x3c,0x25, - 0x69,0xb2,0x62,0x3f,0x57,0x84,0x22,0xc5,0x27,0x94,0xcb,0x2a, - 0x6c,0xe4,0xe5,0x3a,0x4d,0xfe,0x23,0xeb,0x81,0x09,0x8a,0xa4, - 0x57,0x8d,0x38,0x26,0x36,0x83,0xc7,0xfa,0xbd,0x1e,0xab,0x50, - 0xfe,0xae,0x42 - }; - - -/* P-521 SHA-384 PR */ -__fips_constseg -static const unsigned char p_521_sha384_pr_entropyinput[] = - { - 0xd7,0xc3,0x75,0xc9,0xdc,0xd6,0x28,0x49,0x6c,0x0c,0x26,0xe8, - 0x50,0x5a,0x98,0x53,0xa0,0xa1,0x59,0xfc,0xd9,0xef,0x34,0x05, - 0x42,0x12,0x5f,0x6c,0x80,0x65,0x37,0x77 - }; - -__fips_constseg -static const unsigned char p_521_sha384_pr_nonce[] = - { - 0x07,0x8a,0xc4,0xbb,0x27,0x54,0x33,0xe2,0xfa,0x4a,0xe2,0x84, - 0xe5,0x5b,0x27,0x69 - }; - -__fips_constseg -static const unsigned char p_521_sha384_pr_personalizationstring[] = - { - 0x69,0x90,0xea,0xac,0x46,0x2f,0x9a,0x3a,0xcc,0xdb,0xbc,0x26, - 0x5d,0xae,0x6d,0xca,0x80,0x62,0x95,0x3f,0x7c,0x17,0xa3,0xc5, - 0x36,0x69,0x8a,0x70,0x4e,0xb0,0xfb,0x16 - }; - -__fips_constseg -static const unsigned char p_521_sha384_pr_additionalinput[] = - { - 0xc7,0x82,0x8d,0xac,0x49,0xed,0x4d,0xe0,0x5f,0x26,0xe4,0xdf, - 0xd6,0x26,0xd0,0x90,0x5b,0xeb,0x36,0xa1,0x5a,0x8d,0xe0,0x33, - 0x18,0x86,0x73,0xcb,0x0d,0x3c,0xf4,0x76 - }; - -__fips_constseg -static const unsigned char p_521_sha384_pr_entropyinputpr[] = - { - 0x88,0xeb,0xbc,0xc4,0xdb,0xb0,0x0c,0xc7,0xc9,0x0a,0xae,0x9f, - 0xe7,0x2c,0x8d,0x8e,0x9a,0x5b,0x37,0xf4,0x91,0x15,0x7c,0x1c, - 0x84,0x84,0x48,0x47,0x2d,0x24,0xc4,0xf8 - }; - -__fips_constseg -static const unsigned char p_521_sha384_pr_int_returnedbits[] = - { - 0xf1,0x8a,0x43,0xec,0x2b,0x3f,0x74,0x05,0xae,0x4f,0x96,0xbb, - 0x90,0xba,0x55,0x23,0xb5,0x07,0xc9,0xfc,0x53,0x36,0x02,0x1d, - 0xb5,0xf4,0x8a,0x8c,0x71,0xb0,0xb2,0x35,0x2e,0xc1,0x91,0xbb, - 0x78,0xf1,0x5f,0x1d,0x1b,0xa3,0xa3,0x4d,0x93,0x76,0x36,0xbe, - 0xb2,0x83,0x6e,0xe1,0x00,0xe3,0x58,0x98,0x84,0x1a,0x4d,0x77, - 0x1c,0x3a,0x5f - }; - -__fips_constseg -static const unsigned char p_521_sha384_pr_additionalinput2[] = - { - 0x1e,0xbd,0x75,0x87,0x28,0x2e,0x05,0xbe,0xb3,0xa8,0x81,0x57, - 0x00,0x24,0xe5,0xe2,0xad,0x7d,0xe5,0x60,0x36,0x9b,0x82,0x09, - 0xac,0xdd,0xec,0x5e,0xb6,0xc6,0x9e,0x72 - }; - -__fips_constseg -static const unsigned char p_521_sha384_pr_entropyinputpr2[] = - { - 0xa4,0x30,0xe4,0xec,0x31,0x84,0x79,0x5c,0x40,0xd8,0x54,0x9d, - 0xd9,0x64,0xdf,0x46,0xc4,0xca,0x08,0x19,0x65,0x24,0x41,0xa8, - 0xdb,0x4c,0xbd,0x4a,0x5a,0x6c,0xe7,0x40 - }; - -__fips_constseg -static const unsigned char p_521_sha384_pr_returnedbits[] = - { - 0x15,0x44,0x90,0x6e,0x56,0xc1,0x51,0x2a,0x0d,0x3a,0x2f,0x1a, - 0x2d,0x0e,0xf8,0x32,0x05,0xe0,0xd7,0x77,0xd4,0x82,0x31,0x11, - 0x4e,0x70,0x50,0x76,0x5a,0x42,0x56,0x0a,0xeb,0x27,0x63,0x74, - 0xe5,0xc4,0x83,0x31,0x25,0x14,0xc4,0x5e,0x6e,0xc7,0xec,0x57, - 0x4b,0xaf,0x17,0xd9,0x43,0x61,0xfb,0xf6,0xc1,0x18,0xc3,0x41, - 0x3a,0xae,0x81 - }; - - -/* P-521 SHA-384 No PR */ -__fips_constseg -static const unsigned char p_521_sha384_entropyinput[] = - { - 0xd2,0x5e,0x8a,0xdf,0x9d,0x50,0x3e,0xb8,0x0e,0x01,0x7b,0x02, - 0x95,0xb4,0x26,0x59,0x25,0x7c,0xdf,0x15,0x6f,0x2f,0x59,0xe2, - 0x60,0x8d,0xf8,0x83,0xdc,0xaf,0xb0,0xe1 - }; - -__fips_constseg -static const unsigned char p_521_sha384_nonce[] = - { - 0x03,0xb8,0xbe,0x6f,0x90,0x5a,0xca,0x32,0xcd,0x86,0x9f,0x0a, - 0x01,0xb6,0x8f,0x41 - }; - -__fips_constseg -static const unsigned char p_521_sha384_personalizationstring[] = - { - 0x39,0x5d,0xc0,0xa6,0xa7,0x8f,0xc4,0x5e,0xec,0xb7,0x45,0xa7, - 0x18,0x35,0x73,0xac,0x41,0x12,0x9c,0x8e,0x83,0xaa,0x45,0xb0, - 0x35,0x9a,0x8a,0x44,0x6f,0xea,0xb8,0x15 - }; - -__fips_constseg -static const unsigned char p_521_sha384_additionalinput[] = - { - 0xac,0x37,0xb4,0x53,0x39,0xd7,0xdd,0xad,0x63,0x8d,0xe6,0x1a, - 0x4c,0xdf,0x1d,0x3a,0x0c,0x54,0xcf,0xb0,0x15,0x01,0xc5,0x46, - 0xc7,0x56,0xff,0x64,0x50,0x29,0xb2,0xb2 - }; - -__fips_constseg -static const unsigned char p_521_sha384_int_returnedbits[] = - { - 0x16,0xf7,0x2a,0xa2,0x12,0x41,0xb9,0x58,0xac,0x9c,0x99,0xaa, - 0x9b,0xbd,0xcd,0x2c,0x18,0x0d,0xf6,0x5a,0x52,0xd8,0x26,0x4e, - 0xd0,0x7a,0xc1,0xe5,0x67,0x54,0x7f,0x65,0x63,0x2a,0xd1,0xef, - 0xf0,0x8f,0xb9,0x2e,0xb0,0xdb,0xc7,0x03,0xc8,0xe1,0x58,0xaa, - 0xdb,0x7c,0x67,0xf6,0xf4,0x4d,0x33,0x0d,0xf0,0x6c,0xd9,0xdd, - 0xd4,0x2c,0xa1 - }; - -__fips_constseg -static const unsigned char p_521_sha384_entropyinputreseed[] = - { - 0x38,0xae,0xd1,0xbd,0xde,0xcc,0x88,0xc7,0x2d,0x39,0x68,0x1e, - 0xef,0x19,0xb6,0x3c,0xcc,0xed,0xec,0x87,0xc5,0xc5,0x56,0x22, - 0xf6,0xa9,0xea,0xf4,0x8b,0x43,0x6b,0xf7 - }; - -__fips_constseg -static const unsigned char p_521_sha384_additionalinputreseed[] = - { - 0x6f,0xd8,0x16,0x55,0x9f,0xe8,0x71,0x65,0x83,0xf2,0xf5,0xaf, - 0xad,0xff,0x19,0x72,0x59,0x8c,0x84,0xdb,0xc7,0x14,0x88,0x34, - 0xda,0xda,0xde,0x4f,0xf0,0xfa,0xa3,0x33 - }; - -__fips_constseg -static const unsigned char p_521_sha384_additionalinput2[] = - { - 0xd9,0xe2,0x19,0x2e,0x78,0x71,0x2f,0xec,0x45,0xcc,0x63,0x0e, - 0x5b,0x7a,0x02,0x34,0x29,0x90,0xd5,0x2c,0x10,0x7e,0xdd,0x5a, - 0x3e,0x1a,0x4c,0x69,0xcb,0xec,0xc6,0x33 - }; - -__fips_constseg -static const unsigned char p_521_sha384_returnedbits[] = - { - 0x88,0x53,0x0c,0xa7,0x5c,0x3f,0x56,0x6a,0x0a,0x10,0xa5,0xac, - 0x41,0x60,0x2a,0xa2,0x29,0x35,0x4c,0xc8,0x24,0xd1,0x75,0xc9, - 0xcc,0xb8,0x87,0x46,0xcc,0xf2,0x72,0x05,0x7f,0x39,0xf0,0x0f, - 0x4d,0x26,0xac,0x8c,0xa4,0x9a,0x87,0xe1,0x16,0xb3,0xc1,0x95, - 0xba,0x0e,0x7b,0x96,0xa9,0x91,0x15,0x9c,0x54,0x16,0x73,0x3b, - 0xce,0x2a,0xfd - }; - - -/* P-521 SHA-512 PR */ -__fips_constseg -static const unsigned char p_521_sha512_pr_entropyinput[] = - { - 0xb7,0x8e,0x4a,0x70,0x59,0xf4,0xb4,0xfa,0x94,0xef,0xc7,0xe7, - 0x7b,0xde,0x06,0x46,0x2e,0x71,0xde,0x82,0x59,0xd5,0x3a,0x32, - 0xee,0x1e,0x64,0x24,0x25,0xf4,0x1d,0xa6 - }; - -__fips_constseg -static const unsigned char p_521_sha512_pr_nonce[] = - { - 0x46,0x15,0x8e,0x0c,0x97,0x3c,0x81,0x7b,0x2b,0x38,0xde,0x1a, - 0x93,0x68,0x00,0x30 - }; - -__fips_constseg -static const unsigned char p_521_sha512_pr_personalizationstring[] = - { - 0x05,0x12,0xdf,0xac,0xf9,0xf8,0xce,0xec,0x1e,0x98,0x91,0x6d, - 0x1d,0xf5,0x4c,0xdf,0xb5,0xb4,0x43,0x90,0x1d,0xaa,0x53,0x9c, - 0x9a,0xa3,0xb5,0x54,0x63,0x74,0xf0,0xf2 - }; - -__fips_constseg -static const unsigned char p_521_sha512_pr_additionalinput[] = - { - 0x04,0x8d,0xfc,0x7a,0xa2,0x25,0x99,0x6a,0xb0,0x17,0x7e,0xe8, - 0x3b,0xc1,0x2f,0x59,0x48,0xde,0xbe,0x44,0xcc,0x2c,0xe6,0xa8, - 0xf0,0x57,0x69,0x7e,0x85,0x2a,0xa8,0x8b - }; - -__fips_constseg -static const unsigned char p_521_sha512_pr_entropyinputpr[] = - { - 0xbb,0xa2,0x0b,0x9f,0xf2,0x01,0x4c,0x9a,0x20,0x87,0x75,0x69, - 0x18,0x51,0x21,0x12,0x55,0xf3,0xc4,0xfe,0x2c,0x5e,0x08,0x85, - 0x52,0x12,0x68,0xb8,0x90,0x87,0x0c,0x6f - }; - -__fips_constseg -static const unsigned char p_521_sha512_pr_int_returnedbits[] = - { - 0x81,0x79,0xde,0xe3,0xe0,0x72,0xd8,0x86,0x39,0x42,0x4b,0x86, - 0xf0,0x4b,0xf2,0xa2,0x56,0xc1,0x67,0x41,0x12,0x2e,0x33,0x2d, - 0x48,0x80,0x91,0x40,0xef,0x3d,0x47,0xf1,0x9b,0xea,0x55,0x2e, - 0x78,0xa1,0x22,0x24,0x5b,0x0c,0xea,0x35,0xba,0xb5,0x0c,0x74, - 0x17,0x1a,0x07,0xe6,0x0b,0x51,0xb5,0x9b,0xbf,0xdb,0xa8,0x05, - 0xe4,0x7a,0x01 - }; - -__fips_constseg -static const unsigned char p_521_sha512_pr_additionalinput2[] = - { - 0x9d,0x9c,0xbd,0x7e,0x2d,0x33,0x41,0x63,0xb7,0x44,0x91,0xd0, - 0xd1,0xaf,0x07,0x8a,0xb2,0xc4,0xd9,0xbc,0x72,0x37,0x70,0x7d, - 0x85,0x47,0x06,0x9e,0x73,0x2b,0x85,0xb7 - }; - -__fips_constseg -static const unsigned char p_521_sha512_pr_entropyinputpr2[] = - { - 0xcd,0x1e,0x0c,0x58,0xe9,0x65,0x44,0x95,0x7a,0x68,0xf1,0xe1, - 0xd7,0xc5,0xdb,0x89,0x0d,0xdc,0x30,0x0e,0x16,0xc1,0xe5,0xad, - 0x57,0x60,0x50,0x31,0x5f,0xf0,0x05,0xf7 - }; - -__fips_constseg -static const unsigned char p_521_sha512_pr_returnedbits[] = - { - 0x5b,0x24,0x8e,0xab,0x1b,0x1b,0x86,0xe0,0x65,0x11,0x84,0x75, - 0xbf,0x5b,0x00,0x0b,0xd8,0x08,0x7d,0x3f,0xfa,0x70,0xe7,0x65, - 0xe3,0x68,0xe8,0x1f,0x78,0x68,0x49,0x5d,0x06,0x3f,0x7b,0x9b, - 0xc2,0xc9,0x06,0x48,0xbd,0x3d,0x27,0x6c,0x36,0xc3,0xfb,0x57, - 0x89,0x8a,0x90,0x92,0x1c,0xc0,0xda,0x58,0xd8,0x0e,0x81,0x70, - 0x6d,0xd4,0x34 - }; - - -/* P-521 SHA-512 No PR */ -__fips_constseg -static const unsigned char p_521_sha512_entropyinput[] = - { - 0x3d,0x1f,0x10,0x75,0x3c,0x9f,0x09,0xf2,0xe2,0x38,0x50,0x8e, - 0x88,0xb1,0x1f,0x45,0xd3,0xb9,0x60,0xd9,0xd4,0x2f,0xed,0xbb, - 0x5f,0xb2,0x0e,0x3b,0xaa,0x6b,0x2e,0xee - }; - -__fips_constseg -static const unsigned char p_521_sha512_nonce[] = - { - 0x9d,0x59,0xbf,0xcb,0xcf,0x3f,0xe0,0xb1,0x2b,0x6f,0x3d,0xd8, - 0x38,0x77,0xf6,0x1c - }; - -__fips_constseg -static const unsigned char p_521_sha512_personalizationstring[] = - { - 0xf2,0x91,0xdb,0xef,0x70,0x9a,0x87,0x74,0xc4,0xf6,0x8e,0x09, - 0xe8,0x39,0xe5,0xc0,0x79,0x12,0xcb,0xeb,0x58,0x1c,0x88,0x81, - 0x83,0xe8,0x66,0xd0,0x2f,0x49,0xef,0x63 - }; - -__fips_constseg -static const unsigned char p_521_sha512_additionalinput[] = - { - 0x38,0x7c,0xdd,0x33,0xcd,0x09,0x12,0xc0,0xb8,0x73,0x72,0xdf, - 0xad,0xe1,0xe9,0xd2,0x69,0xd0,0xa0,0x1a,0xe5,0xfc,0x51,0x0a, - 0xd5,0x90,0xe9,0x8c,0x66,0x8c,0x63,0x35 - }; - -__fips_constseg -static const unsigned char p_521_sha512_int_returnedbits[] = - { - 0x7c,0xd6,0xd8,0xbb,0x12,0x5d,0xaf,0x65,0x65,0xd2,0x20,0x58, - 0x82,0x17,0xbb,0xd6,0x37,0x24,0x23,0xe2,0x49,0xe3,0x13,0x74, - 0x66,0x7a,0xaf,0x35,0x8f,0x18,0x88,0xa8,0xb8,0xc3,0x84,0xb1, - 0xb5,0xfa,0xf2,0x46,0x49,0x91,0x95,0x06,0x1a,0x8c,0xb3,0x94, - 0x78,0x11,0x73,0x9d,0xeb,0x07,0xc6,0x20,0x52,0x89,0xf1,0xaf, - 0xb2,0x66,0xba - }; - -__fips_constseg -static const unsigned char p_521_sha512_entropyinputreseed[] = - { - 0xd5,0x51,0xf0,0x88,0xb6,0xa5,0x26,0x8c,0x34,0x82,0xd3,0xa4, - 0xee,0x6e,0xc4,0x70,0x27,0xb8,0x85,0xa7,0xca,0x22,0x7b,0x62, - 0x9c,0xcf,0x3e,0xa9,0xc2,0x6e,0x3a,0x3e - }; - -__fips_constseg -static const unsigned char p_521_sha512_additionalinputreseed[] = - { - 0x22,0xce,0x9f,0x3b,0x36,0x8d,0x4e,0xe2,0xe5,0xff,0xaf,0x72, - 0x90,0xe8,0xfa,0x3b,0x16,0xe2,0xcb,0xc6,0xf1,0xac,0x5e,0xb8, - 0x8e,0xb0,0x0a,0x05,0xeb,0xd4,0xfd,0x58 - }; - -__fips_constseg -static const unsigned char p_521_sha512_additionalinput2[] = - { - 0x2f,0x55,0x03,0xe2,0x5f,0x58,0xf4,0xc8,0xf9,0x98,0x79,0x9a, - 0x1e,0x44,0xa5,0x0d,0x38,0x20,0x5e,0xe4,0x54,0x0a,0xd4,0x1f, - 0xc3,0xcf,0x3e,0x66,0xf2,0x2f,0xd5,0xb6 - }; - -__fips_constseg -static const unsigned char p_521_sha512_returnedbits[] = - { - 0x2e,0xbf,0x98,0xf9,0x85,0x27,0x8b,0xff,0x36,0xb9,0x40,0x0b, - 0xc0,0xa1,0xa0,0x13,0x20,0x06,0xcc,0xe6,0x2a,0x03,0x77,0x7d, - 0xee,0xde,0xcc,0x34,0xe3,0xcd,0x77,0xea,0xd0,0x3e,0xbe,0xdd, - 0xf6,0x15,0xfb,0xa7,0xd7,0x8e,0xd0,0x2e,0x2f,0x82,0x4c,0xc7, - 0x87,0xb1,0x6f,0xc5,0xf8,0x5c,0x78,0xde,0x77,0x9b,0x15,0x9a, - 0xb9,0x3c,0x38 - }; - diff --git a/fips/rand/fips_drbgvs.c b/fips/rand/fips_drbgvs.c deleted file mode 100644 index 9aae88c3e1..0000000000 --- a/fips/rand/fips_drbgvs.c +++ /dev/null @@ -1,416 +0,0 @@ -/* fips/rand/fips_drbgvs.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - - -#define OPENSSL_FIPSAPI -#include - -#ifndef OPENSSL_FIPS -#include - -int main(int argc, char **argv) -{ - printf("No FIPS DRBG support\n"); - return(0); -} -#else - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "fips_utl.h" - -static int dparse_md(char *str) - { - switch(atoi(str + 5)) - { - case 1: - return NID_sha1; - - case 224: - return NID_sha224; - - case 256: - return NID_sha256; - - case 384: - return NID_sha384; - - case 512: - return NID_sha512; - - } - - return NID_undef; - } - -static int parse_ec(char *str) - { - int curve_nid, md_nid; - char *md; - md = strchr(str, ' '); - if (!md) - return NID_undef; - if (!strncmp(str, "[P-256", 6)) - curve_nid = NID_X9_62_prime256v1; - else if (!strncmp(str, "[P-384", 6)) - curve_nid = NID_secp384r1; - else if (!strncmp(str, "[P-521", 6)) - curve_nid = NID_secp521r1; - else - return NID_undef; - md_nid = dparse_md(md); - if (md_nid == NID_undef) - return NID_undef; - return (curve_nid << 16) | md_nid; - } - -static int parse_aes(char *str, int *pdf) - { - - if (!strncmp(str + 9, "no", 2)) - *pdf = 0; - else - *pdf = DRBG_FLAG_CTR_USE_DF; - - switch(atoi(str + 5)) - { - case 128: - return NID_aes_128_ctr; - - case 192: - return NID_aes_192_ctr; - - case 256: - return NID_aes_256_ctr; - - default: - return NID_undef; - - } - } - -typedef struct - { - unsigned char *ent; - size_t entlen; - unsigned char *nonce; - size_t noncelen; - } TEST_ENT; - -static size_t test_entropy(DRBG_CTX *dctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) - { - TEST_ENT *t = FIPS_drbg_get_app_data(dctx); - *pout = (unsigned char *)t->ent; - return t->entlen; - } - -static size_t test_nonce(DRBG_CTX *dctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) - { - TEST_ENT *t = FIPS_drbg_get_app_data(dctx); - *pout = (unsigned char *)t->nonce; - return t->noncelen; - } - -#ifdef FIPS_ALGVS -int fips_drbgvs_main(int argc,char **argv) -#else -int main(int argc,char **argv) -#endif - { - FILE *in = NULL, *out = NULL; - DRBG_CTX *dctx = NULL; - TEST_ENT t; - int r, nid = 0; - int pr = 0; - char buf[2048], lbuf[2048]; - unsigned char randout[2048]; - char *keyword = NULL, *value = NULL; - - unsigned char *ent = NULL, *nonce = NULL, *pers = NULL, *adin = NULL; - long entlen, noncelen, perslen, adinlen; - int df = 0; - - enum dtype { DRBG_NONE, DRBG_CTR, DRBG_HASH, DRBG_HMAC, DRBG_DUAL_EC } - drbg_type = DRBG_NONE; - - int randoutlen = 0; - - int gen = 0; - - fips_algtest_init(); - - if (argc == 3) - { - in = fopen(argv[1], "r"); - if (!in) - { - fprintf(stderr, "Error opening input file\n"); - exit(1); - } - out = fopen(argv[2], "w"); - if (!out) - { - fprintf(stderr, "Error opening output file\n"); - exit(1); - } - } - else if (argc == 1) - { - in = stdin; - out = stdout; - } - else - { - fprintf(stderr,"%s (infile outfile)\n",argv[0]); - exit(1); - } - - while (fgets(buf, sizeof(buf), in) != NULL) - { - fputs(buf, out); - if (drbg_type == DRBG_NONE) - { - if (strstr(buf, "CTR_DRBG")) - drbg_type = DRBG_CTR; - else if (strstr(buf, "Hash_DRBG")) - drbg_type = DRBG_HASH; - else if (strstr(buf, "HMAC_DRBG")) - drbg_type = DRBG_HMAC; - else if (strstr(buf, "Dual_EC_DRBG")) - drbg_type = DRBG_DUAL_EC; - else - continue; - } - if (strlen(buf) > 4 && !strncmp(buf, "[SHA-", 5)) - { - nid = dparse_md(buf); - if (nid == NID_undef) - exit(1); - if (drbg_type == DRBG_HMAC) - { - switch (nid) - { - case NID_sha1: - nid = NID_hmacWithSHA1; - break; - - case NID_sha224: - nid = NID_hmacWithSHA224; - break; - - case NID_sha256: - nid = NID_hmacWithSHA256; - break; - - case NID_sha384: - nid = NID_hmacWithSHA384; - break; - - case NID_sha512: - nid = NID_hmacWithSHA512; - break; - - default: - exit(1); - } - } - } - if (strlen(buf) > 12 && !strncmp(buf, "[AES-", 5)) - { - nid = parse_aes(buf, &df); - if (nid == NID_undef) - exit(1); - } - if (strlen(buf) > 12 && !strncmp(buf, "[P-", 3)) - { - nid = parse_ec(buf); - if (nid == NID_undef) - exit(1); - } - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - - if (!strcmp(keyword, "[PredictionResistance")) - { - if (!strcmp(value, "True]")) - pr = 1; - else if (!strcmp(value, "False]")) - pr = 0; - else - exit(1); - } - - if (!strcmp(keyword, "EntropyInput")) - { - ent = hex2bin_m(value, &entlen); - t.ent = ent; - t.entlen = entlen; - } - - if (!strcmp(keyword, "Nonce")) - { - nonce = hex2bin_m(value, &noncelen); - t.nonce = nonce; - t.noncelen = noncelen; - } - - if (!strcmp(keyword, "PersonalizationString")) - { - pers = hex2bin_m(value, &perslen); - if (nid == 0) - { - fprintf(stderr, "DRBG type not recognised!\n"); - exit (1); - } - dctx = FIPS_drbg_new(nid, df | DRBG_FLAG_TEST); - if (!dctx) - exit (1); - FIPS_drbg_set_callbacks(dctx, test_entropy, 0, 0, - test_nonce, 0); - FIPS_drbg_set_app_data(dctx, &t); - randoutlen = (int)FIPS_drbg_get_blocklength(dctx); - r = FIPS_drbg_instantiate(dctx, pers, perslen); - if (!r) - { - fprintf(stderr, "Error instantiating DRBG\n"); - exit(1); - } - OPENSSL_free(pers); - OPENSSL_free(ent); - OPENSSL_free(nonce); - ent = nonce = pers = NULL; - gen = 0; - } - - if (!strcmp(keyword, "AdditionalInput")) - { - adin = hex2bin_m(value, &adinlen); - if (pr) - continue; - r = FIPS_drbg_generate(dctx, randout, randoutlen, 0, - adin, adinlen); - if (!r) - { - fprintf(stderr, "Error generating DRBG bits\n"); - exit(1); - } - if (!r) - exit(1); - OPENSSL_free(adin); - adin = NULL; - gen++; - } - - if (pr) - { - if (!strcmp(keyword, "EntropyInputPR")) - { - ent = hex2bin_m(value, &entlen); - t.ent = ent; - t.entlen = entlen; - r = FIPS_drbg_generate(dctx, - randout, randoutlen, - 1, adin, adinlen); - if (!r) - { - fprintf(stderr, - "Error generating DRBG bits\n"); - exit(1); - } - OPENSSL_free(adin); - OPENSSL_free(ent); - adin = ent = NULL; - gen++; - } - } - if (!strcmp(keyword, "EntropyInputReseed")) - { - ent = hex2bin_m(value, &entlen); - t.ent = ent; - t.entlen = entlen; - } - if (!strcmp(keyword, "AdditionalInputReseed")) - { - adin = hex2bin_m(value, &adinlen); - FIPS_drbg_reseed(dctx, adin, adinlen); - OPENSSL_free(ent); - OPENSSL_free(adin); - ent = adin = NULL; - } - if (gen == 2) - { - OutputValue("ReturnedBits", randout, randoutlen, - out, 0); - FIPS_drbg_free(dctx); - dctx = NULL; - gen = 0; - } - - } - if (in && in != stdin) - fclose(in); - if (out && out != stdout) - fclose(out); - return 0; - } - -#endif diff --git a/fips/rand/fips_rand.c b/fips/rand/fips_rand.c deleted file mode 100644 index f80c005758..0000000000 --- a/fips/rand/fips_rand.c +++ /dev/null @@ -1,432 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2007 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -/* - * This is a FIPS approved AES PRNG based on ANSI X9.31 A.2.4. - */ -#include -#include "e_os.h" - -/* If we don't define _XOPEN_SOURCE_EXTENDED, struct timeval won't - be defined and gettimeofday() won't be declared with strict compilers - like DEC C in ANSI C mode. */ -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED 1 -#endif - -#include -#include -#include -#include -#if !(defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VXWORKS)) -# include -#endif -#if defined(OPENSSL_SYS_VXWORKS) -# include -#endif -#include -#ifndef OPENSSL_SYS_WIN32 -# ifdef OPENSSL_UNISTD -# include OPENSSL_UNISTD -# else -# include -# endif -#endif -#include -#include -#include "fips_locl.h" - -#ifdef OPENSSL_FIPS - -void *OPENSSL_stderr(void); - -#define AES_BLOCK_LENGTH 16 - - -/* AES FIPS PRNG implementation */ - -typedef struct - { - int seeded; - int keyed; - int test_mode; - int second; - int error; - unsigned long counter; - AES_KEY ks; - int vpos; - /* Temporary storage for key if it equals seed length */ - unsigned char tmp_key[AES_BLOCK_LENGTH]; - unsigned char V[AES_BLOCK_LENGTH]; - unsigned char DT[AES_BLOCK_LENGTH]; - unsigned char last[AES_BLOCK_LENGTH]; - } FIPS_PRNG_CTX; - -static FIPS_PRNG_CTX sctx; - -static int fips_prng_fail = 0; - -void FIPS_x931_stick(int onoff) - { - fips_prng_fail = onoff; - } - -static void fips_rand_prng_reset(FIPS_PRNG_CTX *ctx) - { - ctx->seeded = 0; - ctx->keyed = 0; - ctx->test_mode = 0; - ctx->counter = 0; - ctx->second = 0; - ctx->error = 0; - ctx->vpos = 0; - OPENSSL_cleanse(ctx->V, AES_BLOCK_LENGTH); - OPENSSL_cleanse(&ctx->ks, sizeof(AES_KEY)); - } - - -static int fips_set_prng_key(FIPS_PRNG_CTX *ctx, - const unsigned char *key, unsigned int keylen) - { - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_SET_PRNG_KEY, FIPS_R_SELFTEST_FAILED); - return 0; - } - if (keylen != 16 && keylen != 24 && keylen != 32) - { - /* error: invalid key size */ - return 0; - } - AES_set_encrypt_key(key, keylen << 3, &ctx->ks); - if (keylen == 16) - { - memcpy(ctx->tmp_key, key, 16); - ctx->keyed = 2; - } - else - ctx->keyed = 1; - ctx->seeded = 0; - ctx->second = 0; - return 1; - } - -static int fips_set_prng_seed(FIPS_PRNG_CTX *ctx, - const unsigned char *seed, unsigned int seedlen) - { - unsigned int i; - if (!ctx->keyed) - return 0; - /* In test mode seed is just supplied data */ - if (ctx->test_mode) - { - if (seedlen != AES_BLOCK_LENGTH) - return 0; - memcpy(ctx->V, seed, AES_BLOCK_LENGTH); - ctx->seeded = 1; - return 1; - } - /* Outside test mode XOR supplied data with existing seed */ - for (i = 0; i < seedlen; i++) - { - ctx->V[ctx->vpos++] ^= seed[i]; - if (ctx->vpos == AES_BLOCK_LENGTH) - { - ctx->vpos = 0; - /* Special case if first seed and key length equals - * block size check key and seed do not match. - */ - if (ctx->keyed == 2) - { - if (!memcmp(ctx->tmp_key, ctx->V, 16)) - { - RANDerr(RAND_F_FIPS_SET_PRNG_SEED, - RAND_R_PRNG_SEED_MUST_NOT_MATCH_KEY); - return 0; - } - OPENSSL_cleanse(ctx->tmp_key, 16); - ctx->keyed = 1; - } - ctx->seeded = 1; - } - } - return 1; - } - -static int fips_set_test_mode(FIPS_PRNG_CTX *ctx) - { - if (ctx->keyed) - { - RANDerr(RAND_F_FIPS_SET_TEST_MODE,RAND_R_PRNG_KEYED); - return 0; - } - ctx->test_mode = 1; - return 1; - } - -int FIPS_x931_test_mode(void) - { - return fips_set_test_mode(&sctx); - } - -int FIPS_x931_set_dt(unsigned char *dt) - { - if (!sctx.test_mode) - { - RANDerr(RAND_F_FIPS_X931_SET_DT,RAND_R_NOT_IN_TEST_MODE); - return 0; - } - memcpy(sctx.DT, dt, AES_BLOCK_LENGTH); - return 1; - } - -void FIPS_get_timevec(unsigned char *buf, unsigned long *pctr) - { -#ifdef OPENSSL_SYS_WIN32 - FILETIME ft; -#elif defined(OPENSSL_SYS_VXWORKS) - struct timespec ts; -#else - struct timeval tv; -#endif - -#ifndef GETPID_IS_MEANINGLESS - unsigned long pid; -#endif - -#ifdef OPENSSL_SYS_WIN32 - GetSystemTimeAsFileTime(&ft); - buf[0] = (unsigned char) (ft.dwHighDateTime & 0xff); - buf[1] = (unsigned char) ((ft.dwHighDateTime >> 8) & 0xff); - buf[2] = (unsigned char) ((ft.dwHighDateTime >> 16) & 0xff); - buf[3] = (unsigned char) ((ft.dwHighDateTime >> 24) & 0xff); - buf[4] = (unsigned char) (ft.dwLowDateTime & 0xff); - buf[5] = (unsigned char) ((ft.dwLowDateTime >> 8) & 0xff); - buf[6] = (unsigned char) ((ft.dwLowDateTime >> 16) & 0xff); - buf[7] = (unsigned char) ((ft.dwLowDateTime >> 24) & 0xff); -#elif defined(OPENSSL_SYS_VXWORKS) - clock_gettime(CLOCK_REALTIME, &ts); - buf[0] = (unsigned char) (ts.tv_sec & 0xff); - buf[1] = (unsigned char) ((ts.tv_sec >> 8) & 0xff); - buf[2] = (unsigned char) ((ts.tv_sec >> 16) & 0xff); - buf[3] = (unsigned char) ((ts.tv_sec >> 24) & 0xff); - buf[4] = (unsigned char) (ts.tv_nsec & 0xff); - buf[5] = (unsigned char) ((ts.tv_nsec >> 8) & 0xff); - buf[6] = (unsigned char) ((ts.tv_nsec >> 16) & 0xff); - buf[7] = (unsigned char) ((ts.tv_nsec >> 24) & 0xff); -#else - gettimeofday(&tv,NULL); - buf[0] = (unsigned char) (tv.tv_sec & 0xff); - buf[1] = (unsigned char) ((tv.tv_sec >> 8) & 0xff); - buf[2] = (unsigned char) ((tv.tv_sec >> 16) & 0xff); - buf[3] = (unsigned char) ((tv.tv_sec >> 24) & 0xff); - buf[4] = (unsigned char) (tv.tv_usec & 0xff); - buf[5] = (unsigned char) ((tv.tv_usec >> 8) & 0xff); - buf[6] = (unsigned char) ((tv.tv_usec >> 16) & 0xff); - buf[7] = (unsigned char) ((tv.tv_usec >> 24) & 0xff); -#endif - buf[8] = (unsigned char) (*pctr & 0xff); - buf[9] = (unsigned char) ((*pctr >> 8) & 0xff); - buf[10] = (unsigned char) ((*pctr >> 16) & 0xff); - buf[11] = (unsigned char) ((*pctr >> 24) & 0xff); - - (*pctr)++; - - -#ifndef GETPID_IS_MEANINGLESS - pid=(unsigned long)getpid(); - buf[12] = (unsigned char) (pid & 0xff); - buf[13] = (unsigned char) ((pid >> 8) & 0xff); - buf[14] = (unsigned char) ((pid >> 16) & 0xff); - buf[15] = (unsigned char) ((pid >> 24) & 0xff); -#endif - } - -static int fips_rand(FIPS_PRNG_CTX *ctx, - unsigned char *out, unsigned int outlen) - { - unsigned char R[AES_BLOCK_LENGTH], I[AES_BLOCK_LENGTH]; - unsigned char tmp[AES_BLOCK_LENGTH]; - int i; - if (ctx->error) - { - RANDerr(RAND_F_FIPS_RAND,RAND_R_PRNG_ERROR); - return 0; - } - if (!ctx->keyed) - { - RANDerr(RAND_F_FIPS_RAND,RAND_R_NO_KEY_SET); - return 0; - } - if (!ctx->seeded) - { - RANDerr(RAND_F_FIPS_RAND,RAND_R_PRNG_NOT_SEEDED); - return 0; - } - for (;;) - { - if (!ctx->test_mode) - FIPS_get_timevec(ctx->DT, &ctx->counter); - AES_encrypt(ctx->DT, I, &ctx->ks); - for (i = 0; i < AES_BLOCK_LENGTH; i++) - tmp[i] = I[i] ^ ctx->V[i]; - AES_encrypt(tmp, R, &ctx->ks); - for (i = 0; i < AES_BLOCK_LENGTH; i++) - tmp[i] = R[i] ^ I[i]; - AES_encrypt(tmp, ctx->V, &ctx->ks); - /* Continuous PRNG test */ - if (ctx->second) - { - if (fips_prng_fail) - memcpy(ctx->last, R, AES_BLOCK_LENGTH); - if (!memcmp(R, ctx->last, AES_BLOCK_LENGTH)) - { - RANDerr(RAND_F_FIPS_RAND,RAND_R_PRNG_STUCK); - ctx->error = 1; - fips_set_selftest_fail(); - return 0; - } - } - memcpy(ctx->last, R, AES_BLOCK_LENGTH); - if (!ctx->second) - { - ctx->second = 1; - if (!ctx->test_mode) - continue; - } - - if (outlen <= AES_BLOCK_LENGTH) - { - memcpy(out, R, outlen); - break; - } - - memcpy(out, R, AES_BLOCK_LENGTH); - out += AES_BLOCK_LENGTH; - outlen -= AES_BLOCK_LENGTH; - } - return 1; - } - - -int FIPS_x931_set_key(const unsigned char *key, int keylen) - { - int ret; - CRYPTO_w_lock(CRYPTO_LOCK_RAND); - ret = fips_set_prng_key(&sctx, key, keylen); - CRYPTO_w_unlock(CRYPTO_LOCK_RAND); - return ret; - } - -int FIPS_x931_seed(const void *seed, int seedlen) - { - int ret; - CRYPTO_w_lock(CRYPTO_LOCK_RAND); - ret = fips_set_prng_seed(&sctx, seed, seedlen); - CRYPTO_w_unlock(CRYPTO_LOCK_RAND); - return ret; - } - - -int FIPS_x931_bytes(unsigned char *out, int count) - { - int ret; - CRYPTO_w_lock(CRYPTO_LOCK_RAND); - ret = fips_rand(&sctx, out, count); - CRYPTO_w_unlock(CRYPTO_LOCK_RAND); - return ret; - } - -int FIPS_x931_status(void) - { - int ret; - CRYPTO_r_lock(CRYPTO_LOCK_RAND); - ret = sctx.seeded; - CRYPTO_r_unlock(CRYPTO_LOCK_RAND); - return ret; - } - -void FIPS_x931_reset(void) - { - CRYPTO_w_lock(CRYPTO_LOCK_RAND); - fips_rand_prng_reset(&sctx); - CRYPTO_w_unlock(CRYPTO_LOCK_RAND); - } - -static int fips_do_rand_seed(const void *seed, int seedlen) - { - FIPS_x931_seed(seed, seedlen); - return 1; - } - -static int fips_do_rand_add(const void *seed, int seedlen, - double add_entropy) - { - FIPS_x931_seed(seed, seedlen); - return 1; - } - -static const RAND_METHOD rand_x931_meth= - { - fips_do_rand_seed, - FIPS_x931_bytes, - FIPS_x931_reset, - fips_do_rand_add, - FIPS_x931_bytes, - FIPS_x931_status - }; - -const RAND_METHOD *FIPS_x931_method(void) -{ - return &rand_x931_meth; -} - -#endif diff --git a/fips/rand/fips_rand.h b/fips/rand/fips_rand.h deleted file mode 100644 index ef9b8226a4..0000000000 --- a/fips/rand/fips_rand.h +++ /dev/null @@ -1,135 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2003 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@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_FIPS_RAND_H -#define HEADER_FIPS_RAND_H - -#include -#include -#include -#include - -#ifdef OPENSSL_FIPS - -#ifdef __cplusplus -extern "C" { -#endif - -int FIPS_x931_set_key(const unsigned char *key, int keylen); -int FIPS_x931_seed(const void *buf, int num); -int FIPS_x931_bytes(unsigned char *out, int outlen); - -int FIPS_x931_test_mode(void); -void FIPS_x931_reset(void); -int FIPS_x931_set_dt(unsigned char *dt); - -int FIPS_x931_status(void); - -const RAND_METHOD *FIPS_x931_method(void); - -typedef struct drbg_ctx_st DRBG_CTX; -/* DRBG external flags */ -/* Flag for CTR mode only: use derivation function ctr_df */ -#define DRBG_FLAG_CTR_USE_DF 0x1 -/* PRNG is in test state */ -#define DRBG_FLAG_TEST 0x2 - -DRBG_CTX *FIPS_drbg_new(int type, unsigned int flags); -int FIPS_drbg_init(DRBG_CTX *dctx, int type, unsigned int flags); -int FIPS_drbg_instantiate(DRBG_CTX *dctx, - const unsigned char *pers, size_t perslen); -int FIPS_drbg_reseed(DRBG_CTX *dctx, const unsigned char *adin, size_t adinlen); -int FIPS_drbg_generate(DRBG_CTX *dctx, unsigned char *out, size_t outlen, - int prediction_resistance, - const unsigned char *adin, size_t adinlen); - -int FIPS_drbg_uninstantiate(DRBG_CTX *dctx); -void FIPS_drbg_free(DRBG_CTX *dctx); - -int FIPS_drbg_set_callbacks(DRBG_CTX *dctx, - size_t (*get_entropy)(DRBG_CTX *ctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len), - void (*cleanup_entropy)(DRBG_CTX *ctx, unsigned char *out, size_t olen), - size_t entropy_blocklen, - size_t (*get_nonce)(DRBG_CTX *ctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len), - void (*cleanup_nonce)(DRBG_CTX *ctx, unsigned char *out, size_t olen)); - -int FIPS_drbg_set_rand_callbacks(DRBG_CTX *dctx, - size_t (*get_adin)(DRBG_CTX *ctx, unsigned char **pout), - void (*cleanup_adin)(DRBG_CTX *ctx, unsigned char *out, size_t olen), - int (*rand_seed_cb)(DRBG_CTX *ctx, const void *buf, int num), - int (*rand_add_cb)(DRBG_CTX *ctx, - const void *buf, int num, double entropy)); - -void *FIPS_drbg_get_app_data(DRBG_CTX *ctx); -void FIPS_drbg_set_app_data(DRBG_CTX *ctx, void *app_data); -size_t FIPS_drbg_get_blocklength(DRBG_CTX *dctx); -int FIPS_drbg_get_strength(DRBG_CTX *dctx); -void FIPS_drbg_set_check_interval(DRBG_CTX *dctx, int interval); -void FIPS_drbg_set_reseed_interval(DRBG_CTX *dctx, int interval); - -int FIPS_drbg_health_check(DRBG_CTX *dctx); - -DRBG_CTX *FIPS_get_default_drbg(void); -const RAND_METHOD *FIPS_drbg_method(void); - - -int FIPS_rand_set_method(const RAND_METHOD *meth); -const RAND_METHOD *FIPS_rand_get_method(void); - -void FIPS_rand_set_bits(int nbits); - -int FIPS_rand_strength(void); - -#ifdef __cplusplus -} -#endif -#endif -#endif diff --git a/fips/rand/fips_rand_lcl.h b/fips/rand/fips_rand_lcl.h deleted file mode 100644 index e03537bd5f..0000000000 --- a/fips/rand/fips_rand_lcl.h +++ /dev/null @@ -1,241 +0,0 @@ -/* fips/rand/fips_rand_lcl.h */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -typedef struct drbg_hash_ctx_st DRBG_HASH_CTX; -typedef struct drbg_hmac_ctx_st DRBG_HMAC_CTX; -typedef struct drbg_ctr_ctx_st DRBG_CTR_CTX; -typedef struct drbg_ec_ctx_st DRBG_EC_CTX; - -/* 888 bits from 10.1 table 2 */ -#define HASH_PRNG_MAX_SEEDLEN 111 - -struct drbg_hash_ctx_st - { - const EVP_MD *md; - EVP_MD_CTX mctx; - unsigned char V[HASH_PRNG_MAX_SEEDLEN]; - unsigned char C[HASH_PRNG_MAX_SEEDLEN]; - /* Temporary value storage: should always exceed max digest length */ - unsigned char vtmp[HASH_PRNG_MAX_SEEDLEN]; - }; - -struct drbg_hmac_ctx_st - { - const EVP_MD *md; - HMAC_CTX hctx; - unsigned char K[EVP_MAX_MD_SIZE]; - unsigned char V[EVP_MAX_MD_SIZE]; - }; - -struct drbg_ctr_ctx_st - { - AES_KEY ks; - size_t keylen; - unsigned char K[32]; - unsigned char V[16]; - /* Temp variables used by derivation function */ - AES_KEY df_ks; - AES_KEY df_kxks; - /* Temporary block storage used by ctr_df */ - unsigned char bltmp[16]; - size_t bltmp_pos; - unsigned char KX[48]; - }; - -/* Maximum seed length */ -#define EC_PRNG_MAX_SEEDLEN 66 - -struct drbg_ec_ctx_st - { - /* Message digest to use */ - const EVP_MD *md; - /* Curve to use: generator is point P */ - EC_GROUP *curve; - /* Point Q */ - EC_POINT *Q; - /* Temporary point */ - EC_POINT *ptmp; - size_t exbits; - /* Secret s value */ - BIGNUM *s; - /* Buffer to store byte version of s value */ - unsigned char sbuf[EC_PRNG_MAX_SEEDLEN]; - /* Buffer to store byte version of t value */ - unsigned char tbuf[EC_PRNG_MAX_SEEDLEN]; - /* Digest context */ - EVP_MD_CTX mctx; - /* Temporary value storage: should always exceed max digest length */ - unsigned char vtmp[EC_PRNG_MAX_SEEDLEN]; - /* Temp BN context */ - BN_CTX *bctx; - }; - -/* DRBG internal flags */ - -/* Functions shouldn't call err library */ -#define DRBG_FLAG_NOERR 0x1 -/* Custom reseed checking */ -#define DRBG_CUSTOM_RESEED 0x2 - -/* DRBG status values */ -/* not initialised */ -#define DRBG_STATUS_UNINITIALISED 0 -/* ok and ready to generate random bits */ -#define DRBG_STATUS_READY 1 -/* reseed required */ -#define DRBG_STATUS_RESEED 2 -/* fatal error condition */ -#define DRBG_STATUS_ERROR 3 - -/* A default maximum length: larger than any reasonable value used in pratice */ - -#define DRBG_MAX_LENGTH 0x7ffffff0 -/* Maximum DRBG block length: all md sizes are bigger than cipher blocks sizes - * so use max digest length. - */ -#define DRBG_MAX_BLOCK EVP_MAX_MD_SIZE - -#define DRBG_HEALTH_INTERVAL (1 << 24) - -/* DRBG context structure */ - -struct drbg_ctx_st - { - /* First types common to all implementations */ - /* DRBG type: a NID for the underlying algorithm */ - int type; - /* Various external flags */ - unsigned int xflags; - /* Various internal use only flags */ - unsigned int iflags; - /* Used for periodic health checks */ - int health_check_cnt, health_check_interval; - - /* The following parameters are setup by mechanism drbg_init() call */ - int strength; - size_t blocklength; - size_t max_request; - - size_t min_entropy, max_entropy; - size_t min_nonce, max_nonce; - size_t max_pers, max_adin; - unsigned int reseed_counter; - unsigned int reseed_interval; - size_t seedlen; - int status; - /* Application data: typically used by test get_entropy */ - void *app_data; - /* Implementation specific structures */ - union - { - DRBG_HASH_CTX hash; - DRBG_HMAC_CTX hmac; - DRBG_CTR_CTX ctr; - DRBG_EC_CTX ec; - } d; - /* Initialiase PRNG and setup callbacks below */ - int (*init)(DRBG_CTX *ctx, int nid, int security, unsigned int flags); - /* Intantiate PRNG */ - int (*instantiate)(DRBG_CTX *ctx, - const unsigned char *ent, size_t entlen, - const unsigned char *nonce, size_t noncelen, - const unsigned char *pers, size_t perslen); - /* reseed */ - int (*reseed)(DRBG_CTX *ctx, - const unsigned char *ent, size_t entlen, - const unsigned char *adin, size_t adinlen); - /* generat output */ - int (*generate)(DRBG_CTX *ctx, - unsigned char *out, size_t outlen, - const unsigned char *adin, size_t adinlen); - /* uninstantiate */ - int (*uninstantiate)(DRBG_CTX *ctx); - - /* Entropy source block length */ - size_t entropy_blocklen; - - /* entropy gathering function */ - size_t (*get_entropy)(DRBG_CTX *ctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len); - /* Indicates we have finished with entropy buffer */ - void (*cleanup_entropy)(DRBG_CTX *ctx, unsigned char *out, size_t olen); - - /* nonce gathering function */ - size_t (*get_nonce)(DRBG_CTX *ctx, unsigned char **pout, - int entropy, size_t min_len, size_t max_len); - /* Indicates we have finished with nonce buffer */ - void (*cleanup_nonce)(DRBG_CTX *ctx, unsigned char *out, size_t olen); - - /* Continuous random number test temporary area */ - /* Last block */ - unsigned char lb[EVP_MAX_MD_SIZE]; - /* set if lb is valid */ - int lb_valid; - - /* Callbacks used when called through RAND interface */ - /* Get any additional input for generate */ - size_t (*get_adin)(DRBG_CTX *ctx, unsigned char **pout); - void (*cleanup_adin)(DRBG_CTX *ctx, unsigned char *out, size_t olen); - /* Callback for RAND_seed(), RAND_add() */ - int (*rand_seed_cb)(DRBG_CTX *ctx, const void *buf, int num); - int (*rand_add_cb)(DRBG_CTX *ctx, - const void *buf, int num, double entropy); - }; - - -int fips_drbg_ctr_init(DRBG_CTX *dctx); -int fips_drbg_hash_init(DRBG_CTX *dctx); -int fips_drbg_hmac_init(DRBG_CTX *dctx); -int fips_drbg_ec_init(DRBG_CTX *dctx); -int fips_drbg_kat(DRBG_CTX *dctx, int nid, unsigned int flags); -int fips_drbg_cprng_test(DRBG_CTX *dctx, const unsigned char *out); diff --git a/fips/rand/fips_rand_lib.c b/fips/rand/fips_rand_lib.c deleted file mode 100644 index a606d31fbd..0000000000 --- a/fips/rand/fips_rand_lib.c +++ /dev/null @@ -1,181 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2011 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include "e_os.h" - -/* FIPS API for PRNG use. Similar to RAND functionality but without - * ENGINE and additional checking for non-FIPS rand methods. - */ - -static const RAND_METHOD *fips_rand_meth = NULL; -static int fips_approved_rand_meth = 0; -static int fips_rand_bits = 0; - -/* Allows application to override number of bits and uses non-FIPS methods */ -void FIPS_rand_set_bits(int nbits) - { - fips_rand_bits = nbits; - } - -int FIPS_rand_set_method(const RAND_METHOD *meth) - { - if (!fips_rand_bits) - { - if (meth == FIPS_drbg_method()) - fips_approved_rand_meth = 1; - else if (meth == FIPS_x931_method()) - fips_approved_rand_meth = 2; - else - { - fips_approved_rand_meth = 0; - if (FIPS_module_mode()) - { - FIPSerr(FIPS_F_FIPS_RAND_SET_METHOD, - FIPS_R_NON_FIPS_METHOD); - return 0; - } - } - } - fips_rand_meth = meth; - return 1; - } - -const RAND_METHOD *FIPS_rand_get_method(void) - { - return fips_rand_meth; - } - -void FIPS_rand_seed(const void *buf, int num) - { - if (!fips_approved_rand_meth && FIPS_module_mode()) - { - FIPSerr(FIPS_F_FIPS_RAND_SEED, FIPS_R_NON_FIPS_METHOD); - return; - } - if (fips_rand_meth && fips_rand_meth->seed) - fips_rand_meth->seed(buf,num); - } - -void FIPS_rand_add(const void *buf, int num, double entropy) - { - if (!fips_approved_rand_meth && FIPS_module_mode()) - { - FIPSerr(FIPS_F_FIPS_RAND_ADD, FIPS_R_NON_FIPS_METHOD); - return; - } - if (fips_rand_meth && fips_rand_meth->add) - fips_rand_meth->add(buf,num,entropy); - } - -int FIPS_rand_bytes(unsigned char *buf, int num) - { - if (!fips_approved_rand_meth && FIPS_module_mode()) - { - FIPSerr(FIPS_F_FIPS_RAND_BYTES, FIPS_R_NON_FIPS_METHOD); - return 0; - } - if (fips_rand_meth && fips_rand_meth->bytes) - return fips_rand_meth->bytes(buf,num); - return 0; - } - -int FIPS_rand_pseudo_bytes(unsigned char *buf, int num) - { - if (!fips_approved_rand_meth && FIPS_module_mode()) - { - FIPSerr(FIPS_F_FIPS_RAND_PSEUDO_BYTES, FIPS_R_NON_FIPS_METHOD); - return 0; - } - if (fips_rand_meth && fips_rand_meth->pseudorand) - return fips_rand_meth->pseudorand(buf,num); - return -1; - } - -int FIPS_rand_status(void) - { - if (!fips_approved_rand_meth && FIPS_module_mode()) - { - FIPSerr(FIPS_F_FIPS_RAND_STATUS, FIPS_R_NON_FIPS_METHOD); - return 0; - } - if (fips_rand_meth && fips_rand_meth->status) - return fips_rand_meth->status(); - return 0; - } - -/* Return instantiated strength of PRNG. For DRBG this is an internal - * parameter. For X9.31 PRNG it is 80 bits (from SP800-131). Any other - * type of PRNG is not approved and returns 0 in FIPS mode and maximum - * 256 outside FIPS mode. - */ - -int FIPS_rand_strength(void) - { - if (fips_rand_bits) - return fips_rand_bits; - if (fips_approved_rand_meth == 1) - return FIPS_drbg_get_strength(FIPS_get_default_drbg()); - else if (fips_approved_rand_meth == 2) - return 80; - else if (fips_approved_rand_meth == 0) - { - if (FIPS_module_mode()) - return 0; - else - return 256; - } - return 0; - } diff --git a/fips/rand/fips_rand_selftest.c b/fips/rand/fips_rand_selftest.c deleted file mode 100644 index ec949cbdbb..0000000000 --- a/fips/rand/fips_rand_selftest.c +++ /dev/null @@ -1,175 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2003 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include "fips_locl.h" - -#ifdef OPENSSL_FIPS - - - -typedef struct - { - unsigned char DT[16]; - unsigned char V[16]; - unsigned char R[16]; - } AES_PRNG_TV; - -/* The following test vectors are taken directly from the RGNVS spec */ - -static unsigned char aes_128_key[16] = - {0xf3,0xb1,0x66,0x6d,0x13,0x60,0x72,0x42, - 0xed,0x06,0x1c,0xab,0xb8,0xd4,0x62,0x02}; - -static AES_PRNG_TV aes_128_tv = - { - /* DT */ - {0xe6,0xb3,0xbe,0x78,0x2a,0x23,0xfa,0x62, - 0xd7,0x1d,0x4a,0xfb,0xb0,0xe9,0x22,0xf9}, - /* V */ - {0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - /* R */ - {0x59,0x53,0x1e,0xd1,0x3b,0xb0,0xc0,0x55, - 0x84,0x79,0x66,0x85,0xc1,0x2f,0x76,0x41} - }; - -static unsigned char aes_192_key[24] = - {0x15,0xd8,0x78,0x0d,0x62,0xd3,0x25,0x6e, - 0x44,0x64,0x10,0x13,0x60,0x2b,0xa9,0xbc, - 0x4a,0xfb,0xca,0xeb,0x4c,0x8b,0x99,0x3b}; - -static AES_PRNG_TV aes_192_tv = - { - /* DT */ - {0x3f,0xd8,0xff,0xe8,0x80,0x69,0x8b,0xc1, - 0xbf,0x99,0x7d,0xa4,0x24,0x78,0xf3,0x4b}, - /* V */ - {0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - /* R */ - {0x17,0x07,0xd5,0x28,0x19,0x79,0x1e,0xef, - 0xa5,0x0c,0xbf,0x25,0xe5,0x56,0xb4,0x93} - }; - -static unsigned char aes_256_key[32] = - {0x6d,0x14,0x06,0x6c,0xb6,0xd8,0x21,0x2d, - 0x82,0x8d,0xfa,0xf2,0x7a,0x03,0xb7,0x9f, - 0x0c,0xc7,0x3e,0xcd,0x76,0xeb,0xee,0xb5, - 0x21,0x05,0x8c,0x4f,0x31,0x7a,0x80,0xbb}; - -static AES_PRNG_TV aes_256_tv = - { - /* DT */ - {0xda,0x3a,0x41,0xec,0x1d,0xa3,0xb0,0xd5, - 0xf2,0xa9,0x4e,0x34,0x74,0x8e,0x9e,0x88}, - /* V */ - {0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - /* R */ - {0x35,0xc7,0xef,0xa7,0x78,0x4d,0x29,0xbc, - 0x82,0x79,0x99,0xfb,0xd0,0xb3,0x3b,0x72} - }; - -#define fips_x931_test(key, tv) \ - do_x931_test(key, sizeof key, &tv) - -static int do_x931_test(unsigned char *key, int keylen, - AES_PRNG_TV *tv) - { - unsigned char R[16], V[16]; - int rv = 1; - memcpy(V, tv->V, sizeof(V)); - if (!FIPS_x931_set_key(key, keylen)) - return 0; - if (!fips_post_started(FIPS_TEST_X931, keylen, NULL)) - return 1; - if (!fips_post_corrupt(FIPS_TEST_X931, keylen, NULL)) - V[0]++; - FIPS_x931_seed(V, 16); - FIPS_x931_set_dt(tv->DT); - FIPS_x931_bytes(R, 16); - if (memcmp(R, tv->R, 16)) - { - fips_post_failed(FIPS_TEST_X931, keylen, NULL); - rv = 0; - } - else if (!fips_post_success(FIPS_TEST_X931, keylen, NULL)) - return 0; - return rv; - } - -int FIPS_selftest_x931() - { - int rv = 1; - FIPS_x931_reset(); - if (!FIPS_x931_test_mode()) - { - FIPSerr(FIPS_F_FIPS_SELFTEST_X931,FIPS_R_SELFTEST_FAILED); - return 0; - } - if (!fips_x931_test(aes_128_key,aes_128_tv)) - rv = 0; - if (!fips_x931_test(aes_192_key, aes_192_tv)) - rv = 0; - if (!fips_x931_test(aes_256_key, aes_256_tv)) - rv = 0; - FIPS_x931_reset(); - if (!rv) - FIPSerr(FIPS_F_FIPS_SELFTEST_X931,FIPS_R_SELFTEST_FAILED); - return rv; - } - -#endif diff --git a/fips/rand/fips_randtest.c b/fips/rand/fips_randtest.c deleted file mode 100644 index 9185783d54..0000000000 --- a/fips/rand/fips_randtest.c +++ /dev/null @@ -1,261 +0,0 @@ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * 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 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 acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The 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.] - */ -/* ==================================================================== - * Copyright (c) 2003 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include - -#include "e_os.h" - -#ifndef OPENSSL_FIPS -int main(int argc, char *argv[]) -{ - printf("No FIPS RAND support\n"); - return(0); -} - -#else - -#define OPENSSL_FIPSAPI - -#include "fips_utl.h" -#include -#include - -typedef struct - { - unsigned char DT[16]; - unsigned char V[16]; - unsigned char R[16]; - } AES_PRNG_MCT; - -__fips_constseg -static const unsigned char aes_128_mct_key[16] = - {0x9f,0x5b,0x51,0x20,0x0b,0xf3,0x34,0xb5, - 0xd8,0x2b,0xe8,0xc3,0x72,0x55,0xc8,0x48}; - -__fips_constseg -static const AES_PRNG_MCT aes_128_mct_tv = { - /* DT */ - {0x63,0x76,0xbb,0xe5,0x29,0x02,0xba,0x3b, - 0x67,0xc9,0x25,0xfa,0x70,0x1f,0x11,0xac}, - /* V */ - {0x57,0x2c,0x8e,0x76,0x87,0x26,0x47,0x97, - 0x7e,0x74,0xfb,0xdd,0xc4,0x95,0x01,0xd1}, - /* R */ - {0x48,0xe9,0xbd,0x0d,0x06,0xee,0x18,0xfb, - 0xe4,0x57,0x90,0xd5,0xc3,0xfc,0x9b,0x73} -}; - -__fips_constseg -static const unsigned char aes_192_mct_key[24] = - {0xb7,0x6c,0x34,0xd1,0x09,0x67,0xab,0x73, - 0x4d,0x5a,0xd5,0x34,0x98,0x16,0x0b,0x91, - 0xbc,0x35,0x51,0x16,0x6b,0xae,0x93,0x8a}; - -__fips_constseg -static const AES_PRNG_MCT aes_192_mct_tv = { - /* DT */ - {0x84,0xce,0x22,0x7d,0x91,0x5a,0xa3,0xc9, - 0x84,0x3c,0x0a,0xb3,0xa9,0x63,0x15,0x52}, - /* V */ - {0xb6,0xaf,0xe6,0x8f,0x99,0x9e,0x90,0x64, - 0xdd,0xc7,0x7a,0xc1,0xbb,0x90,0x3a,0x6d}, - /* R */ - {0xfc,0x85,0x60,0x9a,0x29,0x6f,0xef,0x21, - 0xdd,0x86,0x20,0x32,0x8a,0x29,0x6f,0x47} -}; - -__fips_constseg -static const unsigned char aes_256_mct_key[32] = - {0x9b,0x05,0xc8,0x68,0xff,0x47,0xf8,0x3a, - 0xa6,0x3a,0xa8,0xcb,0x4e,0x71,0xb2,0xe0, - 0xb8,0x7e,0xf1,0x37,0xb6,0xb4,0xf6,0x6d, - 0x86,0x32,0xfc,0x1f,0x5e,0x1d,0x1e,0x50}; - -__fips_constseg -static const AES_PRNG_MCT aes_256_mct_tv = { - /* DT */ - {0x31,0x6e,0x35,0x9a,0xb1,0x44,0xf0,0xee, - 0x62,0x6d,0x04,0x46,0xe0,0xa3,0x92,0x4c}, - /* V */ - {0x4f,0xcd,0xc1,0x87,0x82,0x1f,0x4d,0xa1, - 0x3e,0x0e,0x56,0x44,0x59,0xe8,0x83,0xca}, - /* R */ - {0xc8,0x87,0xc2,0x61,0x5b,0xd0,0xb9,0xe1, - 0xe7,0xf3,0x8b,0xd7,0x5b,0xd5,0xf1,0x8d} -}; - -static void dump(const unsigned char *b,int n) - { - while(n-- > 0) - { - printf(" %02x",*b++); - } - } - -static void compare(const unsigned char *result,const unsigned char *expected, - int n) - { - int i; - - for(i=0 ; i < n ; ++i) - if(result[i] != expected[i]) - { - puts("Random test failed, got:"); - dump(result,n); - puts("\n expected:"); - dump(expected,n); - putchar('\n'); - EXIT(1); - } - } - - -static void run_test(const unsigned char *key, int keylen, - const AES_PRNG_MCT *tv) - { - unsigned char buf[16], dt[16]; - int i, j; - FIPS_x931_reset(); - FIPS_x931_test_mode(); - FIPS_x931_set_key(key, keylen); - FIPS_x931_seed(tv->V, 16); - memcpy(dt, tv->DT, 16); - for (i = 0; i < 10000; i++) - { - FIPS_x931_set_dt(dt); - FIPS_x931_bytes(buf, 16); - /* Increment DT */ - for (j = 15; j >= 0; j--) - { - dt[j]++; - if (dt[j]) - break; - } - } - - compare(buf,tv->R, 16); - } - -int main() - { - fips_algtest_init(); - run_test(aes_128_mct_key, 16, &aes_128_mct_tv); - printf("FIPS PRNG test 1 done\n"); - run_test(aes_192_mct_key, 24, &aes_192_mct_tv); - printf("FIPS PRNG test 2 done\n"); - run_test(aes_256_mct_key, 32, &aes_256_mct_tv); - printf("FIPS PRNG test 3 done\n"); - return 0; - } - -#endif diff --git a/fips/rand/fips_rngvs.c b/fips/rand/fips_rngvs.c deleted file mode 100644 index 9e1f070602..0000000000 --- a/fips/rand/fips_rngvs.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Crude test driver for processing the VST and MCT testvector files - * generated by the CMVP RNGVS product. - * - * Note the input files are assumed to have a _very_ specific format - * as described in the NIST document "The Random Number Generator - * Validation System (RNGVS)", May 25, 2004. - * - */ - -#define OPENSSL_FIPSAPI - -#include - -#ifndef OPENSSL_FIPS -#include - -int main(int argc, char **argv) -{ - printf("No FIPS RNG support\n"); - return 0; -} -#else - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "fips_utl.h" - -static void vst(FILE *in, FILE *out) - { - unsigned char *key = NULL; - unsigned char *v = NULL; - unsigned char *dt = NULL; - unsigned char ret[16]; - char buf[1024]; - char lbuf[1024]; - char *keyword, *value; - long i, keylen; - - keylen = 0; - - while(fgets(buf,sizeof buf,in) != NULL) - { - fputs(buf,out); - if(!strncmp(buf,"[AES 128-Key]", 13)) - keylen = 16; - else if(!strncmp(buf,"[AES 192-Key]", 13)) - keylen = 24; - else if(!strncmp(buf,"[AES 256-Key]", 13)) - keylen = 32; - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - if(!strcmp(keyword,"Key")) - { - key=hex2bin_m(value,&i); - if (i != keylen) - { - fprintf(stderr, "Invalid key length, expecting %ld\n", keylen); - return; - } - } - else if(!strcmp(keyword,"DT")) - { - dt=hex2bin_m(value,&i); - if (i != 16) - { - fprintf(stderr, "Invalid DT length\n"); - return; - } - } - else if(!strcmp(keyword,"V")) - { - v=hex2bin_m(value,&i); - if (i != 16) - { - fprintf(stderr, "Invalid V length\n"); - return; - } - - if (!key || !dt) - { - fprintf(stderr, "Missing key or DT\n"); - return; - } - - FIPS_x931_set_key(key, keylen); - FIPS_x931_seed(v,16); - FIPS_x931_set_dt(dt); - if (FIPS_x931_bytes(ret,16) <= 0) - { - fprintf(stderr, "Error getting PRNG value\n"); - return; - } - - OutputValue("R", ret, 16, out, 0); - OPENSSL_free(key); - key = NULL; - OPENSSL_free(dt); - dt = NULL; - OPENSSL_free(v); - v = NULL; - } - } - } - -static void mct(FILE *in, FILE *out) - { - unsigned char *key = NULL; - unsigned char *v = NULL; - unsigned char *dt = NULL; - unsigned char ret[16]; - char buf[1024]; - char lbuf[1024]; - char *keyword, *value; - long i, keylen; - int j; - - keylen = 0; - - while(fgets(buf,sizeof buf,in) != NULL) - { - fputs(buf,out); - if(!strncmp(buf,"[AES 128-Key]", 13)) - keylen = 16; - else if(!strncmp(buf,"[AES 192-Key]", 13)) - keylen = 24; - else if(!strncmp(buf,"[AES 256-Key]", 13)) - keylen = 32; - if (!parse_line(&keyword, &value, lbuf, buf)) - continue; - if(!strcmp(keyword,"Key")) - { - key=hex2bin_m(value,&i); - if (i != keylen) - { - fprintf(stderr, "Invalid key length, expecting %ld\n", keylen); - return; - } - } - else if(!strcmp(keyword,"DT")) - { - dt=hex2bin_m(value,&i); - if (i != 16) - { - fprintf(stderr, "Invalid DT length\n"); - return; - } - } - else if(!strcmp(keyword,"V")) - { - v=hex2bin_m(value,&i); - if (i != 16) - { - fprintf(stderr, "Invalid V length\n"); - return; - } - - if (!key || !dt) - { - fprintf(stderr, "Missing key or DT\n"); - return; - } - - FIPS_x931_set_key(key, keylen); - FIPS_x931_seed(v,16); - for (i = 0; i < 10000; i++) - { - FIPS_x931_set_dt(dt); - if (FIPS_x931_bytes(ret,16) <= 0) - { - fprintf(stderr, "Error getting PRNG value\n"); - return; - } - /* Increment DT */ - for (j = 15; j >= 0; j--) - { - dt[j]++; - if (dt[j]) - break; - } - } - - OutputValue("R", ret, 16, out, 0); - OPENSSL_free(key); - key = NULL; - OPENSSL_free(dt); - dt = NULL; - OPENSSL_free(v); - v = NULL; - } - } - } - -#ifdef FIPS_ALGVS -int fips_rngvs_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - FILE *in, *out; - if (argc == 4) - { - in = fopen(argv[2], "r"); - if (!in) - { - fprintf(stderr, "Error opening input file\n"); - exit(1); - } - out = fopen(argv[3], "w"); - if (!out) - { - fprintf(stderr, "Error opening output file\n"); - exit(1); - } - } - else if (argc == 2) - { - in = stdin; - out = stdout; - } - else - { - fprintf(stderr,"%s [mct|vst]\n",argv[0]); - exit(1); - } - fips_algtest_init(); - FIPS_x931_reset(); - if (!FIPS_x931_test_mode()) - { - fprintf(stderr, "Error setting PRNG test mode\n"); - exit(1); - } - if(!strcmp(argv[1],"mct")) - mct(in, out); - else if(!strcmp(argv[1],"vst")) - vst(in, out); - else - { - fprintf(stderr,"Don't know how to %s.\n",argv[1]); - exit(1); - } - - if (argc == 4) - { - fclose(in); - fclose(out); - } - - return 0; - } -#endif diff --git a/fips/rsa/Makefile b/fips/rsa/Makefile deleted file mode 100644 index 77f75455b3..0000000000 --- a/fips/rsa/Makefile +++ /dev/null @@ -1,174 +0,0 @@ -# -# OpenSSL/fips/rsa/Makefile -# - -DIR= rsa -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST= fips_rsavtest.c fips_rsastest.c fips_rsagtest.c -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= fips_rsa_selftest.c fips_rsa_sign.c fips_rsa_lib.c -LIBOBJ= fips_rsa_selftest.o fips_rsa_sign.o fips_rsa_lib.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= $(EXHEADER) - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -Q=../testvectors/rsa/req -A=../testvectors/rsa/rsp -Q62=../testvectors/rsa_salt_62/req -A62=../testvectors/rsa_salt_62/rsp - -fips_test: - -rm -rf $(A) $(A62) - mkdir $(A) $(A62) - if [ -f $(Q)/SigGen15.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsastest < $(Q)/SigGen15.req > $(A)/SigGen15.rsp; fi - if [ -f $(Q)/SigVer15.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsavtest < $(Q)/SigVer15.req > $(A)/SigVer15.rsp; fi - if [ -f $(Q)/SigGenPSS.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsastest -saltlen 0 < $(Q)/SigGenPSS.req > $(A)/SigGenPSS.rsp; fi - if [ -f $(Q)/SigVerPSS.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsavtest -saltlen 0 < $(Q)/SigVerPSS.req > $(A)/SigVerPSS.rsp; fi - if [ -f $(Q)/SigGenRSA.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsastest -x931 < $(Q)/SigGenRSA.req > $(A)/SigGenRSA.rsp; fi - if [ -f $(Q)/SigVerRSA.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsavtest -x931 < $(Q)/SigVerRSA.req > $(A)/SigVerRSA.rsp; fi - if [ -f $(Q62)/SigGenPSS.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsastest -saltlen 62 < $(Q62)/SigGenPSS.req >$(A62)/SigGenPSS.rsp; fi - if [ -f $(Q62)/SigVerPSS.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsavtest -saltlen 62 <$(Q62)/SigVerPSS.req >$(A62)/SigVerPSS.rsp; fi - if [ -f $(Q)/KeyGenRSA.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsagtest < $(Q)/KeyGenRSA.req > $(A)/KeyGenRSA.rsp; fi - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_rsa_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_rsa_lib.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_rsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h -fips_rsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_rsa_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_rsa_lib.o: ../../include/openssl/objects.h -fips_rsa_lib.o: ../../include/openssl/opensslconf.h -fips_rsa_lib.o: ../../include/openssl/opensslv.h -fips_rsa_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h -fips_rsa_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_rsa_lib.o: ../../include/openssl/symhacks.h fips_rsa_lib.c -fips_rsa_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_rsa_selftest.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h -fips_rsa_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h -fips_rsa_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_rsa_selftest.o: ../../include/openssl/lhash.h -fips_rsa_selftest.o: ../../include/openssl/obj_mac.h -fips_rsa_selftest.o: ../../include/openssl/objects.h -fips_rsa_selftest.o: ../../include/openssl/opensslconf.h -fips_rsa_selftest.o: ../../include/openssl/opensslv.h -fips_rsa_selftest.o: ../../include/openssl/ossl_typ.h -fips_rsa_selftest.o: ../../include/openssl/rsa.h -fips_rsa_selftest.o: ../../include/openssl/safestack.h -fips_rsa_selftest.o: ../../include/openssl/stack.h -fips_rsa_selftest.o: ../../include/openssl/symhacks.h ../fips_locl.h -fips_rsa_selftest.o: fips_rsa_selftest.c -fips_rsa_sign.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_rsa_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_rsa_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_rsa_sign.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h -fips_rsa_sign.o: ../../include/openssl/obj_mac.h -fips_rsa_sign.o: ../../include/openssl/objects.h -fips_rsa_sign.o: ../../include/openssl/opensslconf.h -fips_rsa_sign.o: ../../include/openssl/opensslv.h -fips_rsa_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h -fips_rsa_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h -fips_rsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_rsa_sign.o: fips_rsa_sign.c -fips_rsagtest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_rsagtest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_rsagtest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_rsagtest.o: ../../include/openssl/ec.h ../../include/openssl/err.h -fips_rsagtest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_rsagtest.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_rsagtest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_rsagtest.o: ../../include/openssl/objects.h -fips_rsagtest.o: ../../include/openssl/opensslconf.h -fips_rsagtest.o: ../../include/openssl/opensslv.h -fips_rsagtest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h -fips_rsagtest.o: ../../include/openssl/safestack.h -fips_rsagtest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_rsagtest.o: ../fips_utl.h fips_rsagtest.c -fips_rsastest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_rsastest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_rsastest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_rsastest.o: ../../include/openssl/ec.h ../../include/openssl/err.h -fips_rsastest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_rsastest.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_rsastest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_rsastest.o: ../../include/openssl/objects.h -fips_rsastest.o: ../../include/openssl/opensslconf.h -fips_rsastest.o: ../../include/openssl/opensslv.h -fips_rsastest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h -fips_rsastest.o: ../../include/openssl/safestack.h -fips_rsastest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_rsastest.o: ../fips_utl.h fips_rsastest.c -fips_rsavtest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_rsavtest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_rsavtest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_rsavtest.o: ../../include/openssl/ec.h ../../include/openssl/err.h -fips_rsavtest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_rsavtest.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_rsavtest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_rsavtest.o: ../../include/openssl/objects.h -fips_rsavtest.o: ../../include/openssl/opensslconf.h -fips_rsavtest.o: ../../include/openssl/opensslv.h -fips_rsavtest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h -fips_rsavtest.o: ../../include/openssl/safestack.h -fips_rsavtest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_rsavtest.o: ../fips_utl.h fips_rsavtest.c diff --git a/fips/rsa/fips_rsa_lib.c b/fips/rsa/fips_rsa_lib.c deleted file mode 100644 index 77c0cb8466..0000000000 --- a/fips/rsa/fips_rsa_lib.c +++ /dev/null @@ -1,103 +0,0 @@ -/* fips_rsa_sign.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2007. - */ -/* ==================================================================== - * Copyright (c) 2007 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include - -/* Minimal FIPS versions of FIPS_rsa_new() and FIPS_rsa_free: to - * reduce external dependencies. - */ - -RSA *FIPS_rsa_new(void) - { - RSA *ret; - ret = OPENSSL_malloc(sizeof(RSA)); - if (!ret) - return NULL; - memset(ret, 0, sizeof(RSA)); - ret->meth = RSA_PKCS1_SSLeay(); - if (ret->meth->init) - ret->meth->init(ret); - return ret; - } - -void FIPS_rsa_free(RSA *r) - { - if (!r) - return; - if (r->meth->finish) - r->meth->finish(r); - if (r->n != NULL) BN_clear_free(r->n); - if (r->e != NULL) BN_clear_free(r->e); - if (r->d != NULL) BN_clear_free(r->d); - if (r->p != NULL) BN_clear_free(r->p); - if (r->q != NULL) BN_clear_free(r->q); - if (r->dmp1 != NULL) BN_clear_free(r->dmp1); - if (r->dmq1 != NULL) BN_clear_free(r->dmq1); - if (r->iqmp != NULL) BN_clear_free(r->iqmp); - if (r->blinding != NULL) BN_BLINDING_free(r->blinding); - if (r->mt_blinding != NULL) BN_BLINDING_free(r->mt_blinding); - OPENSSL_free(r); - } - diff --git a/fips/rsa/fips_rsa_selftest.c b/fips/rsa/fips_rsa_selftest.c deleted file mode 100644 index 045ec51d64..0000000000 --- a/fips/rsa/fips_rsa_selftest.c +++ /dev/null @@ -1,261 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2003-2011 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include - -#include "fips_locl.h" - -#ifdef OPENSSL_FIPS - -__fips_constseg -static const unsigned char rsa_test_2048_n[] = { - 0xDB,0x10,0x1A,0xC2,0xA3,0xF1,0xDC,0xFF,0x13,0x6B,0xED,0x44, - 0xDF,0xF0,0x02,0x6D,0x13,0xC7,0x88,0xDA,0x70,0x6B,0x54,0xF1, - 0xE8,0x27,0xDC,0xC3,0x0F,0x99,0x6A,0xFA,0xC6,0x67,0xFF,0x1D, - 0x1E,0x3C,0x1D,0xC1,0xB5,0x5F,0x6C,0xC0,0xB2,0x07,0x3A,0x6D, - 0x41,0xE4,0x25,0x99,0xAC,0xFC,0xD2,0x0F,0x02,0xD3,0xD1,0x54, - 0x06,0x1A,0x51,0x77,0xBD,0xB6,0xBF,0xEA,0xA7,0x5C,0x06,0xA9, - 0x5D,0x69,0x84,0x45,0xD7,0xF5,0x05,0xBA,0x47,0xF0,0x1B,0xD7, - 0x2B,0x24,0xEC,0xCB,0x9B,0x1B,0x10,0x8D,0x81,0xA0,0xBE,0xB1, - 0x8C,0x33,0xE4,0x36,0xB8,0x43,0xEB,0x19,0x2A,0x81,0x8D,0xDE, - 0x81,0x0A,0x99,0x48,0xB6,0xF6,0xBC,0xCD,0x49,0x34,0x3A,0x8F, - 0x26,0x94,0xE3,0x28,0x82,0x1A,0x7C,0x8F,0x59,0x9F,0x45,0xE8, - 0x5D,0x1A,0x45,0x76,0x04,0x56,0x05,0xA1,0xD0,0x1B,0x8C,0x77, - 0x6D,0xAF,0x53,0xFA,0x71,0xE2,0x67,0xE0,0x9A,0xFE,0x03,0xA9, - 0x85,0xD2,0xC9,0xAA,0xBA,0x2A,0xBC,0xF4,0xA0,0x08,0xF5,0x13, - 0x98,0x13,0x5D,0xF0,0xD9,0x33,0x34,0x2A,0x61,0xC3,0x89,0x55, - 0xF0,0xAE,0x1A,0x9C,0x22,0xEE,0x19,0x05,0x8D,0x32,0xFE,0xEC, - 0x9C,0x84,0xBA,0xB7,0xF9,0x6C,0x3A,0x4F,0x07,0xFC,0x45,0xEB, - 0x12,0xE5,0x7B,0xFD,0x55,0xE6,0x29,0x69,0xD1,0xC2,0xE8,0xB9, - 0x78,0x59,0xF6,0x79,0x10,0xC6,0x4E,0xEB,0x6A,0x5E,0xB9,0x9A, - 0xC7,0xC4,0x5B,0x63,0xDA,0xA3,0x3F,0x5E,0x92,0x7A,0x81,0x5E, - 0xD6,0xB0,0xE2,0x62,0x8F,0x74,0x26,0xC2,0x0C,0xD3,0x9A,0x17, - 0x47,0xE6,0x8E,0xAB -}; -__fips_constseg -static const unsigned char rsa_test_2048_e[] = { - 0x01,0x00,0x01 -}; -__fips_constseg -static const unsigned char rsa_test_2048_d[] = { - 0x52,0x41,0xF4,0xDA,0x7B,0xB7,0x59,0x55,0xCA,0xD4,0x2F,0x0F, - 0x3A,0xCB,0xA4,0x0D,0x93,0x6C,0xCC,0x9D,0xC1,0xB2,0xFB,0xFD, - 0xAE,0x40,0x31,0xAC,0x69,0x52,0x21,0x92,0xB3,0x27,0xDF,0xEA, - 0xEE,0x2C,0x82,0xBB,0xF7,0x40,0x32,0xD5,0x14,0xC4,0x94,0x12, - 0xEC,0xB8,0x1F,0xCA,0x59,0xE3,0xC1,0x78,0xF3,0x85,0xD8,0x47, - 0xA5,0xD7,0x02,0x1A,0x65,0x79,0x97,0x0D,0x24,0xF4,0xF0,0x67, - 0x6E,0x75,0x2D,0xBF,0x10,0x3D,0xA8,0x7D,0xEF,0x7F,0x60,0xE4, - 0xE6,0x05,0x82,0x89,0x5D,0xDF,0xC6,0xD2,0x6C,0x07,0x91,0x33, - 0x98,0x42,0xF0,0x02,0x00,0x25,0x38,0xC5,0x85,0x69,0x8A,0x7D, - 0x2F,0x95,0x6C,0x43,0x9A,0xB8,0x81,0xE2,0xD0,0x07,0x35,0xAA, - 0x05,0x41,0xC9,0x1E,0xAF,0xE4,0x04,0x3B,0x19,0xB8,0x73,0xA2, - 0xAC,0x4B,0x1E,0x66,0x48,0xD8,0x72,0x1F,0xAC,0xF6,0xCB,0xBC, - 0x90,0x09,0xCA,0xEC,0x0C,0xDC,0xF9,0x2C,0xD7,0xEB,0xAE,0xA3, - 0xA4,0x47,0xD7,0x33,0x2F,0x8A,0xCA,0xBC,0x5E,0xF0,0x77,0xE4, - 0x97,0x98,0x97,0xC7,0x10,0x91,0x7D,0x2A,0xA6,0xFF,0x46,0x83, - 0x97,0xDE,0xE9,0xE2,0x17,0x03,0x06,0x14,0xE2,0xD7,0xB1,0x1D, - 0x77,0xAF,0x51,0x27,0x5B,0x5E,0x69,0xB8,0x81,0xE6,0x11,0xC5, - 0x43,0x23,0x81,0x04,0x62,0xFF,0xE9,0x46,0xB8,0xD8,0x44,0xDB, - 0xA5,0xCC,0x31,0x54,0x34,0xCE,0x3E,0x82,0xD6,0xBF,0x7A,0x0B, - 0x64,0x21,0x6D,0x88,0x7E,0x5B,0x45,0x12,0x1E,0x63,0x8D,0x49, - 0xA7,0x1D,0xD9,0x1E,0x06,0xCD,0xE8,0xBA,0x2C,0x8C,0x69,0x32, - 0xEA,0xBE,0x60,0x71 -}; -__fips_constseg -static const unsigned char rsa_test_2048_p[] = { - 0xFA,0xAC,0xE1,0x37,0x5E,0x32,0x11,0x34,0xC6,0x72,0x58,0x2D, - 0x91,0x06,0x3E,0x77,0xE7,0x11,0x21,0xCD,0x4A,0xF8,0xA4,0x3F, - 0x0F,0xEF,0x31,0xE3,0xF3,0x55,0xA0,0xB9,0xAC,0xB6,0xCB,0xBB, - 0x41,0xD0,0x32,0x81,0x9A,0x8F,0x7A,0x99,0x30,0x77,0x6C,0x68, - 0x27,0xE2,0x96,0xB5,0x72,0xC9,0xC3,0xD4,0x42,0xAA,0xAA,0xCA, - 0x95,0x8F,0xFF,0xC9,0x9B,0x52,0x34,0x30,0x1D,0xCF,0xFE,0xCF, - 0x3C,0x56,0x68,0x6E,0xEF,0xE7,0x6C,0xD7,0xFB,0x99,0xF5,0x4A, - 0xA5,0x21,0x1F,0x2B,0xEA,0x93,0xE8,0x98,0x26,0xC4,0x6E,0x42, - 0x21,0x5E,0xA0,0xA1,0x2A,0x58,0x35,0xBB,0x10,0xE7,0xBA,0x27, - 0x0A,0x3B,0xB3,0xAF,0xE2,0x75,0x36,0x04,0xAC,0x56,0xA0,0xAB, - 0x52,0xDE,0xCE,0xDD,0x2C,0x28,0x77,0x03 -}; -__fips_constseg -static const unsigned char rsa_test_2048_q[] = { - 0xDF,0xB7,0x52,0xB6,0xD7,0xC0,0xE2,0x96,0xE7,0xC9,0xFE,0x5D, - 0x71,0x5A,0xC4,0x40,0x96,0x2F,0xE5,0x87,0xEA,0xF3,0xA5,0x77, - 0x11,0x67,0x3C,0x8D,0x56,0x08,0xA7,0xB5,0x67,0xFA,0x37,0xA8, - 0xB8,0xCF,0x61,0xE8,0x63,0xD8,0x38,0x06,0x21,0x2B,0x92,0x09, - 0xA6,0x39,0x3A,0xEA,0xA8,0xB4,0x45,0x4B,0x36,0x10,0x4C,0xE4, - 0x00,0x66,0x71,0x65,0xF8,0x0B,0x94,0x59,0x4F,0x8C,0xFD,0xD5, - 0x34,0xA2,0xE7,0x62,0x84,0x0A,0xA7,0xBB,0xDB,0xD9,0x8A,0xCD, - 0x05,0xE1,0xCC,0x57,0x7B,0xF1,0xF1,0x1F,0x11,0x9D,0xBA,0x3E, - 0x45,0x18,0x99,0x1B,0x41,0x64,0x43,0xEE,0x97,0x5D,0x77,0x13, - 0x5B,0x74,0x69,0x73,0x87,0x95,0x05,0x07,0xBE,0x45,0x07,0x17, - 0x7E,0x4A,0x69,0x22,0xF3,0xDB,0x05,0x39 -}; -__fips_constseg -static const unsigned char rsa_test_2048_dmp1[] = { - 0x5E,0xD8,0xDC,0xDA,0x53,0x44,0xC4,0x67,0xE0,0x92,0x51,0x34, - 0xE4,0x83,0xA5,0x4D,0x3E,0xDB,0xA7,0x9B,0x82,0xBB,0x73,0x81, - 0xFC,0xE8,0x77,0x4B,0x15,0xBE,0x17,0x73,0x49,0x9B,0x5C,0x98, - 0xBC,0xBD,0x26,0xEF,0x0C,0xE9,0x2E,0xED,0x19,0x7E,0x86,0x41, - 0x1E,0x9E,0x48,0x81,0xDD,0x2D,0xE4,0x6F,0xC2,0xCD,0xCA,0x93, - 0x9E,0x65,0x7E,0xD5,0xEC,0x73,0xFD,0x15,0x1B,0xA2,0xA0,0x7A, - 0x0F,0x0D,0x6E,0xB4,0x53,0x07,0x90,0x92,0x64,0x3B,0x8B,0xA9, - 0x33,0xB3,0xC5,0x94,0x9B,0x4C,0x5D,0x9C,0x7C,0x46,0xA4,0xA5, - 0x56,0xF4,0xF3,0xF8,0x27,0x0A,0x7B,0x42,0x0D,0x92,0x70,0x47, - 0xE7,0x42,0x51,0xA9,0xC2,0x18,0xB1,0x58,0xB1,0x50,0x91,0xB8, - 0x61,0x41,0xB6,0xA9,0xCE,0xD4,0x7C,0xBB -}; -__fips_constseg -static const unsigned char rsa_test_2048_dmq1[] = { - 0x54,0x09,0x1F,0x0F,0x03,0xD8,0xB6,0xC5,0x0C,0xE8,0xB9,0x9E, - 0x0C,0x38,0x96,0x43,0xD4,0xA6,0xC5,0x47,0xDB,0x20,0x0E,0xE5, - 0xBD,0x29,0xD4,0x7B,0x1A,0xF8,0x41,0x57,0x49,0x69,0x9A,0x82, - 0xCC,0x79,0x4A,0x43,0xEB,0x4D,0x8B,0x2D,0xF2,0x43,0xD5,0xA5, - 0xBE,0x44,0xFD,0x36,0xAC,0x8C,0x9B,0x02,0xF7,0x9A,0x03,0xE8, - 0x19,0xA6,0x61,0xAE,0x76,0x10,0x93,0x77,0x41,0x04,0xAB,0x4C, - 0xED,0x6A,0xCC,0x14,0x1B,0x99,0x8D,0x0C,0x6A,0x37,0x3B,0x86, - 0x6C,0x51,0x37,0x5B,0x1D,0x79,0xF2,0xA3,0x43,0x10,0xC6,0xA7, - 0x21,0x79,0x6D,0xF9,0xE9,0x04,0x6A,0xE8,0x32,0xFF,0xAE,0xFD, - 0x1C,0x7B,0x8C,0x29,0x13,0xA3,0x0C,0xB2,0xAD,0xEC,0x6C,0x0F, - 0x8D,0x27,0x12,0x7B,0x48,0xB2,0xDB,0x31 -}; -__fips_constseg -static const unsigned char rsa_test_2048_iqmp[] = { - 0x8D,0x1B,0x05,0xCA,0x24,0x1F,0x0C,0x53,0x19,0x52,0x74,0x63, - 0x21,0xFA,0x78,0x46,0x79,0xAF,0x5C,0xDE,0x30,0xA4,0x6C,0x20, - 0x38,0xE6,0x97,0x39,0xB8,0x7A,0x70,0x0D,0x8B,0x6C,0x6D,0x13, - 0x74,0xD5,0x1C,0xDE,0xA9,0xF4,0x60,0x37,0xFE,0x68,0x77,0x5E, - 0x0B,0x4E,0x5E,0x03,0x31,0x30,0xDF,0xD6,0xAE,0x85,0xD0,0x81, - 0xBB,0x61,0xC7,0xB1,0x04,0x5A,0xC4,0x6D,0x56,0x1C,0xD9,0x64, - 0xE7,0x85,0x7F,0x88,0x91,0xC9,0x60,0x28,0x05,0xE2,0xC6,0x24, - 0x8F,0xDD,0x61,0x64,0xD8,0x09,0xDE,0x7E,0xD3,0x4A,0x61,0x1A, - 0xD3,0x73,0x58,0x4B,0xD8,0xA0,0x54,0x25,0x48,0x83,0x6F,0x82, - 0x6C,0xAF,0x36,0x51,0x2A,0x5D,0x14,0x2F,0x41,0x25,0x00,0xDD, - 0xF8,0xF3,0x95,0xFE,0x31,0x25,0x50,0x12 -}; - -static int setrsakey(RSA *k) - { - fips_load_key_component(k, n, rsa_test_2048); - fips_load_key_component(k, e, rsa_test_2048); - fips_load_key_component(k, d, rsa_test_2048); - fips_load_key_component(k, p, rsa_test_2048); - fips_load_key_component(k, q, rsa_test_2048); - fips_load_key_component(k, dmp1, rsa_test_2048); - fips_load_key_component(k, dmq1, rsa_test_2048); - fips_load_key_component(k, iqmp, rsa_test_2048); - return 1; - err: - return 0; - } - -/* Known Answer Test (KAT) data for the above RSA private key signing - * kat_tbs. - */ - -__fips_constseg -static const unsigned char kat_tbs[] = "OpenSSL FIPS 140-2 Public Key RSA KAT"; - -__fips_constseg -static const unsigned char kat_RSA_PSS_SHA256[] = { - 0x51,0x4F,0x0B,0x8A,0xE6,0x7F,0xF0,0x39,0x9B,0x5F,0x21,0x26, - 0x99,0x71,0xDC,0x64,0x5A,0x60,0x9B,0xFB,0xB9,0x48,0xE3,0xD4, - 0xDE,0xAE,0x2D,0x87,0x72,0x14,0x2A,0x01,0x4C,0xC7,0x5C,0x00, - 0x15,0xAE,0x23,0x09,0x5F,0xD5,0xB5,0x6F,0x94,0x59,0x76,0xEA, - 0x8C,0x28,0x90,0xC4,0xCD,0xB9,0xD7,0xB5,0x82,0x9D,0x4E,0x37, - 0xE0,0x79,0x03,0x88,0x9F,0x31,0x71,0x70,0x80,0xD6,0x99,0x49, - 0x20,0x09,0x30,0x64,0x52,0xCD,0x5C,0x10,0x72,0x29,0x4D,0x33, - 0x10,0xF6,0xEB,0xB7,0x27,0x95,0x55,0x48,0xBE,0x5A,0xBE,0xA7, - 0x74,0xCF,0x0E,0x95,0x28,0xF4,0x05,0x98,0x86,0xBA,0x36,0x5C, - 0x91,0x8F,0x5D,0xC1,0xBD,0xBE,0x74,0xD9,0x74,0x7B,0xEC,0xD1, - 0x4E,0x79,0x66,0x14,0x24,0x21,0x27,0x2D,0xCF,0x93,0xC0,0xE1, - 0x92,0x79,0xE0,0x4D,0x65,0xE2,0xA4,0xBA,0x1F,0x96,0x16,0xB1, - 0x90,0xE1,0x50,0xDE,0x2F,0xB0,0x07,0xAF,0x84,0xCC,0x81,0x1C, - 0x42,0xA9,0x1B,0xF6,0x25,0xDF,0x6F,0xEB,0x9A,0xF0,0x93,0xF3, - 0x66,0xE7,0x88,0x7B,0xF9,0xA5,0x92,0xA9,0xD5,0x35,0xAA,0x33, - 0x8F,0xEA,0x68,0xDB,0x82,0xE5,0x69,0xBB,0x95,0x31,0xC3,0x4F, - 0x0A,0x68,0x15,0x8A,0x93,0x91,0xE2,0x3B,0xDC,0xA4,0x94,0x2F, - 0x34,0xBC,0xCE,0xC9,0xA6,0xF0,0x49,0x33,0x5B,0x8F,0xDB,0x60, - 0xE8,0x37,0x8C,0x97,0xF9,0xFB,0x28,0x0A,0xF1,0xAD,0x4D,0x9D, - 0xC0,0x57,0x4D,0xD0,0x26,0x76,0x36,0x21,0x67,0x97,0x73,0xCD, - 0x26,0x3A,0xCD,0x44,0x77,0xF2,0x59,0xBB,0xDF,0x77,0x3B,0x98, - 0xC5,0x57,0xB7,0x5D -}; - -int FIPS_selftest_rsa() - { - int ret = 0; - RSA *key = NULL; - EVP_PKEY pk; - key=FIPS_rsa_new(); - setrsakey(key); - pk.type = EVP_PKEY_RSA; - pk.pkey.rsa = key; - - if (!fips_pkey_signature_test(FIPS_TEST_SIGNATURE, - &pk, kat_tbs, sizeof(kat_tbs) - 1, - kat_RSA_PSS_SHA256, sizeof(kat_RSA_PSS_SHA256), - EVP_sha256(), RSA_PKCS1_PSS_PADDING, - "RSA SHA256 PSS")) - goto err; - - ret = 1; - - err: - FIPS_rsa_free(key); - return ret; - } - -#endif /* def OPENSSL_FIPS */ diff --git a/fips/rsa/fips_rsa_sign.c b/fips/rsa/fips_rsa_sign.c deleted file mode 100644 index a4e03e7417..0000000000 --- a/fips/rsa/fips_rsa_sign.c +++ /dev/null @@ -1,474 +0,0 @@ -/* fips_rsa_sign.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2007. - */ -/* ==================================================================== - * Copyright (c) 2007 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include - -#ifdef OPENSSL_FIPS - -/* FIPS versions of RSA_sign() and RSA_verify(). - * These will only have to deal with SHA* signatures and by including - * pregenerated encodings all ASN1 dependencies can be avoided - */ - -/* Standard encodings including NULL parameter */ - -__fips_constseg -static const unsigned char sha1_bin[] = { - 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, - 0x00, 0x04, 0x14 -}; - -__fips_constseg -static const unsigned char sha224_bin[] = { - 0x30, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, - 0x04, 0x02, 0x04, 0x05, 0x00, 0x04, 0x1c -}; - -__fips_constseg -static const unsigned char sha256_bin[] = { - 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, - 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20 -}; - -__fips_constseg -static const unsigned char sha384_bin[] = { - 0x30, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, - 0x04, 0x02, 0x02, 0x05, 0x00, 0x04, 0x30 -}; - -__fips_constseg -static const unsigned char sha512_bin[] = { - 0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, - 0x04, 0x02, 0x03, 0x05, 0x00, 0x04, 0x40 -}; - -/* Alternate encodings with absent parameters. We don't generate signature - * using this format but do tolerate received signatures of this form. - */ - -__fips_constseg -static const unsigned char sha1_nn_bin[] = { - 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, - 0x14 -}; - -__fips_constseg -static const unsigned char sha224_nn_bin[] = { - 0x30, 0x2b, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, - 0x04, 0x02, 0x04, 0x04, 0x1c -}; - -__fips_constseg -static const unsigned char sha256_nn_bin[] = { - 0x30, 0x2f, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, - 0x04, 0x02, 0x01, 0x04, 0x20 -}; - -__fips_constseg -static const unsigned char sha384_nn_bin[] = { - 0x30, 0x3f, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, - 0x04, 0x02, 0x02, 0x04, 0x30 -}; - -__fips_constseg -static const unsigned char sha512_nn_bin[] = { - 0x30, 0x4f, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, - 0x04, 0x02, 0x03, 0x04, 0x40 -}; - - -static const unsigned char *fips_digestinfo_encoding(int nid, unsigned int *len) - { - switch (nid) - { - - case NID_sha1: - *len = sizeof(sha1_bin); - return sha1_bin; - - case NID_sha224: - *len = sizeof(sha224_bin); - return sha224_bin; - - case NID_sha256: - *len = sizeof(sha256_bin); - return sha256_bin; - - case NID_sha384: - *len = sizeof(sha384_bin); - return sha384_bin; - - case NID_sha512: - *len = sizeof(sha512_bin); - return sha512_bin; - - default: - return NULL; - - } - } - -static const unsigned char *fips_digestinfo_nn_encoding(int nid, unsigned int *len) - { - switch (nid) - { - - case NID_sha1: - *len = sizeof(sha1_nn_bin); - return sha1_nn_bin; - - case NID_sha224: - *len = sizeof(sha224_nn_bin); - return sha224_nn_bin; - - case NID_sha256: - *len = sizeof(sha256_nn_bin); - return sha256_nn_bin; - - case NID_sha384: - *len = sizeof(sha384_nn_bin); - return sha384_nn_bin; - - case NID_sha512: - *len = sizeof(sha512_nn_bin); - return sha512_nn_bin; - - default: - return NULL; - - } - } - -int FIPS_rsa_sign_ctx(RSA *rsa, EVP_MD_CTX *ctx, - int rsa_pad_mode, int saltlen, const EVP_MD *mgf1Hash, - unsigned char *sigret, unsigned int *siglen) - { - unsigned int md_len, rv; - unsigned char md[EVP_MAX_MD_SIZE]; - FIPS_digestfinal(ctx, md, &md_len); - rv = FIPS_rsa_sign_digest(rsa, md, md_len, - M_EVP_MD_CTX_md(ctx), - rsa_pad_mode, saltlen, - mgf1Hash, sigret, siglen); - OPENSSL_cleanse(md, md_len); - return rv; - } - - -int FIPS_rsa_sign_digest(RSA *rsa, const unsigned char *md, int md_len, - const EVP_MD *mhash, int rsa_pad_mode, int saltlen, - const EVP_MD *mgf1Hash, - unsigned char *sigret, unsigned int *siglen) - { - int i=0,j,ret=0; - unsigned int dlen; - const unsigned char *der; - int md_type; - /* Largest DigestInfo: 19 (max encoding) + max MD */ - unsigned char tmpdinfo[19 + EVP_MAX_MD_SIZE]; - - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_RSA_SIGN_DIGEST, FIPS_R_SELFTEST_FAILED); - return 0; - } - if (!mhash && rsa_pad_mode == RSA_PKCS1_PADDING) - md_type = saltlen; - else - md_type = M_EVP_MD_type(mhash); - - if (rsa_pad_mode == RSA_X931_PADDING) - { - int hash_id; - memcpy(tmpdinfo, md, md_len); - hash_id = RSA_X931_hash_id(md_type); - if (hash_id == -1) - { - RSAerr(RSA_F_FIPS_RSA_SIGN_DIGEST,RSA_R_UNKNOWN_ALGORITHM_TYPE); - return 0; - } - tmpdinfo[md_len] = (unsigned char)hash_id; - i = md_len + 1; - } - else if (rsa_pad_mode == RSA_PKCS1_PADDING) - { - - der = fips_digestinfo_encoding(md_type, &dlen); - - if (!der) - { - RSAerr(RSA_F_FIPS_RSA_SIGN_DIGEST,RSA_R_UNKNOWN_ALGORITHM_TYPE); - return 0; - } - memcpy(tmpdinfo, der, dlen); - memcpy(tmpdinfo + dlen, md, md_len); - - i = dlen + md_len; - - } - else if (rsa_pad_mode == RSA_PKCS1_PSS_PADDING) - { - unsigned char *sbuf; - i = RSA_size(rsa); - sbuf = OPENSSL_malloc(RSA_size(rsa)); - if (!sbuf) - { - RSAerr(RSA_F_FIPS_RSA_SIGN_DIGEST,ERR_R_MALLOC_FAILURE); - goto psserr; - } - if (!RSA_padding_add_PKCS1_PSS_mgf1(rsa, sbuf, md, mhash, - mgf1Hash, saltlen)) - goto psserr; - j=rsa->meth->rsa_priv_enc(i,sbuf,sigret,rsa,RSA_NO_PADDING); - if (j > 0) - { - ret=1; - *siglen=j; - } - psserr: - OPENSSL_cleanse(sbuf, i); - OPENSSL_free(sbuf); - return ret; - } - - j=RSA_size(rsa); - if (i > (j-RSA_PKCS1_PADDING_SIZE)) - { - RSAerr(RSA_F_FIPS_RSA_SIGN_DIGEST,RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY); - goto done; - } - /* NB: call underlying method directly to avoid FIPS blocking */ - j=rsa->meth->rsa_priv_enc(i,tmpdinfo,sigret,rsa,rsa_pad_mode); - if (j > 0) - { - ret=1; - *siglen=j; - } - - done: - OPENSSL_cleanse(tmpdinfo,i); - return ret; - } - -int FIPS_rsa_verify_ctx(RSA *rsa, EVP_MD_CTX *ctx, - int rsa_pad_mode, int saltlen, const EVP_MD *mgf1Hash, - const unsigned char *sigbuf, unsigned int siglen) - { - unsigned int md_len, rv; - unsigned char md[EVP_MAX_MD_SIZE]; - FIPS_digestfinal(ctx, md, &md_len); - rv = FIPS_rsa_verify_digest(rsa, md, md_len, M_EVP_MD_CTX_md(ctx), - rsa_pad_mode, saltlen, mgf1Hash, - sigbuf, siglen); - OPENSSL_cleanse(md, md_len); - return rv; - } - -int FIPS_rsa_verify_digest(RSA *rsa, const unsigned char *dig, int diglen, - const EVP_MD *mhash, int rsa_pad_mode, int saltlen, - const EVP_MD *mgf1Hash, - const unsigned char *sigbuf, unsigned int siglen) - { - int i,ret=0; - unsigned int dlen; - unsigned char *s; - const unsigned char *der; - int md_type; - int rsa_dec_pad_mode; - - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_RSA_VERIFY_DIGEST, FIPS_R_SELFTEST_FAILED); - return 0; - } - - if (siglen != (unsigned int)RSA_size(rsa)) - { - RSAerr(RSA_F_FIPS_RSA_VERIFY_DIGEST,RSA_R_WRONG_SIGNATURE_LENGTH); - return(0); - } - - if (!mhash && rsa_pad_mode == RSA_PKCS1_PADDING) - md_type = saltlen; - else - md_type = M_EVP_MD_type(mhash); - - s= OPENSSL_malloc((unsigned int)siglen); - if (s == NULL) - { - RSAerr(RSA_F_FIPS_RSA_VERIFY_DIGEST,ERR_R_MALLOC_FAILURE); - goto err; - } - - if (rsa_pad_mode == RSA_PKCS1_PSS_PADDING) - rsa_dec_pad_mode = RSA_NO_PADDING; - else - rsa_dec_pad_mode = rsa_pad_mode; - - /* NB: call underlying method directly to avoid FIPS blocking */ - i=rsa->meth->rsa_pub_dec((int)siglen,sigbuf,s, rsa, rsa_dec_pad_mode); - - if (i <= 0) goto err; - - if (rsa_pad_mode == RSA_X931_PADDING) - { - int hash_id; - if (i != (int)(diglen + 1)) - { - RSAerr(RSA_F_FIPS_RSA_VERIFY_DIGEST,RSA_R_BAD_SIGNATURE); - goto err; - } - hash_id = RSA_X931_hash_id(md_type); - if (hash_id == -1) - { - RSAerr(RSA_F_FIPS_RSA_VERIFY_DIGEST,RSA_R_UNKNOWN_ALGORITHM_TYPE); - goto err; - } - if (s[diglen] != (unsigned char)hash_id) - { - RSAerr(RSA_F_FIPS_RSA_VERIFY_DIGEST,RSA_R_BAD_SIGNATURE); - goto err; - } - if (memcmp(s, dig, diglen)) - { - RSAerr(RSA_F_FIPS_RSA_VERIFY_DIGEST,RSA_R_BAD_SIGNATURE); - goto err; - } - ret = 1; - } - else if (rsa_pad_mode == RSA_PKCS1_PADDING) - { - - der = fips_digestinfo_encoding(md_type, &dlen); - - if (!der) - { - RSAerr(RSA_F_FIPS_RSA_VERIFY_DIGEST,RSA_R_UNKNOWN_ALGORITHM_TYPE); - return(0); - } - - /* Compare, DigestInfo length, DigestInfo header and finally - * digest value itself - */ - - /* If length mismatch try alternate encoding */ - if (i != (int)(dlen + diglen)) - der = fips_digestinfo_nn_encoding(md_type, &dlen); - - if ((i != (int)(dlen + diglen)) || memcmp(der, s, dlen) - || memcmp(s + dlen, dig, diglen)) - { - RSAerr(RSA_F_FIPS_RSA_VERIFY_DIGEST,RSA_R_BAD_SIGNATURE); - goto err; - } - ret = 1; - - } - else if (rsa_pad_mode == RSA_PKCS1_PSS_PADDING) - { - ret = RSA_verify_PKCS1_PSS_mgf1(rsa, dig, mhash, mgf1Hash, - s, saltlen); - if (ret < 0) - ret = 0; - } -err: - if (s != NULL) - { - OPENSSL_cleanse(s, siglen); - OPENSSL_free(s); - } - return(ret); - } - -int FIPS_rsa_sign(RSA *rsa, const unsigned char *msg, int msglen, - const EVP_MD *mhash, int rsa_pad_mode, int saltlen, - const EVP_MD *mgf1Hash, - unsigned char *sigret, unsigned int *siglen) - { - unsigned int md_len, rv; - unsigned char md[EVP_MAX_MD_SIZE]; - FIPS_digest(msg, msglen, md, &md_len, mhash); - rv = FIPS_rsa_sign_digest(rsa, md, md_len, mhash, rsa_pad_mode, - saltlen, mgf1Hash, sigret, siglen); - OPENSSL_cleanse(md, md_len); - return rv; - } - - -int FIPS_rsa_verify(RSA *rsa, const unsigned char *msg, int msglen, - const EVP_MD *mhash, int rsa_pad_mode, int saltlen, - const EVP_MD *mgf1Hash, - const unsigned char *sigbuf, unsigned int siglen) - { - unsigned int md_len, rv; - unsigned char md[EVP_MAX_MD_SIZE]; - FIPS_digest(msg, msglen, md, &md_len, mhash); - rv = FIPS_rsa_verify_digest(rsa, md, md_len, mhash, rsa_pad_mode, - saltlen, mgf1Hash, sigbuf, siglen); - OPENSSL_cleanse(md, md_len); - return rv; - } - -#endif diff --git a/fips/rsa/fips_rsagtest.c b/fips/rsa/fips_rsagtest.c deleted file mode 100644 index 8342f615fb..0000000000 --- a/fips/rsa/fips_rsagtest.c +++ /dev/null @@ -1,389 +0,0 @@ -/* fips_rsagtest.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2005. - */ -/* ==================================================================== - * Copyright (c) 2005,2007 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef OPENSSL_FIPS - -int main(int argc, char *argv[]) -{ - printf("No FIPS RSA support\n"); - return(0); -} - -#else - -#include -#include -#include "fips_utl.h" - -int rsa_test(FILE *out, FILE *in); -static int rsa_printkey1(FILE *out, RSA *rsa, - BIGNUM *Xp1, BIGNUM *Xp2, BIGNUM *Xp, - BIGNUM *e); -static int rsa_printkey2(FILE *out, RSA *rsa, - BIGNUM *Xq1, BIGNUM *Xq2, BIGNUM *Xq); - -#ifdef FIPS_ALGVS -int fips_rsagtest_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - FILE *in = NULL, *out = NULL; - - int ret = 1; - - fips_algtest_init(); - - if (argc == 1) - in = stdin; - else - in = fopen(argv[1], "r"); - - if (argc < 2) - out = stdout; - else - out = fopen(argv[2], "w"); - - if (!in) - { - fprintf(stderr, "FATAL input initialization error\n"); - goto end; - } - - if (!out) - { - fprintf(stderr, "FATAL output initialization error\n"); - goto end; - } - - if (!rsa_test(out, in)) - { - fprintf(stderr, "FATAL RSAGTEST file processing error\n"); - goto end; - } - else - ret = 0; - - end: - - if (in && (in != stdin)) - fclose(in); - if (out && (out != stdout)) - fclose(out); - - return ret; - - } - -#define RSA_TEST_MAXLINELEN 10240 - -int rsa_test(FILE *out, FILE *in) - { - char *linebuf, *olinebuf, *p, *q; - char *keyword, *value; - RSA *rsa = NULL; - BIGNUM *Xp1 = NULL, *Xp2 = NULL, *Xp = NULL; - BIGNUM *Xq1 = NULL, *Xq2 = NULL, *Xq = NULL; - BIGNUM *e = NULL; - int ret = 0; - int lnum = 0; - - olinebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); - linebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); - - if (!linebuf || !olinebuf) - goto error; - - while (fgets(olinebuf, RSA_TEST_MAXLINELEN, in)) - { - lnum++; - strcpy(linebuf, olinebuf); - keyword = linebuf; - /* Skip leading space */ - while (isspace((unsigned char)*keyword)) - keyword++; - - /* Look for = sign */ - p = strchr(linebuf, '='); - - /* If no = or starts with [ (for [foo = bar] line) just copy */ - if (!p || *keyword=='[') - { - if (fputs(olinebuf, out) < 0) - goto error; - continue; - } - - q = p - 1; - - /* Remove trailing space */ - while (isspace((unsigned char)*q)) - *q-- = 0; - - *p = 0; - value = p + 1; - - /* Remove leading space from value */ - while (isspace((unsigned char)*value)) - value++; - - /* Remove trailing space from value */ - p = value + strlen(value) - 1; - - while (*p == '\n' || isspace((unsigned char)*p)) - *p-- = 0; - - if (!strcmp(keyword, "xp1")) - { - if (Xp1 || !do_hex2bn(&Xp1,value)) - goto parse_error; - } - else if (!strcmp(keyword, "xp2")) - { - if (Xp2 || !do_hex2bn(&Xp2,value)) - goto parse_error; - } - else if (!strcmp(keyword, "Xp")) - { - if (Xp || !do_hex2bn(&Xp,value)) - goto parse_error; - } - else if (!strcmp(keyword, "xq1")) - { - if (Xq1 || !do_hex2bn(&Xq1,value)) - goto parse_error; - } - else if (!strcmp(keyword, "xq2")) - { - if (Xq2 || !do_hex2bn(&Xq2,value)) - goto parse_error; - } - else if (!strcmp(keyword, "Xq")) - { - if (Xq || !do_hex2bn(&Xq,value)) - goto parse_error; - } - else if (!strcmp(keyword, "e")) - { - if (e || !do_hex2bn(&e,value)) - goto parse_error; - } - else if (!strcmp(keyword, "p1")) - continue; - else if (!strcmp(keyword, "p2")) - continue; - else if (!strcmp(keyword, "p")) - continue; - else if (!strcmp(keyword, "q1")) - continue; - else if (!strcmp(keyword, "q2")) - continue; - else if (!strcmp(keyword, "q")) - continue; - else if (!strcmp(keyword, "n")) - continue; - else if (!strcmp(keyword, "d")) - continue; - else - goto parse_error; - - fputs(olinebuf, out); - - if (e && Xp1 && Xp2 && Xp) - { - rsa = FIPS_rsa_new(); - if (!rsa) - goto error; - if (!rsa_printkey1(out, rsa, Xp1, Xp2, Xp, e)) - goto error; - BN_free(Xp1); - Xp1 = NULL; - BN_free(Xp2); - Xp2 = NULL; - BN_free(Xp); - Xp = NULL; - BN_free(e); - e = NULL; - } - - if (rsa && Xq1 && Xq2 && Xq) - { - if (!rsa_printkey2(out, rsa, Xq1, Xq2, Xq)) - goto error; - BN_free(Xq1); - Xq1 = NULL; - BN_free(Xq2); - Xq2 = NULL; - BN_free(Xq); - Xq = NULL; - FIPS_rsa_free(rsa); - rsa = NULL; - } - } - - ret = 1; - - error: - - if (olinebuf) - OPENSSL_free(olinebuf); - if (linebuf) - OPENSSL_free(linebuf); - - if (Xp1) - BN_free(Xp1); - if (Xp2) - BN_free(Xp2); - if (Xp) - BN_free(Xp); - if (Xq1) - BN_free(Xq1); - if (Xq1) - BN_free(Xq1); - if (Xq2) - BN_free(Xq2); - if (Xq) - BN_free(Xq); - if (e) - BN_free(e); - if (rsa) - FIPS_rsa_free(rsa); - - return ret; - - parse_error: - - fprintf(stderr, "FATAL parse error processing line %d\n", lnum); - - goto error; - - } - -static int rsa_printkey1(FILE *out, RSA *rsa, - BIGNUM *Xp1, BIGNUM *Xp2, BIGNUM *Xp, - BIGNUM *e) - { - int ret = 0; - BIGNUM *p1 = NULL, *p2 = NULL; - p1 = BN_new(); - p2 = BN_new(); - if (!p1 || !p2) - goto error; - - if (!RSA_X931_derive_ex(rsa, p1, p2, NULL, NULL, Xp1, Xp2, Xp, - NULL, NULL, NULL, e, NULL)) - goto error; - - do_bn_print_name(out, "p1", p1); - do_bn_print_name(out, "p2", p2); - do_bn_print_name(out, "p", rsa->p); - - ret = 1; - - error: - if (p1) - BN_free(p1); - if (p2) - BN_free(p2); - - return ret; - } - -static int rsa_printkey2(FILE *out, RSA *rsa, - BIGNUM *Xq1, BIGNUM *Xq2, BIGNUM *Xq) - { - int ret = 0; - BIGNUM *q1 = NULL, *q2 = NULL; - q1 = BN_new(); - q2 = BN_new(); - if (!q1 || !q2) - goto error; - - if (!RSA_X931_derive_ex(rsa, NULL, NULL, q1, q2, NULL, NULL, NULL, - Xq1, Xq2, Xq, NULL, NULL)) - goto error; - - do_bn_print_name(out, "q1", q1); - do_bn_print_name(out, "q2", q2); - do_bn_print_name(out, "q", rsa->q); - do_bn_print_name(out, "n", rsa->n); - do_bn_print_name(out, "d", rsa->d); - - ret = 1; - - error: - if (q1) - BN_free(q1); - if (q2) - BN_free(q2); - - return ret; - } - -#endif diff --git a/fips/rsa/fips_rsastest.c b/fips/rsa/fips_rsastest.c deleted file mode 100644 index a96f277e6a..0000000000 --- a/fips/rsa/fips_rsastest.c +++ /dev/null @@ -1,361 +0,0 @@ -/* fips_rsastest.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2005. - */ -/* ==================================================================== - * Copyright (c) 2005 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef OPENSSL_FIPS - -int main(int argc, char *argv[]) -{ - printf("No FIPS RSA support\n"); - return(0); -} - -#else - -#include -#include -#include "fips_utl.h" - -static int rsa_stest(FILE *out, FILE *in, int Saltlen); -static int rsa_printsig(FILE *out, RSA *rsa, const EVP_MD *dgst, - unsigned char *Msg, long Msglen, int Saltlen); - -#ifdef FIPS_ALGVS -int fips_rsastest_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - FILE *in = NULL, *out = NULL; - - int ret = 1, Saltlen = -1; - - fips_algtest_init(); - - if ((argc > 2) && !strcmp("-saltlen", argv[1])) - { - Saltlen = atoi(argv[2]); - if (Saltlen < 0) - { - fprintf(stderr, "FATAL: Invalid salt length\n"); - goto end; - } - argc -= 2; - argv += 2; - } - else if ((argc > 1) && !strcmp("-x931", argv[1])) - { - Saltlen = -2; - argc--; - argv++; - } - - if (argc == 1) - in = stdin; - else - in = fopen(argv[1], "r"); - - if (argc < 2) - out = stdout; - else - out = fopen(argv[2], "w"); - - if (!in) - { - fprintf(stderr, "FATAL input initialization error\n"); - goto end; - } - - if (!out) - { - fprintf(stderr, "FATAL output initialization error\n"); - goto end; - } - - if (!rsa_stest(out, in, Saltlen)) - { - fprintf(stderr, "FATAL RSASTEST file processing error\n"); - goto end; - } - else - ret = 0; - - end: - - if (in && (in != stdin)) - fclose(in); - if (out && (out != stdout)) - fclose(out); - - return ret; - - } - -#define RSA_TEST_MAXLINELEN 10240 - -int rsa_stest(FILE *out, FILE *in, int Saltlen) - { - char *linebuf, *olinebuf, *p, *q; - char *keyword, *value; - RSA *rsa = NULL; - const EVP_MD *dgst = NULL; - unsigned char *Msg = NULL; - long Msglen = -1; - int keylen = -1, current_keylen = -1; - int ret = 0; - int lnum = 0; - - olinebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); - linebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); - - if (!linebuf || !olinebuf) - goto error; - - while (fgets(olinebuf, RSA_TEST_MAXLINELEN, in)) - { - lnum++; - strcpy(linebuf, olinebuf); - keyword = linebuf; - /* Skip leading space */ - while (isspace((unsigned char)*keyword)) - keyword++; - - /* Look for = sign */ - p = strchr(linebuf, '='); - - /* If no = just copy */ - if (!p) - { - if (fputs(olinebuf, out) < 0) - goto error; - continue; - } - - q = p - 1; - - /* Remove trailing space */ - while (isspace((unsigned char)*q)) - *q-- = 0; - - *p = 0; - value = p + 1; - - /* Remove leading space from value */ - while (isspace((unsigned char)*value)) - value++; - - /* Remove trailing space from value */ - p = value + strlen(value) - 1; - - while (*p == '\n' || isspace((unsigned char)*p)) - *p-- = 0; - - /* Look for [mod = XXX] for key length */ - - if (!strcmp(keyword, "[mod")) - { - p = value + strlen(value) - 1; - if (*p != ']') - goto parse_error; - *p = 0; - keylen = atoi(value); - if (keylen < 0) - goto parse_error; - } - else if (!strcmp(keyword, "SHAAlg")) - { - if (!strcmp(value, "SHA1")) - dgst = EVP_sha1(); - else if (!strcmp(value, "SHA224")) - dgst = EVP_sha224(); - else if (!strcmp(value, "SHA256")) - dgst = EVP_sha256(); - else if (!strcmp(value, "SHA384")) - dgst = EVP_sha384(); - else if (!strcmp(value, "SHA512")) - dgst = EVP_sha512(); - else - { - fprintf(stderr, - "FATAL: unsupported algorithm \"%s\"\n", - value); - goto parse_error; - } - } - else if (!strcmp(keyword, "Msg")) - { - if (Msg) - goto parse_error; - if (strlen(value) & 1) - *(--value) = '0'; - Msg = hex2bin_m(value, &Msglen); - if (!Msg) - goto parse_error; - } - - fputs(olinebuf, out); - - /* If key length has changed, generate and output public - * key components of new RSA private key. - */ - - if (keylen != current_keylen) - { - BIGNUM *bn_e; - if (rsa) - FIPS_rsa_free(rsa); - rsa = FIPS_rsa_new(); - if (!rsa) - goto error; - bn_e = BN_new(); - if (!bn_e || !BN_set_word(bn_e, 0x1001)) - goto error; - if (!RSA_X931_generate_key_ex(rsa, keylen, bn_e, NULL)) - goto error; - BN_free(bn_e); - fputs("n = ", out); - do_bn_print(out, rsa->n); - fputs(RESP_EOL "e = ", out); - do_bn_print(out, rsa->e); - fputs(RESP_EOL, out); - current_keylen = keylen; - } - - if (Msg && dgst) - { - if (!rsa_printsig(out, rsa, dgst, Msg, Msglen, - Saltlen)) - goto error; - OPENSSL_free(Msg); - Msg = NULL; - } - - } - - ret = 1; - - error: - - if (olinebuf) - OPENSSL_free(olinebuf); - if (linebuf) - OPENSSL_free(linebuf); - if (rsa) - FIPS_rsa_free(rsa); - - return ret; - - parse_error: - - fprintf(stderr, "FATAL parse error processing line %d\n", lnum); - - goto error; - - } - -static int rsa_printsig(FILE *out, RSA *rsa, const EVP_MD *dgst, - unsigned char *Msg, long Msglen, int Saltlen) - { - int ret = 0; - unsigned char *sigbuf = NULL; - int i, siglen, pad_mode; - /* EVP_PKEY structure */ - - siglen = RSA_size(rsa); - sigbuf = OPENSSL_malloc(siglen); - if (!sigbuf) - goto error; - - if (Saltlen >= 0) - pad_mode = RSA_PKCS1_PSS_PADDING; - else if (Saltlen == -2) - pad_mode = RSA_X931_PADDING; - else - pad_mode = RSA_PKCS1_PADDING; - - if (!FIPS_rsa_sign(rsa, Msg, Msglen, dgst, pad_mode, Saltlen, NULL, - sigbuf, (unsigned int *)&siglen)) - goto error; - - fputs("S = ", out); - - for (i = 0; i < siglen; i++) - fprintf(out, "%02X", sigbuf[i]); - - fputs(RESP_EOL, out); - - ret = 1; - - error: - - if (sigbuf) - OPENSSL_free(sigbuf); - - return ret; - } -#endif diff --git a/fips/rsa/fips_rsavtest.c b/fips/rsa/fips_rsavtest.c deleted file mode 100644 index 9bfc5e688b..0000000000 --- a/fips/rsa/fips_rsavtest.c +++ /dev/null @@ -1,365 +0,0 @@ -/* fips_rsavtest.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2005. - */ -/* ==================================================================== - * Copyright (c) 2005 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 - * licensing@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef OPENSSL_FIPS - -int main(int argc, char *argv[]) -{ - printf("No FIPS RSA support\n"); - return(0); -} - -#else - -#include -#include - -#include "fips_utl.h" - -int rsa_vtest(FILE *out, FILE *in, int saltlen); -static int rsa_printver(FILE *out, - BIGNUM *n, BIGNUM *e, - const EVP_MD *dgst, - unsigned char *Msg, long Msglen, - unsigned char *S, long Slen, int Saltlen); - -#ifdef FIPS_ALGVS -int fips_rsavtest_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - FILE *in = NULL, *out = NULL; - - int ret = 1; - int Saltlen = -1; - - fips_algtest_init(); - - if ((argc > 2) && !strcmp("-saltlen", argv[1])) - { - Saltlen = atoi(argv[2]); - if (Saltlen < 0) - { - fprintf(stderr, "FATAL: Invalid salt length\n"); - goto end; - } - argc -= 2; - argv += 2; - } - else if ((argc > 1) && !strcmp("-x931", argv[1])) - { - Saltlen = -2; - argc--; - argv++; - } - - if (argc == 1) - in = stdin; - else - in = fopen(argv[1], "r"); - - if (argc < 2) - out = stdout; - else - out = fopen(argv[2], "w"); - - if (!in) - { - fprintf(stderr, "FATAL input initialization error\n"); - goto end; - } - - if (!out) - { - fprintf(stderr, "FATAL output initialization error\n"); - goto end; - } - - if (!rsa_vtest(out, in, Saltlen)) - { - fprintf(stderr, "FATAL RSAVTEST file processing error\n"); - goto end; - } - else - ret = 0; - - end: - - if (in && (in != stdin)) - fclose(in); - if (out && (out != stdout)) - fclose(out); - - return ret; - - } - -#define RSA_TEST_MAXLINELEN 10240 - -int rsa_vtest(FILE *out, FILE *in, int Saltlen) - { - char *linebuf, *olinebuf, *p, *q; - char *keyword, *value; - const EVP_MD *dgst = NULL; - BIGNUM *n = NULL, *e = NULL; - unsigned char *Msg = NULL, *S = NULL; - long Msglen, Slen; - int ret = 0; - int lnum = 0; - - olinebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); - linebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); - - if (!linebuf || !olinebuf) - goto error; - - while (fgets(olinebuf, RSA_TEST_MAXLINELEN, in)) - { - lnum++; - strcpy(linebuf, olinebuf); - keyword = linebuf; - /* Skip leading space */ - while (isspace((unsigned char)*keyword)) - keyword++; - - /* Look for = sign */ - p = strchr(linebuf, '='); - - /* If no = or starts with [ (for [foo = bar] line) just copy */ - if (!p || *keyword=='[') - { - if (fputs(olinebuf, out) < 0) - goto error; - continue; - } - - q = p - 1; - - /* Remove trailing space */ - while (isspace((unsigned char)*q)) - *q-- = 0; - - *p = 0; - value = p + 1; - - /* Remove leading space from value */ - while (isspace((unsigned char)*value)) - value++; - - /* Remove trailing space from value */ - p = value + strlen(value) - 1; - - while (*p == '\n' || isspace((unsigned char)*p)) - *p-- = 0; - - if (!strcmp(keyword, "n")) - { - if (!do_hex2bn(&n,value)) - goto parse_error; - } - else if (!strcmp(keyword, "e")) - { - if (!do_hex2bn(&e,value)) - goto parse_error; - } - else if (!strcmp(keyword, "SHAAlg")) - { - if (!strcmp(value, "SHA1")) - dgst = EVP_sha1(); - else if (!strcmp(value, "SHA224")) - dgst = EVP_sha224(); - else if (!strcmp(value, "SHA256")) - dgst = EVP_sha256(); - else if (!strcmp(value, "SHA384")) - dgst = EVP_sha384(); - else if (!strcmp(value, "SHA512")) - dgst = EVP_sha512(); - else - { - fprintf(stderr, - "FATAL: unsupported algorithm \"%s\"\n", - value); - goto parse_error; - } - } - else if (!strcmp(keyword, "Msg")) - { - if (Msg) - goto parse_error; - if (strlen(value) & 1) - *(--value) = '0'; - Msg = hex2bin_m(value, &Msglen); - if (!Msg) - goto parse_error; - } - else if (!strcmp(keyword, "S")) - { - if (S) - goto parse_error; - if (strlen(value) & 1) - *(--value) = '0'; - S = hex2bin_m(value, &Slen); - if (!S) - goto parse_error; - } - else if (!strcmp(keyword, "Result")) - continue; - else - goto parse_error; - - fputs(olinebuf, out); - - if (n && e && Msg && S && dgst) - { - if (!rsa_printver(out, n, e, dgst, - Msg, Msglen, S, Slen, Saltlen)) - goto error; - OPENSSL_free(Msg); - Msg = NULL; - OPENSSL_free(S); - S = NULL; - } - - } - - - ret = 1; - - - error: - - if (olinebuf) - OPENSSL_free(olinebuf); - if (linebuf) - OPENSSL_free(linebuf); - if (n) - BN_free(n); - if (e) - BN_free(e); - - return ret; - - parse_error: - - fprintf(stderr, "FATAL parse error processing line %d\n", lnum); - - goto error; - - } - -static int rsa_printver(FILE *out, - BIGNUM *n, BIGNUM *e, - const EVP_MD *dgst, - unsigned char *Msg, long Msglen, - unsigned char *S, long Slen, int Saltlen) - { - int ret = 0, r, pad_mode; - /* Setup RSA and EVP_PKEY structures */ - RSA *rsa_pubkey = NULL; - unsigned char *buf = NULL; - rsa_pubkey = FIPS_rsa_new(); - if (!rsa_pubkey) - goto error; - rsa_pubkey->n = BN_dup(n); - rsa_pubkey->e = BN_dup(e); - if (!rsa_pubkey->n || !rsa_pubkey->e) - goto error; - - if (Saltlen >= 0) - pad_mode = RSA_PKCS1_PSS_PADDING; - else if (Saltlen == -2) - pad_mode = RSA_X931_PADDING; - else - pad_mode = RSA_PKCS1_PADDING; - - no_err = 1; - r = FIPS_rsa_verify(rsa_pubkey, Msg, Msglen, dgst, - pad_mode, Saltlen, NULL, S, Slen); - no_err = 0; - - if (r < 0) - goto error; - - if (r == 0) - fputs("Result = F" RESP_EOL, out); - else - fputs("Result = P" RESP_EOL, out); - - ret = 1; - - error: - if (rsa_pubkey) - FIPS_rsa_free(rsa_pubkey); - if (buf) - OPENSSL_free(buf); - - return ret; - } -#endif diff --git a/fips/sha/Makefile b/fips/sha/Makefile deleted file mode 100644 index 0878e7bf64..0000000000 --- a/fips/sha/Makefile +++ /dev/null @@ -1,161 +0,0 @@ -# -# OpenSSL/fips/sha/Makefile -# - -DIR= sha -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r -EXE_EXT= - -ASFLAGS= $(INCLUDES) $(ASFLAG) -AFLAGS= $(ASFLAGS) - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST= fips_shatest.c -APPS= -EXE= fips_standalone_sha1$(EXE_EXT) - -LIB=$(TOP)/libcrypto.a -LIBSRC=fips_sha1_selftest.c -LIBOBJ=fips_sha1_selftest.o - -SRC= $(LIBSRC) -PROGS= fips_standalone_sha1.c - -EXHEADER= -HEADER= - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips SDIRS=$(DIR) sub_all) - -all: ../fips_standalone_sha1$(EXE_EXT) lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -../fips_standalone_sha1$(EXE_EXT): fips_standalone_sha1.o - if [ -z "$(HOSTCC)" ] ; then \ - FIPS_SHA_ASM=""; for i in $(SHA1_ASM_OBJ) sha1dgst.o ; do FIPS_SHA_ASM="$$FIPS_SHA_ASM ../../crypto/sha/$$i" ; done; \ - $(CC) -o $@ $(CFLAGS) fips_standalone_sha1.o $$FIPS_SHA_ASM ; \ - else \ - $(HOSTCC) $(HOSTCFLAGS) -o $ $@ -I../../include -I../../crypto fips_standalone_sha1.c ../../crypto/sha/sha1dgst.c ; \ - fi - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -Q=../testvectors/sha/req -A=../testvectors/sha/rsp - -VECTORS = SHA1LongMsg \ - SHA1Monte \ - SHA1ShortMsg \ - SHA224LongMsg \ - SHA224Monte \ - SHA224ShortMsg \ - SHA256LongMsg \ - SHA256Monte \ - SHA256ShortMsg \ - SHA384LongMsg \ - SHA384Monte \ - SHA384ShortMsg \ - SHA512LongMsg \ - SHA512Monte \ - SHA512ShortMsg - -fips_test: - -rm -rf $(A) - mkdir $(A) - for file in $(VECTORS); do \ - if [ -f $(Q)/$$file.req ]; then \ - $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_shatest $(Q)/$$file.req $(A)/$$file.rsp; \ - fi; \ - done - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_sha1_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_sha1_selftest.o: ../../include/openssl/crypto.h -fips_sha1_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h -fips_sha1_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_sha1_selftest.o: ../../include/openssl/lhash.h -fips_sha1_selftest.o: ../../include/openssl/obj_mac.h -fips_sha1_selftest.o: ../../include/openssl/objects.h -fips_sha1_selftest.o: ../../include/openssl/opensslconf.h -fips_sha1_selftest.o: ../../include/openssl/opensslv.h -fips_sha1_selftest.o: ../../include/openssl/ossl_typ.h -fips_sha1_selftest.o: ../../include/openssl/safestack.h -fips_sha1_selftest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h -fips_sha1_selftest.o: ../../include/openssl/symhacks.h fips_sha1_selftest.c -fips_shatest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h -fips_shatest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h -fips_shatest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_shatest.o: ../../include/openssl/ec.h ../../include/openssl/err.h -fips_shatest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_shatest.o: ../../include/openssl/fips_rand.h ../../include/openssl/hmac.h -fips_shatest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -fips_shatest.o: ../../include/openssl/objects.h -fips_shatest.o: ../../include/openssl/opensslconf.h -fips_shatest.o: ../../include/openssl/opensslv.h -fips_shatest.o: ../../include/openssl/ossl_typ.h -fips_shatest.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_shatest.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_shatest.c -fips_standalone_sha1.o: ../../include/openssl/asn1.h -fips_standalone_sha1.o: ../../include/openssl/bio.h -fips_standalone_sha1.o: ../../include/openssl/crypto.h -fips_standalone_sha1.o: ../../include/openssl/e_os2.h -fips_standalone_sha1.o: ../../include/openssl/evp.h -fips_standalone_sha1.o: ../../include/openssl/fips.h -fips_standalone_sha1.o: ../../include/openssl/hmac.h -fips_standalone_sha1.o: ../../include/openssl/obj_mac.h -fips_standalone_sha1.o: ../../include/openssl/objects.h -fips_standalone_sha1.o: ../../include/openssl/opensslconf.h -fips_standalone_sha1.o: ../../include/openssl/opensslv.h -fips_standalone_sha1.o: ../../include/openssl/ossl_typ.h -fips_standalone_sha1.o: ../../include/openssl/safestack.h -fips_standalone_sha1.o: ../../include/openssl/sha.h -fips_standalone_sha1.o: ../../include/openssl/stack.h -fips_standalone_sha1.o: ../../include/openssl/symhacks.h fips_standalone_sha1.c diff --git a/fips/sha/fips_sha1_selftest.c b/fips/sha/fips_sha1_selftest.c deleted file mode 100644 index 62680bfff8..0000000000 --- a/fips/sha/fips_sha1_selftest.c +++ /dev/null @@ -1,94 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2003 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@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. - * - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include - -#ifdef OPENSSL_FIPS -static const unsigned char test[][60]= - { - "", - "abc", - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" - }; - -__fips_constseg -static const unsigned char ret[][SHA_DIGEST_LENGTH]= - { - { 0xda,0x39,0xa3,0xee,0x5e,0x6b,0x4b,0x0d,0x32,0x55, - 0xbf,0xef,0x95,0x60,0x18,0x90,0xaf,0xd8,0x07,0x09 }, - { 0xa9,0x99,0x3e,0x36,0x47,0x06,0x81,0x6a,0xba,0x3e, - 0x25,0x71,0x78,0x50,0xc2,0x6c,0x9c,0xd0,0xd8,0x9d }, - { 0x84,0x98,0x3e,0x44,0x1c,0x3b,0xd2,0x6e,0xba,0xae, - 0x4a,0xa1,0xf9,0x51,0x29,0xe5,0xe5,0x46,0x70,0xf1 }, - }; - -int FIPS_selftest_sha1() - { - int rv = 1; - size_t i; - - for(i=0 ; i -#include -#include -#include -#include -#include -#include - -#ifndef OPENSSL_FIPS - -int main(int argc, char *argv[]) -{ - printf("No FIPS SHAXXX support\n"); - return(0); -} - -#else - -#include - -#include "fips_utl.h" - -static int dgst_test(FILE *out, FILE *in); -static int print_dgst(const EVP_MD *md, FILE *out, - unsigned char *Msg, int Msglen); -static int print_monte(const EVP_MD *md, FILE *out, - unsigned char *Seed, int SeedLen); - -#ifdef FIPS_ALGVS -int fips_shatest_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif - { - FILE *in = NULL, *out = NULL; - - int ret = 1; - fips_algtest_init(); - - if (argc == 1) - in = stdin; - else - in = fopen(argv[1], "r"); - - if (argc < 2) - out = stdout; - else - out = fopen(argv[2], "w"); - - if (!in) - { - fprintf(stderr, "FATAL input initialization error\n"); - goto end; - } - - if (!out) - { - fprintf(stderr, "FATAL output initialization error\n"); - goto end; - } - - if (!dgst_test(out, in)) - { - fprintf(stderr, "FATAL digest file processing error\n"); - goto end; - } - else - ret = 0; - - end: - - if (in && (in != stdin)) - fclose(in); - if (out && (out != stdout)) - fclose(out); - - return ret; - - } - -#define SHA_TEST_MAX_BITS 102400 -#define SHA_TEST_MAXLINELEN (((SHA_TEST_MAX_BITS >> 3) * 2) + 100) - -int dgst_test(FILE *out, FILE *in) - { - const EVP_MD *md = NULL; - char *linebuf, *olinebuf, *p, *q; - char *keyword, *value; - unsigned char *Msg = NULL, *Seed = NULL; - long MsgLen = -1, Len = -1, SeedLen = -1; - int ret = 0; - int lnum = 0; - - olinebuf = OPENSSL_malloc(SHA_TEST_MAXLINELEN); - linebuf = OPENSSL_malloc(SHA_TEST_MAXLINELEN); - - if (!linebuf || !olinebuf) - goto error; - - - while (fgets(olinebuf, SHA_TEST_MAXLINELEN, in)) - { - lnum++; - strcpy(linebuf, olinebuf); - keyword = linebuf; - /* Skip leading space */ - while (isspace((unsigned char)*keyword)) - keyword++; - - /* Look for = sign */ - p = strchr(linebuf, '='); - - /* If no = or starts with [ (for [L=20] line) just copy */ - if (!p) - { - fputs(olinebuf, out); - continue; - } - - q = p - 1; - - /* Remove trailing space */ - while (isspace((unsigned char)*q)) - *q-- = 0; - - *p = 0; - value = p + 1; - - /* Remove leading space from value */ - while (isspace((unsigned char)*value)) - value++; - - /* Remove trailing space from value */ - p = value + strlen(value) - 1; - while (*p == '\n' || isspace((unsigned char)*p)) - *p-- = 0; - - if (!strcmp(keyword,"[L") && *p==']') - { - switch (atoi(value)) - { - case 20: md=EVP_sha1(); break; - case 28: md=EVP_sha224(); break; - case 32: md=EVP_sha256(); break; - case 48: md=EVP_sha384(); break; - case 64: md=EVP_sha512(); break; - default: goto parse_error; - } - } - else if (!strcmp(keyword, "Len")) - { - if (Len != -1) - goto parse_error; - Len = atoi(value); - if (Len < 0) - goto parse_error; - /* Only handle multiples of 8 bits */ - if (Len & 0x7) - goto parse_error; - if (Len > SHA_TEST_MAX_BITS) - goto parse_error; - MsgLen = Len >> 3; - } - - else if (!strcmp(keyword, "Msg")) - { - long tmplen; - if (strlen(value) & 1) - *(--value) = '0'; - if (Msg) - goto parse_error; - Msg = hex2bin_m(value, &tmplen); - if (!Msg) - goto parse_error; - } - else if (!strcmp(keyword, "Seed")) - { - if (strlen(value) & 1) - *(--value) = '0'; - if (Seed) - goto parse_error; - Seed = hex2bin_m(value, &SeedLen); - if (!Seed) - goto parse_error; - } - else if (!strcmp(keyword, "MD")) - continue; - else - goto parse_error; - - fputs(olinebuf, out); - - if (md && Msg && (MsgLen >= 0)) - { - if (!print_dgst(md, out, Msg, MsgLen)) - goto error; - OPENSSL_free(Msg); - Msg = NULL; - MsgLen = -1; - Len = -1; - } - else if (md && Seed && (SeedLen > 0)) - { - if (!print_monte(md, out, Seed, SeedLen)) - goto error; - OPENSSL_free(Seed); - Seed = NULL; - SeedLen = -1; - } - - - } - - - ret = 1; - - - error: - - if (olinebuf) - OPENSSL_free(olinebuf); - if (linebuf) - OPENSSL_free(linebuf); - if (Msg) - OPENSSL_free(Msg); - if (Seed) - OPENSSL_free(Seed); - - return ret; - - parse_error: - - fprintf(stderr, "FATAL parse error processing line %d\n", lnum); - - goto error; - - } - -static int print_dgst(const EVP_MD *emd, FILE *out, - unsigned char *Msg, int Msglen) - { - int i, mdlen; - unsigned char md[EVP_MAX_MD_SIZE]; - if (!FIPS_digest(Msg, Msglen, md, (unsigned int *)&mdlen, emd)) - { - fputs("Error calculating HASH\n", stderr); - return 0; - } - fputs("MD = ", out); - for (i = 0; i < mdlen; i++) - fprintf(out, "%02x", md[i]); - fputs(RESP_EOL, out); - return 1; - } - -static int print_monte(const EVP_MD *md, FILE *out, - unsigned char *Seed, int SeedLen) - { - unsigned int i, j, k; - int ret = 0; - EVP_MD_CTX ctx; - unsigned char *m1, *m2, *m3, *p; - unsigned int mlen, m1len, m2len, m3len; - - FIPS_md_ctx_init(&ctx); - - if (SeedLen > EVP_MAX_MD_SIZE) - mlen = SeedLen; - else - mlen = EVP_MAX_MD_SIZE; - - m1 = OPENSSL_malloc(mlen); - m2 = OPENSSL_malloc(mlen); - m3 = OPENSSL_malloc(mlen); - - if (!m1 || !m2 || !m3) - goto mc_error; - - m1len = m2len = m3len = SeedLen; - memcpy(m1, Seed, SeedLen); - memcpy(m2, Seed, SeedLen); - memcpy(m3, Seed, SeedLen); - - fputs(RESP_EOL, out); - - for (j = 0; j < 100; j++) - { - for (i = 0; i < 1000; i++) - { - FIPS_digestinit(&ctx, md); - FIPS_digestupdate(&ctx, m1, m1len); - FIPS_digestupdate(&ctx, m2, m2len); - FIPS_digestupdate(&ctx, m3, m3len); - p = m1; - m1 = m2; - m1len = m2len; - m2 = m3; - m2len = m3len; - m3 = p; - FIPS_digestfinal(&ctx, m3, &m3len); - } - fprintf(out, "COUNT = %d" RESP_EOL, j); - fputs("MD = ", out); - for (k = 0; k < m3len; k++) - fprintf(out, "%02x", m3[k]); - fputs(RESP_EOL RESP_EOL, out); - memcpy(m1, m3, m3len); - memcpy(m2, m3, m3len); - m1len = m2len = m3len; - } - - ret = 1; - - mc_error: - if (m1) - OPENSSL_free(m1); - if (m2) - OPENSSL_free(m2); - if (m3) - OPENSSL_free(m3); - - FIPS_md_ctx_cleanup(&ctx); - - return ret; - } - -#endif diff --git a/fips/sha/fips_standalone_sha1.c b/fips/sha/fips_standalone_sha1.c deleted file mode 100644 index 80ccae4dfe..0000000000 --- a/fips/sha/fips_standalone_sha1.c +++ /dev/null @@ -1,175 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2003 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@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. - * - */ - -#include -#include -#include -#include -#include -#include -#include - -#ifndef FIPSCANISTER_O -int FIPS_selftest_failed() { return 0; } -void FIPS_selftest_check() {} -void OPENSSL_cleanse(void *p,size_t len) {} -unsigned int OPENSSL_ia32cap_P[2]; -#endif - -#ifdef OPENSSL_FIPS - -static void hmac_init(SHA_CTX *md_ctx,SHA_CTX *o_ctx, - const char *key) - { - size_t len=strlen(key); - int i; - unsigned char keymd[HMAC_MAX_MD_CBLOCK]; - unsigned char pad[HMAC_MAX_MD_CBLOCK]; - - if (len > SHA_CBLOCK) - { - SHA1_Init(md_ctx); - SHA1_Update(md_ctx,key,len); - SHA1_Final(keymd,md_ctx); - len=20; - } - else - memcpy(keymd,key,len); - memset(&keymd[len],'\0',HMAC_MAX_MD_CBLOCK-len); - - for(i=0 ; i < HMAC_MAX_MD_CBLOCK ; i++) - pad[i]=0x36^keymd[i]; - SHA1_Init(md_ctx); - SHA1_Update(md_ctx,pad,SHA_CBLOCK); - - for(i=0 ; i < HMAC_MAX_MD_CBLOCK ; i++) - pad[i]=0x5c^keymd[i]; - SHA1_Init(o_ctx); - SHA1_Update(o_ctx,pad,SHA_CBLOCK); - } - -static void hmac_final(unsigned char *md,SHA_CTX *md_ctx,SHA_CTX *o_ctx) - { - unsigned char buf[20]; - - SHA1_Final(buf,md_ctx); - SHA1_Update(o_ctx,buf,sizeof buf); - SHA1_Final(md,o_ctx); - } - -#endif - -int main(int argc,char **argv) - { -#ifdef OPENSSL_FIPS - static char key[]="etaonrishdlcupfm"; - int n,binary=0; - - if(argc < 2) - { - fprintf(stderr,"%s []+\n",argv[0]); - exit(1); - } - - n=1; - if (!strcmp(argv[n],"-binary")) - { - n++; - binary=1; /* emit binary fingerprint... */ - } - - for(; n < argc ; ++n) - { - FILE *f=fopen(argv[n],"rb"); - SHA_CTX md_ctx,o_ctx; - unsigned char md[20]; - int i; - - if(!f) - { - perror(argv[n]); - exit(2); - } - - hmac_init(&md_ctx,&o_ctx,key); - for( ; ; ) - { - char buf[1024]; - size_t l=fread(buf,1,sizeof buf,f); - - if(l == 0) - { - if(ferror(f)) - { - perror(argv[n]); - exit(3); - } - else - break; - } - SHA1_Update(&md_ctx,buf,l); - } - hmac_final(md,&md_ctx,&o_ctx); - - if (binary) - { - fwrite(md,20,1,stdout); - break; /* ... for single(!) file */ - } - - printf("HMAC-SHA1(%s)= ",argv[n]); - for(i=0 ; i < 20 ; ++i) - printf("%02x",md[i]); - printf("\n"); - } -#endif - return 0; - } - - diff --git a/fips/tools/README b/fips/tools/README deleted file mode 100644 index ad5ef22f2a..0000000000 --- a/fips/tools/README +++ /dev/null @@ -1,26 +0,0 @@ -FIPS tools explained -==================== - -api_list.pl - a script to produce an API description, saying what parameters are - for input, output or both. - - Most often, the direction of a parameter is determined automatically. - However, quite a number of them are educated guesses. Either way, - the information is stored in the file declarations.dat in this - directory, and can be manually corrected; simply go through - declarations.dat, look for any value with the key 'direction' - where the value contains a question mark. Those should be changed - to whatever is true, and the values should be one of the - following: - - <- output - -> input - <-> both - -api_fns.pm - a module that helps api_list.pl do its job. - -declarations.dat - a file of information about public fips symbols. See api_list.pl - above. diff --git a/fips/tools/api_fns.pm b/fips/tools/api_fns.pm deleted file mode 100644 index d668be12ba..0000000000 --- a/fips/tools/api_fns.pm +++ /dev/null @@ -1,336 +0,0 @@ -package api_data; -use strict; - -use Data::Dumper; -use File::Slurp; - -# The basic data store for a declaration is a hash holding the following -# information (let's simply call this structure "declaration"): -# sym => string (the symbol of the declaration) -# symcomment=> string (if there's a comment about this symbol) or undef -# type => string (type definition text, with a '?' where the symbol should be -# kind => 0 (variable) -# 1 (function) -# params => list reference (list of declarations, one for each parameter) -# [only exists when kind = 1] -# direction => 0 (input) -# 1 (output) -# 2 (input and output) -# 3 (output or input and output) -# +4 (guess) -# [only exists when this symbol is a parameter to a function] - -# Constructor -sub new { - my $class = shift; - my $self = {}; - $self->{DECLARATIONS} = {}; - bless($self, $class); - return $self; -} - -sub read_declaration_db { - my $self = shift; - my $declaration_file = shift; - my $buf = read_file($declaration_file); - $self->{DECLARATIONS} = eval $buf; - die $@ if $@; -} - -sub write_declaration_db { - my $self = shift; - my $declaration_file = shift; - - $Data::Dumper::Purity = 1; - open FILE,">".$declaration_file || - die "Can't open '$declaration_file': $!\n"; - print FILE "my ",Data::Dumper->Dump([ $self->{DECLARATIONS} ], [qw(declaration_db)]); - close FILE; -} - -sub insert_declaration { - my $self = shift; - my %decl = @_; - my $sym = $decl{sym}; - - if ($self->{DECLARATIONS}->{$sym}) { - foreach my $k (('sym', 'symcomment','oldsym','objfile','kind')) { - $self->{DECLARATIONS}->{$sym}->{$k} = $decl{$k}; - } - if ($self->{DECLARATIONS}->{$sym}->{kind} == 1) { - # Replace parameters only if the kind or type has changed - my $oldp = $self->{DECLARATIONS}->{$sym}->{params}; - my $newp = $decl{params}; - my $l = scalar(@{$oldp}); - for my $pn (0..($l - 1)) { - if ($oldp->[$pn]->{kind} != $newp->[$pn]->{kind} - || $oldp->[$pn]->{type} ne $newp->[$pn]->{type}) { - $self->{DECLARATIONS}->{$sym}->{params} = $newp; - } - } - } - } else { - $self->{DECLARATIONS}->{$decl{sym}} = { %decl }; - } -} - -# Input is a simple C declaration, output is a declaration structure -sub _parse_declaration { - my $decl = shift; - my $newname = shift; - my $objfile = shift; - my $namecomment = shift; - my %parsed_decl = (); - - my $debug = 0; - - print "DEBUG: going to parse: $decl\n" if $debug; - - # Start with changing all parens to { and } except the outermost - # Within these, convert all commas to semi-colons - my $s = ""; - do { - print "DEBUG: decl: $decl\n" if $debug; - $s = $decl; - if ($decl =~ m/ - \( - ([^\(\)]*) - \( - ([^\(\)]*) - \) - /x) { - print "DEBUG: \`: $`\n" if $debug; - print "DEBUG: 1: $1\n" if $debug; - print "DEBUG: 2: $2\n" if $debug; - print "DEBUG: \': $'\n" if $debug; - - my $a = "$`"."("."$1"; - my $b = "{"."$2"."}"; - my $c = "$'"; - print "DEBUG: a: $a\n" if $debug; - print "DEBUG: b: $b\n" if $debug; - print "DEBUG: c: $c\n" if $debug; - $b =~ s/,/;/g; - print "DEBUG: b: $b\n" if $debug; - - $decl = $a.$b.$c; - } - } while ($s ne $decl); - - # There are types that we look for. The first is the function pointer - # T (*X)(...) - if ($decl =~ m/ - ^\s* - ([^\(]+) # Return type of the function pointed at - \( - \s*\*\s* - ([^\)]*) # Function returning or variable holding fn ptr - \) - \s* - \( - ([^\)]*) # Parameter for the function pointed at - \) - \s*$ - /x) { - print "DEBUG: function pointer variable or function\n" if $debug; - print "DEBUG: 1: $1\n" if $debug; - print "DEBUG: 2: $2\n" if $debug; - print "DEBUG: 3: $3\n" if $debug; - - my $tmp1 = $1 . "(*?)" . "(" . $3 . ")"; - my $tmp2 = $2; - - $tmp1 =~ tr/\{\}\;/(),/; # Convert all braces and semi-colons - # back to parens and commas - - $tmp2 =~ tr/\{\}\;/(),/; # Convert all braces and semi-colons - # back to parens and commas - - # Parse the symbol part with a fake type. This will determine if - # it's a variable or a function. - my $subdeclaration = _parse_declaration("int " . $tmp2, $newname); - map { $parsed_decl{$_} = $subdeclaration->{$_} } ( "sym", - "kind", - "params" ); - $parsed_decl{symcomment} = $namecomment if $namecomment; - $parsed_decl{type} = $tmp1; - } - # If that wasn't it, check for the simple function declaration - # T X(...) - elsif ($decl =~ m/^\s*(.*?\W)(\w+)\s*\(\s*(.*)\s*\)\s*$/) { - print "DEBUG: function\n" if $debug; - print "DEBUG: 1: $1\n" if $debug; - print "DEBUG: 2: $2\n" if $debug; - print "DEBUG: 3: $3\n" if $debug; - - $parsed_decl{kind} = 1; - $parsed_decl{type} = $1."?"; - $parsed_decl{sym} = $newname ? $newname : $2; - $parsed_decl{symcomment} = $namecomment if $namecomment; - $parsed_decl{oldsym} = $newname ? $2 : undef; - $parsed_decl{params} = [ - map { tr/\{\}\;/(),/; _parse_declaration($_,undef,undef,undef) } - grep { !/^\s*void\s*$/ } - split(/\s*,\s*/, $3) - ]; - } - # If that wasn't it either, try to get a variable - # T X or T X[...] - elsif ($decl =~ m/^\s*(.*\W)(\w+)(\s*\[.*\])?\s*$/) { - print "DEBUG: variable\n" if $debug; - print "DEBUG: 1: $1\n" if $debug; - print "DEBUG: 2: $2\n" if $debug; - - $parsed_decl{kind} = 0; - $parsed_decl{type} = $1."?"; - $parsed_decl{sym} = $newname ? $newname : $2; - $parsed_decl{symcomment} = $namecomment if $namecomment; - $parsed_decl{oldsym} = $newname ? $2 : undef; - } - # Special for the parameter "..." - elsif ($decl =~ m/^\s*\.\.\.\s*$/) { - %parsed_decl = ( kind => 0, type => "?", sym => "..." ); - } - # Otherwise, we got something weird - else { - print "Warning: weird declaration: $decl\n"; - %parsed_decl = ( kind => -1, decl => $decl ); - } - $parsed_decl{objfile} = $objfile; - - print Dumper({ %parsed_decl }) if $debug; - return { %parsed_decl }; -} - -sub add_declaration { - my $self = shift; - my $parsed = _parse_declaration(@_); - $self->insert_declaration( %{$parsed} ); -} - -sub complete_directions { - my $self = shift; - foreach my $sym (keys %{$self->{DECLARATIONS}}) { - if ($self->{DECLARATIONS}->{$sym}->{kind} == 1) { - map { - if (!$_->{direction} || $_->{direction} =~ m/\?/) { - if ($_->{type} =~ m/const/) { - $_->{direction} = '->'; # Input - } elsif ($_->{sym} =~ m/ctx/ || $_->{type} =~ m/ctx/i) { - $_->{direction} = '<-?'; # Guess output - } elsif ($_->{type} =~ m/\*/) { - if ($_->{type} =~ m/(short|int|char|size_t)/) { - $_->{direction} = '<-?'; # Guess output - } else { - $_->{direction} = '<-? <->?'; # Guess output or input/output - } - } else { - $_->{direction} = '->'; # Input - } - } - } @{$self->{DECLARATIONS}->{$sym}->{params}}; - } - } -} - -sub on_all_declarations { - my $self = shift; - my $fn = shift; - foreach my $sym (sort keys %{$self->{DECLARATIONS}}) { - &$fn($self->{DECLARATIONS}->{$sym}); - } -} - -sub get_function_declaration_strings_from_file { - my $fn = shift; - my %declarations = (); - my $line = ""; - my $cppline = ""; - - my $debug = 0; - - foreach my $headerline (`cat $fn`) { - chomp $headerline; - print STDERR "DEBUG0: $headerline\n" if $debug; - # First, treat the line at a CPP level; remove comments, add on more - # lines if there's an ending backslash or an incomplete comment. - # If none of that is true, then remove all comments and check if the - # line starts with a #, skip if it does, otherwise continue. - if ($cppline && $headerline) { $cppline .= " "; } - $cppline .= $headerline; - $cppline =~ s^\"(.|\\\")*\"^@@^g; # Collapse strings - $cppline =~ s^/\*.*?\*/^^g; # Remove all complete comments - print STDERR "DEBUG1: $cppline\n" if $debug; - if ($cppline =~ m/\\$/) { # Keep on reading if the current line ends - # with a backslash - $cppline = $`; - next; - } - next if $cppline =~ m/\/\*/; # Keep on reading if there remains the - # start of a comment - next if $cppline =~ m/"/; # Keep on reading if there remains the - # start of a string - if ($cppline =~ m/^\#/) { - $cppline = ""; - next; - } - - # Done with the preprocessor part, add the resulting line to the - # line we're putting together to get a statement. - if ($line && $cppline) { $line .= " "; } - $line .= $cppline; - $cppline = ""; - $line =~ s%extern\s+\@\@\s+\{%%g; # Remove 'extern "C" {' - $line =~ s%\{[^\{\}]*\}%\$\$%g; # Collapse any compound structure - print STDERR "DEBUG2: $line\n" if $debug; - next if $line =~ m%\{%; # If there is any compound structure start, - # we are not quite done reading. - $line =~ s%\}%%; # Remove a lonely }, it's probably a rest - # from 'extern "C" {' - $line =~ s%^\s+%%; # Remove beginning blanks - $line =~ s%\s+$%%; # Remove trailing blanks - $line =~ s%\s+% %g; # Collapse multiple blanks to one. - if ($line =~ m/;/) { - print STDERR "DEBUG3: $`\n" if $debug; - my $decl = $`; #`; # (emacs is stupid that way) - $line = $'; #'; # (emacs is stupid that way) - - # Find the symbol by taking the declaration and fiddling with it: - # (remember, we're just extracting the symbol, so we're allowed - # to cheat here ;-)) - # 1. Remove all paired parenthesies, innermost first. While doing - # this, if something like "(* foo)(" is found, this is a - # function pointer; change it to "foo(" - # 2. Remove all paired square parenthesies. - # 3. Remove any $$ with surrounding spaces. - # 4. Pick the last word, that's the symbol. - my $tmp; - my $sym = $decl; - print STDERR "DEBUG3.1: $sym\n" if $debug; - do { - $tmp = $sym; - # NOTE: The order of these two is important, and it's also - # important not to use the g modifier. - $sym =~ s/\(\s*\*\s*(\w+)\s*\)\s*\(/$1(/; - $sym =~ s/\([^\(\)]*\)//; - print STDERR "DEBUG3.2: $sym\n" if $debug; - } while ($tmp ne $sym); - do { - $tmp = $sym; - $sym =~ s/\[[^\[\]]*\]//g; - } while ($tmp ne $sym); - $sym =~ s/\s*\$\$\s*//g; - $sym =~ s/.*[\s\*](\w+)\s*$/$1/; - print STDERR "DEBUG4: $sym\n" if $debug; - if ($sym =~ m/\W/) { - print STDERR "Warning[$fn]: didn't find proper symbol in declaration:\n"; - print STDERR " decl: $decl\n"; - print STDERR " sym: $sym\n"; - } - $declarations{$sym} = $decl; - } - } - return %declarations; -} - -1; diff --git a/fips/tools/api_list.pl b/fips/tools/api_list.pl deleted file mode 100644 index 2102fc2976..0000000000 --- a/fips/tools/api_list.pl +++ /dev/null @@ -1,267 +0,0 @@ -#!/bin/env perl -# -# Quick and dirty utility to help assemble the mandated (but otherwise -# useless) API documentation. We get the list of external function -# symbols from fipscanister.o, pair those with the source file names -# (from ./fips/fipssyms.h), and map to the object file name containing -# them. -# -# Requires the "nm" and "find" utilities. -# Execure from the root of the FIPS module source code workarea - -use HTML::Entities; -use File::Basename; - -$here = dirname($0); -require "$here/api_fns.pm"; - -$_direction_question = ''; # Set to '?' to show "<-?", "<->?" for uncertain directions - -print STDERR "Info: finding FIPS renames and reimplementations of OpenSSL symbols\n"; -# Get mapping of old (source code) to new (live as renamed) symbols -foreach $file ("./fips/fipssyms.h") { - open(IN, $file) || die "Error opening $file"; - # grab pairs until assembler symbols - my $buf = ''; - my $reimplementations = 1; # When 1, we're looking at reimplementations - # (not renames) of OpenSSL functions. They - # still have to be saved to get the API. - while () { - $reimplementations = 0 if m|^\s*/\*\sRename\ssymbols\s|; - - if ($buf) { - $_ = $buf . $_; - $buf = ''; - } - if (s/\\\n$//) { - $buf = $_; - next; - } - if (m/\(/) { - ($oldname, $newname) = m/#define\s+(\S+)\(.*\)\s+(\S+)\(.*\)/; - } else { - ($oldname, $newname) = m/#define\s+(\S+)\s+(\S+)/; - } - - $oldname || next; - if (!$reimplementations) { - $oldname{$newname} = $oldname; - } - $oldimpl{$newname} = $oldname; - last if (/assembler/) - } - close(IN); - # %oldname is the mapping of new function names to old - print "\n"; -} - -print STDERR "Info: finding FIPS symbols in object files\n"; -# generate list of external function names in fipscanister.o -$file = "./fips/fipscanister.o"; -for (`nm -g --defined-only -p -o $file`) { - chomp; - s/^\S+ T // || next; - m/^fips_/ && next; - $fipssyms{$_}++; - $objname =~ s/\.o$/\.\[o\|c\]/; - $objname{$symname} = $objname; -} -# keys %fipssyms is the list of module functions -print "\n"; - -# grab filename to symbol name mapping, each line is of the format -# ./fips/sha/fips_sha1_selftest.o:00000000 T FIPS_selftest_sha1 -# discard the offset and type ":00000000 T". -for (`find . -name '*.o' \\! -name 'fipscanister.o' -exec nm -g --defined-only -p -o {} \\;`) { - ($objname, $symname) = m/^(\S+):\S+\s+T+\s+(\S+)/; - $objname || next; -# $fipssyms{$symname} || next; - $objname =~ s/\.o$/\.\[o\|c\]/; - $objname{$symname} = $objname; - } -# %objname is the mapping of new symbol name to (source/object) file name -print "\n"; - -print STDERR "Info: finding declarations in header files\n"; - -# grab filenames in include/openssl, run each of them through -# get_function_declarations_from_file (defined in api_fns.pl) -# and collect the result. -%declarations = (); -while () { - my %decls = api_data::get_function_declaration_strings_from_file($_); - map { $declarations{$_} = $decls{$_} } keys %decls; -} -# %declarations is the mapping of old symbol name to their declaration -print "\n"; - -# Add the markers FIPS_text_start and FIPS_text_end -$declarations{FIPS_text_start} = "void *FIPS_text_start()"; -$declarations{FIPS_text_end} = "void *FIPS_text_end()"; - - -# Read list of API names obtained from edited "nm -g fipscanister.o" -$spill = 0; -sub printer { - foreach (@_) { - if ($_->{kind} >= 0) { - if ($spill) { - print " " x $indent; - print "kind: ",$_->{kind} ? "function" : "variable","\n"; - print " " x $indent; - print "sym: ",$_->{sym},"\n"; - print " " x $indent; - print "type: ",$_->{type},"\n"; - } - if ($_->{kind}) { - $c = 0; - map { - if ($spill) { - print " " x $indent; - printf "param %d:\n", ++$c; - } - $indent += 2; - printer($_); - my $direction = $_->{direction}; - if (!$_direction_question) { - $direction =~ s/<-\? <->\?/<->/; - $direction =~ s/\?//g; - } - print " " x $indent,$direction," ",$_->{sym},"\n"; - $indent -= 2; - } @{$_->{params}}; - if ($_->{type} !~ m/^\s*void\s*$/) { - print " " x $indent; - print "<- Return\n"; - } - } - } else { - if ($spill) { - print " " x $indent; - print "decl: ",$_->{decl},"\n"; - } - } - } -} - -sub html_printer { - my $print_mode = shift; # 0 = print declaration with symbol in bold, - # call recursively with 1 for each parameter, - # call recursively with 2 for each parameter - # 1 = print declaration with sym grey background, - # call recursivelt with 3 for each parameter - # 2 = just print declaration - my $d = shift; # Parsed declaration - my $s = ''; - - if ($print_mode == 0) { - $d->{sym} || return $s; - my $h = "

\n"; - $h .= $d->{sym} . ($d->{symcomment} ? " " . $d->{symcomment} : ""); - $h .= " in file " . $d->{objfile} . "
\n
\n"; - - $s .= '' . $d->{sym} . ''; - if ($d->{kind} == 1) { - $s .= '('; - $s .= join(', ', - map { - html_printer(1,$_); - } @{$d->{params}}); - $s .= ')'; - } - my $t = $d->{type}; - $t =~ s/\?/$s/; - $s = $t; - if ($d->{kind} == 1) { - map { - my $direction = $_->{direction}; - if (!$_direction_question) { - $direction =~ s/<-\? <->\?/<->/; - $direction =~ s/\?//g; - } - $s .= "
\n"; - $s .= encode_entities($direction - . "\xA0" x (9 - length($direction))); - $s .= $_->{sym}; - } @{$d->{params}}; - } - if ($d->{type} !~ m/^\s*void\s*\?$/) { - $s .= "
\n"; - $s .= encode_entities('<-'.("\xA0" x 7).'Return'); - } - $s = $h . $s; - } elsif ($print_mode == 1) { - $s .= '' . $d->{sym} . ''; - if ($d->{kind} == 1) { - $s .= '('; - $s .= join(', ', - map { - html_printer(3,$_); - } @{$d->{params}}); - $s .= ')'; - } - my $t = $d->{type}; - $t =~ s/\?/$s/; - $s = $t; - } elsif ($print_mode == 2) { - $s .= $d->{sym}; - if ($d->{kind} == 1) { - $s .= '('; - $s .= join(', ', - map { - html_printer(2,$_); - } @{$d->{params}}); - $s .= ')'; - } - my $t = $d->{type}; - $t =~ s/\?/$s/; - $s = $t; - } - return $s; -} - -print STDERR "Info: building/updating symbol information database\n"; - -$d = api_data->new(); -if (-s "$here/declarations.dat") { - $d->read_declaration_db("$here/declarations.dat"); -} else { - print STDERR "Warning: there was no file '$here/declarations.dat'. A new one will be created\n"; -} - -for (sort keys %fipssyms) { - $newname = $_; - $namecomment = undef; - if ($oldname{$newname}) { - $oldname = $oldname{$newname}; - $objname = $objname{$oldname} ? $objname{$oldname} : $objname{$newname}; - $namecomment = "(renames $oldname)"; - } else { - $objname = $objname{$newname}; - } - if ($oldimpl{$newname}) { - $apisym = $oldimpl{$newname}; - $namecomment = "(reimplements $apisym)" if !$namecomment; - } else { - $apisym = $newname; - } - $declaration = $declarations{$apisym}; - print "\n"; -} - -$d->complete_directions(); -$d->write_declaration_db("$here/declarations.dat"); - -print STDERR "Info: printing output\n"; - -$d->on_all_declarations( - sub { - my $decl = shift; - #$indent = 2; - #print printer($decl); - print "

",html_printer(0,$decl),"

\n"; - }); diff --git a/fips/tools/declarations.dat b/fips/tools/declarations.dat deleted file mode 100644 index 7d247bc776..0000000000 --- a/fips/tools/declarations.dat +++ /dev/null @@ -1,7155 +0,0 @@ -my $declaration_db = { - '' => { - 'objfile' => './fips/fipscanister.[o|c]', - 'kind' => -1, - 'decl' => undef, - 'sym' => undef, - 'oldsym' => undef - }, - 'FIPS_rand_strength' => { - 'params' => [], - 'objfile' => './fips/rand/fips_rand_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rand_strength', - 'type' => 'int ?', - 'oldsym' => 'FIPS_rand_strength' - }, - 'FIPS_selftest' => { - 'params' => [], - 'objfile' => './fips/fips_post.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest' - }, - 'FIPS_ec_group_set_asn1_flag' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flag', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_set_asn1_flag)', - 'sym' => 'FIPS_ec_group_set_asn1_flag', - 'type' => 'void ?', - 'oldsym' => 'EC_GROUP_set_asn1_flag' - }, - 'FIPS_drbg_reseed' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'adin', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'adinlen', - 'type' => 'size_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_reseed', - 'type' => 'int ?', - 'oldsym' => 'FIPS_drbg_reseed' - }, - 'FIPS_evp_aes_256_ofb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_ofb)', - 'sym' => 'FIPS_evp_aes_256_ofb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_ofb' - }, - 'FIPS_evp_aes_256_ecb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_ecb)', - 'sym' => 'FIPS_evp_aes_256_ecb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_ecb' - }, - 'FIPS_rsa_new' => { - 'params' => [], - 'objfile' => './fips/rsa/fips_rsa_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rsa_new', - 'type' => 'struct rsa_st *?', - 'oldsym' => 'FIPS_rsa_new' - }, - 'FIPS_x931_reset' => { - 'params' => [], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_x931_reset', - 'type' => 'void ?', - 'oldsym' => 'FIPS_x931_reset' - }, - 'FIPS_set_malloc_callbacks' => { - 'params' => [ - { - 'direction' => '->', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'malloc_cb', - 'type' => 'void *(*?)(int num, const char *file, int line)' - }, - { - 'direction' => '<-? <->?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'free_cb', - 'type' => 'void (*?)(void *)' - } - ], - 'objfile' => './fips/utl/fips_mem.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_set_malloc_callbacks', - 'type' => 'void ?', - 'oldsym' => 'FIPS_set_malloc_callbacks' - }, - 'FIPS_digest' => { - 'objfile' => './fips/utl/fips_md.[o|c]', - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'data', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'count', - 'type' => 'size_t ?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'md', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'size', - 'type' => 'unsigned int *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'type', - 'type' => 'const EVP_MD *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'impl', - 'type' => 'ENGINE *?', - 'oldsym' => undef - } - ], - 'kind' => 1, - 'symcomment' => '(reimplements EVP_Digest)', - 'sym' => 'FIPS_digest', - 'oldsym' => 'EVP_Digest', - 'type' => '__owur int ?' - }, - 'FIPS_evp_aes_128_ctr' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_ctr)', - 'sym' => 'FIPS_evp_aes_128_ctr', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_ctr' - }, - 'FIPS_rsa_flags' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'r', - 'type' => 'const RSA *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_crpt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_flags)', - 'sym' => 'FIPS_rsa_flags', - 'type' => 'int ?', - 'oldsym' => 'RSA_flags' - }, - 'FIPS_set_error_callbacks' => { - 'params' => [ - { - 'direction' => '->', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'put_cb', - 'type' => 'void (*?)(int lib, int func,int reason,const char *file,int line)' - }, - { - 'direction' => '<-?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'add_cb', - 'type' => 'void (*?)(int num, va_list args)' - } - ], - 'objfile' => './fips/utl/fips_err.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_set_error_callbacks', - 'type' => 'void ?', - 'oldsym' => 'FIPS_set_error_callbacks' - }, - 'FIPS_rsa_private_encrypt' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'from', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'to', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'RSA *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'padding', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_crpt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_private_encrypt)', - 'sym' => 'FIPS_rsa_private_encrypt', - 'type' => 'int ?', - 'oldsym' => 'RSA_private_encrypt' - }, - 'FIPS_x931_method' => { - 'params' => [], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_x931_method', - 'type' => 'const RAND_METHOD *?', - 'oldsym' => 'FIPS_x931_method' - }, - 'FIPS_bn_pseudo_rand_range' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rnd', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'range', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_rand.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_pseudo_rand_range)', - 'sym' => 'FIPS_bn_pseudo_rand_range', - 'type' => 'int ?', - 'oldsym' => 'BN_pseudo_rand_range' - }, - 'FIPS_evp_aes_128_gcm' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_gcm)', - 'sym' => 'FIPS_evp_aes_128_gcm', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_gcm' - }, - 'FIPS_evp_aes_192_cbc' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_192_cbc)', - 'sym' => 'FIPS_evp_aes_192_cbc', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_192_cbc' - }, - 'FIPS_evp_ecdsa' => { - 'params' => [], - 'objfile' => './crypto/evp/m_ecdsa.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_ecdsa)', - 'sym' => 'FIPS_evp_ecdsa', - 'type' => 'const EVP_MD *?', - 'oldsym' => 'EVP_ecdsa' - }, - 'FIPS_crypto_set_id_callback' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'func', - 'type' => 'unsigned long (*?)(void)' - } - ], - 'objfile' => './crypto/thr_id.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CRYPTO_set_id_callback)', - 'sym' => 'FIPS_crypto_set_id_callback', - 'type' => 'void ?', - 'oldsym' => 'CRYPTO_set_id_callback' - }, - 'FIPS_bn_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_free)', - 'sym' => 'FIPS_bn_free', - 'type' => 'void ?', - 'oldsym' => 'BN_free' - }, - 'FIPS_ec_key_clear_flags' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flags', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_clear_flags)', - 'sym' => 'FIPS_ec_key_clear_flags', - 'type' => 'void ?', - 'oldsym' => 'EC_KEY_clear_flags' - }, - 'FIPS_cipher_ctx_new' => { - 'params' => [], - 'objfile' => './fips/utl/fips_enc.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_CIPHER_CTX_new)', - 'sym' => 'FIPS_cipher_ctx_new', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => 'EVP_CIPHER_CTX_new' - }, - 'FIPS_bn_clear' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_clear)', - 'sym' => 'FIPS_bn_clear', - 'type' => 'void ?', - 'oldsym' => 'BN_clear' - }, - 'FIPS_dh_compute_key' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'pub_key', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dh', - 'type' => 'DH *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/dh/dh_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DH_compute_key)', - 'sym' => 'FIPS_dh_compute_key', - 'type' => 'int ?', - 'oldsym' => 'DH_compute_key' - }, - 'FIPS_evp_des_ede_ecb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede_ecb)', - 'sym' => 'FIPS_evp_des_ede_ecb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede_ecb' - }, - 'FIPS_ec_group_method_of' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_method_of)', - 'sym' => 'FIPS_ec_group_method_of', - 'type' => 'const EC_METHOD *?', - 'oldsym' => 'EC_GROUP_method_of' - }, - 'FIPS_ec_key_set_private_key' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'prv', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_set_private_key)', - 'sym' => 'FIPS_ec_key_set_private_key', - 'type' => 'int ?', - 'oldsym' => 'EC_KEY_set_private_key' - }, - 'FIPS_ec_key_precompute_mult' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_precompute_mult)', - 'sym' => 'FIPS_ec_key_precompute_mult', - 'type' => 'int ?', - 'oldsym' => 'EC_KEY_precompute_mult' - }, - 'FIPS_add_error_data' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'num', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => '...', - 'type' => '?' - } - ], - 'objfile' => './fips/utl/fips_err.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements ERR_add_error_data)', - 'sym' => 'FIPS_add_error_data', - 'type' => 'void ?', - 'oldsym' => 'ERR_add_error_data' - }, - 'FIPS_drbg_uninstantiate' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_uninstantiate', - 'type' => 'int ?', - 'oldsym' => 'FIPS_drbg_uninstantiate' - }, - 'FIPS_dh_generate_key' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dh', - 'type' => 'DH *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/dh/dh_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DH_generate_key)', - 'sym' => 'FIPS_dh_generate_key', - 'type' => 'int ?', - 'oldsym' => 'DH_generate_key' - }, - 'FIPS_bn_num_bits_word' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'l', - 'type' => 'BN_ULONG ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_num_bits_word)', - 'sym' => 'FIPS_bn_num_bits_word', - 'type' => 'int ?', - 'oldsym' => 'BN_num_bits_word' - }, - 'FIPS_cmac_final' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'CMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'out', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'poutlen', - 'type' => 'size_t *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/cmac/cmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CMAC_Final)', - 'sym' => 'FIPS_cmac_final', - 'type' => 'int ?', - 'oldsym' => 'CMAC_Final' - }, - 'FIPS_bn_set_bit' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'n', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_set_bit)', - 'sym' => 'FIPS_bn_set_bit', - 'type' => 'int ?', - 'oldsym' => 'BN_set_bit' - }, - 'FIPS_selftest_des' => { - 'params' => [], - 'objfile' => './fips/des/fips_des_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_des', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_des' - }, - 'FIPS_cipher_ctx_init' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_enc.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_CIPHER_CTX_init)', - 'sym' => 'FIPS_cipher_ctx_init', - 'type' => 'void ?', - 'oldsym' => 'EVP_CIPHER_CTX_init' - }, - 'FIPS_ec_point_get_affine_coordinates_gf2m' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'x', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'y', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_get_affine_coordinates_GF2m)', - 'sym' => 'FIPS_ec_point_get_affine_coordinates_gf2m', - 'type' => 'int ?', - 'oldsym' => 'EC_POINT_get_affine_coordinates_GF2m' - }, - 'FIPS_dh_generate_parameters_ex' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dh', - 'type' => 'DH *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'prime_len', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'generator', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/dh/dh_gen.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DH_generate_parameters_ex)', - 'sym' => 'FIPS_dh_generate_parameters_ex', - 'type' => 'int ?', - 'oldsym' => 'DH_generate_parameters_ex' - }, - 'FIPS_evp_aes_256_xts' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_xts)', - 'sym' => 'FIPS_evp_aes_256_xts', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_xts' - }, - 'FIPS_drbg_instantiate' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'pers', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'perslen', - 'type' => 'size_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_instantiate', - 'type' => 'int ?', - 'oldsym' => 'FIPS_drbg_instantiate' - }, - 'FIPS_dsa_sign_digest' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dsa', - 'type' => 'DSA *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dig', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dlen', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/dsa/fips_dsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_dsa_sign_digest', - 'type' => 'DSA_SIG * ?', - 'oldsym' => 'FIPS_dsa_sign_digest' - }, - 'FIPS_drbg_init' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'type', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flags', - 'type' => 'unsigned int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_init', - 'type' => 'int ?', - 'oldsym' => 'FIPS_drbg_init' - }, - 'FIPS_x931_seed' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'buf', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'num', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_x931_seed', - 'type' => 'int ?', - 'oldsym' => 'FIPS_x931_seed' - }, - 'FIPS_drbg_set_check_interval' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'interval', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_set_check_interval', - 'type' => 'void ?', - 'oldsym' => 'FIPS_drbg_set_check_interval' - }, - 'FIPS_module_mode_set' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'onoff', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/fips.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_module_mode_set', - 'type' => 'int ?', - 'oldsym' => 'FIPS_module_mode_set' - }, - 'FIPS_cipher_ctx_set_key_length' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'x', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'keylen', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_enc.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_CIPHER_CTX_set_key_length)', - 'sym' => 'FIPS_cipher_ctx_set_key_length', - 'type' => 'int ?', - 'oldsym' => 'EVP_CIPHER_CTX_set_key_length' - }, - 'FIPS_rand_set_method' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'meth', - 'type' => 'const RAND_METHOD *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rand_set_method', - 'type' => 'int ?', - 'oldsym' => 'FIPS_rand_set_method' - }, - 'FIPS_post_set_callback' => { - 'params' => [ - { - 'direction' => '<-?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'post_cb', - 'type' => 'int (*?)(int op, int id, int subid, void *ex)' - } - ], - 'objfile' => './fips/fips_post.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_post_set_callback', - 'type' => 'void ?', - 'oldsym' => 'FIPS_post_set_callback' - }, - 'FIPS_crypto_threadid_hash' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'id', - 'type' => 'const CRYPTO_THREADID *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/thr_id.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CRYPTO_THREADID_hash)', - 'sym' => 'FIPS_crypto_threadid_hash', - 'type' => 'unsigned long ?', - 'oldsym' => 'CRYPTO_THREADID_hash' - }, - 'FIPS_ecdsa_sig_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'sig', - 'type' => 'ECDSA_SIG *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/ecdsa/fips_ecdsa_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements ECDSA_SIG_free)', - 'sym' => 'FIPS_ecdsa_sig_free', - 'type' => 'void ?', - 'oldsym' => 'ECDSA_SIG_free' - }, - 'FIPS_bn_rand' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rnd', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'bits', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'top', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'bottom', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_rand.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_rand)', - 'sym' => 'FIPS_bn_rand', - 'type' => 'int ?', - 'oldsym' => 'BN_rand' - }, - 'FIPS_evp_des_ede3_cfb8' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede3_cfb8)', - 'sym' => 'FIPS_evp_des_ede3_cfb8', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede3_cfb8' - }, - 'FIPS_hmac_final' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'HMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'md', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'len', - 'type' => 'unsigned int *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/hmac/hmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames HMAC_Final)', - 'sym' => 'FIPS_hmac_final', - 'type' => '__owur int ?', - 'oldsym' => 'HMAC_Final' - }, - 'FIPS_bn_bn2bin' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'to', - 'type' => 'unsigned char *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_bn2bin)', - 'sym' => 'FIPS_bn_bn2bin', - 'type' => 'int ?', - 'oldsym' => 'BN_bn2bin' - }, - 'FIPS_bn_bin2bn' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 's', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'len', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ret', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_bin2bn)', - 'sym' => 'FIPS_bn_bin2bn', - 'type' => 'BIGNUM *?', - 'oldsym' => 'BN_bin2bn' - }, - 'FIPS_evp_aes_192_cfb128' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_192_cfb128)', - 'sym' => 'FIPS_evp_aes_192_cfb128', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_192_cfb128' - }, - 'FIPS_ec_group_set_curve_name' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'nid', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_set_curve_name)', - 'sym' => 'FIPS_ec_group_set_curve_name', - 'type' => 'void ?', - 'oldsym' => 'EC_GROUP_set_curve_name' - }, - 'FIPS_ec_group_new' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'meth', - 'type' => 'const EC_METHOD *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_new)', - 'sym' => 'FIPS_ec_group_new', - 'type' => 'EC_GROUP *?', - 'oldsym' => 'EC_GROUP_new' - }, - 'FIPS_rand_pseudo_bytes' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'buf', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'num', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements RAND_pseudo_bytes)', - 'sym' => 'FIPS_rand_pseudo_bytes', - 'type' => 'int ?', - 'oldsym' => 'RAND_pseudo_bytes' - }, - 'FIPS_evp_aes_192_ofb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_192_ofb)', - 'sym' => 'FIPS_evp_aes_192_ofb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_192_ofb' - }, - 'FIPS_selftest_sha1' => { - 'params' => [], - 'objfile' => './fips/sha/fips_sha1_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_sha1', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_sha1' - }, - 'FIPS_bn_num_bits' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_num_bits)', - 'sym' => 'FIPS_bn_num_bits', - 'type' => 'int ?', - 'oldsym' => 'BN_num_bits' - }, - 'FIPS_selftest_aes_gcm' => { - 'params' => [], - 'objfile' => './fips/aes/fips_aes_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_aes_gcm', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_aes_gcm' - }, - 'FIPS_ecdsa_verify_ctx' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 's', - 'type' => 'ECDSA_SIG *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/ecdsa/fips_ecdsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_ecdsa_verify_ctx', - 'type' => 'int ?', - 'oldsym' => 'FIPS_ecdsa_verify_ctx' - }, - 'FIPS_ec_group_new_curve_gf2m' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'b', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_cvt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_new_curve_GF2m)', - 'sym' => 'FIPS_ec_group_new_curve_gf2m', - 'type' => 'EC_GROUP *?', - 'oldsym' => 'EC_GROUP_new_curve_GF2m' - }, - 'FIPS_evp_sha224' => { - 'params' => [], - 'objfile' => './crypto/evp/m_sha1.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_sha224)', - 'sym' => 'FIPS_evp_sha224', - 'type' => 'const EVP_MD *?', - 'oldsym' => 'EVP_sha224' - }, - 'FIPS_malloc' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'num', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'file', - 'type' => 'const char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'line', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_mem.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements CRYPTO_malloc)', - 'sym' => 'FIPS_malloc', - 'type' => 'void *?', - 'oldsym' => 'CRYPTO_malloc' - }, - 'FIPS_dsa_sig_new' => { - 'params' => [], - 'objfile' => './fips/dsa/fips_dsa_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements DSA_SIG_new)', - 'sym' => 'FIPS_dsa_sig_new', - 'type' => 'DSA_SIG * ?', - 'oldsym' => 'DSA_SIG_new' - }, - 'FIPS_evp_aes_192_ctr' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_192_ctr)', - 'sym' => 'FIPS_evp_aes_192_ctr', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_192_ctr' - }, - 'FIPS_x931_bytes' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'out', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'outlen', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_x931_bytes', - 'type' => 'int ?', - 'oldsym' => 'FIPS_x931_bytes' - }, - 'FIPS_evp_des_ede_cbc' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede_cbc)', - 'sym' => 'FIPS_evp_des_ede_cbc', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede_cbc' - }, - 'FIPS_selftest_aes_ccm' => { - 'params' => [], - 'objfile' => './fips/aes/fips_aes_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_aes_ccm', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_aes_ccm' - }, - 'FIPS_md_ctx_destroy' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_md.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_MD_CTX_destroy)', - 'sym' => 'FIPS_md_ctx_destroy', - 'type' => 'void ?', - 'oldsym' => 'EVP_MD_CTX_destroy' - }, - 'FIPS_ec_group_get_curve_gf2m' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'b', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_get_curve_GF2m)', - 'sym' => 'FIPS_ec_group_get_curve_gf2m', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_get_curve_GF2m' - }, - 'FIPS_ec_group_get_curve_name' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_get_curve_name)', - 'sym' => 'FIPS_ec_group_get_curve_name', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_get_curve_name' - }, - 'FIPS_ec_group_set_curve_gf2m' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'b', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_set_curve_GF2m)', - 'sym' => 'FIPS_ec_group_set_curve_gf2m', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_set_curve_GF2m' - }, - 'FIPS_cipher_ctx_copy' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'out', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'in', - 'type' => 'const EVP_CIPHER_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_enc.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_CIPHER_CTX_copy)', - 'sym' => 'FIPS_cipher_ctx_copy', - 'type' => 'int ?', - 'oldsym' => 'EVP_CIPHER_CTX_copy' - }, - 'FIPS_drbg_set_rand_callbacks' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'get_adin', - 'type' => 'size_t (*?)(DRBG_CTX *ctx, unsigned char **pout)' - }, - { - 'direction' => '<-?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cleanup_adin', - 'type' => 'void (*?)(DRBG_CTX *ctx, unsigned char *out, size_t olen)' - }, - { - 'direction' => '->', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rand_seed_cb', - 'type' => 'int (*?)(DRBG_CTX *ctx, const void *buf, int num)' - }, - { - 'direction' => '->', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rand_add_cb', - 'type' => 'int (*?)(DRBG_CTX *ctx, const void *buf, int num, double entropy)' - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_set_rand_callbacks', - 'type' => 'int ?', - 'oldsym' => 'FIPS_drbg_set_rand_callbacks' - }, - 'FIPS_selftest_rsa' => { - 'params' => [], - 'objfile' => './fips/rsa/fips_rsa_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_rsa', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_rsa' - }, - 'FIPS_ec_group_get_curve_gfp' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'b', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_get_curve_GFp)', - 'sym' => 'FIPS_ec_group_get_curve_gfp', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_get_curve_GFp' - }, - 'FIPS_bn_rand_range' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rnd', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'range', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_rand.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_rand_range)', - 'sym' => 'FIPS_bn_rand_range', - 'type' => 'int ?', - 'oldsym' => 'BN_rand_range' - }, - 'FIPS_dsa_generate_parameters_ex' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dsa', - 'type' => 'DSA *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'bits', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'seed', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'seed_len', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'counter_ret', - 'type' => 'int *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'h_ret', - 'type' => 'unsigned long *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/dsa/dsa_gen.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DSA_generate_parameters_ex)', - 'sym' => 'FIPS_dsa_generate_parameters_ex', - 'type' => 'int ?', - 'oldsym' => 'DSA_generate_parameters_ex' - }, - 'FIPS_rand_get_method' => { - 'params' => [], - 'objfile' => './fips/rand/fips_rand_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rand_get_method', - 'type' => 'const RAND_METHOD *?', - 'oldsym' => 'FIPS_rand_get_method' - }, - 'FIPS_rsa_x931_generate_key_ex' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'RSA *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'bits', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'e', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_x931g.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_X931_generate_key_ex)', - 'sym' => 'FIPS_rsa_x931_generate_key_ex', - 'type' => 'int ?', - 'oldsym' => 'RSA_X931_generate_key_ex' - }, - 'FIPS_ec_key_set_asn1_flag' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'eckey', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'asn1_flag', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_set_asn1_flag)', - 'sym' => 'FIPS_ec_key_set_asn1_flag', - 'type' => 'void ?', - 'oldsym' => 'EC_KEY_set_asn1_flag' - }, - 'FIPS_ec_key_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_free)', - 'sym' => 'FIPS_ec_key_free', - 'type' => 'void ?', - 'oldsym' => 'EC_KEY_free' - }, - 'FIPS_put_error' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'lib', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'func', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'reason', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'file', - 'type' => 'const char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'line', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_err.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements ERR_put_error)', - 'sym' => 'FIPS_put_error', - 'type' => 'void ?', - 'oldsym' => 'ERR_put_error' - }, - 'FIPS_get_timevec' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'buf', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'pctr', - 'type' => 'unsigned long *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_get_timevec', - 'type' => 'void ?', - 'oldsym' => 'FIPS_get_timevec' - }, - 'FIPS_dsa_verify_ctx' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dsa', - 'type' => 'DSA *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 's', - 'type' => 'DSA_SIG *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/dsa/fips_dsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_dsa_verify_ctx', - 'type' => 'int ?', - 'oldsym' => 'FIPS_dsa_verify_ctx' - }, - 'FIPS_cmac_update' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'CMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'data', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dlen', - 'type' => 'size_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/cmac/cmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CMAC_Update)', - 'sym' => 'FIPS_cmac_update', - 'type' => 'int ?', - 'oldsym' => 'CMAC_Update' - }, - 'FIPS_ec_key_set_flags' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flags', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_set_flags)', - 'sym' => 'FIPS_ec_key_set_flags', - 'type' => 'void ?', - 'oldsym' => 'EC_KEY_set_flags' - }, - 'FIPS_set_locking_callbacks' => { - 'params' => [ - { - 'direction' => '->', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'func', - 'type' => 'void (*?)(int mode, int type, const char *file,int line)' - }, - { - 'direction' => '->', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'add_cb', - 'type' => 'int (*?)(int *pointer, int amount, int type, const char *file, int line)' - } - ], - 'objfile' => './fips/utl/fips_lck.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_set_locking_callbacks', - 'type' => 'void ?', - 'oldsym' => 'FIPS_set_locking_callbacks' - }, - 'FIPS_crypto_threadid_get_callback' => { - 'params' => [], - 'objfile' => './crypto/thr_id.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CRYPTO_THREADID_get_callback)', - 'sym' => 'FIPS_crypto_threadid_get_callback', - 'type' => 'void (*?)(CRYPTO_THREADID *)', - 'oldsym' => undef - }, - 'FIPS_ec_key_up_ref' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_up_ref)', - 'sym' => 'FIPS_ec_key_up_ref', - 'type' => 'int ?', - 'oldsym' => 'EC_KEY_up_ref' - }, - 'FIPS_evp_sha1' => { - 'params' => [], - 'objfile' => './crypto/evp/m_sha1.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_sha1)', - 'sym' => 'FIPS_evp_sha1', - 'type' => 'const EVP_MD *?', - 'oldsym' => 'EVP_sha1' - }, - 'FIPS_hmac_ctx_copy' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'HMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'sctx', - 'type' => 'HMAC_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/hmac/hmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames HMAC_CTX_copy)', - 'sym' => 'FIPS_hmac_ctx_copy', - 'type' => '__owur int ?', - 'oldsym' => 'HMAC_CTX_copy' - }, - 'FIPS_rsa_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'r', - 'type' => 'struct rsa_st *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rsa/fips_rsa_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rsa_free', - 'type' => 'void ?', - 'oldsym' => 'FIPS_rsa_free' - }, - 'FIPS_ecdh_openssl' => { - 'params' => [], - 'objfile' => './crypto/ecdh/ech_ossl.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames ECDH_OpenSSL)', - 'sym' => 'FIPS_ecdh_openssl', - 'type' => 'const ECDH_METHOD *?', - 'oldsym' => 'ECDH_OpenSSL' - }, - 'FIPS_bn_get_word' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_get_word)', - 'sym' => 'FIPS_bn_get_word', - 'type' => 'BN_ULONG ?', - 'oldsym' => 'BN_get_word' - }, - 'FIPS_ec_point_get_affine_coordinates_gfp' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'x', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'y', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_get_affine_coordinates_GFp)', - 'sym' => 'FIPS_ec_point_get_affine_coordinates_gfp', - 'type' => 'int ?', - 'oldsym' => 'EC_POINT_get_affine_coordinates_GFp' - }, - 'FIPS_crypto_thread_id' => { - 'params' => [], - 'objfile' => './crypto/thr_id.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CRYPTO_thread_id)', - 'sym' => 'FIPS_crypto_thread_id', - 'type' => 'unsigned long ?', - 'oldsym' => 'CRYPTO_thread_id' - }, - 'FIPS_ec_group_set_generator' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'generator', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'order', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cofactor', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_set_generator)', - 'sym' => 'FIPS_ec_group_set_generator', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_set_generator' - }, - 'FIPS_ec_key_get_flags' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_get_flags)', - 'sym' => 'FIPS_ec_key_get_flags', - 'type' => 'int ?', - 'oldsym' => 'EC_KEY_get_flags' - }, - 'FIPS_rsa_verify_digest' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'struct rsa_st *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dig', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'diglen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'mhash', - 'type' => 'const struct env_md_st *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa_pad_mode', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'saltlen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'mgf1Hash', - 'type' => 'const struct env_md_st *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'sigbuf', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'siglen', - 'type' => 'unsigned int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rsa/fips_rsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rsa_verify_digest', - 'type' => 'int ?', - 'oldsym' => 'FIPS_rsa_verify_digest' - }, - 'FIPS_digestupdate' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'd', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cnt', - 'type' => 'size_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_md.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_DigestUpdate)', - 'sym' => 'FIPS_digestupdate', - 'type' => '__owur int ?', - 'oldsym' => 'EVP_DigestUpdate' - }, - 'FIPS_rsa_public_encrypt' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'from', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'to', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'RSA *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'padding', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_crpt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_public_encrypt)', - 'sym' => 'FIPS_rsa_public_encrypt', - 'type' => 'int ?', - 'oldsym' => 'RSA_public_encrypt' - }, - 'FIPS_ec_key_new' => { - 'params' => [], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_new)', - 'sym' => 'FIPS_ec_key_new', - 'type' => 'EC_KEY *?', - 'oldsym' => 'EC_KEY_new' - }, - 'FIPS_ec_group_get_degree' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_get_degree)', - 'sym' => 'FIPS_ec_group_get_degree', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_get_degree' - }, - 'FIPS_rand_bytes' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'buf', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'num', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements RAND_bytes)', - 'sym' => 'FIPS_rand_bytes', - 'type' => 'int ?', - 'oldsym' => 'RAND_bytes' - }, - 'FIPS_evp_des_ede_ofb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede_ofb)', - 'sym' => 'FIPS_evp_des_ede_ofb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede_ofb' - }, - 'FIPS_bn_x931_generate_xpq' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xq', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'nbits', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_x931p.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_X931_generate_Xpq)', - 'sym' => 'FIPS_bn_x931_generate_xpq', - 'type' => 'int ?', - 'oldsym' => 'BN_X931_generate_Xpq' - }, - 'FIPS_x931_test_mode' => { - 'params' => [], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_x931_test_mode', - 'type' => 'int ?', - 'oldsym' => 'FIPS_x931_test_mode' - }, - 'FIPS_md_ctx_init' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_md.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_MD_CTX_init)', - 'sym' => 'FIPS_md_ctx_init', - 'type' => 'void ?', - 'oldsym' => 'EVP_MD_CTX_init' - }, - 'FIPS_selftest_check' => { - 'params' => [], - 'objfile' => './fips/fips.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_check', - 'type' => 'void ?', - 'oldsym' => 'FIPS_selftest_check' - }, - 'FIPS_text_start' => { - 'params' => [], - 'objfile' => './fips/fips_start.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_text_start', - 'type' => 'void *?', - 'oldsym' => 'FIPS_text_start' - }, - 'FIPS_rsa_private_decrypt' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'from', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'to', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'RSA *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'padding', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_crpt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_private_decrypt)', - 'sym' => 'FIPS_rsa_private_decrypt', - 'type' => 'int ?', - 'oldsym' => 'RSA_private_decrypt' - }, - 'FIPS_evp_des_ede_cfb64' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede_cfb64)', - 'sym' => 'FIPS_evp_des_ede_cfb64', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede_cfb64' - }, - 'FIPS_des_check_key_parity' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const_DES_cblock *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/des/set_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DES_check_key_parity)', - 'sym' => 'FIPS_des_check_key_parity', - 'type' => 'int ?', - 'oldsym' => 'DES_check_key_parity' - }, - 'FIPS_dh_check_pub_key' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dh', - 'type' => 'const DH *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'pub_key', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'codes', - 'type' => 'int *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/dh/dh_check.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DH_check_pub_key)', - 'sym' => 'FIPS_dh_check_pub_key', - 'type' => 'int ?', - 'oldsym' => 'DH_check_pub_key' - }, - 'FIPS_cmac_resume' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'CMAC_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/cmac/cmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CMAC_resume)', - 'sym' => 'FIPS_cmac_resume', - 'type' => 'int ?', - 'oldsym' => 'CMAC_resume' - }, - 'FIPS_evp_des_ede' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede)', - 'sym' => 'FIPS_evp_des_ede', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede' - }, - 'FIPS_evp_aes_192_gcm' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_192_gcm)', - 'sym' => 'FIPS_evp_aes_192_gcm', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_192_gcm' - }, - 'FIPS_evp_aes_128_cbc' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_cbc)', - 'sym' => 'FIPS_evp_aes_128_cbc', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_cbc' - }, - 'FIPS_ec_key_get0_public_key' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_get0_public_key)', - 'sym' => 'FIPS_ec_key_get0_public_key', - 'type' => 'const EC_POINT *?', - 'oldsym' => 'EC_KEY_get0_public_key' - }, - 'FIPS_cmac_ctx_new' => { - 'params' => [], - 'objfile' => './crypto/cmac/cmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CMAC_CTX_new)', - 'sym' => 'FIPS_cmac_ctx_new', - 'type' => 'CMAC_CTX *?', - 'oldsym' => 'CMAC_CTX_new' - }, - 'FIPS_ec_group_new_by_curve_name' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'nid', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_curve.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_new_by_curve_name)', - 'sym' => 'FIPS_ec_group_new_by_curve_name', - 'type' => 'EC_GROUP *?', - 'oldsym' => 'EC_GROUP_new_by_curve_name' - }, - 'FIPS_ec_point_get_jprojective_coordinates_gfp' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'x', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'y', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'z', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_get_Jprojective_coordinates_GFp)', - 'sym' => 'FIPS_ec_point_get_jprojective_coordinates_gfp', - 'type' => 'int ?', - 'oldsym' => 'EC_POINT_get_Jprojective_coordinates_GFp' - }, - 'FIPS_rsa_blinding_on' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'RSA *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_crpt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_blinding_on)', - 'sym' => 'FIPS_rsa_blinding_on', - 'type' => 'int ?', - 'oldsym' => 'RSA_blinding_on' - }, - 'FIPS_ec_key_set_group' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_set_group)', - 'sym' => 'FIPS_ec_key_set_group', - 'type' => 'int ?', - 'oldsym' => 'EC_KEY_set_group' - }, - 'FIPS_openssl_showfatal' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'fmta', - 'type' => 'const char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => '...', - 'type' => '?' - } - ], - 'objfile' => './crypto/cryptlib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames OPENSSL_showfatal)', - 'sym' => 'FIPS_openssl_showfatal', - 'type' => 'void ?', - 'oldsym' => 'OPENSSL_showfatal' - }, - 'FIPS_dsa_generate_key' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'DSA *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/dsa/dsa_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DSA_generate_key)', - 'sym' => 'FIPS_dsa_generate_key', - 'type' => 'int ?', - 'oldsym' => 'DSA_generate_key' - }, - 'FIPS_crypto_threadid_set_callback' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'threadid_func', - 'type' => 'void (*?)(CRYPTO_THREADID *)' - } - ], - 'objfile' => './crypto/thr_id.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CRYPTO_THREADID_set_callback)', - 'sym' => 'FIPS_crypto_threadid_set_callback', - 'type' => 'int ?', - 'oldsym' => 'CRYPTO_THREADID_set_callback' - }, - 'FIPS_selftest_x931' => { - 'params' => [], - 'objfile' => './fips/rand/fips_rand_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_x931', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_x931' - }, - 'FIPS_bn_is_prime_ex' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'nchecks', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_prime.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_is_prime_ex)', - 'sym' => 'FIPS_bn_is_prime_ex', - 'type' => 'int ?', - 'oldsym' => 'BN_is_prime_ex' - }, - 'FIPS_rsa_public_decrypt' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'from', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'to', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'RSA *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'padding', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_crpt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_public_decrypt)', - 'sym' => 'FIPS_rsa_public_decrypt', - 'type' => 'int ?', - 'oldsym' => 'RSA_public_decrypt' - }, - 'FIPS_openssldie' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'file', - 'type' => 'const char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'line', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'assertion', - 'type' => 'const char *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/cryptlib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames OpenSSLDie)', - 'sym' => 'FIPS_openssldie', - 'type' => 'void ?', - 'oldsym' => 'OpenSSLDie' - }, - 'FIPS_dh_compute_key_padded' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'pub_key', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dh', - 'type' => 'DH *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/dh/dh_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DH_compute_key_padded)', - 'sym' => 'FIPS_dh_compute_key_padded', - 'type' => 'int ?', - 'oldsym' => 'DH_compute_key_padded' - }, - 'FIPS_evp_aes_128_cfb128' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_cfb128)', - 'sym' => 'FIPS_evp_aes_128_cfb128', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_cfb128' - }, - 'FIPS_bn_is_bit_set' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'n', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_is_bit_set)', - 'sym' => 'FIPS_bn_is_bit_set', - 'type' => 'int ?', - 'oldsym' => 'BN_is_bit_set' - }, - 'FIPS_ec_point_clear_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'point', - 'type' => 'EC_POINT *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_clear_free)', - 'sym' => 'FIPS_ec_point_clear_free', - 'type' => 'void ?', - 'oldsym' => 'EC_POINT_clear_free' - }, - 'FIPS_evp_des_ede3_cfb64' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede3_cfb64)', - 'sym' => 'FIPS_evp_des_ede3_cfb64', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede3_cfb64' - }, - 'FIPS_rsa_x931_derive_ex' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'RSA *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p1', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p2', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'q1', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'q2', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp1', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp2', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xq1', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xq2', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xq', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'e', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_x931g.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_X931_derive_ex)', - 'sym' => 'FIPS_rsa_x931_derive_ex', - 'type' => 'int ?', - 'oldsym' => 'RSA_X931_derive_ex' - }, - 'FIPS_ec_method_get_field_type' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'meth', - 'type' => 'const EC_METHOD *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_METHOD_get_field_type)', - 'sym' => 'FIPS_ec_method_get_field_type', - 'type' => 'int ?', - 'oldsym' => 'EC_METHOD_get_field_type' - }, - 'FIPS_evp_sha384' => { - 'params' => [], - 'objfile' => './crypto/evp/m_sha1.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_sha384)', - 'sym' => 'FIPS_evp_sha384', - 'type' => 'const EVP_MD *?', - 'oldsym' => 'EVP_sha384' - }, - 'FIPS_dh_new' => { - 'params' => [], - 'objfile' => './fips/dh/fips_dh_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_dh_new', - 'type' => 'DH * ?', - 'oldsym' => 'FIPS_dh_new' - }, - 'FIPS_ec_group_get0_generator' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_get0_generator)', - 'sym' => 'FIPS_ec_group_get0_generator', - 'type' => 'const EC_POINT *?', - 'oldsym' => 'EC_GROUP_get0_generator' - }, - 'FIPS_hmac_ctx_init' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'HMAC_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/hmac/hmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames HMAC_CTX_init)', - 'sym' => 'FIPS_hmac_ctx_init', - 'type' => 'void ?', - 'oldsym' => 'HMAC_CTX_init' - }, - 'FIPS_cipher_ctx_free' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_enc.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_CIPHER_CTX_free)', - 'sym' => 'FIPS_cipher_ctx_free', - 'type' => 'void ?', - 'oldsym' => 'EVP_CIPHER_CTX_free' - }, - 'FIPS_ec_key_get0_group' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_get0_group)', - 'sym' => 'FIPS_ec_key_get0_group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => 'EC_KEY_get0_group' - }, - 'FIPS_crypto_threadid_set_numeric' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'id', - 'type' => 'CRYPTO_THREADID *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'val', - 'type' => 'unsigned long ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/thr_id.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CRYPTO_THREADID_set_numeric)', - 'sym' => 'FIPS_crypto_threadid_set_numeric', - 'type' => 'void ?', - 'oldsym' => 'CRYPTO_THREADID_set_numeric' - }, - 'FIPS_evp_dss1' => { - 'params' => [], - 'objfile' => './crypto/evp/m_dss1.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_dss1)', - 'sym' => 'FIPS_evp_dss1', - 'type' => 'const EVP_MD *?', - 'oldsym' => 'EVP_dss1' - }, - 'FIPS_ec_point_is_at_infinity' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_is_at_infinity)', - 'sym' => 'FIPS_ec_point_is_at_infinity', - 'type' => 'int ?', - 'oldsym' => 'EC_POINT_is_at_infinity' - }, - 'FIPS_ec_key_set_public_key' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'pub', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_set_public_key)', - 'sym' => 'FIPS_ec_key_set_public_key', - 'type' => 'int ?', - 'oldsym' => 'EC_KEY_set_public_key' - }, - 'FIPS_ec_group_get_cofactor' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cofactor', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_get_cofactor)', - 'sym' => 'FIPS_ec_group_get_cofactor', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_get_cofactor' - }, - 'FIPS_evp_aes_256_gcm' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_gcm)', - 'sym' => 'FIPS_evp_aes_256_gcm', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_gcm' - }, - 'FIPS_evp_aes_128_ccm' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_ccm)', - 'sym' => 'FIPS_evp_aes_128_ccm', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_ccm' - }, - 'FIPS_ec_group_get0_seed' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'x', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_get0_seed)', - 'sym' => 'FIPS_ec_group_get0_seed', - 'type' => 'unsigned char *?', - 'oldsym' => 'EC_GROUP_get0_seed' - }, - 'FIPS_selftest_aes' => { - 'params' => [], - 'objfile' => './fips/aes/fips_aes_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_aes', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_aes' - }, - 'FIPS_drbg_get_strength' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_get_strength', - 'type' => 'int ?', - 'oldsym' => 'FIPS_drbg_get_strength' - }, - 'FIPS_drbg_get_blocklength' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_get_blocklength', - 'type' => 'size_t ?', - 'oldsym' => 'FIPS_drbg_get_blocklength' - }, - 'FIPS_rsa_sign_digest' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'struct rsa_st *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'md', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'md_len', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'mhash', - 'type' => 'const struct env_md_st *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa_pad_mode', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'saltlen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'mgf1Hash', - 'type' => 'const struct env_md_st *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'sigret', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'siglen', - 'type' => 'unsigned int *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rsa/fips_rsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rsa_sign_digest', - 'type' => 'int ?', - 'oldsym' => 'FIPS_rsa_sign_digest' - }, - 'FIPS_ec_key_set_public_key_affine_coordinates' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'x', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'y', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_set_public_key_affine_coordinates)', - 'sym' => 'FIPS_ec_key_set_public_key_affine_coordinates', - 'type' => 'int ?', - 'oldsym' => 'EC_KEY_set_public_key_affine_coordinates' - }, - 'FIPS_selftest_hmac' => { - 'params' => [], - 'objfile' => './fips/hmac/fips_hmac_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_hmac', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_hmac' - }, - 'FIPS_evp_des_ede3' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede3)', - 'sym' => 'FIPS_evp_des_ede3', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede3' - }, - 'FIPS_ecdsa_openssl' => { - 'params' => [], - 'objfile' => './crypto/ecdsa/ecs_ossl.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames ECDSA_OpenSSL)', - 'sym' => 'FIPS_ecdsa_openssl', - 'type' => 'const ECDSA_METHOD *?', - 'oldsym' => 'ECDSA_OpenSSL' - }, - 'FIPS_ec_get_builtin_curves' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'r', - 'type' => 'EC_builtin_curve *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'nitems', - 'type' => 'size_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_curve.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_get_builtin_curves)', - 'sym' => 'FIPS_ec_get_builtin_curves', - 'type' => 'size_t ?', - 'oldsym' => 'EC_get_builtin_curves' - }, - 'FIPS_module_version' => { - 'params' => [], - 'objfile' => './fips/fips.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_module_version', - 'type' => 'unsigned long ?', - 'oldsym' => 'FIPS_module_version' - }, - 'FIPS_free' => { - 'params' => [ - { - 'objfile' => undef, - 'direction' => '<-? <->?', - 'kind' => 0, - 'sym' => 'ptr', - 'oldsym' => undef, - 'type' => 'void *?' - } - ], - 'objfile' => './fips/utl/fips_mem.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements CRYPTO_free)', - 'sym' => 'FIPS_free', - 'type' => 'void ?', - 'oldsym' => 'CRYPTO_free' - }, - 'FIPS_rand_status' => { - 'params' => [], - 'objfile' => './fips/rand/fips_rand_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements RAND_status)', - 'sym' => 'FIPS_rand_status', - 'type' => 'int ?', - 'oldsym' => 'RAND_status' - }, - 'FIPS_bn_x931_derive_prime_ex' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p1', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p2', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp1', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp2', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'e', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_x931p.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_X931_derive_prime_ex)', - 'sym' => 'FIPS_bn_x931_derive_prime_ex', - 'type' => 'int ?', - 'oldsym' => 'BN_X931_derive_prime_ex' - }, - 'FIPS_ecdsa_sig_new' => { - 'params' => [], - 'objfile' => './fips/ecdsa/fips_ecdsa_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements ECDSA_SIG_new)', - 'sym' => 'FIPS_ecdsa_sig_new', - 'type' => 'ECDSA_SIG *?', - 'oldsym' => 'ECDSA_SIG_new' - }, - 'FIPS_ecdsa_verify_digest' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dig', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dlen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 's', - 'type' => 'ECDSA_SIG *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ecdsa/ecs_ossl.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_ecdsa_verify_digest', - 'type' => 'int ?', - 'oldsym' => 'FIPS_ecdsa_verify_digest' - }, - 'FIPS_cmac_init' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'CMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'keylen', - 'type' => 'size_t ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cipher', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'impl', - 'type' => 'ENGINE *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/cmac/cmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CMAC_Init)', - 'sym' => 'FIPS_cmac_init', - 'type' => 'int ?', - 'oldsym' => 'CMAC_Init' - }, - 'FIPS_ec_key_dup' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'src', - 'type' => 'const EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_dup)', - 'sym' => 'FIPS_ec_key_dup', - 'type' => 'EC_KEY *?', - 'oldsym' => 'EC_KEY_dup' - }, - 'FIPS_dh_openssl' => { - 'params' => [], - 'objfile' => './crypto/dh/dh_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DH_OpenSSL)', - 'sym' => 'FIPS_dh_openssl', - 'type' => 'const DH_METHOD *?', - 'oldsym' => 'DH_OpenSSL' - }, - 'FIPS_hmac_init_ex' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'HMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'len', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'md', - 'type' => 'const EVP_MD *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'impl', - 'type' => 'ENGINE *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/hmac/hmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames HMAC_Init_ex)', - 'sym' => 'FIPS_hmac_init_ex', - 'type' => '__owur int ?', - 'oldsym' => 'HMAC_Init_ex' - }, - 'FIPS_evp_des_ede3_cbc' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede3_cbc)', - 'sym' => 'FIPS_evp_des_ede3_cbc', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede3_cbc' - }, - 'FIPS_rand_seed' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'buf', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'num', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements RAND_seed)', - 'sym' => 'FIPS_rand_seed', - 'type' => 'void ?', - 'oldsym' => 'RAND_seed' - }, - 'FIPS_md_ctx_create' => { - 'params' => [], - 'objfile' => './fips/utl/fips_md.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_MD_CTX_create)', - 'sym' => 'FIPS_md_ctx_create', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => 'EVP_MD_CTX_create' - }, - 'FIPS_cipherinit' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cipher', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'iv', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'enc', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_enc.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_CipherInit)', - 'sym' => 'FIPS_cipherinit', - 'type' => '__owur int ?', - 'oldsym' => 'EVP_CipherInit' - }, - 'FIPS_check_incore_fingerprint' => { - 'params' => [], - 'objfile' => './fips/fips.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_check_incore_fingerprint', - 'type' => 'int ?', - 'oldsym' => 'FIPS_check_incore_fingerprint' - }, - 'FIPS_evp_sha512' => { - 'params' => [], - 'objfile' => './crypto/evp/m_sha1.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_sha512)', - 'sym' => 'FIPS_evp_sha512', - 'type' => 'const EVP_MD *?', - 'oldsym' => 'EVP_sha512' - }, - 'FIPS_ec_key_insert_key_method_data' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'data', - 'type' => 'void *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dup_func', - 'type' => 'void *(*?)(void *)' - }, - { - 'direction' => '<-? <->?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'free_func', - 'type' => 'void (*?)(void *)' - }, - { - 'direction' => '<-? <->?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'clear_free_func', - 'type' => 'void (*?)(void *)' - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_insert_key_method_data)', - 'sym' => 'FIPS_ec_key_insert_key_method_data', - 'type' => 'void ?', - 'oldsym' => 'EC_KEY_insert_key_method_data' - }, - 'FIPS_hmac_ctx_cleanup' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'HMAC_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/hmac/hmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames HMAC_CTX_cleanup)', - 'sym' => 'FIPS_hmac_ctx_cleanup', - 'type' => 'void ?', - 'oldsym' => 'HMAC_CTX_cleanup' - }, - 'FIPS_drbg_set_callbacks' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'get_entropy', - 'type' => 'size_t (*?)(DRBG_CTX *ctx, unsigned char **pout, int entropy, size_t min_len, size_t max_len)' - }, - { - 'direction' => '<-?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cleanup_entropy', - 'type' => 'void (*?)(DRBG_CTX *ctx, unsigned char *out, size_t olen)' - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'entropy_blocklen', - 'type' => 'size_t ?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'get_nonce', - 'type' => 'size_t (*?)(DRBG_CTX *ctx, unsigned char **pout, int entropy, size_t min_len, size_t max_len)' - }, - { - 'direction' => '<-?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cleanup_nonce', - 'type' => 'void (*?)(DRBG_CTX *ctx, unsigned char *out, size_t olen)' - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_set_callbacks', - 'type' => 'int ?', - 'oldsym' => 'FIPS_drbg_set_callbacks' - }, - 'FIPS_ec_group_new_curve_gfp' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'b', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_cvt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_new_curve_GFp)', - 'sym' => 'FIPS_ec_group_new_curve_gfp', - 'type' => 'EC_GROUP *?', - 'oldsym' => 'EC_GROUP_new_curve_GFp' - }, - 'FIPS_ec_point_is_on_curve' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'point', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_is_on_curve)', - 'sym' => 'FIPS_ec_point_is_on_curve', - 'type' => 'int ?', - 'oldsym' => 'EC_POINT_is_on_curve' - }, - 'FIPS_hmac_update' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'HMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'data', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'len', - 'type' => 'size_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/hmac/hmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames HMAC_Update)', - 'sym' => 'FIPS_hmac_update', - 'type' => '__owur int ?', - 'oldsym' => 'HMAC_Update' - }, - 'FIPS_cmac_ctx_copy' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'out', - 'type' => 'CMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'in', - 'type' => 'const CMAC_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/cmac/cmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CMAC_CTX_copy)', - 'sym' => 'FIPS_cmac_ctx_copy', - 'type' => 'int ?', - 'oldsym' => 'CMAC_CTX_copy' - }, - 'FIPS_get_digestbynid' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'nid', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_md.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_get_digestbynid', - 'type' => 'const struct env_md_st *?', - 'oldsym' => 'FIPS_get_digestbynid' - }, - 'FIPS_ec_point_new' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_new)', - 'sym' => 'FIPS_ec_point_new', - 'type' => 'EC_POINT *?', - 'oldsym' => 'EC_POINT_new' - }, - 'FIPS_evp_aes_256_cfb128' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_cfb128)', - 'sym' => 'FIPS_evp_aes_256_cfb128', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_cfb128' - }, - 'FIPS_evp_aes_192_cfb1' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_192_cfb1)', - 'sym' => 'FIPS_evp_aes_192_cfb1', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_192_cfb1' - }, - 'FIPS_evp_des_ede3_cfb1' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede3_cfb1)', - 'sym' => 'FIPS_evp_des_ede3_cfb1', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede3_cfb1' - }, - 'FIPS_dsa_openssl' => { - 'params' => [], - 'objfile' => './crypto/dsa/dsa_ossl.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DSA_OpenSSL)', - 'sym' => 'FIPS_dsa_openssl', - 'type' => 'const DSA_METHOD *?', - 'oldsym' => 'DSA_OpenSSL' - }, - 'FIPS_drbg_get_app_data' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_get_app_data', - 'type' => 'void *?', - 'oldsym' => 'FIPS_drbg_get_app_data' - }, - 'FIPS_ec_key_check_key' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_check_key)', - 'sym' => 'FIPS_ec_key_check_key', - 'type' => 'int ?', - 'oldsym' => 'EC_KEY_check_key' - }, - 'FIPS_drbg_new' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'type', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flags', - 'type' => 'unsigned int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_new', - 'type' => 'DRBG_CTX *?', - 'oldsym' => 'FIPS_drbg_new' - }, - 'FIPS_dsa_verify_digest' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dsa', - 'type' => 'DSA *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dig', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dlen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 's', - 'type' => 'DSA_SIG *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/dsa/fips_dsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_dsa_verify_digest', - 'type' => 'int ?', - 'oldsym' => 'FIPS_dsa_verify_digest' - }, - 'FIPS_module_version_text' => { - 'params' => [], - 'objfile' => './fips/fips.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_module_version_text', - 'type' => 'const char *?', - 'oldsym' => 'FIPS_module_version_text' - }, - 'FIPS_evp_aes_128_ecb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_ecb)', - 'sym' => 'FIPS_evp_aes_128_ecb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_ecb' - }, - 'FIPS_ec_points_make_affine' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'num', - 'type' => 'size_t ?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'points', - 'type' => 'EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINTs_make_affine)', - 'sym' => 'FIPS_ec_points_make_affine', - 'type' => 'int ?', - 'oldsym' => 'EC_POINTs_make_affine' - }, - 'FIPS_cmac_ctx_cleanup' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'CMAC_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/cmac/cmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CMAC_CTX_cleanup)', - 'sym' => 'FIPS_cmac_ctx_cleanup', - 'type' => 'void ?', - 'oldsym' => 'CMAC_CTX_cleanup' - }, - 'FIPS_ec_group_get_order' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'order', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_get_order)', - 'sym' => 'FIPS_ec_group_get_order', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_get_order' - }, - 'FIPS_hmac_init' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'HMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'len', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'md', - 'type' => 'const EVP_MD *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/hmac/hmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames HMAC_Init)', - 'sym' => 'FIPS_hmac_init', - 'type' => '__owur int ?', - 'oldsym' => 'HMAC_Init' - }, - 'FIPS_evp_des_ede3_ecb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede3_ecb)', - 'sym' => 'FIPS_evp_des_ede3_ecb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede3_ecb' - }, - 'FIPS_cmac_ctx_free' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'CMAC_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/cmac/cmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CMAC_CTX_free)', - 'sym' => 'FIPS_cmac_ctx_free', - 'type' => 'void ?', - 'oldsym' => 'CMAC_CTX_free' - }, - 'FIPS_rsa_sign_ctx' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'struct rsa_st *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'struct env_md_ctx_st *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa_pad_mode', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'saltlen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'mgf1Hash', - 'type' => 'const struct env_md_st *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'sigret', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'siglen', - 'type' => 'unsigned int *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rsa/fips_rsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rsa_sign_ctx', - 'type' => 'int ?', - 'oldsym' => 'FIPS_rsa_sign_ctx' - }, - 'FIPS_ec_key_get_enc_flags' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_get_enc_flags)', - 'sym' => 'FIPS_ec_key_get_enc_flags', - 'type' => 'unsigned ?', - 'oldsym' => 'EC_KEY_get_enc_flags' - }, - 'FIPS_rsa_verify_ctx' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'struct rsa_st *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'struct env_md_ctx_st *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa_pad_mode', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'saltlen', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'mgf1Hash', - 'type' => 'const struct env_md_st *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'sigbuf', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'siglen', - 'type' => 'unsigned int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rsa/fips_rsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rsa_verify_ctx', - 'type' => 'int ?', - 'oldsym' => 'FIPS_rsa_verify_ctx' - }, - 'FIPS_get_default_drbg' => { - 'params' => [], - 'objfile' => './fips/rand/fips_drbg_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_get_default_drbg', - 'type' => 'DRBG_CTX *?', - 'oldsym' => 'FIPS_get_default_drbg' - }, - 'FIPS_dsa_new' => { - 'params' => [], - 'objfile' => './fips/dsa/fips_dsa_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_dsa_new', - 'type' => 'DSA * ?', - 'oldsym' => 'FIPS_dsa_new' - }, - 'FIPS_x931_set_dt' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dt', - 'type' => 'unsigned char *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_x931_set_dt', - 'type' => 'int ?', - 'oldsym' => 'FIPS_x931_set_dt' - }, - 'FIPS_drbg_set_app_data' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'app_data', - 'type' => 'void *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_set_app_data', - 'type' => 'void ?', - 'oldsym' => 'FIPS_drbg_set_app_data' - }, - 'FIPS_evp_dss' => { - 'params' => [], - 'objfile' => './crypto/evp/m_dss.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_dss)', - 'sym' => 'FIPS_evp_dss', - 'type' => 'const EVP_MD *?', - 'oldsym' => 'EVP_dss' - }, - 'FIPS_ec_key_set_conv_form' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'eckey', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cform', - 'type' => 'point_conversion_form_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_set_conv_form)', - 'sym' => 'FIPS_ec_key_set_conv_form', - 'type' => 'void ?', - 'oldsym' => 'EC_KEY_set_conv_form' - }, - 'FIPS_drbg_free' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_free', - 'type' => 'void ?', - 'oldsym' => 'FIPS_drbg_free' - }, - 'FIPS_x931_stick' => { - 'params' => [], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_x931_stick', - 'type' => 'void ?', - 'oldsym' => 'FIPS_x931_stick' - }, - 'FIPS_selftest_failed' => { - 'params' => [], - 'objfile' => './fips/fips.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_failed', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_failed' - }, - 'FIPS_rsa_size' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'const RSA *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_crpt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_size)', - 'sym' => 'FIPS_rsa_size', - 'type' => 'int ?', - 'oldsym' => 'RSA_size' - }, - 'FIPS_ecdh_compute_key' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'out', - 'type' => 'void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'outlen', - 'type' => 'size_t ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'pub_key', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ecdh', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'KDF', - 'type' => 'void *(*?)(const void *in, size_t inlen, void *out, size_t *outlen)' - } - ], - 'objfile' => './crypto/ecdh/ech_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames ECDH_compute_key)', - 'sym' => 'FIPS_ecdh_compute_key', - 'type' => 'int ?', - 'oldsym' => 'ECDH_compute_key' - }, - 'FIPS_dh_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dh', - 'type' => 'DH *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/dh/fips_dh_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_dh_free', - 'type' => 'void ?', - 'oldsym' => 'FIPS_dh_free' - }, - 'FIPS_bn_clear_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_clear_free)', - 'sym' => 'FIPS_bn_clear_free', - 'type' => 'void ?', - 'oldsym' => 'BN_clear_free' - }, - 'FIPS_rsa_generate_key_ex' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'RSA *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'bits', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'e', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_gen.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_generate_key_ex)', - 'sym' => 'FIPS_rsa_generate_key_ex', - 'type' => 'int ?', - 'oldsym' => 'RSA_generate_key_ex' - }, - 'FIPS_rand_set_bits' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'nbits', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_rand_set_bits', - 'type' => 'void ?', - 'oldsym' => 'FIPS_rand_set_bits' - }, - 'FIPS_bn_generate_prime_ex' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ret', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'bits', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'safe', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'add', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rem', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_prime.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_generate_prime_ex)', - 'sym' => 'FIPS_bn_generate_prime_ex', - 'type' => 'int ?', - 'oldsym' => 'BN_generate_prime_ex' - }, - 'FIPS_evp_des_ede3_ofb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_des3.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_des_ede3_ofb)', - 'sym' => 'FIPS_evp_des_ede3_ofb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_des_ede3_ofb' - }, - 'FIPS_ec_group_precompute_mult' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_precompute_mult)', - 'sym' => 'FIPS_ec_group_precompute_mult', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_precompute_mult' - }, - 'FIPS_rsa_blinding_off' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rsa', - 'type' => 'RSA *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/rsa/rsa_crpt.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_blinding_off)', - 'sym' => 'FIPS_rsa_blinding_off', - 'type' => 'void ?', - 'oldsym' => 'RSA_blinding_off' - }, - 'FIPS_selftest_dsa' => { - 'params' => [], - 'objfile' => './fips/dsa/fips_dsa_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_dsa', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_dsa' - }, - 'FIPS_crypto_get_id_callback' => { - 'params' => [], - 'objfile' => './crypto/thr_id.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CRYPTO_get_id_callback)', - 'sym' => 'FIPS_crypto_get_id_callback', - 'type' => 'unsigned long (*?)(void)', - 'oldsym' => undef - }, - 'FIPS_hmac_ctx_set_flags' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'HMAC_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flags', - 'type' => 'unsigned long ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/hmac/hmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames HMAC_CTX_set_flags)', - 'sym' => 'FIPS_hmac_ctx_set_flags', - 'type' => 'void ?', - 'oldsym' => 'HMAC_CTX_set_flags' - }, - 'FIPS_evp_aes_256_cfb1' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_cfb1)', - 'sym' => 'FIPS_evp_aes_256_cfb1', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_cfb1' - }, - 'FIPS_evp_enc_null' => { - 'params' => [], - 'objfile' => './crypto/evp/e_null.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_enc_null)', - 'sym' => 'FIPS_evp_enc_null', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_enc_null' - }, - 'FIPS_ecdsa_sign_ctx' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/ecdsa/fips_ecdsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_ecdsa_sign_ctx', - 'type' => 'ECDSA_SIG * ?', - 'oldsym' => 'FIPS_ecdsa_sign_ctx' - }, - 'FIPS_bn_new' => { - 'params' => [], - 'objfile' => './crypto/bn/bn_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_new)', - 'sym' => 'FIPS_bn_new', - 'type' => 'BIGNUM *?', - 'oldsym' => 'BN_new' - }, - 'FIPS_dh_check' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dh', - 'type' => 'const DH *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'codes', - 'type' => 'int *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/dh/dh_check.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames DH_check)', - 'sym' => 'FIPS_dh_check', - 'type' => 'int ?', - 'oldsym' => 'DH_check' - }, - 'FIPS_drbg_stick' => { - 'params' => [], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_stick', - 'type' => 'void ?', - 'oldsym' => 'FIPS_drbg_stick' - }, - 'FIPS_ecdsa_sign_digest' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dig', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dlen', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ecdsa/ecs_ossl.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_ecdsa_sign_digest', - 'type' => 'ECDSA_SIG * ?', - 'oldsym' => 'FIPS_ecdsa_sign_digest' - }, - 'FIPS_evp_aes_128_xts' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_xts)', - 'sym' => 'FIPS_evp_aes_128_xts', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_xts' - }, - 'FIPS_bn_is_prime_fasttest_ex' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'nchecks', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'do_trial_division', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_prime.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_is_prime_fasttest_ex)', - 'sym' => 'FIPS_bn_is_prime_fasttest_ex', - 'type' => 'int ?', - 'oldsym' => 'BN_is_prime_fasttest_ex' - }, - 'FIPS_ec_point_make_affine' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'point', - 'type' => 'EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_make_affine)', - 'sym' => 'FIPS_ec_point_make_affine', - 'type' => 'int ?', - 'oldsym' => 'EC_POINT_make_affine' - }, - 'FIPS_ec_key_get_key_method_data' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dup_func', - 'type' => 'void *(*?)(void *)' - }, - { - 'direction' => '<-? <->?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'free_func', - 'type' => 'void (*?)(void *)' - }, - { - 'direction' => '<-? <->?', - 'params' => undef, - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'clear_free_func', - 'type' => 'void (*?)(void *)' - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_get_key_method_data)', - 'sym' => 'FIPS_ec_key_get_key_method_data', - 'type' => 'void *?', - 'oldsym' => 'EC_KEY_get_key_method_data' - }, - 'FIPS_dsa_sign_ctx' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dsa', - 'type' => 'DSA *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/dsa/fips_dsa_sign.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_dsa_sign_ctx', - 'type' => 'DSA_SIG * ?', - 'oldsym' => 'FIPS_dsa_sign_ctx' - }, - 'FIPS_ec_key_get_conv_form' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_get_conv_form)', - 'sym' => 'FIPS_ec_key_get_conv_form', - 'type' => 'point_conversion_form_t ?', - 'oldsym' => 'EC_KEY_get_conv_form' - }, - 'FIPS_x931_set_key' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'keylen', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_x931_set_key', - 'type' => 'int ?', - 'oldsym' => 'FIPS_x931_set_key' - }, - 'FIPS_ec_point_method_of' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'point', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_method_of)', - 'sym' => 'FIPS_ec_point_method_of', - 'type' => 'const EC_METHOD *?', - 'oldsym' => 'EC_POINT_method_of' - }, - 'FIPS_rand_add' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'buf', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'num', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'entropy', - 'type' => 'double ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_rand_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements RAND_add)', - 'sym' => 'FIPS_rand_add', - 'type' => 'void ?', - 'oldsym' => 'RAND_add' - }, - 'FIPS_dsa_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'r', - 'type' => 'DSA *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/dsa/fips_dsa_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_dsa_free', - 'type' => 'void ?', - 'oldsym' => 'FIPS_dsa_free' - }, - 'FIPS_evp_aes_128_cfb1' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_cfb1)', - 'sym' => 'FIPS_evp_aes_128_cfb1', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_cfb1' - }, - 'FIPS_openssl_stderr' => { - 'params' => [], - 'objfile' => './crypto/cryptlib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames OPENSSL_stderr)', - 'sym' => 'FIPS_openssl_stderr', - 'type' => 'void *?', - 'oldsym' => 'OPENSSL_stderr' - }, - 'FIPS_drbg_method' => { - 'params' => [], - 'objfile' => './fips/rand/fips_drbg_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_method', - 'type' => 'const RAND_METHOD *?', - 'oldsym' => 'FIPS_drbg_method' - }, - 'FIPS_cipher_ctx_cleanup' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_enc.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_CIPHER_CTX_cleanup)', - 'sym' => 'FIPS_cipher_ctx_cleanup', - 'type' => 'int ?', - 'oldsym' => 'EVP_CIPHER_CTX_cleanup' - }, - 'FIPS_ec_key_new_by_curve_name' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'nid', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_new_by_curve_name)', - 'sym' => 'FIPS_ec_key_new_by_curve_name', - 'type' => 'EC_KEY *?', - 'oldsym' => 'EC_KEY_new_by_curve_name' - }, - 'FIPS_crypto_threadid_set_pointer' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'id', - 'type' => 'CRYPTO_THREADID *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ptr', - 'type' => 'void *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/thr_id.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CRYPTO_THREADID_set_pointer)', - 'sym' => 'FIPS_crypto_threadid_set_pointer', - 'type' => 'void ?', - 'oldsym' => 'CRYPTO_THREADID_set_pointer' - }, - 'FIPS_module_mode' => { - 'params' => [], - 'objfile' => './fips/fips.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_module_mode', - 'type' => 'int ?', - 'oldsym' => 'FIPS_module_mode' - }, - 'FIPS_evp_aes_256_cbc' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_cbc)', - 'sym' => 'FIPS_evp_aes_256_cbc', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_cbc' - }, - 'FIPS_evp_aes_128_cfb8' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_cfb8)', - 'sym' => 'FIPS_evp_aes_128_cfb8', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_cfb8' - }, - 'FIPS_evp_aes_256_ccm' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_ccm)', - 'sym' => 'FIPS_evp_aes_256_ccm', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_ccm' - }, - 'FIPS_lock' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'mode', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'type', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'file', - 'type' => 'const char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'line', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_lck.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements CRYPTO_lock)', - 'sym' => 'FIPS_lock', - 'type' => 'void ?', - 'oldsym' => 'CRYPTO_lock' - }, - 'FIPS_bn_pseudo_rand' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'rnd', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'bits', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'top', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'bottom', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_rand.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_pseudo_rand)', - 'sym' => 'FIPS_bn_pseudo_rand', - 'type' => 'int ?', - 'oldsym' => 'BN_pseudo_rand' - }, - 'FIPS_drbg_generate' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dctx', - 'type' => 'DRBG_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'out', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'outlen', - 'type' => 'size_t ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'strength', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'prediction_resistance', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'adin', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'adinlen', - 'type' => 'size_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/rand/fips_drbg_lib.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_drbg_generate', - 'type' => 'int ?', - 'oldsym' => 'FIPS_drbg_generate' - }, - 'FIPS_ec_group_get_asn1_flag' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_get_asn1_flag)', - 'sym' => 'FIPS_ec_group_get_asn1_flag', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_get_asn1_flag' - }, - 'FIPS_evp_aes_192_cfb8' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_192_cfb8)', - 'sym' => 'FIPS_evp_aes_192_cfb8', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_192_cfb8' - }, - 'FIPS_ec_point_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'point', - 'type' => 'EC_POINT *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_free)', - 'sym' => 'FIPS_ec_point_free', - 'type' => 'void ?', - 'oldsym' => 'EC_POINT_free' - }, - 'FIPS_ec_key_get0_private_key' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_get0_private_key)', - 'sym' => 'FIPS_ec_key_get0_private_key', - 'type' => 'const BIGNUM *?', - 'oldsym' => 'EC_KEY_get0_private_key' - }, - 'FIPS_selftest_ecdsa' => { - 'params' => [], - 'objfile' => './fips/ecdsa/fips_ecdsa_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_ecdsa', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_ecdsa' - }, - 'FIPS_cipher' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'c', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'out', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'in', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'inl', - 'type' => 'unsigned int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_enc.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_Cipher)', - 'sym' => 'FIPS_cipher', - 'type' => '__owur int ?', - 'oldsym' => 'EVP_Cipher' - }, - 'FIPS_evp_aes_128_ofb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_128_ofb)', - 'sym' => 'FIPS_evp_aes_128_ofb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_128_ofb' - }, - 'FIPS_selftest_cmac' => { - 'params' => [], - 'objfile' => './fips/cmac/fips_cmac_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_cmac', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_cmac' - }, - 'FIPS_cipher_ctx_ctrl' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'type', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'arg', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ptr', - 'type' => 'void *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_enc.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_CIPHER_CTX_ctrl)', - 'sym' => 'FIPS_cipher_ctx_ctrl', - 'type' => 'int ?', - 'oldsym' => 'EVP_CIPHER_CTX_ctrl' - }, - 'FIPS_selftest_drbg' => { - 'params' => [], - 'objfile' => './fips/rand/fips_drbg_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_drbg', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_drbg' - }, - 'FIPS_rsa_pkcs1_ssleay' => { - 'params' => [], - 'objfile' => './crypto/rsa/rsa_eay.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames RSA_PKCS1_SSLeay)', - 'sym' => 'FIPS_rsa_pkcs1_ssleay', - 'type' => 'const RSA_METHOD *?', - 'oldsym' => 'RSA_PKCS1_SSLeay' - }, - 'FIPS_selftest_aes_xts' => { - 'params' => [], - 'objfile' => './fips/aes/fips_aes_selftest.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_selftest_aes_xts', - 'type' => 'int ?', - 'oldsym' => 'FIPS_selftest_aes_xts' - }, - 'FIPS_digestinit' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'type', - 'type' => 'const EVP_MD *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_md.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_DigestInit)', - 'sym' => 'FIPS_digestinit', - 'type' => '__owur int ?', - 'oldsym' => 'EVP_DigestInit' - }, - 'FIPS_cmac_ctx_get0_cipher_ctx' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'CMAC_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/cmac/cmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames CMAC_CTX_get0_cipher_ctx)', - 'sym' => 'FIPS_cmac_ctx_get0_cipher_ctx', - 'type' => 'EVP_CIPHER_CTX *?', - 'oldsym' => 'CMAC_CTX_get0_cipher_ctx' - }, - 'FIPS_ec_group_clear_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'EC_GROUP *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_clear_free)', - 'sym' => 'FIPS_ec_group_clear_free', - 'type' => 'void ?', - 'oldsym' => 'EC_GROUP_clear_free' - }, - 'FIPS_bn_x931_generate_prime_ex' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p1', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p2', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp1', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp2', - 'type' => 'BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'Xp', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'e', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'cb', - 'type' => 'BN_GENCB *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/bn/bn_x931p.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames BN_X931_generate_prime_ex)', - 'sym' => 'FIPS_bn_x931_generate_prime_ex', - 'type' => 'int ?', - 'oldsym' => 'BN_X931_generate_prime_ex' - }, - 'FIPS_ec_key_set_enc_flags' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'eckey', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'flags', - 'type' => 'unsigned int ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_set_enc_flags)', - 'sym' => 'FIPS_ec_key_set_enc_flags', - 'type' => 'void ?', - 'oldsym' => 'EC_KEY_set_enc_flags' - }, - 'FIPS_openssl_cleanse' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ptr', - 'type' => 'void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'len', - 'type' => 'size_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/sha/fips_standalone_sha1.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames OPENSSL_cleanse)', - 'sym' => 'FIPS_openssl_cleanse', - 'type' => 'void ?', - 'oldsym' => 'OPENSSL_cleanse' - }, - 'FIPS_evp_aes_256_cfb8' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_cfb8)', - 'sym' => 'FIPS_evp_aes_256_cfb8', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_cfb8' - }, - 'FIPS_ec_point_set_to_infinity' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'point', - 'type' => 'EC_POINT *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_set_to_infinity)', - 'sym' => 'FIPS_ec_point_set_to_infinity', - 'type' => 'int ?', - 'oldsym' => 'EC_POINT_set_to_infinity' - }, - 'FIPS_dsa_sig_free' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'DSA_SIG *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/dsa/fips_dsa_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements DSA_SIG_free)', - 'sym' => 'FIPS_dsa_sig_free', - 'type' => 'void ?', - 'oldsym' => 'DSA_SIG_free' - }, - 'FIPS_ec_group_set_curve_gfp' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'p', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'a', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'b', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_set_curve_GFp)', - 'sym' => 'FIPS_ec_group_set_curve_gfp', - 'type' => 'int ?', - 'oldsym' => 'EC_GROUP_set_curve_GFp' - }, - 'FIPS_ec_key_generate_key' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_generate_key)', - 'sym' => 'FIPS_ec_key_generate_key', - 'type' => 'int ?', - 'oldsym' => 'EC_KEY_generate_key' - }, - 'FIPS_evp_aes_192_ecb' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_192_ecb)', - 'sym' => 'FIPS_evp_aes_192_ecb', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_192_ecb' - }, - 'FIPS_hmac' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'evp_md', - 'type' => 'const EVP_MD *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key', - 'type' => 'const void *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'key_len', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'd', - 'type' => 'const unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'n', - 'type' => 'size_t ?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'md', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'md_len', - 'type' => 'unsigned int *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/hmac/hmac.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames HMAC)', - 'sym' => 'FIPS_hmac', - 'type' => 'unsigned char *?', - 'oldsym' => 'HMAC' - }, - 'FIPS_digestfinal' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'md', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 's', - 'type' => 'unsigned int *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_md.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_DigestFinal_ex)', - 'sym' => 'FIPS_digestfinal', - 'type' => '__owur int ?', - 'oldsym' => 'EVP_DigestFinal_ex' - }, - 'FIPS_incore_fingerprint' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'sig', - 'type' => 'unsigned char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'len', - 'type' => 'unsigned int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/fips.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_incore_fingerprint', - 'type' => 'unsigned int ?', - 'oldsym' => 'FIPS_incore_fingerprint' - }, - 'FIPS_md_ctx_cleanup' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_md.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_MD_CTX_cleanup)', - 'sym' => 'FIPS_md_ctx_cleanup', - 'type' => 'int ?', - 'oldsym' => 'EVP_MD_CTX_cleanup' - }, - 'FIPS_ec_group_set_point_conversion_form' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'form', - 'type' => 'point_conversion_form_t ?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_GROUP_set_point_conversion_form)', - 'sym' => 'FIPS_ec_group_set_point_conversion_form', - 'type' => 'void ?', - 'oldsym' => 'EC_GROUP_set_point_conversion_form' - }, - 'FIPS_ec_point_mul' => { - 'params' => [ - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'group', - 'type' => 'const EC_GROUP *?', - 'oldsym' => undef - }, - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'r', - 'type' => 'EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'n', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'q', - 'type' => 'const EC_POINT *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'm', - 'type' => 'const BIGNUM *?', - 'oldsym' => undef - }, - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'ctx', - 'type' => 'BN_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_lib.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_POINT_mul)', - 'sym' => 'FIPS_ec_point_mul', - 'type' => 'int ?', - 'oldsym' => 'EC_POINT_mul' - }, - 'FIPS_add_lock' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'pointer', - 'type' => 'int *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'amount', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'type', - 'type' => 'int ?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'file', - 'type' => 'const char *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'line', - 'type' => 'int ?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_lck.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements CRYPTO_add_lock)', - 'sym' => 'FIPS_add_lock', - 'type' => 'int ?', - 'oldsym' => 'CRYPTO_add_lock' - }, - 'FIPS_evp_sha256' => { - 'params' => [], - 'objfile' => './crypto/evp/m_sha1.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_sha256)', - 'sym' => 'FIPS_evp_sha256', - 'type' => 'const EVP_MD *?', - 'oldsym' => 'EVP_sha256' - }, - 'FIPS_md_ctx_copy' => { - 'params' => [ - { - 'direction' => '<-?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'out', - 'type' => 'EVP_MD_CTX *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'in', - 'type' => 'const EVP_MD_CTX *?', - 'oldsym' => undef - } - ], - 'objfile' => './fips/utl/fips_md.[o|c]', - 'kind' => 1, - 'symcomment' => '(reimplements EVP_MD_CTX_copy_ex)', - 'sym' => 'FIPS_md_ctx_copy', - 'type' => '__owur int ?', - 'oldsym' => 'EVP_MD_CTX_copy_ex' - }, - 'FIPS_ec_key_copy' => { - 'params' => [ - { - 'direction' => '<-? <->?', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'dst', - 'type' => 'EC_KEY *?', - 'oldsym' => undef - }, - { - 'direction' => '->', - 'objfile' => undef, - 'kind' => 0, - 'sym' => 'src', - 'type' => 'const EC_KEY *?', - 'oldsym' => undef - } - ], - 'objfile' => './crypto/ec/ec_key.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EC_KEY_copy)', - 'sym' => 'FIPS_ec_key_copy', - 'type' => 'EC_KEY *?', - 'oldsym' => 'EC_KEY_copy' - }, - 'FIPS_x931_status' => { - 'params' => [], - 'objfile' => './fips/rand/fips_rand.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_x931_status', - 'type' => 'int ?', - 'oldsym' => 'FIPS_x931_status' - }, - 'FIPS_text_end' => { - 'params' => [], - 'objfile' => './fips/fips_end.[o|c]', - 'kind' => 1, - 'symcomment' => undef, - 'sym' => 'FIPS_text_end', - 'type' => 'void *?', - 'oldsym' => 'FIPS_text_end' - }, - 'FIPS_evp_aes_192_ccm' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_192_ccm)', - 'sym' => 'FIPS_evp_aes_192_ccm', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_192_ccm' - }, - 'FIPS_evp_aes_256_ctr' => { - 'params' => [], - 'objfile' => './crypto/evp/e_aes.[o|c]', - 'kind' => 1, - 'symcomment' => '(renames EVP_aes_256_ctr)', - 'sym' => 'FIPS_evp_aes_256_ctr', - 'type' => 'const EVP_CIPHER *?', - 'oldsym' => 'EVP_aes_256_ctr' - } - }; diff --git a/fips/utl/Makefile b/fips/utl/Makefile deleted file mode 100644 index 417fdfb756..0000000000 --- a/fips/utl/Makefile +++ /dev/null @@ -1,113 +0,0 @@ -# -# OpenSSL/fips/utl/Makefile -# - -DIR= utl -TOP= ../.. -CC= cc -INCLUDES= -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKEDEPPROG= makedepend -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST= -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= fips_err.c fips_md.c fips_enc.c fips_lck.c fips_mem.c -LIBOBJ= fips_err.o fips_md.o fips_enc.o fips_lck.o fips_mem.o - -SRC= $(LIBSRC) - -EXHEADER= -HEADER= $(EXHEADER) - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - @echo $(LIBOBJ) > lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -links: - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) - -install: - @headerlist="$(EXHEADER)"; for i in $$headerlist; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done - -tags: - ctags $(SRC) - -tests: - -depend: - $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff -# DO NOT DELETE THIS LINE -- make depend depends on it. - -fips_enc.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_enc.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h -fips_enc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_enc.o: ../../include/openssl/opensslconf.h -fips_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h -fips_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_enc.o: ../../include/openssl/symhacks.h fips_enc.c -fips_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h -fips_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h -fips_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h -fips_err.o: ../../include/openssl/opensslconf.h -fips_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h -fips_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_err.o: ../../include/openssl/symhacks.h fips_err.c -fips_lck.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_lck.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_lck.o: ../../include/openssl/evp.h ../../include/openssl/fips.h -fips_lck.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_lck.o: ../../include/openssl/opensslconf.h -fips_lck.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h -fips_lck.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_lck.o: ../../include/openssl/symhacks.h fips_lck.c -fips_md.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h -fips_md.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h -fips_md.o: ../../include/openssl/err.h ../../include/openssl/evp.h -fips_md.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h -fips_md.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h -fips_md.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h -fips_md.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h -fips_md.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h -fips_md.o: fips_md.c -fips_mem.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h -fips_mem.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h -fips_mem.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h -fips_mem.o: ../../include/openssl/opensslconf.h -fips_mem.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h -fips_mem.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -fips_mem.o: ../../include/openssl/symhacks.h fips_mem.c diff --git a/fips/utl/fips_enc.c b/fips/utl/fips_enc.c deleted file mode 100644 index 1358b1f4a4..0000000000 --- a/fips/utl/fips_enc.c +++ /dev/null @@ -1,468 +0,0 @@ -/* fipe/evp/fips_enc.c */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * 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 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 acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The 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.] - */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include - -void FIPS_cipher_ctx_init(EVP_CIPHER_CTX *ctx) - { - memset(ctx,0,sizeof(EVP_CIPHER_CTX)); - /* ctx->cipher=NULL; */ - } - -EVP_CIPHER_CTX *FIPS_cipher_ctx_new(void) - { - EVP_CIPHER_CTX *ctx=OPENSSL_malloc(sizeof *ctx); - if (ctx) - FIPS_cipher_ctx_init(ctx); - return ctx; - } - -/* The purpose of these is to trap programs that attempt to use non FIPS - * algorithms in FIPS mode and ignore the errors. - */ - -static int bad_init(EVP_CIPHER_CTX *ctx, const unsigned char *key, - const unsigned char *iv, int enc) - { FIPS_ERROR_IGNORED("Cipher init"); return 0;} - -static int bad_do_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, - const unsigned char *in, size_t inl) - { FIPS_ERROR_IGNORED("Cipher update"); return 0;} - -/* NB: no cleanup because it is allowed after failed init */ - -static int bad_set_asn1(EVP_CIPHER_CTX *ctx, ASN1_TYPE *typ) - { FIPS_ERROR_IGNORED("Cipher set_asn1"); return 0;} -static int bad_get_asn1(EVP_CIPHER_CTX *ctx, ASN1_TYPE *typ) - { FIPS_ERROR_IGNORED("Cipher get_asn1"); return 0;} -static int bad_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) - { FIPS_ERROR_IGNORED("Cipher ctrl"); return 0;} - -static const EVP_CIPHER bad_cipher = - { - 0, - 1, - 0, - 0, - 0, - bad_init, - bad_do_cipher, - NULL, - 0, - bad_set_asn1, - bad_get_asn1, - bad_ctrl, - NULL - }; - -int FIPS_cipherinit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, const unsigned char *iv, int enc) - { - if(FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_CIPHERINIT,FIPS_R_FIPS_SELFTEST_FAILED); - ctx->cipher = &bad_cipher; - return 0; - } - if (enc == -1) - enc = ctx->encrypt; - else - { - if (enc) - enc = 1; - ctx->encrypt = enc; - } - if (cipher) - { - /* Only FIPS ciphers allowed */ - if (FIPS_module_mode() && !(cipher->flags & EVP_CIPH_FLAG_FIPS) && - !(ctx->flags & EVP_CIPH_FLAG_NON_FIPS_ALLOW)) - { - EVPerr(EVP_F_FIPS_CIPHERINIT, EVP_R_DISABLED_FOR_FIPS); - ctx->cipher = &bad_cipher; - return 0; - } - /* Ensure a context left lying around from last time is cleared - * (the previous check attempted to avoid this if the same - * ENGINE and EVP_CIPHER could be used). */ - FIPS_cipher_ctx_cleanup(ctx); - - /* Restore encrypt field: it is zeroed by cleanup */ - ctx->encrypt = enc; - - ctx->cipher=cipher; - if (ctx->cipher->ctx_size) - { - ctx->cipher_data=OPENSSL_malloc(ctx->cipher->ctx_size); - if (!ctx->cipher_data) - { - EVPerr(EVP_F_FIPS_CIPHERINIT, ERR_R_MALLOC_FAILURE); - return 0; - } - } - else - { - ctx->cipher_data = NULL; - } - ctx->key_len = cipher->key_len; - ctx->flags = 0; - if(ctx->cipher->flags & EVP_CIPH_CTRL_INIT) - { - if(!FIPS_cipher_ctx_ctrl(ctx, EVP_CTRL_INIT, 0, NULL)) - { - EVPerr(EVP_F_FIPS_CIPHERINIT, EVP_R_INITIALIZATION_ERROR); - return 0; - } - } - } - else if(!ctx->cipher) - { - EVPerr(EVP_F_FIPS_CIPHERINIT, EVP_R_NO_CIPHER_SET); - return 0; - } - /* we assume block size is a power of 2 in *cryptUpdate */ - OPENSSL_assert(ctx->cipher->block_size == 1 - || ctx->cipher->block_size == 8 - || ctx->cipher->block_size == 16); - - if(!(M_EVP_CIPHER_CTX_flags(ctx) & EVP_CIPH_CUSTOM_IV)) { - switch(M_EVP_CIPHER_CTX_mode(ctx)) { - - case EVP_CIPH_STREAM_CIPHER: - case EVP_CIPH_ECB_MODE: - break; - - case EVP_CIPH_CFB_MODE: - case EVP_CIPH_OFB_MODE: - - ctx->num = 0; - /* fall-through */ - - case EVP_CIPH_CBC_MODE: - - OPENSSL_assert(M_EVP_CIPHER_CTX_iv_length(ctx) <= - (int)sizeof(ctx->iv)); - if(iv) memcpy(ctx->oiv, iv, M_EVP_CIPHER_CTX_iv_length(ctx)); - memcpy(ctx->iv, ctx->oiv, M_EVP_CIPHER_CTX_iv_length(ctx)); - break; - - case EVP_CIPH_CTR_MODE: - /* Don't reuse IV for CTR mode */ - if(iv) - memcpy(ctx->iv, iv, M_EVP_CIPHER_CTX_iv_length(ctx)); - break; - - default: - return 0; - break; - } - } - - if(key || (ctx->cipher->flags & EVP_CIPH_ALWAYS_CALL_INIT)) { - if(!ctx->cipher->init(ctx,key,iv,enc)) return 0; - } - ctx->buf_len=0; - ctx->final_used=0; - ctx->block_mask=ctx->cipher->block_size-1; - return 1; - } - -void FIPS_cipher_ctx_free(EVP_CIPHER_CTX *ctx) - { - if (ctx) - { - FIPS_cipher_ctx_cleanup(ctx); - OPENSSL_free(ctx); - } - } - -int FIPS_cipher_ctx_cleanup(EVP_CIPHER_CTX *c) - { - if (c->cipher != NULL) - { - if(c->cipher->cleanup && !c->cipher->cleanup(c)) - return 0; - /* Cleanse cipher context data */ - if (c->cipher_data) - OPENSSL_cleanse(c->cipher_data, c->cipher->ctx_size); - } - if (c->cipher_data) - OPENSSL_free(c->cipher_data); - memset(c,0,sizeof(EVP_CIPHER_CTX)); - return 1; - } - -int FIPS_cipher_ctx_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) -{ - int ret; - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_CIPHER_CTX_CTRL, FIPS_R_SELFTEST_FAILED); - return 0; - } - if(!ctx->cipher) { - EVPerr(EVP_F_FIPS_CIPHER_CTX_CTRL, EVP_R_NO_CIPHER_SET); - return 0; - } - - if(!ctx->cipher->ctrl) { - EVPerr(EVP_F_FIPS_CIPHER_CTX_CTRL, EVP_R_CTRL_NOT_IMPLEMENTED); - return 0; - } - - ret = ctx->cipher->ctrl(ctx, type, arg, ptr); - if(ret == -1) { - EVPerr(EVP_F_FIPS_CIPHER_CTX_CTRL, EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED); - return 0; - } - return ret; -} - -int FIPS_cipher_ctx_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in) - { - if ((in == NULL) || (in->cipher == NULL)) - { - EVPerr(EVP_F_FIPS_CIPHER_CTX_COPY,EVP_R_INPUT_NOT_INITIALIZED); - return 0; - } - - /* Only FIPS ciphers allowed */ - if (FIPS_module_mode() && !(in->cipher->flags & EVP_CIPH_FLAG_FIPS) && - !(out->flags & EVP_CIPH_FLAG_NON_FIPS_ALLOW)) - { - EVPerr(EVP_F_FIPS_CIPHER_CTX_COPY, EVP_R_DISABLED_FOR_FIPS); - out->cipher = &bad_cipher; - return 0; - } - - FIPS_cipher_ctx_cleanup(out); - memcpy(out,in,sizeof *out); - - if (in->cipher_data && in->cipher->ctx_size) - { - out->cipher_data=OPENSSL_malloc(in->cipher->ctx_size); - if (!out->cipher_data) - { - EVPerr(EVP_F_FIPS_CIPHER_CTX_COPY,ERR_R_MALLOC_FAILURE); - return 0; - } - memcpy(out->cipher_data,in->cipher_data,in->cipher->ctx_size); - } - - if (in->cipher->flags & EVP_CIPH_CUSTOM_COPY) - return in->cipher->ctrl((EVP_CIPHER_CTX *)in, EVP_CTRL_COPY, 0, out); - return 1; - } - -/* You can't really set the key length with FIPS, so just check that the - caller sets the length the context already has. */ -int FIPS_cipher_ctx_set_key_length(EVP_CIPHER_CTX *ctx, int keylen) - { - if (ctx->key_len == keylen) - return 1; - - EVPerr(EVP_F_FIPS_CIPHER_CTX_SET_KEY_LENGTH,EVP_R_INVALID_KEY_LENGTH); - return 0; - } - - - -int FIPS_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, - const unsigned char *in, unsigned int inl) - { - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_CIPHER, FIPS_R_SELFTEST_FAILED); - return -1; - } - return ctx->cipher->do_cipher(ctx,out,in,inl); - } - -const EVP_CIPHER *FIPS_get_cipherbynid(int nid) - { - switch (nid) - { - case NID_aes_128_cbc: - return FIPS_evp_aes_128_cbc(); - - case NID_aes_128_ccm: - return FIPS_evp_aes_128_ccm(); - - case NID_aes_128_cfb1: - return FIPS_evp_aes_128_cfb1(); - - case NID_aes_128_cfb128: - return FIPS_evp_aes_128_cfb128(); - - case NID_aes_128_cfb8: - return FIPS_evp_aes_128_cfb8(); - - case NID_aes_128_ctr: - return FIPS_evp_aes_128_ctr(); - - case NID_aes_128_ecb: - return FIPS_evp_aes_128_ecb(); - - case NID_aes_128_gcm: - return FIPS_evp_aes_128_gcm(); - - case NID_aes_128_ofb128: - return FIPS_evp_aes_128_ofb(); - - case NID_aes_128_xts: - return FIPS_evp_aes_128_xts(); - - case NID_aes_192_cbc: - return FIPS_evp_aes_192_cbc(); - - case NID_aes_192_ccm: - return FIPS_evp_aes_192_ccm(); - - case NID_aes_192_cfb1: - return FIPS_evp_aes_192_cfb1(); - - case NID_aes_192_cfb128: - return FIPS_evp_aes_192_cfb128(); - - case NID_aes_192_cfb8: - return FIPS_evp_aes_192_cfb8(); - - case NID_aes_192_ctr: - return FIPS_evp_aes_192_ctr(); - - case NID_aes_192_ecb: - return FIPS_evp_aes_192_ecb(); - - case NID_aes_192_gcm: - return FIPS_evp_aes_192_gcm(); - - case NID_aes_192_ofb128: - return FIPS_evp_aes_192_ofb(); - - case NID_aes_256_cbc: - return FIPS_evp_aes_256_cbc(); - - case NID_aes_256_ccm: - return FIPS_evp_aes_256_ccm(); - - case NID_aes_256_cfb1: - return FIPS_evp_aes_256_cfb1(); - - case NID_aes_256_cfb128: - return FIPS_evp_aes_256_cfb128(); - - case NID_aes_256_cfb8: - return FIPS_evp_aes_256_cfb8(); - - case NID_aes_256_ctr: - return FIPS_evp_aes_256_ctr(); - - case NID_aes_256_ecb: - return FIPS_evp_aes_256_ecb(); - - case NID_aes_256_gcm: - return FIPS_evp_aes_256_gcm(); - - case NID_aes_256_ofb128: - return FIPS_evp_aes_256_ofb(); - - case NID_aes_256_xts: - return FIPS_evp_aes_256_xts(); - - case NID_des_ede_ecb: - return FIPS_evp_des_ede(); - - case NID_des_ede3_ecb: - return FIPS_evp_des_ede3(); - - case NID_des_ede3_cbc: - return FIPS_evp_des_ede3_cbc(); - - case NID_des_ede3_cfb1: - return FIPS_evp_des_ede3_cfb1(); - - case NID_des_ede3_cfb64: - return FIPS_evp_des_ede3_cfb64(); - - case NID_des_ede3_cfb8: - return FIPS_evp_des_ede3_cfb8(); - - case NID_des_ede3_ofb64: - return FIPS_evp_des_ede3_ofb(); - - case NID_des_ede_cbc: - return FIPS_evp_des_ede_cbc(); - - case NID_des_ede_cfb64: - return FIPS_evp_des_ede_cfb64(); - - case NID_des_ede_ofb64: - return FIPS_evp_des_ede_ofb(); - - default: - return NULL; - - } - } - diff --git a/fips/utl/fips_err.c b/fips/utl/fips_err.c deleted file mode 100644 index ddc9176da1..0000000000 --- a/fips/utl/fips_err.c +++ /dev/null @@ -1,89 +0,0 @@ -/* fips/utl/fips_err.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2010 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 - * licensing@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. - * ==================================================================== - */ - -#define OPENSSL_FIPSAPI - -#include -#include - -/* FIPS error callbacks */ - -static void (*fips_put_error_cb)(int lib, int func,int reason,const char *file,int line) = 0; -static void (*fips_add_error_vdata)(int num, va_list args) = 0; - -void FIPS_put_error(int lib, int func,int reason,const char *file,int line) - { - if (fips_put_error_cb) - fips_put_error_cb(lib, func, reason, file, line); - } - -void FIPS_add_error_data(int num, ...) - { - if (fips_add_error_vdata) - { - va_list args; - va_start(args, num); - fips_add_error_vdata(num, args); - va_end(args); - } - } - -void FIPS_set_error_callbacks( - void (*put_cb)(int lib, int func,int reason,const char *file,int line), - void (*add_cb)(int num, va_list args) ) - { - fips_put_error_cb = put_cb; - fips_add_error_vdata = add_cb; - } - - diff --git a/fips/utl/fips_lck.c b/fips/utl/fips_lck.c deleted file mode 100644 index 7cb10bc0d2..0000000000 --- a/fips/utl/fips_lck.c +++ /dev/null @@ -1,87 +0,0 @@ -/* fips/utl/fips_lck.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2011 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 - * licensing@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. - * ==================================================================== - */ - -#define OPENSSL_FIPSAPI - -#include -#include - -/* FIPS locking callbacks */ - -static void (*fips_lck_cb)(int mode, int type,const char *file,int line) = 0; -static int (*fips_add_cb)(int *pointer, int amount, int type, const char *file, - int line); - -void FIPS_lock(int mode, int type,const char *file,int line) - { - if (fips_lck_cb) - fips_lck_cb(mode, type, file, line); - } - -void FIPS_set_locking_callbacks(void (*func)(int mode, int type, - const char *file,int line), - int (*add_cb)(int *pointer, int amount, - int type, const char *file, int line)) - { - fips_lck_cb = func; - fips_add_cb = add_cb; - } - -int FIPS_add_lock(int *pointer, int amount, int type, const char *file, - int line) - { - if (fips_add_cb) - return fips_add_cb(pointer, amount, type, file, line); - *pointer += amount; - return *pointer; - } diff --git a/fips/utl/fips_md.c b/fips/utl/fips_md.c deleted file mode 100644 index 5e9fe4e4ee..0000000000 --- a/fips/utl/fips_md.c +++ /dev/null @@ -1,347 +0,0 @@ -/* fips/evp/fips_md.c */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * 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 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 acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The 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.] - */ -/* ==================================================================== - * Copyright (c) 1998-2001 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@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. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -/* Minimal standalone FIPS versions of Digest operations */ - -#define OPENSSL_FIPSAPI - -#include -#include -#include -#include -#include -#include - -void FIPS_md_ctx_init(EVP_MD_CTX *ctx) - { - memset(ctx,'\0',sizeof *ctx); - } - -EVP_MD_CTX *FIPS_md_ctx_create(void) - { - EVP_MD_CTX *ctx=OPENSSL_malloc(sizeof *ctx); - - if (ctx) - FIPS_md_ctx_init(ctx); - - return ctx; - } - -/* The purpose of these is to trap programs that attempt to use non FIPS - * algorithms in FIPS mode and ignore the errors. - */ - -static int bad_init(EVP_MD_CTX *ctx) - { FIPS_ERROR_IGNORED("Digest init"); return 0;} - -static int bad_update(EVP_MD_CTX *ctx,const void *data,size_t count) - { FIPS_ERROR_IGNORED("Digest update"); return 0;} - -static int bad_final(EVP_MD_CTX *ctx,unsigned char *md) - { FIPS_ERROR_IGNORED("Digest Final"); return 0;} - -static const EVP_MD bad_md = - { - 0, - 0, - 0, - 0, - bad_init, - bad_update, - bad_final, - NULL, - NULL, - NULL, - 0, - {0,0,0,0}, - }; - -int FIPS_digestinit(EVP_MD_CTX *ctx, const EVP_MD *type) - { - M_EVP_MD_CTX_clear_flags(ctx,EVP_MD_CTX_FLAG_CLEANED); - if(FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_DIGESTINIT,FIPS_R_FIPS_SELFTEST_FAILED); - ctx->digest = &bad_md; - ctx->update = bad_update; - return 0; - } - if(FIPS_module_mode() && !(type->flags & EVP_MD_FLAG_FIPS) && - !(ctx->flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW)) - { - EVPerr(EVP_F_FIPS_DIGESTINIT, EVP_R_DISABLED_FOR_FIPS); - ctx->digest = &bad_md; - ctx->update = bad_update; - return 0; - } - if (ctx->digest != type) - { - if (ctx->digest && ctx->digest->ctx_size) - OPENSSL_free(ctx->md_data); - ctx->digest=type; - if (!(ctx->flags & EVP_MD_CTX_FLAG_NO_INIT) && type->ctx_size) - { - ctx->update = type->update; - ctx->md_data=OPENSSL_malloc(type->ctx_size); - if (ctx->md_data == NULL) - { - EVPerr(EVP_F_FIPS_DIGESTINIT, - ERR_R_MALLOC_FAILURE); - return 0; - } - } - } - if (ctx->flags & EVP_MD_CTX_FLAG_NO_INIT) - return 1; - return ctx->digest->init(ctx); - } - -int FIPS_digestupdate(EVP_MD_CTX *ctx, const void *data, size_t count) - { - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_DIGESTUPDATE, FIPS_R_SELFTEST_FAILED); - return 0; - } - return ctx->update(ctx,data,count); - } - -/* The caller can assume that this removes any secret data from the context */ -int FIPS_digestfinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size) - { - int ret; - - if (FIPS_selftest_failed()) - { - FIPSerr(FIPS_F_FIPS_DIGESTFINAL, FIPS_R_SELFTEST_FAILED); - return 0; - } - - OPENSSL_assert(ctx->digest->md_size <= EVP_MAX_MD_SIZE); - ret=ctx->digest->final(ctx,md); - if (size != NULL) - *size=ctx->digest->md_size; - if (ctx->digest->cleanup) - { - ctx->digest->cleanup(ctx); - M_EVP_MD_CTX_set_flags(ctx,EVP_MD_CTX_FLAG_CLEANED); - } - memset(ctx->md_data,0,ctx->digest->ctx_size); - return ret; - } - -int FIPS_digest(const void *data, size_t count, - unsigned char *md, unsigned int *size, const EVP_MD *type) - { - EVP_MD_CTX ctx; - int ret; - - FIPS_md_ctx_init(&ctx); - M_EVP_MD_CTX_set_flags(&ctx,EVP_MD_CTX_FLAG_ONESHOT); - ret=FIPS_digestinit(&ctx, type) - && FIPS_digestupdate(&ctx, data, count) - && FIPS_digestfinal(&ctx, md, size); - FIPS_md_ctx_cleanup(&ctx); - - return ret; - } - -void FIPS_md_ctx_destroy(EVP_MD_CTX *ctx) - { - FIPS_md_ctx_cleanup(ctx); - OPENSSL_free(ctx); - } - -/* This call frees resources associated with the context */ -int FIPS_md_ctx_cleanup(EVP_MD_CTX *ctx) - { - /* Don't assume ctx->md_data was cleaned in FIPS_digest_Final, - * because sometimes only copies of the context are ever finalised. - */ - if (ctx->digest && ctx->digest->cleanup - && !M_EVP_MD_CTX_test_flags(ctx,EVP_MD_CTX_FLAG_CLEANED)) - ctx->digest->cleanup(ctx); - if (ctx->digest && ctx->digest->ctx_size && ctx->md_data - && !M_EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_REUSE)) - { - OPENSSL_cleanse(ctx->md_data,ctx->digest->ctx_size); - OPENSSL_free(ctx->md_data); - } - memset(ctx,'\0',sizeof *ctx); - - return 1; - } - -int FIPS_md_ctx_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in) - { - unsigned char *tmp_buf; - if ((in == NULL) || (in->digest == NULL)) - { - EVPerr(EVP_F_FIPS_MD_CTX_COPY,EVP_R_INPUT_NOT_INITIALIZED); - return 0; - } - - if (out->digest == in->digest) - { - tmp_buf = out->md_data; - M_EVP_MD_CTX_set_flags(out,EVP_MD_CTX_FLAG_REUSE); - } - else tmp_buf = NULL; - FIPS_md_ctx_cleanup(out); - memcpy(out,in,sizeof *out); - - if (in->md_data && out->digest->ctx_size) - { - if (tmp_buf) - out->md_data = tmp_buf; - else - { - out->md_data=OPENSSL_malloc(out->digest->ctx_size); - if (!out->md_data) - { - EVPerr(EVP_F_FIPS_MD_CTX_COPY,ERR_R_MALLOC_FAILURE); - return 0; - } - } - memcpy(out->md_data,in->md_data,out->digest->ctx_size); - } - - out->update = in->update; - - if (out->digest->copy) - return out->digest->copy(out,in); - - return 1; - } - -const EVP_MD *FIPS_get_digestbynid(int nid) - { - switch (nid) - { - case NID_sha1: - return EVP_sha1(); - - case NID_sha224: - return EVP_sha224(); - - case NID_sha256: - return EVP_sha256(); - - case NID_sha384: - return EVP_sha384(); - - case NID_sha512: - return EVP_sha512(); - - default: - return NULL; - } - } diff --git a/fips/utl/fips_mem.c b/fips/utl/fips_mem.c deleted file mode 100644 index ff6e727442..0000000000 --- a/fips/utl/fips_mem.c +++ /dev/null @@ -1,94 +0,0 @@ -/* fips/utl/fips_mem.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project. - */ -/* ==================================================================== - * Copyright (c) 2010 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 - * licensing@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. - * ==================================================================== - */ - -#define OPENSSL_FIPSAPI - -#include -#include - -/* Default malloc implementations */ - -static void *fips_malloc_def(int num, const char *file, int line) - { - return malloc(num); - } - -static void fips_free_def(void *x) - { - free(x); - } - -/* FIPS memory allocation callbacks */ - -static void *(*fips_malloc_cb)(int num, const char *file, int line) = - fips_malloc_def; -static void (*fips_free_cb)(void *) = - fips_free_def; - -void *FIPS_malloc(int num, const char *file, int line) - { - return fips_malloc_cb(num, file, line); - } - -void FIPS_free(void *x) - { - fips_free_cb(x); - } - -void FIPS_set_malloc_callbacks( - void *(*malloc_cb)(int num, const char *file, int line), - void (*free_cb)(void *)) - { - fips_malloc_cb = malloc_cb; - fips_free_cb = free_cb; - } diff --git a/util/arx.pl b/util/arx.pl deleted file mode 100644 index ce62625c33..0000000000 --- a/util/arx.pl +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/perl - -# Simple perl script to wrap round "ar" program and exclude any -# object files in the environment variable EXCL_OBJ - -map { s/^.*\/([^\/]*)$/$1/ ; $EXCL{$_} = 1} split(' ', $ENV{EXCL_OBJ}); - -#my @ks = keys %EXCL; -#print STDERR "Excluding: @ks \n"; - -my @ARGS = grep { !exists $EXCL{$_} } @ARGV; - -system @ARGS; - -exit $? >> 8; diff --git a/util/fipsas.pl b/util/fipsas.pl deleted file mode 100644 index 1694c59a41..0000000000 --- a/util/fipsas.pl +++ /dev/null @@ -1,93 +0,0 @@ - -# FIPS assembly language preprocessor -# Renames all symbols in the file to -# their modified fips versions. - - -my @ARGS = @ARGV; - -my $top = shift @ARGS; -my $target = shift @ARGS; -my $tmptarg = $target; - -$tmptarg =~ s/\.[^\\\/\.]+$/.tmp/; - -my $runasm = 1; - -if ($ARGS[0] eq "norunasm") - { - $runasm = 0; - shift @ARGS; - } - -my $enabled = 0; - -$enabled = 1 if $ENV{FIPSCANISTERINTERNAL} eq "y"; - -if ($enabled == 0 && $runasm) - { - system @ARGS; - exit $? - } - - -# Open symbol rename file. -open(IN, "$top/fips/fipssyms.h") || die "Can't open fipssyms.h"; - -# Skip to assembler symbols -while () - { - last if (/assembler/) - } - -# Store all renames. -while () - { - if (/^#define\s+(\w+)\s+(\w+)\b/) - { - $edits{$1} = $2; - } - } - -my ($from, $to); - -#delete any temp file lying around - -unlink $tmptarg; - -#rename target temporarily -rename($target, $tmptarg) || die "Can't rename $target"; - -#edit target -open(IN,$tmptarg) || die "Can't open temporary file"; -open(OUT, ">$target") || die "Can't open output file $target"; - -while () -{ - while (($from, $to) = each %edits) - { - s/(\b_*)$from(\b)/$1$to$2/g; - } - print OUT $_; -} - -close OUT; - -if ($runasm) - { - # run assembler - system @ARGS; - - my $rv = $?; - - # restore target - unlink $target; - rename $tmptarg, $target; - - die "Error executing assembler!" if $rv != 0; - } -else - { - # Don't care about target - unlink $tmptarg; - } -- 2.34.1