24 #include "../security-common.hpp" 31 : m_hasDefaultIdentity(false)
38 static std::string scheme =
"pib-memory";
45 m_tpmLocator = tpmLocator;
57 return (m_identities.count(identity) > 0);
63 m_identities.insert(identity);
65 if (!m_hasDefaultIdentity) {
66 m_defaultIdentity = identity;
67 m_hasDefaultIdentity =
true;
74 m_identities.erase(identity);
75 if (identity == m_defaultIdentity) {
76 m_hasDefaultIdentity =
false;
77 m_defaultIdentity.
clear();
81 for (
const Name& keyName : keyNames) {
89 m_hasDefaultIdentity =
false;
90 m_defaultIdentity.
clear();
92 m_defaultKeys.clear();
94 m_defaultCerts.clear();
108 m_defaultIdentity = identityName;
109 m_hasDefaultIdentity =
true;
115 if (m_hasDefaultIdentity) {
116 return m_defaultIdentity;
119 BOOST_THROW_EXCEPTION(
Pib::Error(
"No default identity"));
125 return (m_keys.count(keyName) > 0);
130 const uint8_t* key,
size_t keyLen)
134 m_keys[keyName] =
Buffer(key, keyLen);
136 if (m_defaultKeys.count(identity) == 0) {
137 m_defaultKeys[identity] = keyName;
146 m_keys.erase(keyName);
147 m_defaultKeys.erase(identity);
150 for (
const auto& certName : certNames) {
159 BOOST_THROW_EXCEPTION(
Pib::Error(
"Key `" + keyName.
toUri() +
"` not found"));
162 auto key = m_keys.find(keyName);
163 BOOST_ASSERT(key != m_keys.end());
171 for (
const auto& key : m_keys) {
173 ids.insert(key.first);
183 BOOST_THROW_EXCEPTION(
Pib::Error(
"Key `" + keyName.
toUri() +
"` not found"));
186 m_defaultKeys[identity] = keyName;
192 auto defaultKey = m_defaultKeys.find(identity);
193 if (defaultKey == m_defaultKeys.end()) {
194 BOOST_THROW_EXCEPTION(
Pib::Error(
"No default key for identity `" + identity.
toUri() +
"`"));
197 return defaultKey->second;
203 return (m_certs.count(certName) > 0);
215 m_certs[certName] = certificate;
216 if (m_defaultCerts.count(keyName) == 0) {
217 m_defaultCerts[keyName] = certName;
224 m_certs.erase(certName);
226 if (defaultCert != m_defaultCerts.end() && defaultCert->second == certName) {
227 m_defaultCerts.erase(defaultCert);
235 BOOST_THROW_EXCEPTION(
Pib::Error(
"Certificate `" + certName.
toUri() +
"` does not exist"));
238 auto it = m_certs.find(certName);
245 std::set<Name> certNames;
246 for (
const auto& it : m_certs) {
248 certNames.insert(it.first);
258 BOOST_THROW_EXCEPTION(
Pib::Error(
"Certificate `" + certName.
toUri() +
"` does not exist"));
261 m_defaultCerts[keyName] = certName;
267 auto it = m_defaultCerts.find(keyName);
268 if (it == m_defaultCerts.end()) {
269 BOOST_THROW_EXCEPTION(
Pib::Error(
"No default certificate for key `" + keyName.
toUri() +
"`"));
272 auto certIt = m_certs.find(it->second);
273 BOOST_ASSERT(certIt != m_certs.end());
274 return certIt->second;
bool hasIdentity(const Name &identity) const override
Check the existence of an identity.
Copyright (c) 2011-2015 Regents of the University of California.
The certificate following the certificate format naming convention.
represents a semantic error
Name getDefaultKeyOfIdentity(const Name &identity) const override
Name getKeyName() const
Get key name.
void clearIdentities() override
Erasing all certificates, keys, and identities.
static const std::string & getScheme()
void removeKey(const Name &keyName) override
Remove a key with keyName and related certificates.
void removeIdentity(const Name &identity) override
Remove an identity and related keys and certificates.
void addCertificate(const v2::Certificate &certificate) override
Add a certificate.
std::string getTpmLocator() const override
Get TPM Locator.
Name extractKeyNameFromCertName(const Name &certName)
Extract key name from the certificate name certName.
void setDefaultCertificateOfKey(const Name &keyName, const Name &certName) override
Set a cert with name certName as the default of a key with keyName.
std::set< Name > getIdentities() const override
Get the name of all the identities.
bool hasKey(const Name &keyName) const override
Check the existence of a key with keyName.
PibMemory(const std::string &location="")
Create memory based PIB backend.
void setTpmLocator(const std::string &tpmLocator) override
Set the corresponding TPM information to tpmLocator.
Catch-all error for security policy errors that don't fit in other categories.
std::string toUri() const
Get URI representation of the name.
void setDefaultKeyOfIdentity(const Name &identity, const Name &keyName) override
Set an key with keyName as the default key of an identity with name identity.
void removeCertificate(const Name &certName) override
Remove a certificate with name certName.
Name getDefaultIdentity() const override
Get the default identity.
void addKey(const Name &identity, const Name &keyName, const uint8_t *key, size_t keyLen) override
Add a key.
Name getIdentity() const
Get identity name.
Represents an absolute name.
size_t value_size() const
Get size of TLV-VALUE aka TLV-LENGTH.
const Name & getName() const
Get name.
v2::Certificate getCertificate(const Name &certName) const override
Get a certificate with name certName.
void setDefaultIdentity(const Name &identityName) override
Set an identity with name identityName as the default identity.
const Block & getContent() const
Get Content.
bool hasCertificate(const Name &certName) const override
Check the existence of a certificate with name certName.
void addIdentity(const Name &identity) override
Add an identity.
const uint8_t * value() const
Get pointer to TLV-VALUE.
v2::Certificate getDefaultCertificateOfKey(const Name &keyName) const override
Buffer getKeyBits(const Name &keyName) const override
Get the key bits of a key with name keyName.
Name extractIdentityFromKeyName(const Name &keyName)
Extract identity namespace from the key name keyName.
General-purpose automatically managed/resized buffer.
void clear()
Remove all components.
std::set< Name > getKeysOfIdentity(const Name &identity) const override
Get all the key names of an identity with name identity.
std::set< Name > getCertificatesOfKey(const Name &keyName) const override
Get a list of certificate names of a key with id keyName.