Display hash of current defaults.
[tfcrypt.git] / tfc_conf.c
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);
+}