LibLogicalAccess  2.5.0
An Open Source RFID Library
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
logicalaccess::LibraryManager Class Reference

#include <librarymanager.hpp>

Public Types

enum  LibraryType { READERS_TYPE = 0 , CARDS_TYPE = 1 , UNIFIED_TYPE = 2 }
 

Public Member Functions

void * getFctFromName (const std::string &fctname, LibraryType libraryType)
 
std::shared_ptr< ReaderProvidergetReaderProvider (const std::string &readertype)
 
std::shared_ptr< ReaderUnitgetReader (const std::string &readerName)
 
std::shared_ptr< ChipgetCard (const std::string &cardtype)
 
std::shared_ptr< CommandsgetCommands (const std::string &extendedtype)
 
std::shared_ptr< RemoteCryptogetRemoteCrypto (const iks::IslogKeyServer::IKSConfig &cfg)
 
std::shared_ptr< RemoteCryptogetRemoteCrypto ()
 
std::shared_ptr< IAESCryptoServicegetPKCSAESCrypto (const std::string &env_PROTECCIO_CONF_DIR, const std::string &pkcs_library_shared_object_path)
 
std::shared_ptr< KeyDiversificationgetKeyDiversification (const std::string &keydivtype)
 
std::shared_ptr< CardServicegetCardService (std::shared_ptr< Chip > chip, CardServiceType type)
 
ReaderServicePtr getReaderService (ReaderUnitPtr reader, ReaderServiceType type)
 
std::vector< std::string > getAvailableCards ()
 
std::vector< std::string > getAvailableReaders ()
 
void scanPlugins ()
 

Static Public Member Functions

static LibraryManagergetInstance ()
 
static std::shared_ptr< DataTransportgetDataTransport (const std::string &transporttype)
 
static std::vector< std::string > getAvailableDataTransports ()
 

Protected Member Functions

std::vector< std::string > getAvailablePlugins (LibraryType libraryType)
 

Static Protected Member Functions

static void getAvailablePlugins (std::vector< std::string > &plugins, getobjectinfoat objectinfoptr)
 

Private Member Functions

 LibraryManager ()=default
 
 ~LibraryManager ()=default
 

Static Private Member Functions

static bool hasEnding (std::string const &fullString, std::string ending)
 

Private Attributes

std::recursive_mutex mutex_
 
std::map< std::string, IDynLibrary * > libLoaded
 

Static Private Attributes

static const std::string enumType [3] = {"readers", "cards", "unified"}
 

Member Enumeration Documentation

◆ LibraryType

Enumerator
READERS_TYPE 
CARDS_TYPE 
UNIFIED_TYPE 

Constructor & Destructor Documentation

◆ LibraryManager()

logicalaccess::LibraryManager::LibraryManager ( )
privatedefault

◆ ~LibraryManager()

logicalaccess::LibraryManager::~LibraryManager ( )
privatedefault

Member Function Documentation

◆ getAvailableCards()

std::vector< std::string > logicalaccess::LibraryManager::getAvailableCards ( )

◆ getAvailableDataTransports()

std::vector< std::string > logicalaccess::LibraryManager::getAvailableDataTransports ( )
static

◆ getAvailablePlugins() [1/2]

std::vector< std::string > logicalaccess::LibraryManager::getAvailablePlugins ( LibraryType  libraryType)
protected

◆ getAvailablePlugins() [2/2]

void logicalaccess::LibraryManager::getAvailablePlugins ( std::vector< std::string > &  plugins,
getobjectinfoat  objectinfoptr 
)
staticprotected

◆ getAvailableReaders()

std::vector< std::string > logicalaccess::LibraryManager::getAvailableReaders ( )

◆ getCard()

std::shared_ptr< Chip > logicalaccess::LibraryManager::getCard ( const std::string &  cardtype)

◆ getCardService()

std::shared_ptr< CardService > logicalaccess::LibraryManager::getCardService ( std::shared_ptr< Chip chip,
CardServiceType  type 
)

Retrieve a Service object for a given CardServiceType.

This gives a chance to library to offer a customized service based on the chip/reader combination.

Use case: Fetch an UIDChanger service from the LLA-NFC plugin for a Mifare Classic card.

◆ getCommands()

std::shared_ptr< Commands > logicalaccess::LibraryManager::getCommands ( const std::string &  extendedtype)

◆ getDataTransport()

std::shared_ptr< DataTransport > logicalaccess::LibraryManager::getDataTransport ( const std::string &  transporttype)
static

◆ getFctFromName()

void * logicalaccess::LibraryManager::getFctFromName ( const std::string &  fctname,
LibraryType  libraryType 
)

◆ getInstance()

LibraryManager * logicalaccess::LibraryManager::getInstance ( )
static

◆ getKeyDiversification()

std::shared_ptr< KeyDiversification > logicalaccess::LibraryManager::getKeyDiversification ( const std::string &  keydivtype)

◆ getPKCSAESCrypto()

std::shared_ptr< IAESCryptoService > logicalaccess::LibraryManager::getPKCSAESCrypto ( const std::string &  env_PROTECCIO_CONF_DIR,
const std::string &  pkcs_library_shared_object_path 
)

Retrieve an AESCryptoService backed by PKCS code.

The PROTECCIO_CONF_DIR variable is passed here, but shouldn't because this is specific to atosnethsm. pkcs_library_shared_object_path is passed to our cppkcs library and will be used as the underlying PKCS library implementation.

◆ getReader()

std::shared_ptr< ReaderUnit > logicalaccess::LibraryManager::getReader ( const std::string &  readerName)

Attempt to find a suitable library that can build a ReaderUnit for a reader named readerName.

Returns the allocated ReaderUnit object or NULL on failure.

◆ getReaderProvider()

std::shared_ptr< ReaderProvider > logicalaccess::LibraryManager::getReaderProvider ( const std::string &  readertype)

◆ getReaderService()

ReaderServicePtr logicalaccess::LibraryManager::getReaderService ( ReaderUnitPtr  reader,
ReaderServiceType  type 
)

Retrieve a Service object for a given ReaderServiceType.

Similarly to getCardService(), this call gives LLA plugins a chance to provide an implementation for a reader/service-type combination.

◆ getRemoteCrypto() [1/2]

std::shared_ptr< RemoteCrypto > logicalaccess::LibraryManager::getRemoteCrypto ( )

◆ getRemoteCrypto() [2/2]

std::shared_ptr< RemoteCrypto > logicalaccess::LibraryManager::getRemoteCrypto ( const iks::IslogKeyServer::IKSConfig cfg)

Retrieve an implementation of RemoteCrypto (IKS).

We rely on the LibraryManager is order to avoid link-time dependencies on the IKS code.

◆ hasEnding()

bool logicalaccess::LibraryManager::hasEnding ( std::string const &  fullString,
std::string  ending 
)
staticprivate

◆ scanPlugins()

void logicalaccess::LibraryManager::scanPlugins ( )

Member Data Documentation

◆ enumType

const std::string logicalaccess::LibraryManager::enumType = {"readers", "cards", "unified"}
staticprivate

◆ libLoaded

std::map<std::string, IDynLibrary *> logicalaccess::LibraryManager::libLoaded
private

◆ mutex_

std::recursive_mutex logicalaccess::LibraryManager::mutex_
mutableprivate

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