* 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:
*
skein_final(hash, &sk);
}
-void tf_key_tweak_compat(void *key)
-{
- TF_UNIT_TYPE *ukey = key, c = THREEFISH_CONST;
- size_t x;
-
- for (x = 0; x < TF_NR_BLOCK_UNITS; x++) c ^= ukey[x];
- ukey[x] = c;
- ukey[TF_TWEAK_WORD3] = ukey[TF_TWEAK_WORD1] ^ ukey[TF_TWEAK_WORD2];
-}
-
tfc_yesno skeinfd(void *hash, size_t bits, const void *key, int fd, tfc_fsize offset, tfc_fsize readto)
{
static tfc_byte skblk[TFC_BLKSIZE];
if (readto == NOFSIZE) goto _fail;
}
if (offset != 0 && offset != NOFSIZE) {
- if (lseek(fd, (off_t)offset, SEEK_SET) == -1) goto _fail;
+ if (lseek(fd, (off_t)offset, SEEK_SET) == -1) {
+ if (ignore_seek_errors == NO) goto _fail;
+ }
}
}
sigact.sa_flags = SA_RESTART;
sigact.sa_handler = print_crypt_status;
sigaction(SIGUSR1, &sigact, NULL);
- sigaction(SIGTSTP, &sigact, NULL);
sigaction(SIGALRM, &sigact, NULL);
sigact.sa_handler = change_status_width;
sigaction(SIGQUIT, &sigact, NULL);
sigact.sa_handler = exit_sigterm;
sigaction(SIGINT, &sigact, NULL);
sigaction(SIGTERM, &sigact, NULL);
+ sigact.sa_handler = handle_sigtstp;
+ sigaction(SIGTSTP, &sigact, NULL);
memset(&sigact, 0, sizeof(struct sigaction));
tfc_getcurtime(&delta_time);
while (1) {
memset(sksblk, 0, sizeof(sksblk));
- x = xfgets(sksblk, sizeof(sksblk), f);
- if (x == 0) break;
+ if (xfgets(sksblk, sizeof(sksblk), f) != YES) break;
s = d = sksblk; t = NULL;
shash = fname = NULL;