summaryrefslogtreecommitdiffstats
path: root/src/lib/des425/new_rnd_key.c
diff options
context:
space:
mode:
authorMarc Horowitz <marc@mit.edu>1998-10-30 02:56:35 +0000
committerMarc Horowitz <marc@mit.edu>1998-10-30 02:56:35 +0000
commit1440ab035ba04550ddbbfbff1ee9b5571e3d95db (patch)
tree9d5e8d2e151a930e044c7d0f7c64053d244577a0 /src/lib/des425/new_rnd_key.c
parent61ddbf948ba6ee70c1bc049268c3dfa73bc9983e (diff)
downloadkrb5-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.c124
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);
-}