2 * lib/crypto/des/process_ky.c
4 * Copyright 1990 by the Massachusetts Institute of Technology.
7 * Export of this software from the United States of America may
8 * require a specific license from the United States Government.
9 * It is the responsibility of any person or organization contemplating
10 * export to obtain such a license before exporting.
12 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
13 * distribute this software and its documentation for any purpose and
14 * without fee is hereby granted, provided that the above copyright
15 * notice appear in all copies and that both that copyright notice and
16 * this permission notice appear in supporting documentation, and that
17 * the name of M.I.T. not be used in advertising or publicity pertaining
18 * to distribution of the software without specific, written prior
19 * permission. M.I.T. makes no representations about the suitability of
20 * this software for any purpose. It is provided "as is" without express
21 * or implied warranty.
28 does any necessary key preprocessing (such as computing key
30 eblock->crypto_entry must be set by the caller; the other elements
31 of eblock are to be assigned by this function.
32 [in particular, eblock->key must be set by this function if the key
33 is needed in raw form by the encryption routine]
35 The caller may not move or reallocate "keyblock" before calling
36 finish_key on "eblock"
42 mit_des_process_key (eblock, keyblock)
43 krb5_encrypt_block * eblock;
44 const krb5_keyblock * keyblock;
46 struct mit_des_ks_struct *schedule; /* pointer to key schedules */
48 if (keyblock->length != sizeof (mit_des_cblock))
49 return KRB5_BAD_KEYSIZE;
51 if ( !(schedule = (struct mit_des_ks_struct *) malloc(sizeof(mit_des_key_schedule))) )
53 #define cleanup() { free( (char *) schedule); }
55 switch (mit_des_key_sched (keyblock->contents, schedule)) {
58 return KRB5DES_BAD_KEYPAR;
62 return KRB5DES_WEAK_KEY;
65 eblock->key = (krb5_keyblock *) keyblock;
66 eblock->priv = (krb5_pointer) schedule;