diff options
author | djm <djm> | 2003-06-28 08:02:47 +0000 |
---|---|---|
committer | djm <djm> | 2003-06-28 08:02:47 +0000 |
commit | 0ac219cf567a8c2776b081f7070560c0ae780e94 (patch) | |
tree | 89ac3ae686f964cb88578d6cb10484c47373fa0b /scard-opensc.c | |
parent | 69bc25d5c31c9915d32ef7547eb39fc257ba98a7 (diff) | |
download | openssh-0ac219cf567a8c2776b081f7070560c0ae780e94.tar.gz |
- (djm) Bug #591: use PKCS#15 private key label as a comment in case
of OpenSC. Report and patch from larsch@trustcenter.de
Diffstat (limited to 'scard-opensc.c')
-rw-r--r-- | scard-opensc.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/scard-opensc.c b/scard-opensc.c index 9766d46c..e8e12dd8 100644 --- a/scard-opensc.c +++ b/scard-opensc.c @@ -474,4 +474,30 @@ sc_put_key(Key *prv, const char *id) return -1; } +char * +sc_get_key_label(Key *key) +{ + int r; + const struct sc_priv_data *priv; + struct sc_pkcs15_object *key_obj; + + priv = (const struct sc_priv_data *) RSA_get_app_data(key->rsa); + if (priv == NULL || p15card == NULL) { + logit("SmartCard key not loaded"); + /* internal error => return default label */ + return xstrdup("smartcard key"); + } + r = sc_pkcs15_find_prkey_by_id(p15card, &priv->cert_id, &key_obj); + if (r) { + logit("Unable to find private key from SmartCard: %s", + sc_strerror(r)); + return xstrdup("smartcard key"); + } + if (key_obj == NULL || key_obj->label == NULL) + /* the optional PKCS#15 label does not exists + * => return the default label */ + return xstrdup("smartcard key"); + return xstrdup(key_obj->label); +} + #endif /* SMARTCARD */ |