X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/f387fcb17a980fe165218d217b0187a8c279508a..e9be047b35e12f353e313f60677d80f1e86c73af:/keyutil.c diff --git a/keyutil.c b/keyutil.c index 1d4bbca..9881dc7 100644 --- a/keyutil.c +++ b/keyutil.c @@ -1609,6 +1609,29 @@ static int cmd_setattr(int argc, char *argv[]) return (0); } +/* --- @cmd_getattr@ --- */ + +static int cmd_getattr(int argc, char *argv[]) +{ + key_file f; + key *k; + dstr d = DSTR_INIT; + const char *p; + + if (argc != 3) + die(EXIT_FAILURE, "Usage: getattr TAG ATTR"); + doopen(&f, KOPEN_READ); + if ((k = key_bytag(&f, argv[1])) == 0) + die(EXIT_FAILURE, "key `%s' not found", argv[1]); + key_fulltag(k, &d); + if ((p = key_getattr(&f, k, argv[2])) == 0) + die(EXIT_FAILURE, "no attribute `%s' for key `%s'", argv[2], d.buf); + puts(p); + dstr_destroy(&d); + doclose(&f); + return (0); +} + /* --- @cmd_finger@ --- */ static void fingerprint(key *k, const gchash *ch, const key_filter *kf) @@ -1784,6 +1807,7 @@ static int cmd_verify(int argc, char *argv[]) fpr = GH_DONE(h, 0); if (memcmp(fpr, buf, ch->hashsz) != 0) die(EXIT_FAILURE, "key fingerprint mismatch"); + doclose(&f); return (0); } @@ -2057,6 +2081,7 @@ Options:\n\ { "expire", cmd_expire, "expire TAG..." }, { "delete", cmd_delete, "delete TAG..." }, { "setattr", cmd_setattr, "setattr TAG ATTR..." }, + { "getattr", cmd_getattr, "getattr TAG ATTR" }, { "comment", cmd_comment, "comment TAG [COMMENT]" }, { "lock", cmd_lock, "lock QTAG" }, { "unlock", cmd_unlock, "unlock QTAG" },