xrootd
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
XrdSecProtocolpwd Class Reference

#include <XrdSecProtocolpwd.hh>

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

List of all members.

Public Member Functions

int Authenticate (XrdSecCredentials *cred, XrdSecParameters **parms, XrdOucErrInfo *einfo=0)
XrdSecCredentials * getCredentials (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.
- 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.

Static Public Member Functions

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

Private Member Functions

int ParseClientInput (XrdSutBuffer *br, XrdSutBuffer **bm, String &emsg)
int ParseServerInput (XrdSutBuffer *br, XrdSutBuffer **bm, String &cmsg)
int ParseCrypto (XrdSutBuffer *buf)
XrdSecCredentials * ErrC (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)
XrdSutBucket * QueryCreds (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
pwdHSVars * hs
XrdSecCredentials * clientCreds

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 XrdCryptoCipher * loccip [XrdCryptoMax]
static XrdCryptoCipher * refcip [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 XrdOucTrace * PWDTrace = 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).

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: