Skip to content

Commit b2f69ec

Browse files
committed
Fix reading certificate with some readers
IB-8468 Signed-off-by: Raul Metsma <raul@metsma.ee>
1 parent dce63fe commit b2f69ec

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

client/QSmartCard.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ QHash<quint8,QByteArray> Card::parseFCI(const QByteArray &data)
127127
const QByteArray IDEMIACard::AID = APDU("00A4040C 10 A000000077010800070000FE00000100");
128128
const QByteArray IDEMIACard::AID_OT = APDU("00A4040C 0D E828BD080FF2504F5420415750");
129129
const 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

131133
QPCSCReader::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

154156
bool IDEMIACard::isSupported(const QByteArray &atr)
155157
{
156-
return atr == "3BDB960080B1FE451F830012233F536549440F9000F1" ||
157-
atr == "3BDC960080B1FE451F830012233F54654944320F9000C3";
158+
return atr == ATR_COSMO8 || atr == ATR_COSMOX;
158159
}
159160

160161
bool 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);

client/QSmartCard_p.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class IDEMIACard: public Card
6161
static bool isSupported(const QByteArray &atr);
6262
static QByteArray pinTemplate(const QString &pin);
6363

64-
static const QByteArray AID, AID_OT, AID_QSCD;
64+
static const QByteArray AID, AID_OT, AID_QSCD, ATR_COSMO8, ATR_COSMOX;
6565
};
6666

6767
class QSmartCard::Private

0 commit comments

Comments
 (0)