aboutsummaryrefslogtreecommitdiffstats
path: root/scd/app-p15.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2021-04-25 12:53:34 +0000
committerWerner Koch <[email protected]>2021-04-25 12:53:34 +0000
commit21e3f750bd7dde2ae9ece01b1abdd1b47ba4fb04 (patch)
tree89e2c18ea0a45a716b0c2ee343e1e0e35e7aed80 /scd/app-p15.c
parentgpg: Replace an obsolete trustdb function. (diff)
downloadgnupg-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]>
Diffstat (limited to 'scd/app-p15.c')
-rw-r--r--scd/app-p15.c10
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))
{