CAuthFileUtils.cpp [plain text]
#include "CAuthFileUtils.h"
#define kFixedDESChunk 8
CAuthFileUtils::CAuthFileUtils()
{
int32_t desKeyArray[] = { 3785, 1706062950, 57253, 290150789, 20358, -1895669319, 31632, -1897719547,
14472, -356383814, 45160, 1045764877, 42031, 340922616, 17982, 893499693,
26821, 1697433225, 49601, 1067086915, 42371, -1280392416, 46874, -1550815422,
47922, -788758000, 7254, -590256566, 22097, 1547481608, 22125, -1323694915 };
memcpy( mDESKeyArray, desKeyArray, sizeof(KeysArray) );
}
CAuthFileUtils::~CAuthFileUtils()
{
}
void
CAuthFileUtils::getGMTime(struct tm *inOutGMT)
{
time_t theTime;
struct tm gmt;
::time(&theTime);
::gmtime_r(&theTime, &gmt);
memcpy( inOutGMT, &gmt, sizeof(struct tm) );
}
long
CAuthFileUtils::slotToOffset(long slot)
{
return sizeof(PWFileHeader) + (slot - 1) * sizeof(PWFileEntry);
}
#pragma mark -
#pragma mark ¥DES ACCESSORS¥
#pragma mark -
void
CAuthFileUtils::DESEncode(void *data, unsigned long inDataLen)
{
char *tptr = (char *)data;
while ( inDataLen > 0 )
{
Encode(mDESKeyArray, kFixedDESChunk, tptr);
tptr += kFixedDESChunk;
inDataLen -= kFixedDESChunk;
}
}
void
CAuthFileUtils::DESDecode(void *data, unsigned long inDataLen)
{
char *tptr = (char *)data;
while ( inDataLen > 0 )
{
Decode(mDESKeyArray, kFixedDESChunk, tptr);
tptr += kFixedDESChunk;
inDataLen -= kFixedDESChunk;
}
}
void
CAuthFileUtils::DESAutoDecode( void *data )
{
PWFileEntry anEntry;
unsigned long offset;
unsigned char *dataPtr;
for ( offset = 0; offset <= sizeof(anEntry.passwordStr) - kFixedDESChunk; offset += kFixedDESChunk )
{
dataPtr = (unsigned char *)data + offset;
DESDecode( dataPtr, kFixedDESChunk );
if ( dataPtr[0] == 0 || dataPtr[1] == 0 || dataPtr[2] == 0 ||
dataPtr[3] == 0 || dataPtr[4] == 0 || dataPtr[5] == 0 ||
dataPtr[6] == 0 || dataPtr[7] == 0 )
break;
}
}