00001
00002 #ifndef __CRYPTO_X509_H__
00003 #define __CRYPTO_X509_H__
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <XProtocol/XPtypes.hh>
00022 #include <XrdSut/XrdSutBucket.hh>
00023 #include <XrdCrypto/XrdCryptoRSA.hh>
00024
00025 typedef void * XrdCryptoX509data;
00026
00027
00028
00029
00030
00031
00032
00033 class XrdCryptoX509 {
00034 public:
00035
00036
00037 enum EX509Type { kUnknown = -1, kCA = 0, kEEC = 1, kProxy = 2 };
00038 EX509Type type;
00039
00040
00041 XrdCryptoX509() { type = kUnknown; }
00042 virtual ~XrdCryptoX509() { }
00043
00044
00045 virtual bool IsValid(int when = 0);
00046 virtual bool IsExpired(int when = 0);
00047
00048
00049 virtual XrdCryptoX509data Opaque();
00050
00051
00052 virtual XrdCryptoRSA *PKI();
00053 virtual void SetPKI(XrdCryptoX509data pki);
00054
00055
00056 virtual XrdSutBucket *Export();
00057
00058
00059 virtual void Dump();
00060 const char *Type(EX509Type t = kUnknown) const
00061 { return ((t == kUnknown) ? ctype[type+1] : ctype[t+1]); }
00062 virtual const char *ParentFile();
00063
00064
00065 virtual int BitStrength();
00066
00067
00068 virtual kXR_int64 SerialNumber();
00069 virtual XrdOucString SerialNumberString();
00070
00071
00072 virtual int NotBefore();
00073 virtual int NotAfter();
00074
00075
00076 virtual const char *Issuer();
00077 virtual const char *IssuerHash();
00078
00079
00080 virtual const char *Subject();
00081 virtual const char *SubjectHash();
00082
00083
00084 virtual XrdCryptoX509data GetExtension(const char *oid);
00085
00086
00087 virtual bool Verify(XrdCryptoX509 *ref);
00088
00089 private:
00090
00091 static const char *ctype[4];
00092 };
00093
00094 #endif