mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
scd: Simplify the app_readkey parameters.
* scd/app-help.c (app_help_pubkey_from_cert): New. * scd/command.c (cmd_readkey): Refactor to use that new function and handle the --advanced flag only here. * scd/app.c (app_readkey): Remove parm advanced. * scd/app-common.h (struct app_ctx_s): Remove parm advanced from the readkey member. * scd/app-nks.c (do_readkey): Adjust for removed parm. * scd/app-piv.c (do_readkey): Ditto. * scd/app-openpgp.c (do_readkey): Ditto. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
ac485b4f25
commit
c2235d994d
7 changed files with 93 additions and 117 deletions
|
@ -29,9 +29,9 @@
|
|||
#include "../common/tlv.h"
|
||||
|
||||
|
||||
/* Count the number of bits, assuming the A represents an unsigned big
|
||||
integer of length LEN bytes. If A is NULL a length of 0 is
|
||||
returned. */
|
||||
/* Count the number of bits, assuming that A represents an unsigned
|
||||
* big integer of length LEN bytes. If A is NULL a length of 0 is
|
||||
* returned. */
|
||||
unsigned int
|
||||
app_help_count_bits (const unsigned char *a, size_t len)
|
||||
{
|
||||
|
@ -87,6 +87,45 @@ app_help_get_keygrip_string (ksba_cert_t cert, char *hexkeygrip)
|
|||
}
|
||||
|
||||
|
||||
gpg_error_t
|
||||
app_help_pubkey_from_cert (const void *cert, size_t certlen,
|
||||
unsigned char **r_pk, size_t *r_pklen)
|
||||
{
|
||||
gpg_error_t err;
|
||||
ksba_cert_t kc;
|
||||
unsigned char *pk;
|
||||
size_t pklen;
|
||||
|
||||
*r_pk = NULL;
|
||||
*r_pklen = 0;
|
||||
|
||||
err = ksba_cert_new (&kc);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = ksba_cert_init_from_mem (kc, cert, certlen);
|
||||
if (err)
|
||||
goto leave;
|
||||
|
||||
pk = ksba_cert_get_public_key (kc);
|
||||
if (!pk)
|
||||
{
|
||||
err = gpg_error (GPG_ERR_NO_PUBKEY);
|
||||
goto leave;
|
||||
}
|
||||
pklen = gcry_sexp_canon_len (pk, 0, NULL, &err);
|
||||
|
||||
leave:
|
||||
if (!err)
|
||||
{
|
||||
*r_pk = pk;
|
||||
*r_pklen = pklen;
|
||||
}
|
||||
else
|
||||
ksba_free (pk);
|
||||
ksba_cert_release (kc);
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Given the SLOT and the File ID FID, return the length of the
|
||||
certificate contained in that file. Returns 0 if the file does not
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue