mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-17 10:52:46 +00:00
Remove log and init file encryption.
This fixes issue #123, and is supposed to get rid of encryption for the status logs and the init files loaded at startup.
This commit is contained in:
@ -216,9 +216,6 @@ bool plManifest::Read(hsStream* stream)
|
||||
|
||||
plInitFileReader reader(readers, 4096); // Allow extra long lines
|
||||
reader.SetUnhandledSectionReader(&baseReader);
|
||||
|
||||
// manifests don't need to be encrypted
|
||||
reader.SetRequireEncrypted(false);
|
||||
|
||||
if (!reader.Open(stream))
|
||||
return false;
|
||||
@ -242,9 +239,6 @@ bool plManifest::Read(const char* filename)
|
||||
plInitFileReader reader(readers, 4096); // Allow extra long lines
|
||||
reader.SetUnhandledSectionReader(&baseReader);
|
||||
|
||||
// manifests don't need to be encrypted
|
||||
reader.SetRequireEncrypted(false);
|
||||
|
||||
if (!reader.Open(filename))
|
||||
return false;
|
||||
|
||||
|
@ -543,29 +543,24 @@ bool plEncryptedStream::IsEncryptedFile(const wchar_t* fileName)
|
||||
return isEncrypted;
|
||||
}
|
||||
|
||||
hsStream* plEncryptedStream::OpenEncryptedFile(const char* fileName, bool requireEncrypted, uint32_t* cryptKey)
|
||||
hsStream* plEncryptedStream::OpenEncryptedFile(const char* fileName, uint32_t* cryptKey)
|
||||
{
|
||||
wchar_t* wFilename = hsStringToWString(fileName);
|
||||
hsStream* ret = OpenEncryptedFile(wFilename, requireEncrypted, cryptKey);
|
||||
hsStream* ret = OpenEncryptedFile(wFilename, cryptKey);
|
||||
delete [] wFilename;
|
||||
return ret;
|
||||
}
|
||||
|
||||
hsStream* plEncryptedStream::OpenEncryptedFile(const wchar_t* fileName, bool requireEncrypted, uint32_t* cryptKey)
|
||||
hsStream* plEncryptedStream::OpenEncryptedFile(const wchar_t* fileName, uint32_t* cryptKey)
|
||||
{
|
||||
#ifndef PLASMA_EXTERNAL_RELEASE
|
||||
requireEncrypted = false;
|
||||
#endif
|
||||
|
||||
bool isEncrypted = IsEncryptedFile(fileName);
|
||||
|
||||
hsStream* s = nil;
|
||||
if (isEncrypted)
|
||||
s = new plEncryptedStream(cryptKey);
|
||||
// If this isn't an external release, let them use unencrypted data
|
||||
else
|
||||
if (!requireEncrypted)
|
||||
s = new hsUNIXStream;
|
||||
s = new hsUNIXStream;
|
||||
|
||||
if (s)
|
||||
s->Open(fileName, L"rb");
|
||||
|
@ -107,8 +107,8 @@ public:
|
||||
// Attempts to create a read-binary stream for the requested file. If it's
|
||||
// encrypted, you'll get a plEncryptedStream, otherwise just a standard
|
||||
// hsUNIXStream. Remember to delete the stream when you're done with it.
|
||||
static hsStream* OpenEncryptedFile(const char* fileName, bool requireEncrypted = true, uint32_t* cryptKey = nil);
|
||||
static hsStream* OpenEncryptedFile(const wchar_t* fileName, bool requireEncrypted = true, uint32_t* cryptKey = nil);
|
||||
static hsStream* OpenEncryptedFile(const char* fileName, uint32_t* cryptKey = nil);
|
||||
static hsStream* OpenEncryptedFile(const wchar_t* fileName, uint32_t* cryptKey = nil);
|
||||
static hsStream* OpenEncryptedFileWrite(const char* fileName, uint32_t* cryptKey = nil);
|
||||
static hsStream* OpenEncryptedFileWrite(const wchar_t* fileName, uint32_t* cryptKey = nil);
|
||||
};
|
||||
|
@ -83,7 +83,6 @@ void plInitFileReader::IInitReaders( plInitSectionReader **readerArray )
|
||||
|
||||
plInitFileReader::plInitFileReader( plInitSectionReader **readerArray, uint16_t lineSize )
|
||||
{
|
||||
fRequireEncrypted = true;
|
||||
fCurrLine = nil;
|
||||
fLineSize = lineSize;
|
||||
fStream = fOurStream = nil;
|
||||
@ -93,7 +92,6 @@ plInitFileReader::plInitFileReader( plInitSectionReader **readerArray, uint16_t
|
||||
|
||||
plInitFileReader::plInitFileReader( const char *fileName, plInitSectionReader **readerArray, uint16_t lineSize )
|
||||
{
|
||||
fRequireEncrypted = true;
|
||||
fCurrLine = nil;
|
||||
fLineSize = lineSize;
|
||||
fStream = fOurStream = nil;
|
||||
@ -105,7 +103,6 @@ plInitFileReader::plInitFileReader( const char *fileName, plInitSectionReader **
|
||||
|
||||
plInitFileReader::plInitFileReader( hsStream *stream, plInitSectionReader **readerArray, uint16_t lineSize )
|
||||
{
|
||||
fRequireEncrypted = true;
|
||||
fCurrLine = nil;
|
||||
fLineSize = lineSize;
|
||||
fStream = fOurStream = nil;
|
||||
@ -129,7 +126,7 @@ bool plInitFileReader::Open( const char *fileName )
|
||||
return false;
|
||||
}
|
||||
|
||||
fOurStream = plEncryptedStream::OpenEncryptedFile( fileName, fRequireEncrypted );
|
||||
fOurStream = plEncryptedStream::OpenEncryptedFile( fileName );
|
||||
|
||||
if( fOurStream == nil )
|
||||
return false;
|
||||
|
@ -118,7 +118,6 @@ class plInitFileReader
|
||||
hsStream *fOurStream;
|
||||
char *fCurrLine;
|
||||
uint32_t fLineSize;
|
||||
bool fRequireEncrypted;
|
||||
|
||||
plInitSectionReader *fCurrSection;
|
||||
hsTArray<plInitSectionReader *> fSections;
|
||||
@ -138,8 +137,6 @@ class plInitFileReader
|
||||
plInitFileReader( hsStream *stream, plInitSectionReader **readerArray, uint16_t lineSize = 256 );
|
||||
virtual ~plInitFileReader();
|
||||
|
||||
void SetRequireEncrypted(bool require) { fRequireEncrypted = require; }
|
||||
bool GetRequireEncrypted() const { return fRequireEncrypted; }
|
||||
void SetUnhandledSectionReader(plInitSectionReader* reader) { fUnhandledSection = reader; }
|
||||
|
||||
bool Open( const char *fileName );
|
||||
|
@ -53,29 +53,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
|
||||
#include <string.h>
|
||||
|
||||
void plStatusEncrypt::Encrypt( uint8_t *line, uint8_t hint )
|
||||
{
|
||||
// Current encryption scheme: rotate all characters right by 2 bits,
|
||||
// then rotate the whole damn line by 3 bits to the right
|
||||
uint32_t i, len = strlen( (char *)line );
|
||||
uint8_t newHi, hiBits = ( ( line[ len - 1 ] ) << ( 5 - 2 ) ) & 0xe0;
|
||||
|
||||
for( i = 0; i < len; i++ )
|
||||
{
|
||||
// So each character will be the src char rotated right 2 bits, then shifted
|
||||
// right 3 bits, or'ed with the last high bits, and the 3 discarded bits
|
||||
// become the new high bits
|
||||
// Too bad C doesn't have a bit-rotate op
|
||||
|
||||
line[ i ] = ( line[ i ] << 6 ) | ( line[ i ] >> 2 );
|
||||
newHi = line[ i ] << 5;
|
||||
line[ i ] = ( line[ i ] >> 3 ) | hiBits;
|
||||
line[ i ] ^= hint; // Should wrap around
|
||||
|
||||
hiBits = newHi;
|
||||
}
|
||||
}
|
||||
|
||||
void plStatusEncrypt::Decrypt( uint8_t *line, int32_t len, uint8_t hint )
|
||||
{
|
||||
// Da reverse, of course!
|
||||
|
@ -56,7 +56,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
|
||||
namespace plStatusEncrypt
|
||||
{
|
||||
void Encrypt( uint8_t *line, uint8_t hint );
|
||||
void Decrypt( uint8_t *line, int32_t length, uint8_t hint );
|
||||
};
|
||||
|
||||
|
@ -475,12 +475,6 @@ bool plStatusLog::IReOpen( void )
|
||||
wchar_t fileNoExt[MAX_PATH];
|
||||
wchar_t* ext=nil;
|
||||
IParseFileName(file, MAX_PATH, fileNoExt, &ext);
|
||||
fEncryptMe = false;
|
||||
#ifdef PLASMA_EXTERNAL_RELEASE
|
||||
fEncryptMe = ( wcsicmp( fFilename.c_str(), L"chat.log" ) != 0 ) ? true : false;
|
||||
if( fEncryptMe )
|
||||
ext = L".elf";
|
||||
#endif
|
||||
wchar_t fileToOpen[MAX_PATH];
|
||||
hsSnwprintf(fileToOpen, MAX_PATH, L"%s.0%s", fileNoExt, ext);
|
||||
if (!(fFlags & kDontRotateLogs))
|
||||
@ -497,11 +491,11 @@ bool plStatusLog::IReOpen( void )
|
||||
|
||||
if (fFlags & kAppendToLast)
|
||||
{
|
||||
fFileHandle = hsWFopen( fileToOpen, fEncryptMe ? L"ab" : L"at" );
|
||||
fFileHandle = hsWFopen( fileToOpen, L"at" );
|
||||
}
|
||||
else
|
||||
{
|
||||
fFileHandle = hsWFopen( fileToOpen, fEncryptMe ? L"wb" : L"wt" );
|
||||
fFileHandle = hsWFopen( fileToOpen, L"wt" );
|
||||
// if we need to reopen lets just append
|
||||
fFlags |= kAppendToLast;
|
||||
}
|
||||
@ -843,58 +837,18 @@ bool plStatusLog::IPrintLineToFile( const char *line, uint32_t count )
|
||||
}
|
||||
|
||||
size_t remaining = arrsize(buf) - strlen(buf) - 1;
|
||||
if (!fEncryptMe) remaining -= 1;
|
||||
remaining -= 1;
|
||||
if (count <= remaining) {
|
||||
strncat(buf, line, count);
|
||||
} else {
|
||||
strncat(buf, line, remaining);
|
||||
}
|
||||
|
||||
if(!fEncryptMe )
|
||||
{
|
||||
strncat(buf, "\n", 1);
|
||||
}
|
||||
strncat(buf, "\n", 1);
|
||||
}
|
||||
|
||||
unsigned length = strlen(buf);
|
||||
|
||||
#ifdef PLASMA_EXTERNAL_RELEASE
|
||||
// Print to a separate line, since we have to encrypt it
|
||||
if( fEncryptMe )
|
||||
{
|
||||
// Encrypt!
|
||||
plStatusEncrypt::Encrypt( (uint8_t *)buf, hint );
|
||||
|
||||
// xor the line length, then write it out, then the line, no terminating character
|
||||
uint16_t encrySize = length ^ ((uint16_t)fSize);
|
||||
|
||||
// try the first write, if it fails reopen and try again
|
||||
int err;
|
||||
err = fputc( encrySize & 0xff, fFileHandle );
|
||||
if (err == EOF && IReOpen())
|
||||
{
|
||||
err = fputc( encrySize & 0xff, fFileHandle );
|
||||
}
|
||||
|
||||
if (err != EOF)
|
||||
{
|
||||
fSize++; // inc for the last putc
|
||||
err = fputc( encrySize >> 8, fFileHandle );
|
||||
if (err != EOF)
|
||||
fSize++; // inc for the last putc
|
||||
err = fwrite( buf, 1, length, fFileHandle );
|
||||
fSize += err;
|
||||
|
||||
if (!(fFlags & kNonFlushedLog))
|
||||
fflush(fFileHandle);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
int err;
|
||||
err = fwrite(buf,1,length,fFileHandle);
|
||||
|
@ -90,7 +90,6 @@ class plStatusLog
|
||||
hsSemaphore* fSema;
|
||||
FILE* fFileHandle;
|
||||
uint32_t fSize;
|
||||
bool fEncryptMe;
|
||||
bool fForceLog;
|
||||
|
||||
plStatusLog *fNext, **fBack;
|
||||
|
Reference in New Issue
Block a user