switch to the DES_ api, dont provide any compat glue

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12748 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2003-09-03 09:26:03 +00:00
parent 992f32ca35
commit 49e0243cc5
29 changed files with 590 additions and 577 deletions

View File

@@ -149,7 +149,7 @@ md5sumFile (const char *name, int len, int32_t sum[4])
* The sequence is indexed with a long long and
* based on an initial des key used as a seed.
*/
static des_key_schedule sequence_seed;
static DES_key_schedule sequence_seed;
static u_int32_t sequence_index[2];
/*
@@ -242,7 +242,7 @@ static RETSIGTYPE
* It's not neccessary to be root to run it.
*/
void
des_rand_data(unsigned char *data, int size)
DES_rand_data(unsigned char *data, int size)
{
struct itimerval tv, otv;
RETSIGTYPE (*osa)(int);
@@ -312,36 +312,39 @@ des_rand_data(unsigned char *data, int size)
}
#else
void
des_rand_data(unsigned char *p, int s)
DES_rand_data(unsigned char *p, int s)
{
des_not_rand_data (p, s);
DES_not_rand_data (p, s);
}
#endif
void
des_generate_random_block(des_cblock *block)
DES_generate_random_block(DES_cblock *block)
{
des_rand_data((unsigned char *)block, sizeof(*block));
DES_rand_data((unsigned char *)block, sizeof(*block));
}
void
DES_rand_data_key(DES_cblock *key);
/*
* Generate a "random" DES key.
*/
void
des_rand_data_key(des_cblock *key)
DES_rand_data_key(DES_cblock *key)
{
unsigned char data[8];
des_key_schedule sched;
DES_key_schedule sched;
do {
des_rand_data(data, sizeof(data));
des_rand_data((unsigned char*)key, sizeof(des_cblock));
des_set_odd_parity(key);
des_key_sched(key, sched);
des_ecb_encrypt(&data, key, sched, DES_ENCRYPT);
DES_rand_data(data, sizeof(data));
DES_rand_data((unsigned char*)key, sizeof(DES_cblock));
DES_set_odd_parity(key);
DES_key_sched(key, &sched);
DES_ecb_encrypt(&data, key, &sched, DES_ENCRYPT);
memset(&data, 0, sizeof(data));
memset(&sched, 0, sizeof(sched));
des_set_odd_parity(key);
} while(des_is_weak_key(key));
DES_set_odd_parity(key);
} while(DES_is_weak_key(key));
}
/*
@@ -351,7 +354,10 @@ des_rand_data_key(des_cblock *key)
* problems with permissions.
*/
int
des_mem_rand8(unsigned char *data)
DES_mem_rand8(unsigned char *data);
int
DES_mem_rand8(unsigned char *data)
{
return 1;
}
@@ -364,12 +370,12 @@ static int initialized;
static void
do_initialize(void)
{
des_cblock default_seed;
DES_cblock default_seed;
do {
des_generate_random_block(&default_seed);
des_set_odd_parity(&default_seed);
} while (des_is_weak_key(&default_seed));
des_init_random_number_generator(&default_seed);
DES_generate_random_block(&default_seed);
DES_set_odd_parity(&default_seed);
} while (DES_is_weak_key(&default_seed));
DES_init_random_number_generator(&default_seed);
}
#define zero_long_long(ll) do { ll[0] = ll[1] = 0; } while (0)
@@ -383,7 +389,7 @@ memcpy((char *)sequence_index, (ll), sizeof(sequence_index));
* Set the sequnce number to this value (a long long).
*/
void
des_set_sequence_number(unsigned char *ll)
DES_set_sequence_number(unsigned char *ll)
{
set_sequence_number(ll);
}
@@ -392,9 +398,9 @@ des_set_sequence_number(unsigned char *ll)
* Set the generator seed and reset the sequence number to 0.
*/
void
des_set_random_generator_seed(des_cblock *seed)
DES_set_random_generator_seed(DES_cblock *seed)
{
des_key_sched(seed, sequence_seed);
DES_key_sched(seed, &sequence_seed);
zero_long_long(sequence_index);
initialized = 1;
}
@@ -405,20 +411,20 @@ des_set_random_generator_seed(des_cblock *seed)
* parity and skip weak keys.
*/
int
des_new_random_key(des_cblock *key)
DES_new_random_key(DES_cblock *key)
{
if (!initialized)
do_initialize();
do {
des_ecb_encrypt((des_cblock *) sequence_index,
DES_ecb_encrypt((DES_cblock *) sequence_index,
key,
sequence_seed,
&sequence_seed,
DES_ENCRYPT);
incr_long_long(sequence_index);
/* random key must have odd parity and not be weak */
des_set_odd_parity(key);
} while (des_is_weak_key(key));
DES_set_odd_parity(key);
} while (DES_is_weak_key(key));
return(0);
}
@@ -431,34 +437,34 @@ des_new_random_key(des_cblock *key)
*
*/
void
des_init_random_number_generator(des_cblock *seed)
DES_init_random_number_generator(DES_cblock *seed)
{
struct timeval now;
des_cblock uniq;
des_cblock new_key;
DES_cblock uniq;
DES_cblock new_key;
gettimeofday(&now, (struct timezone *)0);
des_generate_random_block(&uniq);
DES_generate_random_block(&uniq);
/* Pick a unique random key from the shared sequence. */
des_set_random_generator_seed(seed);
DES_set_random_generator_seed(seed);
set_sequence_number((unsigned char *)&uniq);
des_new_random_key(&new_key);
DES_new_random_key(&new_key);
/* Select a new nonshared sequence, */
des_set_random_generator_seed(&new_key);
DES_set_random_generator_seed(&new_key);
/* and use the current time to pick a key for the new sequence. */
set_sequence_number((unsigned char *)&now);
des_new_random_key(&new_key);
des_set_random_generator_seed(&new_key);
DES_new_random_key(&new_key);
DES_set_random_generator_seed(&new_key);
}
/* This is for backwards compatibility. */
void
des_random_key(des_cblock ret)
DES_random_key(DES_cblock ret)
{
des_new_random_key((des_cblock *)ret);
DES_new_random_key((DES_cblock *)ret);
}
#ifdef TESTRUN
@@ -483,13 +489,13 @@ main()
int
main()
{
des_cblock data;
DES_cblock data;
int i;
while (1)
{
do_initialize();
des_random_key(data);
DES_random_key(data);
for (i = 0; i < 8; i++)
printf("%02x", data[i]);
printf("\n");