Module Name:    othersrc
Committed By:   agc
Date:           Sat Aug 17 18:29:35 UTC 2013

Modified Files:
        othersrc/external/bsd/multigest/bin: 10.expected 11.expected
            12.expected 19.expected 2.expected 20.expected 4.expected
            5.expected 6.expected 7.expected 9.expected Makefile
        othersrc/external/bsd/multigest/dist: blake2.c blake2.h keccak.c
            keccak.h main.c multigest.c multigest.h
Added Files:
        othersrc/external/bsd/multigest/dist: Makefile

Log Message:
multigest changes:

+ fix a bug whereby large multiple digests overflowed the context space
  because they weren't taking into account the current algorithm's context
  space needs
+ add my own copyright where substantial work has been done
+ move to a portable, lightweight RFC1738-inspired encoding for VCS identifiers
  (we can't be assured that any of the vis(3) routines are going to be 
available)
+ re-do all the regression test results to avoid the RCS Ids being expanded
  in checked-in regression tests
+ make keccak sources thread-safe by moving the initialisation space into the
  keccak context space
+ print details of expected and calculated digests during check if the
  digests do NOT match (from Thomas Klausner, the original behaviour was
  from debugging tests - thanks!)


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 othersrc/external/bsd/multigest/bin/10.expected \
    othersrc/external/bsd/multigest/bin/11.expected \
    othersrc/external/bsd/multigest/bin/12.expected \
    othersrc/external/bsd/multigest/bin/19.expected \
    othersrc/external/bsd/multigest/bin/2.expected \
    othersrc/external/bsd/multigest/bin/20.expected \
    othersrc/external/bsd/multigest/bin/4.expected \
    othersrc/external/bsd/multigest/bin/5.expected \
    othersrc/external/bsd/multigest/bin/6.expected \
    othersrc/external/bsd/multigest/bin/7.expected \
    othersrc/external/bsd/multigest/bin/9.expected \
    othersrc/external/bsd/multigest/bin/Makefile
cvs rdiff -u -r0 -r1.1 othersrc/external/bsd/multigest/dist/Makefile
cvs rdiff -u -r1.1.1.1 -r1.2 othersrc/external/bsd/multigest/dist/blake2.c \
    othersrc/external/bsd/multigest/dist/blake2.h \
    othersrc/external/bsd/multigest/dist/keccak.c \
    othersrc/external/bsd/multigest/dist/keccak.h \
    othersrc/external/bsd/multigest/dist/main.c \
    othersrc/external/bsd/multigest/dist/multigest.c \
    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/10.expected
