File indexing completed on 2024-04-28 05:50:08
0001 /* 0002 * SPDX-License-Identifier: GPL-3.0-or-later 0003 * SPDX-FileCopyrightText: 2020 Johan Ouwerkerk <jm.ouwerkerk@gmail.com> 0004 */ 0005 #ifndef MODEL_QR_CODE_H 0006 #define MODEL_QR_CODE_H 0007 0008 #include "input.h" 0009 #include "../uri/uri.h" 0010 0011 #include <QByteArray> 0012 #include <QObject> 0013 #include <QString> 0014 0015 #include <optional> 0016 0017 namespace model 0018 { 0019 class QrParameters 0020 { 0021 public: 0022 static std::optional<QrParameters> parse(const QByteArray &qrCode); 0023 static std::optional<QrParameters> parse(const QString &qrCode); 0024 static std::optional<QrParameters> from(const uri::QrParts &parts); 0025 void populate(AccountInput *input) const; 0026 private: 0027 explicit QrParameters(AccountInput::TokenType type, const QString &name, const QString &issuer, 0028 const QString &secret, uint tokenLength, quint64 counter, uint timeStep, 0029 AccountInput::TOTPAlgorithm algorithm); 0030 private: 0031 const AccountInput::TokenType m_type; 0032 const QString m_name; 0033 const QString m_issuer; 0034 const QString m_secret; 0035 const uint m_tokenLength; 0036 const quint64 m_counter; 0037 const uint m_timeStep; 0038 const AccountInput::TOTPAlgorithm m_algorithm; 0039 }; 0040 } 0041 0042 #endif