| #include "os.h" | 
 | #include <libsec.h> | 
 |  | 
 | char* | 
 | sha1pickle(SHA1state *s) | 
 | { | 
 | 	char *p; | 
 | 	int m, n; | 
 |  | 
 | 	m = 5*9+4*((s->blen+3)/3); | 
 | 	p = malloc(m); | 
 | 	if(p == nil) | 
 | 		return p; | 
 | 	n = sprint(p, "%8.8ux %8.8ux %8.8ux %8.8ux %8.8ux ", | 
 | 		s->state[0], s->state[1], s->state[2], | 
 | 		s->state[3], s->state[4]); | 
 | 	enc64(p+n, m-n, s->buf, s->blen); | 
 | 	return p; | 
 | } | 
 |  | 
 | SHA1state* | 
 | sha1unpickle(char *p) | 
 | { | 
 | 	SHA1state *s; | 
 |  | 
 | 	s = malloc(sizeof(*s)); | 
 | 	if(s == nil) | 
 | 		return nil; | 
 | 	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->state[4] = strtoul(p, &p, 16); | 
 | 	s->blen = dec64(s->buf, sizeof(s->buf), p, strlen(p)); | 
 | 	s->malloced = 1; | 
 | 	s->seeded = 1; | 
 | 	return s; | 
 | } |