SecureDump_SymmetricEncryptionSetup
NTSTATUS __stdcall SecureDump_SymmetricEncryptionSetup(){
NTSTATUS SymmetricKey;
VOID **PoolWithTag;
_BCRYPT_ALG_HANDLE v2;
UINT32 v3;
UCHAR *v4;
UINT32 v5;
UINT32 pbSecret;
UINT32 cbSecret;
UINT32 v9;
int pbOutput;
UINT32 pcbResult;
pcbResult = 0;
pbOutput = 0;
dword_140C4C5D8 = 1;
SymmetricKey = (unsigned int)BCryptOpenAlgorithmProvider(
&hAlgorithm,
(_LPCWSTR)L"XTS-AES",
(_LPCWSTR)L"Microsoft Primitive Provider",
1u);
if( SymmetricKey < 0 )
goto LABEL_11;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x40ui64, 1886217299i64);
v4 = (UCHAR *)PoolWithTag;
if( !PoolWithTag )
{
SymmetricKey = -1073741670;
goto LABEL_11;
}
SymmetricKey = (unsigned int)BCryptGenRandom(v2, (PUCHAR)PoolWithTag, 0x40u, v3);
if( SymmetricKey >= 0 )
{
SymmetricKey = (unsigned int)BCryptGenerateSymmetricKey(hAlgorithm, &hObject, 0i64, 0, v4, 0x40u, v9);
ExFreePoolWithTag(v4, 0);
if( SymmetricKey < 0 )
goto LABEL_11;
SymmetricKey = (unsigned int)BCryptGetProperty(
*(BCRYPT_HANDLE *)&hObject,
(_LPCWSTR)L"KeyLength",
(PUCHAR)&pbOutput,
v5,
&pcbResult,
cbSecret);
if( SymmetricKey < 0 )
goto LABEL_11;
if( pbOutput == 512 )
{
pbInput = 4096;
SymmetricKey = (unsigned int)BCryptSetProperty(
*(BCRYPT_HANDLE *)&hObject,
(_LPCWSTR)L"MessageBlockLength",
(PUCHAR)&pbInput,
4u,
pbSecret);
}
}
else
{
ExFreePoolWithTag(v4, 0);
}
if( SymmetricKey < 0 )
LABEL_11:
SecureDump_LogErrorEvent(1);
return SymmetricKey;
}Referenced by:
SecureDump_Init