#ifndef __CDSAuthDefs_h__
#define __CDSAuthDefs_h__ 1
#include <time.h>
#include <DirectoryServiceCore/PrivateTypes.h>
#include <DirectoryService/DirServicesConst.h>
#include <DirectoryService/DirServicesTypes.h>
#include <DirectoryService/DirServices.h>
#include <DirectoryService/DirServicesUtils.h>
#define kHashShadowChallengeLength 8
#define kHashShadowKeyLength 21
#define kHashShadowResponseLength 24
#define kHashShadowOneLength 16
#define kHashShadowBothLength 32
#define kHashSecureLength 20
#define kHashCramLength 32
#define kHashSaltedSHA1Length 24
#define kHashRecoverableLength 512 //also used to limit size of password to 511 chars
#define kHashOffsetToNT (0)
#define kHashOffsetToLM (kHashShadowOneLength)
#define kHashOffsetToSHA1 (kHashOffsetToLM + kHashShadowOneLength)
#define kHashOffsetToCramMD5 (kHashShadowBothLength + kHashSecureLength)
#define kHashOffsetToSaltedSHA1 (kHashOffsetToCramMD5 + kHashCramLength)
#define kHashOffsetToRecoverable (kHashOffsetToSaltedSHA1 + kHashSaltedSHA1Length)
#define kHashTotalLength (kHashShadowBothLength + kHashSecureLength + \
kHashCramLength + kHashSaltedSHA1Length + \
kHashRecoverableLength)
#define kHashShadowBothHexLength 64
#define kHashOldHexLength 104
#define kHashTotalHexLength (kHashTotalLength * 2)
#define kAESVector "qawe ptajilja;sdqawe ptajilja;sd"
#define kShadowHashDirPath "/var/db/shadow/hash/"
#define kShadowHashOldDirPath "/var/db/samba/hash/"
#define kShadowHashStateFileSuffix ".state"
#define kShadowHashRecordName "shadowhash"
#define kShadowHashNTLMv2Length 16
#define kLocalCachedUserHashList "HASHLIST:<SALTED-SHA1>"
using namespace std;
typedef struct {
double lastTime;
double nowTime;
UInt32 failCount;
} sHashAuthFailed;
typedef struct {
SInt16 disabled;
UInt16 failedLoginAttempts;
UInt16 newPasswordRequired;
struct tm creationDate;
struct tm lastLoginDate;
struct tm modDateOfPassword;
} sHashState;
#endif // __CDSAuthDefs_h_