X-Git-Url: https://vaikene.ee/gitweb/pswgen11.html?a=blobdiff_plain;ds=inline;f=src%2Fapps%2FPswGen%2FGenerator%2Fmodule.cpp;h=7921337b5fd9fb4366c3269666d56f3ec73b7e57;hb=HEAD;hp=27354f52a630575fa5e9e1ff3f99d3f58b501923;hpb=3352f7acc232104985807b9f470cb12bcb2b47c2;p=evaf
diff --git a/src/apps/PswGen/Generator/module.cpp b/src/apps/PswGen/Generator/module.cpp
index 27354f5..7921337 100644
--- a/src/apps/PswGen/Generator/module.cpp
+++ b/src/apps/PswGen/Generator/module.cpp
@@ -3,7 +3,7 @@
* @brief Implementation of the iGenerator interface
* @author Enar Vaikene
*
- * Copyright (c) 2011 Enar Vaikene
+ * Copyright (c) 2011-2019 Enar Vaikene
*
* This file is part of the eVaf C++ cross-platform application development framework.
*
@@ -18,7 +18,6 @@
*/
#include "module.h"
-#include "version.h"
#include
#include
@@ -26,7 +25,6 @@
#include
VER_EXPORT_VERSION_INFO()
-Q_EXPORT_PLUGIN2(VER_MODULE_NAME_STR, eVaf::PswGen::Generator::Module)
using namespace eVaf;
using namespace eVaf::PswGen;
@@ -53,7 +51,7 @@ Module::~Module()
bool Module::init(QString const & args)
{
- Q_UNUSED(args);
+ Q_UNUSED(args)
EVAF_INFO("%s initialized", qPrintable(objectName()));
@@ -71,7 +69,7 @@ void Module::done()
using namespace eVaf::PswGen::Generator::Internal;
GeneratorImpl::GeneratorImpl()
- : iGenerator()
+ : QObject()
{
setObjectName(QString("%1.iGenerator").arg(VER_MODULE_NAME_STR));
@@ -87,14 +85,24 @@ GeneratorImpl::~GeneratorImpl()
QString GeneratorImpl::generatePassword(QString const & name, QString const & masterPassword, int length, uint flags) const
{
- Q_UNUSED(flags);
+ Q_UNUSED(flags)
QByteArray inputString = QString("%1%2").arg(name).arg(masterPassword).toLatin1();
QCryptographicHash hash(QCryptographicHash::Md5);
hash.addData(inputString);
QByteArray result = hash.result().toBase64();
if (length > 0)
- return result.left(length);
- else
- return result;
+ result.resize(length);
+
+ if (flags & uint(ALPHANUMERIC)) {
+ // Convert all characters to alpha-numeric
+ for (int i = 0; i < result.size(); ++i) {
+ char c = result.at(i);
+ while (isalnum(c) == 0)
+ c++;
+ result[i] = c;
+ }
+ }
+
+ return result;
}