On Thu, Aug 17, 2023 at 06:43:36PM +1000, Joel Sing wrote:
> I agree with the intent, however the man page should probably reflect this
> change (i.e. -s makes it non-interactive and you will not get confirmation).

Done.

> 
> > Index: bioctl.c
> > ===================================================================
> > RCS file: /cvs/src/sbin/bioctl/bioctl.c,v
> > retrieving revision 1.151
> > diff -u -p -r1.151 bioctl.c
> > --- bioctl.c        18 Oct 2022 07:04:20 -0000      1.151
> > +++ bioctl.c        17 Aug 2023 02:16:37 -0000
> > @@ -989,7 +989,7 @@ bio_kdf_generate(struct sr_crypto_kdfinf
> >     derive_key(kdfinfo->pbkdf.generic.type, kdfinfo->pbkdf.rounds,
> >         kdfinfo->maskkey, sizeof(kdfinfo->maskkey),
> >         kdfinfo->pbkdf.salt, sizeof(kdfinfo->pbkdf.salt),
> > -       "New passphrase: ", 1);
> > +       "New passphrase: ", rpp_flag == RPP_REQUIRE_TTY ? 1 : 0);
> 
> I think it would be less ugly to have an iteractive global (or similar)
> and clear that when -s is given (the correct way to write the above would
> require masking rpp_flag). 

Done.  This makes all of the following behave as expected
        bioctl -cC -lvnd0a softraid0
        bioctl -d sd2
        bioctl -s -cC -lvnd0a softraid0
        bioctl -P sd2
        bioctl -s -P sd2

Feedback? OK?


Index: bioctl.8
===================================================================
RCS file: /cvs/src/sbin/bioctl/bioctl.8,v
retrieving revision 1.111
diff -u -p -r1.111 bioctl.8
--- bioctl.8    6 Jul 2023 21:08:50 -0000       1.111
+++ bioctl.8    17 Aug 2023 09:24:28 -0000
@@ -288,7 +288,7 @@ is specified as "auto", the number of ro
 based on system performance.
 Otherwise the minimum is 4 rounds and the default is 16.
 .It Fl s
-Read the passphrase for the selected crypto volume from
+Omit prompts and read passphrases without confirmation from
 .Pa /dev/stdin
 rather than
 .Pa /dev/tty .
Index: bioctl.c
===================================================================
RCS file: /cvs/src/sbin/bioctl/bioctl.c,v
retrieving revision 1.151
diff -u -p -r1.151 bioctl.c
--- bioctl.c    18 Oct 2022 07:04:20 -0000      1.151
+++ bioctl.c    17 Aug 2023 09:23:13 -0000
@@ -94,7 +94,7 @@ char                  *password;
 
 void                   *bio_cookie;
 
-int rpp_flag = RPP_REQUIRE_TTY;
+int interactive = 1;
 
 int
 main(int argc, char *argv[])
@@ -200,7 +200,7 @@ main(int argc, char *argv[])
                        al_arg = optarg;
                        break;
                case 's':
-                       rpp_flag = RPP_STDIN;
+                       interactive = 0;
                        break;
                case 't': /* patrol */
                        func |= BIOC_PATROL;
@@ -989,7 +989,7 @@ bio_kdf_generate(struct sr_crypto_kdfinf
        derive_key(kdfinfo->pbkdf.generic.type, kdfinfo->pbkdf.rounds,
            kdfinfo->maskkey, sizeof(kdfinfo->maskkey),
            kdfinfo->pbkdf.salt, sizeof(kdfinfo->pbkdf.salt),
-           "New passphrase: ", 1);
+           "New passphrase: ", interactive);
 }
 
 int
@@ -1316,6 +1316,7 @@ derive_key(u_int32_t type, int rounds, u
        size_t          pl;
        struct stat     sb;
        char            passphrase[1024], verifybuf[1024];
+       int             rpp_flag = RPP_ECHO_OFF;
 
        if (!key)
                errx(1, "Invalid key");
@@ -1351,6 +1352,8 @@ derive_key(u_int32_t type, int rounds, u
 
                fclose(f);
        } else {
+               rpp_flag |= interactive ? RPP_REQUIRE_TTY : RPP_STDIN;
+
                if (readpassphrase(prompt, passphrase, sizeof(passphrase),
                    rpp_flag) == NULL)
                        err(1, "unable to read passphrase");

Reply via email to