24#ifndef WOLFSSL_SNIFFER_H
25#define WOLFSSL_SNIFFER_H
27#include <wolfssl/wolfcrypt/settings.h>
30 #ifdef SSL_SNIFFER_EXPORTS
31 #define SSL_SNIFFER_API __declspec(dllexport)
33 #define SSL_SNIFFER_API __declspec(dllimport)
36 #define SSL_SNIFFER_API
48SSL_SNIFFER_API
int ssl_SetPrivateKey(
const char* address,
int port,
49 const char* keyFile,
int typeK,
50 const char* password,
char* error);
53SSL_SNIFFER_API
int ssl_SetNamedPrivateKey(
const char* name,
54 const char* address,
int port,
55 const char* keyFile,
int typeK,
56 const char* password,
char* error);
59SSL_SNIFFER_API
int ssl_DecodePacket(
const unsigned char* packet,
int length,
60 unsigned char** data,
char* error);
63SSL_SNIFFER_API
int ssl_FreeDecodeBuffer(
unsigned char** data,
char* error);
66SSL_SNIFFER_API
int ssl_FreeZeroDecodeBuffer(
unsigned char** data,
int sz,
70SSL_SNIFFER_API
int ssl_Trace(
const char* traceFile,
char* error);
73SSL_SNIFFER_API
int ssl_EnableRecovery(
int onOff,
int maxMemory,
char* error);
76SSL_SNIFFER_API
int ssl_GetSessionStats(
unsigned int* active,
79 unsigned int* maxSessions,
80 unsigned int* missedData,
81 unsigned int* reassemblyMemory,
84WOLFSSL_API
void ssl_InitSniffer(
void);
86WOLFSSL_API
void ssl_FreeSniffer(
void);
103 unsigned char isValid;
105 unsigned char protocolVersionMajor;
106 unsigned char protocolVersionMinor;
107 unsigned char serverCipherSuite0;
108 unsigned char serverCipherSuite;
109 unsigned char serverCipherSuiteName[256];
111 unsigned char serverNameIndication[128];
112 unsigned int keySize;
117SSL_SNIFFER_API
int ssl_DecodePacketWithSessionInfo(
118 const unsigned char* packet,
int length,
119 unsigned char** data,
SSLInfo* sslInfo,
char* error);
121typedef void (*SSLConnCb)(
const void* session,
SSLInfo* info,
void* ctx);
124SSL_SNIFFER_API
int ssl_SetConnectionCb(SSLConnCb cb);
127SSL_SNIFFER_API
int ssl_SetConnectionCtx(
void* ctx);
132 unsigned long int sslStandardConns;
133 unsigned long int sslClientAuthConns;
134 unsigned long int sslResumedConns;
135 unsigned long int sslEphemeralMisses;
136 unsigned long int sslResumeMisses;
137 unsigned long int sslCiphersUnsupported;
138 unsigned long int sslKeysUnmatched;
139 unsigned long int sslKeyFails;
140 unsigned long int sslDecodeFails;
141 unsigned long int sslAlerts;
142 unsigned long int sslDecryptedBytes;
143 unsigned long int sslEncryptedBytes;
144 unsigned long int sslEncryptedPackets;
145 unsigned long int sslDecryptedPackets;
146 unsigned long int sslKeyMatches;
147 unsigned long int sslEncryptedConns;
149 unsigned long int sslResumptionValid;
150 unsigned long int sslResumptionInserts;
155SSL_SNIFFER_API
int ssl_ResetStatistics(
void);
159SSL_SNIFFER_API
int ssl_ReadStatistics(
SSLStats* stats);
163SSL_SNIFFER_API
int ssl_ReadResetStatistics(
SSLStats* stats);
166typedef int (*SSLWatchCb)(
void* vSniffer,
167 const unsigned char* certHash,
168 unsigned int certHashSz,
169 const unsigned char* certChain,
170 unsigned int certChainSz,
171 void* ctx,
char* error);
174SSL_SNIFFER_API
int ssl_SetWatchKeyCallback(SSLWatchCb cb,
char* error);
177SSL_SNIFFER_API
int ssl_SetWatchKeyCallback_ex(SSLWatchCb cb,
int devId,
181SSL_SNIFFER_API
int ssl_SetWatchKeyCtx(
void* ctx,
char* error);
184SSL_SNIFFER_API
int ssl_SetWatchKey_buffer(
void* vSniffer,
185 const unsigned char* key,
unsigned int keySz,
186 int keyType,
char* error);
189SSL_SNIFFER_API
int ssl_SetWatchKey_file(
void* vSniffer,
190 const char* keyFile,
int keyType,
191 const char* password,
char* error);
194typedef int (*SSLStoreDataCb)(
const unsigned char* decryptBuf,
195 unsigned int decryptBufSz,
unsigned int decryptBufOffset,
void* ctx);
198SSL_SNIFFER_API
int ssl_SetStoreDataCallback(SSLStoreDataCb cb);
201SSL_SNIFFER_API
int ssl_DecodePacketWithSessionInfoStoreData(
202 const unsigned char* packet,
int length,
void* ctx,
203 SSLInfo* sslInfo,
char* error);
207SSL_SNIFFER_API
int ssl_DecodePacketWithChain(
void* vChain,
208 unsigned int chainSz,
unsigned char** data,
char* error);
212SSL_SNIFFER_API
int ssl_DecodePacketWithChainSessionInfoStoreData(
213 void* vChain,
unsigned int chainSz,
void* ctx,
SSLInfo* sslInfo,