{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"},
const char *idstr, *exstr = "";
char asctmp[20];
int keytype = -1;
+#ifdef FIPS_POST_TIME
+ static struct timespec start, end, tstart, tend;
+#endif
switch(id)
{
case FIPS_TEST_INTEGRITY:
case FIPS_TEST_DRBG:
idstr = "DRBG";
+ if (*(int *)ex & DRBG_FLAG_CTR_USE_DF)
+ {
+ sprintf(asctmp, "%s DF", lookup_id(subid));
+ exstr = asctmp;
+ }
+ else
+ exstr = lookup_id(subid);
break;
case FIPS_TEST_PAIRWISE:
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:
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:
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:
int do_drbg_stick = 0;
int no_exit = 0;
- fips_algtest_init_nofips();
FIPS_post_set_callback(post_cb);
- printf("\tFIPS-mode test application\n\n");
+ printf("\tFIPS-mode test application\n");
+
+ printf("\t%s\n\n", FIPS_module_version_text());
if (argv[1]) {
/* Corrupted KAT tests */
} else if (!strcmp(argv[1], "aes")) {
fail_id = FIPS_TEST_CIPHER;
fail_sub = NID_aes_128_ecb;
+ } else if (!strcmp(argv[1], "aes-ccm")) {
+ fail_id = FIPS_TEST_CCM;
} else if (!strcmp(argv[1], "aes-gcm")) {
fail_id = FIPS_TEST_GCM;
} else if (!strcmp(argv[1], "aes-xts")) {
} else if (!strcmp(argv[1], "cmac")) {
fail_id = FIPS_TEST_CMAC;
} else if (!strcmp(argv[1], "drbg")) {
- FIPS_corrupt_drbg();
+ fail_id = FIPS_TEST_DRBG;
} else if (!strcmp(argv[1], "rng")) {
fail_id = FIPS_TEST_X931;
} else if (!strcmp(argv[1], "post")) {
do_rng_stick = 1;
no_exit = 1;
printf("RNG test with stuck continuous test...\n");
+ } else if (!strcmp(argv[1], "drbgentstick")) {
+ do_entropy_stick();
} else if (!strcmp(argv[1], "drbgstick")) {
do_drbg_stick = 1;
no_exit = 1;
exit(1);
}
if (!no_exit) {
- if (!FIPS_mode_set(1)) {
+ fips_algtest_init_nofips();
+ if (!FIPS_module_mode_set(1)) {
printf("Power-up self test failed\n");
exit(1);
}
}
}
+ fips_algtest_init_nofips();
+
/* Non-Approved cryptographic operation
*/
printf("1. Non-Approved cryptographic operation test...\n");
/* Power-up self test
*/
ERR_clear_error();
- test_msg("2. Automatic power-up self test", FIPS_mode_set(1));
- if (!FIPS_mode())
+ test_msg("2. Automatic power-up self test", FIPS_module_mode_set(1));
+ if (!FIPS_module_mode())
exit(1);
if (do_drbg_stick)
FIPS_drbg_stick();