* tfcrypt -- high security Threefish encryption tool.
*
* tfcrypt is copyrighted:
- * Copyright (C) 2012-2018 Andrey Rys. All rights reserved.
+ * Copyright (C) 2012-2019 Andrey Rys. All rights reserved.
*
* tfcrypt is licensed to you under the terms of std. MIT/X11 license:
*
*t = 0; d = t+1; goto _spc2;
_nspc:
if (!strcmp(s, "nr_turns")) {
- nr_turns = sksum_turns = strtoul(d, &stoi, 10);
+ nr_turns = strtoul(d, &stoi, 10);
if (!str_empty(stoi)) xerror(NO, YES, YES, "[%s] nr_turns=%s: invalid number of turns", path, d);
}
else if (!strcmp(s, "ctr_mode")) {
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);
+}