diff -u othersrc/external/bsd/multigest/bin/10.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/10.expected:1.2
--- othersrc/external/bsd/multigest/bin/10.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/10.expected	Sat Aug 17 18:29:35 2013
@@ -1,2 +0,0 @@
-provided digest:   '93af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164
ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f1'
-calculated digest: '93af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164
ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f193af9cbe145da570b71c7a57b84dcdb19419a8bc6c8dfad8fc17a935d626fd38b8d7ff164ffdf08e1ecbb1bb9d0982fb5f3a57c82294befe985e279a0f27e1f1'
Index: othersrc/external/bsd/multigest/bin/11.expected
diff -u othersrc/external/bsd/multigest/bin/11.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/11.expected:1.2
--- othersrc/external/bsd/multigest/bin/11.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/11.expected	Sat Aug 17 18:29:35 2013
@@ -1 +1 @@
-CRC32C,MD5,RMD160,SHA1,SHA256,SHA512 (2.in) (,\$(Id|NetBSD)[^\n]*\$,$NetBSD: 11.expected,v 1.1.1.1 2013/08/16 06:47:53 agc Exp $) = 279934d7b43c46ba05e28788df71eaea4777912ffaad8f20db6708582703a0ef4bc79a61c34a91bc114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679ca92644bdf34583700776b58728501c15ee8300feb6ddba910c462618bce2221a0445036a2d46e676ef32988283372710701eb39fa7a59821b740bf07a3d364a5
+CRC32C,MD5,RMD160,SHA1,SHA256,SHA512 (2.in) (,\%24(Id|NetBSD)[^%0a]*\%24,%24NetBSD%24) = 279934d7b43c46ba05e28788df71eaea4777912ffaad8f20db6708582703a0ef4bc79a61c34a91bc114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679ca92644bdf34583700776b58728501c15ee8300feb6ddba910c462618bce2221a0445036a2d46e676ef32988283372710701eb39fa7a59821b740bf07a3d364a5
Index: othersrc/external/bsd/multigest/bin/12.expected
diff -u othersrc/external/bsd/multigest/bin/12.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/12.expected:1.2
--- othersrc/external/bsd/multigest/bin/12.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/12.expected	Sat Aug 17 18:29:35 2013
@@ -1,2 +0,0 @@
-provided digest:   '279934d7b43c46ba05e28788df71eaea4777912ffaad8f20db6708582703a0ef4bc79a61c34a91bc114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679ca92644bdf34583700776b58728501c15ee8300feb6ddba910c462618bce2221a0445036a2d46e676ef32988283372710701eb39fa7a59821b740bf07a3d364a5'
-calculated digest: '279934d7b43c46ba05e28788df71eaea4777912ffaad8f20db6708582703a0ef4bc79a61c34a91bc114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679ca92644bdf34583700776b58728501c15ee8300feb6ddba910c462618bce2221a0445036a2d46e676ef32988283372710701eb39fa7a59821b740bf07a3d364a5'
Index: othersrc/external/bsd/multigest/bin/19.expected
diff -u othersrc/external/bsd/multigest/bin/19.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/19.expected:1.2
--- othersrc/external/bsd/multigest/bin/19.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/19.expected	Sat Aug 17 18:29:35 2013
@@ -1 +1 @@
-SIZE (2.in) () = 00000000000016f5
+SIZE (2.in) () = 00000000000016ef
Index: othersrc/external/bsd/multigest/bin/2.expected
diff -u othersrc/external/bsd/multigest/bin/2.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/2.expected:1.2
--- othersrc/external/bsd/multigest/bin/2.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/2.expected	Sat Aug 17 18:29:35 2013
@@ -1 +1 @@
-SHA1 (2.in) (,\$(Id|NetBSD)[^\n]*\$,$NetBSD: 2.expected,v 1.1.1.1 2013/08/16 06:47:53 agc Exp $) = 114f266e7a71dc51811df9dc994bce4de69170c9
+SHA1 (2.in) (,\%24(Id|NetBSD)[^%0a]*\%24,%24NetBSD%24) = 114f266e7a71dc51811df9dc994bce4de69170c9
Index: othersrc/external/bsd/multigest/bin/20.expected
diff -u othersrc/external/bsd/multigest/bin/20.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/20.expected:1.2
--- othersrc/external/bsd/multigest/bin/20.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/20.expected	Sat Aug 17 18:29:35 2013
@@ -1 +1 @@
-BLAKE2,CRC32C,MD5,RMD160,SHA1,SHA256,SHA3-224,SHA3-256,SHA3-384,SHA3-512,SHA512,SIZE,TIGER2,TIGER,WHIRLPOOL (2.in) (,\$(Id|NetBSD)[^\n]*\$,$NetBSD: 20.expected,v 1.1.1.1 2013/08/16 06:47:53 agc Exp $) = 5388c3a6ac094bd49d82ca1404d111cbf1cbb64cd6a7cd47b7b366b1b89447988a96f2064d9e7d48746fee39128f33bfd3e537085d48088f7ddc6da8d4b2e7df279934d7b43c46ba05e28788df71eaea4777912ffaad8f20db6708582703a0ef4bc79a61c34a91bc114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679c1cd5c98e369f050cdef21f260e4930e2d4fb50dbd89ebe73b45867f8c8db407d733900b40499f5103018696d773bb246a23d465d8fa2ef5a8b7ecf29fd303cf644be9d1c638bb8aaf5f7ba48eadd3e7fd86f6fa3f4fd378e7d39626077a56b343e5beffe6dc1de78b33a4dfa349259f3a560d4eaef508b4ce9cf1d84199b0a3db8dd0d4f5fe5d9e52beb40d660890296b1275cf75b49544ff76e0db804eca97aa9fc2e7c4de96a3fb8af2069a92644bdf34583700776b58728501c15ee8300feb6ddba910c462618bce2221a0445036a2d46e676ef32988283372710701eb39fa7a59821b740bf07a3d364a500
000000000016955be276d25e1bb131e9f3089052492cfa3da484855759a53238eb28030a6a3e9511e2d1dbee6e37c0dd3f93c55b149acf4d77b962c86eb1303d186bf2fdc8f011511b0f720f3171850aec1a462e2067218ee672d0b66950cf7ee6078df0593a9fd22109984cc31b2fd327b223f1a7c634
+BLAKE2,CRC32C,MD5,RMD160,SHA1,SHA256,SHA3-224,SHA3-256,SHA3-384,SHA3-512,SHA512,SIZE,TIGER2,TIGER,WHIRLPOOL (2.in) (,\%24(Id|NetBSD)[^%0a]*\%24,%24NetBSD%24) = 5388c3a6ac094bd49d82ca1404d111cbf1cbb64cd6a7cd47b7b366b1b89447988a96f2064d9e7d48746fee39128f33bfd3e537085d48088f7ddc6da8d4b2e7df279934d7b43c46ba05e28788df71eaea4777912ffaad8f20db6708582703a0ef4bc79a61c34a91bc114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679c1cd5c98e369f050cdef21f260e4930e2d4fb50dbd89ebe73b45867f8c8db407d733900b40499f5103018696d773bb246a23d465d8fa2ef5a8b7ecf29fd303cf644be9d1c638bb8aaf5f7ba48eadd3e7fd86f6fa3f4fd378e7d39626077a56b343e5beffe6dc1de78b33a4dfa349259f3a560d4eaef508b4ce9cf1d84199b0a3db8dd0d4f5fe5d9e52beb40d660890296b1275cf75b49544ff76e0db804eca97aa9fc2e7c4de96a3fb8af2069a92644bdf34583700776b58728501c15ee8300feb6ddba910c462618bce2221a0445036a2d46e676ef32988283372710701eb39fa7a59821b740bf07a3d364a500000000000016955be276d25e1bb131e9f3089052492
cfa3da484855759a53238eb28030a6a3e9511e2d1dbee6e37c0dd3f93c55b149acf4d77b962c86eb1303d186bf2fdc8f011511b0f720f3171850aec1a462e2067218ee672d0b66950cf7ee6078df0593a9fd22109984cc31b2fd327b223f1a7c634
Index: othersrc/external/bsd/multigest/bin/4.expected
diff -u othersrc/external/bsd/multigest/bin/4.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/4.expected:1.2
--- othersrc/external/bsd/multigest/bin/4.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/4.expected	Sat Aug 17 18:29:35 2013
@@ -1 +1 @@
-SHA1 (2.in) (,\$(Id|NetBSD)[^\n]*\$,$NetBSD: 4.expected,v 1.1.1.1 2013/08/16 06:47:53 agc Exp $) = 114f266e7a71dc51811df9dc994bce4de69170c9
+SHA1 (2.in) (,\%24(Id|NetBSD)[^%0a]*\%24,%24NetBSD%24) = 114f266e7a71dc51811df9dc994bce4de69170c9
Index: othersrc/external/bsd/multigest/bin/5.expected
diff -u othersrc/external/bsd/multigest/bin/5.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/5.expected:1.2
--- othersrc/external/bsd/multigest/bin/5.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/5.expected	Sat Aug 17 18:29:35 2013
@@ -1 +1 @@
-SHA256 (2.in) (,\$(Id|NetBSD)[^\n]*\$,$NetBSD: 5.expected,v 1.1.1.1 2013/08/16 06:47:53 agc Exp $) = 835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679c
+SHA256 (2.in) (,\%24(Id|NetBSD)[^%0a]*\%24,%24NetBSD%24) = 835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679c
Index: othersrc/external/bsd/multigest/bin/6.expected
diff -u othersrc/external/bsd/multigest/bin/6.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/6.expected:1.2
--- othersrc/external/bsd/multigest/bin/6.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/6.expected	Sat Aug 17 18:29:35 2013
@@ -1 +1 @@
-SHA1,SHA256 (2.in) (,\$(Id|NetBSD)[^\n]*\$,$NetBSD: 6.expected,v 1.1.1.1 2013/08/16 06:47:53 agc Exp $) = 114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679c
+SHA1,SHA256 (2.in) (,\%24(Id|NetBSD)[^%0a]*\%24,%24NetBSD%24) = 114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679c
Index: othersrc/external/bsd/multigest/bin/7.expected
diff -u othersrc/external/bsd/multigest/bin/7.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/7.expected:1.2
--- othersrc/external/bsd/multigest/bin/7.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/7.expected	Sat Aug 17 18:29:35 2013
@@ -1 +1 @@
-CRC32C,SHA1,SHA256 (2.in) (,\$(Id|NetBSD)[^\n]*\$,$NetBSD: 7.expected,v 1.1.1.1 2013/08/16 06:47:53 agc Exp $) = 279934d7114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679c
+CRC32C,SHA1,SHA256 (2.in) (,\%24(Id|NetBSD)[^%0a]*\%24,%24NetBSD%24) = 279934d7114f266e7a71dc51811df9dc994bce4de69170c9835bc89fbf57f3a6aa9168b776bd3ef2ba6bcf6e6934a12380b10272ae73679c
Index: othersrc/external/bsd/multigest/bin/9.expected
diff -u othersrc/external/bsd/multigest/bin/9.expected:1.1.1.1 othersrc/external/bsd/multigest/bin/9.expected:1.2
--- othersrc/external/bsd/multigest/bin/9.expected:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/9.expected	Sat Aug 17 18:29:35 2013
@@ -1,2 +0,0 @@
-provided digest:   'b0197d624ecf7547d2d486a20c9d05c25f6e6729'
-calculated digest: 'b0197d624ecf7547d2d486a20c9d05c25f6e6729'
Index: othersrc/external/bsd/multigest/bin/Makefile
diff -u othersrc/external/bsd/multigest/bin/Makefile:1.1.1.1 othersrc/external/bsd/multigest/bin/Makefile:1.2
--- othersrc/external/bsd/multigest/bin/Makefile:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/bin/Makefile	Sat Aug 17 18:29:35 2013
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.1.1.1 2013/08/16 06:47:53 agc Exp $
+# $NetBSD: Makefile,v 1.2 2013/08/17 18:29:35 agc Exp $
 
 .include <bsd.own.mk>
 
