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 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 bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include 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 .