1*80ee5cbfSDavid du Colombier #include "os.h"
2*80ee5cbfSDavid du Colombier #include <mp.h>
3*80ee5cbfSDavid du Colombier #include <libsec.h>
4*80ee5cbfSDavid du Colombier
5*80ee5cbfSDavid du Colombier // I wasn't sure what to do when the buffer was not
6*80ee5cbfSDavid du Colombier // a multiple of 8. I did what lacy's cryptolib did
7*80ee5cbfSDavid du Colombier // to be compatible, but it looks dangerous to me
8*80ee5cbfSDavid du Colombier // since its encrypting plain text with the key. -- presotto
9*80ee5cbfSDavid du Colombier
10*80ee5cbfSDavid du Colombier void
desECBencrypt(uchar * p,int len,DESstate * s)11*80ee5cbfSDavid du Colombier desECBencrypt(uchar *p, int len, DESstate *s)
12*80ee5cbfSDavid du Colombier {
13*80ee5cbfSDavid du Colombier int i;
14*80ee5cbfSDavid du Colombier uchar tmp[8];
15*80ee5cbfSDavid du Colombier
16*80ee5cbfSDavid du Colombier for(; len >= 8; len -= 8){
17*80ee5cbfSDavid du Colombier block_cipher(s->expanded, p, 0);
18*80ee5cbfSDavid du Colombier p += 8;
19*80ee5cbfSDavid du Colombier }
20*80ee5cbfSDavid du Colombier
21*80ee5cbfSDavid du Colombier if(len > 0){
22*80ee5cbfSDavid du Colombier for (i=0; i<8; i++)
23*80ee5cbfSDavid du Colombier tmp[i] = i;
24*80ee5cbfSDavid du Colombier block_cipher(s->expanded, tmp, 0);
25*80ee5cbfSDavid du Colombier for (i = 0; i < len; i++)
26*80ee5cbfSDavid du Colombier p[i] ^= tmp[i];
27*80ee5cbfSDavid du Colombier }
28*80ee5cbfSDavid du Colombier }
29*80ee5cbfSDavid du Colombier
30*80ee5cbfSDavid du Colombier void
desECBdecrypt(uchar * p,int len,DESstate * s)31*80ee5cbfSDavid du Colombier desECBdecrypt(uchar *p, int len, DESstate *s)
32*80ee5cbfSDavid du Colombier {
33*80ee5cbfSDavid du Colombier int i;
34*80ee5cbfSDavid du Colombier uchar tmp[8];
35*80ee5cbfSDavid du Colombier
36*80ee5cbfSDavid du Colombier for(; len >= 8; len -= 8){
37*80ee5cbfSDavid du Colombier block_cipher(s->expanded, p, 1);
38*80ee5cbfSDavid du Colombier p += 8;
39*80ee5cbfSDavid du Colombier }
40*80ee5cbfSDavid du Colombier
41*80ee5cbfSDavid du Colombier if(len > 0){
42*80ee5cbfSDavid du Colombier for (i=0; i<8; i++)
43*80ee5cbfSDavid du Colombier tmp[i] = i;
44*80ee5cbfSDavid du Colombier block_cipher(s->expanded, tmp, 0);
45*80ee5cbfSDavid du Colombier for (i = 0; i < len; i++)
46*80ee5cbfSDavid du Colombier p[i] ^= tmp[i];
47*80ee5cbfSDavid du Colombier }
48*80ee5cbfSDavid du Colombier }
49