#include #include "opk_dispatcher.h" #include "opk_init.h" namespace { void OpenOEMCryptoTASession() { uint8_t request_body[] = { 0x07, // TAG_UINT32 0x09, 0x00, 0x00, 0x00, // API value (0x09) 0x08, // TAG_UINT64 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp 0x01, // TAG_BOOL 0x00, // value (false) 0x0b // TAG_EOM }; ODK_Message request = ODK_Message_Create(request_body, sizeof(request_body)); ODK_Message_SetSize(&request, sizeof(request_body)); ODK_Message response; OPK_DispatchMessage(&request, &response); } void InitializeOEMCryptoTA() { uint8_t request_body[] = { 0x07, // TAG_UINT32 0x01, 0x00, 0x00, 0x00, // API value (0x01) 0x08, // TAG_UINT64 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp 0x0b // TAG_EOM }; ODK_Message request = ODK_Message_Create(request_body, sizeof(request_body)); ODK_Message_SetSize(&request, sizeof(request_body)); ODK_Message response; OPK_DispatchMessage(&request, &response); } } // namespace extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) { OPK_Initialize(); InitializeOEMCryptoTA(); OpenOEMCryptoTASession(); return 0; } extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { std::vector request_body(data, data + size); ODK_Message request = ODK_Message_Create(request_body.data(), request_body.size()); ODK_Message_SetSize(&request, request_body.size()); ODK_Message response; OPK_DispatchMessage(&request, &response); return 0; }