xrootd
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
XrdSecProtocolpwd Class Reference

#include <XrdSecProtocolpwd.hh>

Inheritance diagram for XrdSecProtocolpwd:
Inheritance graph
[legend]
Collaboration diagram for XrdSecProtocolpwd:
Collaboration graph
[legend]

Public Member Functions

int Authenticate (XrdSecCredentials *cred, XrdSecParameters **parms, XrdOucErrInfo *einfo=0)
 
XrdSecCredentialsgetCredentials (XrdSecParameters *parm=0, XrdOucErrInfo *einfo=0)
 
 XrdSecProtocolpwd (int opts, const char *hname, const struct sockaddr *ipadd, const char *parms=0)
 
virtual ~XrdSecProtocolpwd ()
 
void Delete ()
 Delete the protocol object. DO NOT use C++ delete() on this object. More...
 
- Public Member Functions inherited from XrdSecProtocol
virtual int Encrypt (const char *, int, XrdSecBuffer **)
 
virtual int Decrypt (const char *, int, XrdSecBuffer **)
 
virtual int Sign (const char *, int, XrdSecBuffer **)
 
virtual int Verify (const char *, int, const char *, int)
 
virtual int getKey (char *=0, int=0)
 
virtual int setKey (char *, int)
 
 XrdSecProtocol (const char *pName)
 Constructor. More...
 

Static Public Member Functions

static char * Init (pwdOptions o, XrdOucErrInfo *erp)
 
static void PrintTimeStat ()
 
static XrdOucTraceEnableTracing ()
 

Private Member Functions

int ParseClientInput (XrdSutBuffer *br, XrdSutBuffer **bm, String &emsg)
 
int ParseServerInput (XrdSutBuffer *br, XrdSutBuffer **bm, String &cmsg)
 
int ParseCrypto (XrdSutBuffer *buf)
 
XrdSecCredentialsErrC (XrdOucErrInfo *einfo, XrdSutBuffer *b1, XrdSutBuffer *b2, XrdSutBuffer *b3, kXR_int32 ecode, const char *msg1=0, const char *msg2=0, const char *msg3=0)
 
int ErrS (String ID, XrdOucErrInfo *einfo, XrdSutBuffer *b1, XrdSutBuffer *b2, XrdSutBuffer *b3, kXR_int32 ecode, const char *msg1=0, const char *msg2=0, const char *msg3=0)
 
XrdSutBucketQueryCreds (XrdSutBuffer *bm, bool netrc, int &status)
 
int QueryUser (int &status, String &cmsg)
 
int QueryCrypt (String &fn, String &pwhash)
 
int QueryNetRc (String host, String &passwd, int &status)
 
bool CheckCreds (XrdSutBucket *creds, int credtype)
 
bool CheckCredsAFS (XrdSutBucket *creds, int ctype)
 
bool CheckTimeStamp (XrdSutBuffer *b, int skew, String &emsg)
 
bool CheckRtag (XrdSutBuffer *bm, String &emsg)
 
int ExportCreds (XrdSutBucket *creds)
 
int SaveCreds (XrdSutBucket *creds)
 
int UpdateAlog ()
 
int GetUserHost (String &usr, String &host)
 
int AddSerialized (char opt, kXR_int32 step, String ID, XrdSutBuffer *bls, XrdSutBuffer *buf, kXR_int32 type, XrdCryptoCipher *cip)
 
int DoubleHash (XrdCryptoFactory *cf, XrdSutBucket *bck, XrdSutBucket *s1, XrdSutBucket *s2=0, const char *tag=0)
 

Static Private Member Functions

static void ErrF (XrdOucErrInfo *einfo, kXR_int32 ecode, const char *msg1, const char *msg2=0, const char *msg3=0)
 

Private Attributes

int options
 
struct sockaddr hostaddr
 
char CName [256]
 
bool srvMode
 
pwdHSVarshs
 
XrdSecCredentialsclientCreds
 

Static Private Attributes

static XrdSysMutex pwdContext
 
static String FileAdmin = ""
 
static String FileExpCreds = ""
 
static String FileUser = ""
 
static String FileCrypt = "/.xrdpass"
 
static String FileSrvPuk = ""
 
