Don't build/use our own (Alladin's rather) MD5 and RC4 code. Use OpenSSL's -- we link with OpenSSL anyway... -mi --- htmldoc/ps-pdf.cxx Tue Aug 1 12:58:50 2006 +++ htmldoc/ps-pdf.cxx Tue Apr 3 00:26:54 2007 @@ -136,6 +136,6 @@ /*#define DEBUG*/ #include "htmldoc.h" -#include "md5.h" -#include "rc4.h" +#include +#include #include #include @@ -342,6 +342,6 @@ static uchar encrypt_key[16]; static int encrypt_len; -static rc4_context_t encrypt_state; -static md5_byte_t file_id[16]; +static RC4_KEY encrypt_state; +static unsigned char file_id[16]; @@ -10582,5 +10582,5 @@ // Encrypt the colormap... encrypt_init(); - rc4_encrypt(&encrypt_state, cmap[0], cmap[0], ncolors * 3); + RC4(&encrypt_state, ncolors * 3, cmap[0], cmap[0]); } @@ -11203,7 +11203,7 @@ /* Font descriptor objects */ char temp[1024]; /* Temporary string */ - md5_state_t md5; /* MD5 state */ - md5_byte_t digest[16]; /* MD5 digest value */ - rc4_context_t rc4; /* RC4 context */ + MD5_CTX md5; /* MD5 state */ + unsigned char digest[16]; /* MD5 digest value */ + RC4_KEY rc4; /* RC4 context */ uchar owner_pad[32], /* Padded owner password */ owner_key[32], /* Owner key */ @@ -11604,8 +11604,8 @@ */ - md5_init(&md5); - md5_append(&md5, (md5_byte_t *)OutputPath, sizeof(OutputPath)); - md5_append(&md5, (md5_byte_t *)&doc_time, sizeof(doc_time)); - md5_finish(&md5, file_id); + MD5_Init(&md5); + MD5_Update(&md5, (unsigned char *)OutputPath, sizeof(OutputPath)); + MD5_Update(&md5, (unsigned char *)&doc_time, sizeof(doc_time)); + MD5_Final(file_id, &md5); /* @@ -11663,7 +11663,7 @@ */ - md5_init(&md5); - md5_append(&md5, owner_pad, 32); - md5_finish(&md5, digest); + MD5_Init(&md5); + MD5_Update(&md5, owner_pad, 32); + MD5_Final(digest, &md5); if (encrypt_len > 5) @@ -11672,7 +11672,7 @@ for (i = 0; i < 50; i ++) { - md5_init(&md5); - md5_append(&md5, digest, 16); - md5_finish(&md5, digest); + MD5_Init(&md5); + MD5_Update(&md5, digest, 16); + MD5_Final(digest, &md5); } @@ -11687,12 +11687,12 @@ encrypt_key[j] = digest[j] ^ i; - rc4_init(&rc4, encrypt_key, encrypt_len); - rc4_encrypt(&rc4, owner_key, owner_key, 32); + RC4_set_key(&rc4, encrypt_len, encrypt_key); + RC4(&rc4, 32, owner_key, owner_key); } } else { - rc4_init(&rc4, digest, encrypt_len); - rc4_encrypt(&rc4, user_pad, owner_key, 32); + RC4_set_key(&rc4, encrypt_len, digest); + RC4(&rc4, 32, user_pad, owner_key); } @@ -11716,7 +11716,7 @@ */ - md5_init(&md5); - md5_append(&md5, user_pad, 32); - md5_append(&md5, owner_key, 32); + MD5_Init(&md5); + MD5_Update(&md5, user_pad, 32); + MD5_Update(&md5, owner_key, 32); perm_bytes[0] = perm_value; @@ -11725,7 +11725,7 @@ perm_bytes[3] = perm_value >> 24; - md5_append(&md5, perm_bytes, 4); - md5_append(&md5, file_id, 16); - md5_finish(&md5, digest); + MD5_Update(&md5, perm_bytes, 4); + MD5_Update(&md5, file_id, 16); + MD5_Final(digest, &md5); if (encrypt_len > 5) @@ -11734,7 +11734,7 @@ for (i = 0; i < 50; i ++) { - md5_init(&md5); - md5_append(&md5, digest, 16); - md5_finish(&md5, digest); + MD5_Init(&md5); + MD5_Update(&md5, digest, 16); + MD5_Final(digest, &md5); } } @@ -11748,8 +11748,8 @@ if (encrypt_len > 5) { - md5_init(&md5); - md5_append(&md5, pad, 32); - md5_append(&md5, file_id, 16); - md5_finish(&md5, user_key); + MD5_Init(&md5); + MD5_Update(&md5, pad, 32); + MD5_Update(&md5, file_id, 16); + MD5_Final(user_key, &md5); memset(user_key + 16, 0, 16); @@ -11762,12 +11762,12 @@ digest[j] = encrypt_key[j] ^ i; - rc4_init(&rc4, digest, encrypt_len); - rc4_encrypt(&rc4, user_key, user_key, 16); + RC4_set_key(&rc4, encrypt_len, digest); + RC4(&rc4, 16, user_key, user_key); } } else { - rc4_init(&rc4, encrypt_key, encrypt_len); - rc4_encrypt(&rc4, pad, user_key, 32); + RC4_set_key(&rc4, encrypt_len, encrypt_key); + RC4(&rc4, 32, pad, user_key); } @@ -11956,5 +11956,5 @@ bytes = len; - rc4_encrypt(&encrypt_state, s, news, bytes); + RC4(&encrypt_state, bytes, s, news); for (i = 0; i < bytes; i ++) @@ -12619,5 +12619,5 @@ unicode[1] = 0xff; - rc4_encrypt(&encrypt_state, unicode, enicode, 2); + RC4(&encrypt_state, 2, unicode, enicode); fprintf(out, "%02x%02x", enicode[0], enicode[1]); @@ -12629,5 +12629,5 @@ unicode[1] = ch; - rc4_encrypt(&encrypt_state, unicode, enicode, 2); + RC4(&encrypt_state, 2, unicode, enicode); fprintf(out, "%02x%02x", enicode[0], enicode[1]); @@ -12661,6 +12661,6 @@ uchar data[21], /* Key data */ *dataptr; /* Pointer to key data */ - md5_state_t md5; /* MD5 state */ - md5_byte_t digest[16]; /* MD5 digest value */ + MD5_CTX md5; /* MD5 state */ + unsigned char digest[16]; /* MD5 digest value */ @@ -12682,7 +12682,7 @@ */ - md5_init(&md5); - md5_append(&md5, data, encrypt_len + 5); - md5_finish(&md5, digest); + MD5_Init(&md5); + MD5_Update(&md5, data, encrypt_len + 5); + MD5_Final(digest, &md5); /* @@ -12691,7 +12691,7 @@ if (encrypt_len > 11) - rc4_init(&encrypt_state, digest, 16); + RC4_set_key(&encrypt_state, 16, digest); else - rc4_init(&encrypt_state, digest, encrypt_len + 5); + RC4_set_key(&encrypt_state, encrypt_len + 5, digest); } @@ -12761,6 +12761,6 @@ { if (Encryption) - rc4_encrypt(&encrypt_state, comp_buffer, comp_buffer, - (uchar *)compressor.next_out - (uchar *)comp_buffer); + RC4(&encrypt_state, (uchar *)compressor.next_out - (uchar *)comp_buffer, + comp_buffer, comp_buffer); fwrite(comp_buffer, (uchar *)compressor.next_out - (uchar *)comp_buffer, @@ -12785,6 +12785,6 @@ { if (Encryption) - rc4_encrypt(&encrypt_state, comp_buffer, comp_buffer, - (uchar *)compressor.next_out - (uchar *)comp_buffer); + RC4(&encrypt_state, (uchar *)compressor.next_out - (uchar *)comp_buffer, + comp_buffer, comp_buffer); fwrite(comp_buffer, (uchar *)compressor.next_out - (uchar *)comp_buffer, @@ -12878,6 +12878,6 @@ { if (Encryption) - rc4_encrypt(&encrypt_state, comp_buffer, comp_buffer, - (uchar *)compressor.next_out - (uchar *)comp_buffer); + RC4(&encrypt_state, (uchar *)compressor.next_out - (uchar *)comp_buffer, + comp_buffer, comp_buffer); fwrite(comp_buffer, @@ -12912,5 +12912,5 @@ bytes = sizeof(newbuf); - rc4_encrypt(&encrypt_state, buf + i, newbuf, bytes); + RC4(&encrypt_state, bytes, buf + i, newbuf); fwrite(newbuf, bytes, 1, out); } --- htmldoc/http.h Mon Apr 3 11:41:08 2006 +++ htmldoc/http.h Tue Apr 3 00:24:01 2007 @@ -61,5 +61,5 @@ # endif /* WIN32 */ -# include "md5.h" +# include /* @@ -345,5 +345,5 @@ /* Buffer for incoming data */ int auth_type; /* Authentication in use */ - md5_state_t md5_state; /* MD5 state */ + MD5_CTX md5_state; /* MD5 state */ char nonce[HTTP_MAX_VALUE]; /* Nonce value */