tRemove crypto state and header from safe struct - safe - password protected secret keeper
HTML git clone git://git.z3bra.org/safe.git
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit f166dae60fac29e8696634488db86856ecf1e35b
DIR parent 981f3cc18d47f88883dbcbbe9469ba9d9da5d1a0
HTML Author: Willy Goiffon <dev@z3bra.org>
Date: Tue, 4 Jun 2019 16:59:51 +0200
Remove crypto state and header from safe struct
Diffstat:
M safe.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
---
DIR diff --git a/safe.c b/safe.c
t@@ -24,9 +24,6 @@
#define SAFE ".secrets"
struct safe {
- crypto_secretstream_xchacha20poly1305_state st;
- uint8_t h[crypto_secretstream_xchacha20poly1305_HEADERBYTES];
-
uint8_t key[crypto_secretstream_xchacha20poly1305_KEYBYTES];
uint8_t salt[crypto_pwhash_SALTBYTES];
};
t@@ -246,16 +243,19 @@ writesecret(struct safe *s, int in, int out)
uint8_t tag;
uint8_t m[BUFSIZ];
uint8_t c[BUFSIZ + crypto_secretstream_xchacha20poly1305_ABYTES];
+ uint8_t h[crypto_secretstream_xchacha20poly1305_HEADERBYTES];
+ crypto_secretstream_xchacha20poly1305_state st;
+
unsigned long long clen;
- if (crypto_secretstream_xchacha20poly1305_init_push(&s->st, s->h, s->key))
+ if (crypto_secretstream_xchacha20poly1305_init_push(&st, h, s->key))
return -1;
- xwrite(out, s->h, sizeof(s->h));
+ xwrite(out, h, sizeof(h));
while ((n = xread(in, m, sizeof(m), &eof)) > 0) {
tag = eof ? crypto_secretstream_xchacha20poly1305_TAG_FINAL : 0;
- if (crypto_secretstream_xchacha20poly1305_push(&s->st, c, &clen, m, n, NULL, 0, tag))
+ if (crypto_secretstream_xchacha20poly1305_push(&st, c, &clen, m, n, NULL, 0, tag))
return -1;
xwrite(out, c, clen);
t@@ -271,14 +271,16 @@ readsecret(struct safe *s, int in, int out)
uint8_t tag;
uint8_t m[BUFSIZ];
uint8_t c[BUFSIZ + crypto_secretstream_xchacha20poly1305_ABYTES];
+ uint8_t h[crypto_secretstream_xchacha20poly1305_HEADERBYTES];
+ crypto_secretstream_xchacha20poly1305_state st;
unsigned long long mlen;
- xread(in, s->h, sizeof(s->h), NULL);
- if (crypto_secretstream_xchacha20poly1305_init_pull(&s->st, s->h, s->key))
+ xread(in, h, sizeof(h), NULL);
+ if (crypto_secretstream_xchacha20poly1305_init_pull(&st, h, s->key))
return -1;
while ((n = xread(in, c, sizeof(c), &eof)) > 0) {
- if (crypto_secretstream_xchacha20poly1305_pull(&s->st, m, &mlen, &tag, c, n, NULL, 0))
+ if (crypto_secretstream_xchacha20poly1305_pull(&st, m, &mlen, &tag, c, n, NULL, 0))
return -1;
if (eof && tag != crypto_secretstream_xchacha20poly1305_TAG_FINAL)