Skip to content

Commit 3960da1

Browse files
committedOct 6, 2015
Qt5 compatibility patch for QSsl
> QSslCertificate::subjectInfo() and QSslCertificate::issuerInfo() return a > QStringList instead of a QString in Qt5. It's pretty common for a certificate > to contain more than entry of a specific type, but in Qt 4 the API only let > you access the first one. [Source](https://blogs.kde.org/2012/04/14/whats-new-qt-5-ssl) This fix adds macros to apply the Qt4 behavior on Qt5 code. Obviously it would be better the other way round.
1 parent ca697db commit 3960da1

File tree

6 files changed

+59
-47
lines changed

6 files changed

+59
-47
lines changed
 

‎src/auth/identcert/qgsauthidentcertedit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ void QgsAuthIdentCertEdit::populateIdentityComboBox()
8686
QgsStringMap idents;
8787
Q_FOREACH ( const QSslCertificate& cert, certs )
8888
{
89-
QString org( cert.subjectInfo( QSslCertificate::Organization ) );
89+
QString org( SSL_SUBJECT_INFO( cert, QSslCertificate::Organization ) );
9090
if ( org.isEmpty() )
9191
org = tr( "Organization not defined" );
9292
idents.insert( QString( "%1 (%2)" ).arg( QgsAuthCertUtils::resolvedCertName( cert ) ).arg( org ),

‎src/core/auth/qgsauthcertutils.cpp

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
#include "qgsauthmanager.h"
2525
#include "qgslogger.h"
2626

27-
2827
QString QgsAuthCertUtils::getSslProtocolName( QSsl::SslProtocol protocol )
2928
{
3029
switch ( protocol )
@@ -61,7 +60,7 @@ QMap<QString, QList<QSslCertificate> > QgsAuthCertUtils::certsGroupedByOrg( QLis
6160
QMap< QString, QList<QSslCertificate> > orgcerts;
6261
Q_FOREACH ( const QSslCertificate& cert, certs )
6362
{
64-
QString org( cert.subjectInfo( QSslCertificate::Organization ) );
63+
QString org( SSL_SUBJECT_INFO( cert, QSslCertificate::Organization ) );
6564
if ( org.isEmpty() )
6665
org = "(Organization not defined)";
6766
QList<QSslCertificate> valist = orgcerts.contains( org ) ? orgcerts.value( org ) : QList<QSslCertificate>();
@@ -85,7 +84,8 @@ QMap<QString, QList<QgsAuthConfigSslServer> > QgsAuthCertUtils::sslConfigsGroupe
8584
QMap< QString, QList<QgsAuthConfigSslServer> > orgconfigs;
8685
Q_FOREACH ( const QgsAuthConfigSslServer& config, configs )
8786
{
88-
QString org( config.sslCertificate().subjectInfo( QSslCertificate::Organization ) );
87+
QString org( SSL_SUBJECT_INFO( config.sslCertificate(), QSslCertificate::Organization ) );
88+
8989
if ( org.isEmpty() )
9090
org = QObject::tr( "(Organization not defined)" );
9191
QList<QgsAuthConfigSslServer> valist = orgconfigs.contains( org ) ? orgconfigs.value( org ) : QList<QgsAuthConfigSslServer>();
@@ -265,28 +265,28 @@ QString QgsAuthCertUtils::getCaSourceName( QgsAuthCertUtils::CaCertSource source
265265

266266
QString QgsAuthCertUtils::resolvedCertName( const QSslCertificate &cert, bool issuer )
267267
{
268-
QString name( issuer ? cert.issuerInfo( QSslCertificate::CommonName )
269-
: cert.subjectInfo( QSslCertificate::CommonName ) );
268+
QString name( issuer ? SSL_ISSUER_INFO( cert, QSslCertificate::CommonName )
269+
: SSL_SUBJECT_INFO( cert, QSslCertificate::CommonName ) );
270270

271271
if ( name.isEmpty() )
272-
name = issuer ? cert.issuerInfo( QSslCertificate::OrganizationalUnitName )
273-
: cert.subjectInfo( QSslCertificate::OrganizationalUnitName );
272+
name = issuer ? SSL_ISSUER_INFO( cert, QSslCertificate::OrganizationalUnitName )
273+
: SSL_SUBJECT_INFO( cert, QSslCertificate::OrganizationalUnitName );
274274

275275
if ( name.isEmpty() )
276-
name = issuer ? cert.issuerInfo( QSslCertificate::Organization )
277-
: cert.subjectInfo( QSslCertificate::Organization );
276+
name = issuer ? SSL_ISSUER_INFO( cert, QSslCertificate::Organization )
277+
: SSL_SUBJECT_INFO( cert, QSslCertificate::Organization );
278278

279279
if ( name.isEmpty() )
280-
name = issuer ? cert.issuerInfo( QSslCertificate::LocalityName )
281-
: cert.subjectInfo( QSslCertificate::LocalityName );
280+
name = issuer ? SSL_ISSUER_INFO( cert, QSslCertificate::LocalityName )
281+
: SSL_SUBJECT_INFO( cert, QSslCertificate::LocalityName );
282282

283283
if ( name.isEmpty() )
284-
name = issuer ? cert.issuerInfo( QSslCertificate::StateOrProvinceName )
285-
: cert.subjectInfo( QSslCertificate::StateOrProvinceName );
284+
name = issuer ? SSL_ISSUER_INFO( cert, QSslCertificate::StateOrProvinceName )
285+
: SSL_SUBJECT_INFO( cert, QSslCertificate::StateOrProvinceName );
286286

287287
if ( name.isEmpty() )
288-
name = issuer ? cert.issuerInfo( QSslCertificate::CountryName )
289-
: cert.subjectInfo( QSslCertificate::CountryName );
288+
name = issuer ? SSL_ISSUER_INFO( cert, QSslCertificate::CountryName )
289+
: SSL_SUBJECT_INFO( cert, QSslCertificate::CountryName );
290290

291291
return name;
292292
}
@@ -330,23 +330,23 @@ QString QgsAuthCertUtils::getCertDistinguishedName( const QSslCertificate &qcert
330330
dirname, "E", issuer ? acert.issuerInfo().value( QCA::Email )
331331
: acert.subjectInfo().value( QCA::Email ) );
332332
QgsAuthCertUtils::appendDirSegment_(
333-
dirname, "CN", issuer ? qcert.issuerInfo( QSslCertificate::CommonName )
334-
: qcert.subjectInfo( QSslCertificate::CommonName ) );
333+
dirname, "CN", issuer ? SSL_ISSUER_INFO( qcert, QSslCertificate::CommonName )
334+
: SSL_SUBJECT_INFO( qcert, QSslCertificate::CommonName ) );
335335
QgsAuthCertUtils::appendDirSegment_(
336-
dirname, "OU", issuer ? qcert.issuerInfo( QSslCertificate::OrganizationalUnitName )
337-
: qcert.subjectInfo( QSslCertificate::OrganizationalUnitName ) );
336+
dirname, "OU", issuer ? SSL_ISSUER_INFO( qcert, QSslCertificate::OrganizationalUnitName )
337+
: SSL_SUBJECT_INFO( qcert, QSslCertificate::OrganizationalUnitName ) );
338338
QgsAuthCertUtils::appendDirSegment_(
339-
dirname, "O", issuer ? qcert.issuerInfo( QSslCertificate::Organization )
340-
: qcert.subjectInfo( QSslCertificate::Organization ) );
339+
dirname, "O", issuer ? SSL_ISSUER_INFO( qcert, QSslCertificate::Organization )
340+
: SSL_SUBJECT_INFO( qcert, QSslCertificate::Organization ) );
341341
QgsAuthCertUtils::appendDirSegment_(
342-
dirname, "L", issuer ? qcert.issuerInfo( QSslCertificate::LocalityName )
343-
: qcert.subjectInfo( QSslCertificate::LocalityName ) );
342+
dirname, "L", issuer ? SSL_ISSUER_INFO( qcert, QSslCertificate::LocalityName )
343+
: SSL_SUBJECT_INFO( qcert, QSslCertificate::LocalityName ) );
344344
QgsAuthCertUtils::appendDirSegment_(
345-
dirname, "ST", issuer ? qcert.issuerInfo( QSslCertificate::StateOrProvinceName )
346-
: qcert.subjectInfo( QSslCertificate::StateOrProvinceName ) );
345+
dirname, "ST", issuer ? SSL_ISSUER_INFO( qcert, QSslCertificate::StateOrProvinceName )
346+
: SSL_SUBJECT_INFO( qcert, QSslCertificate::StateOrProvinceName ) );
347347
QgsAuthCertUtils::appendDirSegment_(
348-
dirname, "C", issuer ? qcert.issuerInfo( QSslCertificate::CountryName )
349-
: qcert.subjectInfo( QSslCertificate::CountryName ) );
348+
dirname, "C", issuer ? SSL_ISSUER_INFO( qcert, QSslCertificate::CountryName )
349+
: SSL_SUBJECT_INFO( qcert, QSslCertificate::CountryName ) );
350350

351351
return dirname.join( "," );
352352
}

