From 0fc65b37a1e7585ca2347bf61dcb8bc3a6b146a4 Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 21 Mar 2004 14:04:56 +0000 Subject: Add most of libsec. --- src/libsec/port/desECB.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/libsec/port/desECB.c (limited to 'src/libsec/port/desECB.c') diff --git a/src/libsec/port/desECB.c b/src/libsec/port/desECB.c new file mode 100644 index 00000000..a9ad0018 --- /dev/null +++ b/src/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