All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sec-public-info-memory.cpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
8 #include "common.hpp"
9 
11 #include "identity-certificate.hpp"
12 
13 using namespace std;
14 
15 namespace ndn {
16 
17 SecPublicInfoMemory::~SecPublicInfoMemory()
18 {
19 }
20 
21 bool
22 SecPublicInfoMemory::doesIdentityExist(const Name& identityName)
23 {
24  string identityUri = identityName.toUri();
25  return find(m_identityStore.begin(), m_identityStore.end(), identityUri) != m_identityStore.end();
26 }
27 
28 void
29 SecPublicInfoMemory::addIdentity(const Name& identityName)
30 {
31  string identityUri = identityName.toUri();
32  if (find(m_identityStore.begin(), m_identityStore.end(), identityUri) != m_identityStore.end())
33  return;
34 
35  m_identityStore.push_back(identityUri);
36 }
37 
38 bool
39 SecPublicInfoMemory::revokeIdentity()
40 {
41  throw Error("SecPublicInfoMemory::revokeIdentity not implemented");
42 }
43 
44 bool
45 SecPublicInfoMemory::doesPublicKeyExist(const Name& keyName)
46 {
47  return m_keyStore.find(keyName.toUri()) != m_keyStore.end();
48 }
49 
50 void
51 SecPublicInfoMemory::addPublicKey(const Name& keyName, KeyType keyType, const PublicKey& publicKey)
52 {
53  Name identityName = keyName.getPrefix(-1);
54 
55  addIdentity(identityName);
56 
57  m_keyStore[keyName.toUri()] = make_shared<KeyRecord>(keyType, boost::cref(publicKey));
58 }
59 
60 shared_ptr<PublicKey>
61 SecPublicInfoMemory::getPublicKey(const Name& keyName)
62 {
63  KeyStore::iterator record = m_keyStore.find(keyName.toUri());
64  if (record == m_keyStore.end())
65  throw Error("SecPublicInfoMemory::getPublicKey " + keyName.toUri());
66 
67  return make_shared<PublicKey>(record->second->getKey());
68 }
69 
70 bool
71 SecPublicInfoMemory::doesCertificateExist(const Name& certificateName)
72 {
73  return m_certificateStore.find(certificateName.toUri()) != m_certificateStore.end();
74 }
75 
76 void
77 SecPublicInfoMemory::addCertificate(const IdentityCertificate& certificate)
78 {
79  const Name& certificateName = certificate.getName();
80  const Name& keyName = certificate.getPublicKeyName();
81  const Name& identity = keyName.getPrefix(-1);
82 
83  addIdentity(identity);
84  addPublicKey(keyName, KEY_TYPE_RSA, certificate.getPublicKeyInfo());
85  m_certificateStore[certificateName.toUri()] = make_shared<IdentityCertificate>(certificate);
86 }
87 
88 shared_ptr<IdentityCertificate>
89 SecPublicInfoMemory::getCertificate(const Name& certificateName)
90 {
91  CertificateStore::iterator record = m_certificateStore.find(certificateName.toUri());
92  if (record == m_certificateStore.end())
93  throw Error("SecPublicInfoMemory::getCertificate " + certificateName.toUri());
94 
95  return record->second;
96 }
97 
98 Name
99 SecPublicInfoMemory::getDefaultIdentity()
100 {
101  return Name(m_defaultIdentity);
102 }
103 
104 void
105 SecPublicInfoMemory::setDefaultIdentityInternal(const Name& identityName)
106 {
107  string identityUri = identityName.toUri();
108  if (find(m_identityStore.begin(), m_identityStore.end(), identityUri) != m_identityStore.end())
109  m_defaultIdentity = identityUri;
110  else
111  // The identity doesn't exist, so clear the default.
112  m_defaultIdentity.clear();
113 }
114 
115 Name
116 SecPublicInfoMemory::getDefaultKeyNameForIdentity(const Name& identityName)
117 {
118  return m_defaultKeyName;
119 }
120 
121 void
122 SecPublicInfoMemory::setDefaultKeyNameForIdentityInternal(const Name& keyName)
123 {
124  m_defaultKeyName = keyName;
125 }
126 
127 Name
128 SecPublicInfoMemory::getDefaultCertificateNameForKey(const Name& keyName)
129 {
130  return m_defaultCert;
131 }
132 
133 void
134 SecPublicInfoMemory::setDefaultCertificateNameForKeyInternal(const Name& certificateName)
135 {
136  m_defaultCert = certificateName;
137 }
138 
139 void
140 SecPublicInfoMemory::getAllIdentities(std::vector<Name>& nameList, bool isDefault)
141 {
142  throw Error("SecPublicInfoMemory::getAllIdentities not implemented");
143 }
144 
145 void
146 SecPublicInfoMemory::getAllKeyNames(std::vector<Name>& nameList, bool isDefault)
147 {
148  throw Error("SecPublicInfoMemory::getAllKeyNames not implemented");
149 }
150 
151 void
152 SecPublicInfoMemory::getAllKeyNamesOfIdentity(const Name& identity,
153  std::vector<Name>& nameList,
154  bool isDefault)
155 {
156  throw Error("SecPublicInfoMemory::getAllKeyNamesOfIdentity not implemented");
157 }
158 
159 void
160 SecPublicInfoMemory::getAllCertificateNames(std::vector<Name>& nameList, bool isDefault)
161 {
162  throw Error("SecPublicInfoMemory::getAllCertificateNames not implemented");
163 }
164 
165 void
166 SecPublicInfoMemory::getAllCertificateNamesOfKey(const Name& keyName,
167  std::vector<Name>& nameList,
168  bool isDefault)
169 {
170  throw Error("SecPublicInfoMemory::getAllCertificateNamesOfKey not implemented");
171 }
172 
173 void
174 SecPublicInfoMemory::deleteCertificateInfo(const Name& certName)
175 {
176  throw Error("SecPublicInfoMemory::deleteCertificateInfo not implemented");
177 }
178 
179 void
180 SecPublicInfoMemory::deletePublicKeyInfo(const Name& keyName)
181 {
182  throw Error("SecPublicInfoMemory::deletePublicKeyInfo not implemented");
183 }
184 
185 void
186 SecPublicInfoMemory::deleteIdentityInfo(const Name& identityName)
187 {
188  throw Error("SecPublicInfoMemory::deleteIdentityInfo not implemented");
189 }
190 
191 } // namespace ndn
Name getPrefix(int nComponents) const
Return a new Name with the first nComponents components of this Name.
Definition: name.hpp:240
PublicKey & getPublicKeyInfo()
const Name & getName() const
Definition: data.hpp:346
std::string toUri() const
Encode this name as a URI.
Definition: name.hpp:536
A Name holds an array of Name::Component and represents an NDN name.
Definition: name.hpp:26
const Name & getPublicKeyName() const