Store the key message from access/creation.

* Allow creating a Keyring with a key message.
* Store the key message when accessing.
* Add a few missing consts.
This commit is contained in:
Michael Lotz
2013-03-05 11:04:04 -05:00
committed by Ryan Leavengood
parent 94f897deea
commit 1dd765c92c
3 changed files with 24 additions and 10 deletions
+1 -1
View File
@@ -377,7 +377,7 @@ KeyStoreServer::_AddKeyring(const BString& name, const BMessage& keyMessage)
if (_FindKeyring(name) != NULL) if (_FindKeyring(name) != NULL)
return B_NAME_IN_USE; return B_NAME_IN_USE;
Keyring* keyring = new(std::nothrow) Keyring(name, BMessage()); Keyring* keyring = new(std::nothrow) Keyring(name, BMessage(), &keyMessage);
if (keyring == NULL) if (keyring == NULL)
return B_NO_MEMORY; return B_NO_MEMORY;
+16 -5
View File
@@ -7,11 +7,13 @@
#include "Keyring.h" #include "Keyring.h"
Keyring::Keyring(const char* name, const BMessage& data) Keyring::Keyring(const char* name, const BMessage& data,
const BMessage* keyMessage)
: :
fName(name), fName(name),
fData(data), fData(data),
fAccessible(false) fKeyMessage(*keyMessage),
fAccessible(keyMessage != NULL)
{ {
} }
@@ -24,6 +26,7 @@ Keyring::~Keyring()
status_t status_t
Keyring::Access(const BMessage& keyMessage) Keyring::Access(const BMessage& keyMessage)
{ {
fKeyMessage = keyMessage;
fAccessible = true; fAccessible = true;
return B_OK; return B_OK;
} }
@@ -32,20 +35,28 @@ Keyring::Access(const BMessage& keyMessage)
void void
Keyring::RevokeAccess() Keyring::RevokeAccess()
{ {
fKeyMessage.MakeEmpty();
fAccessible = false; fAccessible = false;
} }
bool bool
Keyring::IsAccessible() Keyring::IsAccessible() const
{ {
return fAccessible; return fAccessible;
} }
const BMessage&
Keyring::KeyMessage() const
{
return fKeyMessage;
}
status_t status_t
Keyring::FindKey(const BString& identifier, const BString& secondaryIdentifier, Keyring::FindKey(const BString& identifier, const BString& secondaryIdentifier,
bool secondaryIdentifierOptional, BMessage* _foundKeyMessage) bool secondaryIdentifierOptional, BMessage* _foundKeyMessage) const
{ {
if (!fAccessible) if (!fAccessible)
return B_NOT_ALLOWED; return B_NOT_ALLOWED;
@@ -91,7 +102,7 @@ Keyring::FindKey(const BString& identifier, const BString& secondaryIdentifier,
status_t status_t
Keyring::FindKey(BKeyType type, BKeyPurpose purpose, uint32 index, Keyring::FindKey(BKeyType type, BKeyPurpose purpose, uint32 index,
BMessage& _foundKeyMessage) BMessage& _foundKeyMessage) const
{ {
if (!fAccessible) if (!fAccessible)
return B_NOT_ALLOWED; return B_NOT_ALLOWED;
+7 -4
View File
@@ -13,7 +13,8 @@
class Keyring { class Keyring {
public: public:
Keyring(const char* name, Keyring(const char* name,
const BMessage& data); const BMessage& data,
const BMessage* keyMessage = NULL);
~Keyring(); ~Keyring();
const char* Name() const { return fName; } const char* Name() const { return fName; }
@@ -21,15 +22,16 @@ public:
status_t Access(const BMessage& keyMessage); status_t Access(const BMessage& keyMessage);
void RevokeAccess(); void RevokeAccess();
bool IsAccessible(); bool IsAccessible() const;
const BMessage& KeyMessage() const;
status_t FindKey(const BString& identifier, status_t FindKey(const BString& identifier,
const BString& secondaryIdentifier, const BString& secondaryIdentifier,
bool secondaryIdentifierOptional, bool secondaryIdentifierOptional,
BMessage* _foundKeyMessage); BMessage* _foundKeyMessage) const;
status_t FindKey(BKeyType type, BKeyPurpose purpose, status_t FindKey(BKeyType type, BKeyPurpose purpose,
uint32 index, uint32 index,
BMessage& _foundKeyMessage); BMessage& _foundKeyMessage) const;
status_t AddKey(const BString& identifier, status_t AddKey(const BString& identifier,
const BString& secondaryIdentifier, const BString& secondaryIdentifier,
@@ -45,6 +47,7 @@ static int Compare(const BString* name,
private: private:
BString fName; BString fName;
BMessage fData; BMessage fData;
BMessage fKeyMessage;
bool fAccessible; bool fAccessible;
}; };