diff options
Diffstat (limited to 'dep/CascLib/src/CascDecrypt.cpp')
-rw-r--r-- | dep/CascLib/src/CascDecrypt.cpp | 31 |
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); +} |