URI: 
       Add -k option to dup-init(1) - dedup - deduplicating backup program
  HTML git clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit a1037d78c0b5a6d557e520a87d484e77168610b9
   DIR parent d0213e5514ecb4a49986054e94943ff3016c5766
  HTML Author: sin <sin@2f30.org>
       Date:   Thu,  2 May 2019 23:32:12 +0100
       
       Add -k option to dup-init(1)
       
       Diffstat:
         M dup-init.1                          |       5 ++++-
         M dup-init.c                          |      26 ++++++++++++++++++++++++--
         M test006                             |       2 +-
       
       3 files changed, 29 insertions(+), 4 deletions(-)
       ---
   DIR diff --git a/dup-init.1 b/dup-init.1
       @@ -9,6 +9,7 @@
        .Op Fl v
        .Op Fl E Ar algo
        .Op Fl Z Ar algo
       +.Op Fl k Ar keyfile
        .Op repo
        .Sh DESCRIPTION
        .Nm
       @@ -17,7 +18,7 @@ If no
        .Ar repo
        is specified the current working directory is used.
        .Sh OPTIONS
       -.Bl -tag -width "-Z algo"
       +.Bl -tag -width "-k keyfile"
        .It Fl E Ar algo
        The encryption algorithm used to encrypt the blocks
        in the store.
       @@ -30,6 +31,8 @@ in the store.
        The supported compressor algorithms are none and snappy.
        This flag only has an effect when initializing the repository.
        By default snappy is used.
       +.It Fl k Ar keyfile
       +Path to encryption key.
        .It Fl v
        Enable verbose mode.
        .El
   DIR diff --git a/dup-init.c b/dup-init.c
       @@ -2,13 +2,15 @@
        #include <sys/stat.h>
        
        #include <err.h>
       +#include <fcntl.h>
        #include <stdio.h>
        #include <stdlib.h>
        #include <unistd.h>
        
        #include "arg.h"
       -#include "config.h"
        #include "block.h"
       +#include "config.h"
       +#include "key.h"
        #include "snap.h"
        
        int verbose;
       @@ -17,21 +19,26 @@ char *argv0;
        static void
        usage(void)
        {
       -        fprintf(stderr, "usage: %s [-v] [-E algo] [-Z algo] [repo]\n", argv0);
       +        fprintf(stderr, "usage: %s [-v] [-E algo] [-Z algo] [-k keyfile] [repo]\n", argv0);
                exit(1);
        }
        
        int
        main(int argc, char *argv[])
        {
       +        unsigned char key[KEYSIZE];
                struct bctx *bctx;        /* block context */
                struct bparam bpar;
       +        char *keyfile = NULL;
                char *repo;
        
                bpar.calgo = bparamdef()->calgo;
                bpar.ealgo = bparamdef()->ealgo;
        
                ARGBEGIN {
       +        case 'k':
       +                keyfile = EARGF(usage());
       +                break;
                case 'E':
                        bpar.ealgo = EARGF(usage());
                        break;
       @@ -56,6 +63,21 @@ main(int argc, char *argv[])
                        usage();
                };
        
       +        if (keyfile != NULL) {
       +                int fd;
       +
       +                fd = open(keyfile, O_RDONLY);
       +                if (fd < 0)
       +                        err(1, "open: %s", keyfile);
       +                if (loadkey(fd, key, sizeof(key)) < 0)
       +                        errx(1, "loadkey: failed");
       +                bpar.key = key;
       +                if (close(fd) < 0)
       +                        err(1, "close: %s", keyfile);
       +        } else {
       +                bpar.key = NULL;
       +        }
       +
                mkdir(repo, 0700);
                if (chdir(repo) < 0)
                        err(1, "chdir: %s", repo);
   DIR diff --git a/test006 b/test006
       @@ -6,7 +6,7 @@ repo=`mktemp -d`
        data=`mktemp`
        dd if=/dev/urandom of="$data" bs=1M count=64
        ./dup-keygen "$keyfile"
       -./dup-init -E XChaCha20-Poly1305 "$repo"
       +./dup-init -E XChaCha20-Poly1305 -k "$keyfile" "$repo"
        ./dup-pack -k "$keyfile" -r "$repo" snap0 < "$data"
        ./dup-gc -k "$keyfile" "$repo"
        ./dup-rm -k "$keyfile" -r "$repo" snap0 < "$data"