NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
ndn::security::pib::PibSqlite3 Class Reference

Pib backend implementation based on SQLite3 database. More...

#include <pib-sqlite3.hpp>

Inheritance diagram for ndn::security::pib::PibSqlite3:
Collaboration diagram for ndn::security::pib::PibSqlite3:

Public Member Functions

 PibSqlite3 (const std::string &location="")
 Create sqlite3-based PIB backed. More...
 
 ~PibSqlite3 ()
 Destruct and cleanup internal state. More...
 
void setTpmLocator (const std::string &tpmLocator) final
 Set the corresponding TPM information to tpmLocator. More...
 
std::string getTpmLocator () const final
 Get TPM Locator. More...
 
bool hasIdentity (const Name &identity) const final
 Check the existence of an identity. More...
 
void addIdentity (const Name &identity) final
 Add an identity. More...
 
void removeIdentity (const Name &identity) final
 Remove an identity and related keys and certificates. More...
 
void clearIdentities () final
 Erasing all certificates, keys, and identities. More...
 
std::set< NamegetIdentities () const final
 Get the name of all the identities. More...
 
void setDefaultIdentity (const Name &identityName) final
 Set an identity with name identityName as the default identity. More...
 
Name getDefaultIdentity () const final
 Get the default identity. More...
 
bool hasKey (const Name &keyName) const final
 Check the existence of a key with keyName. More...
 
void addKey (const Name &identity, const Name &keyName, const uint8_t *key, size_t keyLen) final
 Add a key. More...
 
void removeKey (const Name &keyName) final
 Remove a key with keyName and related certificates. More...
 
Buffer getKeyBits (const Name &keyName) const final
 Get the key bits of a key with name keyName. More...
 
std::set< NamegetKeysOfIdentity (const Name &identity) const final
 Get all the key names of an identity with name identity. More...
 
void setDefaultKeyOfIdentity (const Name &identity, const Name &keyName) final
 Set an key with keyName as the default key of an identity with name identity. More...
 
Name getDefaultKeyOfIdentity (const Name &identity) const final
 
bool hasCertificate (const Name &certName) const final
 Check the existence of a certificate with name certName. More...
 
void addCertificate (const v2::Certificate &certificate) final
 Add a certificate. More...
 
void removeCertificate (const Name &certName) final
 Remove a certificate with name certName. More...
 
v2::Certificate getCertificate (const Name &certName) const final
 Get a certificate with name certName. More...
 
std::set< NamegetCertificatesOfKey (const Name &keyName) const final
 Get a list of certificate names of a key with id keyName. More...
 
void setDefaultCertificateOfKey (const Name &keyName, const Name &certName) final
 Set a cert with name certName as the default of a key with keyName. More...
 
v2::Certificate getDefaultCertificateOfKey (const Name &keyName) const final
 
- Public Member Functions inherited from ndn::security::pib::PibImpl
virtual ~PibImpl ()=default
 

Static Public Member Functions

static const std::string & getScheme ()
 

Detailed Description

Pib backend implementation based on SQLite3 database.

All the contents in Pib are stored in a SQLite3 database file. This backend provides more persistent storage than PibMemory.

Definition at line 39 of file pib-sqlite3.hpp.

Constructor & Destructor Documentation

◆ PibSqlite3()

ndn::security::pib::PibSqlite3::PibSqlite3 ( const std::string &  location = "")
explicit

Create sqlite3-based PIB backed.

This method will create a SQLite3 database file under the directory location. If the directory does not exist, it will be created automatically. It assumes that the directory does not contain a PIB database of an older version, It is user's responsibility to update the older version database or remove the database.

Parameters
locationThe directory where the database file is located. By default, it points to the $HOME/.ndn directory.
Exceptions
PibImpl::Errorwhen initialization fails.

Definition at line 194 of file pib-sqlite3.cpp.

References ndn::security::pib::INITIALIZATION, and NDN_THROW.

◆ ~PibSqlite3()

ndn::security::pib::PibSqlite3::~PibSqlite3 ( )

Destruct and cleanup internal state.

Definition at line 241 of file pib-sqlite3.cpp.

Member Function Documentation

◆ getScheme()

const std::string & ndn::security::pib::PibSqlite3::getScheme ( )
static

Definition at line 247 of file pib-sqlite3.cpp.

◆ setTpmLocator()

void ndn::security::pib::PibSqlite3::setTpmLocator ( const std::string &  tpmLocator)
finalvirtual

Set the corresponding TPM information to tpmLocator.

This method does not reset contents of the PIB

Implements ndn::security::pib::PibImpl.

Definition at line 254 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), and ndn::util::Sqlite3Statement::step().

◆ getTpmLocator()

std::string ndn::security::pib::PibSqlite3::getTpmLocator ( ) const
finalvirtual

Get TPM Locator.

Implements ndn::security::pib::PibImpl.

Definition at line 269 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::getString(), and ndn::util::Sqlite3Statement::step().

◆ hasIdentity()

bool ndn::security::pib::PibSqlite3::hasIdentity ( const Name identity) const
finalvirtual

