Let the KeyRequestWindow return a flattened BPasswordKey.

Also provide the keyring string separately instead of abusing the
output key message.
This commit is contained in:
Michael Lotz
2013-03-05 11:04:07 -05:00
committed by Ryan Leavengood
parent f16fef70be
commit 90013c82e8
4 changed files with 17 additions and 19 deletions
+9 -12
View File
@@ -12,6 +12,7 @@
#include <GridView.h> #include <GridView.h>
#include <GroupLayout.h> #include <GroupLayout.h>
#include <GroupView.h> #include <GroupView.h>
#include <Key.h>
#include <MenuField.h> #include <MenuField.h>
#include <MenuItem.h> #include <MenuItem.h>
#include <NetworkDevice.h> #include <NetworkDevice.h>
@@ -103,21 +104,16 @@ public:
} }
void 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) Complete(BMessage& keyMessage)
{ {
keyMessage.RemoveName("password"); BPasswordKey password(fPassword->Text(), B_KEY_PURPOSE_KEYRING, "");
keyMessage.AddString("password", fPassword->Text()); return password.Flatten(keyMessage);
keyMessage.RemoveName("persistent");
keyMessage.AddBool("persistent", fPersist->Value() != 0);
} }
private: private:
@@ -193,9 +189,9 @@ KeyRequestWindow::MessageReceived(BMessage* message)
status_t status_t
KeyRequestWindow::RequestKey(BMessage& keyMessage) KeyRequestWindow::RequestKey(const BString& keyringName, BMessage& keyMessage)
{ {
fRequestView->SetUp(keyMessage); fRequestView->SetUp(keyringName);
CenterOnScreen(); CenterOnScreen();
Show(); Show();
@@ -204,7 +200,8 @@ KeyRequestWindow::RequestKey(BMessage& keyMessage)
; ;
status_t result = fResult; status_t result = fResult;
fRequestView->Complete(keyMessage); if (result == B_OK)
result = fRequestView->Complete(keyMessage);
LockLooper(); LockLooper();
Quit(); Quit();
+2 -1
View File
@@ -22,7 +22,8 @@ virtual void DispatchMessage(BMessage* message,
BHandler* handler); BHandler* handler);
virtual void MessageReceived(BMessage* message); virtual void MessageReceived(BMessage* message);
status_t RequestKey(BMessage& keyMessage); status_t RequestKey(const BString& keyringName,
BMessage& keyMessage);
private: private:
KeyRequestView* fRequestView; KeyRequestView* fRequestView;
+3 -4
View File
@@ -472,8 +472,7 @@ KeyStoreServer::_AccessKeyring(Keyring& keyring)
} }
// No key, we need to request one from the user. // No key, we need to request one from the user.
keyMessage.AddString("keyring", keyring.Name()); status_t result = _RequestKey(keyring.Name(), keyMessage);
status_t result = _RequestKey(keyMessage);
if (result != B_OK) if (result != B_OK)
return result; return result;
@@ -482,13 +481,13 @@ KeyStoreServer::_AccessKeyring(Keyring& keyring)
status_t status_t
KeyStoreServer::_RequestKey(BMessage& keyMessage) KeyStoreServer::_RequestKey(const BString& keyringName, BMessage& keyMessage)
{ {
KeyRequestWindow* requestWindow = new(std::nothrow) KeyRequestWindow(); KeyRequestWindow* requestWindow = new(std::nothrow) KeyRequestWindow();
if (requestWindow == NULL) if (requestWindow == NULL)
return B_NO_MEMORY; return B_NO_MEMORY;
return requestWindow->RequestKey(keyMessage); return requestWindow->RequestKey(keyringName, keyMessage);
} }
+2 -1
View File
@@ -36,7 +36,8 @@ private:
status_t _AccessKeyring(Keyring& keyring); status_t _AccessKeyring(Keyring& keyring);
status_t _RequestKey(BMessage& keyMessage); status_t _RequestKey(const BString& keyringName,
BMessage& keyMessage);
Keyring* fDefaultKeyring; Keyring* fDefaultKeyring;
KeyringList fKeyrings; KeyringList fKeyrings;