@@ -191,11 +191,11 @@ const QByteArray IDEMIACard::AID_QSCD = APDU("00A4040C 10 51534344204170706C6963
191191const QByteArray IDEMIACard::ATR_COSMO8 = QByteArrayLiteral(" 3BDB960080B1FE451F830012233F536549440F9000F1" );
192192const QByteArray IDEMIACard::ATR_COSMOX = QByteArrayLiteral(" 3BDC960080B1FE451F830012233F54654944320F9000C3" );
193193
194- QPCSCReader::Result IDEMIACard::change (QPCSCReader *reader, QSmartCardData::PinType type, const QString &pin_, const QString &newpin_ ) const
194+ QPCSCReader::Result IDEMIACard::change (QPCSCReader *reader, QSmartCardData::PinType type, QByteArray &&pin, QByteArray &&newpin ) const
195195{
196196 QByteArray cmd = CHANGE;
197- QByteArray newpin = pinTemplate (newpin_ );
198- QByteArray pin = pinTemplate (pin_ );
197+ newpin = pinTemplate (std::move (newpin) );
198+ pin = pinTemplate (std::move (pin) );
199199 switch (type) {
200200 case QSmartCardData::Pin1Type:
201201 cmd[3 ] = 1 ;
@@ -291,20 +291,19 @@ bool IDEMIACard::loadPerso(QPCSCReader *reader, QSmartCardDataPrivate *d) const
291291 return updateCounters (reader, d);
292292}
293293
294- QByteArray IDEMIACard::pinTemplate (const QString &pin)
294+ QByteArray IDEMIACard::pinTemplate (QByteArray & &pin)
295295{
296- QByteArray result = pin.toUtf8 ();
297296#if QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)
298- result .resize (12 , char (0xFF ));
297+ pin .resize (12 , char (0xFF ));
299298#else
300- result += QByteArray (12 - result .size (), char (0xFF ));
299+ pin += QByteArray (12 - pin .size (), char (0xFF ));
301300#endif
302- return result ;
301+ return std::move (pin) ;
303302}
304303
305- QPCSCReader::Result IDEMIACard::replace (QPCSCReader *reader, QSmartCardData::PinType type, const QString &puk_, const QString &pin_ ) const
304+ QPCSCReader::Result IDEMIACard::replace (QPCSCReader *reader, QSmartCardData::PinType type, QByteArray &&puk, QByteArray &&pin ) const
306305{
307- QByteArray puk = pinTemplate (puk_ );
306+ puk = pinTemplate (std::move (puk) );
308307 QByteArray cmd = VERIFY;
309308 cmd[3 ] = 2 ;
310309 cmd[4 ] = char (puk.size ());
@@ -321,7 +320,7 @@ QPCSCReader::Result IDEMIACard::replace(QPCSCReader *reader, QSmartCardData::Pin
321320 }
322321 else
323322 cmd[3 ] = char (type);
324- QByteArray pin = pinTemplate (pin_ );
323+ pin = pinTemplate (std::move (pin) );
325324 cmd[4 ] = char (pin.size ());
326325 return transfer (reader, false , cmd + pin, type, 0 , false );
327326}
@@ -352,11 +351,11 @@ bool IDEMIACard::updateCounters(QPCSCReader *reader, QSmartCardDataPrivate *d) c
352351
353352const QByteArray THALESCard::AID = APDU(" 00A4040C 0C A000000063504B43532D3135" );
354353
355- QPCSCReader::Result THALESCard::change (QPCSCReader *reader, QSmartCardData::PinType type, const QString &pin_, const QString &newpin_ ) const
354+ QPCSCReader::Result THALESCard::change (QPCSCReader *reader, QSmartCardData::PinType type, QByteArray &&pin, QByteArray &&newpin ) const
356355{
357356 QByteArray cmd = CHANGE;
358- QByteArray newpin = pinTemplate (newpin_ );
359- QByteArray pin = pinTemplate (pin_ );
357+ newpin = pinTemplate (std::move (newpin) );
358+ pin = pinTemplate (std::move (pin) );
360359 cmd[3 ] = char (0x80 | type);
361360 cmd[4 ] = char (pin.size () + newpin.size ());
362361 return transfer (reader, false , cmd + pin + newpin, type, quint8 (pin.size ()), true );
@@ -453,10 +452,10 @@ QByteArray THALESCard::pinTemplate(const QString &pin)
453452 return result;
454453}
455454
456- QPCSCReader::Result THALESCard::replace (QPCSCReader *reader, QSmartCardData::PinType type, const QString &puk_, const QString &pin_ ) const
455+ QPCSCReader::Result THALESCard::replace (QPCSCReader *reader, QSmartCardData::PinType type, QByteArray &&puk, QByteArray &&pin ) const
457456{
458- QByteArray puk = pinTemplate (puk_ );
459- QByteArray pin = pinTemplate (pin_ );
457+ puk = pinTemplate (std::move (puk) );
458+ pin = pinTemplate (std::move (pin) );
460459 QByteArray cmd = REPLACE;
461460 cmd[3 ] = char (0x80 | type);
462461 cmd[4 ] = char (puk.size () + pin.size ());
@@ -551,9 +550,9 @@ bool QSmartCard::pinChange(QSmartCardData::PinType type, QSmartCard::PinAction a
551550 FadeInNotification::warning (parent, tr (" Changing %1 failed" ).arg (QSmartCardData::typeString (type)));
552551 return false ;
553552 }
554- QPCSCReader::Result response = src == QSmartCardData::PukType ?
555- d->card ->replace (&reader, type, oldPin, newPin) :
556- d->card ->change (&reader, type, oldPin, newPin);
553+ auto response = action == QSmartCard::ChangeWithPin || action == QSmartCard::ActivateWithPin ?
554+ d->card ->change (&reader, type, std::move ( oldPin), std::move ( newPin) ) :
555+ d->card ->replace (&reader, type, std::move ( oldPin), std::move ( newPin) );
557556 switch (response.SW )
558557 {
559558 case 0x9000 :
0 commit comments