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