md5pickle.c - 9base - revived minimalist port of Plan 9 userland to Unix | |
git clone git://git.suckless.org/9base | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
md5pickle.c (712B) | |
--- | |
1 #include "os.h" | |
2 #include <libsec.h> | |
3 | |
4 char* | |
5 md5pickle(MD5state *s) | |
6 { | |
7 char *p; | |
8 int m, n; | |
9 | |
10 m = 17+4*9+4*((s->blen+3)/3); | |
11 p = malloc(m); | |
12 if(p == nil) | |
13 return p; | |
14 n = sprint(p, "%16.16llux %8.8ux %8.8ux %8.8ux %8.8ux ", | |
15 s->len, | |
16 s->state[0], s->state[1], s->state[2], | |
17 s->state[3]); | |
18 enc64(p+n, m-n, s->buf, s->blen); | |
19 return p; | |
20 } | |
21 | |
22 MD5state* | |
23 md5unpickle(char *p) | |
24 { | |
25 MD5state *s; | |
26 | |
27 s = malloc(sizeof(*s)); | |
28 if(s == nil) | |
29 return nil; | |
30 s->len = strtoull(p, &p, 16); | |
31 s->state[0] = strtoul(p, &p, 16); | |
32 s->state[1] = strtoul(p, &p, 16); | |
33 s->state[2] = strtoul(p, &p, 16); | |
34 s->state[3] = strtoul(p, &p, 16); | |
35 s->blen = dec64(s->buf, sizeof(s->buf), p, strlen(p)); | |
36 s->malloced = 1; | |
37 s->seeded = 1; | |
38 return s; | |
39 } |