svn commit: r206003 - user/des/svnsup/src/libsvnsup

Dag-Erling Smorgrav des at FreeBSD.org
Wed Mar 31 21:12:28 UTC 2010


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 <sys/types.h>
+
+#include <assert.h>
+#include <ctype.h>
+
+#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


More information about the svn-src-user mailing list