* engine-gpgsm.c (_gpgme_gpgsm_op_keylist): Implement secret only mode.
* keylist.c (keylist_colon_handler): Add support for the new "crs" record type.
This commit is contained in:
parent
a5329adab7
commit
1c0317ca79
@ -1,3 +1,10 @@
|
|||||||
|
2002-01-29 Werner Koch <wk@gnupg.org>
|
||||||
|
|
||||||
|
* engine-gpgsm.c (_gpgme_gpgsm_op_keylist): Implement secret only mode.
|
||||||
|
|
||||||
|
* keylist.c (keylist_colon_handler): Add support for the new "crs"
|
||||||
|
record type.
|
||||||
|
|
||||||
2002-01-22 Marcus Brinkmann <marcus@g10code.de>
|
2002-01-22 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
* engine-gpgsm.c (_gpgme_gpgsm_release): Call assuan_disconnect,
|
* engine-gpgsm.c (_gpgme_gpgsm_release): Call assuan_disconnect,
|
||||||
|
@ -433,11 +433,19 @@ _gpgme_gpgsm_op_keylist (GpgsmObject gpgsm, const char *pattern,
|
|||||||
if (!pattern)
|
if (!pattern)
|
||||||
pattern = "";
|
pattern = "";
|
||||||
|
|
||||||
line = xtrymalloc (9 + strlen (pattern) + 1); /* "LISTKEYS " + p + '\0'. */
|
line = xtrymalloc (15 + strlen (pattern) + 1); /* "LISTSECRETKEYS "+p+'\0'.*/
|
||||||
if (!line)
|
if (!line)
|
||||||
return mk_error (Out_Of_Core);
|
return mk_error (Out_Of_Core);
|
||||||
strcpy (line, "LISTKEYS ");
|
if (secret_only)
|
||||||
strcpy (&line[9], pattern);
|
{
|
||||||
|
strcpy (line, "LISTSECRETKEYS ");
|
||||||
|
strcpy (&line[15], pattern);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcpy (line, "LISTKEYS ");
|
||||||
|
strcpy (&line[9], pattern);
|
||||||
|
}
|
||||||
|
|
||||||
_gpgme_io_close (gpgsm->input_fd);
|
_gpgme_io_close (gpgsm->input_fd);
|
||||||
_gpgme_io_close (gpgsm->output_fd);
|
_gpgme_io_close (gpgsm->output_fd);
|
||||||
|
@ -146,7 +146,8 @@ keylist_colon_handler ( GpgmeCtx ctx, char *line )
|
|||||||
char *p, *pend;
|
char *p, *pend;
|
||||||
int field = 0;
|
int field = 0;
|
||||||
enum {
|
enum {
|
||||||
RT_NONE, RT_SIG, RT_UID, RT_SUB, RT_PUB, RT_FPR, RT_SSB, RT_SEC, RT_CRT
|
RT_NONE, RT_SIG, RT_UID, RT_SUB, RT_PUB, RT_FPR, RT_SSB, RT_SEC,
|
||||||
|
RT_CRT, RT_CRS
|
||||||
} rectype = RT_NONE;
|
} rectype = RT_NONE;
|
||||||
GpgmeKey key = ctx->tmp_key;
|
GpgmeKey key = ctx->tmp_key;
|
||||||
int i;
|
int i;
|
||||||
@ -223,13 +224,26 @@ keylist_colon_handler ( GpgmeCtx ctx, char *line )
|
|||||||
assert ( !ctx->tmp_key );
|
assert ( !ctx->tmp_key );
|
||||||
ctx->tmp_key = key;
|
ctx->tmp_key = key;
|
||||||
}
|
}
|
||||||
|
else if ( !strcmp (p, "crs") ) {
|
||||||
|
/* start a new certificate */
|
||||||
|
if ( _gpgme_key_new_secret ( &key ) ) {
|
||||||
|
ctx->out_of_core=1; /* the only kind of error we can get*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
key->x509 = 1;
|
||||||
|
rectype = RT_CRS;
|
||||||
|
finish_key ( ctx );
|
||||||
|
assert ( !ctx->tmp_key );
|
||||||
|
ctx->tmp_key = key;
|
||||||
|
}
|
||||||
else if ( !strcmp ( p, "fpr" ) && key )
|
else if ( !strcmp ( p, "fpr" ) && key )
|
||||||
rectype = RT_FPR;
|
rectype = RT_FPR;
|
||||||
else
|
else
|
||||||
rectype = RT_NONE;
|
rectype = RT_NONE;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if ( rectype == RT_PUB || rectype == RT_SEC || rectype == RT_CRT)
|
else if ( rectype == RT_PUB || rectype == RT_SEC
|
||||||
|
|| rectype == RT_CRT || rectype == RT_CRS)
|
||||||
{
|
{
|
||||||
switch (field) {
|
switch (field) {
|
||||||
case 2: /* trust info */
|
case 2: /* trust info */
|
||||||
|
Loading…
Reference in New Issue
Block a user