56 lines
1.9 KiB
C++
56 lines
1.9 KiB
C++
#include <vector>
|
|
|
|
#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<uint8_t> 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;
|
|
}
|