home *** CD-ROM | disk | FTP | other *** search
- /* md5hl.c
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <phk@login.dkuug.dk> wrote this file. As long as you retain this notice you
- * can do whatever you want with this stuff. If we meet some day, and you think
- * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
- * ----------------------------------------------------------------------------
- *
- * $Id: md5hl.c,v 1.8.2.1 1998/02/18 02:24:05 jkh Exp $
- *
- */
-
- #include <sys/types.h>
- #include <fcntl.h>
- #include <unistd.h>
-
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
-
- #include "md5.h"
-
- char *
- MD5End(MD5_CTX *ctx, char *buf)
- {
- int i;
- unsigned char digest[16];
- static const char hex[]="0123456789abcdef";
-
- if (!buf)
- buf = malloc(33);
- if (!buf)
- return 0;
- MD5Final(digest,ctx);
- for (i=0;i<16;i++) {
- buf[i+i] = hex[digest[i] >> 4];
- buf[i+i+1] = hex[digest[i] & 0x0f];
- }
- buf[i+i] = '\0';
- return buf;
- }
-
- char *
- MD5File (const char *filename, char *buf)
- {
- unsigned char buffer[BUFSIZ];
- MD5_CTX ctx;
- int f,i,j;
-
- MD5Init(&ctx);
- f = open(filename,O_RDONLY);
- if (f < 0) return 0;
- while ((i = read(f,buffer,sizeof buffer)) > 0) {
- MD5Update(&ctx,buffer,i);
- }
- j = errno;
- close(f);
- errno = j;
- if (i < 0) return 0;
- return MD5End(&ctx, buf);
- }
-
- char *
- MD5Data (const unsigned char *data, unsigned int len, char *buf)
- {
- MD5_CTX ctx;
-
- MD5Init(&ctx);
- MD5Update(&ctx,data,len);
- return MD5End(&ctx, buf);
- }
-