本文整理汇总了C++中Name::getSubName方法的典型用法代码示例。如果您正苦于以下问题:C++ Name::getSubName方法的具体用法?C++ Name::getSubName怎么用?C++ Name::getSubName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Name
的用法示例。
在下文中一共展示了Name::getSubName方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: idString
Name
IdentityCertificate::certificateNameToPublicKeyName(const Name& certificateName)
{
int i = certificateName.size() - 1;
string idString("ID-CERT");
bool foundIdString = false;
for (; i >= 0; i--) {
if (certificateName.get(i).toEscapedString() == idString)
{
foundIdString = true;
break;
}
}
if(!foundIdString)
throw Error("Incorrect identity certificate name " + certificateName.toUri());
Name tmpName = certificateName.getSubName(0, i);
string keyString("KEY");
bool foundKeyString = false;
for (i = 0; i < tmpName.size(); i++) {
if (tmpName.get(i).toEscapedString() == keyString)
{
foundKeyString = true;
break;
}
}
if(!foundKeyString)
throw Error("Incorrect identity certificate name " + certificateName.toUri());
return tmpName.getSubName(0, i).append(tmpName.getSubName(i + 1, tmpName.size() - i - 1));
}
示例2: ActionItemPtr
ActionItemPtr
ActionLog::AddRemoteAction(shared_ptr<Data> actionData)
{
Name name = actionData->getName();
// action name: /<device_name>/<appname>/action/<shared-folder>/<action-seq>
uint64_t seqno = name.get(-1).toNumber();
std::string sharedFolder = name.get(-2).toUri();
if (sharedFolder != m_sharedFolderName) {
_LOG_ERROR("Action doesn't belong to this shared folder");
return ActionItemPtr();
}
if (name.get(-3).toUri() != "action") {
_LOG_ERROR("not an action");
return ActionItemPtr();
}
if (name.get(-4) != m_appName) {
_LOG_ERROR("Action doesn't belong to this application");
return ActionItemPtr();
}
Name deviceName = name.getSubName(0, name.size() - 4);
_LOG_DEBUG("From [" << name << "] extracted deviceName: " << deviceName << ", sharedFolder: "
<< sharedFolder
<< ", seqno: "
<< seqno);
return AddRemoteAction(deviceName, seqno, actionData);
}
示例3:
inline size_t
calculateSkip(const Name& name,
const Name& hint, const Name& zone)
{
size_t skip = 0;
if (!hint.empty()) {
// These are only asserts. The caller should supply the right parameters
skip = hint.size() + 1 + zone.size();
BOOST_ASSERT(name.size() > skip);
BOOST_ASSERT(name.getPrefix(hint.size()) == hint);
BOOST_ASSERT(name.get(hint.size()) == FORWARDING_HINT_LABEL);
BOOST_ASSERT(name.getSubName(hint.size() + 1, zone.size()) == zone);
}
else {
skip = zone.size();
BOOST_ASSERT(name.size() > skip);
BOOST_ASSERT(name.getPrefix(zone.size()) == zone);
}
BOOST_ASSERT(name.get(skip) == NDNS_ITERATIVE_QUERY ||
name.get(skip) == NDNS_CERT_QUERY);
++skip;
return skip;
}
示例4: sregex_iterator
bool
InterestFilter::doesMatch(const Name& name) const
{
if (name.size() < prefix_.size())
return false;
if (hasRegexFilter()) {
#if NDN_CPP_HAVE_REGEX_LIB
// Perform a prefix match and regular expression match for the remaining
// components.
if (!prefix_.match(name))
return false;
return regex_lib::sregex_iterator() != NdnRegexMatcher
(regexFilterPattern_, name.getSubName(prefix_.size())).iterator;
#else
// We should not reach this point because the constructors for regexFilter
// don't compile.
throw runtime_error("InterestFilter::regexFilter is not supported");
#endif
}
else
// Just perform a prefix match.
return prefix_.match(name);
}
示例5:
void
setNameComponent(Name& name, ssize_t index, const A& ...a)
{
Name name2 = name.getPrefix(index);
name2.append(name::Component(a...));
name2.append(name.getSubName(name2.size()));
name = name2;
}
示例6: PartialName
Strategy::ParsedInstanceName
Strategy::parseInstanceName(const Name& input)
{
for (ssize_t i = input.size() - 1; i > 0; --i) {
if (input[i].isVersion()) {
return {input.getPrefix(i + 1), input[i].toVersion(), input.getSubName(i + 1)};
}
}
return {input, nullopt, PartialName()};
}
示例7: idString
Name
IdentityCertificate::certificateNameToPublicKeyName(const Name& certificateName)
{
int i = certificateName.size() - 1;
string idString("ID-CERT");
for (; i >= 0; i--) {
if (certificateName.get(i).toEscapedString() == idString)
break;
}
Name tmpName = certificateName.getSubName(0, i);
string keyString("KEY");
for (i = 0; i < tmpName.size(); i++) {
if (tmpName.get(i).toEscapedString() == keyString)
break;
}
return tmpName.getSubName(0, i).append(tmpName.getSubName(i + 1, tmpName.size() - i - 1));
}
示例8: keyString
Name
IdentityManager::getKeyNameFromCertificatePrefix(const Name & certificatePrefix)
{
Name result;
string keyString("KEY");
int i = 0;
for(; i < certificatePrefix.size(); i++) {
if (certificatePrefix.get(i).toEscapedString() == keyString)
break;
}
if (i >= certificatePrefix.size())
throw SecurityException("Identity Certificate Prefix does not have a KEY component");
result.append(certificatePrefix.getSubName(0, i));
result.append(certificatePrefix.getSubName(i + 1, certificatePrefix.size()-i-1));
return result;
}
示例9: SecurityException
void
MemoryIdentityStorage::addKey(const Name& keyName, KeyType keyType, const Blob& publicKeyDer)
{
Name identityName = keyName.getSubName(0, keyName.size() - 1);
addIdentity(identityName);
if (doesKeyExist(keyName))
throw SecurityException("a key with the same name already exists!");
keyStore_[keyName.toUri()] = ptr_lib::make_shared<KeyRecord>(keyType, publicKeyDer);
}
示例10: ndnrtcSubName
bool
NameComponents::extractInfo(const ndn::Name& name, NamespaceInfo& info)
{
bool goodName = false;
static Name ndnrtcSubName(NameComponents::NameComponentApp);
Name subName;
int i;
for (i = name.size()-2; i > 0 && !goodName; --i)
{
subName = name.getSubName(i);
goodName = ndnrtcSubName.match(subName);
}
if (goodName)
{
info.basePrefix_ = name.getSubName(0, i+1);
if ((goodName = subName[1].isVersion()))
{
info.apiVersion_ = subName[1].toVersion();
if (subName.size() > 2 &&
(goodName = (subName[2] == Name::Component(NameComponents::NameComponentAudio) ||
subName[2] == Name::Component(NameComponents::NameComponentVideo))) )
{
info.streamType_ = (subName[2] == Name::Component(NameComponents::NameComponentAudio) ?
MediaStreamParams::MediaStreamType::MediaStreamTypeAudio :
MediaStreamParams::MediaStreamType::MediaStreamTypeVideo );
if (info.streamType_ == MediaStreamParams::MediaStreamType::MediaStreamTypeAudio)
return extractAudioStreamInfo(subName.getSubName(3), info);
else
return extractVideoStreamInfo(subName.getSubName(3), info);
}
}
}
return false;
}
示例11: Error
void
SecPublicInfoMemory::addPublicKey(const Name& keyName, KeyType keyType, const PublicKey& publicKey)
{
Name identityName = keyName.getSubName(0, keyName.size() - 1);
if (!doesIdentityExist(identityName))
addIdentity(identityName);
if (doesPublicKeyExist(keyName))
throw Error("a key with the same name already exists!");
keyStore_[keyName.toUri()] = ptr_lib::make_shared<KeyRecord>(keyType, publicKey);
}
示例12: idString
Name
IdentityCertificate::certificateNameToPublicKeyName(const Name& certificateName)
{
string idString("ID-CERT");
bool foundIdString = false;
size_t idCertComponentIndex = certificateName.size() - 1;
for (; idCertComponentIndex + 1 > 0; --idCertComponentIndex) {
if (certificateName.get(idCertComponentIndex).toUri() == idString)
{
foundIdString = true;
break;
}
}
if (!foundIdString)
throw Error("Incorrect identity certificate name " + certificateName.toUri());
Name tmpName = certificateName.getSubName(0, idCertComponentIndex);
string keyString("KEY");
bool foundKeyString = false;
size_t keyComponentIndex = 0;
for (; keyComponentIndex < tmpName.size(); keyComponentIndex++) {
if (tmpName.get(keyComponentIndex).toUri() == keyString)
{
foundKeyString = true;
break;
}
}
if (!foundKeyString)
throw Error("Incorrect identity certificate name " + certificateName.toUri());
return tmpName
.getSubName(0, keyComponentIndex)
.append(tmpName.getSubName(keyComponentIndex + 1,
tmpName.size() - keyComponentIndex - 1));
}
示例13: requestFile
//.........这里部分代码省略.........
{
std::cerr << "request file must be specified" << std::endl;
return 1;
}
shared_ptr<IdentityCertificate> selfSignedCertificate
= getIdentityCertificate(requestFile);
if (!static_cast<bool>(selfSignedCertificate))
{
std::cerr << "ERROR: input error" << std::endl;
return 1;
}
KeyChain keyChain;
Name keyName = selfSignedCertificate->getPublicKeyName();
Name signIdName;
Name certName;
if (!hasSignId)
signIdName = keyChain.getDefaultIdentity();
else
signIdName = Name(signId);
if (signIdName.isPrefixOf(keyName))
{
// if signee's namespace is a sub-namespace of signer, for example, signer's namespace is
// /ndn/test, signee's namespace is /ndn/test/alice, the generated certificate name is
// /ndn/test/KEY/alice/ksk-1234/ID-CERT/%01%02
certName.append(signIdName)
.append("KEY")
.append(keyName.getSubName(signIdName.size()))
.append("ID-CERT")
.appendVersion();
}
else
{
// if signee's namespace is not a sub-namespace of signer, for example, signer's namespace is
// /ndn/test, signee's namespace is /ndn/ucla/bob, the generated certificate name is
// /ndn/ucla/bob/KEY/ksk-1234/ID-CERT/%01%02
certName.append(keyName.getPrefix(-1))
.append("KEY")
.append(keyName.get(-1))
.append("ID-CERT")
.appendVersion();
}
Block wire;
if (!isNack)
{
if (vm.count("subject-name") == 0)
{
std::cerr << "subject_name must be specified" << std::endl;
return 1;
}
CertificateSubjectDescription subDescryptName("2.5.4.41", subjectName);
IdentityCertificate certificate;
certificate.setName(certName);
certificate.setNotBefore(notBefore);
certificate.setNotAfter(notAfter);
certificate.setPublicKeyInfo(selfSignedCertificate->getPublicKeyInfo());
certificate.addSubjectDescription(subDescryptName);