int main(int argc, char *argv[]) { int file_descript; unsigned long file_size; char* file_buffer; if(argc != 2) { printf("Must specify the file\n"); exit(-1); } printf("using file:\t%s\n", argv[1]); file_descript = open(argv[1], O_RDONLY); if(file_descript < 0) exit(-1); file_size = get_size_by_fd(file_descript); printf("file size:\t%lu\n", file_size); file_buffer = mmap(0, file_size, PROT_READ, MAP_SHARED, file_descript, 0); MD5((unsigned char*) file_buffer, file_size, result); munmap(file_buffer, file_size); print_md5_sum(result); printf(" %s\n", argv[1]); return 0; }
object* digest::md5file(string *file) { int file_descript = open(file->string_val.c_str(), O_RDONLY); if(file_descript < 0) exit(-1); size_t file_size = get_size_by_fd(file_descript); char *file_buffer = (char*)mmap(0, file_size, PROT_READ, MAP_SHARED, file_descript, 0); MD5((unsigned char*) file_buffer, file_size, result); munmap(file_buffer, file_size); return new string((char*)&result); }
int main(int argc, char *argv[]) { char md5[MD5_DIGEST_LENGTH]; int file_descript; unsigned long file_size; char *file_buffer; FILE *pkr_file; int signature_size = BITS*sizeof(DES_cblock); file_descript = open(argv[1], O_RDONLY); if(file_descript < 0) { puts("Signed message unreadable"); exit(-1); } //read signed message file_size = get_size_by_fd(file_descript); file_buffer = mmap(0, file_size, PROT_READ, MAP_SHARED, file_descript, 0); //copy signature memcpy(SG, file_buffer, signature_size); MD5((unsigned char*) (file_buffer+signature_size), file_size-signature_size, md5); //read PKR pkr_file = fopen (argv[2],"r"); if (pkr_file!=NULL) { fread(S, sizeof(DES_cblock), 2*BITS, pkr_file); fread(R, sizeof(DES_cblock), 2*BITS, pkr_file); fclose (pkr_file); } else { puts("PKR unreadable"); return -1; } if (verifyMsg(md5)) puts("FAIL"); else puts ("OK"); return (0); }