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!