xref: /inferno-os/libsec/port/desmodes.c (revision 46439007cf417cbd9ac8049bb4122c890097a0fa)
1 #include "os.h"
2 #include <libsec.h>
3 
4 /*
5  *  these routines use the 64bit format for
6  *  DES keys.
7  */
8 
9 void
10 setupDESstate(DESstate *s, uchar key[8], uchar *ivec)
11 {
12 	memset(s, 0, sizeof(*s));
13 	memmove(s->key, key, sizeof(s->key));
14 	des_key_setup(key, s->expanded);
15 	if(ivec)
16 		memmove(s->ivec, ivec, 8);
17 	s->setup = 0xdeadbeef;
18 }
19 
20 void
21 setupDES3state(DES3state *s, uchar key[3][8], uchar *ivec)
22 {
23 	memset(s, 0, sizeof(*s));
24 	memmove(s->key, key, sizeof(s->key));
25 	des_key_setup(key[0], s->expanded[0]);
26 	des_key_setup(key[1], s->expanded[1]);
27 	des_key_setup(key[2], s->expanded[2]);
28 	if(ivec)
29 		memmove(s->ivec, ivec, 8);
30 	s->setup = 0xdeadbeef;
31 }
32