2002-07-25 Marcus Brinkmann <marcus@g10code.de>
* engine-gpgsm.c (_gpgme_gpgsm_op_delete): Implement this.
This commit is contained in:
parent
4508ffbfb5
commit
1ffa0534ea
@ -1,3 +1,7 @@
|
|||||||
|
2002-07-25 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* engine-gpgsm.c (_gpgme_gpgsm_op_delete): Implement this.
|
||||||
|
|
||||||
2002-07-25 Marcus Brinkmann <marcus@g10code.de>
|
2002-07-25 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
* Makefile.am (libgpgme_la_LDADD): Add @LIBOBJS@ for vasprintf and
|
* Makefile.am (libgpgme_la_LDADD): Add @LIBOBJS@ for vasprintf and
|
||||||
|
@ -669,8 +669,63 @@ _gpgme_gpgsm_op_decrypt (GpgsmObject gpgsm, GpgmeData ciph, GpgmeData plain)
|
|||||||
GpgmeError
|
GpgmeError
|
||||||
_gpgme_gpgsm_op_delete (GpgsmObject gpgsm, GpgmeKey key, int allow_secret)
|
_gpgme_gpgsm_op_delete (GpgsmObject gpgsm, GpgmeKey key, int allow_secret)
|
||||||
{
|
{
|
||||||
/* FIXME */
|
char *fpr = (char *) gpgme_key_get_string_attr (key, GPGME_ATTR_FPR, NULL, 0);
|
||||||
return mk_error (Not_Implemented);
|
char *linep = fpr;
|
||||||
|
char *line;
|
||||||
|
int length = 8; /* "DELKEYS " */
|
||||||
|
|
||||||
|
if (!fpr)
|
||||||
|
return mk_error (Invalid_Key);
|
||||||
|
|
||||||
|
while (*linep)
|
||||||
|
{
|
||||||
|
length++;
|
||||||
|
if (*linep == '%' || *linep == ' ' || *linep == '+')
|
||||||
|
length += 2;
|
||||||
|
linep++;
|
||||||
|
}
|
||||||
|
length++;
|
||||||
|
|
||||||
|
line = xtrymalloc (length);
|
||||||
|
if (!line)
|
||||||
|
return mk_error (Out_Of_Core);
|
||||||
|
|
||||||
|
strcpy (line, "DELKEYS ");
|
||||||
|
linep = &line[8];
|
||||||
|
|
||||||
|
while (*fpr)
|
||||||
|
{
|
||||||
|
switch (*fpr)
|
||||||
|
{
|
||||||
|
case '%':
|
||||||
|
*(linep++) = '%';
|
||||||
|
*(linep++) = '2';
|
||||||
|
*(linep++) = '5';
|
||||||
|
break;
|
||||||
|
case ' ':
|
||||||
|
*(linep++) = '%';
|
||||||
|
*(linep++) = '2';
|
||||||
|
*(linep++) = '0';
|
||||||
|
break;
|
||||||
|
case '+':
|
||||||
|
*(linep++) = '%';
|
||||||
|
*(linep++) = '2';
|
||||||
|
*(linep++) = 'B';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
*(linep++) = *fpr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
fpr++;
|
||||||
|
}
|
||||||
|
*linep = '\0';
|
||||||
|
|
||||||
|
gpgsm->command = line;
|
||||||
|
_gpgme_io_close (gpgsm->output_cb.fd);
|
||||||
|
_gpgme_io_close (gpgsm->input_cb.fd);
|
||||||
|
_gpgme_io_close (gpgsm->message_cb.fd);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user