1 0fc65b37 2004-03-21 devnull #include "os.h"
2 0fc65b37 2004-03-21 devnull #include <mp.h>
3 0fc65b37 2004-03-21 devnull #include <libsec.h>
5 cbeb0b26 2006-04-01 devnull /* Because of the way that non multiple of 8 */
6 cbeb0b26 2006-04-01 devnull /* buffers are handled, the decryptor must */
7 cbeb0b26 2006-04-01 devnull /* be fed buffers of the same size as the */
8 cbeb0b26 2006-04-01 devnull /* encryptor */
11 cbeb0b26 2006-04-01 devnull /* If the length is not a multiple of 8, I encrypt */
12 cbeb0b26 2006-04-01 devnull /* the overflow to be compatible with lacy's cryptlib */
14 0fc65b37 2004-03-21 devnull desCBCencrypt(uchar *p, int len, DESstate *s)
16 0fc65b37 2004-03-21 devnull uchar *p2, *ip, *eip;
18 0fc65b37 2004-03-21 devnull for(; len >= 8; len -= 8){
20 0fc65b37 2004-03-21 devnull ip = s->ivec;
21 0fc65b37 2004-03-21 devnull for(eip = ip+8; ip < eip; )
22 0fc65b37 2004-03-21 devnull *p2++ ^= *ip++;
23 0fc65b37 2004-03-21 devnull block_cipher(s->expanded, p, 0);
24 0fc65b37 2004-03-21 devnull memmove(s->ivec, p, 8);
28 0fc65b37 2004-03-21 devnull if(len > 0){
29 0fc65b37 2004-03-21 devnull ip = s->ivec;
30 0fc65b37 2004-03-21 devnull block_cipher(s->expanded, ip, 0);
31 0fc65b37 2004-03-21 devnull for(eip = ip+len; ip < eip; )
32 0fc65b37 2004-03-21 devnull *p++ ^= *ip++;
37 0fc65b37 2004-03-21 devnull desCBCdecrypt(uchar *p, int len, DESstate *s)
39 0fc65b37 2004-03-21 devnull uchar *ip, *eip, *tp;
40 0fc65b37 2004-03-21 devnull uchar tmp[8];
42 0fc65b37 2004-03-21 devnull for(; len >= 8; len -= 8){
43 0fc65b37 2004-03-21 devnull memmove(tmp, p, 8);
44 0fc65b37 2004-03-21 devnull block_cipher(s->expanded, p, 1);
45 0fc65b37 2004-03-21 devnull tp = tmp;
46 0fc65b37 2004-03-21 devnull ip = s->ivec;
47 0fc65b37 2004-03-21 devnull for(eip = ip+8; ip < eip; ){
48 0fc65b37 2004-03-21 devnull *p++ ^= *ip;
49 0fc65b37 2004-03-21 devnull *ip++ = *tp++;
53 0fc65b37 2004-03-21 devnull if(len > 0){
54 0fc65b37 2004-03-21 devnull ip = s->ivec;
55 0fc65b37 2004-03-21 devnull block_cipher(s->expanded, ip, 0);
56 0fc65b37 2004-03-21 devnull for(eip = ip+len; ip < eip; )
57 0fc65b37 2004-03-21 devnull *p++ ^= *ip++;