1234567891011121314151617181920212223242526272829303132333435363738 |
- #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;
- }
|