|  | #include "os.h" | 
|  | #include <libsec.h> | 
|  |  | 
|  | /* | 
|  | *  these routines use the 64bit format for | 
|  | *  DES keys. | 
|  | */ | 
|  |  | 
|  | void | 
|  | setupDESstate(DESstate *s, uchar key[8], uchar *ivec) | 
|  | { | 
|  | memset(s, 0, sizeof(*s)); | 
|  | memmove(s->key, key, sizeof(s->key)); | 
|  | des_key_setup(key, s->expanded); | 
|  | if(ivec) | 
|  | memmove(s->ivec, ivec, 8); | 
|  | s->setup = 0xdeadbeef; | 
|  | } | 
|  |  | 
|  | void | 
|  | setupDES3state(DES3state *s, uchar key[3][8], uchar *ivec) | 
|  | { | 
|  | memset(s, 0, sizeof(*s)); | 
|  | memmove(s->key, key, sizeof(s->key)); | 
|  | des_key_setup(key[0], s->expanded[0]); | 
|  | des_key_setup(key[1], s->expanded[1]); | 
|  | des_key_setup(key[2], s->expanded[2]); | 
|  | if(ivec) | 
|  | memmove(s->ivec, ivec, 8); | 
|  | s->setup = 0xdeadbeef; | 
|  | } |