/** * sha1.c: this file provides the sha1 hashing algorithm * based in part on code in the public domain by Niyaz PK. * -- coded by Ajandurah@Demonslair 21/02/08 */ #include #ifdef LATTICE #include "/lpc_incl.h" #else #include "../lpc_incl.h" #include "../efun_protos.h" #endif #define rotateleft(x,n) ((x<>(32-n))) #define rotateright(x,n) ((x>>n) | (x<<(32-n))) #ifdef F_SHA1 void f_sha1(void) { unsigned long int h0,h1,h2,h3,h4,a,b,c,d,e,f,k,temp; int i, j, m; h0 = 0x67452301; h1 = 0xEFCDAB89; h2 = 0x98BADCFE; h3 = 0x10325476; h4 = 0xC3D2E1F0; unsigned char *str; str = (unsigned char *)malloc(SVALUE_STRLEN(sp)+100); strcpy((char *)str, (const char *)sp->u.string); int current_length = strlen((const char *)str); int original_length = current_length; str[current_length] = 0x80; str[current_length + 1] = '\0'; char ic = str[current_length]; current_length++; int ib = current_length % 64; if (ib < 56) ib = 56 - ib; else ib = 120 - ib; for (i=0; i