iStore key in hex format - 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 bf808eff120238a6a3ef7cc243469143a7f8c40b /scm/dedup/commit/bf808eff120238a6a3ef7cc243469143a7f8c40b.gph bitreich.org 70 1parent b7ba4766399045f736c536b1a9b17c26e181cfa8 /scm/dedup/commit/b7ba4766399045f736c536b1a9b17c26e181cfa8.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Tue, 21 May 2019 13:55:55 +0300 Err bitreich.org 70 i Err bitreich.org 70 iStore key in hex format Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M key.c | 18 ++++++++++++++++-- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 16 insertions(+), 2 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/key.c b/key.c /scm/dedup/file/key.c.gph bitreich.org 70 i@@ -25,12 +25,17 @@ keygen(unsigned char *key, size_t n) Err bitreich.org 70 i int Err bitreich.org 70 i writekey(int fd, unsigned char *key, size_t n) Err bitreich.org 70 i { Err bitreich.org 70 i+ unsigned char keystr[KEYSIZE * 2 + 1]; Err bitreich.org 70 i+ Err bitreich.org 70 i assert(KEYSIZE == crypto_aead_xchacha20poly1305_ietf_KEYBYTES); Err bitreich.org 70 i if (n != KEYSIZE) { Err bitreich.org 70 i seterr("invalid key size"); Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i- if (xwrite(fd, key, n) != n) { Err bitreich.org 70 i+ Err bitreich.org 70 i+ sodium_bin2hex(keystr, sizeof(keystr), key, n); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (xwrite(fd, keystr, sizeof(keystr) - 1) != sizeof(keystr) - 1) { Err bitreich.org 70 i seterr("failed to write key"); Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -40,14 +45,23 @@ writekey(int fd, unsigned char *key, size_t n) Err bitreich.org 70 i int Err bitreich.org 70 i readkey(int fd, unsigned char *key, size_t n) Err bitreich.org 70 i { Err bitreich.org 70 i+ unsigned char keystr[KEYSIZE * 2 + 1]; Err bitreich.org 70 i+ size_t binlen; Err bitreich.org 70 i+ Err bitreich.org 70 i assert(KEYSIZE == crypto_aead_xchacha20poly1305_ietf_KEYBYTES); Err bitreich.org 70 i if (n != KEYSIZE) { Err bitreich.org 70 i seterr("invalid key size"); Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i- if (xread(fd, key, n) != n) { Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (xread(fd, keystr, sizeof(keystr) - 1) != sizeof(keystr) - 1) { Err bitreich.org 70 i seterr("failed to read key"); Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i+ keystr[sizeof(keystr) - 1] = '\0'; Err bitreich.org 70 i+ Err bitreich.org 70 i+ sodium_hex2bin(key, n, keystr, sizeof(keystr), NULL, &binlen, NULL); Err bitreich.org 70 i+ if (binlen != KEYSIZE) Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 .