SMOLNET PORTAL home about changes
iUse a type field in snap.c - 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 ba06cd1fc2b7c9c50147f5af8898e524cfb741b6	/scm/dedup/commit/ba06cd1fc2b7c9c50147f5af8898e524cfb741b6.gph	bitreich.org	70
1parent 17e33eb2f548925c5a1fead6c2bfe65f6f16cade	/scm/dedup/commit/17e33eb2f548925c5a1fead6c2bfe65f6f16cade.gph	bitreich.org	70
hAuthor: sin <sin@2f30.org>	URL:mailto:sin@2f30.org	bitreich.org	70
iDate:   Fri, 17 May 2019 14:28:53 +0300	Err	bitreich.org	70
i	Err	bitreich.org	70
iUse a type field in snap.c	Err	bitreich.org	70
i	Err	bitreich.org	70
iSimilar to how it is done for the compression/encryption modules.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M snap.c                              |      36 +++++++++++++++++--------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 20 insertions(+), 16 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/snap.c b/snap.c	/scm/dedup/file/snap.c.gph	bitreich.org	70
i@@ -21,6 +21,10 @@	Err	bitreich.org	70
i #include "snap.h"	Err	bitreich.org	70
i #include "state.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/* snapshot encryption algorithms */	Err	bitreich.org	70
i+#define SNONETYPE        0x400	Err	bitreich.org	70
i+#define SCHACHATYPE        0x401	Err	bitreich.org	70
i+	Err	bitreich.org	70
i /* snapshot header constants */	Err	bitreich.org	70
i #define SHDRMAGIC        "SNAPSNAPPYSNOOP"	Err	bitreich.org	70
i #define NSHDRMAGIC        sizeof(SHDRMAGIC)	Err	bitreich.org	70
i@@ -55,7 +59,7 @@ struct mdnode {	Err	bitreich.org	70
i struct sctx {	Err	bitreich.org	70
i         TAILQ_HEAD(mdhead, mdnode) mdhead;        /* list of hashes contained in snapshot */	Err	bitreich.org	70
i         struct mdnode *mdnext;                        /* next hash to be returned via sget() */	Err	bitreich.org	70
i-        int crypto;                                /* when set, snapshots are encrypted */	Err	bitreich.org	70
i+        int type;                                /* encryption algorithm */	Err	bitreich.org	70
i         int fd;                                        /* underlying snapshot file descriptor */	Err	bitreich.org	70
i         int rdonly;                                /* when set, ssync() is a no-op */	Err	bitreich.org	70
i         struct shdr shdr;                        /* snapshot header */	Err	bitreich.org	70
i@@ -114,7 +118,7 @@ loadmdnone(struct sctx *sctx, int first)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static int	Err	bitreich.org	70
i-loadmdcrypto(struct sctx *sctx, int first)	Err	bitreich.org	70
i+loadmdchacha(struct sctx *sctx, int first)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         unsigned char buf[MDSIZE + crypto_secretstream_xchacha20poly1305_ABYTES];	Err	bitreich.org	70
i         unsigned char hdr[SHDRSIZE];	Err	bitreich.org	70
i@@ -161,10 +165,10 @@ initmdhead(struct sctx *sctx)	Err	bitreich.org	70
i         int (*loadmd)(struct sctx *, int);	Err	bitreich.org	70
i         uint64_t i;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (!sctx->crypto)	Err	bitreich.org	70
i+        if (sctx->type == SNONETYPE)	Err	bitreich.org	70
i                 loadmd = loadmdnone;	Err	bitreich.org	70
i         else	Err	bitreich.org	70
i-                loadmd = loadmdcrypto;	Err	bitreich.org	70
i+                loadmd = loadmdchacha;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         shdr = &sctx->shdr;	Err	bitreich.org	70
i         for (i = 0; i < shdr->nbd; i++) {	Err	bitreich.org	70
i@@ -188,7 +192,7 @@ screat(char *path, int mode, struct sctx **sctx)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         unsigned char buf[SHDRSIZE];	Err	bitreich.org	70
i         struct shdr *shdr;	Err	bitreich.org	70
i-        int crypto;	Err	bitreich.org	70
i+        int type;	Err	bitreich.org	70
i         int fd;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (path == NULL || sctx == NULL) {	Err	bitreich.org	70
i@@ -198,16 +202,16 @@ screat(char *path, int mode, struct sctx **sctx)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* Determine algorithm type */	Err	bitreich.org	70
i         if (strcasecmp(param.ealgo, "none") == 0) {	Err	bitreich.org	70
i-                crypto = 0;	Err	bitreich.org	70
i+                type = SNONETYPE;	Err	bitreich.org	70
i         } else if (strcasecmp(param.ealgo, "XChaCha20-Poly1305") == 0) {	Err	bitreich.org	70
i-                crypto = 1;	Err	bitreich.org	70
i+                type = SCHACHATYPE;	Err	bitreich.org	70
i         } else {	Err	bitreich.org	70
i                 seterr("invalid encryption type: %s", param.ealgo);	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* Ensure a key has been provided if caller requested encryption */	Err	bitreich.org	70
i-        if (crypto && !param.keyloaded) {	Err	bitreich.org	70
i+        if (type != SNONETYPE && !param.keyloaded) {	Err	bitreich.org	70
i                 seterr("expected encryption key");	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i@@ -232,7 +236,7 @@ screat(char *path, int mode, struct sctx **sctx)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         TAILQ_INIT(&(*sctx)->mdhead);	Err	bitreich.org	70
i         (*sctx)->mdnext = NULL;	Err	bitreich.org	70
i-        (*sctx)->crypto = crypto;	Err	bitreich.org	70
i+        (*sctx)->type = type;	Err	bitreich.org	70
i         (*sctx)->fd = fd;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         shdr = &(*sctx)->shdr;	Err	bitreich.org	70
i@@ -255,7 +259,7 @@ sopen(char *path, int flags, int mode, struct sctx **sctx)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         unsigned char buf[SHDRSIZE];	Err	bitreich.org	70
i         struct shdr *shdr;	Err	bitreich.org	70
i-        int crypto;	Err	bitreich.org	70
i+        int type;	Err	bitreich.org	70
i         int fd;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (path == NULL || sctx == NULL) {	Err	bitreich.org	70
i@@ -271,9 +275,9 @@ sopen(char *path, int flags, int mode, struct sctx **sctx)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* Determine algorithm type */	Err	bitreich.org	70
i         if (strcasecmp(param.ealgo, "none") == 0) {	Err	bitreich.org	70
i-                crypto = 0;	Err	bitreich.org	70
i+                type = SNONETYPE;	Err	bitreich.org	70
i         } else if (strcasecmp(param.ealgo, "XChaCha20-Poly1305") == 0) {	Err	bitreich.org	70
i-                crypto = 1;	Err	bitreich.org	70
i+                type = SCHACHATYPE;	Err	bitreich.org	70
i         } else {	Err	bitreich.org	70
i                 seterr("invalid encryption type: %s", param.ealgo);	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i@@ -299,7 +303,7 @@ sopen(char *path, int flags, int mode, struct sctx **sctx)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         TAILQ_INIT(&(*sctx)->mdhead);	Err	bitreich.org	70
i         (*sctx)->mdnext = NULL;	Err	bitreich.org	70
i-        (*sctx)->crypto = crypto;	Err	bitreich.org	70
i+        (*sctx)->type = type;	Err	bitreich.org	70
i         (*sctx)->fd = fd;	Err	bitreich.org	70
i         (*sctx)->rdonly = 1;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -418,7 +422,7 @@ syncnone(struct sctx *sctx)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static int	Err	bitreich.org	70
i-synccrypto(struct sctx *sctx)	Err	bitreich.org	70
i+syncchacha(struct sctx *sctx)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         unsigned char hdr[SHDRSIZE];	Err	bitreich.org	70
i         crypto_secretstream_xchacha20poly1305_state state;	Err	bitreich.org	70
i@@ -474,10 +478,10 @@ ssync(struct sctx *sctx)	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (!sctx->crypto)	Err	bitreich.org	70
i+        if (sctx->type == SNONETYPE)	Err	bitreich.org	70
i                 syncnone(sctx);	Err	bitreich.org	70
i         else	Err	bitreich.org	70
i-                synccrypto(sctx);	Err	bitreich.org	70
i+                syncchacha(sctx);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         fsync(sctx->fd);	Err	bitreich.org	70
i         return 0;	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/dedup/commit/ba06cd1fc2b7c9c5...
Content-Typetext/plain; charset=utf-8