CbsHashBuffer

来源:互联网 发布:类似精易编程助手 编辑:程序博客网 时间:2024/06/06 19:18

CbsHashBuffer

__int64 __fastcall CbsHashBuffer(BYTE *pbData, DWORD dwDataLen, __int64 a3, BYTE **a4, _DWORD *a5){  BYTE **v5; // rsi@1  DWORD v6; // er15@1  BYTE *v7; // rdi@1  int v8; // ebx@5  DWORD v9; // eax@6  const char *v10; // r9@8  DWORD v11; // eax@13  DWORD v12; // eax@17  DWORD v13; // eax@21  BYTE *v14; // rdi@24  DWORD v15; // eax@27  int v16; // eax@32  BYTE pbDataa[4]; // [sp+30h] [bp-20h]@20  DWORD pdwDataLen; // [sp+34h] [bp-1Ch]@20  HCRYPTHASH phHash; // [sp+38h] [bp-18h]@5  HCRYPTPROV phProv; // [sp+40h] [bp-10h]@5  v5 = a4;  v6 = dwDataLen;  v7 = pbData;  if ( !pbData )    CbsUtil_Assert((__int64)"base\\cbs\\util\\cbscat.cpp", 35i64, (__int64)"pbBuffer");  if ( !v5 )    CbsUtil_Assert((__int64)"base\\cbs\\util\\cbscat.cpp", 36i64, (__int64)"ppbHash");  v8 = 0;  phProv = 0i64;  phHash = 0i64;  if ( !CryptAcquireContextW(&phProv, 0i64, 0i64, 1u, 0xF0000040) )  {    phProv = 0i64;    v9 = GetLastError();    v8 = v9;    if ( (signed int)v9 > 0 )      v8 = (unsigned __int16)v9 | 0x80070000;    v10 = "Failed to acquire crypt provider context.";LABEL_9:    if ( v8 >= 0 )      v8 = -2147467259;    goto LABEL_11;  }  if ( !CryptCreateHash(phProv, 0x8004u, 0i64, 0, &phHash) )  {    phHash = 0i64;    v11 = GetLastError();    v8 = v11;    if ( (signed int)v11 > 0 )      v8 = (unsigned __int16)v11 | 0x80070000;    v10 = "Failed to create hash.";    goto LABEL_9;  }  if ( !CryptHashData(phHash, v7, v6, 0) )  {    v12 = GetLastError();    v8 = v12;    if ( (signed int)v12 > 0 )      v8 = (unsigned __int16)v12 | 0x80070000;    v10 = "Failed to hash data.";    goto LABEL_9;  }  pdwDataLen = 4;  if ( !CryptGetHashParam(phHash, 4u, pbDataa, &pdwDataLen, 0) )  {    v13 = GetLastError();    v8 = v13;    if ( (signed int)v13 > 0 )      v8 = (unsigned __int16)v13 | 0x80070000;    v10 = "Failed to get hash size.";    goto LABEL_9;  }  v14 = (BYTE *)operator new(*(unsigned int *)pbDataa);  if ( !v14 )  {    v8 = -2147024882;    v10 = "Failed to allocate memory for hash.";LABEL_11:    CBSWdsLog(0x4000000u, v8, 1i64, v10);    goto LABEL_35;  }  pdwDataLen = *(_DWORD *)pbDataa;  if ( CryptGetHashParam(phHash, 2u, v14, &pdwDataLen, 0) )  {    v16 = *(_DWORD *)pbDataa;    *v5 = v14;    v14 = 0i64;    *a5 = v16;  }  else  {    v15 = GetLastError();    v8 = v15;    if ( (signed int)v15 > 0 )      v8 = (unsigned __int16)v15 | 0x80070000;    if ( v8 >= 0 )      v8 = -2147467259;    CBSWdsLog(0x4000000u, v8, 1i64, "Failed to get hash value.");  }  if ( v14 )    operator delete(v14);LABEL_35:  if ( phHash )    CryptDestroyHash(phHash);  if ( phProv )    CryptReleaseContext(phProv, 0);  return (unsigned int)v8;}
0 0
原创粉丝点击