From e883a32711ee14b0a1165ac236e48456419f3d18 Mon Sep 17 00:00:00 2001 From: csoler Date: Sun, 1 Jan 2017 21:10:14 +0100 Subject: [PATCH] added more debug info in msg validation code --- libretroshare/src/gxs/rsgenexchange.cc | 73 +++++++++++++++----------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/libretroshare/src/gxs/rsgenexchange.cc b/libretroshare/src/gxs/rsgenexchange.cc index 5f6786fa3..eda828245 100644 --- a/libretroshare/src/gxs/rsgenexchange.cc +++ b/libretroshare/src/gxs/rsgenexchange.cc @@ -799,41 +799,52 @@ int RsGenExchange::validateMsg(RsNxsMsg *msg, const uint32_t& grpFlag, const uin RsGxsMsgMetaData& metaData = *(msg->metaData); if(needPublishSign) - { - RsTlvKeySignature sign = metaData.signSet.keySignSet[INDEX_AUTHEN_PUBLISH]; + { + RsTlvKeySignature sign = metaData.signSet.keySignSet[INDEX_AUTHEN_PUBLISH]; - std::map& keys = grpKeySet.public_keys; - std::map::iterator mit = keys.begin(); + std::map& keys = grpKeySet.public_keys; + std::map::iterator mit = keys.begin(); - RsGxsId keyId; - for(; mit != keys.end() ; ++mit) - { - RsTlvPublicRSAKey& key = mit->second; + RsGxsId keyId; + for(; mit != keys.end() ; ++mit) + { + RsTlvPublicRSAKey& key = mit->second; - if(key.keyFlags & RSTLV_KEY_DISTRIB_PUBLIC_deprecated) - { - keyId = key.keyId; - std::cerr << "WARNING: old style publish key with flags " << key.keyFlags << std::endl; - std::cerr << " this cannot be fixed, but RS will deal with it." << std::endl; - break ; - } - if(key.keyFlags & RSTLV_KEY_DISTRIB_PUBLISH) // we might have the private key, but we still should be able to check the signature - { - keyId = key.keyId; - break; - } - } + if(key.keyFlags & RSTLV_KEY_DISTRIB_PUBLIC_deprecated) + { + keyId = key.keyId; + std::cerr << "WARNING: old style publish key with flags " << key.keyFlags << std::endl; + std::cerr << " this cannot be fixed, but RS will deal with it." << std::endl; + break ; + } + if(key.keyFlags & RSTLV_KEY_DISTRIB_PUBLISH) // we might have the private key, but we still should be able to check the signature + { + keyId = key.keyId; + break; + } + } - if(!keyId.isNull()) - { - RsTlvPublicRSAKey& key = keys[keyId]; - publishValidate &= GxsSecurity::validateNxsMsg(*msg, sign, key); - } - else - { - publishValidate = false; - } - } + if(!keyId.isNull()) + { + RsTlvPublicRSAKey& key = keys[keyId]; + publishValidate &= GxsSecurity::validateNxsMsg(*msg, sign, key); + } + else + { + std::cerr << "(EE) public publish key not found in group that require publish key validation. This should not happen! msgId=" << metaData.mMsgId << ", grpId=" << metaData.mGroupId << std::endl; + std::cerr << "(EE) public keys available for this group are: " << std::endl; + + for(std::map::const_iterator it(grpKeySet.public_keys.begin());it!=grpKeySet.public_keys.end();++it) + std::cerr << "(EE) " << it->first << std::endl; + + std::cerr << "(EE) private keys available for this group are: " << std::endl; + + for(std::map::const_iterator it(grpKeySet.private_keys.begin());it!=grpKeySet.private_keys.end();++it) + std::cerr << "(EE) " << it->first << std::endl; + + publishValidate = false; + } + } else { publishValidate = true;