Implement FIPS CMAC.
authorRichard Levitte <levitte@openssl.org>
Thu, 24 Mar 2011 22:57:52 +0000 (22:57 +0000)
committerRichard Levitte <levitte@openssl.org>
Thu, 24 Mar 2011 22:57:52 +0000 (22:57 +0000)
* fips/fips_test_suite.c, fips/fipsalgtest.pl, test/Makefile: Hook in
  test cases and build test program.

fips/fips_test_suite.c
fips/fipsalgtest.pl
test/Makefile

index 6da26632e0a346ed73a398fbd2c4432e258c95e7..bcb2c7a0dcd879ca7eaffccc60dd02cfd55157aa 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include <openssl/evp.h>
 #include <openssl/hmac.h>
+#include <openssl/cmac.h>
 #include <openssl/sha.h>
 #include <openssl/err.h>
 
@@ -394,6 +395,259 @@ static int FIPS_hmac_sha512_test()
     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;
+    unsigned int 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;
+    unsigned int 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;
+    unsigned int 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-TDEA2: generate hash of known digest value and compare to known
+   precomputed correct hash
+*/
+static int FIPS_cmac_tdea2_test()
+    {
+    unsigned char key[] = { 0x4c,0xf1,0x51,0x34, 0xa2,0x85,0x0d,0xd5,
+                           0x8a,0x3d,0x10,0xba, 0x80,0x57,0x0d,0x38, };
+    unsigned char data[] = "Sample text";
+    unsigned char kaval[] =
+       {0x73, 0xf7, 0xa0, 0x48, 0xf8, 0x94, 0xed, 0xdd, 0x0a, 0xea, 0xea, 0x56, 0x1b, 0x61, 0x2e, 0x70,
+        0xb2, 0xfb, 0xec, 0xc6};
+
+    unsigned char *out = NULL;
+    unsigned int 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_ede_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 1
+    {
+    char *hexout = OPENSSL_malloc(outlen * 2 + 1);
+    bin2hex(out, outlen, hexout);
+    printf("CMAC-TDEA2: 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;
+    unsigned int 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
 */
@@ -608,16 +862,38 @@ int main(int argc,char **argv)
     */
     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("8. Non-Approved cryptographic operation test...\n");
+    printf("9. Non-Approved cryptographic operation test...\n");
     printf("\ta. Included algorithm (D-H)...%s\n",
                dh_test() ? "successful as expected"
                                                : Fail("failed INCORRECTLY!") );
 
     /* Zeroization
     */
-    printf("9. Zero-ization...\n\t%s\n",
+    printf("10. Zero-ization...\n\t%s\n",
                Zeroize() ? "successful as expected"
                                        : Fail("failed INCORRECTLY!") );
 
index af778a47a933b3215d3eea3df6dcb56d062d919f..24467e015304e82e8c24afab6d8f91785dd0b301 100644 (file)
@@ -95,6 +95,17 @@ my @fips_hmac_test_list = (
 
 );
 
+# CMAC
+
+my @fips_cmac_test_list = (
+
+    "CMAC",
+
+    [ "CMACGenAES256", "fips_cmactest -g" ],
+    [ "CMACVerAES256", "fips_cmactest -v" ]
+
+);
+
 # RAND tests, AES version
 
 my @fips_rand_aes_test_list = (
@@ -372,6 +383,7 @@ my %fips_enabled = (
     "rsa-pss62" => 1,
     sha         => 1,
     hmac        => 1,
+    cmac        => 1,
     "rand-aes"  => 1,
     "rand-des2" => 0,
     aes         => 1,
@@ -449,6 +461,7 @@ 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"};
index af45836382c50e944fdb7c9e21cb70b5ab410bb6..e22878bd640cfd5aa074814d69191ac56bd3f7b3 100644 (file)
@@ -80,6 +80,7 @@ FIPS_DHVS=    fips_dhvs
 FIPS_ECDHVS=   fips_ecdhvs
 FIPS_ECDSAVS=  fips_ecdsavs
 FIPS_TEST_SUITE=fips_test_suite
+FIPS_CMACTEST= fips_cmactest
 
 TESTS=         alltests
 
@@ -101,7 +102,7 @@ FIPSEXE=$(FIPS_SHATEST)$(EXE_EXT) $(FIPS_DESTEST)$(EXE_EXT) \
        $(FIPS_RNGVS)$(EXE_EXT) $(FIPS_DRBGVS)$(EXE_EXT) \
        $(FIPS_DHVS)$(EXE_EXT)  $(FIPS_TEST_SUITE)$(EXE_EXT)  \
        $(FIPS_GCMTEST)$(EXE_EXT) $(FIPS_ECDSAVS)$(EXE_EXT) \
-       $(FIPS_ECDHVS)$(EXE_EXT)
+       $(FIPS_ECDHVS)$(EXE_EXT) $(FIPS_CMACTEST)$(EXE_EXT)
 
 # $(METHTEST)$(EXE_EXT)
 
@@ -118,7 +119,8 @@ OBJ=        $(BNTEST).o $(ECTEST).o  $(ECDSATEST).o $(ECDHTEST).o $(IDEATEST).o \
        $(FIPS_RSASTEST).o $(FIPS_RSAGTEST).o $(FIPS_GCMTEST).o \
        $(FIPS_DSSVS).o $(FIPS_DSATEST).o $(FIPS_RNGVS).o $(FIPS_DRBGVS).o \
        $(FIPS_TEST_SUITE).o $(FIPS_DHVS).o $(FIPS_ECDSAVS).o \
-       $(FIPS_ECDHVS).o $(EVPTEST).o $(IGETEST).o $(JPAKETEST).o
+       $(FIPS_ECDHVS).o $(FIPS_CMACTEST).o \
+       $(EVPTEST).o $(IGETEST).o $(JPAKETEST).o
 SRC=   $(BNTEST).c $(ECTEST).c  $(ECDSATEST).c $(ECDHTEST).c $(IDEATEST).c \
        $(MD2TEST).c  $(MD4TEST).c $(MD5TEST).c \
        $(HMACTEST).c $(WPTEST).c \
@@ -131,7 +133,8 @@ SRC=        $(BNTEST).c $(ECTEST).c  $(ECDSATEST).c $(ECDHTEST).c $(IDEATEST).c \
        $(FIPS_RSASTEST).c $(FIPS_RSAGTEST).c $(FIPS_GCMTEST).c \
        $(FIPS_DSSVS).c $(FIPS_DSATEST).c $(FIPS_RNGVS).c $(FIPS_DRBGVS).c \
        $(FIPS_TEST_SUITE).c $(FIPS_DHVS).c $(FIPS_ECDSAVS).c \
-       $(FIPS_ECDHVS).c $(EVPTEST).c $(IGETEST).c $(JPAKETEST).c
+       $(FIPS_ECDHVS).c $(FIPS_CMACTEST).c \
+       $(EVPTEST).c $(IGETEST).c $(JPAKETEST).c
 
 EXHEADER= 
 HEADER=        $(EXHEADER)
@@ -498,6 +501,9 @@ $(FIPS_DRBGVS)$(EXE_EXT): $(FIPS_DRBGVS).o $(DLIBCRYPTO)
 $(FIPS_TEST_SUITE)$(EXE_EXT): $(FIPS_TEST_SUITE).o $(DLIBCRYPTO)
        @target=$(FIPS_TEST_SUITE); $(FIPS_BUILD_CMD)
 
+$(FIPS_CMACTEST)$(EXE_EXT): $(FIPS_CMACTEST).o $(DLIBCRYPTO)
+       @target=$(FIPS_CMACTEST); $(FIPS_BUILD_CMD)
+
 $(RMDTEST)$(EXE_EXT): $(RMDTEST).o $(DLIBCRYPTO)
        @target=$(RMDTEST); $(BUILD_CMD)
 
@@ -694,108 +700,205 @@ exptest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 exptest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
 exptest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
 exptest.o: ../include/openssl/symhacks.h exptest.c
-fips_aesavs.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
-fips_aesavs.o: ../include/openssl/bio.h ../include/openssl/bn.h
-fips_aesavs.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
-fips_aesavs.o: ../include/openssl/err.h ../include/openssl/evp.h
+fips_aesavs.o: ../e_os.h ../fips/fips_utl.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/err.h
+fips_aesavs.o: ../include/openssl/evp.h ../include/openssl/fips.h
 fips_aesavs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
 fips_aesavs.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
 fips_aesavs.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 fips_aesavs.o: ../include/openssl/safestack.h ../include/openssl/stack.h
 fips_aesavs.o: ../include/openssl/symhacks.h fips_aesavs.c
-fips_desmovs.o: ../e_os.h ../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/err.h
-fips_desmovs.o: ../include/openssl/evp.h ../include/openssl/lhash.h
+fips_cmactest.o: ../fips/fips_utl.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/err.h
+fips_cmactest.o: ../include/openssl/evp.h ../include/openssl/fips.h
+fips_cmactest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
+fips_cmactest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
+fips_cmactest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
+fips_cmactest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
+fips_cmactest.o: ../include/openssl/symhacks.h fips_cmactest.c
+fips_desmovs.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/asn1.h
+fips_desmovs.o: ../include/openssl/bio.h ../include/openssl/bn.h
+fips_desmovs.o: ../include/openssl/crypto.h ../include/openssl/des.h
+fips_desmovs.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
+fips_desmovs.o: ../include/openssl/err.h ../include/openssl/evp.h
+fips_desmovs.o: ../include/openssl/fips.h ../include/openssl/lhash.h
 fips_desmovs.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
 fips_desmovs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 fips_desmovs.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
 fips_desmovs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
 fips_desmovs.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
 fips_desmovs.o: fips_desmovs.c
-fips_dhvs.o: ../include/openssl/opensslconf.h fips_dhvs.c
-fips_drbgvs.o: ../include/openssl/opensslconf.h fips_drbgvs.c
-fips_dsatest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
-fips_dsatest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
+fips_dhvs.o: ../fips/fips_utl.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/err.h
+fips_dhvs.o: ../include/openssl/evp.h ../include/openssl/fips.h
+fips_dhvs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
+fips_dhvs.o: ../include/openssl/objects.h ../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_dhvs.c
+fips_drbgvs.o: ../fips/fips_utl.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/des.h
+fips_drbgvs.o: ../include/openssl/des_old.h ../include/openssl/dsa.h
+fips_drbgvs.o: ../include/openssl/e_os2.h ../include/openssl/err.h
+fips_drbgvs.o: ../include/openssl/evp.h ../include/openssl/fips.h
+fips_drbgvs.o: ../include/openssl/fips_rand.h ../include/openssl/lhash.h
+fips_drbgvs.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
+fips_drbgvs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
+fips_drbgvs.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
+fips_drbgvs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
+fips_drbgvs.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
+fips_drbgvs.o: fips_drbgvs.c
+fips_dsatest.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/asn1.h
+fips_dsatest.o: ../include/openssl/bio.h ../include/openssl/bn.h
+fips_dsatest.o: ../include/openssl/crypto.h ../include/openssl/des.h
+fips_dsatest.o: ../include/openssl/des_old.h ../include/openssl/dsa.h
 fips_dsatest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
-fips_dsatest.o: ../include/openssl/evp.h ../include/openssl/lhash.h
+fips_dsatest.o: ../include/openssl/evp.h ../include/openssl/fips.h
+fips_dsatest.o: ../include/openssl/fips_rand.h ../include/openssl/lhash.h
 fips_dsatest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
 fips_dsatest.o: ../include/openssl/opensslconf.h ../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_dsatest.c
-fips_dssvs.o: ../include/openssl/opensslconf.h fips_dssvs.c
-fips_ecdhvs.o: ../include/openssl/opensslconf.h fips_ecdhvs.c
-fips_ecdsavs.o: ../include/openssl/opensslconf.h fips_ecdsavs.c
-fips_gcmtest.o: ../include/openssl/opensslconf.h fips_gcmtest.c
-fips_hmactest.o: ../include/openssl/asn1.h ../include/openssl/bio.h
-fips_hmactest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
-fips_hmactest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
-fips_hmactest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
+fips_dsatest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
+fips_dsatest.o: ../include/openssl/ui_compat.h fips_dsatest.c
+fips_dssvs.o: ../fips/fips_utl.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/err.h
+fips_dssvs.o: ../include/openssl/evp.h ../include/openssl/fips.h
+fips_dssvs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
+fips_dssvs.o: ../include/openssl/objects.h ../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_dssvs.c
+fips_ecdhvs.o: ../fips/fips_utl.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/lhash.h
+fips_ecdhvs.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
+fips_ecdhvs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
+fips_ecdhvs.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
+fips_ecdhvs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
+fips_ecdhvs.o: fips_ecdhvs.c
+fips_ecdsavs.o: ../fips/fips_utl.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.h ../include/openssl/lhash.h
+fips_ecdsavs.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
+fips_ecdsavs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
+fips_ecdsavs.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
+fips_ecdsavs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
+fips_ecdsavs.o: fips_ecdsavs.c
+fips_gcmtest.o: ../fips/fips_utl.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/err.h
+fips_gcmtest.o: ../include/openssl/evp.h ../include/openssl/fips.h
+fips_gcmtest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
+fips_gcmtest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
+fips_gcmtest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
+fips_gcmtest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
+fips_gcmtest.o: ../include/openssl/symhacks.h fips_gcmtest.c
+fips_hmactest.o: ../fips/fips_utl.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/err.h ../include/openssl/evp.h
+fips_hmactest.o: ../include/openssl/fips.h ../include/openssl/hmac.h
 fips_hmactest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
 fips_hmactest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
 fips_hmactest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 fips_hmactest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
 fips_hmactest.o: ../include/openssl/symhacks.h fips_hmactest.c
-fips_randtest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h
-fips_randtest.o: ../include/openssl/crypto.h ../include/openssl/des.h
-fips_randtest.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
-fips_randtest.o: ../include/openssl/err.h ../include/openssl/fips_rand.h
+fips_randtest.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/bio.h
+fips_randtest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
+fips_randtest.o: ../include/openssl/des.h ../include/openssl/des_old.h
+fips_randtest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
+fips_randtest.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h
 fips_randtest.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
 fips_randtest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 fips_randtest.o: ../include/openssl/rand.h ../include/openssl/safestack.h
 fips_randtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
 fips_randtest.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
 fips_randtest.o: fips_randtest.c
-fips_rngvs.o: ../include/openssl/opensslconf.h fips_rngvs.c
-fips_rsagtest.o: ../include/openssl/asn1.h ../include/openssl/bio.h
-fips_rsagtest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
-fips_rsagtest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
-fips_rsagtest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
+fips_rngvs.o: ../fips/fips_utl.h ../include/openssl/bio.h
+fips_rngvs.o: ../include/openssl/bn.h ../include/openssl/crypto.h
+fips_rngvs.o: ../include/openssl/des.h ../include/openssl/des_old.h
+fips_rngvs.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
+fips_rngvs.o: ../include/openssl/err.h ../include/openssl/fips.h
+fips_rngvs.o: ../include/openssl/fips_rand.h ../include/openssl/lhash.h
+fips_rngvs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
+fips_rngvs.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
+fips_rngvs.o: ../include/openssl/safestack.h ../include/openssl/stack.h
+fips_rngvs.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
+fips_rngvs.o: ../include/openssl/ui_compat.h fips_rngvs.c
+fips_rsagtest.o: ../fips/fips_utl.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/err.h ../include/openssl/evp.h
+fips_rsagtest.o: ../include/openssl/fips.h ../include/openssl/hmac.h
 fips_rsagtest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
 fips_rsagtest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
 fips_rsagtest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
-fips_rsagtest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
-fips_rsagtest.o: ../include/openssl/symhacks.h fips_rsagtest.c
-fips_rsastest.o: ../include/openssl/asn1.h ../include/openssl/bio.h
-fips_rsastest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
-fips_rsastest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
-fips_rsastest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
+fips_rsagtest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
+fips_rsagtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
+fips_rsagtest.o: fips_rsagtest.c
+fips_rsastest.o: ../fips/fips_utl.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/err.h ../include/openssl/evp.h
+fips_rsastest.o: ../include/openssl/fips.h ../include/openssl/hmac.h
 fips_rsastest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
 fips_rsastest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
 fips_rsastest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
-fips_rsastest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
-fips_rsastest.o: ../include/openssl/symhacks.h fips_rsastest.c
-fips_rsavtest.o: ../include/openssl/asn1.h ../include/openssl/bio.h
-fips_rsavtest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
-fips_rsavtest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
-fips_rsavtest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
+fips_rsastest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
+fips_rsastest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
+fips_rsastest.o: fips_rsastest.c
+fips_rsavtest.o: ../fips/fips_utl.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/err.h ../include/openssl/evp.h
+fips_rsavtest.o: ../include/openssl/fips.h ../include/openssl/hmac.h
 fips_rsavtest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
 fips_rsavtest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
 fips_rsavtest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
-fips_rsavtest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
-fips_rsavtest.o: ../include/openssl/symhacks.h fips_rsavtest.c
-fips_shatest.o: ../include/openssl/asn1.h ../include/openssl/bio.h
-fips_shatest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
-fips_shatest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
-fips_shatest.o: ../include/openssl/evp.h ../include/openssl/lhash.h
+fips_rsavtest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
+fips_rsavtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
+fips_rsavtest.o: fips_rsavtest.c
+fips_shatest.o: ../fips/fips_utl.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/err.h ../include/openssl/evp.h
+fips_shatest.o: ../include/openssl/fips.h ../include/openssl/lhash.h
 fips_shatest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
 fips_shatest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 fips_shatest.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
 fips_shatest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
 fips_shatest.o: fips_shatest.c
-fips_test_suite.o: ../include/openssl/asn1.h ../include/openssl/bio.h
-fips_test_suite.o: ../include/openssl/bn.h ../include/openssl/crypto.h
+fips_test_suite.o: ../fips/fips_utl.h ../include/openssl/asn1.h
+fips_test_suite.o: ../include/openssl/bio.h ../include/openssl/bn.h
+fips_test_suite.o: ../include/openssl/cmac.h ../include/openssl/crypto.h
+fips_test_suite.o: ../include/openssl/dh.h ../include/openssl/dsa.h
 fips_test_suite.o: ../include/openssl/e_os2.h ../include/openssl/err.h
-fips_test_suite.o: ../include/openssl/evp.h ../include/openssl/hmac.h
-fips_test_suite.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
-fips_test_suite.o: ../include/openssl/objects.h
+fips_test_suite.o: ../include/openssl/evp.h ../include/openssl/fips.h
+fips_test_suite.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
+fips_test_suite.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
 fips_test_suite.o: ../include/openssl/opensslconf.h
 fips_test_suite.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
-fips_test_suite.o: ../include/openssl/rand.h ../include/openssl/safestack.h
-fips_test_suite.o: ../include/openssl/sha.h ../include/openssl/stack.h
-fips_test_suite.o: ../include/openssl/symhacks.h fips_test_suite.c
+fips_test_suite.o: ../include/openssl/rand.h ../include/openssl/rsa.h
+fips_test_suite.o: ../include/openssl/safestack.h ../include/openssl/sha.h
+fips_test_suite.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
+fips_test_suite.o: fips_test_suite.c
 hmactest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 hmactest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
 hmactest.o: ../include/openssl/evp.h ../include/openssl/hmac.h