aboutsummaryrefslogtreecommitdiffstats
path: root/g10/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/misc.c')
-rw-r--r--g10/misc.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/g10/misc.c b/g10/misc.c
index 6f535c4ff..6a008d5fb 100644
--- a/g10/misc.c
+++ b/g10/misc.c
@@ -455,11 +455,14 @@ pct_expando(const char *string,struct expando_args *args)
{
const char *ch=string;
int idx=0,maxlen=0,done=0;
- u32 keyid[2]={0,0};
+ u32 pk_keyid[2]={0,0},sk_keyid[2]={0,0};
char *ret=NULL;
if(args->pk)
- keyid_from_pk(args->pk,keyid);
+ keyid_from_pk(args->pk,pk_keyid);
+
+ if(args->sk)
+ keyid_from_sk(args->sk,sk_keyid);
while(*ch!='\0')
{
@@ -481,10 +484,29 @@ pct_expando(const char *string,struct expando_args *args)
{
switch(*(ch+1))
{
+ case 's': /* short key id */
+ if(idx+8<maxlen)
+ {
+ sprintf(&ret[idx],"%08lX",(ulong)sk_keyid[1]);
+ idx+=8;
+ done=1;
+ }
+ break;
+
+ case 'S': /* long key id */
+ if(idx+16<maxlen)
+ {
+ sprintf(&ret[idx],"%08lX%08lX",
+ (ulong)sk_keyid[0],(ulong)sk_keyid[1]);
+ idx+=16;
+ done=1;
+ }
+ break;
+
case 'k': /* short key id */
if(idx+8<maxlen)
{
- sprintf(&ret[idx],"%08lX",(ulong)keyid[1]);
+ sprintf(&ret[idx],"%08lX",(ulong)pk_keyid[1]);
idx+=8;
done=1;
}
@@ -494,7 +516,7 @@ pct_expando(const char *string,struct expando_args *args)
if(idx+16<maxlen)
{
sprintf(&ret[idx],"%08lX%08lX",
- (ulong)keyid[0],(ulong)keyid[1]);
+ (ulong)pk_keyid[0],(ulong)pk_keyid[1]);
idx+=16;
done=1;
}