@@ -31,9 +31,8 @@ t: ${PROG}
 	diff 2.expected 2.out
 	rm -f 2.out
 	env LD_LIBRARY_PATH=${LIB_MULTIGEST_DIR} ./${PROG} -r < 2.in > 3.out
-	digest sha1 < 2.in.normalised > 3.norm.out
-	diff 3.norm.out 3.out
-	rm -f 3.norm.out 3.out
+	diff 3.expected 3.out
+	rm -f 3.out
 	env LD_LIBRARY_PATH=${LIB_MULTIGEST_DIR} ./${PROG} -o 4.out -r 2.in
 	diff 4.expected 4.out
 	rm -f 4.out

Index: othersrc/external/bsd/multigest/dist/blake2.c
diff -u othersrc/external/bsd/multigest/dist/blake2.c:1.1.1.1 othersrc/external/bsd/multigest/dist/blake2.c:1.2
--- othersrc/external/bsd/multigest/dist/blake2.c:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/dist/blake2.c	Sat Aug 17 18:29:35 2013
@@ -1,3 +1,27 @@
+/*-
+ * Copyright (c) 2013 Alistair Crooks <a...@netbsd.org>
+ * 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.
+ * 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 ``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 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.
+ */
 #include <stdint.h>
 #include <string.h>
 #include <stdio.h>
Index: othersrc/external/bsd/multigest/dist/blake2.h
diff -u othersrc/external/bsd/multigest/dist/blake2.h:1.1.1.1 othersrc/external/bsd/multigest/dist/blake2.h:1.2
--- othersrc/external/bsd/multigest/dist/blake2.h:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/dist/blake2.h	Sat Aug 17 18:29:35 2013
@@ -1,3 +1,27 @@
+/*-
+ * Copyright (c) 2013 Alistair Crooks <a...@netbsd.org>
+ * 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.
+ * 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 ``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 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.
+ */
 #ifndef BLAKE2_H_
 #define BLAKE2_H_	20130814
 
