#include "fips_utl.h"
-static void vst()
+static void vst(FILE *in, FILE *out)
{
unsigned char *key = NULL;
unsigned char *v = NULL;
keylen = 0;
- while(fgets(buf,sizeof buf,stdin) != NULL)
+ while(fgets(buf,sizeof buf,in) != NULL)
{
- fputs(buf,stdout);
+ fputs(buf,out);
if(!strncmp(buf,"[AES 128-Key]", 13))
keylen = 16;
else if(!strncmp(buf,"[AES 192-Key]", 13))
return;
}
- FIPS_rand_set_key(key, keylen);
- FIPS_rand_seed(v,16);
- FIPS_rand_set_dt(dt);
- if (FIPS_rand_bytes(ret,16) <= 0)
+ 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;
}
- pv("R",ret,16);
+ OutputValue("R", ret, 16, out, 0);
OPENSSL_free(key);
key = NULL;
OPENSSL_free(dt);
}
}
-static void mct()
+static void mct(FILE *in, FILE *out)
{
unsigned char *key = NULL;
unsigned char *v = NULL;
keylen = 0;
- while(fgets(buf,sizeof buf,stdin) != NULL)
+ while(fgets(buf,sizeof buf,in) != NULL)
{
- fputs(buf,stdout);
+ fputs(buf,out);
if(!strncmp(buf,"[AES 128-Key]", 13))
keylen = 16;
else if(!strncmp(buf,"[AES 192-Key]", 13))
return;
}
- FIPS_rand_set_key(key, keylen);
- FIPS_rand_seed(v,16);
+ FIPS_x931_set_key(key, keylen);
+ FIPS_x931_seed(v,16);
for (i = 0; i < 10000; i++)
{
- FIPS_rand_set_dt(dt);
- if (FIPS_rand_bytes(ret,16) <= 0)
+ FIPS_x931_set_dt(dt);
+ if (FIPS_x931_bytes(ret,16) <= 0)
{
fprintf(stderr, "Error getting PRNG value\n");
return;
}
}
- pv("R",ret,16);
+ OutputValue("R", ret, 16, out, 0);
OPENSSL_free(key);
key = NULL;
OPENSSL_free(dt);
int main(int argc,char **argv)
{
- if(argc != 2)
+ 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_set_error_print();
- if(!FIPS_mode_set(1))
- exit(1);
- FIPS_rand_reset();
- if (!FIPS_rand_test_mode())
+ 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();
+ mct(in, out);
else if(!strcmp(argv[1],"vst"))
- 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