static String SrvID = ""
 
static String SrvEmail = ""
 
static String DefCrypto = "ssl"
 
static String DefError = "insufficient credentials - contact "
 
static XrdSutPFile PFAdmin
 
static XrdSutPFile PFAlog
 
static XrdSutPFile PFSrvPuk
 
static int ncrypt = 0
 
static int cryptID [XrdCryptoMax] = {0}
 
static String cryptName [XrdCryptoMax] = {0}
 
static XrdCryptoCipherloccip [XrdCryptoMax]
 
static XrdCryptoCipherrefcip [XrdCryptoMax] = {0}
 
static XrdSutCache cacheAdmin
 
static XrdSutCache cacheSrvPuk
 
static XrdSutCache cacheUser
 
static XrdSutCache cacheAlog
 
static int Debug = 0
 
static bool Server = 1
 
static int UserPwd = 0
 
static bool SysPwd = 0
 
static int VeriClnt = 2
 
static int VeriSrv = 1
 
static int AutoReg = kpAR_none
 
static int LifeCreds = 0
 
static int MaxPrompts = 3
 
static int MaxFailures = 10
 
static int AutoLogin = 0
 
static int TimeSkew = 300
 
static bool KeepCreds = 0
 
static int FmtExpCreds = 0
 
static XrdSysLogger Logger
 
static XrdSysError eDest
 
static XrdOucTracePWDTrace = 0
 

Additional Inherited Members

- Public Attributes inherited from XrdSecProtocol
XrdSecEntity Entity
 
- Protected Member Functions inherited from XrdSecProtocol
virtual ~XrdSecProtocol ()
 Destructor (prevents use of direct delete). More...
 

Constructor & Destructor Documentation

XrdSecProtocolpwd::XrdSecProtocolpwd ( int  opts,
const char *  hname,
const struct sockaddr *  ipadd,
const char *  parms = 0 
)
virtual XrdSecProtocolpwd::~XrdSecProtocolpwd ( )
inlinevirtual

Member Function Documentation

int XrdSecProtocolpwd::AddSerialized ( char  opt,
kXR_int32  step,
String  ID,
XrdSutBuffer bls,
XrdSutBuffer buf,
kXR_int32  type,
XrdCryptoCipher cip 
)
private
int XrdSecProtocolpwd::Authenticate ( XrdSecCredentials cred,
XrdSecParameters **  parms,
XrdOucErrInfo einfo = 0 
)
virtual

Authenticate a client.

Parameters
credCredentials supplied by the client.
parmsPlace where the address of additional authentication data is to be placed for another autrhentication handshake.
einfoThe error information object where error messages should be placed. The messages are returned to the client. Should einfo be null, messages should be written to stderr.
Returns
> 0 -> parms present (more authentication needed) = 0 -> Entity present (authentication suceeded) < 0 -> einfo present (error has occured)

Implements XrdSecProtocol.

