Warning, file /frameworks/kio/src/core/kssl/ksslsettings.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 This file is part of the KDE project 0003 SPDX-FileCopyrightText: 2000 George Staikos <staikos@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "ksslsettings.h" 0009 0010 #include <KConfigGroup> 0011 0012 #include <QStandardPaths> 0013 0014 class CipherNode 0015 { 0016 public: 0017 CipherNode(const char *_name, int _keylen) 0018 : name(QString::fromUtf8(_name)) 0019 , keylen(_keylen) 0020 { 0021 } 0022 QString name; 0023 int keylen; 0024 inline int operator==(const CipherNode &x) 0025 { 0026 return x.keylen == keylen && x.name == name; 0027 } 0028 inline int operator<(const CipherNode &x) 0029 { 0030 return keylen < x.keylen; 0031 } 0032 inline int operator<=(const CipherNode &x) 0033 { 0034 return keylen <= x.keylen; 0035 } 0036 inline int operator>(const CipherNode &x) 0037 { 0038 return keylen > x.keylen; 0039 } 0040 inline int operator>=(const CipherNode &x) 0041 { 0042 return keylen >= x.keylen; 0043 } 0044 }; 0045 0046 class KSSLSettingsPrivate 0047 { 0048 public: 0049 KSSLSettingsPrivate() 0050 { 0051 } 0052 ~KSSLSettingsPrivate() 0053 { 0054 } 0055 0056 bool m_bUseEGD; 0057 bool m_bUseEFile; 0058 QString m_EGDPath; 0059 bool m_bSendX509; 0060 bool m_bPromptX509; 0061 0062 KConfig *m_cfg; 0063 bool m_bWarnOnEnter, m_bWarnOnUnencrypted, m_bWarnOnLeave, m_bWarnOnMixed; 0064 bool m_bWarnSelfSigned, m_bWarnRevoked, m_bWarnExpired; 0065 0066 QStringList m_v3ciphers; 0067 QStringList m_v3selectedciphers; 0068 QList<int> m_v3bits; 0069 }; 0070 0071 // 0072 // FIXME 0073 // Implementation note: for now, we only read cipher settings from disk, 0074 // and do not store them in memory. This should change. 0075 // 0076 0077 KSSLSettings::KSSLSettings(bool readConfig) 0078 : d(new KSSLSettingsPrivate) 0079 { 0080 d->m_cfg = new KConfig(QStringLiteral("cryptodefaults"), KConfig::NoGlobals); 0081 0082 if (readConfig) { 0083 load(); 0084 } 0085 } 0086 0087 // we don't save settings in case it was a temporary object 0088 KSSLSettings::~KSSLSettings() 0089 { 0090 delete d->m_cfg; 0091 } 0092 0093 QString KSSLSettings::getCipherList() 0094 { 0095 QString clist; 0096 // TODO fill in list here (or just remove this method!) 0097 return clist; 0098 } 0099 0100 // FIXME - sync these up so that we can use them with the control module!! 0101 void KSSLSettings::load() 0102 { 0103 d->m_cfg->reparseConfiguration(); 0104 0105 KConfigGroup cfg(d->m_cfg, "Warnings"); 0106 d->m_bWarnOnEnter = cfg.readEntry("OnEnter", false); 0107 d->m_bWarnOnLeave = cfg.readEntry("OnLeave", true); 0108 d->m_bWarnOnUnencrypted = cfg.readEntry("OnUnencrypted", false); 0109 d->m_bWarnOnMixed = cfg.readEntry("OnMixed", true); 0110 0111 cfg = KConfigGroup(d->m_cfg, "Validation"); 0112 d->m_bWarnSelfSigned = cfg.readEntry("WarnSelfSigned", true); 0113 d->m_bWarnExpired = cfg.readEntry("WarnExpired", true); 0114 d->m_bWarnRevoked = cfg.readEntry("WarnRevoked", true); 0115 0116 cfg = KConfigGroup(d->m_cfg, "EGD"); 0117 d->m_bUseEGD = cfg.readEntry("UseEGD", false); 0118 d->m_bUseEFile = cfg.readEntry("UseEFile", false); 0119 d->m_EGDPath = cfg.readPathEntry("EGDPath", QString()); 0120 0121 cfg = KConfigGroup(d->m_cfg, "Auth"); 0122 d->m_bSendX509 = (QLatin1String("send") == cfg.readEntry("AuthMethod", "")); 0123 d->m_bPromptX509 = (QLatin1String("prompt") == cfg.readEntry("AuthMethod", "")); 0124 } 0125 0126 void KSSLSettings::defaults() 0127 { 0128 d->m_bWarnOnEnter = false; 0129 d->m_bWarnOnLeave = true; 0130 d->m_bWarnOnUnencrypted = true; 0131 d->m_bWarnOnMixed = true; 0132 d->m_bWarnSelfSigned = true; 0133 d->m_bWarnExpired = true; 0134 d->m_bWarnRevoked = true; 0135 d->m_bUseEGD = false; 0136 d->m_bUseEFile = false; 0137 d->m_EGDPath = QLatin1String(""); 0138 } 0139 0140 void KSSLSettings::save() 0141 { 0142 KConfigGroup cfg(d->m_cfg, "Warnings"); 0143 cfg.writeEntry("OnEnter", d->m_bWarnOnEnter); 0144 cfg.writeEntry("OnLeave", d->m_bWarnOnLeave); 0145 cfg.writeEntry("OnUnencrypted", d->m_bWarnOnUnencrypted); 0146 cfg.writeEntry("OnMixed", d->m_bWarnOnMixed); 0147 0148 cfg = KConfigGroup(d->m_cfg, "Validation"); 0149 cfg.writeEntry("WarnSelfSigned", d->m_bWarnSelfSigned); 0150 cfg.writeEntry("WarnExpired", d->m_bWarnExpired); 0151 cfg.writeEntry("WarnRevoked", d->m_bWarnRevoked); 0152 0153 cfg = KConfigGroup(d->m_cfg, "EGD"); 0154 cfg.writeEntry("UseEGD", d->m_bUseEGD); 0155 cfg.writeEntry("UseEFile", d->m_bUseEFile); 0156 cfg.writePathEntry("EGDPath", d->m_EGDPath); 0157 0158 d->m_cfg->sync(); 0159 // FIXME - ciphers 0160 } 0161 0162 bool KSSLSettings::warnOnEnter() const 0163 { 0164 return d->m_bWarnOnEnter; 0165 } 0166 void KSSLSettings::setWarnOnEnter(bool x) 0167 { 0168 d->m_bWarnOnEnter = x; 0169 } 0170 bool KSSLSettings::warnOnUnencrypted() const 0171 { 0172 return d->m_bWarnOnUnencrypted; 0173 } 0174 void KSSLSettings::setWarnOnUnencrypted(bool x) 0175 { 0176 d->m_bWarnOnUnencrypted = x; 0177 } 0178 bool KSSLSettings::warnOnLeave() const 0179 { 0180 return d->m_bWarnOnLeave; 0181 } 0182 void KSSLSettings::setWarnOnLeave(bool x) 0183 { 0184 d->m_bWarnOnLeave = x; 0185 } 0186 bool KSSLSettings::warnOnMixed() const 0187 { 0188 return d->m_bWarnOnMixed; 0189 } 0190 bool KSSLSettings::useEGD() const 0191 { 0192 return d->m_bUseEGD; 0193 } 0194 bool KSSLSettings::useEFile() const 0195 { 0196 return d->m_bUseEFile; 0197 } 0198 bool KSSLSettings::autoSendX509() const 0199 { 0200 return d->m_bSendX509; 0201 } 0202 bool KSSLSettings::promptSendX509() const 0203 { 0204 return d->m_bPromptX509; 0205 } 0206 QString &KSSLSettings::getEGDPath() 0207 { 0208 return d->m_EGDPath; 0209 }