mdXhl.c revision 6684
114965Sjoerg/* mdXhl.c 214965Sjoerg * ---------------------------------------------------------------------------- 314965Sjoerg * "THE BEER-WARE LICENSE" (Revision 42): 414965Sjoerg * <phk@login.dkuug.dk> wrote this file. As long as you retain this notice you 514965Sjoerg * can do whatever you want with this stuff. If we meet some day, and you think 614965Sjoerg * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp 714965Sjoerg * ---------------------------------------------------------------------------- 814965Sjoerg * 914965Sjoerg * $FreeBSD: head/lib/libmd/mdXhl.c 6684 1995-02-24 08:51:34Z phk $ 1014965Sjoerg * 1114965Sjoerg */ 1214965Sjoerg 1314965Sjoerg#include <stdlib.h> 1414965Sjoerg#include <stdio.h> 1514965Sjoerg#include <errno.h> 1614965Sjoerg#include "mdX.h" 1714965Sjoerg#include <sys/file.h> 1814965Sjoerg#include <sys/types.h> 1914965Sjoerg#include <sys/uio.h> 2014965Sjoerg#include <unistd.h> 2114965Sjoerg 2214965Sjoergchar * 2314965SjoergMDXEnd(MDX_CTX *ctx) 2414965Sjoerg{ 2514965Sjoerg int i; 2650476Speter char *p = malloc(33); 2714965Sjoerg unsigned char digest[16]; 2814965Sjoerg char hex[]="0123456789abcdef"; 29240506Seadler 30206622Suqs if(!p) return 0; 3114965Sjoerg MDXFinal(digest,ctx); 3214965Sjoerg for(i=0;i<16;i++) { 3314965Sjoerg p[i+i] = hex[digest[i] >> 4]; 3414965Sjoerg p[i+i+1] = hex[digest[i] & 0x0f]; 3514965Sjoerg } 3684306Sru p[i+i] = '\0'; 3714965Sjoerg return p; 3814965Sjoerg} 3914965Sjoerg 4014965Sjoergchar * 4114965SjoergMDXFile (char *filename) 4214965Sjoerg{ 43131530Sru unsigned char buffer[BUFSIZ]; 44131530Sru MDX_CTX ctx; 4568962Sru int f,i,j; 4614965Sjoerg 4714965Sjoerg MDXInit(&ctx); 4814965Sjoerg f = open(filename,O_RDONLY); 4914965Sjoerg if(f < 0) return 0; 5014965Sjoerg while((i = read(f,buffer,sizeof buffer)) > 0) { 5114965Sjoerg MDXUpdate(&ctx,buffer,i); 5214965Sjoerg } 5314965Sjoerg j = errno; 54131530Sru close(f); 55131530Sru errno = j; 5614965Sjoerg if(i < 0) return 0; 5714965Sjoerg return MDXEnd(&ctx); 5814965Sjoerg} 5914965Sjoerg 6014965Sjoergchar * 6114965SjoergMDXData (const unsigned char *data, unsigned int len) 62131530Sru{ 63131530Sru MDX_CTX ctx; 6414965Sjoerg 6514965Sjoerg MDXInit(&ctx); 6614965Sjoerg MDXUpdate(&ctx,data,len); 6714965Sjoerg return MDXEnd(&ctx); 6814965Sjoerg} 6914965Sjoerg