# SecurityServer Class Reference

`#include <SecurityServer.hh>`

List of all members.

## Public Member Functions
| SecurityServer (SocketServer &, AuditFile &, Handle)
| SecurityServer constructor.
| ~SecurityServer ()
| Removes existing SecurityLevel instances before deleting instance.
Handle | federation () const
Socket * | getSocketLink (FederateHandle theFederate, TransportType theType=RELIABLE) const
bool | dominates (SecurityLevelID A, SecurityLevelID B) const
| Compares two security level ID.
bool | canFederateAccessData (FederateHandle theFederate, SecurityLevelID theDataLevelID)
SecurityLevelID | getLevelIDWithName (const char *theName)
| Returns the level ID associated with name otherwise creates a new one.
void | registerFederate (const char *the_federate, SecurityLevelID the_level_id)
| Register a new federate with security level id.
## Public Attributes
AuditFile & | audit
| This part of the security server is linked to the RTIG Audit Server.
## Private Member Functions
SecurityLevelID | getLevel (const char *theFederate) const
| Returns the federate level id stored in a FederateLevelList.
void | insertPublicLevel ()
| Insert the public level name and id into the list.
## Private Attributes
Handle | myFederation
SocketServer & | RTIG_SocketServer
SecurityLevelID | LastLevelID
| Last Level ID attributed.
FederateLevelList | FedLevelList

## Detailed Description

This class is an interface at the Federation Level for the previous class, where the Federation Handle is constant for all calls. It also adds security features, like a mapping between Security Levels Names and Level IDs, and a method to check if a Federate has a valid clearance to access Data at a certain level.

Liste dynamique gerant la securite des donnees, en affectant des numeros aux differents niveaux de securite, des niveaux a chacun des federes, et en reglementant les acces aux donnees par les federes.

Definition at line 48 of file SecurityServer.hh.

## Constructor & Destructor Documentation

SecurityServer | ( | SocketServer & | theRTIGServer,
|  | AuditFile & | theAuditServer,
|  | Handle | theFederation |
| ) |  |  |

SecurityServer constructor.

Definition at line 112 of file SecurityServer.cc.

References SecurityServer::myFederation.

~SecurityServer | ( |  | ) |

Removes existing SecurityLevel instances before deleting instance.

Definition at line 126 of file SecurityServer.cc.

## Member Function Documentation

Handle federation | ( |  | ) | const`[inline]`

Definition at line 57 of file SecurityServer.hh.

Referenced by ObjectClass::attributeOwnershipAcquisition(), ObjectClass::attributeOwnershipAcquisitionIfAvailable(), ObjectClass::cancelAttributeOwnershipAcquisition(), ObjectClass::deleteInstance(), ObjectClass::negotiatedAttributeOwnershipDivestiture(), ObjectSet::queryAttributeOwnership(), ObjectClass::registerObjectInstance(), ObjectClass::sendDiscoverMessages(), Interaction::sendInteraction(), ObjectClass::sendToOwners(), ObjectClass::unconditionalAttributeOwnershipDivestiture(), and ObjectClass::updateAttributeValues().

Socket * getSocketLink | ( | FederateHandle | theFederate,
|  | TransportType | theType = `RELIABLE` |
| ) |  |  | const

Each call to this method is passed to the RTIG's SocketServer, by including our Federation Handle.

Definition at line 45 of file SecurityServer.cc.

References SocketServer::getSocketLink(), SecurityServer::myFederation, and SecurityServer::RTIG_SocketServer.

Referenced by Federation::broadcastAnyMessage(), Federation::broadcastSomeMessage(), SecurityServer::canFederateAccessData(), Federation::requestFederationRestore(), Federation::requestObjectOwner(), ObjectClass::sendDiscoverMessages(), ObjectClassBroadcastList::sendPendingDOMessage(), InteractionBroadcastList::sendPendingMessage(), ObjectClassBroadcastList::sendPendingRAVMessage(), ObjectSet::sendToFederate(), and ObjectClass::sendToFederate().

Here is the call graph for this function:

bool dominates | ( | SecurityLevelID | A,
|  | SecurityLevelID | B |
| ) |  |  | const

Compares two security level ID.

Definition at line 60 of file SecurityServer.cc.

References PublicLevelID.

Referenced by SecurityServer::canFederateAccessData(), ObjectClass::setSecurityLevelId(), and Interaction::setSecurityLevelId().

bool canFederateAccessData | ( | FederateHandle | theFederate,
|  | SecurityLevelID | theDataLevelID |
| ) |  |  |

Determines if federate can access to datas. 1- Get the socket of this federate 2- Check if it is a secure socket 3- If yes, retrieve federate principal name. 4- Retrieve Federate level

Definition at line 73 of file SecurityServer.cc.

References SecurityServer::dominates(), SecurityServer::getLevel(), SecureTCPSocket::getPeerName(), SecurityServer::getSocketLink(), and PublicLevelID.

Referenced by ObjectClassAttribute::checkFederateAccess(), ObjectClass::checkFederateAccess(), and Interaction::checkFederateAccess().

Here is the call graph for this function:

SecurityLevelID getLevelIDWithName | ( | const char * | theName | ) |

Returns the level ID associated with name otherwise creates a new one.

Definition at line 145 of file SecurityServer.cc.

References certi::D, certi::fedparser::end(), SecurityServer::insertPublicLevel(), SecurityServer::LastLevelID, MAX_SECURITYLEVELNAME, and pdDebug.

Referenced by RootObject::getSecurityLevelID().

Here is the call graph for this function:

void registerFederate | ( | const char * | the_federate,
|  | SecurityLevelID | the_level_id |
| ) |  |  |

Register a new federate with security level id.

Definition at line 191 of file SecurityServer.cc.

References FederateLevelList::addFederate(), and SecurityServer::FedLevelList.

Referenced by RootObject::registerFederate().

Here is the call graph for this function:

SecurityLevelID getLevel | ( | const char * | theFederate | ) | const`[private]`

Returns the federate level id stored in a FederateLevelList.

Definition at line 137 of file SecurityServer.cc.

References SecurityServer::FedLevelList, and FederateLevelList::getLevel().

Referenced by SecurityServer::canFederateAccessData().

Here is the call graph for this function:

void insertPublicLevel | ( |  | ) | `[private]`

Insert the public level name and id into the list.

Definition at line 176 of file SecurityServer.cc.

References SecurityServer::LastLevelID, PublicLevelID, and PublicLevelName.

Referenced by SecurityServer::getLevelIDWithName().

## Member Data Documentation

AuditFile& audit

This part of the security server is linked to the RTIG Audit Server.

Definition at line 55 of file SecurityServer.hh.

Handle myFederation`[private]`

Definition at line 74 of file SecurityServer.hh.

Referenced by SecurityServer::getSocketLink(), and SecurityServer::SecurityServer().

SocketServer& RTIG_SocketServer`[private]`

Definition at line 75 of file SecurityServer.hh.

Referenced by SecurityServer::getSocketLink().

SecurityLevelID LastLevelID`[private]`

Last Level ID attributed.

Definition at line 77 of file SecurityServer.hh.

Referenced by SecurityServer::getLevelIDWithName(), and SecurityServer::insertPublicLevel().

FederateLevelList FedLevelList`[private]`

Definition at line 78 of file SecurityServer.hh.

Referenced by SecurityServer::getLevel(), and SecurityServer::registerFederate().

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

- SecurityServer.hh
- SecurityServer.cc