X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfcrypt.c;h=01173fb691a214f7e666fb0f48552072b4c59756;hb=0b911d4a813fe164d62ef6ef132c5a4f9a441d57;hp=c8664cca99aad14cbc4cb9e84c4bb964483f5b4a;hpb=26668913a55e867900ae7f80615640d814494e29;p=tfcrypt.git diff --git a/tfcrypt.c b/tfcrypt.c index c8664cc..01173fb 100644 --- a/tfcrypt.c +++ b/tfcrypt.c @@ -91,6 +91,8 @@ _baddfname: counter_opt = TFC_CTR_HEAD; else if (!strcasecmp(optarg, "rand")) counter_opt = TFC_CTR_RAND; + else if (!strcasecmp(optarg, "zero")) + counter_opt = TFC_CTR_ZERO; else counter_file = sksum_hashlist_file = optarg; break; case 'C': @@ -920,8 +922,6 @@ _xts2genkey: if (xwrite(krfd, pblk, TF_FROM_BITS(TFC_KEY_BITS)) == NOSIZE) xerro tfc_data_to_words64(&iseek_blocks, sizeof(iseek_blocks)); tf_ctr_set(ctr, &iseek_blocks, sizeof(iseek_blocks)); - if (ctr_mode == TFC_MODE_STREAM) tfe_init_iv(&tfe, key, ctr); - switch (counter_opt) { case TFC_CTR_SHOW: switch (do_outfmt) { @@ -931,6 +931,7 @@ _xts2genkey: if (xwrite(krfd, pblk, TF_FROM_BITS(TFC_KEY_BITS)) == NOSIZE) xerro } break; case TFC_CTR_RAND: tfc_getrandom(ctr, ctrsz); break; + case TFC_CTR_ZERO: memset(ctr, 0, ctrsz); break; } _ctrskip2: @@ -1003,6 +1004,8 @@ _ctrwagain: lio = xwrite(dfd, pblk, lrem); delta_processed += ldone; } + if (ctr_mode == TFC_MODE_STREAM) tfe_init_iv(&tfe, key, ctr); + errno = 0; do_stop = NO; while (1) {