]> vaikene.ee Git - evaf/blob - src/apps/PswGen/Generator/igenerator.h
Warning fixes and copyright update.
[evaf] / src / apps / PswGen / Generator / igenerator.h
1 /**
2 * @file PswGen/Generator/igenerator.h
3 * @brief Interface for password generator modules
4 * @author Enar Vaikene
5 *
6 * Copyright (c) 2011-2019 Enar Vaikene
7 *
8 * This file is part of the eVaf C++ cross-platform application development framework.
9 *
10 * This file can be used under the terms of the GNU General Public License
11 * version 3.0 as published by the Free Software Foundation and appearing in
12 * the file LICENSE included in the packaging of this file. Please review the
13 * the following information to ensure the GNU General Public License version
14 * 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html.
15 *
16 * Alternatively, this file may be used in accordance with the Commercial License
17 * Agreement provided with the Software.
18 */
19
20 #ifndef __PSWGEN_GENERATOR_IGENERATOR_H
21 # define __PSWGEN_GENERATOR_IGENERATOR_H
22
23 #include <QObject>
24 #include <QString>
25
26 namespace eVaf {
27 namespace PswGen {
28
29 /**
30 * Password generator interface.
31 *
32 * This interface is used to generate strong passwords.
33 */
34 struct iGenerator
35 {
36
37 /**
38 * Flags for the password generator.
39 */
40 enum {
41 ALPHANUMERIC = 0x01 ///< Generated password contains only alphanumeric characters
42 };
43
44 /**
45 * Empty virtual destructor
46 */
47 virtual ~iGenerator() {}
48
49 /**
50 * Generates a strong password
51 * @param name Name of the password
52 * @param masterPassword Master password
53 * @param length Length of the password (if zero, then uses the max length)
54 * @param flags Flags for the generator
55 * @return Generated password
56 *
57 * This function generates a strong password using the name and the master password string
58 * as inputs. Calling this function with the same input always returns the same generated
59 * password.
60 *
61 * The length of the password is specified with the length argument. However, the generated password
62 * is never longer than possible with the particular cryptographic method.
63 *
64 * Optional flags can be used to fine-tune the generator.
65 */
66 virtual QString generatePassword(QString const & name, QString const & masterPassword, int length, uint flags = 0) const = 0;
67
68 /**
69 * Returns the maximum length of generated passwords
70 * @return Maximum length
71 *
72 * This function returns the maximum length of generated passwords that is possible with the cryptographic method
73 * used by the module implementing this interface.
74 */
75 virtual int maxLength() const = 0;
76
77 };
78
79 } // namespace eVaf::PswGen
80 } // namespace eVaf
81
82 Q_DECLARE_INTERFACE(eVaf::PswGen::iGenerator, "eVaf.PswGen.iGenerator/1.0")
83
84 #endif // igenerator.h