34 #include <QCryptographicHash> 39 ArnSyncLogin::ArnSyncLogin()
44 void ArnSyncLogin::addAccess(
const QString& userName,
const QString& password,
Arn::Allow allow)
46 AccessSlot accessSlot;
47 accessSlot.userName = userName;
48 accessSlot.pwHash = isPwHash( password) ? password : passwordHash( password);
49 accessSlot.allow = allow;
51 _accessTab.insert( userName, accessSlot);
55 const ArnSyncLogin::AccessSlot* ArnSyncLogin::findAccess(
const QString& userName)
57 if (!_accessTab.contains( userName))
return 0;
59 return &_accessTab[ userName];
63 QByteArray ArnSyncLogin::pwHashXchg(uint saltA, uint saltB,
const QString& password)
65 QByteArray pwSalted = password.toUtf8()
66 +
"." + QByteArray::number( saltA, 16)
67 +
"." + QByteArray::number( saltB, 16);
69 QCryptographicHash hasher( QCryptographicHash::Sha1);
70 hasher.addData( pwSalted);
71 return hasher.result().toHex();
75 QString ArnSyncLogin::passwordHash(
const QString& password)
77 QCryptographicHash hasher( QCryptographicHash::Sha1);
78 hasher.addData( password.toUtf8());
79 QByteArray pwHashed = hasher.result().toBase64();
81 pwHashed =
"{" + pwHashed +
"}";
82 return QString::fromLatin1( pwHashed.constData(), pwHashed.size());
86 bool ArnSyncLogin::isPwHash(
const QString& password)
88 return password.startsWith(
"{") && password.endsWith(
"}");