aboutsummaryrefslogtreecommitdiff
path: root/dep/CascLib/src/CascDecrypt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dep/CascLib/src/CascDecrypt.cpp')
-rw-r--r--dep/CascLib/src/CascDecrypt.cpp31
1 files changed, 23 insertions, 8 deletions
diff --git a/dep/CascLib/src/CascDecrypt.cpp b/dep/CascLib/src/CascDecrypt.cpp
index 81e098ca178..ec29bb4cb07 100644
--- a/dep/CascLib/src/CascDecrypt.cpp
+++ b/dep/CascLib/src/CascDecrypt.cpp
@@ -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);
+}