tmd5pickle.c - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tmd5pickle.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 }