*/
#include "tfcrypt.h"
+#include "tfcrypt_defs.h"
char *progname;
int exitcode;
-size_t nr_turns = TFC_NR_TURNS;
-int ctr_mode = TFC_CTR_MODE;
-size_t macbits = TF_MAX_BITS;
-
-tfc_byte key[TF_KEY_SIZE], ctr[TF_BLOCK_SIZE], xtskey[TF_KEY_SIZE], mackey[TF_FROM_BITS(TF_MAX_BITS)];
+tfc_byte key[TF_KEY_SIZE], ctr[TF_BLOCK_SIZE], xtskey[TF_KEY_SIZE], mackey[TF_FROM_BITS(TF_MAX_BITS)], tweak[TF_TWEAK_SIZE];
struct skein sk;
struct tfe_stream tfe;
tfc_byte srcblk[TFC_BLKSIZE], dstblk[TFC_BLKSIZE], *pblk;
char *randsource = TFC_DEFAULT_RANDSOURCE;
-tfc_fsize iseek_blocks, iseek, oseek, maxlen = NOFSIZE;
+tfc_fsize iseek_blocks, iseek, oseek, maxlen = NOFSIZE, ftrunc_dfd = NOFSIZE;
tfc_fsize total_processed_src, total_processed_dst;
tfc_fsize delta_processed;
tfc_fsize genrandom_nr_bytes, genzero_nr_bytes;
+tfc_fsize rdpos = NOFSIZE;
+tfc_fsize maxkeylen = NOFSIZE, keyoffset;
int sfd, kfd = -1, dfd = 1;
struct stat s_stat;
size_t blksize = TFC_BLKSIZE, xtsblocks = TFC_XTSBLOCKS;
char pwdask[512], pwdagain[512];
size_t lio, lrem, ldone, lblock;
-size_t maxkeylen = NOSIZE, ctrsz = NOSIZE;
+size_t ctrsz = NOSIZE;
struct sigaction sigact;
int do_edcrypt = TFC_DO_ENCRYPT, do_stop, quiet, error_action;
int counter_opt, mackey_opt, do_mac, do_outfmt = TFC_OUTFMT_B64, rawkey;
int idx, write_flags;
-tfc_yesno catch_all_errors, password, overwrite_source, do_fsync, do_pad, do_tfcrypt1;
+tfc_yesno catch_all_errors, ignore_seek_errors, password, overwrite_source, do_fsync, do_pad;
tfc_yesno do_preserve_time, do_stats_in_gibs, do_statline_dynamic = YES, do_less_stats;
-tfc_yesno no_repeat, do_full_hexdump = YES, verbose, statline_was_shown;
+tfc_yesno no_repeat, do_full_hexdump = YES, verbose, statline_was_shown, show_secrets;
char *srcfname = TFC_STDIN_NAME, *dstfname = TFC_STDOUT_NAME, *do_mac_file, *counter_file, *sksum_hashlist_file;
-char *genkeyf, *mackeyf, *tweakf;
+char *saltf, *genkeyf, *mackeyf, *tweakf;
char *pw_prompt, *mac_pw_prompt;
tfc_useconds status_timer, bench_timer;
tfc_useconds current_time, delta_time;