]> vaikene.ee Git - evaf/blobdiff - src/apps/PswGen/Generator/module.cpp
Warning fixes and copyright update.
[evaf] / src / apps / PswGen / Generator / module.cpp
index e19933ba4ed8c1fe30599ec6a572aa313a50cdb2..7921337b5fd9fb4366c3269666d56f3ec73b7e57 100644 (file)
@@ -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 <Common/iLogger>
 #include <Common/iRegistry>
@@ -26,7 +25,6 @@
 #include <QtCore>
 
 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()));
 
@@ -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;
 }