CKerberosPrincipal.h [plain text]
#include <sys/time.h>
#include <stdio.h>
#include <string.h>
#define kKerberosPrincipalMaxEntries 200
class PWSFKerberosPrincipal;
class PWSFKerberosPrincipalList
{
public:
PWSFKerberosPrincipalList();
virtual ~PWSFKerberosPrincipalList();
int ReadAllPrincipalsFromDB(time_t inAfterThisModDate, long inMaxPrincipals = 0);
int WriteAllPrincipalsToDB();
PWSFKerberosPrincipal* GetPrincipalByName(char* principalName);
PWSFKerberosPrincipal* GetPrincipalByIndex(int index);
PWSFKerberosPrincipal* ReadPrincipalFromFile(FILE* file, int recordSize);
PWSFKerberosPrincipal* ReadPrincipalFromData(unsigned char *record, int recordSize);
void SetFirst(PWSFKerberosPrincipal* listHead) { mPrincipalList = listHead; }
private:
char* mBuffer;
PWSFKerberosPrincipal* mPrincipalList;
PWSFKerberosPrincipal** mPrincipalArray;
long mPrincipalArrayCount;
};
class PWSFKerberosPrincipal
{
public:
PWSFKerberosPrincipal();
PWSFKerberosPrincipal(char* buffer, PWSFKerberosPrincipalList* owner);
PWSFKerberosPrincipal(PWSFKerberosPrincipalList* owner);
~PWSFKerberosPrincipal();
char* GetName();
void SetLastLogin(time_t time);
void CopyPassword(PWSFKerberosPrincipal* otherRecord);
void CopyLastLogin(PWSFKerberosPrincipal* otherRecord);
int GetFirstKeyEntryIndex();
int GetPasswordModDateEntryIndex();
time_t GetRecordModDate();
int GetPrincipalData(unsigned char **outData, int *outDataLen);
int WritePrincipalToFile(FILE* file);
int WritePrincipalToTempFile(int fd);
void WritePrincipalToDB();
static int ReadPrincipalFromDB(char* principalName, PWSFKerberosPrincipal** outKerbPrinc);
static PWSFKerberosPrincipal* ReadPrincipalFromFile(FILE* file, int recordSize, PWSFKerberosPrincipalList* list = NULL);
static PWSFKerberosPrincipal* ReadPrincipalFromData(unsigned char *record, int recordSize, PWSFKerberosPrincipalList* list = NULL);
char* ParseBuffer(bool skipLine);
bool IsPolicy();
PWSFKerberosPrincipal* GetNext() { return mNext; }
private:
char* GetEntryCopy(PWSFKerberosPrincipal* otherRecord, int index);
char* mBuffer;
char* mOtherBuffer;
bool mOwnsBuffer;
int mBufSize;
int mOtherBufSize;
char* mEntries[kKerberosPrincipalMaxEntries];
PWSFKerberosPrincipalList* mListOwner;
PWSFKerberosPrincipal* mNext;
PWSFKerberosPrincipal* mPrevious;
};