Check the existence of an identity.

Parameters
identityThe name of the identity.
Returns
true if the identity exists, otherwise false.

Implements ndn::security::pib::PibImpl.

Definition at line 280 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

Referenced by addIdentity(), and getDefaultKeyOfIdentity().

◆ addIdentity()

void ndn::security::pib::PibSqlite3::addIdentity ( const Name identity)
finalvirtual

Add an identity.

If the identity already exists, do nothing. If no default identity has been set, set the added one as default identity.

Parameters
identityThe name of the identity to add.

Implements ndn::security::pib::PibImpl.

Definition at line 288 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), hasIdentity(), setDefaultIdentity(), ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

Referenced by addKey().

◆ removeIdentity()

void ndn::security::pib::PibSqlite3::removeIdentity ( const Name identity)
finalvirtual

Remove an identity and related keys and certificates.

If the default identity is being removed, no default identity will be selected. If the identity does not exist, do nothing.

Parameters
identityThe name of the identity to remove.

Implements ndn::security::pib::PibImpl.

Definition at line 302 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

◆ clearIdentities()

void ndn::security::pib::PibSqlite3::clearIdentities ( )
finalvirtual

Erasing all certificates, keys, and identities.

Implements ndn::security::pib::PibImpl.

Definition at line 310 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::step().

◆ getIdentities()

std::set< Name > ndn::security::pib::PibSqlite3::getIdentities ( ) const
finalvirtual

Get the name of all the identities.

Implements ndn::security::pib::PibImpl.

Definition at line 317 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::getBlock(), ns3::ndn::Name, and ndn::util::Sqlite3Statement::step().

◆ setDefaultIdentity()

void ndn::security::pib::PibSqlite3::setDefaultIdentity ( const Name identityName)
finalvirtual

Set an identity with name identityName as the default identity.

If identityName identity does not exist, it will be created.

Parameters
identityNameThe name for the default identity.

Implements ndn::security::pib::PibImpl.

Definition at line 329 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

Referenced by addIdentity().

◆ getDefaultIdentity()

Name ndn::security::pib::PibSqlite3::getDefaultIdentity ( ) const
finalvirtual

Get the default identity.

Returns
The name for the default identity.
Exceptions
Pib::Errorno default identity.

Implements ndn::security::pib::PibImpl.

Definition at line 337 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::getBlock(), ns3::ndn::Name, NDN_THROW, and ndn::util::Sqlite3Statement::step().

◆ hasKey()

bool ndn::security::pib::PibSqlite3::hasKey ( const Name keyName) const
finalvirtual

Check the existence of a key with keyName.

Returns
true if the key exists, otherwise false. Return false if the identity does not exist

Implements ndn::security::pib::PibImpl.

Definition at line 355 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

Referenced by addKey(), and setDefaultKeyOfIdentity().

◆ addKey()

void ndn::security::pib::PibSqlite3::addKey ( const Name identity,
const Name keyName,
const uint8_t *  key,
size_t  keyLen 
)
finalvirtual

Add a key.

If a key with the same name already exists, overwrite the key. If the identity does not exist, it will be created. If no default key of the identity has been set, set the added one as default key of the identity. If no default identity has been set, identity becomes the default.

Parameters
identityThe name of the belonged identity.
keyNameThe key name.
keyThe public key bits.
keyLenThe length of the public key.

Implements ndn::security::pib::PibImpl.

Definition at line 364 of file pib-sqlite3.cpp.

References addIdentity(), ndn::util::Sqlite3Statement::bind(), hasKey(), setDefaultKeyOfIdentity(), ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

Referenced by addCertificate().

◆ removeKey()

void ndn::security::pib::PibSqlite3::removeKey ( const Name keyName)
finalvirtual

Remove a key with keyName and related certificates.

If the key does not exist, do nothing.

Implements ndn::security::pib::PibImpl.

Definition at line 393 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

◆ getKeyBits()

Buffer ndn::security::pib::PibSqlite3::getKeyBits ( const Name keyName) const
finalvirtual

Get the key bits of a key with name keyName.

Returns
key bits
Exceptions
Pib::Errorthe key does not exist.

Implements ndn::security::pib::PibImpl.

Definition at line 401 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::getBlob(), ndn::util::Sqlite3Statement::getSize(), NDN_THROW, ndn::util::Sqlite3Statement::step(), ndn::Name::toUri(), and ndn::Name::wireEncode().

◆ getKeysOfIdentity()

std::set< Name > ndn::security::pib::PibSqlite3::getKeysOfIdentity ( const Name identity) const
finalvirtual

Get all the key names of an identity with name identity.

The returned key names can be used to create a KeyContainer. With key name and backend implementation, one can create a Key frontend instance.

Returns
the key name component set. If the identity does not exist, return an empty set.

Implements ndn::security::pib::PibImpl.

Definition at line 413 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::getBlock(), ns3::ndn::Name, ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

◆ setDefaultKeyOfIdentity()

void ndn::security::pib::PibSqlite3::setDefaultKeyOfIdentity ( const Name identity,
const Name keyName 
)
finalvirtual

