Module Name:    othersrc
Committed By:   agc
Date:           Wed Mar 26 22:13:44 UTC 2014

Modified Files:
        othersrc/external/bsd/multigest/bin: Makefile
        othersrc/external/bsd/multigest/dist: multigest.c multigest.h
Added Files:
        othersrc/external/bsd/multigest/bin: 28.expected

Log Message:
update multigest to version 20140326

+ allow the digest combiners to be specified anywhere in the list
  of digest algorithms
+ add tests for comb4p


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 othersrc/external/bsd/multigest/bin/28.expected
cvs rdiff -u -r1.6 -r1.7 othersrc/external/bsd/multigest/bin/Makefile
cvs rdiff -u -r1.13 -r1.14 othersrc/external/bsd/multigest/dist/multigest.c
cvs rdiff -u -r1.10 -r1.11 othersrc/external/bsd/multigest/dist/multigest.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: othersrc/external/bsd/multigest/bin/Makefile
diff -u othersrc/external/bsd/multigest/bin/Makefile:1.6 othersrc/external/bsd/multigest/bin/Makefile:1.7
--- othersrc/external/bsd/multigest/bin/Makefile:1.6	Wed Mar 26 06:43:01 2014
+++ othersrc/external/bsd/multigest/bin/Makefile	Wed Mar 26 22:13:44 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.6 2014/03/26 06:43:01 agc Exp $
+# $NetBSD: Makefile,v 1.7 2014/03/26 22:13:44 agc Exp $
 
 .include <bsd.own.mk>
 
@@ -106,3 +106,12 @@ t: ${PROG}
 	env LD_LIBRARY_PATH=${LIB_MULTIGEST_DIR} ./${PROG} -o 27.out -a rmd160,hash,sha1 2.in
 	diff 27.expected 27.out
 	rm -f 27.out
+	env LD_LIBRARY_PATH=${LIB_MULTIGEST_DIR} ./${PROG} -o 28.out -a comb4p,sha1,rmd160 < 2.in
+	diff 28.expected 28.out
+	rm -f 28.out
+	env LD_LIBRARY_PATH=${LIB_MULTIGEST_DIR} ./${PROG} -o 29.out -a sha1,comb4p,rmd160 < 2.in
+	diff 28.expected 29.out
+	rm -f 29.out
+	env LD_LIBRARY_PATH=${LIB_MULTIGEST_DIR} ./${PROG} -o 30.out -a sha1,rmd160,comb4p < 2.in
+	diff 28.expected 30.out
+	rm -f 30.out

