[Linuxtrent] Re: CNS su linux

  • From: Roberto Resoli <roberto.resoli@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 1 Aug 2012 09:56:23 +0200

Il 31 luglio 2012 15:08, Michele Pedrolli <michele.pedrolli@xxxxxxxxx>
ha scritto:
> 2012/7/31 Roberto Resoli <roberto.resoli@xxxxxxxxx>:
>
>> Azzardo: forse in realtà i lettori sono effettivamente diversi, ma
>> "vestiti" allo stesso modo.
>
> Io non credo che i lettori siano diversi. Credo piuttosto che
> l'installazione di libacr38u abbia riavviato in qualche caso il pcscd
> forzando la rilettura del driver corretto (cioè sempre il libccid).
>
> Come indicato in [1] il lettore
> ACS ACR 38U-CCID (072f:90cc) deve utilizzare libccid, mentre il lettore
> ACS ACR38U (072F:9000) deve utilizzare libacr38u
>
> Da un rapido lsusb risulta che il mio Smarty sia un 072f:90cc. Provate
> con i vostri.

Il mio non è uno smarty, ma pare identico al tuo:

ID 072f:90cc Advanced Card Systems, Ltd ACR38 SmartCard Reader

Io ho installati (su Ubuntu 12.04 amd64) sia libacr38 che libccid;

Nota generale: Ogni driver di smartcard installa in /usr/lib/pcsc/drivers/
una propria directory di configurazione, con estensione ".bundle";

libacr38u  -> ACR38UDriver.bundle
libccid -> ifd-ccid.bundle

Nella directory .bundle sono contenute metainformazioni (file
Contents/Info.plist) sull'hardware supportato
(con relative stringe descrittive riportate da pcsc) e anche il driver
vero e proprio (libreria in file Contents/Linux).

Ho quindi provato a rimuovere il driver libacr38 come segue:

1) Rimozione del pacchetto compresi i file di configurazione:

sudo aptitude purge libacr38u

2) Uccisione delle istanze correnti (eventuali) di pcscd:

killall pcscd

3) Riconfigurazione di libccid

sudo dpkg-reconfigure libccid

4) Rimozione e reinserimento del lettore dalla porta usb.

A questo punto pcsc ritorna:

opensc-tool --list-readers

$ opensc-tool --list-readers
# Detected readers (pcsc)
Nr.  Card  Features  Name
0    No              ACS ACR 38U-CCID 00 00

Confermando che il lettore è gestito dal driver ccid.

Purtroppo ho dimenticato di far girare il comando *prima* della
rimozione di libacr38u, per vedere se la stringa identificativa fosse
diversa.

Sospetto però che il driver attivo fosse sempre libccid, che tra
l'altro è una dipendenza di pcscd:

$ apt-cache rdepends libccid
libccid
Reverse Depends:
  libccid:i386
  libusb-0.1-4:i386
 |pcscd
  libusb-0.1-4

Quindi non c'è nemmeno modo di rimuoverlo senza rimuovere anche pcscd.
Giusto per avere un altro riscontro, ho rimosso manualmente il bundle
di libccid, e reinstallato libacr38u, ripetendo la procedura vista
sopra, questa volta per libacr38u. Non sono riuscito in alcun modo ad
attivare il driver.

===
Nota finale: le nuove verioni di pcscd non funzionano come demoni, ma
vengono attivate solo su richiesta (un po'come i demoni di rete
attivati da tcpwrapper):

http://ludovicrousseau.blogspot.it/2010/09/pcscd-auto-start.html

In ogni caso questa funzione si può disabilitare, e si attiva solo se
non c'è già un processo pcscd in funzione per quel lettore: è
possibile quindi tracciare il funzionamento di pcsc con il consueto:

sudo pcscd -a -f -d

rob

rob
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: