#include "os.h"
#include <libsec.h>

char*
md5pickle(MD5state *s)
{
	char *p;
	int m, n;

	m = 17+4*9+4*((s->blen+3)/3);
	p = malloc(m);
	if(p == nil)
		return p;
	n = sprint(p, "%16.16llux %8.8ux %8.8ux %8.8ux %8.8ux ",
		s->len,
		s->state[0], s->state[1], s->state[2],
		s->state[3]);
	enc64(p+n, m-n, s->buf, s->blen);
	return p;
}

MD5state*
md5unpickle(char *p)
{
	MD5state *s;

	s = malloc(sizeof(*s));
	if(s == nil)
		return nil;
	s->len = strtoull(p, &p, 16);
	s->state[0] = strtoul(p, &p, 16);
	s->state[1] = strtoul(p, &p, 16);
	s->state[2] = strtoul(p, &p, 16);
	s->state[3] = strtoul(p, &p, 16);
	s->blen = dec64(s->buf, sizeof(s->buf), p, strlen(p));
	s->malloced = 1;
	s->seeded = 1;
	return s;
}
