summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2021-06-01 16:22:24 -0400
committerGlenn Smith <glenn@vector35.com>2021-08-17 16:50:09 -0400
commit176cc79219cdf015cbcf7f90bb6eb5f6a8c59940 (patch)
treef472869dadf12add3daf853f2dd73953d322ac6a /binaryninjacore.h
parent401b73b242bc9447bd12215b17ea8ce215c7d6ed (diff)
Websocket provider
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h46
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);