mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-25 22:19:59 +01:00
scd: New standard attributes $ENCRKEYID and $SIGNKEYID.
* g10/call-agent.c (agent_scd_keypairinfo): Use --keypairinfo. * sm/call-agent.c (gpgsm_agent_scd_keypairinfo): Ditto. * scd/app-openpgp.c (do_getattr): Add attributes "$ENCRKEYID" and "$SIGNKEYID". * scd/app-nks.c (do_getattr): Add attributes too. -- We already have $AUTHKEYID to locate the keyref of the key to be used with ssh. It will also be useful to have default keyref for encryption and signing. For example, this will allow us to replace the use of "OPENPGP.2" by a app type specific keyref. Signed-off-by: Werner Koch <wk@gnupg.org> (cherry picked from commit 2b1135cf920cf3d863813d60f032d476dcccfb58) Removed changes for the non-existing app-piv.c. Added support for NKS.
This commit is contained in:
parent
fbed618a36
commit
23784f8bf0
@ -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);
|
||||
|
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user