From bdbeb0ac2bdd3e24f97efb67a3c33e8e08523c46 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 9 Jun 2009 19:11:28 +0000 Subject: app-openpgp changes --- scd/ChangeLog | 6 ++++++ scd/app-openpgp.c | 12 ++++++++---- scd/app.c | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) (limited to 'scd') diff --git a/scd/ChangeLog b/scd/ChangeLog index 7520ff43c..7fc8fe46d 100644 --- a/scd/ChangeLog +++ b/scd/ChangeLog @@ -1,3 +1,9 @@ +2009-06-09 Werner Koch + + * app-openpgp.c (do_readcert): Return NOT_FOUND if the retrieved + data has a length of zero. + (do_getattr): Add EXTCAP subkey "sm". + 2009-05-20 Werner Koch * app-openpgp.c (verify_chv2): Add case for v2 cards. diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index c29e33da5..658459eb8 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -833,13 +833,16 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name) char tmp[100]; snprintf (tmp, sizeof tmp, - "gc=%d ki=%d fc=%d pd=%d mcl3=%u aac=%d", + "gc=%d ki=%d fc=%d pd=%d mcl3=%u aac=%d sm=%d", app->app_local->extcap.get_challenge, app->app_local->extcap.key_import, app->app_local->extcap.change_force_chv, app->app_local->extcap.private_dos, app->app_local->extcap.max_certlen_3, - app->app_local->extcap.algo_attr_change); + app->app_local->extcap.algo_attr_change, + (app->app_local->extcap.sm_supported + ? (app->app_local->extcap.sm_aes128? 7 : 2) + : 0)); send_status_info (ctrl, table[idx].name, tmp, strlen (tmp), NULL, 0); return 0; } @@ -1398,8 +1401,9 @@ do_readcert (app_t app, const char *certid, if (!relptr) return gpg_error (GPG_ERR_NOT_FOUND); - *cert = xtrymalloc (buflen); - if (!*cert) + if (!buflen) + err = gpg_error (GPG_ERR_NOT_FOUND); + else if (!(*cert = xtrymalloc (buflen))) err = gpg_error_from_syserror (); else { diff --git a/scd/app.c b/scd/app.c index eb97d846a..3f8248296 100644 --- a/scd/app.c +++ b/scd/app.c @@ -620,7 +620,7 @@ app_readcert (app_t app, const char *certid, code returned. This function might not be supported by all applications. */ -gpg_error_t +gpg_error_t app_readkey (app_t app, const char *keyid, unsigned char **pk, size_t *pklen) { gpg_error_t err; -- cgit v1.2.3