aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Kahn Gillmor <[email protected]>2018-06-12 04:41:59 +0000
committerWerner Koch <[email protected]>2018-06-12 06:19:19 +0000
commit2ddfb5bef920919443309ece9fa2930282bbce85 (patch)
tree37566c24d63909a8032718a8dd918713e5912ea3
parentdoc: Include release info from 2.2.8 (diff)
downloadgnupg-2ddfb5bef920919443309ece9fa2930282bbce85.tar.gz
gnupg-2ddfb5bef920919443309ece9fa2930282bbce85.zip
gpg: Add new usage option for drop-subkey filters.
* g10/import.c (impex_filter_getval): Add new "usage" property for drop-subkey filter. -- For example, this permits extraction of only encryption-capable subkeys like so: gpg --export-filter 'drop-subkey=usage !~ e' --export $FPR GnuPG-Bug-id: 4019 Signed-off-by: Daniel Kahn Gillmor <[email protected]>
-rw-r--r--doc/gpg.texi5
-rw-r--r--g10/import.c10
2 files changed, 15 insertions, 0 deletions
diff --git a/doc/gpg.texi b/doc/gpg.texi
index 5f114c519..4cfd00079 100644
--- a/doc/gpg.texi
+++ b/doc/gpg.texi
@@ -2428,6 +2428,11 @@ The available properties are:
Boolean indicating whether a key or subkey is a secret one.
(drop-subkey)
+ @item usage
+ A string indicating the usage flags for the subkey, from the
+ sequence ``ecsa?''. For example, a subkey capable of just signing
+ and authentication would be an exact match for ``sa''. (drop-subkey)
+
@item sig_created
@itemx sig_created_d
The first is the timestamp a signature packet was created. The
diff --git a/g10/import.c b/g10/import.c
index 1a98e2aa1..28039977b 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -1314,6 +1314,16 @@ impex_filter_getval (void *cookie, const char *propname)
{
result = pk_is_disabled (pk)? "1":"0";
}
+ else if (!strcmp (propname, "usage"))
+ {
+ snprintf (numbuf, sizeof numbuf, "%s%s%s%s%s",
+ (pk->pubkey_usage & PUBKEY_USAGE_ENC)?"e":"",
+ (pk->pubkey_usage & PUBKEY_USAGE_SIG)?"s":"",
+ (pk->pubkey_usage & PUBKEY_USAGE_CERT)?"c":"",
+ (pk->pubkey_usage & PUBKEY_USAGE_AUTH)?"a":"",
+ (pk->pubkey_usage & PUBKEY_USAGE_UNKNOWN)?"?":"");
+ result = numbuf;
+ }
else
result = NULL;
}