Fixing the bug in issuing intro cert in the policy manager

Fixing the conversion bug in intro-cert
This commit is contained in:
Yingdi Yu committed 2013-11-12 13:15:33 -08:00
1 parent 5eb1cb5a5f
commit 7bfcd651a0
3 files changed
+34 -3

No files matched your search

+1 -1
View File
@@ -113,7 +113,7 @@ SyncIntroCertificate::SyncIntroCertificate (const Data& data)
if(i >= certificateName.size())
throw SecException("Wrong SyncIntroCertificate Name!");
m_keyName = certificateName.getSubName(keyNameStart, keyNameEnd);
m_keyName = certificateName.getSubName(keyNameStart, keyNameEnd - keyNameStart);
string typeComponent = certificateName.get(certificateName.size() - 2).toUri();
if(typeComponent == string("PRODUCER"))
+32 -2
View File
@@ -12,6 +12,7 @@
#include "sync-intro-certificate.h"
#include "sync-logging.h"
#include <ndn.cxx/security/identity/identity-manager.h>
using namespace ndn;
using namespace ndn::security;
@@ -27,6 +28,7 @@ SyncPolicyManager::SyncPolicyManager(const Name& signingIdentity,
, m_signingCertificateName(signingCertificateName.getPrefix(signingCertificateName.size()-1))
, m_syncPrefix(syncPrefix)
, m_stepLimit(stepLimit)
, m_identityManager(Ptr<security::IdentityManager>::Create())
{
Name wotPrefix = syncPrefix;
wotPrefix.append("WOT");
@@ -263,9 +265,37 @@ SyncPolicyManager::onIntroCertVerified(Ptr<Data> introCertificateData,
{
Ptr<SyncIntroCertificate> introCertificate = Ptr<SyncIntroCertificate>(new SyncIntroCertificate(*introCertificateData));
if(forIntroducer)
m_trustedIntroducers.insert(pair <Name, Publickey > (introCertificate->getPublicKeyName(), introCertificate->getPublicKeyInfo()));
{
m_trustedIntroducers.insert(pair <Name, Publickey > (introCertificate->getPublicKeyName(), introCertificate->getPublicKeyInfo()));
SyncIntroCertificate syncIntroCertificate(m_syncPrefix,
introCertificate->getPublicKeyName(),
m_identityManager->getDefaultKeyNameForIdentity(m_signingIdentity),
introCertificate->getNotBefore(),
introCertificate->getNotAfter(),
introCertificate->getPublicKeyInfo(),
SyncIntroCertificate::INTRODUCER);
// : SyncIntroCertificate::PRODUCER)
ndn::Name certName = m_identityManager->getDefaultCertificateNameByIdentity(m_signingIdentity);
_LOG_DEBUG("Publish Intro Certificate on Verified: " << syncIntroCertificate.getName());
m_identityManager->signByCertificate(syncIntroCertificate, certName);
m_handler->putToNdnd(*syncIntroCertificate.encodeToWire());
}
else
m_trustedProducers.insert(pair <Name, Publickey > (introCertificate->getPublicKeyName(), introCertificate->getPublicKeyInfo()));
{
m_trustedProducers.insert(pair <Name, Publickey > (introCertificate->getPublicKeyName(), introCertificate->getPublicKeyInfo()));
SyncIntroCertificate syncIntroCertificate(m_syncPrefix,
introCertificate->getPublicKeyName(),
m_identityManager->getDefaultKeyNameForIdentity(m_signingIdentity),
introCertificate->getNotBefore(),
introCertificate->getNotAfter(),
introCertificate->getPublicKeyInfo(),
SyncIntroCertificate::PRODUCER);
// : SyncIntroCertificate::PRODUCER)
ndn::Name certName = m_identityManager->getDefaultCertificateNameByIdentity(m_signingIdentity);
_LOG_DEBUG("Publish Intro Certificate on Verified: " << syncIntroCertificate.getName());
m_identityManager->signByCertificate(syncIntroCertificate, certName);
m_handler->putToNdnd(*syncIntroCertificate.encodeToWire());
}
if(verifySignature(*originalData, introCertificate->getPublicKeyInfo()))
verifiedCallback(originalData);
+1
View File
@@ -118,6 +118,7 @@ private:
std::map<ndn::Name, ndn::security::Publickey> m_trustedProducers;
std::map<ndn::Name, SpecificPolicyRule> m_chatDataRules;
ndn::Ptr<ndn::security::IdentityManager> m_identityManager;
ndn::Ptr<ndn::Wrapper> m_handler;
};