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