Move keystore message constants and use a messenger.
* The keystore backend will (at least for the time being) reside in a separate server. This one can be reached via normal messaging, so use a BMessenger for sending key messages. * Move the message constants from RegistrarDefs.h into a new KeyStoreDefs.h that also contains the server signature. * Update the message constants to reflect the new situation.
This commit is contained in:
committed by
Ryan Leavengood
parent
1c3996496b
commit
005a15bbcd
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012, Haiku, Inc. All Rights Reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Michael Lotz, [email protected]
|
||||||
|
*/
|
||||||
|
#ifndef _KEY_STORE_DEFS_H
|
||||||
|
#define _KEY_STORE_DEFS_H
|
||||||
|
|
||||||
|
|
||||||
|
namespace BPrivate {
|
||||||
|
|
||||||
|
|
||||||
|
const char* kKeyStoreServerSignature
|
||||||
|
= "application/x-vnd.Haiku-keystore_server";
|
||||||
|
|
||||||
|
|
||||||
|
enum {
|
||||||
|
// Replies
|
||||||
|
KEY_STORE_SUCCESS = 'KRok',
|
||||||
|
KEY_STORE_ERROR = 'KRer',
|
||||||
|
KEY_STORE_RESULT = 'KRrs',
|
||||||
|
|
||||||
|
// KeyStore requests
|
||||||
|
KEY_STORE_GET_KEY = 'KgtK',
|
||||||
|
KEY_STORE_GET_NEXT_KEY = 'KgnK',
|
||||||
|
KEY_STORE_ADD_KEY = 'KadK',
|
||||||
|
KEY_STORE_REMOVE_KEY = 'KrmK',
|
||||||
|
KEY_STORE_ADD_KEYRING = 'KaKR',
|
||||||
|
KEY_STORE_REMOVE_KEYRING = 'KrKR',
|
||||||
|
KEY_STORE_GET_NEXT_KEYRING = 'KnKR',
|
||||||
|
KEY_STORE_SET_MASTER_KEY = 'KsMK',
|
||||||
|
KEY_STORE_REMOVE_MASTER_KEY = 'KrMK',
|
||||||
|
KEY_STORE_ADD_KEYRING_TO_MASTER = 'KarM',
|
||||||
|
KEY_STORE_REMOVE_KEYRING_FROM_MASTER = 'KrrM',
|
||||||
|
KEY_STORE_GET_NEXT_MASTER_KEYRING = 'KnrM',
|
||||||
|
KEY_STORE_IS_KEYRING_ACCESSIBLE = 'KiaR',
|
||||||
|
KEY_STORE_REVOKE_ACCESS = 'KvaR',
|
||||||
|
KEY_STORE_REVOKE_MASTER_ACCESS = 'KvaM',
|
||||||
|
KEY_STORE_GET_NEXT_APPLICATION = 'KnKA',
|
||||||
|
KEY_STORE_REMOVE_APPLICATION = 'KrKA',
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace BPrivate
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _KEY_STORE_DEFS_H
|
||||||
@@ -122,25 +122,6 @@ enum {
|
|||||||
B_REG_GET_USER_GROUPS = 'rgug',
|
B_REG_GET_USER_GROUPS = 'rgug',
|
||||||
B_REG_UPDATE_USER = 'ruus',
|
B_REG_UPDATE_USER = 'ruus',
|
||||||
B_REG_UPDATE_GROUP = 'rugr',
|
B_REG_UPDATE_GROUP = 'rugr',
|
||||||
|
|
||||||
// KeyStore requests
|
|
||||||
B_REG_GET_KEY = 'rgtK',
|
|
||||||
B_REG_GET_NEXT_KEY = 'rgnK',
|
|
||||||
B_REG_ADD_KEY = 'radK',
|
|
||||||
B_REG_REMOVE_KEY = 'rrmK',
|
|
||||||
B_REG_ADD_KEYRING = 'raKR',
|
|
||||||
B_REG_REMOVE_KEYRING = 'rrKR',
|
|
||||||
B_REG_GET_NEXT_KEYRING = 'rnKR',
|
|
||||||
B_REG_SET_MASTER_KEY = 'rsMK',
|
|
||||||
B_REG_REMOVE_MASTER_KEY = 'rrMK',
|
|
||||||
B_REG_ADD_KEYRING_TO_MASTER = 'rarM',
|
|
||||||
B_REG_REMOVE_KEYRING_FROM_MASTER = 'rrrM',
|
|
||||||
B_REG_GET_NEXT_MASTER_KEYRING = 'rnrM',
|
|
||||||
B_REG_IS_KEYRING_ACCESSIBLE = 'riaR',
|
|
||||||
B_REG_REVOKE_ACCESS = 'rvaR',
|
|
||||||
B_REG_REVOKE_MASTER_ACCESS = 'rvaM',
|
|
||||||
B_REG_GET_NEXT_APPLICATION = 'rnKA',
|
|
||||||
B_REG_REMOVE_APPLICATION = 'rrKA',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// B_REG_MIME_SET_PARAM "which" constants
|
// B_REG_MIME_SET_PARAM "which" constants
|
||||||
|
|||||||
+26
-21
@@ -6,8 +6,9 @@
|
|||||||
|
|
||||||
#include <KeyStore.h>
|
#include <KeyStore.h>
|
||||||
|
|
||||||
#include <RegistrarDefs.h>
|
#include <KeyStoreDefs.h>
|
||||||
#include <RosterPrivate.h>
|
|
||||||
|
#include <Messenger.h>
|
||||||
|
|
||||||
|
|
||||||
using namespace BPrivate;
|
using namespace BPrivate;
|
||||||
@@ -75,7 +76,7 @@ BKeyStore::GetKey(const char* keyring, BKeyType type, BKeyPurpose purpose,
|
|||||||
const char* identifier, const char* secondaryIdentifier,
|
const char* identifier, const char* secondaryIdentifier,
|
||||||
bool secondaryIdentifierOptional, BKey& key)
|
bool secondaryIdentifierOptional, BKey& key)
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_GET_KEY);
|
BMessage message(KEY_STORE_GET_KEY);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
message.AddUInt32("type", type);
|
message.AddUInt32("type", type);
|
||||||
message.AddUInt32("purpose", purpose);
|
message.AddUInt32("purpose", purpose);
|
||||||
@@ -110,7 +111,7 @@ BKeyStore::AddKey(const char* keyring, const BKey& key)
|
|||||||
if (key._Flatten(keyMessage) != B_OK)
|
if (key._Flatten(keyMessage) != B_OK)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
BMessage message(B_REG_ADD_KEY);
|
BMessage message(KEY_STORE_ADD_KEY);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
message.AddMessage("key", &keyMessage);
|
message.AddMessage("key", &keyMessage);
|
||||||
|
|
||||||
@@ -132,7 +133,7 @@ BKeyStore::RemoveKey(const char* keyring, const BKey& key)
|
|||||||
if (key._Flatten(keyMessage) != B_OK)
|
if (key._Flatten(keyMessage) != B_OK)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
BMessage message(B_REG_REMOVE_KEY);
|
BMessage message(KEY_STORE_REMOVE_KEY);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
message.AddMessage("key", &keyMessage);
|
message.AddMessage("key", &keyMessage);
|
||||||
|
|
||||||
@@ -166,7 +167,7 @@ status_t
|
|||||||
BKeyStore::GetNextKey(const char* keyring, BKeyType type, BKeyPurpose purpose,
|
BKeyStore::GetNextKey(const char* keyring, BKeyType type, BKeyPurpose purpose,
|
||||||
uint32& cookie, BKey& key)
|
uint32& cookie, BKey& key)
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_GET_NEXT_KEY);
|
BMessage message(KEY_STORE_GET_NEXT_KEY);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
message.AddUInt32("type", type);
|
message.AddUInt32("type", type);
|
||||||
message.AddUInt32("purpose", purpose);
|
message.AddUInt32("purpose", purpose);
|
||||||
@@ -195,7 +196,7 @@ BKeyStore::AddKeyring(const char* keyring, const BKey& key)
|
|||||||
if (key._Flatten(keyMessage) != B_OK)
|
if (key._Flatten(keyMessage) != B_OK)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
BMessage message(B_REG_ADD_KEYRING);
|
BMessage message(KEY_STORE_ADD_KEYRING);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
message.AddMessage("key", &keyMessage);
|
message.AddMessage("key", &keyMessage);
|
||||||
|
|
||||||
@@ -206,7 +207,7 @@ BKeyStore::AddKeyring(const char* keyring, const BKey& key)
|
|||||||
status_t
|
status_t
|
||||||
BKeyStore::RemoveKeyring(const char* keyring)
|
BKeyStore::RemoveKeyring(const char* keyring)
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_REMOVE_KEYRING);
|
BMessage message(KEY_STORE_REMOVE_KEYRING);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
return _SendKeyMessage(message, NULL);
|
return _SendKeyMessage(message, NULL);
|
||||||
}
|
}
|
||||||
@@ -215,7 +216,7 @@ BKeyStore::RemoveKeyring(const char* keyring)
|
|||||||
status_t
|
status_t
|
||||||
BKeyStore::GetNextKeyring(uint32& cookie, BString& keyring)
|
BKeyStore::GetNextKeyring(uint32& cookie, BString& keyring)
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_GET_NEXT_KEYRING);
|
BMessage message(KEY_STORE_GET_NEXT_KEYRING);
|
||||||
message.AddUInt32("cookie", cookie);
|
message.AddUInt32("cookie", cookie);
|
||||||
|
|
||||||
BMessage reply;
|
BMessage reply;
|
||||||
@@ -240,7 +241,7 @@ BKeyStore::SetMasterKey(const BKey& key)
|
|||||||
if (key._Flatten(keyMessage) != B_OK)
|
if (key._Flatten(keyMessage) != B_OK)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
BMessage message(B_REG_SET_MASTER_KEY);
|
BMessage message(KEY_STORE_SET_MASTER_KEY);
|
||||||
message.AddMessage("key", &keyMessage);
|
message.AddMessage("key", &keyMessage);
|
||||||
|
|
||||||
return _SendKeyMessage(message, NULL);
|
return _SendKeyMessage(message, NULL);
|
||||||
@@ -250,7 +251,7 @@ BKeyStore::SetMasterKey(const BKey& key)
|
|||||||
status_t
|
status_t
|
||||||
BKeyStore::RemoveMasterKey()
|
BKeyStore::RemoveMasterKey()
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_REMOVE_MASTER_KEY);
|
BMessage message(KEY_STORE_REMOVE_MASTER_KEY);
|
||||||
return _SendKeyMessage(message, NULL);
|
return _SendKeyMessage(message, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -258,7 +259,7 @@ BKeyStore::RemoveMasterKey()
|
|||||||
status_t
|
status_t
|
||||||
BKeyStore::AddKeyringToMaster(const char* keyring)
|
BKeyStore::AddKeyringToMaster(const char* keyring)
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_ADD_KEYRING_TO_MASTER);
|
BMessage message(KEY_STORE_ADD_KEYRING_TO_MASTER);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
return _SendKeyMessage(message, NULL);
|
return _SendKeyMessage(message, NULL);
|
||||||
}
|
}
|
||||||
@@ -267,7 +268,7 @@ BKeyStore::AddKeyringToMaster(const char* keyring)
|
|||||||
status_t
|
status_t
|
||||||
BKeyStore::RemoveKeyringFromMaster(const char* keyring)
|
BKeyStore::RemoveKeyringFromMaster(const char* keyring)
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_REMOVE_KEYRING_FROM_MASTER);
|
BMessage message(KEY_STORE_REMOVE_KEYRING_FROM_MASTER);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
return _SendKeyMessage(message, NULL);
|
return _SendKeyMessage(message, NULL);
|
||||||
}
|
}
|
||||||
@@ -276,7 +277,7 @@ BKeyStore::RemoveKeyringFromMaster(const char* keyring)
|
|||||||
status_t
|
status_t
|
||||||
BKeyStore::GetNextMasterKeyring(uint32& cookie, BString& keyring)
|
BKeyStore::GetNextMasterKeyring(uint32& cookie, BString& keyring)
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_GET_NEXT_MASTER_KEYRING);
|
BMessage message(KEY_STORE_GET_NEXT_MASTER_KEYRING);
|
||||||
message.AddUInt32("cookie", cookie);
|
message.AddUInt32("cookie", cookie);
|
||||||
|
|
||||||
BMessage reply;
|
BMessage reply;
|
||||||
@@ -297,7 +298,7 @@ BKeyStore::GetNextMasterKeyring(uint32& cookie, BString& keyring)
|
|||||||
bool
|
bool
|
||||||
BKeyStore::IsKeyringAccessible(const char* keyring)
|
BKeyStore::IsKeyringAccessible(const char* keyring)
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_IS_KEYRING_ACCESSIBLE);
|
BMessage message(KEY_STORE_IS_KEYRING_ACCESSIBLE);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
return _SendKeyMessage(message, NULL) == B_OK;
|
return _SendKeyMessage(message, NULL) == B_OK;
|
||||||
}
|
}
|
||||||
@@ -306,7 +307,7 @@ BKeyStore::IsKeyringAccessible(const char* keyring)
|
|||||||
status_t
|
status_t
|
||||||
BKeyStore::RevokeAccess(const char* keyring)
|
BKeyStore::RevokeAccess(const char* keyring)
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_REVOKE_ACCESS);
|
BMessage message(KEY_STORE_REVOKE_ACCESS);
|
||||||
message.AddString("keyring", keyring);
|
message.AddString("keyring", keyring);
|
||||||
return _SendKeyMessage(message, NULL);
|
return _SendKeyMessage(message, NULL);
|
||||||
}
|
}
|
||||||
@@ -315,7 +316,7 @@ BKeyStore::RevokeAccess(const char* keyring)
|
|||||||
status_t
|
status_t
|
||||||
BKeyStore::RevokeMasterAccess()
|
BKeyStore::RevokeMasterAccess()
|
||||||
{
|
{
|
||||||
BMessage message(B_REG_REVOKE_MASTER_ACCESS);
|
BMessage message(KEY_STORE_REVOKE_MASTER_ACCESS);
|
||||||
return _SendKeyMessage(message, NULL);
|
return _SendKeyMessage(message, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,7 +333,7 @@ BKeyStore::GetNextApplication(const BKey& key, uint32& cookie,
|
|||||||
if (key._Flatten(keyMessage) != B_OK)
|
if (key._Flatten(keyMessage) != B_OK)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
BMessage message(B_REG_GET_NEXT_APPLICATION);
|
BMessage message(KEY_STORE_GET_NEXT_APPLICATION);
|
||||||
message.AddMessage("key", &keyMessage);
|
message.AddMessage("key", &keyMessage);
|
||||||
message.AddUInt32("cookie", cookie);
|
message.AddUInt32("cookie", cookie);
|
||||||
|
|
||||||
@@ -355,7 +356,7 @@ BKeyStore::RemoveApplication(const BKey& key, const char* signature)
|
|||||||
if (key._Flatten(keyMessage) != B_OK)
|
if (key._Flatten(keyMessage) != B_OK)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
BMessage message(B_REG_REMOVE_APPLICATION);
|
BMessage message(KEY_STORE_REMOVE_APPLICATION);
|
||||||
message.AddMessage("key", &keyMessage);
|
message.AddMessage("key", &keyMessage);
|
||||||
message.AddString("signature", signature);
|
message.AddString("signature", signature);
|
||||||
|
|
||||||
@@ -390,10 +391,14 @@ BKeyStore::_SendKeyMessage(BMessage& message, BMessage* reply) const
|
|||||||
if (reply == NULL)
|
if (reply == NULL)
|
||||||
reply = &localReply;
|
reply = &localReply;
|
||||||
|
|
||||||
if (BRoster::Private().SendTo(&message, reply, false) != B_OK)
|
BMessenger messenger(kKeyStoreServerSignature);
|
||||||
|
if (!messenger.IsValid())
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
if (reply->what != B_REG_SUCCESS) {
|
if (messenger.SendMessage(&message, reply) != B_OK)
|
||||||
|
return B_ERROR;
|
||||||
|
|
||||||
|
if (reply->what != KEY_STORE_SUCCESS) {
|
||||||
status_t result = B_ERROR;
|
status_t result = B_ERROR;
|
||||||
if (reply->FindInt32("result", &result) != B_OK)
|
if (reply->FindInt32("result", &result) != B_OK)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|||||||
Reference in New Issue
Block a user