void device_image_interface::run_hash(void (*partialhash)(hash_collection &, const unsigned char *, unsigned long, const char *), hash_collection &hashes, const char *types) { UINT32 size; UINT8 *buf = NULL; hashes.reset(); size = (UINT32) length(); buf = (UINT8*)malloc(size); memset(buf,0,size); /* read the file */ fseek(0, SEEK_SET); fread(buf, size); if (partialhash) partialhash(hashes, buf, size, types); else hashes.compute(buf, size, types); /* cleanup */ free(buf); fseek(0, SEEK_SET); }
static int run_hash(mess_image *image, void (*partialhash)(char *, const unsigned char *, unsigned long, unsigned int), char *dest, unsigned int hash_functions) { UINT32 size; UINT8 *buf = NULL; *dest = '\0'; size = (UINT32) image_length(image); buf = (UINT8 *) malloc(size); if (!buf) return FALSE; /* read the file */ image_fseek(image, 0, SEEK_SET); image_fread(image, buf, size); if (partialhash) partialhash(dest, buf, size, hash_functions); else hash_compute(dest, buf, size, hash_functions); /* cleanup */ if (buf) free(buf); image_fseek(image, 0, SEEK_SET); return TRUE; }
void device_image_interface::device_compute_hash(hash_collection &hashes, const void *data, size_t length, const char *types) const { /* retrieve the partial hash func */ device_image_partialhash_func partialhash = get_partial_hash(); /* compute the hash */ if (partialhash) partialhash(hashes, (const unsigned char*)data, length, types); else hashes.compute(reinterpret_cast<const UINT8 *>(data), length, types); }
void device_image_interface::run_hash(void (*partialhash)(hash_collection &, const unsigned char *, unsigned long, const char *), hash_collection &hashes, const char *types) { UINT32 size; dynamic_buffer buf; hashes.reset(); size = (UINT32) length(); buf.resize_and_clear(size); /* read the file */ fseek(0, SEEK_SET); fread(buf, size); if (partialhash) partialhash(hashes, buf, size, types); else hashes.compute(buf, size, types); /* cleanup */ fseek(0, SEEK_SET); }
void device_image_interface::run_hash(void (*partialhash)(util::hash_collection &, const unsigned char *, unsigned long, const char *), util::hash_collection &hashes, const char *types) { UINT32 size; dynamic_buffer buf; hashes.reset(); size = (UINT32) length(); buf.resize(size); memset(&buf[0], 0, size); // read the file fseek(0, SEEK_SET); fread(&buf[0], size); if (partialhash) partialhash(hashes, &buf[0], size, types); else hashes.compute(&buf[0], size, types); // cleanup fseek(0, SEEK_SET); }