diff --git a/g10/call-agent.c b/g10/call-agent.c index c85c659ab..c8d3471d1 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -819,7 +819,7 @@ agent_scd_keypairinfo (ctrl_t ctrl, strlist_t *r_list) memset (&inq_parm, 0, sizeof inq_parm); inq_parm.ctx = agent_ctx; - err = assuan_transact (agent_ctx, "SCD LEARN --force", + err = assuan_transact (agent_ctx, "SCD LEARN --keypairinfo", NULL, NULL, default_inq_cb, &inq_parm, scd_keypairinfo_status_cb, &list); diff --git a/scd/app-nks.c b/scd/app-nks.c index 0f38e7cd0..6fe367433 100644 --- a/scd/app-nks.c +++ b/scd/app-nks.c @@ -308,8 +308,10 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name) int special; } table[] = { { "$AUTHKEYID", 1 }, - { "NKS-VERSION", 2 }, - { "CHV-STATUS", 3 }, + { "$ENCRKEYID", 2 }, + { "$SIGNKEYID", 3 }, + { "NKS-VERSION", 4 }, + { "CHV-STATUS", 5 }, { NULL, 0 } }; gpg_error_t err = 0; @@ -339,13 +341,27 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name) } break; - case 2: /* NKS-VERSION */ + case 2: /* $ENCRKEYID */ + { + char const tmp[] = "NKS-NKS3.45B1"; + send_status_info (ctrl, table[idx].name, tmp, strlen (tmp), NULL, 0); + } + break; + + case 3: /* $SIGNKEYID */ + { + char const tmp[] = "NKS-NKS3.4531"; + send_status_info (ctrl, table[idx].name, tmp, strlen (tmp), NULL, 0); + } + break; + + case 4: /* NKS-VERSION */ snprintf (buffer, sizeof buffer, "%d", app->app_local->nks_version); send_status_info (ctrl, table[idx].name, buffer, strlen (buffer), NULL, 0); break; - case 3: /* CHV-STATUS */ + case 5: /* CHV-STATUS */ { /* Returns: PW1.CH PW2.CH PW1.CH.SIG PW2.CH.SIG That are the two global passwords followed by the two SigG passwords. diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index 144aa3d46..48790605f 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -984,6 +984,8 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name) { "PRIVATE-DO-3", 0x0103 }, { "PRIVATE-DO-4", 0x0104 }, { "$AUTHKEYID", 0x0000, -3 }, + { "$ENCRKEYID", 0x0000, -6 }, + { "$SIGNKEYID", 0x0000, -7 }, { "$DISPSERIALNO",0x0000, -4 }, { "KDF", 0x00F9 }, { NULL, 0 } @@ -1065,6 +1067,18 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name) send_key_attr (ctrl, app, table[idx].name, i); return 0; } + if (table[idx].special == -6) + { + char const tmp[] = "OPENPGP.2"; + send_status_info (ctrl, table[idx].name, tmp, strlen (tmp), NULL, 0); + return 0; + } + if (table[idx].special == -7) + { + char const tmp[] = "OPENPGP.1"; + send_status_info (ctrl, table[idx].name, tmp, strlen (tmp), NULL, 0); + return 0; + } relptr = get_one_do (app, table[idx].tag, &value, &valuelen, &rc); if (relptr) diff --git a/sm/call-agent.c b/sm/call-agent.c index d38dbecaa..d93f1e332 100644 --- a/sm/call-agent.c +++ b/sm/call-agent.c @@ -796,7 +796,7 @@ gpgsm_agent_scd_keypairinfo (ctrl_t ctrl, strlist_t *r_list) inq_parm.ctrl = ctrl; inq_parm.ctx = agent_ctx; - rc = assuan_transact (agent_ctx, "SCD LEARN --force", + rc = assuan_transact (agent_ctx, "SCD LEARN --keypairinfo", NULL, NULL, default_inq_cb, &inq_parm, scd_keypairinfo_status_cb, &list);