1/*
2 SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#ifndef NETWORKMANAGERQT_SECURITY8021X_SETTING_H
8#define NETWORKMANAGERQT_SECURITY8021X_SETTING_H
9
10#include "setting.h"
11#include <networkmanagerqt/networkmanagerqt_export.h>
12
13namespace NetworkManager
14{
15class Security8021xSettingPrivate;
16
17/*!
18 * \class NetworkManager::Security8021xSetting
19 * \inheaderfile NetworkManagerQt/Security8021xSetting
20 * \inmodule NetworkManagerQt
21 *
22 * \brief Represents 802.1x wireless security setting.
23 */
24class NETWORKMANAGERQT_EXPORT Security8021xSetting : public Setting
25{
26public:
27 /*!
28 * \typedef NetworkManager::Security8021xSetting::Ptr
29 */
30 typedef QSharedPointer<Security8021xSetting> Ptr;
31 /*!
32 * \typedef NetworkManager::Security8021xSetting::List
33 */
34 typedef QList<Ptr> List;
35 /*!
36 *
37 * \value EapMethodUnknown
38 * \value EapMethodLeap
39 * \value EapMethodMd5
40 * \value EapMethodTls
41 * \value EapMethodPeap
42 * \value EapMethodTtls
43 * \value EapMethodSim
44 * \value EapMethodFast
45 * \value EapMethodPwd
46 */
47 enum EapMethod {
48 EapMethodUnknown = 0,
49 EapMethodLeap,
50 EapMethodMd5,
51 EapMethodTls,
52 EapMethodPeap,
53 EapMethodTtls,
54 EapMethodSim,
55 EapMethodFast,
56 EapMethodPwd,
57 };
58 /*!
59 *
60 * \value PeapVersionUnknown
61 * \value PeapVersionZero
62 * \value PeapVersionOne
63 */
64 enum PeapVersion {
65 PeapVersionUnknown = -1,
66 PeapVersionZero,
67 PeapVersionOne,
68 };
69 /*!
70 *
71 * \value PeapLabelUnknown
72 * \value PeapLabelForce
73 */
74 enum PeapLabel {
75 PeapLabelUnknown = 0,
76 PeapLabelForce,
77 };
78 /*!
79 *
80 * \value FastProvisioningUnknown
81 * \value FastProvisioningDisabled
82 * \value FastProvisioningAllowUnauthenticated
83 * \value FastProvisioningAllowAuthenticated
84 * \value FastProvisioningAllowBoth
85 */
86 enum FastProvisioning {
87 FastProvisioningUnknown = -1,
88 FastProvisioningDisabled,
89 FastProvisioningAllowUnauthenticated,
90 FastProvisioningAllowAuthenticated,
91 FastProvisioningAllowBoth,
92 };
93 /*!
94 *
95 * \value AuthMethodUnknown
96 * \value AuthMethodPap
97 * \value AuthMethodChap
98 * \value AuthMethodMschap
99 * \value AuthMethodMschapv2
100 * \value AuthMethodGtc
101 * \value AuthMethodOtp
102 * \value AuthMethodMd5
103 * \value AuthMethodTls
104 */
105 enum AuthMethod {
106 AuthMethodUnknown = 0,
107 AuthMethodPap,
108 AuthMethodChap,
109 AuthMethodMschap,
110 AuthMethodMschapv2,
111 AuthMethodGtc,
112 AuthMethodOtp,
113 AuthMethodMd5,
114 AuthMethodTls,
115 };
116 /*!
117 *
118 * \value AuthEapMethodUnknown
119 * \value AuthEapMethodMd5
120 * \value AuthEapMethodMschapv2
121 * \value AuthEapMethodOtp
122 * \value AuthEapMethodGtc
123 * \value AuthEapMethodTls
124 */
125 enum AuthEapMethod {
126 AuthEapMethodUnknown = 0,
127 AuthEapMethodMd5,
128 AuthEapMethodMschapv2,
129 AuthEapMethodOtp,
130 AuthEapMethodGtc,
131 AuthEapMethodTls,
132 };
133
134 /*!
135 */
136 Security8021xSetting();
137 /*!
138 */
139 explicit Security8021xSetting(const Ptr &other);
140 ~Security8021xSetting() override;
141
142 QString name() const override;
143
144 /*!
145 */
146 void setEapMethods(const QList<EapMethod> &methods);
147 /*!
148 */
149 QList<EapMethod> eapMethods() const;
150
151 /*!
152 */
153 void setIdentity(const QString &identity);
154 /*!
155 */
156 QString identity() const;
157
158 /*!
159 */
160 void setAnonymousIdentity(const QString &identity);
161 /*!
162 */
163 QString anonymousIdentity() const;
164
165 /*!
166 */
167 void setDomainSuffixMatch(const QString &domainSuffixMatch);
168 /*!
169 */
170 QString domainSuffixMatch() const;
171
172 /*!
173 * Set UTF-8 encoded file path containing PAC for EAP-FAST.
174 *
175 * \param filePath file path to be set.
176 */
177 void setPacFile(const QString &filePath);
178 /*!
179 */
180 QString pacFile() const;
181
182 /*!
183 * Set certificate authority (ca)'s certificate for this setting.
184 *
185 * \param certificate certificate's file path encoded into a byte array.
186 *
187 * \warning certificate have to be null terminated or NetworkManager will refuse it.
188 */
189 void setCaCertificate(const QByteArray &certificate);
190 /*!
191 */
192 QByteArray caCertificate() const;
193
194 /*!
195 */
196 void setCaPath(const QString &path);
197 /*!
198 */
199 QString caPath() const;
200
201 /*!
202 */
203 void setSubjectMatch(const QString &substring);
204 /*!
205 */
206 QString subjectMatch() const;
207
208 /*!
209 */
210 void setAltSubjectMatches(const QStringList &strings);
211 /*!
212 */
213 QStringList altSubjectMatches() const;
214
215 /*!
216 * Set client certificate for this setting.
217 *
218 * \param certificate certificate's file path encoded into a byte array.
219 *
220 * \warning certificate have to be null terminated or NetworkManager will refuse it.
221 */
222 void setClientCertificate(const QByteArray &certificate);
223 /*!
224 */
225 QByteArray clientCertificate() const;
226
227 /*!
228 */
229 void setPhase1PeapVersion(PeapVersion version);
230 /*!
231 */
232 PeapVersion phase1PeapVersion() const;
233
234 /*!
235 */
236 void setPhase1PeapLabel(PeapLabel label);
237 /*!
238 */
239 PeapLabel phase1PeapLabel() const;
240
241 /*!
242 */
243 void setPhase1FastProvisioning(FastProvisioning provisioning);
244 /*!
245 */
246 FastProvisioning phase1FastProvisioning() const;
247
248 /*!
249 */
250 void setPhase2AuthMethod(AuthMethod method);
251 /*!
252 */
253 AuthMethod phase2AuthMethod() const;
254
255 /*!
256 */
257 void setPhase2AuthEapMethod(AuthEapMethod method);
258 /*!
259 */
260 AuthEapMethod phase2AuthEapMethod() const;
261
262 /*!
263 * Contains the CA certificate if used by the EAP method specified in the
264 * phase2AuthMethod() or phase2AuthEapMethod() properties.
265 *
266 * \param certificate certificate's file path encoded into a byte array.
267 *
268 * \warning certificate have to be null terminated or NetworkManager will refuse it.
269 */
270 void setPhase2CaCertificate(const QByteArray &certificate);
271 /*!
272 */
273 QByteArray phase2CaCertificate() const;
274
275 /*!
276 */
277 void setPhase2CaPath(const QString &path);
278 /*!
279 */
280 QString phase2CaPath() const;
281
282 /*!
283 */
284 void setPhase2SubjectMatch(const QString &substring);
285 /*!
286 */
287 QString phase2SubjectMatch() const;
288
289 /*!
290 */
291 void setPhase2AltSubjectMatches(const QStringList &strings);
292 /*!
293 */
294 QStringList phase2AltSubjectMatches() const;
295
296 /*!
297 */
298 void setPhase2ClientCertificate(const QByteArray &certificate);
299 /*!
300 */
301 QByteArray phase2ClientCertificate() const;
302
303 /*!
304 */
305 void setPassword(const QString &password);
306 /*!
307 */
308 QString password() const;
309
310 /*!
311 */
312 void setPasswordFlags(Setting::SecretFlags flags);
313 /*!
314 */
315 Setting::SecretFlags passwordFlags() const;
316
317 /*!
318 */
319 void setPasswordRaw(const QByteArray &password);
320 /*!
321 */
322 QByteArray passwordRaw() const;
323
324 /*!
325 */
326 void setPasswordRawFlags(Setting::SecretFlags flags);
327 /*!
328 */
329 Setting::SecretFlags passwordRawFlags() const;
330
331 /*!
332 * Set private key for this setting.
333 *
334 * \param key the key to be set.
335 *
336 * \warning key have to be null terminated or NetworkManager will refuse it.
337 */
338 void setPrivateKey(const QByteArray &key);
339 /*!
340 */
341 QByteArray privateKey() const;
342
343 /*!
344 */
345 void setPrivateKeyPassword(const QString &password);
346 /*!
347 */
348 QString privateKeyPassword() const;
349
350 /*!
351 */
352 void setPrivateKeyPasswordFlags(Setting::SecretFlags flags);
353 /*!
354 */
355 Setting::SecretFlags privateKeyPasswordFlags() const;
356
357 /*!
358 */
359 void setPhase2PrivateKey(const QByteArray &key);
360 /*!
361 */
362 QByteArray phase2PrivateKey() const;
363
364 /*!
365 */
366 void setPhase2PrivateKeyPassword(const QString &password);
367 /*!
368 */
369 QString phase2PrivateKeyPassword() const;
370
371 /*!
372 */
373 void setPhase2PrivateKeyPasswordFlags(Setting::SecretFlags flags);
374 /*!
375 */
376 Setting::SecretFlags phase2PrivateKeyPasswordFlags() const;
377
378 /*!
379 */
380 void setPin(const QString &pin);
381 /*!
382 */
383 QString pin() const;
384
385 /*!
386 */
387 void setPinFlags(Setting::SecretFlags flags);
388 /*!
389 */
390 Setting::SecretFlags pinFlags() const;
391
392 /*!
393 */
394 void setSystemCaCertificates(bool use);
395 /*!
396 */
397 bool systemCaCertificates() const;
398
399 QStringList needSecrets(bool requestNew = false) const override;
400
401 void secretsFromMap(const QVariantMap &secrets) override;
402
403 QVariantMap secretsToMap() const override;
404
405 void fromMap(const QVariantMap &setting) override;
406
407 QVariantMap toMap() const override;
408
409protected:
410 Security8021xSettingPrivate *const d_ptr;
411
412private:
413 Q_DECLARE_PRIVATE(Security8021xSetting)
414};
415
416NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const Security8021xSetting &setting);
417
418}
419
420#endif // NETWORKMANAGERQT_SECURITY802X_SETTING_H
421

source code of networkmanager-qt/src/settings/security8021xsetting.h