From 90013c82e83a7a25e5d012daff40e38db5d5f741 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 8 Jan 2012 01:34:20 +0100 Subject: [PATCH] Let the KeyRequestWindow return a flattened BPasswordKey. Also provide the keyring string separately instead of abusing the output key message. --- src/servers/keystore/KeyRequestWindow.cpp | 23 ++++++++++------------- src/servers/keystore/KeyRequestWindow.h | 3 ++- src/servers/keystore/KeyStoreServer.cpp | 7 +++---- src/servers/keystore/KeyStoreServer.h | 3 ++- 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/servers/keystore/KeyRequestWindow.cpp b/src/servers/keystore/KeyRequestWindow.cpp index 22355609d9..f8c7ecf1c5 100644 --- a/src/servers/keystore/KeyRequestWindow.cpp +++ b/src/servers/keystore/KeyRequestWindow.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -103,21 +104,16 @@ public: } void - SetUp(const BMessage& keyMessage) + SetUp(const BString& keyringName) { - BString keyringName; - if (keyMessage.FindString("keyring", &keyringName) == B_OK) - fKeyringName->SetText(keyringName); + fKeyringName->SetText(keyringName); } - void + status_t Complete(BMessage& keyMessage) { - keyMessage.RemoveName("password"); - keyMessage.AddString("password", fPassword->Text()); - - keyMessage.RemoveName("persistent"); - keyMessage.AddBool("persistent", fPersist->Value() != 0); + BPasswordKey password(fPassword->Text(), B_KEY_PURPOSE_KEYRING, ""); + return password.Flatten(keyMessage); } private: @@ -193,9 +189,9 @@ KeyRequestWindow::MessageReceived(BMessage* message) status_t -KeyRequestWindow::RequestKey(BMessage& keyMessage) +KeyRequestWindow::RequestKey(const BString& keyringName, BMessage& keyMessage) { - fRequestView->SetUp(keyMessage); + fRequestView->SetUp(keyringName); CenterOnScreen(); Show(); @@ -204,7 +200,8 @@ KeyRequestWindow::RequestKey(BMessage& keyMessage) ; status_t result = fResult; - fRequestView->Complete(keyMessage); + if (result == B_OK) + result = fRequestView->Complete(keyMessage); LockLooper(); Quit(); diff --git a/src/servers/keystore/KeyRequestWindow.h b/src/servers/keystore/KeyRequestWindow.h index c5f89c79c1..8c535d6e78 100644 --- a/src/servers/keystore/KeyRequestWindow.h +++ b/src/servers/keystore/KeyRequestWindow.h @@ -22,7 +22,8 @@ virtual void DispatchMessage(BMessage* message, BHandler* handler); virtual void MessageReceived(BMessage* message); - status_t RequestKey(BMessage& keyMessage); + status_t RequestKey(const BString& keyringName, + BMessage& keyMessage); private: KeyRequestView* fRequestView; diff --git a/src/servers/keystore/KeyStoreServer.cpp b/src/servers/keystore/KeyStoreServer.cpp index f2bb22e669..3eda433198 100644 --- a/src/servers/keystore/KeyStoreServer.cpp +++ b/src/servers/keystore/KeyStoreServer.cpp @@ -472,8 +472,7 @@ KeyStoreServer::_AccessKeyring(Keyring& keyring) } // No key, we need to request one from the user. - keyMessage.AddString("keyring", keyring.Name()); - status_t result = _RequestKey(keyMessage); + status_t result = _RequestKey(keyring.Name(), keyMessage); if (result != B_OK) return result; @@ -482,13 +481,13 @@ KeyStoreServer::_AccessKeyring(Keyring& keyring) status_t -KeyStoreServer::_RequestKey(BMessage& keyMessage) +KeyStoreServer::_RequestKey(const BString& keyringName, BMessage& keyMessage) { KeyRequestWindow* requestWindow = new(std::nothrow) KeyRequestWindow(); if (requestWindow == NULL) return B_NO_MEMORY; - return requestWindow->RequestKey(keyMessage); + return requestWindow->RequestKey(keyringName, keyMessage); } diff --git a/src/servers/keystore/KeyStoreServer.h b/src/servers/keystore/KeyStoreServer.h index b0bff8a8dd..7729f92f5c 100644 --- a/src/servers/keystore/KeyStoreServer.h +++ b/src/servers/keystore/KeyStoreServer.h @@ -36,7 +36,8 @@ private: status_t _AccessKeyring(Keyring& keyring); - status_t _RequestKey(BMessage& keyMessage); + status_t _RequestKey(const BString& keyringName, + BMessage& keyMessage); Keyring* fDefaultKeyring; KeyringList fKeyrings;