References XrdSutBuffer::AddBucket(), AddSerialized(), XrdOucString::beginswith(), XrdSutBucket::buffer, XrdSecBuffer::buffer, XrdOucString::c_str(), cacheAdmin, CheckCreds(), CheckRtag(), CheckTimeStamp(), clientCreds, ClientStepStr(), CName, XrdSutPFEntry::cnt, pwdHSVars::Cref, cryptID, CryptList, pwdStatus_t::ctype, XrdSutBuffer::Deactivate(), DEBUG, DefError, XrdSutBuffer::Dump(), XrdSecProtocol::Entity, EPNAME, pwdHSVars::ErrMsg, ErrS(), ExportCreds(), FileExpCreds, XrdSutCache::Flush(), XrdSutBuffer::GetBucket(), XrdSutBuffer::GetProtocol(), XrdSutBuffer::GetStep(), pwdHSVars::Hcip, hs, pwdHSVars::ID, KeepCreds, kOptsAFSPwd, kOptsChngPwd, kOptsClntTty, kOptsCrypPwd, kOptsExpCred, kpCT_afs, kpCT_afsenc, kpCT_crypt, kpCT_new, kpCT_normal, kPFE_allowed, kPFE_crypt, kPFE_disabled, kPFE_expired, kPFE_onetime, kpST_error, kpST_more, kpST_ok, kPWErrAddBucket, kPWErrBadCreds, kPWErrBadOpt, kPWErrBadProtocol, kPWErrBadRndmTag, kPWErrDecodeBuffer, kPWErrError, kPWErrLoadCrypto, kPWErrNoPublic, kPWErrParseBuffer, kPWErrSerialBuffer, kXPC_autoreg, kXPC_creds, kXPC_failureack, kXPC_normal, kXPC_signedrtag, kXPC_verifysrv, kXPS_credsreq, kXPS_failure, kXPS_none, kXPS_puk, kXPS_rtag, kXPS_signedrtag, kXRS_afsinfo, kXRS_creds, kXRS_main, kXRS_message, kXRS_puk, kXRS_status, XrdOucString::length(), MaxPrompts, XrdSutPFEntry::mtime, XrdSecEntity::name, XrdSutPFEntry::name, ncrypt, NOTIFY, pwdStatus_t::options, ParseCrypto(), ParseServerInput(), pwdHSVars::Pent, PRINT, XrdSecEntity::prot, pwdContext, QTRACE, QueryUser(), refcip, REL2, pwdHSVars::RemVers, pwdHSVars::RtagOK, SafeDelArray, SafeDelete, SaveCreds(), XrdSutBuffer::Serialized(), ServerStepStr(), XrdSutBucket::size, XrdSecBuffer::size, XrdSutPFEntry::status, pwdHSVars::Step, XrdSecEntity::tident, TimeSkew, pwdHSVars::TimeStamp, XrdSutBucket::ToString(), pwdHSVars::Tty, XrdSutBuffer::UpdateBucket(), pwdHSVars::User, XrdSysPrivGuard::Valid(), VeriClnt, XrdSecPROTOIDENT, XrdSecPROTOIDLEN, and XrdSutToHex().

bool XrdSecProtocolpwd::CheckCreds ( XrdSutBucket creds,
int  credtype 
)
private
bool XrdSecProtocolpwd::CheckCredsAFS ( XrdSutBucket creds,
int  ctype 
)
private

Referenced by CheckCreds().

bool XrdSecProtocolpwd::CheckRtag ( XrdSutBuffer bm,
String emsg 
)
private
bool XrdSecProtocolpwd::CheckTimeStamp ( XrdSutBuffer b,
int  skew,
String emsg 
)
private
void XrdSecProtocolpwd::Delete ( )
virtual

Delete the protocol object. DO NOT use C++ delete() on this object.

Implements XrdSecProtocol.

References XrdSecProtocol::Entity, XrdSecEntity::host, hs, and SafeDelete.

int XrdSecProtocolpwd::DoubleHash ( XrdCryptoFactory cf,
XrdSutBucket bck,
XrdSutBucket s1,
XrdSutBucket s2 = 0,
const char *  tag = 0 
)
private
XrdOucTrace * XrdSecProtocolpwd::EnableTracing ( )
static
XrdSecCredentials * XrdSecProtocolpwd::ErrC ( XrdOucErrInfo einfo,
XrdSutBuffer b1,
XrdSutBuffer b2,
XrdSutBuffer b3,
kXR_int32  ecode,
const char *  msg1 = 0,
const char *  msg2 = 0,
const char *  msg3 = 0 
)
private

References ErrF(), and REL3.

Referenced by getCredentials().

void XrdSecProtocolpwd::ErrF ( XrdOucErrInfo einfo,
kXR_int32  ecode,
const char *  msg1,
const char *  msg2 = 0,
const char *  msg3 = 0 
)
staticprivate
int XrdSecProtocolpwd::ErrS ( String  ID,
XrdOucErrInfo einfo,
XrdSutBuffer b1,
XrdSutBuffer b2,
XrdSutBuffer b3,
kXR_int32  ecode,
const char *  msg1 = 0,
const char *  msg2 = 0,
const char *  msg3 = 0 
)
private

References ErrF(), kpST_error, and REL3.

Referenced by Authenticate().

int XrdSecProtocolpwd::ExportCreds ( XrdSutBucket creds)
private
XrdSecCredentials * XrdSecProtocolpwd::getCredentials ( XrdSecParameters parm = 0,
XrdOucErrInfo einfo = 0 
)
virtual

