| #include "os.h" |
| #include <mp.h> |
| #include <libsec.h> |
| |
| /* I wasn't sure what to do when the buffer was not */ |
| /* a multiple of 8. I did what lacy's cryptolib did */ |
| /* to be compatible, but it looks dangerous to me */ |
| /* since its encrypting plain text with the key. -- presotto */ |
| |
| void |
| desECBencrypt(uchar *p, int len, DESstate *s) |
| { |
| int i; |
| uchar tmp[8]; |
| |
| for(; len >= 8; len -= 8){ |
| block_cipher(s->expanded, p, 0); |
| p += 8; |
| } |
| |
| if(len > 0){ |
| for (i=0; i<8; i++) |
| tmp[i] = i; |
| block_cipher(s->expanded, tmp, 0); |
| for (i = 0; i < len; i++) |
| p[i] ^= tmp[i]; |
| } |
| } |
| |
| void |
| desECBdecrypt(uchar *p, int len, DESstate *s) |
| { |
| int i; |
| uchar tmp[8]; |
| |
| for(; len >= 8; len -= 8){ |
| block_cipher(s->expanded, p, 1); |
| p += 8; |
| } |
| |
| if(len > 0){ |
| for (i=0; i<8; i++) |
| tmp[i] = i; |
| block_cipher(s->expanded, tmp, 0); |
| for (i = 0; i < len; i++) |
| p[i] ^= tmp[i]; |
| } |
| } |