#ifndef __SEC_ENTITY_H__
#define __SEC_ENTITY_H__
/******************************************************************************/
/* */
/* X r d S e c E n t i t y . h h */
/* */
/* (c) 2005 by the Board of Trustees of the Leland Stanford, Jr., University */
/* Produced by Andrew Hanushevsky for Stanford University under contract */
/* DE-AC02-76-SFO0515 with the Department of Energy */
/* */
/* This file is part of the XRootD software suite. */
/* */
/* XRootD is free software: you can redistribute it and/or modify it under */
/* the terms of the GNU Lesser General Public License as published by the */
/* Free Software Foundation, either version 3 of the License, or (at your */
/* option) any later version. */
/* */
/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
/* License for more details. */
/* */
/* You should have received a copy of the GNU Lesser General Public License */
/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
/* COPYING (GPL license). If not, see . */
/* */
/* The copyright holder's institutional names and contributor's names may not */
/* be used to endorse or promote products derived from this software without */
/* specific prior written permission of the institution or contributor. */
/******************************************************************************/
//------------------------------------------------------------------------------
//! This object is returned during authentication. This is most relevant for
//! client authentication unless mutual authentication has been implemented
//! in which case the client can also authenticate the server. It is embeded
//! in each protocol object to facilitate mutual authentication. Note that the
//! destructor does nothing and it is the responsibility of the protocol object
//! to delete the XrdSecEntity data members, if need be.
//!
//! Note: The host member contents are depdent on the dnr/nodnr setting and
//! and contain a host name or an IP address. To get the real host name
//! use addrInfo->Name(), this is required for any hostname comparisons.
//------------------------------------------------------------------------------
#include
#define XrdSecPROTOIDSIZE 8
class XrdNetAddrInfo;
class XrdSecEntity
{
public:
char prot[XrdSecPROTOIDSIZE]; // Protocol used
char *name; // Entity's name
char *host; // Entity's host name dnr dependent
char *vorg; // Entity's virtual organization
char *role; // Entity's role
char *grps; // Entity's group names
char *endorsements; // Protocol specific endorsements
char *moninfo; // Additional information for monitoring
char *creds; // Raw client credentials or certificate
int credslen; // Length of the 'creds' field
int rsvd; // Reserved field
XrdNetAddrInfo *addrInfo; // Connection details from getProtocol
const char *tident; // Trace identifier always preset
void *sessvar; // Plugin settable storage pointer
// that is common to the session. Free
// it in your XrdSfsFileSystem::Disc()
// implementation, as needed.
XrdSecEntity(const char *pName = "")
{Reset();
strncpy(prot, pName, XrdSecPROTOIDSIZE-1);
prot[XrdSecPROTOIDSIZE-1] = '\0';
}
~XrdSecEntity() {}
void Reset()
{
memset( prot, 0, XrdSecPROTOIDSIZE );
name = 0;
host = 0;
vorg = 0;
role = 0;
grps = 0;
endorsements = 0;
moninfo = 0;
creds = 0;
credslen = 0;
rsvd = 0;
addrInfo = 0;
tident = 0;
sessvar = 0;
}
};
#define XrdSecClientName XrdSecEntity
#define XrdSecServerName XrdSecEntity
#endif