From 37da2899f40661e3e9631e497da8dc59b971cbd0 Mon Sep 17 00:00:00 2001 From: "Charles.Forsyth" Date: Fri, 22 Dec 2006 17:07:39 +0000 Subject: 20060303a --- libsec/port/desECB.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 libsec/port/desECB.c (limited to 'libsec/port/desECB.c') diff --git a/libsec/port/desECB.c b/libsec/port/desECB.c new file mode 100644 index 00000000..a9ad0018 --- /dev/null +++ b/libsec/port/desECB.c @@ -0,0 +1,48 @@ +#include "os.h" +#include +#include + +// 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]; + } +} -- cgit v1.2.3