‎src/core/auth/qgsauthcertutils.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@
2424

2525
#include "qgsauthconfig.h"
2626

27+
#if QT_VERSION >= 0x050000
28+
#define SSL_ISSUER_INFO( var, prop ) var.issuerInfo( prop ).first()
29+
#else
30+
#define SSL_ISSUER_INFO( var, prop ) var.issuerInfo( prop )
31+
#endif
32+
33+
#if QT_VERSION >= 0x050000
34+
#define SSL_SUBJECT_INFO( var, prop ) var.subjectInfo( prop ).first()
35+
#else
36+
#define SSL_SUBJECT_INFO( var, prop ) var.subjectInfo( prop )
37+
#endif
38+
2739
/** \ingroup core
2840
* \brief Utilities for working with certificates and keys
2941
*/

‎src/gui/auth/qgsauthcertificateinfo.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ QgsAuthCertInfo::QgsAuthCertInfo( QSslCertificate cert,
7878

7979
setUpCertDetailsTree();
8080

81-
grpbxTrust->setShown( mManageTrust );
81+
grpbxTrust->setVisible( mManageTrust );
8282

8383
// trust policy is still queried, even if not managing the policy, so public getter will work
8484
mDefaultTrustPolicy = QgsAuthManager::instance()->defaultCertTrustPolicy();
@@ -103,7 +103,7 @@ QgsAuthCertInfo::~QgsAuthCertInfo()
103103

104104
void QgsAuthCertInfo::setupError( const QString &msg )
105105
{
106-
lblError->setShown( true );
106+
lblError->setVisible( true );
107107
QString out = tr( "<b>Setup ERROR:</b>\n\n" );
108108
out += msg;
109109
lblError->setText( out );
@@ -526,22 +526,22 @@ void QgsAuthCertInfo::populateInfoDetailsSection()
526526

527527
// Subject Info
528528
addFieldItem( mGrpSubj, tr( "Country (C)" ),
529-
mCurrentQCert.subjectInfo( QSslCertificate::CountryName ),
529+
SSL_SUBJECT_INFO( mCurrentQCert, QSslCertificate::CountryName ),
530530
LineEdit );
531531
addFieldItem( mGrpSubj, tr( "State/Province (ST)" ),
532-
mCurrentQCert.subjectInfo( QSslCertificate::StateOrProvinceName ),
532+
SSL_SUBJECT_INFO( mCurrentQCert, QSslCertificate::StateOrProvinceName ),
533533
LineEdit );
534534
addFieldItem( mGrpSubj, tr( "Locality (L)" ),
535-
mCurrentQCert.subjectInfo( QSslCertificate::LocalityName ),
535+
SSL_SUBJECT_INFO( mCurrentQCert, QSslCertificate::LocalityName ),
536536
LineEdit );
537537
addFieldItem( mGrpSubj, tr( "Organization (O)" ),
538-
mCurrentQCert.subjectInfo( QSslCertificate::Organization ),
538+
SSL_SUBJECT_INFO( mCurrentQCert, QSslCertificate::Organization ),
539539
LineEdit );
540540
addFieldItem( mGrpSubj, tr( "Organizational unit (OU)" ),
541-
mCurrentQCert.subjectInfo( QSslCertificate::OrganizationalUnitName ),
541+
SSL_SUBJECT_INFO( mCurrentQCert, QSslCertificate::OrganizationalUnitName ),
542542
LineEdit );
543543
addFieldItem( mGrpSubj, tr( "Common name (CN)" ),
544-
mCurrentQCert.subjectInfo( QSslCertificate::CommonName ),
544+
SSL_SUBJECT_INFO( mCurrentQCert, QSslCertificate::CommonName ),
545545
LineEdit );
546546
addFieldItem( mGrpSubj, tr( "Email address (E)" ),
547547
mCurrentACert.subjectInfo().value( QCA::Email ),
@@ -594,22 +594,22 @@ void QgsAuthCertInfo::populateInfoDetailsSection()
594594

595595
// Issuer Info
596596
addFieldItem( mGrpIssu, tr( "Country (C)" ),
597-
mCurrentQCert.issuerInfo( QSslCertificate::CountryName ),
597+
SSL_ISSUER_INFO( mCurrentQCert, QSslCertificate::CountryName ),
598598
LineEdit );
599599
addFieldItem( mGrpIssu, tr( "State/Province (ST)" ),
600-
mCurrentQCert.issuerInfo( QSslCertificate::StateOrProvinceName ),
600+
SSL_ISSUER_INFO( mCurrentQCert, QSslCertificate::StateOrProvinceName ),
601601
LineEdit );
602602
addFieldItem( mGrpIssu, tr( "Locality (L)" ),
603-
mCurrentQCert.issuerInfo( QSslCertificate::LocalityName ),
603+
SSL_ISSUER_INFO( mCurrentQCert, QSslCertificate::LocalityName ),
604604
LineEdit );
605605
addFieldItem( mGrpIssu, tr( "Organization (O)" ),
606-
mCurrentQCert.issuerInfo( QSslCertificate::Organization ),
606+
SSL_ISSUER_INFO( mCurrentQCert, QSslCertificate::Organization ),
607607
LineEdit );
608608
addFieldItem( mGrpIssu, tr( "Organizational unit (OU)" ),
609-
mCurrentQCert.issuerInfo( QSslCertificate::OrganizationalUnitName ),
609+
SSL_ISSUER_INFO( mCurrentQCert, QSslCertificate::OrganizationalUnitName ),
610610
LineEdit );
611611
addFieldItem( mGrpIssu, tr( "Common name (CN)" ),
612-
mCurrentQCert.issuerInfo( QSslCertificate::CommonName ),
612+
SSL_ISSUER_INFO( mCurrentQCert, QSslCertificate::CommonName ),
613613
LineEdit );
614614
addFieldItem( mGrpIssu, tr( "Email address (E)" ),
615615
mCurrentACert.issuerInfo().value( QCA::Email ),

‎src/gui/auth/qgsauthimportidentitydialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ void QgsAuthImportIdentityDialog::populateIdentityType()
7171
{
7272
if ( mIdentityType == CertIdentity )
7373
{
74-
stkwBundleType->setShown( true );
74+
stkwBundleType->setVisible( true );
7575

7676
cmbIdentityTypes->addItem( tr( "PKI PEM/DER Certificate Paths" ),
7777
QVariant( QgsAuthImportIdentityDialog::PkiPaths ) );

‎src/gui/auth/qgsauthsslconfigwidget.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ QgsAuthSslConfigWidget::QgsAuthSslConfigWidget( QWidget *parent,
6262

6363
setUpSslConfigTree();
6464

65-
lblLoadedConfig->setShown( false );
65+
lblLoadedConfig->setVisible( false );
6666
lblLoadedConfig->setText( "" );
6767

6868
connect( leHost, SIGNAL( textChanged( QString ) ),
@@ -207,7 +207,7 @@ void QgsAuthSslConfigWidget::setSslCertificate( const QSslCertificate &cert, con
207207

208208
emit certFoundInAuthDatabase( !config.isNull() );
209209

210-
lblLoadedConfig->setShown( true );
210+
lblLoadedConfig->setVisible( true );
211211
if ( !config.isNull() )
212212
{
213213
loadSslCustomConfig( config );
@@ -246,7 +246,7 @@ void QgsAuthSslConfigWidget::loadSslCustomConfig( const QgsAuthConfigSslServer &
246246
setSslProtocol( config.sslProtocol() );
247247
setSslPeerVerify( config.sslPeerVerifyMode(), config.sslPeerVerifyDepth() );
248248

249-
lblLoadedConfig->setShown( true );
249+
lblLoadedConfig->setVisible( true );
250250
lblLoadedConfig->setText( configFoundText_() );
251251
}
252252

@@ -266,7 +266,7 @@ void QgsAuthSslConfigWidget::resetSslCertConfig()
266266
leCommonName->setStyleSheet( "" );
267267
leHost->clear();
268268

269-
lblLoadedConfig->setShown( false );
269+
lblLoadedConfig->setVisible( false );
270270
lblLoadedConfig->setText( "" );
271271
resetSslProtocol();
272272
resetSslIgnoreErrors();

0 commit comments

Comments
 (0)
Please sign in to comment.