diff options
author | Werner Koch <[email protected]> | 2003-07-24 09:06:43 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2003-07-24 09:06:43 +0000 |
commit | 0fe6a1287fe447afb852dd9b4734c374c90d0740 (patch) | |
tree | 56ea9a8d827fba15394ff5f71b1f310c9d488445 /g10/call-agent.c | |
parent | * keygen.c (generate_keypair): Create an AUTHKEYTYPE entry for cards. (diff) | |
download | gnupg-0fe6a1287fe447afb852dd9b4734c374c90d0740.tar.gz gnupg-0fe6a1287fe447afb852dd9b4734c374c90d0740.zip |
* g10.c: New command --card-status.
* card-util.c (card_status): New.
* call-agent.c (learn_status_cb): Parse more information.
* keylist.c (print_pubkey_info): Add FP arg for optinal printing
to a stream. Changed all callers.
Diffstat (limited to '')
-rw-r--r-- | g10/call-agent.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/g10/call-agent.c b/g10/call-agent.c index 3b40cd0dd..ed4fa9054 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -458,7 +458,9 @@ agent_release_card_info (struct agent_card_info_s *info) xfree (info->serialno); info->serialno = NULL; xfree (info->disp_name); info->disp_name = NULL; + xfree (info->disp_lang); info->disp_lang = NULL; xfree (info->pubkey_url); info->pubkey_url = NULL; + xfree (info->login_data); info->login_data = NULL; info->fpr1valid = info->fpr2valid = info->fpr3valid = 0; } @@ -468,6 +470,7 @@ learn_status_cb (void *opaque, const char *line) struct agent_card_info_s *parm = opaque; const char *keyword = line; int keywordlen; + int i; for (keywordlen=0; *line && !spacep (line); line++, keywordlen++) ; @@ -482,10 +485,59 @@ learn_status_cb (void *opaque, const char *line) { parm->disp_name = unescape_status_string (line); } + else if (keywordlen == 9 && !memcmp (keyword, "DISP-LANG", keywordlen)) + { + parm->disp_lang = unescape_status_string (line); + } + else if (keywordlen == 8 && !memcmp (keyword, "DISP-SEX", keywordlen)) + { + parm->disp_sex = *line == '1'? 1 : *line == '2' ? 2: 0; + } else if (keywordlen == 10 && !memcmp (keyword, "PUBKEY-URL", keywordlen)) { parm->pubkey_url = unescape_status_string (line); } + else if (keywordlen == 10 && !memcmp (keyword, "LOGIN-DATA", keywordlen)) + { + parm->login_data = unescape_status_string (line); + } + else if (keywordlen == 11 && !memcmp (keyword, "SIG-COUNTER", keywordlen)) + { + parm->sig_counter = strtoul (line, NULL, 0); + } + else if (keywordlen == 10 && !memcmp (keyword, "CHV-STATUS", keywordlen)) + { + char *p, *buf; + + buf = p = unescape_status_string (line); + if (buf) + { + while (spacep (p)) + p++; + parm->chv1_cached = atoi (p); + while (!spacep (p)) + p++; + while (spacep (p)) + p++; + for (i=0; *p && i < 3; i++) + { + parm->chvmaxlen[i] = atoi (p); + while (!spacep (p)) + p++; + while (spacep (p)) + p++; + } + for (i=0; *p && i < 3; i++) + { + parm->chvretry[i] = atoi (p); + while (!spacep (p)) + p++; + while (spacep (p)) + p++; + } + xfree (buf); + } + } else if (keywordlen == 7 && !memcmp (keyword, "KEY-FPR", keywordlen)) { int no = atoi (line); |