@@ -127,6 +127,8 @@ QHash<quint8,QByteArray> Card::parseFCI(const QByteArray &data)
127127const QByteArray IDEMIACard::AID = APDU(" 00A4040C 10 A000000077010800070000FE00000100" );
128128const QByteArray IDEMIACard::AID_OT = APDU(" 00A4040C 0D E828BD080FF2504F5420415750" );
129129const QByteArray IDEMIACard::AID_QSCD = APDU(" 00A4040C 10 51534344204170706C69636174696F6E" );
130+ const QByteArray IDEMIACard::ATR_COSMO8 = APDU(" 3BDB960080B1FE451F830012233F536549440F9000F1" );
131+ const QByteArray IDEMIACard::ATR_COSMOX = APDU(" 3BDC960080B1FE451F830012233F54654944320F9000C3" );
130132
131133QPCSCReader::Result IDEMIACard::change (QPCSCReader *reader, QSmartCardData::PinType type, const QString &pin_, const QString &newpin_) const
132134{
@@ -153,8 +155,7 @@ QPCSCReader::Result IDEMIACard::change(QPCSCReader *reader, QSmartCardData::PinT
153155
154156bool IDEMIACard::isSupported (const QByteArray &atr)
155157{
156- return atr == " 3BDB960080B1FE451F830012233F536549440F9000F1" ||
157- atr == " 3BDC960080B1FE451F830012233F54654944320F9000C3" ;
158+ return atr == ATR_COSMO8 || atr == ATR_COSMOX;
158159}
159160
160161bool IDEMIACard::loadPerso (QPCSCReader *reader, QSmartCardDataPrivate *d) const
@@ -203,6 +204,8 @@ bool IDEMIACard::loadPerso(QPCSCReader *reader, QSmartCardDataPrivate *d) const
203204 return QSslCertificate ();
204205 QByteArray cert;
205206 QByteArray cmd = READBINARY;
207+ if (reader->atr () == ATR_COSMOX)
208+ cmd[4 ] = 0xC0 ;
206209 for (int size = quint8 (fci[0x80 ][0 ]) << 8 | quint8 (fci[0x80 ][1 ]); cert.size () < size; )
207210 {
208211 cmd[2 ] = char (cert.size () >> 8 );
0 commit comments