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)
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)
return B_NO_MEMORY;
+16 -5
View File
@@ -7,11 +7,13 @@
#include "Keyring.h"
Keyring::Keyring(const char* name, const BMessage& data)
Keyring::Keyring(const char* name, const BMessage& data,
const BMessage* keyMessage)
:
fName(name),
fData(data),
fAccessible(false)
fKeyMessage(*keyMessage),
fAccessible(keyMessage != NULL)
{
}
@@ -24,6 +26,7 @@ Keyring::~Keyring()
status_t
Keyring::Access(const BMessage& keyMessage)
{
fKeyMessage = keyMessage;
fAccessible = true;
return B_OK;
}
@@ -32,20 +35,28 @@ Keyring::Access(const BMessage& keyMessage)
void
Keyring::RevokeAccess()
{
fKeyMessage.MakeEmpty();
fAccessible = false;
}
bool
Keyring::IsAccessible()
Keyring::IsAccessible() const
{
return fAccessible;
}
const BMessage&
Keyring::KeyMessage() const
{
return fKeyMessage;
}
status_t
Keyring::FindKey(const BString& identifier, const BString& secondaryIdentifier,
bool secondaryIdentifierOptional, BMessage* _foundKeyMessage)
bool secondaryIdentifierOptional, BMessage* _foundKeyMessage) const
{
if (!fAccessible)
return B_NOT_ALLOWED;
@@ -91,7 +102,7 @@ Keyring::FindKey(const BString& identifier, const BString& secondaryIdentifier,
status_t
Keyring::FindKey(BKeyType type, BKeyPurpose purpose, uint32 index,
BMessage& _foundKeyMessage)
BMessage& _foundKeyMessage) const
{
if (!fAccessible)
return B_NOT_ALLOWED;
+7 -4
View File
@@ -13,7 +13,8 @@
class Keyring {
public:
Keyring(const char* name,
const BMessage& data);
const BMessage& data,
const BMessage* keyMessage = NULL);
~Keyring();
const char* Name() const { return fName; }
@@ -21,15 +22,16 @@ public:
status_t Access(const BMessage& keyMessage);
void RevokeAccess();
bool IsAccessible();
bool IsAccessible() const;
const BMessage& KeyMessage() const;
status_t FindKey(const BString& identifier,
const BString& secondaryIdentifier,
bool secondaryIdentifierOptional,
BMessage* _foundKeyMessage);
BMessage* _foundKeyMessage) const;
status_t FindKey(BKeyType type, BKeyPurpose purpose,
uint32 index,
BMessage& _foundKeyMessage);
BMessage& _foundKeyMessage) const;
status_t AddKey(const BString& identifier,
const BString& secondaryIdentifier,
@@ -45,6 +47,7 @@ static int Compare(const BString* name,
private:
BString fName;
BMessage fData;
BMessage fKeyMessage;
bool fAccessible;
};