Browse Source

Use servername instead of UUID for credential store.

Unfortunately, the UUID is used in such a way that makes it unlikely
to be unique.  The server name is the current best option.
Joseph Davies 10 years ago
parent
commit
0ee8d02852
  1. 6
      Sources/Plasma/FeatureLib/pfPasswordStore/pfPasswordStore_Mac.cpp
  2. 6
      Sources/Plasma/FeatureLib/pfPasswordStore/pfPasswordStore_Win.cpp

6
Sources/Plasma/FeatureLib/pfPasswordStore/pfPasswordStore_Mac.cpp

@ -43,7 +43,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "pfPasswordStore.h" #include "pfPasswordStore.h"
#include "pfPasswordStore_impl.h" #include "pfPasswordStore_impl.h"
#include "plProduct.h" #include "pnNetBase/pnNbSrvs.h"
#include <Security/Security.h> #include <Security/Security.h>
@ -52,7 +52,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
*****************************************************************************/ *****************************************************************************/
const plString pfMacPasswordStore::GetPassword(const plString& username) const plString pfMacPasswordStore::GetPassword(const plString& username)
{ {
plString service = plProduct::UUID(); plString service = GetServerDisplayName();
void* passwd = nullptr; void* passwd = nullptr;
uint32_t passwd_len = 0; uint32_t passwd_len = 0;
@ -78,7 +78,7 @@ const plString pfMacPasswordStore::GetPassword(const plString& username)
bool pfMacPasswordStore::SetPassword(const plString& username, const plString& password) bool pfMacPasswordStore::SetPassword(const plString& username, const plString& password)
{ {
plString service = plProduct::UUID(); plString service = GetServerDisplayName();
return SecKeychainAddGenericPassword(nullptr, return SecKeychainAddGenericPassword(nullptr,
service.GetSize(), service.GetSize(),

6
Sources/Plasma/FeatureLib/pfPasswordStore/pfPasswordStore_Win.cpp

@ -43,8 +43,8 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "pfPasswordStore.h" #include "pfPasswordStore.h"
#include "pfPasswordStore_impl.h" #include "pfPasswordStore_impl.h"
#include "plProduct.h"
#include "plFormat.h" #include "plFormat.h"
#include "pnNetBase/pnNbSrvs.h"
#include "hsWindows.h" #include "hsWindows.h"
#include <wincred.h> #include <wincred.h>
@ -55,7 +55,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
const plString pfWin32PasswordStore::GetPassword(const plString& username) const plString pfWin32PasswordStore::GetPassword(const plString& username)
{ {
PCREDENTIALW credential; PCREDENTIALW credential;
plString target = plFormat("%s__%s", plProduct::UUID(), username); plString target = plFormat("{}__{}", GetServerDisplayName(), username);
plString password = plString::Null; plString password = plString::Null;
if (!CredReadW(target.ToWchar().GetData(), CRED_TYPE_GENERIC, 0, &credential)) { if (!CredReadW(target.ToWchar().GetData(), CRED_TYPE_GENERIC, 0, &credential)) {
@ -74,7 +74,7 @@ const plString pfWin32PasswordStore::GetPassword(const plString& username)
bool pfWin32PasswordStore::SetPassword(const plString& username, const plString& password) bool pfWin32PasswordStore::SetPassword(const plString& username, const plString& password)
{ {
CREDENTIALW credential; CREDENTIALW credential;
plString target = plFormat("%s__%s", plProduct::UUID(), username); plString target = plFormat("{}__{}", GetServerDisplayName(), username);
if (password.IsNull()) { if (password.IsNull()) {
if (CredDeleteW(target.ToWchar().GetData(), CRED_TYPE_GENERIC, 0)) { if (CredDeleteW(target.ToWchar().GetData(), CRED_TYPE_GENERIC, 0)) {

Loading…
Cancel
Save