mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-06-18 19:39:30 -04:00
Added RsTlvKeySignatureSet to rstlvkeys
- added test to test/serialiser - Updated all relevant gxs test (ran whole suite, added gxsdata_test, tests meta serilisation, to pro file) Updated flag in rsgxsflags to account for authentication and private types Changed msgId/grpId generation to sha1 hash removed photoservice VEG file from pro file git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5630 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
b06214b779
commit
19e856c2a8
22 changed files with 467 additions and 202 deletions
|
@ -48,7 +48,7 @@ RSA *GxsSecurity::extractPublicKey(RsTlvSecurityKey& key)
|
|||
}
|
||||
|
||||
|
||||
bool GxsSecurity::validateNxsMsg(RsNxsMsg *msg)
|
||||
bool GxsSecurity::validateNxsMsg(RsNxsMsg *msg, RsGxsGrpMetaData *grpMeta)
|
||||
{
|
||||
|
||||
return false;
|
||||
|
|
|
@ -126,7 +126,7 @@ public:
|
|||
* @param msg
|
||||
* @return false if verfication of signature is not passed
|
||||
*/
|
||||
static bool validateNxsMsg(RsNxsMsg *msg);
|
||||
static bool validateNxsMsg(RsNxsMsg *msg, RsGxsGrpMetaData* grpMeta);
|
||||
};
|
||||
|
||||
#endif // GXSSECURITY_H
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
#define KEY_NXS_IDENTITY std::string("identity")
|
||||
#define KEY_GRP_ID std::string("grpId")
|
||||
#define KEY_ORIG_GRP_ID std::string("origGrpId")
|
||||
#define KEY_IDENTITY_SIGN std::string("idSign")
|
||||
#define KEY_SIGN_SET std::string("signSet")
|
||||
#define KEY_TIME_STAMP std::string("timeStamp")
|
||||
#define KEY_NXS_FLAGS std::string("flags")
|
||||
#define KEY_NXS_META std::string("meta")
|
||||
|
@ -48,7 +48,6 @@
|
|||
|
||||
|
||||
// grp table columns
|
||||
#define KEY_ADMIN_SIGN std::string("adminSign")
|
||||
#define KEY_KEY_SET std::string("keySet")
|
||||
#define KEY_GRP_NAME std::string("grpName")
|
||||
#define KEY_GRP_SIGN_FLAGS std::string("signFlags")
|
||||
|
@ -62,7 +61,6 @@
|
|||
|
||||
|
||||
// msg table columns
|
||||
#define KEY_PUBLISH_SIGN std::string("publishSign")
|
||||
#define KEY_MSG_ID std::string("msgId")
|
||||
#define KEY_ORIG_MSG_ID std::string("origMsgId")
|
||||
#define KEY_MSG_PARENT_ID std::string("parentId")
|
||||
|
@ -90,34 +88,32 @@
|
|||
|
||||
// grp col numbers
|
||||
|
||||
#define COL_ADMIN_SIGN 5
|
||||
#define COL_KEY_SET 6
|
||||
#define COL_GRP_SUBCR_FLAG 7
|
||||
#define COL_GRP_POP 8
|
||||
#define COL_MSG_COUNT 9
|
||||
#define COL_GRP_STATUS 10
|
||||
#define COL_GRP_NAME 11
|
||||
#define COL_GRP_LAST_POST 12
|
||||
#define COL_ORIG_GRP_ID 13
|
||||
#define COL_GRP_SERV_STRING 14
|
||||
#define COL_GRP_SIGN_FLAGS 15
|
||||
#define COL_KEY_SET 5
|
||||
#define COL_GRP_SUBCR_FLAG 6
|
||||
#define COL_GRP_POP 7
|
||||
#define COL_MSG_COUNT 8
|
||||
#define COL_GRP_STATUS 9
|
||||
#define COL_GRP_NAME 10
|
||||
#define COL_GRP_LAST_POST 11
|
||||
#define COL_ORIG_GRP_ID 12
|
||||
#define COL_GRP_SERV_STRING 13
|
||||
#define COL_GRP_SIGN_FLAGS 14
|
||||
|
||||
// msg col numbers
|
||||
#define COL_PUBLISH_SIGN 5
|
||||
#define COL_MSG_ID 6
|
||||
#define COL_ORIG_MSG_ID 7
|
||||
#define COL_MSG_STATUS 8
|
||||
#define COL_CHILD_TS 9
|
||||
#define COL_PARENT_ID 10
|
||||
#define COL_THREAD_ID 11
|
||||
#define COL_MSG_NAME 12
|
||||
#define COL_MSG_SERV_STRING 13
|
||||
#define COL_MSG_ID 5
|
||||
#define COL_ORIG_MSG_ID 6
|
||||
#define COL_MSG_STATUS 7
|
||||
#define COL_CHILD_TS 8
|
||||
#define COL_PARENT_ID 9
|
||||
#define COL_THREAD_ID 10
|
||||
#define COL_MSG_NAME 11
|
||||
#define COL_MSG_SERV_STRING 12
|
||||
|
||||
// generic meta shared col numbers
|
||||
#define COL_GRP_ID 0
|
||||
#define COL_TIME_STAMP 1
|
||||
#define COL_NXS_FLAGS 2
|
||||
#define COL_IDENTITY_SIGN 3
|
||||
#define COL_SIGN_SET 3
|
||||
#define COL_IDENTITY 4
|
||||
|
||||
#define RS_DATA_SERVICE_DEBUG
|
||||
|
@ -138,7 +134,7 @@ RsDataService::RsDataService(const std::string &serviceDir, const std::string &d
|
|||
|
||||
// for retrieving msg meta
|
||||
msgMetaColumns.push_back(KEY_GRP_ID); msgMetaColumns.push_back(KEY_TIME_STAMP); msgMetaColumns.push_back(KEY_NXS_FLAGS);
|
||||
msgMetaColumns.push_back(KEY_IDENTITY_SIGN); msgMetaColumns.push_back(KEY_NXS_IDENTITY); msgMetaColumns.push_back(KEY_PUBLISH_SIGN);
|
||||
msgMetaColumns.push_back(KEY_SIGN_SET); msgMetaColumns.push_back(KEY_NXS_IDENTITY);
|
||||
msgMetaColumns.push_back(KEY_MSG_ID); msgMetaColumns.push_back(KEY_ORIG_MSG_ID); msgMetaColumns.push_back(KEY_MSG_STATUS);
|
||||
msgMetaColumns.push_back(KEY_CHILD_TS); msgMetaColumns.push_back(KEY_MSG_PARENT_ID); msgMetaColumns.push_back(KEY_MSG_THREAD_ID);
|
||||
msgMetaColumns.push_back(KEY_MSG_NAME); msgMetaColumns.push_back(KEY_NXS_SERV_STRING);
|
||||
|
@ -149,7 +145,7 @@ RsDataService::RsDataService(const std::string &serviceDir, const std::string &d
|
|||
|
||||
// for retrieving grp meta data
|
||||
grpMetaColumns.push_back(KEY_GRP_ID); grpMetaColumns.push_back(KEY_TIME_STAMP); grpMetaColumns.push_back(KEY_NXS_FLAGS);
|
||||
grpMetaColumns.push_back(KEY_IDENTITY_SIGN); grpMetaColumns.push_back(KEY_NXS_IDENTITY); grpMetaColumns.push_back(KEY_ADMIN_SIGN);
|
||||
grpMetaColumns.push_back(KEY_SIGN_SET); grpMetaColumns.push_back(KEY_NXS_IDENTITY);
|
||||
grpMetaColumns.push_back(KEY_KEY_SET); grpMetaColumns.push_back(KEY_GRP_SUBCR_FLAG); grpMetaColumns.push_back(KEY_GRP_POP);
|
||||
grpMetaColumns.push_back(KEY_MSG_COUNT); grpMetaColumns.push_back(KEY_GRP_STATUS); grpMetaColumns.push_back(KEY_GRP_NAME);
|
||||
grpMetaColumns.push_back(KEY_GRP_LAST_POST); grpMetaColumns.push_back(KEY_ORIG_GRP_ID); grpMetaColumns.push_back(KEY_NXS_SERV_STRING);
|
||||
|
@ -177,9 +173,8 @@ void RsDataService::initialise(){
|
|||
KEY_NXS_FLAGS + " INT," +
|
||||
KEY_ORIG_MSG_ID + " TEXT," +
|
||||
KEY_TIME_STAMP + " INT," +
|
||||
KEY_PUBLISH_SIGN + " BLOB," +
|
||||
KEY_NXS_IDENTITY + " TEXT," +
|
||||
KEY_IDENTITY_SIGN + " BLOB," +
|
||||
KEY_SIGN_SET + " BLOB," +
|
||||
KEY_NXS_FILE + " TEXT,"+
|
||||
KEY_NXS_FILE_OFFSET + " INT," +
|
||||
KEY_MSG_STATUS + " INT," +
|
||||
|
@ -195,7 +190,6 @@ void RsDataService::initialise(){
|
|||
mDb->execSQL("CREATE TABLE " + GRP_TABLE_NAME + "(" +
|
||||
KEY_GRP_ID + " TEXT," +
|
||||
KEY_TIME_STAMP + " INT," +
|
||||
KEY_ADMIN_SIGN + " BLOB," + " BLOB," +
|
||||
KEY_NXS_FILE + " TEXT," +
|
||||
KEY_NXS_FILE_OFFSET + " INT," +
|
||||
KEY_KEY_SET + " BLOB," +
|
||||
|
@ -212,7 +206,7 @@ void RsDataService::initialise(){
|
|||
KEY_NXS_SERV_STRING + " TEXT," +
|
||||
KEY_NXS_FLAGS + " INT," +
|
||||
KEY_GRP_SIGN_FLAGS + " INT," +
|
||||
KEY_IDENTITY_SIGN + " BLOB);");
|
||||
KEY_SIGN_SET + " BLOB);");
|
||||
|
||||
}
|
||||
|
||||
|
@ -243,18 +237,7 @@ RsGxsGrpMetaData* RsDataService::getGrpMeta(RetroCursor &c)
|
|||
grpMeta->mPublishTs = c.getInt32(COL_TIME_STAMP);
|
||||
grpMeta->mGroupFlags = c.getInt32(COL_NXS_FLAGS);
|
||||
|
||||
// identity if any
|
||||
if(!grpMeta->mAuthorId.empty() && ok){
|
||||
offset = 0;
|
||||
data = (char*)c.getData(COL_IDENTITY_SIGN, data_len);
|
||||
if(data)
|
||||
grpMeta->idSign.GetTlv(data, data_len, &offset);
|
||||
}
|
||||
|
||||
offset = 0;
|
||||
data = (char*)c.getData(COL_ADMIN_SIGN, data_len);
|
||||
if(data)
|
||||
grpMeta->adminSign.GetTlv(data, data_len, &offset);
|
||||
|
||||
|
||||
offset = 0; data = NULL; data_len = 0;
|
||||
|
@ -355,25 +338,16 @@ RsGxsMsgMetaData* RsDataService::getMsgMeta(RetroCursor &c)
|
|||
c.getString(COL_MSG_NAME, msgMeta->mMsgName);
|
||||
c.getString(COL_MSG_SERV_STRING, msgMeta->mServiceString);
|
||||
|
||||
if(!msgMeta->mAuthorId.empty()){
|
||||
offset = 0;
|
||||
data = (char*)c.getData(COL_IDENTITY_SIGN, data_len);
|
||||
msgMeta->idSign.GetTlv(data, data_len, &offset);
|
||||
}
|
||||
offset = 0;
|
||||
data = (char*)c.getData(COL_SIGN_SET, data_len);
|
||||
msgMeta->signSet.GetTlv(data, data_len, &offset);
|
||||
|
||||
|
||||
msgMeta->mMsgFlags = c.getInt32(COL_NXS_FLAGS);
|
||||
msgMeta->mPublishTs = c.getInt32(COL_TIME_STAMP);
|
||||
|
||||
offset = 0; data_len = 0;
|
||||
|
||||
if(ok){
|
||||
|
||||
data = (char*)c.getData(COL_PUBLISH_SIGN, data_len);
|
||||
if(data)
|
||||
msgMeta->pubSign.GetTlv(data, data_len, &offset);
|
||||
|
||||
}
|
||||
|
||||
// thread and parent id
|
||||
c.getString(COL_THREAD_ID, msgMeta->mThreadId);
|
||||
c.getString(COL_PARENT_ID, msgMeta->mParentId);
|
||||
|
@ -467,20 +441,15 @@ int RsDataService::storeMessage(std::map<RsNxsMsg *, RsGxsMsgMetaData *> &msg)
|
|||
cv.put(KEY_MSG_ID, msgMetaPtr->mMsgId);
|
||||
cv.put(KEY_GRP_ID, msgMetaPtr->mGroupId);
|
||||
cv.put(KEY_NXS_SERV_STRING, msgMetaPtr->mServiceString);
|
||||
char pubSignData[msgMetaPtr->pubSign.TlvSize()];
|
||||
|
||||
|
||||
char signSetData[msgMetaPtr->signSet.TlvSize()];
|
||||
offset = 0;
|
||||
msgMetaPtr->pubSign.SetTlv(pubSignData, msgMetaPtr->pubSign.TlvSize(), &offset);
|
||||
cv.put(KEY_PUBLISH_SIGN, msgMetaPtr->pubSign.TlvSize(), pubSignData);
|
||||
msgMetaPtr->signSet.SetTlv(signSetData, msgMetaPtr->signSet.TlvSize(), &offset);
|
||||
cv.put(KEY_SIGN_SET, msgMetaPtr->signSet.TlvSize(), signSetData);
|
||||
cv.put(KEY_NXS_IDENTITY, msgMetaPtr->mAuthorId);
|
||||
|
||||
|
||||
if(! (msgMetaPtr->mAuthorId.empty()) ){
|
||||
char idSignData[msgMetaPtr->idSign.TlvSize()];
|
||||
offset = 0;
|
||||
msgMetaPtr->idSign.SetTlv(idSignData, msgMetaPtr->idSign.TlvSize(), &offset);
|
||||
cv.put(KEY_IDENTITY_SIGN, msgMetaPtr->idSign.TlvSize(), idSignData);
|
||||
cv.put(KEY_NXS_IDENTITY, msgMetaPtr->mAuthorId);
|
||||
}
|
||||
|
||||
cv.put(KEY_NXS_FLAGS, (int32_t) msgMetaPtr->mMsgFlags);
|
||||
cv.put(KEY_TIME_STAMP, (int32_t) msgMetaPtr->mPublishTs);
|
||||
|
||||
|
@ -562,20 +531,8 @@ int RsDataService::storeGroup(std::map<RsNxsGrp *, RsGxsGrpMetaData *> &grp)
|
|||
|
||||
if(! (grpMetaPtr->mAuthorId.empty()) ){
|
||||
cv.put(KEY_NXS_IDENTITY, grpMetaPtr->mAuthorId);
|
||||
|
||||
char idSignData[grpMetaPtr->idSign.TlvSize()];
|
||||
offset = 0;
|
||||
grpMetaPtr->idSign.SetTlv(idSignData, grpMetaPtr->idSign.TlvSize(), &offset);
|
||||
cv.put(KEY_IDENTITY_SIGN, grpMetaPtr->idSign.TlvSize(), idSignData);
|
||||
std::string wat(idSignData, grpMetaPtr->idSign.TlvSize());
|
||||
std::cerr << wat << std::endl;
|
||||
}
|
||||
|
||||
char adminSignData[grpMetaPtr->adminSign.TlvSize()];
|
||||
offset = 0;
|
||||
grpMetaPtr->adminSign.SetTlv(adminSignData, grpMetaPtr->adminSign.TlvSize(), &offset);
|
||||
cv.put(KEY_ADMIN_SIGN, grpMetaPtr->adminSign.TlvSize(), adminSignData);
|
||||
|
||||
offset = 0;
|
||||
char keySetData[grpMetaPtr->keys.TlvSize()];
|
||||
grpMetaPtr->keys.SetTlv(keySetData, grpMetaPtr->keys.TlvSize(), &offset);
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <openssl/evp.h>
|
||||
#include <openssl/rsa.h>
|
||||
|
||||
#include "pqi/pqihash.h"
|
||||
#include "rsgenexchange.h"
|
||||
#include "gxssecurity.h"
|
||||
#include "util/contentvalue.h"
|
||||
|
@ -166,7 +167,11 @@ void RsGenExchange::createGroup(RsNxsGrp *grp)
|
|||
meta->keys.keys[pubKey.keyId] = pubKey;
|
||||
meta->keys.keys[privPubKey.keyId] = privPubKey;
|
||||
|
||||
meta->mGroupId = adminKey.keyId;
|
||||
pqihash hash;
|
||||
|
||||
// get hash of msg data to create msg id
|
||||
hash.addData(grp->grp.bin_data, grp->grp.bin_len);
|
||||
hash.Complete(meta->mGroupId);
|
||||
grp->grpId = meta->mGroupId;
|
||||
|
||||
adminKey.TlvClear();
|
||||
|
@ -235,11 +240,19 @@ bool RsGenExchange::createMessage(RsNxsMsg* msg)
|
|||
unsigned char sigbuf[siglen];
|
||||
ok = EVP_SignFinal(mdctx, sigbuf, &siglen, key_pub) == 1;
|
||||
|
||||
//place signature in msg meta
|
||||
RsGxsMsgMetaData &meta = *(msg->metaData);
|
||||
meta.pubSign.signData.setBinData(sigbuf, siglen);
|
||||
meta.pubSign.keyId = pubKey->keyId;
|
||||
RsTlvKeySignatureSet& signSet = meta.signSet;
|
||||
RsTlvKeySignature pubSign = signSet.keySignSet[GXS_SERV::FLAG_AUTHEN_PUBLISH];
|
||||
pubSign.signData.setBinData(sigbuf, siglen);
|
||||
pubSign.keyId = pubKey->keyId;
|
||||
|
||||
msg->metaData->mMsgId = msg->msgId = GxsSecurity::getBinDataSign(sigbuf, siglen);
|
||||
// get hash of msg data to create msg id
|
||||
pqihash hash;
|
||||
hash.addData(msg->msg.bin_data, msg->msg.bin_len);
|
||||
hash.Complete(msg->msgId);
|
||||
|
||||
msg->metaData->mMsgId = msg->msgId;
|
||||
|
||||
// clean up
|
||||
EVP_MD_CTX_destroy(mdctx);
|
||||
|
|
|
@ -44,10 +44,9 @@ uint32_t RsGxsGrpMetaData::serial_size()
|
|||
s += 4;
|
||||
s += GetTlvStringSize(mAuthorId);
|
||||
s += GetTlvStringSize(mServiceString);
|
||||
|
||||
s += adminSign.TlvSize();
|
||||
s += signSet.TlvSize();
|
||||
s += keys.TlvSize();
|
||||
s += idSign.TlvSize();
|
||||
|
||||
|
||||
return s;
|
||||
}
|
||||
|
@ -66,10 +65,9 @@ void RsGxsGrpMetaData::clear(){
|
|||
mGroupStatus = 0;
|
||||
mLastPost = 0;
|
||||
mSubscribeFlags = 0;
|
||||
|
||||
adminSign.TlvClear();
|
||||
signSet.TlvClear();
|
||||
keys.TlvClear();
|
||||
idSign.TlvClear();
|
||||
|
||||
}
|
||||
|
||||
bool RsGxsGrpMetaData::serialise(void *data, uint32_t &pktsize)
|
||||
|
@ -103,10 +101,9 @@ bool RsGxsGrpMetaData::serialise(void *data, uint32_t &pktsize)
|
|||
ok &= setRawUInt32(data, tlvsize, &offset, mPublishTs);
|
||||
ok &= SetTlvString(data, tlvsize, &offset, 0, mAuthorId);
|
||||
ok &= SetTlvString(data, tlvsize, &offset, 0, mServiceString);
|
||||
|
||||
ok &= adminSign.SetTlv(data, tlvsize, &offset);
|
||||
ok &= signSet.SetTlv(data, tlvsize, &offset);
|
||||
ok &= keys.SetTlv(data, tlvsize, &offset);
|
||||
ok &= idSign.SetTlv(data, tlvsize, &offset);
|
||||
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
@ -130,10 +127,9 @@ bool RsGxsGrpMetaData::deserialise(void *data, uint32_t &pktsize)
|
|||
ok &= getRawUInt32(data, pktsize, &offset, &mPublishTs);
|
||||
ok &= GetTlvString(data, pktsize, &offset, 0, mAuthorId);
|
||||
ok &= GetTlvString(data, pktsize, &offset, 0, mServiceString);
|
||||
|
||||
ok &= adminSign.GetTlv(data, pktsize, &offset);
|
||||
ok &= signSet.GetTlv(data, pktsize, &offset);
|
||||
ok &= keys.GetTlv(data, pktsize, &offset);
|
||||
ok &= idSign.GetTlv(data, pktsize, &offset);
|
||||
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
@ -155,8 +151,7 @@ uint32_t RsGxsMsgMetaData::serial_size()
|
|||
s += GetTlvStringSize(mAuthorId);
|
||||
s += GetTlvStringSize(mServiceString);
|
||||
|
||||
s += pubSign.TlvSize();
|
||||
s += idSign.TlvSize();
|
||||
s += signSet.TlvSize();
|
||||
s += GetTlvStringSize(mMsgName);
|
||||
s += 4;
|
||||
s += 4;
|
||||
|
@ -175,9 +170,7 @@ void RsGxsMsgMetaData::clear()
|
|||
mMsgName.clear();
|
||||
mServiceString.clear();
|
||||
|
||||
pubSign.TlvClear();
|
||||
idSign.TlvClear();
|
||||
|
||||
signSet.TlvClear();
|
||||
mPublishTs = 0;
|
||||
mMsgFlags = 0;
|
||||
mMsgStatus = 0;
|
||||
|
@ -215,8 +208,7 @@ bool RsGxsMsgMetaData::serialise(void *data, uint32_t *size)
|
|||
ok &= SetTlvString(data, *size, &offset, 0, mAuthorId);
|
||||
ok &= SetTlvString(data, *size, &offset, 0, mServiceString);
|
||||
|
||||
ok &= pubSign.SetTlv(data, *size, &offset);
|
||||
ok &= idSign.SetTlv(data, *size, &offset);
|
||||
ok &= signSet.SetTlv(data, *size, &offset);
|
||||
ok &= SetTlvString(data, *size, &offset, 0, mMsgName);
|
||||
ok &= setRawUInt32(data, *size, &offset, mPublishTs);
|
||||
ok &= setRawUInt32(data, *size, &offset, mMsgFlags);
|
||||
|
@ -244,8 +236,7 @@ bool RsGxsMsgMetaData::deserialise(void *data, uint32_t *size)
|
|||
ok &= GetTlvString(data, *size, &offset, 0, mAuthorId);
|
||||
ok &= GetTlvString(data, *size, &offset, 0, mServiceString);
|
||||
|
||||
ok &= pubSign.GetTlv(data, *size, &offset);
|
||||
ok &= idSign.GetTlv(data, *size, &offset);
|
||||
ok &= signSet.GetTlv(data, *size, &offset);
|
||||
ok &= GetTlvString(data, *size, &offset, 0, mMsgName);
|
||||
uint32_t t;
|
||||
ok &= getRawUInt32(data, *size, &offset, &t);
|
||||
|
|
|
@ -60,9 +60,8 @@ public:
|
|||
std::string mAuthorId;
|
||||
|
||||
|
||||
RsTlvKeySignature adminSign;
|
||||
RsTlvKeySignatureSet signSet;
|
||||
RsTlvSecurityKeySet keys;
|
||||
RsTlvKeySignature idSign;
|
||||
|
||||
std::string mServiceString;
|
||||
|
||||
|
@ -100,8 +99,7 @@ public:
|
|||
RsGxsMessageId mOrigMsgId;
|
||||
std::string mAuthorId;
|
||||
|
||||
RsTlvKeySignature pubSign;
|
||||
RsTlvKeySignature idSign;
|
||||
RsTlvKeySignatureSet signSet;
|
||||
|
||||
std::string mServiceString;
|
||||
|
||||
|
|
|
@ -8,56 +8,51 @@
|
|||
namespace GXS_SERV {
|
||||
|
||||
|
||||
/*** GROUP FLAGS ***/
|
||||
|
||||
/* type of group */
|
||||
/** privacy **/
|
||||
|
||||
static const uint32_t FLAG_GRP_TYPE_MASK = 0;
|
||||
static const uint32_t FLAG_PRIVACY_MASK = 0x0000000f;
|
||||
|
||||
// pub key encrypted
|
||||
static const uint32_t FLAG_GRP_TYPE_PRIVATE = 0;
|
||||
static const uint32_t FLAG_PRIVACY_PRIVATE = 0x00000001;
|
||||
|
||||
// single publisher, read only
|
||||
static const uint32_t FLAG_GRP_TYPE_RESTRICTED = 0;
|
||||
// publish private key needed to publish
|
||||
static const uint32_t FLAG_PRIVACY_RESTRICTED = 0x00000002;
|
||||
|
||||
// anyone can publish
|
||||
static const uint32_t FLAG_GRP_TYPE_PUBLIC = 0;
|
||||
// anyone can publish, publish key pair not needed
|
||||
static const uint32_t FLAG_PRIVACY_PUBLIC = 0x00000004;
|
||||
|
||||
/** privacy **/
|
||||
|
||||
/* type of msgs allowed */
|
||||
/** authentication **/
|
||||
|
||||
static const uint32_t FLAG_MSG_TYPE_MASK = 0;
|
||||
static const uint32_t FLAG_AUTHEN_MASK = 0x000000f0;
|
||||
|
||||
// only signee can edit, and sign required
|
||||
static const uint32_t FLAG_MSG_TYPE_SIGNED = 0;
|
||||
// identity
|
||||
static const uint32_t FLAG_AUTHEN_IDENTITY = 0x000000010;
|
||||
|
||||
// no sign required, but signee can edit if signed
|
||||
static const uint32_t FLAG_MSG_TYPE_ANON = 0;
|
||||
// publish key
|
||||
static const uint32_t FLAG_AUTHEN_PUBLISH = 0x000000020;
|
||||
|
||||
// anyone can mod but sign must be provided (needed for wikis)
|
||||
static const uint32_t FLAG_MSG_TYPE_SIGNED_SHARED = 0;
|
||||
// admin key
|
||||
static const uint32_t FLAG_AUTHEN_ADMIN = 0x00000040;
|
||||
|
||||
/*** GROUP FLAGS ***/
|
||||
// pgp sign identity
|
||||
static const uint32_t FLAG_AUTHEN_PGP_IDENTITY = 0x00000080;
|
||||
|
||||
|
||||
|
||||
/*** MESSAGE FLAGS ***/
|
||||
|
||||
// indicates message edits an existing message
|
||||
static const uint32_t FLAG_MSG_EDIT = 0;
|
||||
|
||||
// indicates msg is id signed
|
||||
static const uint32_t FLAG_MSG_ID_SIGNED = 0;
|
||||
|
||||
/*** MESSAGE FLAGS ***/
|
||||
/** authentication **/
|
||||
|
||||
|
||||
// Subscription Flags. (LOCAL)
|
||||
|
||||
static const uint32_t GROUP_SUBSCRIBE_ADMIN = 0x00000001;
|
||||
|
||||
static const uint32_t GROUP_SUBSCRIBE_PUBLISH = 0x00000002;
|
||||
|
||||
static const uint32_t GROUP_SUBSCRIBE_SUBSCRIBED = 0x00000004;
|
||||
static const uint32_t GROUP_SUBSCRIBE_MONITOR = 0x00000008;
|
||||
|
||||
static const uint32_t GROUP_SUBSCRIBE_NOT_SUBSCRIBED = 0x00000008;
|
||||
|
||||
static const uint32_t GROUP_SUBSCRIBE_MASK = 0x0000000f;
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue