180ee5cbfSDavid du Colombier #include "os.h"
280ee5cbfSDavid du Colombier #include <mp.h>
380ee5cbfSDavid du Colombier #include <libsec.h>
480ee5cbfSDavid du Colombier
580ee5cbfSDavid du Colombier // I wasn't sure what to do when the buffer was not
680ee5cbfSDavid du Colombier // a multiple of 8. I did what lacy's cryptolib did
780ee5cbfSDavid du Colombier // to be compatible, but it looks dangerous to me
880ee5cbfSDavid du Colombier // since its encrypting plain text with the key. -- presotto
980ee5cbfSDavid du Colombier
1080ee5cbfSDavid du Colombier void
des3ECBencrypt(uchar * p,int len,DES3state * s)1180ee5cbfSDavid du Colombier des3ECBencrypt(uchar *p, int len, DES3state *s)
1280ee5cbfSDavid du Colombier {
1380ee5cbfSDavid du Colombier int i;
1480ee5cbfSDavid du Colombier uchar tmp[8];
1580ee5cbfSDavid du Colombier
1680ee5cbfSDavid du Colombier for(; len >= 8; len -= 8){
17*9a747e4fSDavid du Colombier triple_block_cipher(s->expanded, p, DES3EDE);
1880ee5cbfSDavid du Colombier p += 8;
1980ee5cbfSDavid du Colombier }
2080ee5cbfSDavid du Colombier
2180ee5cbfSDavid du Colombier if(len > 0){
2280ee5cbfSDavid du Colombier for (i=0; i<8; i++)
2380ee5cbfSDavid du Colombier tmp[i] = i;
24*9a747e4fSDavid du Colombier triple_block_cipher(s->expanded, tmp, DES3EDE);
2580ee5cbfSDavid du Colombier for (i = 0; i < len; i++)
2680ee5cbfSDavid du Colombier p[i] ^= tmp[i];
2780ee5cbfSDavid du Colombier }
2880ee5cbfSDavid du Colombier }
2980ee5cbfSDavid du Colombier
3080ee5cbfSDavid du Colombier void
des3ECBdecrypt(uchar * p,int len,DES3state * s)3180ee5cbfSDavid du Colombier des3ECBdecrypt(uchar *p, int len, DES3state *s)
3280ee5cbfSDavid du Colombier {
3380ee5cbfSDavid du Colombier int i;
3480ee5cbfSDavid du Colombier uchar tmp[8];
3580ee5cbfSDavid du Colombier
3680ee5cbfSDavid du Colombier for(; len >= 8; len -= 8){
37*9a747e4fSDavid du Colombier triple_block_cipher(s->expanded, p, DES3DED);
3880ee5cbfSDavid du Colombier p += 8;
3980ee5cbfSDavid du Colombier }
4080ee5cbfSDavid du Colombier
4180ee5cbfSDavid du Colombier if(len > 0){
4280ee5cbfSDavid du Colombier for (i=0; i<8; i++)
4380ee5cbfSDavid du Colombier tmp[i] = i;
44*9a747e4fSDavid du Colombier triple_block_cipher(s->expanded, tmp, DES3EDE);
4580ee5cbfSDavid du Colombier for (i = 0; i < len; i++)
4680ee5cbfSDavid du Colombier p[i] ^= tmp[i];
4780ee5cbfSDavid du Colombier }
4880ee5cbfSDavid du Colombier }
49