#include <stdio.h>
#include "genfile.h"
#include "md5.h"

// Outstr must be at least 33 bytes long.
void md5gf(GFILE *f, char *outstr) {
	unsigned char buf[1024];
	unsigned char digest[16];
	struct MD5Context ctx;
	int lr;
	int i;
	
	f->seek(0);
	MD5Init(&ctx);
	while (lr = f->read(buf, 1, 1024)) {
		MD5Update(&ctx, buf, lr);
	}
	MD5Final(digest, &ctx);

	for(i = 0; i < 16; i++) {
		sprintf(outstr, "%02x", digest[i]);
		outstr += 2;
	}
}
