diff options
| author | Glenn Smith <glenn@vector35.com> | 2021-06-01 16:22:24 -0400 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2021-08-17 16:50:09 -0400 |
| commit | 176cc79219cdf015cbcf7f90bb6eb5f6a8c59940 (patch) | |
| tree | f472869dadf12add3daf853f2dd73953d322ac6a /binaryninjacore.h | |
| parent | 401b73b242bc9447bd12215b17ea8ce215c7d6ed (diff) | |
Websocket provider
Diffstat (limited to 'binaryninjacore.h')
| -rw-r--r-- | binaryninjacore.h | 46 |
1 files changed, 46 insertions, 0 deletions
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); |
