2 ** Copyright 2007 Double Precision, Inc.
3 ** See COPYING for distribution information.
10 static const char rcsid
[]="$Id: md5_hash.c,v 1.6 2007/10/07 02:50:45 mrsam Exp $";
12 static const char base64tab
[]=
13 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
15 const char *md5_hash_courier(const char *passw
)
18 static char hash_buffer
[1+(sizeof(md5buf
)+2)/3*4];
23 md5_digest(passw
, strlen(passw
), md5buf
);
27 for (i
=0; i
<sizeof(md5buf
); i
+= 3)
30 b
= i
+1 < sizeof(md5buf
) ? md5buf
[i
+1]:0;
31 c
= i
+2 < sizeof(md5buf
) ? md5buf
[i
+2]:0;
33 d
=base64tab
[ a
>> 2 ];
34 e
=base64tab
[ ((a
& 3 ) << 4) | (b
>> 4)];
35 f
=base64tab
[ ((b
& 15) << 2) | (c
>> 6)];
36 g
=base64tab
[ c
& 63 ];
37 if (i
+ 1 >= sizeof(md5buf
)) f
='=';
38 if (i
+ 2 >= sizeof(md5buf
)) g
='=';
49 const char *md5_hash_raw(const char *passw
)
52 static char hash_buffer
[sizeof(digest
)*2+1];
58 md5_digest(passw
, strlen(passw
), digest
);
59 for (j
=0; j
<sizeof(digest
); j
++)
61 sprintf(tmp_buf
,"%02x",digest
[j
]);
62 hash_buffer
[i
++]=tmp_buf
[0];
63 hash_buffer
[i
++]=tmp_buf
[1];