37 #include "XrdVersion.hh"
45 #define ENODATA ENOATTR
85 csTab[0].Len = 4; strcpy(csTab[0].
Name,
"adler32");
86 csTab[1].Len = 4; strcpy(csTab[1].
Name,
"crc32");
87 csTab[2].Len = 16; strcpy(csTab[2].
Name,
"md5");
95 XrdPssCks::csInfo *XrdPssCks::Find(
const char *Name)
98 for (i = 0; i <= csLast; i++)
99 if (!strcmp(
Name, csTab[i].
Name))
return &csTab[i];
110 static const int cksBLen = 256;
111 static const int urlBLen = 2048;
112 char cksBuff[cksBLen], pBuff[urlBLen], cgiBuff[32], *tP;
119 n = snprintf(cgiBuff,
sizeof(cgiBuff),
"cks.type=%s", Cks.
Name);
120 if (n >= (
int)
sizeof(cgiBuff))
return -ENAMETOOLONG;
142 return (rc ? -errno : -ENOTSUP);
146 if (!Resp.
GetLine() || !(tP = Resp.
GetToken()) || !(*tP))
return -ENOMSG;
147 if (!Cks.
Set(tP))
return -ENOTSUP;
152 if (!Cks.
Set(tP, strlen(tP)))
return -ENOTSUP;
156 Cks.fmTime =
static_cast<long long>(Mtime);
172 {
for (i = 0; i < csLast; i++)
if (!strcmp(csTab[i].
Name, DfltCalc))
break;
174 {
eDest->
Emsg(
"Config", DfltCalc,
"cannot be made the default; "
178 if (i) {csInfo Temp = csTab[i]; csTab[i] = csTab[0]; csTab[0] = Temp;}
193 return (seqNum < 0 || seqNum > csLast ? 0 : csTab[seqNum].
Name);
202 csInfo *iP = (
Name != 0 ? Find(
Name) : &csTab[0]);
203 return (iP != 0 ? iP->Len : 0);
213 csInfo *csIP = &csTab[0];
218 if (!(*Cks.
Name)) strcpy(Cks.
Name, csTab[0].Name);
219 else if (!(csIP = Find(Cks.
Name)))
return -ENOTSUP;
223 if ((rc =
Get(Pfn, fCks)))
return rc;
228 && !memcmp(fCks.
Value, Cks.
Value, csIP->Len));
std::string obfuscateAuth(const std::string &input)
XrdCks * XrdCksInit(XrdSysError *eDest, const char *cFN, const char *Parms)
XrdVERSIONINFO(XrdCksInit, PssCks)
int Set(const char *csName)
char * GetToken(char **rest=0, int lowcase=0)
static int QueryChksum(const char *path, time_t &mtime, char *buff, int blen)
virtual int Get(const char *Pfn, XrdCksData &Cks)
virtual int Ver(const char *Pfn, XrdCksData &Cks)
virtual int Init(const char *ConfigFN, const char *DfltCalc=0)
virtual const char * Name(int seqNum=0)
XrdPssCks(XrdSysError *erP)
virtual int Size(const char *Name=0)
static int P2URL(char *pbuff, int pblen, XrdPssUrlInfo &uInfo, bool doN2N=true)
void setID(const char *tid=0)
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)
XrdSysTrace SysTrace("Pss", 0)
XrdSysError eDest(0, "pss_")