Generate client credentials to be used in the authentication process.

Parameters
parmPointer to the information returned by the server either in the initial login response or the authmore response.
einfoThe error information object where error messages should be placed. The messages are returned to the client. Should einfo be null, messages should be written to stderr.
Returns
Success: Pointer to credentials to sent to the server. The caller is responsible for deleting the object. Failure: Null pointer with einfo, if supplied, containing the reason for the failure.

Implements XrdSecProtocol.

References XrdSutBuffer::AddBucket(), AddSerialized(), AutoLogin, XrdSutPFEntry::buf1, XrdSutPFEntry::buf2, XrdSutBucket::buffer, XrdSecBuffer::buffer, XrdOucString::c_str(), CheckRtag(), clientCreds, ClientStepStr(), XrdSutPFEntry::cnt, CryptList, pwdHSVars::CryptoMod, pwdStatus_t::ctype, XrdSutBuffer::Deactivate(), DEBUG, XrdSutBuffer::Dump(), EPNAME, ErrC(), pwdHSVars::ErrMsg, XrdSutBuffer::GetBucket(), XrdSutBuffer::GetProtocol(), XrdSutBuffer::GetStep(), pwdHSVars::Hcip, hs, pwdHSVars::ID, pwdHSVars::Iter, kOptsChngPwd, kOptsClntTty, kpCT_afs, kpCT_crypt, kpCT_normal, kPFE_onetime, kPWErrAddBucket, kPWErrBadOpt, kPWErrBadProtocol, kPWErrBadRndmTag, kPWErrCreateBucket, kPWErrDecodeBuffer, kPWErrDuplicateBucket, kPWErrError, kPWErrLoadCrypto, kPWErrNoBuffer, kPWErrNoPublic, kPWErrNoUser, kPWErrParseBuffer, kPWErrQueryCreds, kPWErrSerialBuffer, kXPC_autoreg, kXPC_creds, kXPC_failureack, kXPC_none, kXPC_normal, kXPC_signedrtag, kXPC_verifysrv, kXPS_credsreq, kXPS_failure, kXPS_init, kXPS_newpuk, kXPS_puk, kXPS_rtag, kXPS_signedrtag, kXRS_cryptomod, kXRS_main, kXRS_message, kXRS_puk, kXRS_status, kXRS_user, kXRS_version, XrdOucString::length(), XrdSutBuffer::MarshalBucket(), XrdSutBuffer::Message(), pwdStatus_t::options, pwdHSVars::Parms, ParseClientInput(), ParseCrypto(), pwdHSVars::Pent, PRINT, XrdCryptoCipher::Public(), pwdContext, QTRACE, QueryCreds(), REL2, pwdHSVars::RemVers, SafeDelArray, XrdSutBuffer::Serialized(), ServerStepStr(), XrdSutPFBuf::SetBuf(), XrdSecBuffer::size, srvMode, XrdSutPFEntry::status, pwdHSVars::Step, pwdHSVars::SysPwd, pwdHSVars::Tag, pwdHSVars::TimeStamp, pwdHSVars::Tty, XrdSutBuffer::UpdateBucket(), pwdHSVars::User, VeriSrv, Version, XrdSecPROTOIDENT, and XrdSutBuckStr().

int XrdSecProtocolpwd::GetUserHost ( String usr,
String host 
)
private
char * XrdSecProtocolpwd::Init ( pwdOptions  o,
XrdOucErrInfo erp 
)
static

