Package: opensc
Version: 0.23.0-0.2
Severity: normal
X-Debbugs-Cc: davide.pr...@null.net

Dear Maintainer,

with the new opensc version found in Debian testing/sid I was unable to use the 
new Italian CNS.
I think that the wrong type card is selected (it is selected the CNS Generic 
one with type:23002), but I'm unable to force the use of the correct one.

First I list all the differences I have found.
Then I will show what I have done to let the new Italian CNS work correctly in 
a .deb I have created months ago.

I show rows starting with OK for the working opensc and with KO for the not 
working opensc

KO Manufacturer ID: IC: Infineon; mask: Oberthur Card Systems
OK Manufacturer ID: IC: Infineon; mask: IDEMIA (Oberthur)

KO Key length: 1024
OK Key length: 2048

KO  token flags        : token initialized
OK  token flags        : login required, token initialized, PIN initialized, 
user PIN locked

KO  firmware version   : 0.0
OK  firmware version   : 32.0

KO  pin min/max        : 4/8
OK  pin min/max        : 5/8

KO [pkcs15-tool] card.c:sc_connect_card: card info name:'CNS card', type:23002, 
flags:0x0, max_send/recv_size:255/256
OK [pkcs15-tool] card.c:sc_connect_card: card info name:'CNS card', type:23003, 
flags:0x0, max_send/recv_size:65535/65536

I think that the problem is the type, the 23003 work and the 23002 do not work.

I have try to foce the use of type:23003 in /etc/opensc/opensc.conf but I was 
unable to have it.
I have made some configuration, but no one work to force the type, I can
only force the card name to not check all possible cards.

I show here the log in witch the type is selected

KO) in this one it select the wrong type
[pkcs15-tool] apdu.c:sc_single_transmit: returning with: 0 (Success)
[pkcs15-tool] apdu.c:sc_transmit: returning with: 0 (Success)
[pkcs15-tool] card.c:sc_unlock: called
[pkcs15-tool] reader-pcsc.c:pcsc_unlock: called
[pkcs15-tool] iso7816.c:iso7816_check_sw: File or application not found
[pkcs15-tool] card-cac.c:cac_select_file_by_type: returning with: -1201 (File 
not found)
[pkcs15-tool] card.c:sc_connect_card: trying driver 'itacns'
[pkcs15-tool] card.c:match_atr_table: ATR     : 
3b:ff:18:00:00:81:31:fe:45:00:6b:05:05:20:00:01:21:01:43:4e:53:10:31:80:79
[pkcs15-tool] card.c:match_atr_table: ATR try : 
3b:f4:18:00:ff:81:31:80:55:00:31:80:00:c7
[pkcs15-tool] card.c:match_atr_table: ignored - wrong length
[pkcs15-tool] card-itacns.c:itacns_match_card: Matching 3b against atr[0] == 3b
[pkcs15-tool] card-itacns.c:itacns_match_card: Matching 31 against atr[6] == 31
[pkcs15-tool] card-itacns.c:itacns_match_card: Matching 0 against atr[9] == 0
[pkcs15-tool] card-itacns.c:itacns_match_card: Matching 6b against atr[10] == 6b
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 1 against atr[15] 
== 1
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 43 against atr[18] 
== 43
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 4e against atr[19] 
== 4e
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 53 against atr[20] 
== 53
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 31 against atr[22] 
== 31
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 80 against atr[23] 
== 80
[pkcs15-tool] card.c:sc_connect_card: matched: Italian CNS
[pkcs15-tool] card-itacns.c:itacns_init: called
[pkcs15-tool] card.c:match_atr_table: ATR     : 
3b:ff:18:00:00:81:31:fe:45:00:6b:05:05:20:00:01:21:01:43:4e:53:10:31:80:79
[pkcs15-tool] card.c:match_atr_table: ATR try : 
3b:f4:18:00:ff:81:31:80:55:00:31:80:00:c7
[pkcs15-tool] card.c:match_atr_table: ignored - wrong length
[pkcs15-tool] card-itacns.c:itacns_match_card: Matching 3b against atr[0] == 3b
[pkcs15-tool] card-itacns.c:itacns_match_card: Matching 31 against atr[6] == 31
[pkcs15-tool] card-itacns.c:itacns_match_card: Matching 0 against atr[9] == 0
[pkcs15-tool] card-itacns.c:itacns_match_card: Matching 6b against atr[10] == 6b
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 1 against atr[15] 
== 1
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 43 against atr[18] 
== 43
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 4e against atr[19] 
== 4e
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 53 against atr[20] 
== 53
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 31 against atr[22] 
== 31
[pkcs15-tool] card-itacns.c:itacns_match_cns_card: Matching 80 against atr[23] 
== 80
[pkcs15-tool] card.c:sc_connect_card: card info name:'CNS card', type:23002, 
flags:0x0, max_send/recv_size:255/256

