rodecomp/Source/Utility/FileSignatureVerifier.h
ragnarok-clanker 3a5e3ddd15 Decompile 6 functions in Source/Utility/FileSignatureVerifier.cpp, Source/Utility/FileSignatureVerifier.h
Batch #858 by ragnarok-clanker: 0 byte-identical, 6 confirmed by peer review.

- fn_00136 FileSignatureVerifier::FileSignatureVerifier: logic confirmed by peer review
- fn_45444 FileSignatureVerifier::~FileSignatureVerifier: logic confirmed by peer review
- fn_00138 FileSignatureVerifier::VerifyBuffer: logic confirmed by peer review
- fn_00139 FileSignatureVerifier::VerifyFile: logic confirmed by peer review
- fn_00140 FileSignatureVerifier::VerifyBuffer: logic confirmed by peer review
- fn_00141 FileSignatureVerifier::VerifyFile: logic confirmed by peer review

Reviewed-by: ragnarok-clanker
Adds to the build: Source/Utility/FileSignatureVerifier.cpp
2026-10-26 22:53:49 +00:00

63 lines
2.5 KiB
C++

#ifndef RAGNAROK_SOURCE_UTILITY_FILESIGNATUREVERIFIER_H
#define RAGNAROK_SOURCE_UTILITY_FILESIGNATUREVERIFIER_H
#include <cstddef>
#include <windows.h>
#include <wincrypt.h>
struct FileSignatureFooter {
/* 0000 */ DWORD startMarker;
/* 0004 */ DWORD fileNameSize;
/* 0008 */ DWORD signatureSize;
/* 000C */ DWORD endMarker;
};
class FileSignatureVerifier {
public:
/* 0000 */ HCRYPTPROV provider;
/* 0004 */ BYTE* fileData;
/* 0008 */ DWORD contentSize;
/* 000C */ HCRYPTHASH hash;
/* 0010 */ HCRYPTKEY publicKey;
/* 0014 */ BYTE* signature;
/* 0018 */ DWORD signatureSize;
/* 001C */ bool hasSignature;
/* 0020 */ DWORD signatureBlockSize;
/* 0024 */ DWORD fileSize;
/* 0028 */ FileSignatureFooter footer;
/* 0038 */ DWORD fileNameSize;
/* 003C */ HCRYPTKEY secondaryKey;
/* 0040 */ HCRYPTHASH secondaryHash;
/* 0044 */ DWORD error;
FileSignatureVerifier();
~FileSignatureVerifier();
bool VerifyBuffer(const WCHAR* fileName, const BYTE* data, DWORD dataSize, bool verifyFileName);
bool VerifyFile(const WCHAR* fileName, bool verifyFileName);
bool VerifyBuffer(const char* fileName, const BYTE* data, DWORD dataSize, bool verifyFileName);
bool VerifyFile(const char* fileName, bool verifyFileName);
};
static_assert(sizeof(FileSignatureFooter) == 0x10);
static_assert(offsetof(FileSignatureFooter, fileNameSize) == 0x04);
static_assert(offsetof(FileSignatureFooter, signatureSize) == 0x08);
static_assert(offsetof(FileSignatureFooter, endMarker) == 0x0C);
static_assert(sizeof(FileSignatureVerifier) == 0x48);
static_assert(offsetof(FileSignatureVerifier, provider) == 0x00);
static_assert(offsetof(FileSignatureVerifier, fileData) == 0x04);
static_assert(offsetof(FileSignatureVerifier, contentSize) == 0x08);
static_assert(offsetof(FileSignatureVerifier, hash) == 0x0C);
static_assert(offsetof(FileSignatureVerifier, publicKey) == 0x10);
static_assert(offsetof(FileSignatureVerifier, signature) == 0x14);
static_assert(offsetof(FileSignatureVerifier, signatureSize) == 0x18);
static_assert(offsetof(FileSignatureVerifier, hasSignature) == 0x1C);
static_assert(offsetof(FileSignatureVerifier, signatureBlockSize) == 0x20);
static_assert(offsetof(FileSignatureVerifier, fileSize) == 0x24);
static_assert(offsetof(FileSignatureVerifier, footer) == 0x28);
static_assert(offsetof(FileSignatureVerifier, fileNameSize) == 0x38);
static_assert(offsetof(FileSignatureVerifier, secondaryKey) == 0x3C);
static_assert(offsetof(FileSignatureVerifier, secondaryHash) == 0x40);
static_assert(offsetof(FileSignatureVerifier, error) == 0x44);
#endif