diff options
author | Werner Koch <[email protected]> | 2021-04-25 12:53:34 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2021-04-25 12:53:34 +0000 |
commit | 21e3f750bd7dde2ae9ece01b1abdd1b47ba4fb04 (patch) | |
tree | 89e2c18ea0a45a716b0c2ee343e1e0e35e7aed80 | |
parent | gpg: Replace an obsolete trustdb function. (diff) | |
download | gnupg-21e3f750bd7dde2ae9ece01b1abdd1b47ba4fb04.tar.gz gnupg-21e3f750bd7dde2ae9ece01b1abdd1b47ba4fb04.zip |
scd:p15: Shorten the displayed s/n of RSCS cards
* scd/app-p15.c (get_dispserialno): Add dedicated handling for RSCS.
--
In fact we fix the display of the s/n because the s/n was taken from a
certificate.
Signed-off-by: Werner Koch <[email protected]>
-rw-r--r-- | scd/app-p15.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/scd/app-p15.c b/scd/app-p15.c index 0782c25e8..57c37e09f 100644 --- a/scd/app-p15.c +++ b/scd/app-p15.c @@ -4895,11 +4895,19 @@ static char * get_dispserialno (app_t app, prkdf_object_t prkdf) { char *serial; + size_t n; /* We prefer the SerialNumber RDN from the Subject-DN but we don't * use it if it features a percent sign (special character in pin * prompts) or has any control character. */ - if (prkdf && prkdf->serial_number && *prkdf->serial_number + if (app->app_local->card_product == CARD_PRODUCT_RSCS) + { + /* We use only the rigght 8 hex digits. */ + serial = app_get_serialno (app); + if (serial && (n=strlen (serial)) > 8) + memmove (serial, serial + n - 8, 9); + } + else if (prkdf && prkdf->serial_number && *prkdf->serial_number && !strchr (prkdf->serial_number, '%') && !any_control_or_space (prkdf->serial_number)) { |