aboutsummaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorMariusz Zaborski <oshogbo@FreeBSD.org>2018-05-09 20:53:38 +0000
committerMariusz Zaborski <oshogbo@FreeBSD.org>2018-05-09 20:53:38 +0000
commit31f7586d7359058c601154e0026ad983ef22ca98 (patch)
treeafb9114bb805dbd3b702b8c00670b8322c068a83 /sbin
parentc2ac0fc5e065c17a06578c7b1a847678aa1f3f04 (diff)
downloadsrc-31f7586d7359058c601154e0026ad983ef22ca98.tar.gz
src-31f7586d7359058c601154e0026ad983ef22ca98.zip
Introduce the 'n' flag for the geli attach command.
If the 'n' flag is provided the provided key number will be used to decrypt device. This can be used combined with dryrun to verify if the key is set correctly. This can be also used to determine which key slot we want to change on already attached device. Reviewed by: allanjude Differential Revision: https://reviews.freebsd.org/D15309
Notes
Notes: svn path=/head/; revision=333439
Diffstat (limited to 'sbin')
-rw-r--r--sbin/geom/class/eli/geli.84
-rw-r--r--sbin/geom/class/eli/geom_eli.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/sbin/geom/class/eli/geli.8 b/sbin/geom/class/eli/geli.8
index 25565ee58fa5..e4a48cf625f7 100644
--- a/sbin/geom/class/eli/geli.8
+++ b/sbin/geom/class/eli/geli.8
@@ -68,6 +68,7 @@ utility:
.Nm
.Cm attach
.Op Fl Cdprv
+.Op Fl n Ar keyno
.Op Fl j Ar passfile
.Op Fl k Ar keyfile
.Ar prov
@@ -407,6 +408,9 @@ Probably a better choice is the
option for the
.Cm detach
subcommand.
+.It Fl n Ar keyno
+Specifies the index number of the Master Key copy to use (could be 0 or 1).
+If the index number is not provided all keys will be tested.
.It Fl j Ar passfile
Specifies a file which contains the passphrase component of the User Key
(or part of it).
diff --git a/sbin/geom/class/eli/geom_eli.c b/sbin/geom/class/eli/geom_eli.c
index 69693f2d6821..f6ed6a88fb4f 100644
--- a/sbin/geom/class/eli/geom_eli.c
+++ b/sbin/geom/class/eli/geom_eli.c
@@ -86,7 +86,7 @@ static int eli_backup_create(struct gctl_req *req, const char *prov,
*
* init [-bdgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov
* label - alias for 'init'
- * attach [-Cdprv] [-j passfile] [-k keyfile] prov
+ * attach [-Cdprv] [-n keyno] [-j passfile] [-k keyfile] prov
* detach [-fl] prov ...
* stop - alias for 'detach'
* onetime [-d] [-a aalgo] [-e ealgo] [-l keylen] prov
@@ -149,11 +149,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', "keyno", "-1", G_TYPE_NUMBER },
{ 'p', "nopassphrase", NULL, G_TYPE_BOOL },
{ 'r', "readonly", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- "[-Cdprv] [-j passfile] [-k keyfile] prov"
+ "[-Cdprv] [-n keyno] [-j passfile] [-k keyfile] prov"
},
{ "detach", 0, NULL,
{
@@ -1129,7 +1130,7 @@ eli_setkey_detached(struct gctl_req *req, const char *prov,
}
/* Decrypt Master Key. */
- error = g_eli_mkey_decrypt(md, key, mkey, &nkey);
+ error = g_eli_mkey_decrypt_any(md, key, mkey, &nkey);
bzero(key, sizeof(key));
if (error != 0) {
bzero(md, sizeof(*md));