NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
pib.cpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2013-2018 Regents of the University of California.
4  *
5  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6  *
7  * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License as published by the Free Software
9  * Foundation, either version 3 of the License, or (at your option) any later version.
10  *
11  * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13  * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14  *
15  * You should have received copies of the GNU General Public License and GNU Lesser
16  * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17  * <http://www.gnu.org/licenses/>.
18  *
19  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20  */
21 
24 #include "ndn-cxx/util/logger.hpp"
25 
26 namespace ndn {
27 namespace security {
28 namespace pib {
29 
31 
32 Pib::Pib(const std::string& scheme, const std::string& location, shared_ptr<PibImpl> impl)
33  : m_scheme(scheme)
34  , m_location(location)
35  , m_isDefaultIdentityLoaded(false)
36  , m_identities(impl)
37  , m_impl(std::move(impl))
38 {
39  BOOST_ASSERT(m_impl != nullptr);
40 }
41 
42 Pib::~Pib() = default;
43 
44 std::string
46 {
47  return m_scheme + ":" + m_location;
48 }
49 
50 void
51 Pib::setTpmLocator(const std::string& tpmLocator)
52 {
53  if (tpmLocator == m_impl->getTpmLocator()) {
54  return;
55  }
56  reset();
57  m_impl->setTpmLocator(tpmLocator);
58 }
59 
60 std::string
62 {
63  std::string tpmLocator = m_impl->getTpmLocator();
64  if (tpmLocator.empty()) {
65  BOOST_THROW_EXCEPTION(Pib::Error("TPM info does not exist"));
66  }
67  return tpmLocator;
68 }
69 
70 void
72 {
73  m_impl->clearIdentities();
74  m_impl->setTpmLocator("");
77 }
78 
80 Pib::addIdentity(const Name& identity)
81 {
82  BOOST_ASSERT(m_identities.isConsistent());
83 
84  return m_identities.add(identity);
85 }
86 
87 void
88 Pib::removeIdentity(const Name& identity)
89 {
90  BOOST_ASSERT(m_identities.isConsistent());
91 
94  }
95 
96  m_identities.remove(identity);
97 }
98 
100 Pib::getIdentity(const Name& identity) const
101 {
102  BOOST_ASSERT(m_identities.isConsistent());
103 
104  return m_identities.get(identity);
105 }
106 
107 const IdentityContainer&
109 {
110  BOOST_ASSERT(m_identities.isConsistent());
111 
112  return m_identities;
113 }
114 
115 const Identity&
116 Pib::setDefaultIdentity(const Name& identityName)
117 {
118  BOOST_ASSERT(m_identities.isConsistent());
119 
120  m_defaultIdentity = m_identities.add(identityName);
122  NDN_LOG_DEBUG("Default identity is set to " << identityName);
123 
124  m_impl->setDefaultIdentity(identityName);
125  return m_defaultIdentity;
126 }
127 
128 const Identity&
130 {
131  BOOST_ASSERT(m_identities.isConsistent());
132 
134  m_defaultIdentity = m_identities.get(m_impl->getDefaultIdentity());
136  NDN_LOG_DEBUG("Default identity is " << m_defaultIdentity.getName());
137  }
138 
139  BOOST_ASSERT(m_impl->getDefaultIdentity() == m_defaultIdentity.getName());
140 
141  return m_defaultIdentity;
142 }
143 
144 } // namespace pib
145 } // namespace security
146 } // namespace ndn
Identity get(const Name &identity) const
Get identity from the container.
void remove(const Name &identity)
Remove identity from the container.
Copyright (c) 2011-2015 Regents of the University of California.
represents a semantic error
Definition: pib.hpp:56
void reset()
Reset state of the container.
bool m_isDefaultIdentityLoaded
Definition: pib.hpp:170
std::string m_location
Definition: pib.hpp:168
#define NDN_LOG_DEBUG(expression)
Definition: logger.hpp:108
void removeIdentity(const Name &identity)
Remove an identity.
Definition: pib.cpp:88
void reset()
Reset content in PIB, including reset of the TPM locator.
Definition: pib.cpp:71
const IdentityContainer & getIdentities() const
Get all the identities.
Definition: pib.cpp:108
shared_ptr< PibImpl > m_impl
Definition: pib.hpp:175
void setTpmLocator(const std::string &tpmLocator)
Set the corresponding TPM information to tpmLocator.
Definition: pib.cpp:51
Identity add(const Name &identityName)
Add identity into the container.
IdentityContainer m_identities
Definition: pib.hpp:173
ndn security pib Pib
Definition: pib.cpp:30
Identity getIdentity(const Name &identityName) const
Get an identity with name identityName.
Definition: pib.cpp:100
const Identity & setDefaultIdentity(const Name &identity)
Set an identity as the default identity.
Definition: pib.cpp:116
Represents an absolute name.
Definition: name.hpp:43
Identity addIdentity(const Name &identity)
Add an identity.
Definition: pib.cpp:80
std::string getPibLocator() const
Get PIB Locator.
Definition: pib.cpp:45
const Identity & getDefaultIdentity() const
Get the default identity.
Definition: pib.cpp:129
const Name & getName() const
Get the name of the identity.
Definition: identity.cpp:37
Container of identities of a Pib.
bool isConsistent() const
Check if the container is consistent with the backend storage.
std::string m_scheme
Definition: pib.hpp:167
A frontend handle of an Identity.
Definition: identity.hpp:42
#define NDN_LOG_INIT(name)
declare a log module
Definition: logger.hpp:90
std::string getTpmLocator() const
Get TPM Locator.
Definition: pib.cpp:61
Identity m_defaultIdentity
Definition: pib.hpp:171
represents the PIB
Definition: pib.hpp:52