iencrypt: Use a switch instead of an if/elseif construct - 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 5bb4a9db996f3e7265fe0588fa03125a28cd9051 /scm/dedup/commit/5bb4a9db996f3e7265fe0588fa03125a28cd9051.gph bitreich.org 70
1parent e401f4cd871cf10bbcaf31eee682c3ae34454b5d /scm/dedup/commit/e401f4cd871cf10bbcaf31eee682c3ae34454b5d.gph bitreich.org 70
hAuthor: sin <sin@2f30.org> URL:mailto:sin@2f30.org bitreich.org 70
iDate: Thu, 16 May 2019 13:58:55 +0300 Err bitreich.org 70
i Err bitreich.org 70
iencrypt: Use a switch instead of an if/elseif construct Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M bcompress.c | 3 ++- Err bitreich.org 70
i M bencrypt.c | 58 +++++++++++++++---------------- Err bitreich.org 70
i Err bitreich.org 70
i2 files changed, 30 insertions(+), 31 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/bcompress.c b/bcompress.c /scm/dedup/file/bcompress.c.gph bitreich.org 70
i@@ -208,10 +208,11 @@ bcput(struct bctx *bctx, void *buf, size_t n, unsigned char *md) Err bitreich.org 70
i break; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i- /* Prepend compression descriptor */ Err bitreich.org 70
i+ /* Prepare compression descriptor */ Err bitreich.org 70
i cd.type = cctx->type; Err bitreich.org 70
i memset(cd.reserved, 0, sizeof(cd.reserved)); Err bitreich.org 70
i cd.size = cn; Err bitreich.org 70
i+ /* Prepend compression descriptor */ Err bitreich.org 70
i packcd(cbuf, &cd); Err bitreich.org 70
i Err bitreich.org 70
i if (bencryptops()->put(bctx, cbuf, CDSIZE + cn, md) < 0) { Err bitreich.org 70
1diff --git a/bencrypt.c b/bencrypt.c /scm/dedup/file/bencrypt.c.gph bitreich.org 70
i@@ -181,17 +181,18 @@ beput(struct bctx *bctx, void *buf, size_t n, unsigned char *md) Err bitreich.org 70
i struct ectx *ectx; Err bitreich.org 70
i struct ed ed; Err bitreich.org 70
i unsigned char *ebuf; Err bitreich.org 70
i+ unsigned long long elen; Err bitreich.org 70
i size_t en; Err bitreich.org 70
i Err bitreich.org 70
i /* Calculate size of encrypted block */ Err bitreich.org 70
i ectx = bctx->ectx; Err bitreich.org 70
i- if (ectx->type == EDNONETYPE) { Err bitreich.org 70
i+ switch (ectx->type) { Err bitreich.org 70
i+ case EDNONETYPE: Err bitreich.org 70
i en = n; Err bitreich.org 70
i- } else if (ectx->type == EDCHACHATYPE) { Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case EDCHACHATYPE: Err bitreich.org 70
i en = n + crypto_aead_xchacha20poly1305_ietf_ABYTES; Err bitreich.org 70
i- } else { Err bitreich.org 70
i- seterr("invalid encryption type: %d", ectx->type); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i+ break; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i ebuf = malloc(EDSIZE + en); Err bitreich.org 70
i@@ -200,36 +201,35 @@ beput(struct bctx *bctx, void *buf, size_t n, unsigned char *md) Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i- /* Prepend the encryption descriptor */ Err bitreich.org 70
i+ /* Prepare encryption descriptor */ Err bitreich.org 70
i ed.type = ectx->type; Err bitreich.org 70
i memset(ed.reserved, 0, sizeof(ed.reserved)); Err bitreich.org 70
i ed.size = en; Err bitreich.org 70
i+ Err bitreich.org 70
i /* Fill nonce buffer */ Err bitreich.org 70
i- if (ectx->type == EDNONETYPE) { Err bitreich.org 70
i+ switch (ectx->type) { Err bitreich.org 70
i+ case EDNONETYPE: Err bitreich.org 70
i memset(ed.nonce, 0, sizeof(ed.nonce)); Err bitreich.org 70
i- } else if (ectx->type == EDCHACHATYPE) { Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case EDCHACHATYPE: Err bitreich.org 70
i randombytes_buf(ed.nonce, sizeof(ed.nonce)); Err bitreich.org 70
i- } else { Err bitreich.org 70
i- free(ebuf); Err bitreich.org 70
i- seterr("invalid encryption type: %d", ectx->type); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i+ break; Err bitreich.org 70
i } Err bitreich.org 70
i+ Err bitreich.org 70
i+ /* Prepend encryption descriptor */ Err bitreich.org 70
i packed(ebuf, &ed); Err bitreich.org 70
i Err bitreich.org 70
i /* Encrypt block */ Err bitreich.org 70
i- if (ectx->type == EDNONETYPE) { Err bitreich.org 70
i+ switch (ectx->type) { Err bitreich.org 70
i+ case EDNONETYPE: Err bitreich.org 70
i memcpy(&ebuf[EDSIZE], buf, en); Err bitreich.org 70
i- } else if (ectx->type == EDCHACHATYPE) { Err bitreich.org 70
i- unsigned long long elen; Err bitreich.org 70
i- Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case EDCHACHATYPE: Err bitreich.org 70
i crypto_aead_xchacha20poly1305_ietf_encrypt(&ebuf[EDSIZE], &elen, Err bitreich.org 70
i buf, n, ebuf, EDSIZE, NULL, Err bitreich.org 70
i ed.nonce, ectx->key); Err bitreich.org 70
i assert(elen == en); Err bitreich.org 70
i- } else { Err bitreich.org 70
i- free(ebuf); Err bitreich.org 70
i- seterr("invalid encryption type: %d", ectx->type); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i+ break; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i if (bstorageops()->put(bctx, ebuf, EDSIZE + en, md) < 0) { Err bitreich.org 70
i@@ -245,7 +245,9 @@ static int Err bitreich.org 70
i beget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i { Err bitreich.org 70
i struct ed ed; Err bitreich.org 70
i+ struct ectx *ectx; Err bitreich.org 70
i unsigned char *ebuf; Err bitreich.org 70
i+ unsigned long long dlen; Err bitreich.org 70
i size_t dn, size; Err bitreich.org 70
i Err bitreich.org 70
i /* Calculate maximum size of encrypted block */ Err bitreich.org 70
i@@ -265,7 +267,9 @@ beget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i unpacked(ebuf, &ed); Err bitreich.org 70
i Err bitreich.org 70
i /* Decrypt block */ Err bitreich.org 70
i- if (ed.type == EDNONETYPE) { Err bitreich.org 70
i+ ectx = bctx->ectx; Err bitreich.org 70
i+ switch (ed.type) { Err bitreich.org 70
i+ case EDNONETYPE: Err bitreich.org 70
i dn = ed.size; Err bitreich.org 70
i if (*n < dn) { Err bitreich.org 70
i free(ebuf); Err bitreich.org 70
i@@ -273,10 +277,8 @@ beget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i memcpy(buf, &ebuf[EDSIZE], dn); Err bitreich.org 70
i- } else if (ed.type == EDCHACHATYPE) { Err bitreich.org 70
i- struct ectx *ectx; Err bitreich.org 70
i- unsigned long long dlen; Err bitreich.org 70
i- Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case EDCHACHATYPE: Err bitreich.org 70
i dn = ed.size - crypto_aead_xchacha20poly1305_ietf_ABYTES; Err bitreich.org 70
i if (*n < dn) { Err bitreich.org 70
i free(ebuf); Err bitreich.org 70
i@@ -284,7 +286,6 @@ beget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i- ectx = bctx->ectx; Err bitreich.org 70
i if (crypto_aead_xchacha20poly1305_ietf_decrypt(buf, &dlen, Err bitreich.org 70
i NULL, Err bitreich.org 70
i &ebuf[EDSIZE], ed.size, Err bitreich.org 70
i@@ -296,10 +297,7 @@ beget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i assert(dn == dlen); Err bitreich.org 70
i- } else { Err bitreich.org 70
i- free(ebuf); Err bitreich.org 70
i- seterr("invalid encryption type: %d", ed.type); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i+ break; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i free(ebuf); Err bitreich.org 70
.
Response:
text/plain