aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keyid.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/keyid.c67
1 files changed, 55 insertions, 12 deletions
diff --git a/g10/keyid.c b/g10/keyid.c
index 8f2d8f7fd..a6e8b3728 100644
--- a/g10/keyid.c
+++ b/g10/keyid.c
@@ -35,6 +35,9 @@
#include "i18n.h"
#include "rmd160.h"
+#define KEYID_STR_SIZE 19
+
+
int
pubkey_letter( int algo )
{
@@ -204,35 +207,38 @@ keystrlen(void)
}
}
+
const char *
-keystr(u32 *keyid)
+keystr (u32 *keyid)
{
- static char keyid_str[19];
+ static char keyid_str[KEYID_STR_SIZE];
- switch(opt.keyid_format)
+ switch (opt.keyid_format)
{
case KF_SHORT:
- sprintf(keyid_str,"%08lX",(ulong)keyid[1]);
+ snprintf (keyid_str, sizeof keyid_str, "%08lX", (ulong)keyid[1]);
break;
case KF_LONG:
- if(keyid[0])
- sprintf(keyid_str,"%08lX%08lX",(ulong)keyid[0],(ulong)keyid[1]);
+ if (keyid[0])
+ snprintf (keyid_str, sizeof keyid_str, "%08lX%08lX",
+ (ulong)keyid[0], (ulong)keyid[1]);
else
- sprintf(keyid_str,"%08lX",(ulong)keyid[1]);
+ snprintf (keyid_str, sizeof keyid_str, "%08lX", (ulong)keyid[1]);
break;
case KF_0xSHORT:
- sprintf(keyid_str,"0x%08lX",(ulong)keyid[1]);
+ snprintf (keyid_str, sizeof keyid_str, "0x%08lX", (ulong)keyid[1]);
break;
case KF_0xLONG:
if(keyid[0])
- sprintf(keyid_str,"0x%08lX%08lX",(ulong)keyid[0],(ulong)keyid[1]);
+ snprintf (keyid_str, sizeof keyid_str, "0x%08lX%08lX",
+ (ulong)keyid[0],(ulong)keyid[1]);
else
- sprintf(keyid_str,"0x%08lX",(ulong)keyid[1]);
+ snprintf (keyid_str, sizeof keyid_str, "0x%08lX", (ulong)keyid[1]);
break;
-
+
default:
BUG();
}
@@ -240,6 +246,21 @@ keystr(u32 *keyid)
return keyid_str;
}
+
+const char *
+keystr_with_sub (u32 *main_kid, u32 *sub_kid)
+{
+ static char buffer[KEYID_STR_SIZE+1+KEYID_STR_SIZE];
+ char *p;
+
+ mem2str (buffer, keystr (main_kid), KEYID_STR_SIZE);
+ p = buffer + strlen (buffer);
+ *p++ = '/';
+ mem2str (p, keystr (sub_kid), KEYID_STR_SIZE);
+ return buffer;
+}
+
+
const char *
keystr_from_pk(PKT_public_key *pk)
{
@@ -248,14 +269,36 @@ keystr_from_pk(PKT_public_key *pk)
return keystr(pk->keyid);
}
+
+const char *
+keystr_from_pk_with_sub (PKT_public_key *main_pk, PKT_public_key *sub_pk)
+{
+ keyid_from_pk (main_pk, NULL);
+ keyid_from_pk (sub_pk, NULL);
+
+ return keystr_with_sub (main_pk->keyid, sub_pk->keyid);
+}
+
+
const char *
keystr_from_sk(PKT_secret_key *sk)
{
- keyid_from_sk(sk,NULL);
+ keyid_from_sk (sk,NULL);
return keystr(sk->keyid);
}
+
+const char *
+keystr_from_sk_with_sub (PKT_secret_key *main_sk, PKT_secret_key *sub_sk)
+{
+ keyid_from_sk (main_sk, NULL);
+ keyid_from_sk (sub_sk, NULL);
+
+ return keystr_with_sub (main_sk->keyid, sub_sk->keyid);
+}
+
+
const char *
keystr_from_desc(KEYDB_SEARCH_DESC *desc)
{