svn commit: r332361 - in head: sbin/geom/class/eli sys/geom/eli
Mariusz Zaborski
oshogbo at FreeBSD.org
Tue Apr 10 13:22:49 UTC 2018
Author: oshogbo
Date: Tue Apr 10 13:22:48 2018
New Revision: 332361
URL: https://svnweb.freebsd.org/changeset/base/332361
Log:
Introduce dry run option for attaching the device.
This will allow us to verify if passphrase and key is valid without
decrypting whole device.
Reviewed by: cem@, allanjude@
Differential Revision: https://reviews.freebsd.org/D15000
Modified:
head/sbin/geom/class/eli/geli.8
head/sbin/geom/class/eli/geom_eli.c
head/sys/geom/eli/g_eli_ctl.c
Modified: head/sbin/geom/class/eli/geli.8
==============================================================================
--- head/sbin/geom/class/eli/geli.8 Tue Apr 10 13:16:50 2018 (r332360)
+++ head/sbin/geom/class/eli/geli.8 Tue Apr 10 13:22:48 2018 (r332361)
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd September 17, 2017
+.Dd April 10, 2018
.Dt GELI 8
.Os
.Sh NAME
@@ -67,7 +67,7 @@ utility:
.Cm init
.Nm
.Cm attach
-.Op Fl dprv
+.Op Fl dnprv
.Op Fl j Ar passfile
.Op Fl k Ar keyfile
.Ar prov
@@ -420,6 +420,9 @@ For more information see the description of the
option for the
.Cm init
subcommand.
+.It Fl n
+Do a dry-run decryption.
+This is useful to verify passphrase and keyfile without decrypting the device.
.It Fl p
Do not use a passphrase as a component of the User Key.
Cannot be combined with the
Modified: head/sbin/geom/class/eli/geom_eli.c
==============================================================================
--- head/sbin/geom/class/eli/geom_eli.c Tue Apr 10 13:16:50 2018 (r332360)
+++ head/sbin/geom/class/eli/geom_eli.c Tue Apr 10 13:22:48 2018 (r332361)
@@ -148,11 +148,12 @@ struct g_command class_commands[] = {
{ 'd', "detach", NULL, G_TYPE_BOOL },
{ 'j', "passfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI },
{ 'k', "keyfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI },
+ { 'n', "dryrun", NULL, G_TYPE_BOOL },
{ 'p', "nopassphrase", NULL, G_TYPE_BOOL },
{ 'r', "readonly", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- "[-dprv] [-j passfile] [-k keyfile] prov"
+ "[-dnprv] [-j passfile] [-k keyfile] prov"
},
{ "detach", 0, NULL,
{
Modified: head/sys/geom/eli/g_eli_ctl.c
==============================================================================
--- head/sys/geom/eli/g_eli_ctl.c Tue Apr 10 13:16:50 2018 (r332360)
+++ head/sys/geom/eli/g_eli_ctl.c Tue Apr 10 13:22:48 2018 (r332361)
@@ -59,7 +59,7 @@ g_eli_ctl_attach(struct gctl_req *req, struct g_class
struct g_provider *pp;
const char *name;
u_char *key, mkey[G_ELI_DATAIVKEYLEN];
- int *nargs, *detach, *readonly;
+ int *nargs, *detach, *readonly, *dryrun;
int keysize, error;
u_int nkey;
@@ -87,6 +87,12 @@ g_eli_ctl_attach(struct gctl_req *req, struct g_class
return;
}
+ dryrun = gctl_get_paraml(req, "dryrun", sizeof(*dryrun));
+ if (dryrun == NULL) {
+ gctl_error(req, "No '%s' argument.", "dryrun");
+ return;
+ }
+
if (*detach && *readonly) {
gctl_error(req, "Options -d and -r are mutually exclusive.");
return;
@@ -141,7 +147,8 @@ g_eli_ctl_attach(struct gctl_req *req, struct g_class
md.md_flags |= G_ELI_FLAG_WO_DETACH;
if (*readonly)
md.md_flags |= G_ELI_FLAG_RO;
- g_eli_create(req, mp, pp, &md, mkey, nkey);
+ if (!*dryrun)
+ g_eli_create(req, mp, pp, &md, mkey, nkey);
explicit_bzero(mkey, sizeof(mkey));
explicit_bzero(&md, sizeof(md));
}
More information about the svn-src-head
mailing list