From 1dd765c92c41aeebcc877371e90a795ed4a78703 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 8 Jan 2012 01:32:11 +0100 Subject: [PATCH] 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. --- src/servers/keystore/KeyStoreServer.cpp | 2 +- src/servers/keystore/Keyring.cpp | 21 ++++++++++++++++----- src/servers/keystore/Keyring.h | 11 +++++++---- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/servers/keystore/KeyStoreServer.cpp b/src/servers/keystore/KeyStoreServer.cpp index f007cc0e4f..c84a8074fc 100644 --- a/src/servers/keystore/KeyStoreServer.cpp +++ b/src/servers/keystore/KeyStoreServer.cpp @@ -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; diff --git a/src/servers/keystore/Keyring.cpp b/src/servers/keystore/Keyring.cpp index e337f41b48..fc77baf9ea 100644 --- a/src/servers/keystore/Keyring.cpp +++ b/src/servers/keystore/Keyring.cpp @@ -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; diff --git a/src/servers/keystore/Keyring.h b/src/servers/keystore/Keyring.h index eb3ad609a9..bdd426db1a 100644 --- a/src/servers/keystore/Keyring.h +++ b/src/servers/keystore/Keyring.h @@ -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; };