References AdminRef, pwdOptions::alog, pwdOptions::alogfile, pwdOptions::areg, AutoLogin, AutoReg, XrdSutPFBuf::buf, XrdSutPFEntry::buf1, XrdOucString::c_str(), cacheAdmin, cacheAlog, cacheSrvPuk, cacheUser, XrdCryptoFactory::Cipher(), pwdOptions::clist, pwdOptions::cpass, cryptID, cryptName, cryptoTRACE_Debug, cryptoTRACE_Dump, cryptoTRACE_Notify, DEBUG, pwdOptions::debug, Debug, DefCrypto, DefError, pwdOptions::dir, XrdSutCache::Dump(), XrdOucString::endswith(), EPNAME, XrdOucString::erase(), ErrF(), pwdOptions::expcreds, pwdOptions::expfmt, FileAdmin, FileCrypt, FileExpCreds, FileSrvPuk, FileUser, FmtExpCreds, XrdSutCache::Get(), XrdCryptoFactory::GetCryptoFactory(), XrdCryptoFactory::ID(), XrdSutCache::Init(), XrdSutPFile::Init(), XrdOucString::insert(), XrdSutPFile::IsValid(), pwdOptions::keepcreds, KeepCreds, kPFEcreate, kPWErrError, kPWErrInit, XrdSutPFBuf::len, XrdOucString::length(), pwdOptions::lifecreds, LifeCreds, XrdSutCache::Load(), pwdOptions::maxfailures, MaxFailures, pwdOptions::maxprompts, MaxPrompts, pwdOptions::mode, XrdCryptoFactory::Name(), ncrypt, NOTIFY, PFAdmin, PFAlog, PFSrvPuk, Prefix, PRINT, PWDTrace, QTRACE, XrdSutPFile::ReadEntry(), refcip, XrdOucString::rfind(), Server, XrdSutBucket::SetBuf(), XrdCryptoFactory::SetTrace(), SrvEmail, SrvID, pwdOptions::srvpuk, stat(), sutTRACE_Debug, sutTRACE_Dump, sutTRACE_Notify, pwdOptions::syspwd, SysPwd, XrdOucString::tokenize(), TRACE_ALL, TRACE_Authen, TRACE_Debug, pwdOptions::udir, XrdSutCacheRef::UnLock(), pwdOptions::upwd, UserPwd, UserRef, XrdSysPrivGuard::Valid(), pwdOptions::vericlnt, VeriClnt, pwdOptions::verisrv, VeriSrv, Version, XrdOucTrace::What, XrdCryptoMax, XrdCryptoSetTrace(), XrdSutExpand(), XrdSutHome(), XrdSutMkdir(), and XrdSutSetTrace().

Referenced by XrdSecProtocolpwdInit().

int XrdSecProtocolpwd::ParseClientInput ( XrdSutBuffer br,
XrdSutBuffer **  bm,
String emsg 
)
private
int XrdSecProtocolpwd::ParseCrypto ( XrdSutBuffer buf)
private
int XrdSecProtocolpwd::ParseServerInput ( XrdSutBuffer br,
XrdSutBuffer **  bm,
String cmsg 
)
private
static void XrdSecProtocolpwd::PrintTimeStat ( )
static
XrdSutBucket * XrdSecProtocolpwd::QueryCreds ( XrdSutBuffer bm,
bool  netrc,
int &  status 
)
private
int XrdSecProtocolpwd::QueryCrypt ( String fn,
String pwhash 
)
private
int XrdSecProtocolpwd::QueryNetRc ( String  host,
String passwd,
int &  status 
)
private
int XrdSecProtocolpwd::QueryUser ( int &  status,
String cmsg 
)
private
int XrdSecProtocolpwd::SaveCreds ( XrdSutBucket creds)
private
int XrdSecProtocolpwd::UpdateAlog ( )
private

Member Data Documentation

int XrdSecProtocolpwd::AutoLogin = 0
staticprivate
int XrdSecProtocolpwd::AutoReg = kpAR_none
staticprivate

Referenced by Init(), and QueryUser().

XrdSutCache XrdSecProtocolpwd::cacheAdmin
staticprivate
XrdSutCache XrdSecProtocolpwd::cacheAlog
staticprivate

Referenced by Init(), QueryCreds(), and UpdateAlog().

XrdSutCache XrdSecProtocolpwd::cacheSrvPuk
staticprivate

Referenced by Init(), and ParseClientInput().

XrdSutCache XrdSecProtocolpwd::cacheUser
staticprivate

Referenced by Init(), and QueryUser().

XrdSecCredentials* XrdSecProtocolpwd::clientCreds
private
char XrdSecProtocolpwd::CName[256]
private

Referenced by Authenticate(), and XrdSecProtocolpwd().

int XrdSecProtocolpwd::cryptID = {0}
staticprivate

Referenced by Authenticate(), Init(), and ParseCrypto().