OK) in this one it select the working type
[pkcs15-tool] apdu.c:sc_single_transmit: returning with: 0 (Success)
[pkcs15-tool] apdu.c:sc_transmit: returning with: 0 (Success)
[pkcs15-tool] card.c:sc_unlock: called
[pkcs15-tool] reader-pcsc.c:pcsc_unlock: called
[pkcs15-tool] iso7816.c:iso7816_check_sw: File or application not found
[pkcs15-tool] card-cac.c:cac_select_file_by_type: returning with: -1201 (File 
not found)
[pkcs15-tool] card.c:sc_connect_card: trying driver 'itacns'
[pkcs15-tool] card.c:match_atr_table: ATR     : 
3b:ff:18:00:00:81:31:fe:45:00:6b:05:05:20:00:01:21:01:43:4e:53:10:31:80:79
[pkcs15-tool] card.c:match_atr_table: ATR try : 
3b:f4:18:00:ff:81:31:80:55:00:31:80:00:c7
[pkcs15-tool] card.c:match_atr_table: ignored - wrong length
[pkcs15-tool] card.c:match_atr_table: ATR try : 
3b:8b:80:01:00:31:c1:64:00:00:00:00:00:00:00:00
[pkcs15-tool] card.c:match_atr_table: ignored - wrong length
[pkcs15-tool] card.c:sc_connect_card: matched: Italian CNS
[pkcs15-tool] card-itacns.c:itacns_init: called
[pkcs15-tool] card.c:sc_connect_card: card info name:'CNS card', type:23003, 
flags:0x0, max_send/recv_size:65535/65536


Now I describe what I have done to use correctly the new Italian CNS.
I have done that probably the 21 March 2022 in what was the Debian testing at 
that date.
to have the opensc_0.22.0-2_amd64 working with new Italian CNS

# apt build-dep opensc
$ mkdir ~/src
$ cd /src
$ apt source opensc
$ git clone https://github.com/3v1n0/OpenSC.git
$ cd OpenSC
$ cp -R ../opensc-0.22.0/debian .
$ fakeroot debian/rules binary

If I do the same actually I obtain a .deb file don't working with new Italian 
CNS.
So I think that you need to build the .deb package using all package that was 
available at 21 March 2022 to obtain the working packages.

I noted also that in the working deb I will get, wrongly, that the PIN try left 
is zero, but this is not a problem because all work correctly.

If someone need the .deb I have compiled at 21 March 2022 I can send to him 
(write directly to me).

I have also try on more PC and have all the same results. I have
noted that with some PC (I think newer one) old card lectors don't work,
I need to use a new one more recent.

I also have try to do some debug with gdb, but the debug symbol of
the compiled driver do not work...

Let me know if you need more info.

Ciao
Davide

-- System Information:
Debian Release: 12.0
  APT prefers testing-security
  APT policy: (500, 'testing-security'), (500, 'testing-debug'), (500, 
'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-7-amd64 (SMP w/4 CPU threads; PREEMPT)
Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages opensc depends on:
ii  libc6          2.36-8
ii  libreadline8   8.2-1.3
ii  libssl3        3.0.8-1
ii  opensc-pkcs11  0.23.0-0.2
ii  zlib1g         1:1.2.13.dfsg-1

Versions of packages opensc recommends:
ii  pcscd  1.9.9-1

opensc suggests no packages.

-- Configuration Files:
/etc/opensc/opensc.conf changed:
app default {
        # debug = 3;
        # debug_file = opensc-debug.txt;
card_atr 3b:8b:80:01:00:31:c1:64:00:00:00:00:00:00:00:00 {
                driver = itacns;
                type = 23003;
                
                }
        framework pkcs15 {
                # use_file_caching = public;
        }
}


-- no debconf information

Reply via email to