From owner-svn-src-user@FreeBSD.ORG Wed Mar 31 21:12:28 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0C978106566B; Wed, 31 Mar 2010 21:12:28 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EF4C68FC15; Wed, 31 Mar 2010 21:12:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o2VLCR8p023448; Wed, 31 Mar 2010 21:12:27 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o2VLCRE5023444; Wed, 31 Mar 2010 21:12:27 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201003312112.o2VLCRE5023444@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Wed, 31 Mar 2010 21:12:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206003 - user/des/svnsup/src/libsvnsup X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Mar 2010 21:12:28 -0000 Author: des Date: Wed Mar 31 21:12:27 2010 New Revision: 206003 URL: http://svn.freebsd.org/changeset/base/206003 Log: MD5 handling - currently, conversion to and from string Added: user/des/svnsup/src/libsvnsup/svnsup_md5.c (contents, props changed) user/des/svnsup/src/libsvnsup/svnsup_md5.h (contents, props changed) Modified: user/des/svnsup/src/libsvnsup/Makefile.am Modified: user/des/svnsup/src/libsvnsup/Makefile.am ============================================================================== --- user/des/svnsup/src/libsvnsup/Makefile.am Wed Mar 31 20:55:13 2010 (r206002) +++ user/des/svnsup/src/libsvnsup/Makefile.am Wed Mar 31 21:12:27 2010 (r206003) @@ -5,7 +5,9 @@ lib_LIBRARIES = libsvnsup.a libsvnsup_a_SOURCES = \ svnsup_base64.c \ svnsup_delta.c \ + svnsup_md5.c \ svnsup_string.c noinst_HEADERS = \ - svnsup.h + svnsup.h \ + svnsup_md5.h Added: user/des/svnsup/src/libsvnsup/svnsup_md5.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/libsvnsup/svnsup_md5.c Wed Mar 31 21:12:27 2010 (r206003) @@ -0,0 +1,92 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include +#include + +#include "svnsup_md5.h" + +// XXX error handling and documentation + +static unsigned int +x2i(char x) +{ + + assert(x != '\0'); + switch (x) { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + return (x - '0'); + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + return (x - 'A'); + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + return (x - 'a'); + } + assert(0); +} + +void +md5s2b(const char *md5s, svnsup_md5 *md5p) +{ + unsigned char *md5b = md5p->md5; + int i; + + for (i = 0; i < 16; ++i) { + md5b[i] = x2i(*md5s++) << 4; + md5b[i] |= x2i(*md5s++); + } + assert(*md5s == '\0'); +} + +static char +i2x(unsigned int i) +{ + + assert(i < 16); + return (i + (i < 10) ? '0' : 'a'); +} + +void +md5b2s(const svnsup_md5 *md5p, char *md5s) +{ + const unsigned char *md5b = md5p->md5; + int i; + + for (i = 0; i < 32; ++md5b) { + md5s[i++] = i2x(*md5b >> 4); + md5s[i++] = i2x(*md5b & 0x0f); + } + assert(*md5s == '\0'); +} Added: user/des/svnsup/src/libsvnsup/svnsup_md5.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/libsvnsup/svnsup_md5.h Wed Mar 31 21:12:27 2010 (r206003) @@ -0,0 +1,40 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +#ifndef SVNSUP_MD5_H_INCLUDED +#define SVNSUP_MD5_H_INCLUDED + +typedef struct svnsup_md5 { + unsigned char md5[16]; +} svnsup_md5; + +void md5s2b(const char *, svnsup_md5 *); +void md5b2s(const svnsup_md5 *, char *); + +#endif