String XrdSecProtocolpwd::cryptName = {0}
staticprivate

Referenced by Init().

int XrdSecProtocolpwd::Debug = 0
staticprivate

Referenced by ErrF(), and Init().

String XrdSecProtocolpwd::DefCrypto = "ssl"
staticprivate

Referenced by Init().

String XrdSecProtocolpwd::DefError = "insufficient credentials - contact "
staticprivate

Referenced by Authenticate(), and Init().

XrdSysError XrdSecProtocolpwd::eDest
staticprivate

Referenced by EnableTracing().

String XrdSecProtocolpwd::FileAdmin = ""
staticprivate

Referenced by Init().

String XrdSecProtocolpwd::FileCrypt = "/.xrdpass"
staticprivate

Referenced by Init(), and QueryUser().

String XrdSecProtocolpwd::FileExpCreds = ""
staticprivate

Referenced by Authenticate(), ExportCreds(), and Init().

String XrdSecProtocolpwd::FileSrvPuk = ""
staticprivate

Referenced by Init().

String XrdSecProtocolpwd::FileUser = ""
staticprivate

Referenced by Init(), and QueryUser().

int XrdSecProtocolpwd::FmtExpCreds = 0
staticprivate

Referenced by ExportCreds(), and Init().

struct sockaddr XrdSecProtocolpwd::hostaddr
private

Referenced by XrdSecProtocolpwd().

pwdHSVars* XrdSecProtocolpwd::hs
private
bool XrdSecProtocolpwd::KeepCreds = 0
staticprivate

Referenced by Authenticate(), CheckCreds(), and Init().

int XrdSecProtocolpwd::LifeCreds = 0
staticprivate

Referenced by Init(), and QueryUser().

XrdCryptoCipher* XrdSecProtocolpwd::loccip[XrdCryptoMax]
staticprivate
XrdSysLogger XrdSecProtocolpwd::Logger
staticprivate

Referenced by EnableTracing().

int XrdSecProtocolpwd::MaxFailures = 10
staticprivate

Referenced by Init(), and QueryUser().

int XrdSecProtocolpwd::MaxPrompts = 3
staticprivate

Referenced by Authenticate(), Init(), and QueryCreds().

int XrdSecProtocolpwd::ncrypt = 0
staticprivate

Referenced by Authenticate(), Init(), and ParseCrypto().

int XrdSecProtocolpwd::options
private

Referenced by XrdSecProtocolpwd().

XrdSutPFile XrdSecProtocolpwd::PFAdmin
staticprivate

Referenced by Init(), and QueryUser().

XrdSutPFile XrdSecProtocolpwd::PFAlog
staticprivate

Referenced by Init(), QueryCreds(), and XrdSecProtocolpwd().

XrdSutPFile XrdSecProtocolpwd::PFSrvPuk
staticprivate

Referenced by Init(), and ParseClientInput().

XrdSysMutex XrdSecProtocolpwd::pwdContext
staticprivate

Referenced by Authenticate(), and getCredentials().

XrdOucTrace * XrdSecProtocolpwd::PWDTrace = 0
staticprivate

Referenced by EnableTracing(), and Init().

XrdCryptoCipher * XrdSecProtocolpwd::refcip = {0}
staticprivate

Referenced by Authenticate(), Init(), and ParseCrypto().

bool XrdSecProtocolpwd::Server = 1
staticprivate

Referenced by Init(), and XrdSecProtocolpwd().

String XrdSecProtocolpwd::SrvEmail = ""
staticprivate

Referenced by Init(), and QueryUser().

String XrdSecProtocolpwd::SrvID = ""
staticprivate

Referenced by Init().

bool XrdSecProtocolpwd::srvMode
private
bool XrdSecProtocolpwd::SysPwd = 0
staticprivate

Referenced by Init(), and QueryUser().

int XrdSecProtocolpwd::TimeSkew = 300
staticprivate
int XrdSecProtocolpwd::UserPwd = 0
staticprivate

Referenced by Init(), and QueryUser().

int XrdSecProtocolpwd::VeriClnt = 2
staticprivate

Referenced by Authenticate(), CheckTimeStamp(), and Init().

int XrdSecProtocolpwd::VeriSrv = 1
staticprivate

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