Set an key with keyName as the default key of an identity with name identity.

Exceptions
Pib::Errorthe key does not exist.

Implements ndn::security::pib::PibImpl.

Definition at line 431 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), hasKey(), NDN_THROW, ndn::util::Sqlite3Statement::step(), ndn::Name::toUri(), and ndn::Name::wireEncode().

Referenced by addKey().

◆ getDefaultKeyOfIdentity()

Name ndn::security::pib::PibSqlite3::getDefaultKeyOfIdentity ( const Name identity) const
finalvirtual
Returns
The name of the default key of an identity with name identity.
Exceptions
Pib::Errorno default key or the identity does not exist.

Implements ndn::security::pib::PibImpl.

Definition at line 443 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::getBlock(), hasIdentity(), ns3::ndn::Name, NDN_THROW, ndn::util::Sqlite3Statement::step(), ndn::Name::toUri(), and ndn::Name::wireEncode().

◆ hasCertificate()

bool ndn::security::pib::PibSqlite3::hasCertificate ( const Name certName) const
finalvirtual

Check the existence of a certificate with name certName.

Parameters
certNameThe name of the certificate.
Returns
true if the certificate exists, otherwise false.

Implements ndn::security::pib::PibImpl.

Definition at line 475 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

Referenced by addCertificate(), and setDefaultCertificateOfKey().

◆ addCertificate()

void ndn::security::pib::PibSqlite3::addCertificate ( const v2::Certificate certificate)
finalvirtual

Add a certificate.

If a certificate with the same name (without implicit digest) already exists, overwrite the certificate. If the key or identity does not exist, they will be created. If no default certificate of the key has been set, set the added one as default certificate of the key. If no default key was set for the identity, it will be set as default key for the identity. If no default identity was selected, the certificate's identity becomes default.

Parameters
certificateThe certificate to add.

Implements ndn::security::pib::PibImpl.

Definition at line 483 of file pib-sqlite3.cpp.

References addKey(), ndn::util::Sqlite3Statement::bind(), ndn::Data::getContent(), ndn::security::v2::Certificate::getIdentity(), ndn::security::v2::Certificate::getKeyName(), ndn::Data::getName(), hasCertificate(), setDefaultCertificateOfKey(), ndn::util::Sqlite3Statement::step(), ndn::Block::value(), ndn::Block::value_size(), ndn::Data::wireEncode(), and ndn::Name::wireEncode().

◆ removeCertificate()

void ndn::security::pib::PibSqlite3::removeCertificate ( const Name certName)
finalvirtual

Remove a certificate with name certName.

If the certificate does not exist, do nothing.

Parameters
certNameThe name of the certificate.

Implements ndn::security::pib::PibImpl.

Definition at line 513 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

◆ getCertificate()

v2::Certificate ndn::security::pib::PibSqlite3::getCertificate ( const Name certName) const
finalvirtual

Get a certificate with name certName.

Parameters
certNameThe name of the certificate.
Returns
the certificate.
Exceptions
Pib::Errorthe certificate does not exist.

Implements ndn::security::pib::PibImpl.

Definition at line 521 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::getBlock(), NDN_THROW, ndn::util::Sqlite3Statement::step(), ndn::Name::toUri(), and ndn::Name::wireEncode().

◆ getCertificatesOfKey()

std::set< Name > ndn::security::pib::PibSqlite3::getCertificatesOfKey ( const Name keyName) const
finalvirtual

Get a list of certificate names of a key with id keyName.

The returned certificate names can be used to create a CertificateContainer. With certificate name and backend implementation, one can obtain the certificate.

Returns
The certificate name set. If the key does not exist, return an empty set.

Implements ndn::security::pib::PibImpl.

Definition at line 534 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::getBlock(), ns3::ndn::Name, ndn::util::Sqlite3Statement::step(), and ndn::Name::wireEncode().

◆ setDefaultCertificateOfKey()

void ndn::security::pib::PibSqlite3::setDefaultCertificateOfKey ( const Name keyName,
const Name certName 
)
finalvirtual

Set a cert with name certName as the default of a key with keyName.

Exceptions
Pib::Errorthe certificate with name certName does not exist.

Implements ndn::security::pib::PibImpl.

Definition at line 551 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), hasCertificate(), NDN_THROW, ndn::util::Sqlite3Statement::step(), ndn::Name::toUri(), and ndn::Name::wireEncode().

Referenced by addCertificate().

◆ getDefaultCertificateOfKey()

v2::Certificate ndn::security::pib::PibSqlite3::getDefaultCertificateOfKey ( const Name keyName) const
finalvirtual
Returns
Get the default certificate of a key with keyName.
Exceptions
Pib::Errorthe default certificate does not exist.

Implements ndn::security::pib::PibImpl.

Definition at line 564 of file pib-sqlite3.cpp.

References ndn::util::Sqlite3Statement::bind(), ndn::util::Sqlite3Statement::getBlock(), NDN_THROW, ndn::util::Sqlite3Statement::step(), ndn::Name::toUri(), and ndn::Name::wireEncode().


The documentation for this class was generated from the following files: