Display hash of current defaults.
authorAndrey Rys <rys@lynxlynx.ru>
Wed, 24 Apr 2019 20:22:02 +0000 (03:22 +0700)
committerAndrey Rys <rys@lynxlynx.ru>
Wed, 24 Apr 2019 20:22:02 +0000 (03:22 +0700)
VERSION
tfc_conf.c
tfc_error.c
tfcrypt.h
tfcrypt_defs.h

diff --git a/VERSION b/VERSION
index f04c001f3f7fd5d290d0264b4a2c35f7b159ac42..64bb6b746dceaf12b0ba8c08f310b0426babde44 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-29
+30
index c583b860fc8117160fd8071dc697c2af5cae5657..da4523151b5a070be91d0d48300d9d2612f8040a 100644 (file)
@@ -104,3 +104,35 @@ _nspc:
        memset(ln, 0, sizeof(ln));
        fclose(f);
 }
+
+void hash_defaults(char *uhash, size_t szuhash)
+{
+       struct skein sk;
+       char shash[56];
+       const char *mode;
+       tfc_byte hash[TF_FROM_BITS(256)];
+
+       skein_init(&sk, 256);
+
+       skein_update(&sk, tfc_salt, tfc_saltsz);
+
+       memset(shash, 0, sizeof(shash));
+       sprintf(shash, "%zu", nr_turns);
+       skein_update(&sk, shash, strlen(shash));
+
+       mode = tfc_modename(ctr_mode);
+       skein_update(&sk, mode, strlen(mode));
+
+       memset(shash, 0, sizeof(shash));
+       sprintf(shash, "%zu", macbits);
+       skein_update(&sk, shash, strlen(shash));
+
+       skein_update(&sk, do_full_key ? "1" : "0", 1);
+
+       skein_final(hash, &sk);
+       memset(shash, 0, sizeof(shash));
+       base64_encode(shash, (const char *)hash, sizeof(hash));
+       memset(hash, 0, sizeof(hash));
+
+       xstrlcpy(uhash, shash, szuhash);
+}
index c4e51f169669b2684c480207a8412b07707bddd6..5729de0f42ff26ad18db6e37da6f81c4d4c7e934 100644 (file)
@@ -91,7 +91,11 @@ void usage(void)
        tfc_yesno is_embedded_prog = NO;
 
        if (optopt == 'V') {
+               char shash[64];
                tfc_say("tfcrypt toolkit, version %s.", _TFCRYPT_VERSION);
+               hash_defaults(shash, sizeof(shash));
+               tfc_say("Defaults hash: %s", shash);
+               memset(shash, 0, sizeof(shash));
                xexit(0);
        }
 
index 49073c96ad0d63fb63d97530a531ee247b77855b..e33e858bdba66b027553426d0e98e719bc86afa0 100644 (file)
--- a/tfcrypt.h
+++ b/tfcrypt.h
@@ -207,6 +207,7 @@ void skein(void *hash, size_t bits, const void *key, const void *data, size_t sz
 tfc_yesno skeinfd(void *hash, size_t bits, const void *key, int fd, tfc_fsize offset, tfc_fsize readto);
 
 void read_defaults(const char *path, tfc_yesno noerr);
+void hash_defaults(char *uhash, size_t szuhash);
 
 void gen_write_bytes(const char *foutname, tfc_fsize offset, tfc_fsize nrbytes);
 void do_edbase64(char **fargv);
index c7b3ae748406b729e650f016a762d7bdbac20fc2..9e54d806ef00952f00226437f5f72af252795d3d 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef _TFCRYPT_DEFAULTS_HEADER
 #define _TFCRYPT_DEFAULTS_HEADER
 
+/* 5uouFzawL37Un6RtVqWbv0SOX48ew/xntAG5sNaOSlk= */
+
 size_t nr_turns = 262144;
 int ctr_mode = TFC_MODE_XTS;
 size_t macbits = TF_MAX_BITS;