diff options
author | Marc Horowitz <marc@mit.edu> | 1998-10-30 02:56:35 +0000 |
---|---|---|
committer | Marc Horowitz <marc@mit.edu> | 1998-10-30 02:56:35 +0000 |
commit | 1440ab035ba04550ddbbfbff1ee9b5571e3d95db (patch) | |
tree | 9d5e8d2e151a930e044c7d0f7c64053d244577a0 /src/lib/des425/new_rnd_key.c | |
parent | 61ddbf948ba6ee70c1bc049268c3dfa73bc9983e (diff) | |
download | krb5-1440ab035ba04550ddbbfbff1ee9b5571e3d95db.tar.gz krb5-1440ab035ba04550ddbbfbff1ee9b5571e3d95db.tar.xz krb5-1440ab035ba04550ddbbfbff1ee9b5571e3d95db.zip |
pull up 3des implementation from the marc-3des branch
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11001 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/des425/new_rnd_key.c')
-rw-r--r-- | src/lib/des425/new_rnd_key.c | 124 |
1 files changed, 47 insertions, 77 deletions
diff --git a/src/lib/des425/new_rnd_key.c b/src/lib/des425/new_rnd_key.c index 943b9e03b..4dd2e4be7 100644 --- a/src/lib/des425/new_rnd_key.c +++ b/src/lib/des425/new_rnd_key.c @@ -23,35 +23,34 @@ * */ - -#include "des.h" - -krb5_pointer des425_random_state = 0; - /* - * des_new_random_key: create a random des key - * - * Requires: des_set_random_number_generater_seed must be at called least - * once before this routine is called. - * - * Notes: the returned key has correct parity and is guarenteed not - * to be a weak des key. Des_generate_random_block is used to - * provide the random bits. + * Copyright (C) 1998 by the FundsXpress, INC. + * + * All rights reserved. + * + * Export of this software from the United States of America may require + * a specific license from the United States Government. It is the + * responsibility of any person or organization contemplating export to + * obtain such a license before exporting. + * + * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and + * distribute this software and its documentation for any purpose and + * without fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright notice and + * this permission notice appear in supporting documentation, and that + * the name of FundsXpress. not be used in advertising or publicity pertaining + * to distribution of the software without specific, written prior + * permission. FundsXpress makes no representations about the suitability of + * this software for any purpose. It is provided "as is" without express + * or implied warranty. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ -KRB5_DLLIMP int KRB5_CALLCONV -des_new_random_key(key) - mit_des_cblock key; -{ - krb5_keyblock * keyblock; - krb5_error_code kret; - kret = mit_des_random_key(NULL, des425_random_state, &keyblock); - if (kret) return kret; - - memcpy(key, keyblock->contents, sizeof(mit_des_cblock)); - krb5_free_keyblock(NULL, keyblock); - return 0; -} + +#include "des.h" /* * des_init_random_number_generator: @@ -71,67 +70,38 @@ void des_init_random_number_generator(key) mit_des_cblock key; { - krb5_keyblock keyblock; - krb5_encrypt_block eblock; - - krb5_use_enctype(NULL, &eblock, ENCTYPE_DES_CBC_CRC); + krb5_data seed; - keyblock.enctype = ENCTYPE_DES_CBC_CRC; - keyblock.length = sizeof(mit_des_cblock); - keyblock.contents = (krb5_octet *)key; + seed.length = sizeof(key); + seed.data = key; - if (des425_random_state) - mit_des_finish_random_key(&eblock, &des425_random_state); - mit_des_init_random_key(&eblock, &keyblock, &des425_random_state); + if (krb5_c_random_seed(/* XXX */ 0, &seed)) + /* XXX */ abort(); } /* - * This module implements a random number generator faculty such that the next - * number in any random number stream is very hard to predict without knowing - * the seed for that stream even given the preceeding random numbers. - */ - -/* - * des_set_random_generator_seed: this routine is used to select a random - * number stream. The stream that results is - * totally determined by the passed in key. - * (I.e., calling this routine again with the - * same key allows repeating a sequence of - * random numbers) + * des_new_random_key: create a random des key + * + * Requires: des_set_random_number_generater_seed must be at called least + * once before this routine is called. * - * Requires: key is a valid des key. I.e., has correct parity and is not a - * weak des key. + * Notes: the returned key has correct parity and is guarenteed not + * to be a weak des key. Des_generate_random_block is used to + * provide the random bits. */ -KRB5_DLLIMP void KRB5_CALLCONV -des_set_random_generator_seed(key) +KRB5_DLLIMP int KRB5_CALLCONV +des_new_random_key(key) mit_des_cblock key; { - krb5_data seed; + krb5_keyblock keyblock; + krb5_error_code kret; - seed.length = sizeof(mit_des_cblock); - seed.data = (krb5_pointer) key; + kret = krb5_c_make_random_key(/* XXX */ 0, ENCTYPE_DES_CBC_CRC, &keyblock); + if (kret) return kret; + + memcpy(key, keyblock.contents, sizeof(mit_des_cblock)); + krb5_free_keyblock_contents(/* XXX */ 0, &keyblock); - if (!des425_random_state) - des_init_random_number_generator(key); - mit_des_set_random_generator_seed(&seed, des425_random_state); + return 0; } - -/* - * des_set_sequence_number: this routine is used to set the sequence number - * of the current random number stream. This routine - * may be used to "seek" within the current random - * number stream. - * - * Note that des_set_random_generator_seed resets the sequence number to 0. - */ -void -des_set_sequence_number(new_sequence_number) - mit_des_cblock new_sequence_number; -{ - krb5_data sequence; - - sequence.length = sizeof(new_sequence_number); - sequence.data = (char FAR *)new_sequence_number; - mit_des_set_random_sequence_number(&sequence, des425_random_state); -} |