From 176cc79219cdf015cbcf7f90bb6eb5f6a8c59940 Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Tue, 1 Jun 2021 16:22:24 -0400 Subject: Websocket provider --- binaryninjacore.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'binaryninjacore.h') diff --git a/binaryninjacore.h b/binaryninjacore.h index 8cf76db6..08f2f483 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -166,6 +166,8 @@ extern "C" struct BNBasicBlock; struct BNDownloadProvider; struct BNDownloadInstance; + struct BNWebsocketProvider; + struct BNWebsocketClient; struct BNFlowGraph; struct BNFlowGraphNode; struct BNFlowGraphLayoutRequest; @@ -2237,6 +2239,30 @@ extern "C" BNDownloadInstance* (*createInstance)(void* ctxt); }; + struct BNWebsocketClientOutputCallbacks + { + void* context; + bool (*connectedCallback)(void* ctxt); + void (*disconnectedCallback)(void* ctxt); + void (*errorCallback)(const char* msg, void* ctxt); + bool (*readCallback)(uint8_t* data, uint64_t len, void* ctxt); + }; + + struct BNWebsocketClientCallbacks + { + void* context; + void (*destroyClient)(void* ctxt); + bool (*connect)(void* ctxt, const char* host, uint64_t headerCount, const char* const* headerKeys, const char* const* headerValues); + bool (*write)(const uint8_t* data, uint64_t len, void* ctxt); + bool (*disconnect)(void* ctxt); + }; + + struct BNWebsocketProviderCallbacks + { + void* context; + BNWebsocketClient* (*createClient)(void* ctxt); + }; + enum BNFindFlag { FindCaseSensitive = 0, @@ -5018,6 +5044,26 @@ __attribute__ ((format (printf, 1, 2))) BINARYNINJACOREAPI char* BNGetErrorForDownloadInstance(BNDownloadInstance* instance); BINARYNINJACOREAPI void BNSetErrorForDownloadInstance(BNDownloadInstance* instance, const char* error); + // Websocket providers + BINARYNINJACOREAPI BNWebsocketProvider* BNRegisterWebsocketProvider(const char* name, BNWebsocketProviderCallbacks* callbacks); + BINARYNINJACOREAPI BNWebsocketProvider** BNGetWebsocketProviderList(size_t* count); + BINARYNINJACOREAPI void BNFreeWebsocketProviderList(BNWebsocketProvider** providers); + BINARYNINJACOREAPI BNWebsocketProvider* BNGetWebsocketProviderByName(const char* name); + + BINARYNINJACOREAPI char* BNGetWebsocketProviderName(BNWebsocketProvider* provider); + BINARYNINJACOREAPI BNWebsocketClient* BNCreateWebsocketProviderClient(BNWebsocketProvider* provider); + + BINARYNINJACOREAPI BNWebsocketClient* BNInitWebsocketClient(BNWebsocketProvider* provider, BNWebsocketClientCallbacks* callbacks); + BINARYNINJACOREAPI BNWebsocketClient* BNNewWebsocketClientReference(BNWebsocketClient* client); + BINARYNINJACOREAPI void BNFreeWebsocketClient(BNWebsocketClient* client); + BINARYNINJACOREAPI bool BNConnectWebsocketClient(BNWebsocketClient* client, const char* url, uint64_t headerCount, const char* const* headerKeys, const char* const* headerValues, BNWebsocketClientOutputCallbacks* callbacks); + BINARYNINJACOREAPI bool BNNotifyWebsocketClientConnect(BNWebsocketClient* client); + BINARYNINJACOREAPI void BNNotifyWebsocketClientDisconnect(BNWebsocketClient* client); + BINARYNINJACOREAPI void BNNotifyWebsocketClientError(BNWebsocketClient* client, const char* msg); + BINARYNINJACOREAPI bool BNNotifyWebsocketClientReadData(BNWebsocketClient* client, uint8_t* data, uint64_t len); + BINARYNINJACOREAPI uint64_t BNWriteWebsocketClientData(BNWebsocketClient* client, const uint8_t* data, uint64_t len); + BINARYNINJACOREAPI bool BNDisconnectWebsocketClient(BNWebsocketClient* client); + // Scripting providers BINARYNINJACOREAPI BNScriptingProvider* BNRegisterScriptingProvider(const char* name, const char* apiName, BNScriptingProviderCallbacks* callbacks); -- cgit v1.3.1