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