00001
00002 #ifndef __CRYPTO_RSA_H__
00003 #define __CRYPTO_RSA_H__
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <XrdSut/XrdSutBucket.hh>
00023 #include <XrdOuc/XrdOucString.hh>
00024 #include <XrdCrypto/XrdCryptoAux.hh>
00025
00026 typedef void * XrdCryptoRSAdata;
00027
00028
00029
00030
00031
00032
00033 class XrdCryptoRSA
00034 {
00035 public:
00036 XrdCryptoRSA() { status = kInvalid; }
00037 virtual ~XrdCryptoRSA() {}
00038
00039
00040 enum ERSAStatus { kInvalid = 0, kPublic = 1, kComplete = 2};
00041 ERSAStatus status;
00042 const char *Status(ERSAStatus t = kInvalid) const
00043 { return ((t == kInvalid) ? cstatus[status] : cstatus[t]); }
00044
00045
00046 virtual XrdCryptoRSAdata Opaque();
00047
00048
00049 virtual void Dump();
00050
00051
00052 bool IsValid() { return (status != kInvalid); }
00053
00054
00055 virtual int GetOutlen(int lin);
00056 virtual int GetPublen();
00057 virtual int GetPrilen();
00058
00059
00060 virtual int ImportPublic(const char *in, int lin);
00061 virtual int ExportPublic(char *out, int lout);
00062 int ExportPublic(XrdOucString &exp);
00063 virtual int ImportPrivate(const char *in, int lin);
00064 virtual int ExportPrivate(char *out, int lout);
00065 int ExportPrivate(XrdOucString &exp);
00066
00067
00068 virtual int EncryptPrivate(const char *in, int lin, char *out, int lout);
00069 virtual int DecryptPublic(const char *in, int lin, char *out, int lout);
00070 virtual int EncryptPublic(const char *in, int lin, char *out, int lout);
00071 virtual int DecryptPrivate(const char *in, int lin, char *out, int lout);
00072 int EncryptPrivate(XrdSutBucket &buck);
00073 int DecryptPublic (XrdSutBucket &buck);
00074 int EncryptPublic (XrdSutBucket &buck);
00075 int DecryptPrivate(XrdSutBucket &buck);
00076
00077 private:
00078 static const char *cstatus[3];
00079 };
00080
00081 #endif