#pragma once #include "kull_m_rpc.h" #include "../kull_m_crypto.h" typedef struct _KUHL_M_DPAPI_MASTERKEY_ENTRY { GUID guid; BYTE keyHash[ SHA_DIGEST_LENGTH ]; } KUHL_M_DPAPI_MASTERKEY_ENTRY, *PKUHL_M_DPAPI_MASTERKEY_ENTRY; typedef struct _KUHL_M_DPAPI_CREDENTIAL_ENTRY { DWORD flags; GUID guid; WCHAR *sid; BYTE md4hash[ LM_NTLM_HASH_LENGTH ]; BYTE md4hashDerived[ SHA_DIGEST_LENGTH ]; BYTE sha1hash[ SHA_DIGEST_LENGTH ]; BYTE sha1hashDerived[ SHA_DIGEST_LENGTH ]; BYTE md4protectedhash[ LM_NTLM_HASH_LENGTH ]; BYTE md4protectedhashDerived[ SHA_DIGEST_LENGTH ]; } KUHL_M_DPAPI_CREDENTIAL_ENTRY, *PKUHL_M_DPAPI_CREDENTIAL_ENTRY; typedef struct _KUHL_M_DPAPI_DOMAINKEY_ENTRY { GUID guid; BOOL isNewKey; DWORD keyLen; BYTE *key; } KUHL_M_DPAPI_DOMAINKEY_ENTRY, *PKUHL_M_DPAPI_DOMAINKEY_ENTRY; typedef /* [decode][encode] */ struct _KUHL_M_DPAPI_ENTRIES { DWORD MasterKeyCount; PKUHL_M_DPAPI_MASTERKEY_ENTRY *MasterKeys; DWORD CredentialCount; PKUHL_M_DPAPI_CREDENTIAL_ENTRY *Credentials; DWORD DomainKeyCount; PKUHL_M_DPAPI_DOMAINKEY_ENTRY *DomainKeys; } KUHL_M_DPAPI_ENTRIES, *PKUHL_M_DPAPI_ENTRIES; size_t KUHL_M_DPAPI_ENTRIES_AlignSize(handle_t _MidlEsHandle, KUHL_M_DPAPI_ENTRIES * _pType); void KUHL_M_DPAPI_ENTRIES_Encode(handle_t _MidlEsHandle, KUHL_M_DPAPI_ENTRIES * _pType); void KUHL_M_DPAPI_ENTRIES_Decode(handle_t _MidlEsHandle, KUHL_M_DPAPI_ENTRIES * _pType); void KUHL_M_DPAPI_ENTRIES_Free(handle_t _MidlEsHandle, KUHL_M_DPAPI_ENTRIES * _pType); #define kull_m_dpapi_oe_DecodeDpapiEntries(/*PVOID */data, /*DWORD */size, /*KUHL_M_DPAPI_ENTRIES **/pObject) kull_m_rpc_Generic_Decode(data, size, pObject, (PGENERIC_RPC_DECODE) KUHL_M_DPAPI_ENTRIES_Decode) #define kull_m_dpapi_oe_FreeDpapiEntries(/*KUHL_M_DPAPI_ENTRIES **/pObject) kull_m_rpc_Generic_Free(pObject, (PGENERIC_RPC_FREE) KUHL_M_DPAPI_ENTRIES_Free) #define kull_m_dpapi_oe_EncodeDpapiEntries(/*KUHL_M_DPAPI_ENTRIES **/pObject, /*PVOID **/data, /*DWORD **/size) kull_m_rpc_Generic_Encode(pObject, data, size, (PGENERIC_RPC_ENCODE) KUHL_M_DPAPI_ENTRIES_Encode, (PGENERIC_RPC_ALIGNSIZE) KUHL_M_DPAPI_ENTRIES_AlignSize)