SMOLNET PORTAL home about changes
iXor the given seed into the buzhash table - dedup - deduplicating backup program	Err	bitreich.org	70
hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/	URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/	bitreich.org	70
1Log	/scm/dedup/log.gph	bitreich.org	70
1Files	/scm/dedup/files.gph	bitreich.org	70
1Refs	/scm/dedup/refs.gph	bitreich.org	70
1Tags	/scm/dedup/tag	bitreich.org	70
1README	/scm/dedup/file/README.gph	bitreich.org	70
1LICENSE	/scm/dedup/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 042e687f46e7c334def143a387c332e6884cd078	/scm/dedup/commit/042e687f46e7c334def143a387c332e6884cd078.gph	bitreich.org	70
1parent c86adacd4c9ec47d68823fbb768ec3fc7e5c23c0	/scm/dedup/commit/c86adacd4c9ec47d68823fbb768ec3fc7e5c23c0.gph	bitreich.org	70
hAuthor: sin <sin@2f30.org>	URL:mailto:sin@2f30.org	bitreich.org	70
iDate:   Sun, 19 May 2019 18:52:14 +0300	Err	bitreich.org	70
i	Err	bitreich.org	70
iXor the given seed into the buzhash table	Err	bitreich.org	70
i	Err	bitreich.org	70
iThis is the first step to try and mitigate against fingerprinting	Err	bitreich.org	70
iattacks.  The current code does not have any effect on the initial	Err	bitreich.org	70
istate of the buzhash algorithm.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M chunker.c                           |      10 ++++++++--	Err	bitreich.org	70
i  M chunker.h                           |       2 +-	Err	bitreich.org	70
i  M dup-pack.c                          |       3 ++-	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 11 insertions(+), 4 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/chunker.c b/chunker.c	/scm/dedup/file/chunker.c.gph	bitreich.org	70
i@@ -17,6 +17,7 @@ struct chunker {	Err	bitreich.org	70
i         size_t maxsize;	Err	bitreich.org	70
i         size_t mask;	Err	bitreich.org	70
i         size_t winsize;	Err	bitreich.org	70
i+        uint32_t seed;	Err	bitreich.org	70
i };	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /*	Err	bitreich.org	70
i@@ -28,7 +29,7 @@ struct chunker {	Err	bitreich.org	70
i  * exactly 50% chance that a XOR operation would flip all the bits in	Err	bitreich.org	70
i  * the hash.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i-static const uint32_t buztbl[] = {	Err	bitreich.org	70
i+static uint32_t buztbl[] = {	Err	bitreich.org	70
i         0xbc9fa594,0x30a8f827,0xced627a7,0xdb46a745,0xcfa4a9e8,0x77cccb59,0xddb66276,0x3adc532f,	Err	bitreich.org	70
i         0xfe8b67d3,0x8155b59e,0x0c893666,0x1d757009,0x17394ee4,0x85d94c07,0xcacd52da,0x076c6f79,	Err	bitreich.org	70
i         0xead0a798,0x6c7ccb4a,0x2639a1b8,0x3aa5ae32,0x3e6218d2,0xb290d980,0xa5149521,0x4b426119,	Err	bitreich.org	70
i@@ -124,9 +125,10 @@ cgetsize(struct chunker *c)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i struct chunker *	Err	bitreich.org	70
i copen(int fd, size_t minsize, size_t maxsize,	Err	bitreich.org	70
i-      size_t mask, size_t winsize)	Err	bitreich.org	70
i+      size_t mask, size_t winsize, uint32_t seed)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         struct chunker *c;	Err	bitreich.org	70
i+        size_t i;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         c = calloc(1, sizeof(*c));	Err	bitreich.org	70
i         if (c == NULL) {	Err	bitreich.org	70
i@@ -146,6 +148,10 @@ copen(int fd, size_t minsize, size_t maxsize,	Err	bitreich.org	70
i         c->maxsize = maxsize;	Err	bitreich.org	70
i         c->mask = mask;	Err	bitreich.org	70
i         c->winsize = winsize;	Err	bitreich.org	70
i+        c->seed = seed;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for (i = 0; i < sizeof(buztbl) / sizeof(buztbl[0]); i++)	Err	bitreich.org	70
i+                buztbl[i] ^= c->seed;	Err	bitreich.org	70
i         return c;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
1diff --git a/chunker.h b/chunker.h	/scm/dedup/file/chunker.h.gph	bitreich.org	70
i@@ -1,6 +1,6 @@	Err	bitreich.org	70
i struct chunker;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-extern struct chunker *copen(int, size_t, size_t, size_t, size_t);	Err	bitreich.org	70
i+extern struct chunker *copen(int, size_t, size_t, size_t, size_t, uint32_t);	Err	bitreich.org	70
i extern void cclose(struct chunker *);	Err	bitreich.org	70
i extern ssize_t cfill(struct chunker *);	Err	bitreich.org	70
i extern void *cget(struct chunker *, size_t *);	Err	bitreich.org	70
1diff --git a/dup-pack.c b/dup-pack.c	/scm/dedup/file/dup-pack.c.gph	bitreich.org	70
i@@ -4,6 +4,7 @@	Err	bitreich.org	70
i #include <err.h>	Err	bitreich.org	70
i #include <fcntl.h>	Err	bitreich.org	70
i #include <limits.h>	Err	bitreich.org	70
i+#include <stdint.h>	Err	bitreich.org	70
i #include <stdio.h>	Err	bitreich.org	70
i #include <stdlib.h>	Err	bitreich.org	70
i #include <unistd.h>	Err	bitreich.org	70
i@@ -62,7 +63,7 @@ pack(struct sctx *sctx, struct bctx *bctx)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         struct chunker *c;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if ((c = copen(0, BSIZEMIN, BSIZEMAX, HMASKBITS, WINSIZE)) == NULL)	Err	bitreich.org	70
i+        if ((c = copen(0, BSIZEMIN, BSIZEMAX, HMASKBITS, WINSIZE, 0)) == NULL)	Err	bitreich.org	70
i                 printerr("copen");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         while (cfill(c) > 0) {	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/dedup/commit/042e687f46e7c334...
Content-Typetext/plain; charset=utf-8