diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index d8fd5da24cdf41e76c35acda0d1e1b0f8a733079..b3ef8ca8a610bc01341652c374318855cc02ace0 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -119,7 +119,7 @@ Page {
onStatusChanged: {
if (status === PageStatus.Activating) {
- var isReady = manager.getName() !== "" && manager.getKey() !== "";
+ var isReady = manager.getName() !== "";
site.enabled = isReady;
if (!isReady) {
diff --git a/src/mpwmanager.cpp b/src/mpwmanager.cpp
index 1a03ce09e6cbef6dffab7206b22a19466b68ebca..92af58b99a6ebad381fd590f9f9d06160867a9c9 100644
--- a/src/mpwmanager.cpp
+++ b/src/mpwmanager.cpp
@@ -40,11 +40,6 @@ MPWManager::~MPWManager()
{
}
-QString MPWManager::getKey() const
-{
- return m_key;
-}
-
QString MPWManager::getName() const
{
return m_name;
@@ -54,8 +49,14 @@ void MPWManager::setUserData(const QString &name, const QString &password)
{
m_name = name;
- m_key = QString::fromLatin1((const char*) mpw_masterKeyForUser(name.toLatin1().data(),
- password.toLatin1().data(), MPAlgorithmVersionCurrent));
+ const uint8_t* k = mpw_masterKeyForUser(name.toUtf8().data(), password.toUtf8().data(),
+ MPAlgorithmVersionCurrent);
+
+ if (k) {
+ m_key = QByteArray::fromRawData((const char*) k, MP_dkLen);
+ } else {
+ qCritical() << "Error during master key generation";
+ }
}
QString MPWManager::getPassword(const QString &site, PasswordType type, const int counter) const
@@ -73,7 +74,12 @@ QString MPWManager::getPassword(const QString &site, PasswordType type, const in
default: qCritical() << "Unrecognized password type" << type;
}
- return QString::fromLatin1(mpw_passwordForSite((const unsigned char*) m_key.toLatin1().data(),
- site.toLatin1().data(), t, counter, MPSiteVariantPassword, NULL,
- MPAlgorithmVersionCurrent));
+ const char* p = mpw_passwordForSite((const unsigned char*) m_key.data(), site.toUtf8().data(),
+ t, counter, MPSiteVariantPassword, NULL, MPAlgorithmVersionCurrent);
+
+ if (p) {
+ return QString::fromUtf8(p);
+ } else {
+ return QString();
+ }
}
diff --git a/src/mpwmanager.h b/src/mpwmanager.h
index 1236fcd2e7a0e20d63a64ea6b12e43f02f7b60cc..97338cc55a6d75bcfc7189f0dee91103e840cc11 100644
--- a/src/mpwmanager.h
+++ b/src/mpwmanager.h
@@ -39,13 +39,12 @@ public:
explicit MPWManager(QObject *parent = 0);
virtual ~MPWManager();
- Q_INVOKABLE QString getKey() const;
Q_INVOKABLE QString getName() const;
Q_INVOKABLE void setUserData(const QString &name, const QString &password);
Q_INVOKABLE QString getPassword(const QString &site, PasswordType type, const int counter) const;
private:
- QString m_key;
+ QByteArray m_key;
QString m_name;
};
diff --git a/translations/harbour-mpw.ts b/translations/harbour-mpw.ts
index 363db1e41896f2f9ba40c1a8cebf6b96a300330f..0b6f8ac766d1d2f1aaa29e9c8bbf92c4164cc94c 100644
--- a/translations/harbour-mpw.ts
+++ b/translations/harbour-mpw.ts
@@ -39,7 +39,7 @@
-
+
Please fill your name and master key in the Settings page!