diff --git a/autotests/settings/8021xsettingtest.cpp b/autotests/settings/8021xsettingtest.cpp --- a/autotests/settings/8021xsettingtest.cpp +++ b/autotests/settings/8021xsettingtest.cpp @@ -38,6 +38,7 @@ QTest::addColumn("anonymousIdentity"); QTest::addColumn("pacFile"); QTest::addColumn("caCert"); + QTest::addColumn("domainSuffixMatch"); QTest::addColumn("caPath"); QTest::addColumn("subjectMatch"); QTest::addColumn("altSubjectMatches"); @@ -78,6 +79,7 @@ << QString("anonymousIdentity") // anonymousIdentity << QString("file://path/to/pac/file") // pacFile << QByteArray("file://path/to/ca/cert") // caCert + << QString("example.com") // domainSuffixMatch << QString("file://path/to/ca/cert") // caPath << QString("subjectMatch") // subjectMatch << altSubjectMatches // altSubjectMatches @@ -114,6 +116,7 @@ QFETCH(QString, anonymousIdentity); QFETCH(QString, pacFile); QFETCH(QByteArray, caCert); + QFETCH(QString, domainSuffixMatch); QFETCH(QString, caPath); QFETCH(QString, subjectMatch); QFETCH(QStringList, altSubjectMatches); @@ -149,6 +152,7 @@ map.insert(QLatin1String(NM_SETTING_802_1X_ANONYMOUS_IDENTITY), anonymousIdentity); map.insert(QLatin1String(NM_SETTING_802_1X_PAC_FILE), pacFile); map.insert(QLatin1String(NM_SETTING_802_1X_CA_CERT), caCert); + map.insert(QLatin1String(NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH), domainSuffixMatch); map.insert(QLatin1String(NM_SETTING_802_1X_CA_PATH), caPath); map.insert(QLatin1String(NM_SETTING_802_1X_SUBJECT_MATCH), subjectMatch); map.insert(QLatin1String(NM_SETTING_802_1X_ALTSUBJECT_MATCHES), altSubjectMatches); diff --git a/src/settings/security8021xsetting.h b/src/settings/security8021xsetting.h --- a/src/settings/security8021xsetting.h +++ b/src/settings/security8021xsetting.h @@ -63,6 +63,9 @@ void setAnonymousIdentity(const QString &identity); QString anonymousIdentity() const; + void setDomainSuffixMatch(const QString &domainSuffixMatch); + QString domainSuffixMatch() const; + /** * Set UTF-8 encoded file path containing PAC for EAP-FAST. * diff --git a/src/settings/security8021xsetting.cpp b/src/settings/security8021xsetting.cpp --- a/src/settings/security8021xsetting.cpp +++ b/src/settings/security8021xsetting.cpp @@ -53,6 +53,7 @@ { setEapMethods(other->eapMethods()); setIdentity(other->identity()); + setDomainSuffixMatch(other->domainSuffixMatch()); setAnonymousIdentity(other->anonymousIdentity()); setPacFile(other->pacFile()); setCaCertificate(other->caCertificate()); @@ -136,6 +137,20 @@ return d->anonymousIdentity; } +void NetworkManager::Security8021xSetting::setDomainSuffixMatch(const QString &domain) +{ + Q_D(Security8021xSetting); + + d->domainSuffixMatch = domain; +} + +QString NetworkManager::Security8021xSetting::domainSuffixMatch() const +{ + Q_D(const Security8021xSetting); + + return d->domainSuffixMatch; +} + void NetworkManager::Security8021xSetting::setPacFile(const QString &filePath) { Q_D(Security8021xSetting); @@ -650,6 +665,10 @@ setAnonymousIdentity(setting.value(QLatin1String(NM_SETTING_802_1X_ANONYMOUS_IDENTITY)).toString()); } + if (setting.contains(QLatin1String(NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH))) { + setDomainSuffixMatch(setting.value(QLatin1String(NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH)).toString()); + } + if (setting.contains(QLatin1String(NM_SETTING_802_1X_PAC_FILE))) { setPacFile(setting.value(QLatin1String(NM_SETTING_802_1X_PAC_FILE)).toString()); } @@ -853,6 +872,10 @@ setting.insert(QLatin1String(NM_SETTING_802_1X_ANONYMOUS_IDENTITY), anonymousIdentity()); } + if (!domainSuffixMatch().isEmpty()) { + setting.insert(QLatin1String(NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH), domainSuffixMatch()); + } + if (!pacFile().isEmpty()) { setting.insert(QLatin1String(NM_SETTING_802_1X_PAC_FILE), pacFile()); } @@ -1073,6 +1096,7 @@ dbg.nospace() << NM_SETTING_802_1X_PAC_FILE << ": " << setting.pacFile() << '\n'; dbg.nospace() << NM_SETTING_802_1X_CA_CERT << ": " << setting.caCertificate() << '\n'; dbg.nospace() << NM_SETTING_802_1X_CA_PATH << ": " << setting.caPath() << '\n'; + dbg.nospace() << NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH << ": " << setting.domainSuffixMatch() << '\n'; dbg.nospace() << NM_SETTING_802_1X_SUBJECT_MATCH << ": " << setting.subjectMatch() << '\n'; dbg.nospace() << NM_SETTING_802_1X_ALTSUBJECT_MATCHES << ": " << setting.altSubjectMatches() << '\n'; dbg.nospace() << NM_SETTING_802_1X_CLIENT_CERT << ": " << setting.clientCertificate() << '\n'; diff --git a/src/settings/security8021xsetting_p.h b/src/settings/security8021xsetting_p.h --- a/src/settings/security8021xsetting_p.h +++ b/src/settings/security8021xsetting_p.h @@ -35,6 +35,7 @@ QList eap; QString identity; QString anonymousIdentity; + QString domainSuffixMatch; QString pacFile; QByteArray caCert; QString caPath;