Index: othersrc/external/bsd/multigest/dist/multigest.c
diff -u othersrc/external/bsd/multigest/dist/multigest.c:1.13 othersrc/external/bsd/multigest/dist/multigest.c:1.14
--- othersrc/external/bsd/multigest/dist/multigest.c:1.13	Wed Mar 26 06:43:01 2014
+++ othersrc/external/bsd/multigest/dist/multigest.c	Wed Mar 26 22:13:44 2014
@@ -450,11 +450,13 @@ normalise(multigest_t *multigest, const 
 			break;
 		}
 		for (d = multigest->digs, i = 0 ; i < multigest->digc ; i++, d++) {
-			(*d->update)(&multigest->ctx[d->ctxoff], &data[*from],
-				(unsigned)(match[0].rm_so - *from));
-			if (multigest->repllen) {
-				(*d->update)(&multigest->ctx[d->ctxoff], multigest->repl,
-					multigest->repllen);
+			if (d->rawsize) {
+				(*d->update)(&multigest->ctx[d->ctxoff], &data[*from],
+					(unsigned)(match[0].rm_so - *from));
+				if (multigest->repllen) {
+					(*d->update)(&multigest->ctx[d->ctxoff], multigest->repl,
+						multigest->repllen);
+				}
 			}
 		}
 		*from = match[0].rm_eo;
@@ -478,13 +480,11 @@ xorbuf(uint8_t *out, uint8_t *in1, uint8
 
 /* a round of comb4p combination */
 static int
-comb4p_round(multigest_t *m, uint8_t *out, uint8_t *in, size_t insize, uint32_t r)
+comb4p_round(multigest_t *m, uint8_t *out, uint8_t *in, multigest_dig_t *d1, multigest_dig_t *d2, uint32_t r)
 {
-	multigest_dig_t	*d;
 	const int	 indian = 1;
 	uint32_t	 b2;
 	uint32_t	 b4;
-	uint32_t	 i;
 	uint8_t		 h1[4096];
 	uint8_t		 h2[4096];
 
@@ -494,16 +494,14 @@ comb4p_round(multigest_t *m, uint8_t *ou
 		b4 = (r & 0x000000ff);
 		r = (r & 0xff00ff00) | (b2 >> 16) | (b4 << 16);
 	}
-	for (d = &m->digs[1], i = 1 ; i < m->digc ; i++, d++) {
-		(*d->update)(&m->ctx[d->ctxoff], (const char *)&r, sizeof(r));
-		(*d->update)(&m->ctx[d->ctxoff], (const char *)in, insize);
-	}
-	d = &m->digs[1];
-	(*d->final)(h1, &m->ctx[d->ctxoff]);
-	xorbuf(out, out, h1, d->rawsize);
-	d = &m->digs[2];
-	(*d->final)(h2, &m->ctx[d->ctxoff]);
-	xorbuf(out, out, h2, d->rawsize);
+	(*d1->update)(&m->ctx[d1->ctxoff], (const char *)&r, sizeof(r));
+	(*d2->update)(&m->ctx[d2->ctxoff], (const char *)&r, sizeof(r));
+	(*d1->update)(&m->ctx[d1->ctxoff], (const char *)in, d1->rawsize);
+	(*d2->update)(&m->ctx[d2->ctxoff], (const char *)in, d2->rawsize);
+	(*d1->final)(h1, &m->ctx[d1->ctxoff]);
+	xorbuf(out, out, h1, d1->rawsize);
+	(*d2->final)(h2, &m->ctx[d2->ctxoff]);
+	xorbuf(out, out, h2, d2->rawsize);
 	return 1;
 }
 
@@ -647,7 +645,9 @@ multigest_update(multigest_t *multigest,
 	if (multigest && data) {
 		normalise(multigest, data, len, &from);
 		for (d = multigest->digs, i = 0 ; i < multigest->digc ; i++, d++) {
-			(*d->update)(&multigest->ctx[d->ctxoff], &data[from], (unsigned)(len - from));
+			if (d->rawsize) {
+				(*d->update)(&multigest->ctx[d->ctxoff], &data[from], (unsigned)(len - from));
+			}
 		}
 	}
 }
@@ -669,12 +669,14 @@ multigest_final(multigest_t *m, uint8_t 
 			if (!find_digests(m, &d1, &d2)) {
 				return;
 			}
+			memset(h1, 0x0, sizeof(h1));
+			memset(h2, 0x0, sizeof(h2));
 			(*d1->final)(h1, &m->ctx[d1->ctxoff]);
 			(*d2->final)(h2, &m->ctx[d2->ctxoff]);
 			xorbuf(h1, h1, h2, d2->rawsize);
-			comb4p_round(m, h2, h1, d1->rawsize, 1); 
-			comb4p_round(m, h1, h2, d2->rawsize, 2); 
-			memcpy(raw, h1, d2->rawsize);
+			comb4p_round(m, h2, h1, d1, d2, 1); 
+			comb4p_round(m, h1, h2, d1, d2, 2); 
+			memcpy(raw, h1, d1->rawsize);
 			memcpy(&raw[d1->rawsize], h2, d2->rawsize);
 			break;
 		case COMBINE_CONCAT:

Index: othersrc/external/bsd/multigest/dist/multigest.h
diff -u othersrc/external/bsd/multigest/dist/multigest.h:1.10 othersrc/external/bsd/multigest/dist/multigest.h:1.11
--- othersrc/external/bsd/multigest/dist/multigest.h:1.10	Wed Mar 26 06:22:16 2014
+++ othersrc/external/bsd/multigest/dist/multigest.h	Wed Mar 26 22:13:44 2014
@@ -23,7 +23,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #ifndef MULTIGEST_H_
-#define MULTIGEST_H_	20140325
+#define MULTIGEST_H_	20140326
 
 #include <sys/types.h>
 

Added files:

Index: othersrc/external/bsd/multigest/bin/28.expected
diff -u /dev/null othersrc/external/bsd/multigest/bin/28.expected:1.1
--- /dev/null	Wed Mar 26 22:13:44 2014
+++ othersrc/external/bsd/multigest/bin/28.expected	Wed Mar 26 22:13:44 2014
@@ -0,0 +1 @@
+deef78986ff2e27d759a83bf2c7a4bf1fc90e52f5a768ab252fd22ea6704b98f6ebc2646fbbef3a7

Reply via email to