@@ -150,42 +150,6 @@ QSigner::~QSigner()
150150
151151QList<TokenData> QSigner::cache () const { return d->cache ; }
152152
153- bool QSigner::cardsOrder (const TokenData &s1, const TokenData &s2)
154- {
155- static auto cardsOrderScore = [](QChar c) -> quint8 {
156- switch (c.toLatin1 ())
157- {
158- case ' N' : return 6 ;
159- case ' A' : return 5 ;
160- case ' P' : return 4 ;
161- case ' E' : return 3 ;
162- case ' F' : return 2 ;
163- case ' B' : return 1 ;
164- default : return 0 ;
165- }
166- };
167- static const QRegularExpression reg (QStringLiteral (" (\\ w{1,2})(\\ d{7})" ));
168- QRegularExpressionMatch r1 = reg.match (s1.card ());
169- QRegularExpressionMatch r2 = reg.match (s2.card ());
170- if (r1.hasMatch () || r2.hasMatch ())
171- return false ;
172- QStringList cap1 = r1.capturedTexts ();
173- QStringList cap2 = r1.capturedTexts ();
174- if (cap1.isEmpty () || cap2.isEmpty ())
175- return false ;
176- // new cards to front
177- if (cap1[1 ].size () != cap2[1 ].size ())
178- return cap1[1 ].size () > cap2[1 ].size ();
179- // card type order
180- if (cap1[1 ][0 ] != cap2[1 ][0 ])
181- return cardsOrderScore (cap1[1 ][0 ]) > cardsOrderScore (cap2[1 ][0 ]);
182- // card version order
183- if (cap1[1 ].size () > 1 && cap2[1 ].size () > 1 && cap1[1 ][1 ] != cap2[1 ][1 ])
184- return cap1[1 ][1 ] > cap2[1 ][1 ];
185- // serial number order
186- return cap1[2 ].toUInt () > cap2[2 ].toUInt ();
187- }
188-
189153X509Cert QSigner::cert () const
190154{
191155 if ( d->sign .cert ().isNull () )
@@ -322,7 +286,6 @@ void QSigner::run()
322286
323287 QList<TokenData> acards, scards;
324288 QList<TokenData> cache = d->backend ->tokens ();
325- std::sort (cache.begin (), cache.end (), cardsOrder);
326289 if (cache != d->cache )
327290 {
328291 d->cache = std::move (cache);
0 commit comments