X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfcrypt.c;h=9e0e6293804f258d2e00cae1bfee6a578b749da7;hb=522bfd567b97caa1496044814e42cfd12fbc22d9;hp=a540db4b77e7586fb00f351b682244e2ce7f1ca7;hpb=b0637473e28d682b2ec870dd62cc05eb749842d0;p=tfcrypt.git diff --git a/tfcrypt.c b/tfcrypt.c index a540db4..9e0e629 100644 --- a/tfcrypt.c +++ b/tfcrypt.c @@ -164,7 +164,7 @@ _baddfname: } opterr = 0; - while ((c = getopt(argc, argv, "L:s:aU:C:r:K:t:PXkzxc:l:qedn:vV:pwE:o:O:S:AmuM:R:Z:WHD:")) != -1) { + while ((c = getopt(argc, argv, "L:s:aU:C:r:K:t:PXkzxc:l:qedn:vV:pwE:o:O:S:AmuM:R:Z:WHD:gj")) != -1) { switch (c) { case 'L': read_defaults(optarg, NO); @@ -175,6 +175,14 @@ _baddfname: case 'r': randsource = optarg; break; + case 'j': + case 'g': + if (c == 'j') ctr_mode = TFC_MODE_CTR; + else if (c == 'g') ctr_mode = TFC_MODE_STREAM; + if (do_edcrypt == TFC_DO_DECRYPT) counter_opt = TFC_CTR_HEAD; + else if (do_edcrypt == TFC_DO_ENCRYPT) counter_opt = TFC_CTR_RAND; + else xerror(NO, YES, YES, "plain mode was selected with -%c, cannot continue", c); + break; case 'c': if (!strcasecmp(optarg, "show")) counter_opt = TFC_CTR_SHOW; @@ -1197,6 +1205,7 @@ _decrypt_again_vrfy2: } total_processed_src = rwd; memcpy(ctr, svctr, TF_BLOCK_SIZE); + if (ctr_mode == TFC_MODE_STREAM) tfe_init_iv(&tfe, key, ctr); memset(svctr, 0, TF_BLOCK_SIZE); }