1*9b943567SDavid du Colombier #include "../lib9.h" 2*9b943567SDavid du Colombier #include "../libsec/libsec.h" 3*9b943567SDavid du Colombier 4*9b943567SDavid du Colombier // I wasn't sure what to do when the buffer was not 5*9b943567SDavid du Colombier // a multiple of 8. I did what lacy's cryptolib did 6*9b943567SDavid du Colombier // to be compatible, but it looks dangerous to me 7*9b943567SDavid du Colombier // since its encrypting plain text with the key. -- presotto 8*9b943567SDavid du Colombier 9*9b943567SDavid du Colombier void 10*9b943567SDavid du Colombier desECBencrypt(uchar *p, int len, DESstate *s) 11*9b943567SDavid du Colombier { 12*9b943567SDavid du Colombier int i; 13*9b943567SDavid du Colombier uchar tmp[8]; 14*9b943567SDavid du Colombier 15*9b943567SDavid du Colombier for(; len >= 8; len -= 8){ 16*9b943567SDavid du Colombier block_cipher(s->expanded, p, 0); 17*9b943567SDavid du Colombier p += 8; 18*9b943567SDavid du Colombier } 19*9b943567SDavid du Colombier 20*9b943567SDavid du Colombier if(len > 0){ 21*9b943567SDavid du Colombier for (i=0; i<8; i++) 22*9b943567SDavid du Colombier tmp[i] = i; 23*9b943567SDavid du Colombier block_cipher(s->expanded, tmp, 0); 24*9b943567SDavid du Colombier for (i = 0; i < len; i++) 25*9b943567SDavid du Colombier p[i] ^= tmp[i]; 26*9b943567SDavid du Colombier } 27*9b943567SDavid du Colombier } 28*9b943567SDavid du Colombier 29*9b943567SDavid du Colombier void 30*9b943567SDavid du Colombier desECBdecrypt(uchar *p, int len, DESstate *s) 31*9b943567SDavid du Colombier { 32*9b943567SDavid du Colombier int i; 33*9b943567SDavid du Colombier uchar tmp[8]; 34*9b943567SDavid du Colombier 35*9b943567SDavid du Colombier for(; len >= 8; len -= 8){ 36*9b943567SDavid du Colombier block_cipher(s->expanded, p, 1); 37*9b943567SDavid du Colombier p += 8; 38*9b943567SDavid du Colombier } 39*9b943567SDavid du Colombier 40*9b943567SDavid du Colombier if(len > 0){ 41*9b943567SDavid du Colombier for (i=0; i<8; i++) 42*9b943567SDavid du Colombier tmp[i] = i; 43*9b943567SDavid du Colombier block_cipher(s->expanded, tmp, 0); 44*9b943567SDavid du Colombier for (i = 0; i < len; i++) 45*9b943567SDavid du Colombier p[i] ^= tmp[i]; 46*9b943567SDavid du Colombier } 47*9b943567SDavid du Colombier } 48