00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00026 #ifndef FADE_POLICY_FOR_CLIENT_H
00027 #define FADE_POLICY_FOR_CLIENT_H
00028
00029 #include <string>
00030 #include <openssl/rsa.h>
00031
00032 using namespace std;
00033
00037 class PolicyForClient
00038 {
00039 string policyName;
00040 int keyManagerID;
00041 RSA *rsa;
00042 BN_CTX *ctx;
00043 bool hasPublicKey() const;
00044 bool getPublicKey(bool allowNewPolicy) const;
00045 public:
00050 PolicyForClient(const string &policyName, int keyManagerID = 0);
00051
00052 ~PolicyForClient()
00053 {
00054 RSA_free(rsa);
00055 BN_CTX_free(ctx);
00056 }
00057
00062 string getPolicyName() const
00063 {
00064 return policyName;
00065 }
00066
00071 void setPolicyName(const string &policyName)
00072 {
00073 this->policyName = policyName;
00074 }
00075
00080 int getRSASize() const
00081 {
00082 return 128;
00083 }
00084
00091 bool encrypt(unsigned char *key) const;
00092
00099 bool decrypt(unsigned char *key) const;
00100
00105 bool revoke() const;
00106 };
00107
00108 #endif