Loading...
Searching...
No Matches
XrdCryptoFactory.cc
Go to the documentation of this file.
/******************************************************************************/
/* */
/* X r d C r y p t o F a c t o r y . c c */
/* */
/* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */
/* Produced by Gerri Ganis for CERN */
/* */
/* 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 <http://www.gnu.org/licenses/>. */
/* */
/* 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. */
/******************************************************************************/
/* ************************************************************************** */
/* */
/* Abstract interface for a crypto factory */
/* Allows to plug-in modules based on different crypto implementation */
/* (OpenSSL, Botan, ...) */
/* */
/* ************************************************************************** */
#include <cstring>
#include <dlfcn.h>
#include "XrdCrypto/XrdCryptoAux.hh"
#include "XrdCrypto/XrdCryptoTrace.hh"
#include "XrdCrypto/XrdCryptoFactory.hh"
#include "XrdOuc/XrdOucHash.hh"
#include "XrdOuc/XrdOucPinLoader.hh"
#include "XrdSys/XrdSysPlatform.hh"
#include "XrdSys/XrdSysPthread.hh"
#include "XrdVersion.hh"
//
// For error logging
static XrdSysError eDest(0,"cryptofactory_");
//____________________________________________________________________________
XrdCryptoFactory::XrdCryptoFactory(const char *n, int id)
{
// Constructor (only called by derived classes).
if (n) {
int l = strlen(n);
l = (l > (MAXFACTORYNAMELEN - 1)) ? (MAXFACTORYNAMELEN - 1) : l;
memcpy(name,n,l);
name[l] = 0; // null terminated
}
fID = id;
}
//______________________________________________________________________________
void XrdCryptoFactory::SetTrace(kXR_int32)
{
// Set flags for tracing
ABSTRACTMETHOD("XrdCryptoFactory::SetTrace");
}
//______________________________________________________________________________
bool XrdCryptoFactory::operator==(const XrdCryptoFactory factory)
{
// Compare name of 'factory' to local name: return 1 if matches, 0 if not
if (!strcmp(factory.Name(),Name()))
return 1;
return 0;
}
//______________________________________________________________________________
XrdCryptoKDFunLen_t XrdCryptoFactory::KDFunLen()
{
// Return an instance of an implementation of a Key Der function length.
ABSTRACTMETHOD("XrdCryptoFactory::KDFunLen");
return 0;
}
//______________________________________________________________________________
XrdCryptoKDFun_t XrdCryptoFactory::KDFun()
{
// Return an instance of an implementation of a Key Derivation function.
ABSTRACTMETHOD("XrdCryptoFactory::KDFun");
return 0;
}
//______________________________________________________________________________
bool XrdCryptoFactory::SupportedCipher(const char *)
{
// Returns true id specified cipher is supported by the implementation
ABSTRACTMETHOD("XrdCryptoFactory::SupportedCipher");
return 0;
}
//______________________________________________________________________________
bool XrdCryptoFactory::HasPaddingSupport()
{
// Returns true id specified cipher is supported by the implementation
ABSTRACTMETHOD("XrdCryptoFactory::PaddingSupport");
return 0;
}
//______________________________________________________________________________
XrdCryptoCipher *XrdCryptoFactory::Cipher(const char *, int)
{
// Return an instance of an implementation of XrdCryptoCipher.
ABSTRACTMETHOD("XrdCryptoFactory::Cipher");
return 0;
}
//______________________________________________________________________________
XrdCryptoCipher *XrdCryptoFactory::Cipher(const char *, int, const char *,
int, const char *)
{
// Return an instance of an implementation of XrdCryptoCipher.
ABSTRACTMETHOD("XrdCryptoFactory::Cipher");
return 0;
}
//______________________________________________________________________________
XrdCryptoCipher *XrdCryptoFactory::Cipher(XrdSutBucket *)
{
// Return an instance of an implementation of XrdCryptoCipher.
ABSTRACTMETHOD("XrdCryptoFactory::Cipher");
return 0;
}
//______________________________________________________________________________
XrdCryptoCipher *XrdCryptoFactory::Cipher(bool, int, char *, int, const char *)
{
// Return an instance of an implementation of XrdCryptoCipher.
ABSTRACTMETHOD("XrdCryptoFactory::Cipher");
return 0;
}
//______________________________________________________________________________
XrdCryptoCipher *XrdCryptoFactory::Cipher(int, char *, int, const char *)
{
// Return an instance of an implementation of XrdCryptoCipher.
ABSTRACTMETHOD("XrdCryptoFactory::Cipher");
return 0;
}
//______________________________________________________________________________
XrdCryptoCipher *XrdCryptoFactory::Cipher(const XrdCryptoCipher &)
{
// Return an instance of an implementation of XrdCryptoCipher.
ABSTRACTMETHOD("XrdCryptoFactory::Cipher");
return 0;
}
//______________________________________________________________________________
bool XrdCryptoFactory::SupportedMsgDigest(const char *)
{
// Returns true id specified digest is supported by the implementation
ABSTRACTMETHOD("XrdCryptoFactory::SupportedMsgDigest");
return 0;
}
//______________________________________________________________________________
XrdCryptoMsgDigest *XrdCryptoFactory::MsgDigest(const char *)
{
// Return an instance of an implementation of XrdCryptoMsgDigest.
ABSTRACTMETHOD("XrdCryptoFactory::MsgDigest");
return 0;
}
//______________________________________________________________________________
XrdCryptoRSA *XrdCryptoFactory::RSA(int, int)
{
// Return an instance of an implementation of XrdCryptoRSA.
ABSTRACTMETHOD("XrdCryptoFactory::RSA");
return 0;
}
//______________________________________________________________________________
XrdCryptoRSA *XrdCryptoFactory::RSA(const char *, int)
{
// Return an instance of an implementation of XrdCryptoRSA.
ABSTRACTMETHOD("XrdCryptoFactory::RSA");
return 0;
}
//______________________________________________________________________________
XrdCryptoRSA *XrdCryptoFactory::RSA(const XrdCryptoRSA &)
{
// Return an instance of an implementation of XrdCryptoRSA.
ABSTRACTMETHOD("XrdCryptoFactory::RSA ("<<this<<")");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509 *XrdCryptoFactory::X509(const char *, const char *)
{
// Return an instance of an implementation of XrdCryptoX509.
ABSTRACTMETHOD("XrdCryptoFactory::X509");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509 *XrdCryptoFactory::X509(XrdSutBucket *)
{
// Init XrdCryptoX509 from a bucket
ABSTRACTMETHOD("XrdCryptoFactory::X509");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509Crl *XrdCryptoFactory::X509Crl(const char *, int)
{
// Return an instance of an implementation of XrdCryptoX509Crl.
ABSTRACTMETHOD("XrdCryptoFactory::X509Crl");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509Crl *XrdCryptoFactory::X509Crl(XrdCryptoX509 *)
{
// Return an instance of an implementation of XrdCryptoX509Crl.
ABSTRACTMETHOD("XrdCryptoFactory::X509Crl");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509Req *XrdCryptoFactory::X509Req(XrdSutBucket *)
{
// Return an instance of an implementation of XrdCryptoX509Req.
ABSTRACTMETHOD("XrdCryptoFactory::X509Req");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509VerifyCert_t XrdCryptoFactory::X509VerifyCert()
{
// Return an instance of an implementation of a verification
// function for X509 certificate.
ABSTRACTMETHOD("XrdCryptoFactory::X509VerifyCert");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509VerifyChain_t XrdCryptoFactory::X509VerifyChain()
{
// Return an instance of an implementation of a verification
// function for X509 certificate chains.
ABSTRACTMETHOD("XrdCryptoFactory::X509VerifyChain");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509ExportChain_t XrdCryptoFactory::X509ExportChain()
{
// Return an instance of an implementation of a function
// to export a X509 certificate chain.
ABSTRACTMETHOD("XrdCryptoFactory::X509ExportChain");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509ChainToFile_t XrdCryptoFactory::X509ChainToFile()
{
// Return an instance of an implementation of a function
// to dump a X509 certificate chain to a file.
ABSTRACTMETHOD("XrdCryptoFactory::X509ChainToFile");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509ParseFile_t XrdCryptoFactory::X509ParseFile()
{
// Return an instance of an implementation of a function
// to parse a file supposed to contain for X509 certificates.
ABSTRACTMETHOD("XrdCryptoFactory::X509ParseFile");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509ParseStack_t XrdCryptoFactory::X509ParseStack()
{
// Return an instance of an implementation of a function
// to parse a stack supposed to contain for X509 certificates.
ABSTRACTMETHOD("XrdCryptoFactory::X509ParseStack");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509ParseBucket_t XrdCryptoFactory::X509ParseBucket()
{
// Return an instance of an implementation of a function
// to parse a bucket supposed to contain for X509 certificates.
ABSTRACTMETHOD("XrdCryptoFactory::X509ParseBucket");
return 0;
}
//______________________________________________________________________________
XrdCryptoProxyCertInfo_t XrdCryptoFactory::ProxyCertInfo()
{
// Check if the proxyCertInfo extension exists
ABSTRACTMETHOD("XrdCryptoFactory::ProxyCertInfo");
return 0;
}
//______________________________________________________________________________
XrdCryptoSetPathLenConstraint_t XrdCryptoFactory::SetPathLenConstraint()
{
// Set the path length constraint
ABSTRACTMETHOD("XrdCryptoFactory::SetPathLenConstraint");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509CreateProxy_t XrdCryptoFactory::X509CreateProxy()
{
// Create a proxy certificate
ABSTRACTMETHOD("XrdCryptoFactory::X509CreateProxy");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509CreateProxyReq_t XrdCryptoFactory::X509CreateProxyReq()
{
// Create a proxy request
ABSTRACTMETHOD("XrdCryptoFactory::X509CreateProxyReq");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509SignProxyReq_t XrdCryptoFactory::X509SignProxyReq()
{
// Sign a proxy request
ABSTRACTMETHOD("XrdCryptoFactory::X509SignProxyReq");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509CheckProxy3_t XrdCryptoFactory::X509CheckProxy3()
{
// Check consistency of a GSI 3 compliant proxy
ABSTRACTMETHOD("XrdCryptoFactory::X509CheckProxy3");
return 0;
}
//______________________________________________________________________________
XrdCryptoX509GetVOMSAttr_t XrdCryptoFactory::X509GetVOMSAttr()
{
// Get VOMS attributes, if any
ABSTRACTMETHOD("XrdCryptoFactory::X509GetVOMSAttr");
return 0;
}
/* ************************************************************************** */
/* */
/* G e t C r y p t o F a c t o r y */
/* */
/* ************************************************************************** */
//
// Structure for the local record
typedef struct {
XrdCryptoFactory *factory;
char factoryname[MAXFACTORYNAMELEN];
bool status;
} FactoryEntry;
//____________________________________________________________________________
XrdCryptoFactory *XrdCryptoFactory::GetCryptoFactory(const char *factoryid)
{
// Static method to load/locate the crypto factory named factoryid
static XrdVERSIONINFODEF(myVer,cryptoloader,XrdVNUMBER,XrdVERSION);
static XrdSysMutex fMutex;
static FactoryEntry *factorylist = 0;
static int factorynum = 0;
static XrdOucHash<XrdOucPinLoader> plugins;
XrdCryptoFactory *(*efact)();
XrdCryptoFactory *factory;
char factobjname[80], libfn[80];
EPNAME("Factory::GetCryptoFactory");
// Factory entries are tracked in a static list.
// Make sure only one thread may be using or modifying the list at a time.
XrdSysMutexHelper mHelp(fMutex);
//
// The id must be defined
if (!factoryid) {
PRINT("crypto factory ID (NULL) undefined");
return 0;
}
if (!strlen(factoryid)) {
PRINT("crypto factory ID (\"\") undefined");
return 0;
}
//
// Check if already loaded
if (factorynum) {
int i = 0;
for ( ; i < factorynum; i++ ) {
if (!strcmp(factoryid,factorylist[i].factoryname)) {
if (factorylist[i].status) {
DEBUG(factoryid <<" crypto factory object already loaded ("
<< factorylist[i].factory << ")");
return factorylist[i].factory;
} else {
DEBUG("previous attempt to load crypto factory "
<<factoryid<<" failed - do nothing");
return 0;
}
}
}
}
//
// Create new entry for this factory in the local record
FactoryEntry *newfactorylist = new FactoryEntry[factorynum+1];
if (newfactorylist) {
int i = 0;
for ( ; i < factorynum; i++ ) {
newfactorylist[i].factory = factorylist[i].factory;
newfactorylist[i].status = factorylist[i].status;
strcpy(newfactorylist[i].factoryname,factorylist[i].factoryname);
}
newfactorylist[i].factory = 0;
newfactorylist[i].status = 0;
strcpy(newfactorylist[i].factoryname,factoryid);
// Destroy previous vector
if (factorylist) delete[] factorylist;
// Update local list
factorylist = newfactorylist;
factorynum++;
} else
PRINT("cannot create local record of loaded crypto factories");
//
// Try loading: name of routine to load
sprintf(factobjname, "XrdCrypto%sFactoryObject", factoryid);
// Create or attach to the plug-in instance
XrdOucPinLoader *plug = plugins.Find(factoryid);
if (!plug) {
// Create one and add it to the list
snprintf(libfn, sizeof(libfn)-1, "libXrdCrypto%s.so", factoryid);
libfn[sizeof(libfn)-1] = '\0';
plug = new XrdOucPinLoader(&myVer, "cryptolib", libfn);
plugins.Add(factoryid, plug);
}
if (!plug) {
PRINT("problems opening shared library " << libfn);
return 0;
}
DEBUG("shared library '" << libfn << "' loaded");
// Get the function
if (!(efact = (XrdCryptoFactory *(*)()) plug->Resolve(factobjname))) {
PRINT(plug->LastMsg());
PRINT("problems finding crypto factory object creator " << factobjname);
return 0;
}
//
// Get the factory object
if (!(factory = (*efact)())) {
PRINT("problems creating crypto factory object");
return 0;
}
//
// Update local record
factorylist[factorynum-1].factory = factory;
factorylist[factorynum-1].status = 1;
return factory;
}
kXR_int32
int kXR_int32
Definition XPtypes.hh:89
DEBUG
#define DEBUG(x)
Definition XrdBwmTrace.hh:54
EPNAME
#define EPNAME(x)
Definition XrdBwmTrace.hh:56
XrdCryptoAux.hh
ABSTRACTMETHOD
#define ABSTRACTMETHOD(x)
Definition XrdCryptoAux.hh:41
FactoryEntry::factory
XrdCryptoFactory * factory
Definition XrdCryptoFactory.cc:411
FactoryEntry::factoryname
char factoryname[MAXFACTORYNAMELEN]
Definition XrdCryptoFactory.cc:412
FactoryEntry::status
bool status
Definition XrdCryptoFactory.cc:413
eDest
static XrdSysError eDest(0,"cryptofactory_")
FactoryEntry
Definition XrdCryptoFactory.cc:410
XrdCryptoFactory.hh
XrdCryptoX509ChainToFile_t
int(* XrdCryptoX509ChainToFile_t)(XrdCryptoX509Chain *, const char *)
Definition XrdCryptoFactory.hh:78
XrdCryptoX509CreateProxy_t
int(* XrdCryptoX509CreateProxy_t)(const char *, const char *, XrdProxyOpt_t *, XrdCryptogsiX509Chain *, XrdCryptoRSA **, const char *)
Definition XrdCryptoFactory.hh:107
XrdCryptoX509SignProxyReq_t
int(* XrdCryptoX509SignProxyReq_t)(XrdCryptoX509 *, XrdCryptoRSA *, XrdCryptoX509Req *, XrdCryptoX509 **)
Definition XrdCryptoFactory.hh:113
XrdCryptoX509VerifyChain_t
bool(* XrdCryptoX509VerifyChain_t)(XrdCryptoX509Chain *chain, int &errcode)
Definition XrdCryptoFactory.hh:72
XrdCryptoX509ExportChain_t
XrdSutBucket *(* XrdCryptoX509ExportChain_t)(XrdCryptoX509Chain *, bool)
Definition XrdCryptoFactory.hh:75
XrdCryptoX509ParseBucket_t
int(* XrdCryptoX509ParseBucket_t)(XrdSutBucket *, XrdCryptoX509Chain *)
Definition XrdCryptoFactory.hh:89
XrdCryptoX509VerifyCert_t
bool(* XrdCryptoX509VerifyCert_t)(XrdCryptoX509 *c, XrdCryptoX509 *r)
Definition XrdCryptoFactory.hh:70
XrdCryptoX509GetVOMSAttr_t
int(* XrdCryptoX509GetVOMSAttr_t)(XrdCryptoX509 *, XrdOucString &)
Definition XrdCryptoFactory.hh:119
XrdCryptoKDFunLen_t
int(* XrdCryptoKDFunLen_t)()
Definition XrdCryptoFactory.hh:64
XrdCryptoSetPathLenConstraint_t
void(* XrdCryptoSetPathLenConstraint_t)(void *, int)
Definition XrdCryptoFactory.hh:98
XrdCryptoX509ParseStack_t
int(* XrdCryptoX509ParseStack_t)(XrdTlsPeerCerts *pc, XrdCryptoX509Chain *c)
Definition XrdCryptoFactory.hh:85
XrdCryptoKDFun_t
int(* XrdCryptoKDFun_t)(const char *pass, int plen, const char *salt, int slen, char *key, int klen)
Definition XrdCryptoFactory.hh:65
XrdCryptoX509ParseFile_t
int(* XrdCryptoX509ParseFile_t)(const char *fname, XrdCryptoX509Chain *, const char *)
Definition XrdCryptoFactory.hh:81
XrdCryptoX509CreateProxyReq_t
int(* XrdCryptoX509CreateProxyReq_t)(XrdCryptoX509 *, XrdCryptoX509Req **, XrdCryptoRSA **)
Definition XrdCryptoFactory.hh:110
XrdCryptoProxyCertInfo_t
bool(* XrdCryptoProxyCertInfo_t)(const void *, int &, bool *)
Definition XrdCryptoFactory.hh:96
XrdCryptoX509CheckProxy3_t
int(* XrdCryptoX509CheckProxy3_t)(XrdCryptoX509 *, XrdOucString &)
Definition XrdCryptoFactory.hh:116
MAXFACTORYNAMELEN
#define MAXFACTORYNAMELEN
Definition XrdCryptoFactory.hh:41
XrdCryptoTrace.hh
PRINT
#define PRINT(y)
Definition XrdCryptosslTrace.hh:39
XrdVERSIONINFODEF
static XrdVERSIONINFODEF(compiledVer, XrdHttpProtocolTest, XrdVNUMBER, XrdVERSION)
XrdOucHash.hh
XrdOucPinLoader.hh
XrdSysPlatform.hh
XrdSysPthread.hh
XrdCryptoCipher
Definition XrdCryptoCipher.hh:48
XrdCryptoFactory
Definition XrdCryptoFactory.hh:122
XrdCryptoFactory::HasPaddingSupport
virtual bool HasPaddingSupport()
Definition XrdCryptoFactory.cc:114
XrdCryptoFactory::X509VerifyChain
virtual XrdCryptoX509VerifyChain_t X509VerifyChain()
Definition XrdCryptoFactory.cc:279
XrdCryptoFactory::X509ParseBucket
virtual XrdCryptoX509ParseBucket_t X509ParseBucket()
Definition XrdCryptoFactory.cc:329
XrdCryptoFactory::X509CreateProxyReq
virtual XrdCryptoX509CreateProxyReq_t X509CreateProxyReq()
Definition XrdCryptoFactory.cc:366
XrdCryptoFactory::X509
virtual XrdCryptoX509 * X509(const char *cf, const char *kf=0)
Definition XrdCryptoFactory.cc:224
XrdCryptoFactory::SetTrace
virtual void SetTrace(kXR_int32 trace)
Definition XrdCryptoFactory.cc:69
XrdCryptoFactory::X509ParseFile
virtual XrdCryptoX509ParseFile_t X509ParseFile()
Definition XrdCryptoFactory.cc:309
XrdCryptoFactory::X509CreateProxy
virtual XrdCryptoX509CreateProxy_t X509CreateProxy()
Definition XrdCryptoFactory.cc:357
XrdCryptoFactory::KDFun
virtual XrdCryptoKDFun_t KDFun()
Definition XrdCryptoFactory.cc:96
XrdCryptoFactory::operator==
bool operator==(const XrdCryptoFactory factory)
Definition XrdCryptoFactory.cc:77
XrdCryptoFactory::Name
char * Name() const
Definition XrdCryptoFactory.hh:134
XrdCryptoFactory::X509ParseStack
virtual XrdCryptoX509ParseStack_t X509ParseStack()
Definition XrdCryptoFactory.cc:319
XrdCryptoFactory::X509GetVOMSAttr
virtual XrdCryptoX509GetVOMSAttr_t X509GetVOMSAttr()
Definition XrdCryptoFactory.cc:393
XrdCryptoFactory::X509ChainToFile
virtual XrdCryptoX509ChainToFile_t X509ChainToFile()
Definition XrdCryptoFactory.cc:299
XrdCryptoFactory::Cipher
virtual XrdCryptoCipher * Cipher(const char *t, int l=0)
Definition XrdCryptoFactory.cc:123
XrdCryptoFactory::X509CheckProxy3
virtual XrdCryptoX509CheckProxy3_t X509CheckProxy3()
Definition XrdCryptoFactory.cc:384
XrdCryptoFactory::RSA
virtual XrdCryptoRSA * RSA(int b=0, int e=0)
Definition XrdCryptoFactory.cc:196
XrdCryptoFactory::SupportedMsgDigest
virtual bool SupportedMsgDigest(const char *dgst)
Definition XrdCryptoFactory.cc:178
XrdCryptoFactory::XrdCryptoFactory
XrdCryptoFactory(const char *n="Unknown", int id=-1)
Definition XrdCryptoFactory.cc:55
XrdCryptoFactory::SetPathLenConstraint
virtual XrdCryptoSetPathLenConstraint_t SetPathLenConstraint()
Definition XrdCryptoFactory.cc:348
XrdCryptoFactory::MsgDigest
virtual XrdCryptoMsgDigest * MsgDigest(const char *dgst)
Definition XrdCryptoFactory.cc:187
XrdCryptoFactory::X509Crl
virtual XrdCryptoX509Crl * X509Crl(const char *crlfile, int opt=0)
Definition XrdCryptoFactory.cc:242
XrdCryptoFactory::KDFunLen
virtual XrdCryptoKDFunLen_t KDFunLen()
Definition XrdCryptoFactory.cc:87
XrdCryptoFactory::ProxyCertInfo
virtual XrdCryptoProxyCertInfo_t ProxyCertInfo()
Definition XrdCryptoFactory.cc:339
XrdCryptoFactory::GetCryptoFactory
static XrdCryptoFactory * GetCryptoFactory(const char *factoryname)
Definition XrdCryptoFactory.cc:417
XrdCryptoFactory::SupportedCipher
virtual bool SupportedCipher(const char *t)
Definition XrdCryptoFactory.cc:105
XrdCryptoFactory::X509Req
virtual XrdCryptoX509Req * X509Req(XrdSutBucket *bck)
Definition XrdCryptoFactory.cc:260
XrdCryptoFactory::X509SignProxyReq
virtual XrdCryptoX509SignProxyReq_t X509SignProxyReq()
Definition XrdCryptoFactory.cc:375
XrdCryptoFactory::X509ExportChain
virtual XrdCryptoX509ExportChain_t X509ExportChain()
Definition XrdCryptoFactory.cc:289
XrdCryptoFactory::X509VerifyCert
virtual XrdCryptoX509VerifyCert_t X509VerifyCert()
Definition XrdCryptoFactory.cc:269
XrdCryptoMsgDigest
Definition XrdCryptoMsgDigest.hh:47
XrdCryptoRSA
Definition XrdCryptoRSA.hh:51
XrdCryptoX509Crl
Definition XrdCryptoX509Crl.hh:49
XrdCryptoX509Req
Definition XrdCryptoX509Req.hh:50
XrdCryptoX509
Definition XrdCryptoX509.hh:51
XrdOucHash
Definition XrdOucHash.hh:128
XrdOucHash::Add
T * Add(const char *KeyVal, T *KeyData, const int LifeTime=0, XrdOucHash_Options opt=Hash_default)
Definition XrdOucHash.icc:61
XrdOucHash::Find
T * Find(const char *KeyVal, time_t *KeyTime=0)
Definition XrdOucHash.icc:160
XrdOucPinLoader
Definition XrdOucPinLoader.hh:50
XrdOucPinLoader::LastMsg
const char * LastMsg()
Definition XrdOucPinLoader.hh:81
XrdOucPinLoader::Resolve
void * Resolve(const char *symbl, int mcnt=1)
Definition XrdOucPinLoader.cc:267
XrdSutBucket
Definition XrdSutBucket.hh:44
XrdSysError
Definition XrdSysError.hh:90
XrdSysMutexHelper
Definition XrdSysPthread.hh:263
XrdSysMutex
Definition XrdSysPthread.hh:165