|
Packit |
13e0ca |
/*
|
|
Packit |
13e0ca |
* This crypt(3) validation program shipped with UFC-crypt
|
|
Packit |
13e0ca |
* is derived from one distributed with Phil Karns PD DES package.
|
|
Packit |
13e0ca |
*
|
|
Packit |
13e0ca |
* @(#)cert.c 1.8 11 Aug 1996
|
|
Packit |
13e0ca |
*/
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
#include "crypt-port.h"
|
|
Packit |
13e0ca |
#include "alg-des.h"
|
|
Packit |
13e0ca |
#include "test-des-cases.h"
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
#include <stdio.h>
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
#if INCLUDE_des || INCLUDE_des_xbsd || INCLUDE_des_big
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
static void
|
|
Packit |
13e0ca |
v_print (const unsigned char v[8])
|
|
Packit |
13e0ca |
{
|
|
Packit |
13e0ca |
for (int i = 0; i < 8; i++)
|
|
Packit |
13e0ca |
printf ("%02x", (unsigned int)v[i]);
|
|
Packit |
13e0ca |
}
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
static void
|
|
Packit |
13e0ca |
report_failure (size_t n, bool decrypt,
|
|
Packit |
13e0ca |
const struct des_testcase *tc, const unsigned char got[8])
|
|
Packit |
13e0ca |
{
|
|
Packit |
13e0ca |
printf ("FAIL: %zu/%s: k=", n, decrypt ? "de" : "en");
|
|
Packit |
13e0ca |
v_print (tc->key);
|
|
Packit |
13e0ca |
fputs (" exp ", stdout);
|
|
Packit |
13e0ca |
if (decrypt)
|
|
Packit |
13e0ca |
v_print (tc->plain);
|
|
Packit |
13e0ca |
else
|
|
Packit |
13e0ca |
v_print (tc->answer);
|
|
Packit |
13e0ca |
fputs (" got ", stdout);
|
|
Packit |
13e0ca |
v_print (got);
|
|
Packit |
13e0ca |
putchar ('\n');
|
|
Packit |
13e0ca |
}
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
int
|
|
Packit |
13e0ca |
main (void)
|
|
Packit |
13e0ca |
{
|
|
Packit |
13e0ca |
struct des_ctx ctx;
|
|
Packit |
13e0ca |
const struct des_testcase *tc;
|
|
Packit |
13e0ca |
unsigned char got[8];
|
|
Packit |
13e0ca |
size_t t;
|
|
Packit |
13e0ca |
int status = 0;
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
des_set_salt (&ctx, 0);
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
for (t = 0; t < N_DES_TESTCASES; t++)
|
|
Packit |
13e0ca |
{
|
|
Packit |
13e0ca |
tc = &des_testcases[t];
|
|
Packit |
13e0ca |
des_set_key (&ctx, tc->key);
|
|
Packit |
13e0ca |
des_crypt_block (&ctx, got, tc->plain, 1, false);
|
|
Packit |
13e0ca |
if (memcmp (got, tc->answer, 8) != 0)
|
|
Packit |
13e0ca |
{
|
|
Packit |
13e0ca |
status = 1;
|
|
Packit |
13e0ca |
report_failure (t, false, tc, got);
|
|
Packit |
13e0ca |
}
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
des_crypt_block (&ctx, got, tc->answer, 1, true);
|
|
Packit |
13e0ca |
if (memcmp (got, tc->plain, 8) != 0)
|
|
Packit |
13e0ca |
{
|
|
Packit |
13e0ca |
status = 1;
|
|
Packit |
13e0ca |
report_failure (t, true, tc, got);
|
|
Packit |
13e0ca |
}
|
|
Packit |
13e0ca |
}
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
return status;
|
|
Packit |
13e0ca |
}
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
#else
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
int
|
|
Packit |
13e0ca |
main (void)
|
|
Packit |
13e0ca |
{
|
|
Packit |
13e0ca |
return 77; /* UNSUPPORTED */
|
|
Packit |
13e0ca |
}
|
|
Packit |
13e0ca |
|
|
Packit |
13e0ca |
#endif
|