Index: othersrc/external/bsd/multigest/dist/keccak.c
diff -u othersrc/external/bsd/multigest/dist/keccak.c:1.1.1.1 othersrc/external/bsd/multigest/dist/keccak.c:1.2
--- othersrc/external/bsd/multigest/dist/keccak.c:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/dist/keccak.c	Sat Aug 17 18:29:35 2013
@@ -1,3 +1,27 @@
+/*-
+ * Copyright (c) 2013 Alistair Crooks <a...@netbsd.org>
+ * 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.
+ * 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 ``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 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.
+ */
 /*
 The Keccak sponge function, designed by Guido Bertoni, Joan Daemen,
 Michaël Peeters and Gilles Van Assche. For more information, feedback or
@@ -18,11 +42,6 @@ http://creativecommons.org/publicdomain/
 
 #include "keccak.h"
 
-#define nrRounds 24
-static uint64_t KeccakRoundConstants[nrRounds];
-#define nrLanes 25
-static unsigned int KeccakRhoOffsets[nrLanes];
-
 static void
 fromBytesToWords(uint64_t *stateAsWords, const uint8_t *state)
 {
@@ -74,13 +93,13 @@ theta(uint64_t *A)
 }
 
 static void
-rho(uint64_t *A)
+rho(KECCAK_CTX *ctx, uint64_t *A)
 {
 	unsigned int x, y;
 
 	for(x=0; x<5; x++) {
 		for(y=0; y<5; y++) {
-			A[INDEX(x, y)] = ROL64(A[INDEX(x, y)], KeccakRhoOffsets[INDEX(x, y)]);
+			A[INDEX(x, y)] = ROL64(A[INDEX(x, y)], ctx->KeccakRhoOffsets[INDEX(x, y)]);
 		}
 	}
 }
@@ -120,50 +139,50 @@ chi(uint64_t *A)
 }
 
 static void
-iota(uint64_t *A, unsigned int indexRound)
+iota(KECCAK_CTX *ctx, uint64_t *A, unsigned int indexRound)
 {
-	A[INDEX(0, 0)] ^= KeccakRoundConstants[indexRound];
+	A[INDEX(0, 0)] ^= ctx->KeccakRoundConstants[indexRound];
 }
 
 static void
-KeccakPermutationOnWords(uint64_t *state)
+KeccakPermutationOnWords(KECCAK_CTX *ctx, uint64_t *st)
 {
 	unsigned int i;
 
-	for(i=0; i<nrRounds; i++) {
-		theta(state);
-		rho(state);
-		pi(state);
-		chi(state);
-		iota(state, i);
+	for(i=0; i<KeccaknrRounds; i++) {
+		theta(st);
+		rho(ctx, st);
+		pi(st);
+		chi(st);
+		iota(ctx, st, i);
 	}
 }
 
 static void
-keccak_permutation(uint8_t *state)
+keccak_permutation(KECCAK_CTX *ctx)
 {
 	const int	indian = 1;
 	uint64_t stateAsWords[KeccakPermutationSize/64];
 
 	if (*(const char *)(const void *)&indian) {
 		/* little endian */
-		KeccakPermutationOnWords((uint64_t*)(void *)state);
+		KeccakPermutationOnWords(ctx, (uint64_t*)(void *)ctx->state);
 	} else {
-		fromBytesToWords(stateAsWords, state);
-		KeccakPermutationOnWords(stateAsWords);
-		fromWordsToBytes(state, stateAsWords);
+		fromBytesToWords(stateAsWords, ctx->state);
+		KeccakPermutationOnWords(ctx, stateAsWords);
+		fromWordsToBytes(ctx->state, stateAsWords);
 	}
 }
 
 static void
-KeccakPermutationAfterXor(uint8_t *state, const uint8_t *data, unsigned int dataLengthInBytes)
+KeccakPermutationAfterXor(KECCAK_CTX *ctx, uint8_t *state, const uint8_t *data, unsigned int dataLengthInBytes)
 {
 	unsigned int i;
 
 	for(i=0; i<dataLengthInBytes; i++) {
 		state[i] ^= data[i];
 	}
-	keccak_permutation(state);
+	keccak_permutation(ctx);
 }
 
 static int
@@ -181,32 +200,32 @@ LFSR86540(uint8_t *LFSR)
 }
 
 static void
