mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Dep/CascLib: Patch CascLib to expose encryption keys
This commit is contained in:
@@ -353,6 +353,14 @@ static int Decrypt_Salsa20(LPBYTE pbOutBuffer, LPBYTE pbInBuffer, size_t cbInBuf
|
||||
return Decrypt(&SalsaState, pbOutBuffer, pbInBuffer, cbInBuffer);
|
||||
}
|
||||
|
||||
static LPBYTE CascFindKey(TCascStorage * hs, ULONGLONG KeyName)
|
||||
{
|
||||
PCASC_ENCRYPTION_KEY pKey;
|
||||
|
||||
pKey = (PCASC_ENCRYPTION_KEY)hs->EncryptionKeys.FindObject(&KeyName);
|
||||
return (pKey != NULL) ? pKey->Key : NULL;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Public functions
|
||||
|
||||
@@ -376,14 +384,6 @@ int CascLoadEncryptionKeys(TCascStorage * hs)
|
||||
return nError;
|
||||
}
|
||||
|
||||
LPBYTE CascFindKey(TCascStorage * hs, ULONGLONG KeyName)
|
||||
{
|
||||
PCASC_ENCRYPTION_KEY pKey;
|
||||
|
||||
pKey = (PCASC_ENCRYPTION_KEY)hs->EncryptionKeys.FindObject(&KeyName);
|
||||
return (pKey != NULL) ? pKey->Key : NULL;
|
||||
}
|
||||
|
||||
int CascDecrypt(TCascStorage * hs, LPBYTE pbOutBuffer, PDWORD pcbOutBuffer, LPBYTE pbInBuffer, DWORD cbInBuffer, DWORD dwFrameIndex)
|
||||
{
|
||||
ULONGLONG KeyName = 0;
|
||||
@@ -515,3 +515,18 @@ bool WINAPI CascAddEncryptionKey(HANDLE hStorage, ULONGLONG KeyName, LPBYTE Key)
|
||||
// Also insert the key to the map
|
||||
return hs->EncryptionKeys.InsertObject(pEncKey, &pEncKey->KeyName);
|
||||
}
|
||||
|
||||
LPBYTE WINAPI CascFindEncryptionKey(HANDLE hStorage, ULONGLONG KeyName)
|
||||
{
|
||||
TCascStorage* hs;
|
||||
|
||||
// Validate the storage handle
|
||||
hs = TCascStorage::IsValid(hStorage);
|
||||
if (hs == NULL)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
return false;
|
||||
}
|
||||
|
||||
return CascFindKey(hs, KeyName);
|
||||
}
|
||||
|
||||
@@ -268,6 +268,7 @@ bool WINAPI CascOpenStorage(LPCTSTR szDataPath, DWORD dwLocaleMask, HANDLE * ph
|
||||
bool WINAPI CascOpenOnlineStorage(LPCTSTR szLocalCache, LPCSTR szCodeName, LPCSTR szRegion, DWORD dwLocaleMask, HANDLE * phStorage);
|
||||
bool WINAPI CascGetStorageInfo(HANDLE hStorage, CASC_STORAGE_INFO_CLASS InfoClass, void * pvStorageInfo, size_t cbStorageInfo, size_t * pcbLengthNeeded);
|
||||
bool WINAPI CascAddEncryptionKey(HANDLE hStorage, ULONGLONG KeyName, LPBYTE Key);
|
||||
LPBYTE WINAPI CascFindEncryptionKey(HANDLE hStorage, ULONGLONG KeyName);
|
||||
bool WINAPI CascCloseStorage(HANDLE hStorage);
|
||||
|
||||
bool WINAPI CascOpenFile(HANDLE hStorage, const void * pvFileName, DWORD dwLocaleFlags, DWORD dwOpenFlags, HANDLE * phFile);
|
||||
|
||||
Reference in New Issue
Block a user