aboutsummaryrefslogtreecommitdiffstats
path: root/scd
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2009-06-09 19:11:28 +0000
committerWerner Koch <[email protected]>2009-06-09 19:11:28 +0000
commitbdbeb0ac2bdd3e24f97efb67a3c33e8e08523c46 (patch)
tree750ebce47c26e8093274084bbe30f1dc070130bb /scd
parentTypo fix. Updated German translation. (diff)
downloadgnupg-bdbeb0ac2bdd3e24f97efb67a3c33e8e08523c46.tar.gz
gnupg-bdbeb0ac2bdd3e24f97efb67a3c33e8e08523c46.zip
app-openpgp changes
Diffstat (limited to '')
-rw-r--r--scd/ChangeLog6
-rw-r--r--scd/app-openpgp.c12
-rw-r--r--scd/app.c2
3 files changed, 15 insertions, 5 deletions
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 <[email protected]>
+
+ * 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 <[email protected]>
* 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;