-keccak_initialise_RoundConstants(void)
+keccak_initialise_RoundConstants(KECCAK_CTX *ctx)
 {
 	uint8_t LFSRstate = 0x01;
 	unsigned int i, j, bitPosition;
 
-	for(i=0; i<nrRounds; i++) {
-		KeccakRoundConstants[i] = 0;
+	for(i=0; i<KeccaknrRounds; i++) {
+		ctx->KeccakRoundConstants[i] = 0;
 		for(j=0; j<7; j++) {
 			bitPosition = (1<<j)-1; //2^j-1
 			if (LFSR86540(&LFSRstate)) {
-				KeccakRoundConstants[i] ^= (uint64_t)1<<bitPosition;
+				ctx->KeccakRoundConstants[i] ^= (uint64_t)1<<bitPosition;
 			}
 		}
 	}
 }
 
 static void
-keccak_initialise_RhoOffsets(void)
+keccak_initialise_RhoOffsets(KECCAK_CTX *ctx)
 {
 	unsigned int x, y, t, newX, newY;
 
-	KeccakRhoOffsets[INDEX(0, 0)] = 0;
+	ctx->KeccakRhoOffsets[INDEX(0, 0)] = 0;
 	x = 1;
 	y = 0;
 	for(t=0; t<24; t++) {
-		KeccakRhoOffsets[INDEX(x, y)] = ((t+1)*(t+2)/2) % 64;
+		ctx->KeccakRhoOffsets[INDEX(x, y)] = ((t+1)*(t+2)/2) % 64;
 		newX = (0*x+1*y) % 5;
 		newY = (2*x+3*y) % 5;
 		x = newX;
@@ -215,10 +234,10 @@ keccak_initialise_RhoOffsets(void)
 }
 
 static void
-keccak_initialize(void)
+keccak_initialize(KECCAK_CTX *ctx)
 {
-	keccak_initialise_RoundConstants();
-	keccak_initialise_RhoOffsets();
+	keccak_initialise_RoundConstants(ctx);
+	keccak_initialise_RhoOffsets(ctx);
 }
 
 static void
@@ -228,9 +247,9 @@ keccak_initialise_state(uint8_t *state)
 }
 
 static void
-KeccakAbsorb(uint8_t *state, const uint8_t *data, unsigned int laneCount)
+KeccakAbsorb(KECCAK_CTX *ctx, uint8_t *state, const uint8_t *data, unsigned int laneCount)
 {
-	KeccakPermutationAfterXor(state, data, laneCount*8);
+	KeccakPermutationAfterXor(ctx, state, data, laneCount*8);
 }
 
 static void
@@ -240,7 +259,7 @@ keccak_extract(const uint8_t *state, uin
 }
 
 static int
-init_sponge(KECCAK_CTX *state, unsigned int rate, unsigned int capacity)
+init_sponge(KECCAK_CTX *ctx, unsigned int rate, unsigned int capacity)
 {
 	if (rate+capacity != 1600) {
 		return 1;
@@ -248,64 +267,64 @@ init_sponge(KECCAK_CTX *state, unsigned 
 	if ((rate == 0) || (rate >= 1600) || ((rate % 64) != 0)) {
 		return 1;
 	}
-	keccak_initialize();
-	state->rate = rate;
-	state->capacity = capacity;
-	state->fixedOutputLength = 0;
-	keccak_initialise_state(state->state);
-	memset(state->dataQueue, 0, KeccakMaximumRateInBytes);
-	state->bitsInQueue = 0;
-	state->squeezing = 0;
-	state->bitsAvailableForSqueezing = 0;
+	keccak_initialize(ctx);
+	ctx->rate = rate;
+	ctx->capacity = capacity;
+	ctx->fixedOutputLength = 0;
+	keccak_initialise_state(ctx->state);
+	memset(ctx->dataQueue, 0, KeccakMaximumRateInBytes);
+	ctx->bitsInQueue = 0;
+	ctx->squeezing = 0;
+	ctx->bitsAvailableForSqueezing = 0;
 	return 0;
 }
 
 static void
-absorb_queue(KECCAK_CTX *state)
+absorb_queue(KECCAK_CTX *ctx)
 {
 	// state->bitsInQueue is assumed to be equal to state->rate
-	KeccakAbsorb(state->state, state->dataQueue, state->rate/64);
-	state->bitsInQueue = 0;
+	KeccakAbsorb(ctx, ctx->state, ctx->dataQueue, ctx->rate/64);
+	ctx->bitsInQueue = 0;
 }
 
 static int
-absorb(KECCAK_CTX *state, const uint8_t *data, uint64_t databitlen)
+absorb(KECCAK_CTX *ctx, const uint8_t *data, uint64_t databitlen)
 {
 	uint64_t i, j, wholeBlocks;
 	unsigned int partialBlock, partialByte;
 	const uint8_t *curData;
 
-	if ((state->bitsInQueue % 8) != 0) {
+	if ((ctx->bitsInQueue % 8) != 0) {
 		return 1; // Only the last call may contain a partial byte
 	}
-	if (state->squeezing) {
+	if (ctx->squeezing) {
 		return 1; // Too late for additional input
 	}
 	for (i = 0; i < databitlen ; ) {
-		if ((state->bitsInQueue == 0) && (databitlen >= state->rate) && (i <= (databitlen-state->rate))) {
-			wholeBlocks = (databitlen-i)/state->rate;
+		if ((ctx->bitsInQueue == 0) && (databitlen >= ctx->rate) && (i <= (databitlen-ctx->rate))) {
+			wholeBlocks = (databitlen-i)/ctx->rate;
 			curData = &data[(long)i/8];
-			for(j=0; j<wholeBlocks; j++, curData+=state->rate/8) {
-				KeccakAbsorb(state->state, curData, state->rate/64);
+			for(j=0; j<wholeBlocks; j++, curData+=ctx->rate/8) {
+				KeccakAbsorb(ctx, ctx->state, curData, ctx->rate/64);
 			}
-			i += wholeBlocks*state->rate;
+			i += wholeBlocks*ctx->rate;
 		} else {
 			partialBlock = (unsigned int)(databitlen - i);
-			if (partialBlock+state->bitsInQueue > state->rate) {
-				partialBlock = state->rate-state->bitsInQueue;
+			if (partialBlock+ctx->bitsInQueue > ctx->rate) {
+				partialBlock = ctx->rate-ctx->bitsInQueue;
 			}
 			partialByte = partialBlock % 8;
 			partialBlock -= partialByte;
-			memcpy(state->dataQueue+state->bitsInQueue/8, &data[(unsigned long)i/8], partialBlock/8);
-			state->bitsInQueue += partialBlock;
+			memcpy(ctx->dataQueue+ctx->bitsInQueue/8, &data[(unsigned long)i/8], partialBlock/8);
+			ctx->bitsInQueue += partialBlock;
 			i += partialBlock;
-			if (state->bitsInQueue == state->rate) {
-				absorb_queue(state);
+			if (ctx->bitsInQueue == ctx->rate) {
+				absorb_queue(ctx);
 			}
 			if (partialByte > 0) {
 				uint8_t mask = (1 << partialByte)-1;
-				state->dataQueue[state->bitsInQueue/8] = data[(unsigned long)i/8] & mask;
-				state->bitsInQueue += partialByte;
+				ctx->dataQueue[ctx->bitsInQueue/8] = data[(unsigned long)i/8] & mask;
+				ctx->bitsInQueue += partialByte;
 				i += partialByte;
 			}
 		}
@@ -314,50 +333,50 @@ absorb(KECCAK_CTX *state, const uint8_t 
 }
 
 static void
-PadAndSwitchToSqueezingPhase(KECCAK_CTX *state)
+PadAndSwitchToSqueezingPhase(KECCAK_CTX *ctx)
 {
 	// Note: the bits are numbered from 0=LSB to 7=MSB
-	if (state->bitsInQueue + 1 == state->rate) {
-		state->dataQueue[state->bitsInQueue/8 ] |= 1 << (state->bitsInQueue % 8);
-		absorb_queue(state);
-		memset(state->dataQueue, 0, state->rate/8);
+	if (ctx->bitsInQueue + 1 == ctx->rate) {
+		ctx->dataQueue[ctx->bitsInQueue/8 ] |= 1 << (ctx->bitsInQueue % 8);
+		absorb_queue(ctx);
+		memset(ctx->dataQueue, 0, ctx->rate/8);
 	} else {
-		memset(state->dataQueue + (state->bitsInQueue+7)/8, 0, state->rate/8 - (state->bitsInQueue+7)/8);
-		state->dataQueue[state->bitsInQueue/8 ] |= 1 << (state->bitsInQueue % 8);
+		memset(ctx->dataQueue + (ctx->bitsInQueue+7)/8, 0, ctx->rate/8 - (ctx->bitsInQueue+7)/8);
+		ctx->dataQueue[ctx->bitsInQueue/8 ] |= 1 << (ctx->bitsInQueue % 8);
 	}
-	state->dataQueue[(state->rate-1)/8] |= 1 << ((state->rate-1) % 8);
-	absorb_queue(state);
-	keccak_extract(state->state, state->dataQueue, state->rate/64);
-	state->bitsAvailableForSqueezing = state->rate;
-	state->squeezing = 1;
+	ctx->dataQueue[(ctx->rate-1)/8] |= 1 << ((ctx->rate-1) % 8);
+	absorb_queue(ctx);
+	keccak_extract(ctx->state, ctx->dataQueue, ctx->rate/64);
+	ctx->bitsAvailableForSqueezing = ctx->rate;
+	ctx->squeezing = 1;
 }
 
 static int
-squeeze(KECCAK_CTX *state, uint8_t *output, uint64_t outputLength)
+squeeze(KECCAK_CTX *ctx, uint8_t *output, uint64_t outputLength)
 {
 	uint64_t i;
 	unsigned int partialBlock;
 
-	if (!state->squeezing) {
-		PadAndSwitchToSqueezingPhase(state);
+	if (!ctx->squeezing) {
+		PadAndSwitchToSqueezingPhase(ctx);
 	}
 	if ((outputLength % 8) != 0) {
 		return 1; // Only multiple of 8 bits are allowed, truncation can be done at user level
 	}
 	for (i = 0; i < outputLength ; i += partialBlock) {
-		if (state->bitsAvailableForSqueezing == 0) {
-			keccak_permutation(state->state);
-			keccak_extract(state->state, state->dataQueue, state->rate/64);
-			state->bitsAvailableForSqueezing = state->rate;
+		if (ctx->bitsAvailableForSqueezing == 0) {
+			keccak_permutation(ctx);
+			keccak_extract(ctx->state, ctx->dataQueue, ctx->rate/64);
+			ctx->bitsAvailableForSqueezing = ctx->rate;
 		}
-		partialBlock = state->bitsAvailableForSqueezing;
+		partialBlock = ctx->bitsAvailableForSqueezing;
 		if ((uint64_t)partialBlock > outputLength - i) {
 			partialBlock = (unsigned int)(outputLength - i);
 		}
 		memcpy(&output[(unsigned long)i/8],
-			state->dataQueue+(state->rate-state->bitsAvailableForSqueezing)/8,
+			ctx->dataQueue+(ctx->rate-ctx->bitsAvailableForSqueezing)/8,
 			partialBlock/8);
-		state->bitsAvailableForSqueezing -= partialBlock;
+		ctx->bitsAvailableForSqueezing -= partialBlock;
 	}
 	return 0;
 }
@@ -365,52 +384,52 @@ squeeze(KECCAK_CTX *state, uint8_t *outp
 /***************************************************************/
 
 HashReturn
-KECCAK_Init(KECCAK_CTX *state, int hashbitlen)
+KECCAK_Init(KECCAK_CTX *ctx, int hashbitlen)
 {
 	switch(hashbitlen) {
 	case 0: // Default parameters, arbitrary length output
-		init_sponge((KECCAK_CTX*)state, 1024, 576);
+		init_sponge((KECCAK_CTX*)ctx, 1024, 576);
 		break;
 	case 224:
-		init_sponge((KECCAK_CTX*)state, 1152, 448);
+		init_sponge((KECCAK_CTX*)ctx, 1152, 448);
 		break;
 	case 256:
-		init_sponge((KECCAK_CTX*)state, 1088, 512);
+		init_sponge((KECCAK_CTX*)ctx, 1088, 512);
 		break;
 	case 384:
-		init_sponge((KECCAK_CTX*)state, 832, 768);
+		init_sponge((KECCAK_CTX*)ctx, 832, 768);
 		break;
 	case 512:
-		init_sponge((KECCAK_CTX*)state, 576, 1024);
+		init_sponge((KECCAK_CTX*)ctx, 576, 1024);
 		break;
 	default:
 		return BAD_HASHLEN;
 	}
-	state->fixedOutputLength = hashbitlen;
+	ctx->fixedOutputLength = hashbitlen;
 	return SUCCESS;
 }
 
 HashReturn
-KECCAK_Update(KECCAK_CTX *state, const uint8_t *data, uint64_t databitlen)
+KECCAK_Update(KECCAK_CTX *ctx, const uint8_t *data, uint64_t databitlen)
 {
 	HashReturn ret;
 
 	if ((databitlen % 8) == 0) {
-		return absorb((KECCAK_CTX*)state, data, databitlen);
+		return absorb((KECCAK_CTX*)ctx, data, databitlen);
 	}
-	ret = absorb((KECCAK_CTX*)state, data, databitlen - (databitlen % 8));
+	ret = absorb((KECCAK_CTX*)ctx, data, databitlen - (databitlen % 8));
 	if (ret == SUCCESS) {
 		uint8_t lastByte; 
 
 		// Align the last partial byte to the least significant bits
 		lastByte = data[(unsigned long)databitlen/8] >> (8 - (databitlen % 8));
-		return absorb((KECCAK_CTX*)state, &lastByte, databitlen % 8);
+		return absorb((KECCAK_CTX*)ctx, &lastByte, databitlen % 8);
 	}
 	return ret;
 }
 
 HashReturn
-KECCAK_Final(KECCAK_CTX *state, uint8_t *hashval)
+KECCAK_Final(KECCAK_CTX *ctx, uint8_t *hashval)
 {
-	return squeeze(state, hashval, state->fixedOutputLength);
+	return squeeze(ctx, hashval, ctx->fixedOutputLength);
 }
Index: othersrc/external/bsd/multigest/dist/keccak.h
diff -u othersrc/external/bsd/multigest/dist/keccak.h:1.1.1.1 othersrc/external/bsd/multigest/dist/keccak.h:1.2
--- othersrc/external/bsd/multigest/dist/keccak.h:1.1.1.1	Fri Aug 16 06:47:54 2013
+++ othersrc/external/bsd/multigest/dist/keccak.h	Sat Aug 17 18:29:35 2013
@@ -1,3 +1,27 @@
+/*-
+ * Copyright (c) 2013 Alistair Crooks <a...@netbsd.org>
+ * 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.
+ * 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 ``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 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.
+ */
 /*
 The Keccak sponge function, designed by Guido Bertoni, Joan Daemen,
 Michaël Peeters and Gilles Van Assche. For more information, feedback or
@@ -20,6 +44,9 @@ http://creativecommons.org/publicdomain/
 #define KeccakMaximumRate 1536
 #define KeccakMaximumRateInBytes (KeccakMaximumRate/8)
 
+#define KeccaknrRounds 24
+#define KeccaknrLanes 25
+
 #if defined(__GNUC__)
 #define ALIGN __attribute__ ((aligned(32)))
 #elif defined(_MSC_VER)
@@ -29,14 +56,16 @@ http://creativecommons.org/publicdomain/
 #endif
 
 ALIGN typedef struct KECCAK_CTX {
-	ALIGN uint8_t state[KeccakPermutationSizeInBytes];
-	ALIGN uint8_t dataQueue[KeccakMaximumRateInBytes];
-	unsigned int rate;
-	unsigned int capacity;
-	unsigned int bitsInQueue;
-	unsigned int fixedOutputLength;
-	int squeezing;
-	unsigned int bitsAvailableForSqueezing;
+	ALIGN uint8_t	state[KeccakPermutationSizeInBytes];
+	ALIGN uint8_t	dataQueue[KeccakMaximumRateInBytes];
+	uint32_t	rate;
+	uint32_t	capacity;
+	uint32_t	bitsInQueue;
+	uint32_t	fixedOutputLength;
+	int32_t		squeezing;
+	uint32_t	bitsAvailableForSqueezing;
+	uint64_t	KeccakRoundConstants[KeccaknrRounds];
+	uint32_t	KeccakRhoOffsets[KeccaknrLanes];
 } KECCAK_CTX;
 
 typedef enum { SUCCESS = 0, FAIL = 1, BAD_HASHLEN = 2 } HashReturn;
@@ -53,9 +82,9 @@ typedef enum { SUCCESS = 0, FAIL = 1, BA
 
 __BEGIN_DECLS
 
-HashReturn KECCAK_Init(KECCAK_CTX *state, int hashbitlen);
-HashReturn KECCAK_Update(KECCAK_CTX *state, const uint8_t *data, uint64_t databitlen);
-HashReturn KECCAK_Final(KECCAK_CTX *state, uint8_t *hashval);
+HashReturn KECCAK_Init(KECCAK_CTX */*ctx*/, int /*hashbitlen*/);
+HashReturn KECCAK_Update(KECCAK_CTX */*ctx*/, const uint8_t */*data*/, uint64_t /*databitlen*/);
+HashReturn KECCAK_Final(KECCAK_CTX */*ctx*/, uint8_t */*hashval*/);
 
 __END_DECLS
 
Index: othersrc/external/bsd/multigest/dist/main.c
diff -u othersrc/external/bsd/multigest/dist/main.c:1.1.1.1 othersrc/external/bsd/multigest/dist/main.c:1.2
--- othersrc/external/bsd/multigest/dist/main.c:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/dist/main.c	Sat Aug 17 18:29:35 2013
@@ -73,8 +73,7 @@ getsubst(const char *arg, char *from, si
 	}
 	len = (size_t)(sep - arg) - 1;
 	len = MIN(fromsize - 1, len);
-	memcpy(from, arg + 1, len);
-	from[len] = 0x0;
+	multigest_unpcstring(arg + 1, len, from, fromsize);
 	for (sub = ++sep ; *sep && *sep != *arg ; sep++) {
 		if (*sep == '\\') {
 			sep += 1;
@@ -82,8 +81,7 @@ getsubst(const char *arg, char *from, si
 	}
 	len = (size_t)(sep - sub);
 	len = MIN(tosize - 1, len);
-	memcpy(to, sub, len);
-	to[len] = 0x0;
+	multigest_unpcstring(sub, len, to, tosize);
 	return 1;
 }
 
@@ -94,10 +92,10 @@ read_check(const char *check)
 	struct stat	 st;
 	regmatch_t	 match[10];
 	regex_t		 r;
-	uint8_t		 raw[4096];
+	uint8_t		 raw[8192];
 	FILE		*fp;
 	char		*provided;
-	char		 calc[4096];
+	char		 calc[8192];
 	char		 from[128];
 	char		 to[128];
 	char		*file;
@@ -131,8 +129,8 @@ read_check(const char *check)
 	getsubst(subs, from, sizeof(from), to, sizeof(to));
 	multigest_file(file, alg, raw, from, to);
 	multigest_format_hex(raw, alg, calc, sizeof(calc));
-	if ((ret = memcmp(calc, provided, match[4].rm_eo - match[4].rm_so)) == 0) {
-		fprintf(stdout, "provided digest:   '%s'\ncalculated digest: '%s'\n", provided, calc);
+	if ((ret = memcmp(calc, provided, match[4].rm_eo - match[4].rm_so)) != 0) {
+		fprintf(stderr, "multigest: provided digest:   '%s', calculated digest: '%s'\n", provided, calc);
 	}
 	regfree(&r);
 	free(in);
@@ -146,7 +144,7 @@ main(int argc, char **argv)
 	const char	*check;
 	const char	*alg;
 	const char	*sub;
-	uint8_t		 raw[4096];
+	uint8_t		 raw[8192];
 	char	 	 from[128];
 	char	 	 to[128];
 	int		 ok;
Index: othersrc/external/bsd/multigest/dist/multigest.c
diff -u othersrc/external/bsd/multigest/dist/multigest.c:1.1.1.1 othersrc/external/bsd/multigest/dist/multigest.c:1.2
--- othersrc/external/bsd/multigest/dist/multigest.c:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/dist/multigest.c	Sat Aug 17 18:29:35 2013
@@ -51,6 +51,10 @@
 #define	__arraycount(__x)	(sizeof(__x) / sizeof(__x[0]))
 #endif
 
+#ifndef USE_ARG
+#define	USE_ARG(x)		/*LINTED*/(void)&(x)
+#endif
+
 #define MB(x)	((x) * 1024 * 1024)
 
 /*
@@ -234,6 +238,7 @@ wrap_size_update(void *v, const char *da
 {
 	uint64_t	n;
 
+	USE_ARG(data);
 	memcpy(&n, v, sizeof(n));
 	n += len;
 	memcpy(v, &n, sizeof(n));
@@ -371,15 +376,17 @@ findalg(const char *algname)
 	return NULL;
 }
 
-/* make a string visible */
+/* percent encode (pseudo-RFC1738) a string */
 static void
-pstring(FILE *fp, const char *s)
+pcstring(FILE *fp, const char *s)
 {
+	static const char	*pcencodes = "%$\r\n\t ";
+
 	for ( ; *s ; s++) {
-		if (*s == '\n') {
-			fprintf(fp, "\\n");
-		} else {
+		if (strchr(pcencodes, *s) == NULL) {
 			fprintf(fp, "%c", *s);
+		} else {
+			fprintf(fp, "%%%02hhx", *s);
 		}
 	}
 }
@@ -411,7 +418,7 @@ multigest_init(multigest_t *multigest, c
 			    (alg = findalg(algname)) == NULL) {
 				break;
 			}
-			if (ctxoff >= multigest->ctxsize) {
+			if (ctxoff + alg->ctxsize >= multigest->ctxsize) {
 				if ((newv = realloc(multigest->ctx, multigest->ctxsize + 4096)) == NULL) {
 					return 0;
 				}
@@ -583,6 +590,30 @@ multigest_free(multigest_t *s)
 	}
 }
 
+/* percent decode (pseudo-RFC1738) a string */
+void
+multigest_unpcstring(const char *in, size_t isize, char *out, size_t osize)
+{
+	static const char	*hexes = "0123456789abcdef";
+	const char		*p[2];
+	const char		*i;
+	char			*o;
+
+	for (i = in, o = out ; (size_t)(o - out) < osize - 1 && (size_t)(i - in) < isize && *i ; o++) {
+		if (*i == '%') {
+			if ((p[0] = strchr(hexes, i[1])) == NULL ||
+			    (p[1] = strchr(hexes, i[2])) == NULL) {
+				break;
+			}
+			*o = ((p[0] - hexes) * 16) + (p[1] - hexes);
+			i += 3;
+		} else {
+			*o = *i++;
+		}
+	}
+	*o = 0x0;
+}
+
 /* print as hex string */
 int
 multigest_format_hex(uint8_t *raw, const char *algname, char *out, size_t size)
@@ -629,7 +660,7 @@ multigest_print_hex(uint8_t *raw, const 
 		}
 		fprintf(fp, " (%s) (", f);
 		if (sub) {
-			pstring(fp, sub);
+			pcstring(fp, sub);
 		}
 		fprintf(fp, ") = ");
 	}
Index: othersrc/external/bsd/multigest/dist/multigest.h
diff -u othersrc/external/bsd/multigest/dist/multigest.h:1.1.1.1 othersrc/external/bsd/multigest/dist/multigest.h:1.2
--- othersrc/external/bsd/multigest/dist/multigest.h:1.1.1.1	Fri Aug 16 06:47:53 2013
+++ othersrc/external/bsd/multigest/dist/multigest.h	Sat Aug 17 18:29:35 2013
@@ -86,6 +86,7 @@ int multigest_data(const char */*data*/,
 int multigest_file(const char */*f*/, const char */*alg*/, uint8_t */*raw*/, const char */*pat*/, const char */*repl*/);
 
 /* output */
+void multigest_unpcstring(const char */*in*/, size_t /*isize*/, char */*out*/, size_t /*osize*/);
 uint32_t multigest_get_rawsize(multigest_t */*multigest*/);
 int multigest_format_hex(uint8_t */*raw*/, const char */*algname*/, char */*out*/, size_t /*size*/);
 int multigest_print_hex(uint8_t */*raw*/, const char */*algname*/, const char */*outname*/, const char */*f*/, const char */*sub*/);

Added files:

Index: othersrc/external/bsd/multigest/dist/Makefile
diff -u /dev/null othersrc/external/bsd/multigest/dist/Makefile:1.1
--- /dev/null	Sat Aug 17 18:29:35 2013
+++ othersrc/external/bsd/multigest/dist/Makefile	Sat Aug 17 18:29:35 2013
@@ -0,0 +1,20 @@
+# $NetBSD: Makefile,v 1.1 2013/08/17 18:29:35 agc Exp $
+
+.include <bsd.own.mk>
+
+PROG=m
+SRCS= blake2.c crc32c.c keccak.c main.c md5c.c multigest.c rmd160.c sha1.c sha2.c tiger.c whirlpool.c
+CPPFLAGS+=-I.
+
+CPPFLAGS+=-g -O0
+LDFLAGS+=-g -O0
+
+WARNS=6
+MAN=multigest.1
+
+.include <bsd.prog.mk>
+
+t: ${PROG}
+	./${PROG} -o 20.out -a blake2,crc32c,md5,rmd160,sha1,sha256,sha3-224,sha3-256,sha3-384,sha3-512,sha512,size,tiger2,tiger,whirlpool -r ${.CURDIR}/../bin/2.in
+	diff 20.expected 20.out
+	rm -f 20.out

Reply via email to