Merge pull request #5682 from JacobBarthelmeh/Testing

additional sanity checks on debug callback
This commit is contained in:
David Garske
2022-10-14 09:25:14 -07:00
committed by GitHub
6 changed files with 92 additions and 48 deletions

View File

@ -1849,6 +1849,7 @@ static int client_srtp_test(WOLFSSL *ssl, func_args *args)
} }
#endif /* WOLFSSL_SRTP */ #endif /* WOLFSSL_SRTP */
THREAD_RETURN WOLFSSL_THREAD client_test(void* args) THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
{ {
SOCKET_T sockfd = WOLFSSL_SOCKET_INVALID; SOCKET_T sockfd = WOLFSSL_SOCKET_INVALID;
@ -2966,6 +2967,9 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
ctx = wolfSSL_CTX_new_ex(method(heap), heap); ctx = wolfSSL_CTX_new_ex(method(heap), heap);
if (ctx == NULL) if (ctx == NULL)
err_sys("unable to get ctx"); err_sys("unable to get ctx");
#ifdef WOLFSSL_CALLBACKS
wolfSSL_CTX_set_msg_callback(ctx, msgDebugCb);
#endif
if (wolfSSL_CTX_load_static_memory(&ctx, NULL, memoryIO, sizeof(memoryIO), if (wolfSSL_CTX_load_static_memory(&ctx, NULL, memoryIO, sizeof(memoryIO),
WOLFMEM_IO_POOL_FIXED | WOLFMEM_TRACK_STATS, 1) != WOLFSSL_SUCCESS) { WOLFMEM_IO_POOL_FIXED | WOLFMEM_TRACK_STATS, 1) != WOLFSSL_SUCCESS) {

View File

@ -1416,6 +1416,7 @@ static int server_srtp_test(WOLFSSL *ssl, func_args *args)
} }
#endif #endif
THREAD_RETURN WOLFSSL_THREAD server_test(void* args) THREAD_RETURN WOLFSSL_THREAD server_test(void* args)
{ {
SOCKET_T sockfd = WOLFSSL_SOCKET_INVALID; SOCKET_T sockfd = WOLFSSL_SOCKET_INVALID;
@ -2487,6 +2488,9 @@ THREAD_RETURN WOLFSSL_THREAD server_test(void* args)
if (method != NULL) { if (method != NULL) {
ctx = SSL_CTX_new(method(NULL)); ctx = SSL_CTX_new(method(NULL));
} }
#ifdef WOLFSSL_CALLBACKS
wolfSSL_CTX_set_msg_callback(ctx, msgDebugCb);
#endif
#endif /* WOLFSSL_STATIC_MEMORY */ #endif /* WOLFSSL_STATIC_MEMORY */
if (ctx == NULL) if (ctx == NULL)
err_sys_ex(catastrophic, "unable to get ctx"); err_sys_ex(catastrophic, "unable to get ctx");
@ -3798,7 +3802,7 @@ exit:
#ifdef HAVE_SECURE_RENEGOTIATION #ifdef HAVE_SECURE_RENEGOTIATION
(void) forceScr; (void) forceScr;
#endif #endif
#ifdef WOLFSSL_CALLBACKS #if defined(WOLFSSL_CALLBACKS) && defined(WOLFSSL_EARLY_DATA)
(void) earlyData; (void) earlyData;
#endif #endif
#ifndef WOLFSSL_TIRTOS #ifndef WOLFSSL_TIRTOS

View File

@ -9638,7 +9638,7 @@ static int SendHandshakeMsg(WOLFSSL* ssl, byte* input, word32 inputSz,
} }
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
AddPacketInfo(ssl, packetName, handshake, AddPacketInfo(ssl, packetName, handshake,
output, outputSz, WRITE_PROTO, ssl->heap); output, outputSz, WRITE_PROTO, 0, ssl->heap);
} }
#endif #endif
ssl->fragOffset += fragSz; ssl->fragOffset += fragSz;
@ -15468,11 +15468,12 @@ static int DoHandShakeMsgType(WOLFSSL* ssl, byte* input, word32* inOutIdx,
} }
#if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA)
/* add name later, add on record and handshake header part back on */ /* add name later, add the handshake header part back on and record layer
* header */
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
int add = RECORD_HEADER_SZ + HANDSHAKE_HEADER_SZ; AddPacketInfo(ssl, 0, handshake, input + *inOutIdx -
AddPacketInfo(ssl, 0, handshake, input + *inOutIdx - add, HANDSHAKE_HEADER_SZ, size + HANDSHAKE_HEADER_SZ, READ_PROTO,
size + add, READ_PROTO, ssl->heap); RECORD_HEADER_SZ, ssl->heap);
#ifdef WOLFSSL_CALLBACKS #ifdef WOLFSSL_CALLBACKS
AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo); AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo);
#endif #endif
@ -18551,11 +18552,14 @@ static int DoAlert(WOLFSSL* ssl, byte* input, word32* inOutIdx, int* type)
#if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) #if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA)
if (ssl->hsInfoOn) if (ssl->hsInfoOn)
AddPacketName(ssl, "Alert"); AddPacketName(ssl, "Alert");
if (ssl->toInfoOn) if (ssl->toInfoOn) {
/* add record header back on to info + alert bytes level/code */ /* add record header back on to info + alert bytes level/code */
AddPacketInfo(ssl, "Alert", alert, input + *inOutIdx - AddPacketInfo(ssl, "Alert", alert, input + *inOutIdx, ALERT_SIZE,
RECORD_HEADER_SZ, RECORD_HEADER_SZ + ALERT_SIZE, READ_PROTO, RECORD_HEADER_SZ, ssl->heap);
READ_PROTO, ssl->heap); #ifdef WOLFSSL_CALLBACKS
AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo);
#endif
}
#endif #endif
if (IsEncryptionOn(ssl, 0)) { if (IsEncryptionOn(ssl, 0)) {
@ -19675,9 +19679,8 @@ int ProcessReplyEx(WOLFSSL* ssl, int allowSocketErr)
AddPacketInfo(ssl, "ChangeCipher", AddPacketInfo(ssl, "ChangeCipher",
change_cipher_spec, change_cipher_spec,
ssl->buffers.inputBuffer.buffer + ssl->buffers.inputBuffer.buffer +
ssl->buffers.inputBuffer.idx - RECORD_HEADER_SZ - ssl->buffers.inputBuffer.idx,
(ssl->options.dtls ? DTLS_RECORD_EXTRA : 0), 1, READ_PROTO, RECORD_HEADER_SZ, ssl->heap);
1 + RECORD_HEADER_SZ, READ_PROTO, ssl->heap);
#ifdef WOLFSSL_CALLBACKS #ifdef WOLFSSL_CALLBACKS
AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo); AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo);
#endif #endif
@ -20070,7 +20073,7 @@ int SendChangeCipher(WOLFSSL* ssl)
if (ssl->hsInfoOn) AddPacketName(ssl, "ChangeCipher"); if (ssl->hsInfoOn) AddPacketName(ssl, "ChangeCipher");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "ChangeCipher", change_cipher_spec, output, AddPacketInfo(ssl, "ChangeCipher", change_cipher_spec, output,
sendSz, WRITE_PROTO, ssl->heap); sendSz, WRITE_PROTO, 0, ssl->heap);
#endif #endif
ssl->buffers.outputBuffer.length += sendSz; ssl->buffers.outputBuffer.length += sendSz;
@ -21021,7 +21024,7 @@ int SendFinished(WOLFSSL* ssl)
if (ssl->hsInfoOn) AddPacketName(ssl, "Finished"); if (ssl->hsInfoOn) AddPacketName(ssl, "Finished");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "Finished", handshake, output, sendSz, AddPacketInfo(ssl, "Finished", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
#endif #endif
ssl->buffers.outputBuffer.length += sendSz; ssl->buffers.outputBuffer.length += sendSz;
@ -21463,7 +21466,7 @@ int SendCertificate(WOLFSSL* ssl)
AddPacketName(ssl, "Certificate"); AddPacketName(ssl, "Certificate");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "Certificate", handshake, output, sendSz, AddPacketInfo(ssl, "Certificate", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
#endif #endif
ssl->buffers.outputBuffer.length += sendSz; ssl->buffers.outputBuffer.length += sendSz;
@ -21659,7 +21662,7 @@ int SendCertificateRequest(WOLFSSL* ssl)
AddPacketName(ssl, "CertificateRequest"); AddPacketName(ssl, "CertificateRequest");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "CertificateRequest", handshake, output, sendSz, AddPacketInfo(ssl, "CertificateRequest", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
#endif #endif
ssl->buffers.outputBuffer.length += sendSz; ssl->buffers.outputBuffer.length += sendSz;
if (ssl->options.groupMessages) if (ssl->options.groupMessages)
@ -21773,7 +21776,7 @@ static int BuildCertificateStatus(WOLFSSL* ssl, byte type, buffer* status,
AddPacketName(ssl, "CertificateStatus"); AddPacketName(ssl, "CertificateStatus");
if (ret == 0 && ssl->toInfoOn) if (ret == 0 && ssl->toInfoOn)
AddPacketInfo(ssl, "CertificateStatus", handshake, output, sendSz, AddPacketInfo(ssl, "CertificateStatus", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
#endif #endif
if (ret == 0) { if (ret == 0) {
@ -22699,7 +22702,7 @@ static int SendAlert_ex(WOLFSSL* ssl, int severity, int type)
if (ssl->hsInfoOn) if (ssl->hsInfoOn)
AddPacketName(ssl, "Alert"); AddPacketName(ssl, "Alert");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "Alert", alert, output, sendSz, WRITE_PROTO, AddPacketInfo(ssl, "Alert", alert, output, sendSz, WRITE_PROTO, 0,
ssl->heap); ssl->heap);
#endif #endif
@ -25164,17 +25167,22 @@ int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, word32 hashSigAlgoSz)
* type type of packet being sent * type type of packet being sent
* data data bing sent with packet * data data bing sent with packet
* sz size of data buffer * sz size of data buffer
* lateRL save space for record layer in TimoutInfo struct
* written 1 if this packet is being written to wire, 0 if being read * written 1 if this packet is being written to wire, 0 if being read
* heap custom heap to use for mallocs/frees * heap custom heap to use for mallocs/frees
*/ */
void AddPacketInfo(WOLFSSL* ssl, const char* name, int type, void AddPacketInfo(WOLFSSL* ssl, const char* name, int type,
const byte* data, int sz, int written, void* heap) const byte* data, int sz, int written, int lateRL, void* heap)
{ {
#ifdef WOLFSSL_CALLBACKS #ifdef WOLFSSL_CALLBACKS
TimeoutInfo* info = &ssl->timeoutInfo; TimeoutInfo* info = &ssl->timeoutInfo;
if (info->numberPackets < (MAX_PACKETS_HANDSHAKE - 1)) { if (info->numberPackets < (MAX_PACKETS_HANDSHAKE - 1)) {
WOLFSSL_TIMEVAL currTime; WOLFSSL_TIMEVAL currTime;
int totalSz;
/* add in space for post record layer */
totalSz = sz + lateRL;
/* may add name after */ /* may add name after */
if (name) { if (name) {
@ -25184,18 +25192,24 @@ int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, word32 hashSigAlgoSz)
} }
/* add data, put in buffer if bigger than static buffer */ /* add data, put in buffer if bigger than static buffer */
info->packets[info->numberPackets].valueSz = sz; info->packets[info->numberPackets].valueSz = totalSz;
if (sz < MAX_VALUE_SZ) if (totalSz < MAX_VALUE_SZ) {
XMEMCPY(info->packets[info->numberPackets].value, data, sz); XMEMCPY(info->packets[info->numberPackets].value, data + lateRL,
sz);
}
else { else {
info->packets[info->numberPackets].bufferValue = info->packets[info->numberPackets].bufferValue =
(byte*)XMALLOC(sz, heap, DYNAMIC_TYPE_INFO); (byte*)XMALLOC(totalSz, heap, DYNAMIC_TYPE_INFO);
if (!info->packets[info->numberPackets].bufferValue) if (!info->packets[info->numberPackets].bufferValue) {
/* let next alloc catch, just don't fill, not fatal here */ /* let next alloc catch, just don't fill, not fatal here */
info->packets[info->numberPackets].valueSz = 0; info->packets[info->numberPackets].valueSz = 0;
else }
XMEMCPY(info->packets[info->numberPackets].bufferValue, else {
data, sz); /* copy over data (which has the handshake header), leaving
* room for post record layer header if set */
XMEMCPY(info->packets[info->numberPackets].bufferValue +
lateRL, data, sz);
}
} }
gettimeofday(&currTime, 0); gettimeofday(&currTime, 0);
info->packets[info->numberPackets].timestamp.tv_sec = info->packets[info->numberPackets].timestamp.tv_sec =
@ -25206,7 +25220,7 @@ int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, word32 hashSigAlgoSz)
} }
#endif /* WOLFSSL_CALLBACKS */ #endif /* WOLFSSL_CALLBACKS */
#ifdef OPENSSL_EXTRA #ifdef OPENSSL_EXTRA
if ((ssl->protoMsgCb != NULL) && (sz > RECORD_HEADER_SZ) && if ((ssl->protoMsgCb != NULL) && (sz > 0) &&
(ssl->keys.encryptionOn != 1)) { (ssl->keys.encryptionOn != 1)) {
/* version from hex to dec 16 is 16^1, 256 from 16^2 and /* version from hex to dec 16 is 16^1, 256 from 16^2 and
4096 from 16^3 */ 4096 from 16^3 */
@ -25216,8 +25230,7 @@ int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, word32 hashSigAlgoSz)
((ssl->version.major & 0xF0) << 12); ((ssl->version.major & 0xF0) << 12);
ssl->protoMsgCb(written, version, type, ssl->protoMsgCb(written, version, type,
(const void *)(data + RECORD_HEADER_SZ), (const void *)data, (size_t)sz,
(size_t)(sz - RECORD_HEADER_SZ),
ssl, ssl->protoMsgCtx); ssl, ssl->protoMsgCtx);
} }
#endif /* OPENSSL_EXTRA */ #endif /* OPENSSL_EXTRA */
@ -25226,6 +25239,7 @@ int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, word32 hashSigAlgoSz)
(void)heap; (void)heap;
(void)type; (void)type;
(void)ssl; (void)ssl;
(void)lateRL;
} }
#endif /* WOLFSSL_CALLBACKS */ #endif /* WOLFSSL_CALLBACKS */
@ -26126,7 +26140,7 @@ static int HashSkeData(WOLFSSL* ssl, enum wc_HashType hashType,
if (ssl->hsInfoOn) AddPacketName(ssl, "ClientHello"); if (ssl->hsInfoOn) AddPacketName(ssl, "ClientHello");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "ClientHello", handshake, output, sendSz, AddPacketInfo(ssl, "ClientHello", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
#endif #endif
ssl->options.buildingMsg = 0; ssl->options.buildingMsg = 0;
@ -29485,7 +29499,7 @@ int SendClientKeyExchange(WOLFSSL* ssl)
AddPacketName(ssl, "ClientKeyExchange"); AddPacketName(ssl, "ClientKeyExchange");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "ClientKeyExchange", handshake, AddPacketInfo(ssl, "ClientKeyExchange", handshake,
args->output, args->sendSz, WRITE_PROTO, ssl->heap); args->output, args->sendSz, WRITE_PROTO, 0, ssl->heap);
#endif #endif
ssl->buffers.outputBuffer.length += args->sendSz; ssl->buffers.outputBuffer.length += args->sendSz;
@ -30515,7 +30529,7 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
AddPacketName(ssl, "ServerHello"); AddPacketName(ssl, "ServerHello");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "ServerHello", handshake, output, sendSz, AddPacketInfo(ssl, "ServerHello", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
#endif #endif
ssl->options.serverState = SERVER_HELLO_COMPLETE; ssl->options.serverState = SERVER_HELLO_COMPLETE;
@ -33933,7 +33947,7 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
AddPacketName(ssl, "ServerHelloDone"); AddPacketName(ssl, "ServerHelloDone");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "ServerHelloDone", handshake, output, sendSz, AddPacketInfo(ssl, "ServerHelloDone", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
#endif #endif
ssl->options.serverState = SERVER_HELLODONE_COMPLETE; ssl->options.serverState = SERVER_HELLODONE_COMPLETE;
ssl->options.buildingMsg = 0; ssl->options.buildingMsg = 0;
@ -35055,7 +35069,7 @@ static int DefTicketEncCb(WOLFSSL* ssl, byte key_name[WOLFSSL_TICKET_NAME_SZ],
AddPacketName(ssl, "HelloVerifyRequest"); AddPacketName(ssl, "HelloVerifyRequest");
if (ssl->toInfoOn) if (ssl->toInfoOn)
AddPacketInfo(ssl, "HelloVerifyRequest", handshake, output, AddPacketInfo(ssl, "HelloVerifyRequest", handshake, output,
sendSz, WRITE_PROTO, ssl->heap); sendSz, WRITE_PROTO, 0, ssl->heap);
#endif #endif
/* are we in scr */ /* are we in scr */

View File

@ -3990,7 +3990,7 @@ int SendTls13ClientHello(WOLFSSL* ssl)
if (ssl->hsInfoOn) AddPacketName(ssl, "ClientHello"); if (ssl->hsInfoOn) AddPacketName(ssl, "ClientHello");
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
AddPacketInfo(ssl, "ClientHello", handshake, args->output, args->sendSz, AddPacketInfo(ssl, "ClientHello", handshake, args->output, args->sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
} }
#endif #endif
@ -6218,7 +6218,7 @@ int SendTls13ServerHello(WOLFSSL* ssl, byte extMsgType)
AddPacketName(ssl, "ServerHello"); AddPacketName(ssl, "ServerHello");
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
AddPacketInfo(ssl, "ServerHello", handshake, output, sendSz, AddPacketInfo(ssl, "ServerHello", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
} }
#endif #endif
@ -6362,7 +6362,7 @@ static int SendTls13EncryptedExtensions(WOLFSSL* ssl)
AddPacketName(ssl, "EncryptedExtensions"); AddPacketName(ssl, "EncryptedExtensions");
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
AddPacketInfo(ssl, "EncryptedExtensions", handshake, output, AddPacketInfo(ssl, "EncryptedExtensions", handshake, output,
sendSz, WRITE_PROTO, ssl->heap); sendSz, WRITE_PROTO, 0, ssl->heap);
} }
#endif #endif
@ -6503,7 +6503,7 @@ static int SendTls13CertificateRequest(WOLFSSL* ssl, byte* reqCtx,
AddPacketName(ssl, "CertificateRequest"); AddPacketName(ssl, "CertificateRequest");
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
AddPacketInfo(ssl, "CertificateRequest", handshake, output, AddPacketInfo(ssl, "CertificateRequest", handshake, output,
sendSz, WRITE_PROTO, ssl->heap); sendSz, WRITE_PROTO, 0, ssl->heap);
} }
#endif #endif
@ -7310,7 +7310,7 @@ static int SendTls13Certificate(WOLFSSL* ssl)
AddPacketName(ssl, "Certificate"); AddPacketName(ssl, "Certificate");
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
AddPacketInfo(ssl, "Certificate", handshake, output, AddPacketInfo(ssl, "Certificate", handshake, output,
sendSz, WRITE_PROTO, ssl->heap); sendSz, WRITE_PROTO, 0, ssl->heap);
} }
#endif #endif
@ -7858,7 +7858,8 @@ static int SendTls13CertificateVerify(WOLFSSL* ssl)
AddPacketName(ssl, "CertificateVerify"); AddPacketName(ssl, "CertificateVerify");
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
AddPacketInfo(ssl, "CertificateVerify", handshake, AddPacketInfo(ssl, "CertificateVerify", handshake,
args->output, args->sendSz, WRITE_PROTO, ssl->heap); args->output, args->sendSz, WRITE_PROTO, 0,
ssl->heap);
} }
#endif #endif
@ -8778,7 +8779,7 @@ static int SendTls13Finished(WOLFSSL* ssl)
if (ssl->hsInfoOn) AddPacketName(ssl, "Finished"); if (ssl->hsInfoOn) AddPacketName(ssl, "Finished");
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
AddPacketInfo(ssl, "Finished", handshake, output, sendSz, AddPacketInfo(ssl, "Finished", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
} }
#endif #endif
@ -8987,7 +8988,7 @@ static int SendTls13KeyUpdate(WOLFSSL* ssl)
if (ssl->hsInfoOn) AddPacketName(ssl, "KeyUpdate"); if (ssl->hsInfoOn) AddPacketName(ssl, "KeyUpdate");
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
AddPacketInfo(ssl, "KeyUpdate", handshake, output, sendSz, AddPacketInfo(ssl, "KeyUpdate", handshake, output, sendSz,
WRITE_PROTO, ssl->heap); WRITE_PROTO, 0, ssl->heap);
} }
#endif #endif
@ -10167,9 +10168,9 @@ int DoTls13HandShakeMsgType(WOLFSSL* ssl, byte* input, word32* inOutIdx,
#if defined(WOLFSSL_CALLBACKS) #if defined(WOLFSSL_CALLBACKS)
/* add name later, add on record and handshake header part back on */ /* add name later, add on record and handshake header part back on */
if (ssl->toInfoOn) { if (ssl->toInfoOn) {
int add = RECORD_HEADER_SZ + HANDSHAKE_HEADER_SZ; AddPacketInfo(ssl, 0, handshake, input + *inOutIdx -
AddPacketInfo(ssl, 0, handshake, input + *inOutIdx - add, HANDSHAKE_HEADER_SZ, size + HANDSHAKE_HEADER_SZ, READ_PROTO,
size + add, READ_PROTO, ssl->heap); RECORD_HEADER_SZ, ssl->heap);
AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo); AddLateRecordHeader(&ssl->curRL, &ssl->timeoutInfo);
} }
#endif #endif

View File

@ -5313,7 +5313,8 @@ WOLFSSL_API void SSL_ResourceFree(WOLFSSL* ssl); /* Micrium uses */
WOLFSSL_LOCAL void InitTimeoutInfo(TimeoutInfo* info); WOLFSSL_LOCAL void InitTimeoutInfo(TimeoutInfo* info);
WOLFSSL_LOCAL void FreeTimeoutInfo(TimeoutInfo* info, void* heap); WOLFSSL_LOCAL void FreeTimeoutInfo(TimeoutInfo* info, void* heap);
WOLFSSL_LOCAL void AddPacketInfo(WOLFSSL* ssl, const char* name, int type, WOLFSSL_LOCAL void AddPacketInfo(WOLFSSL* ssl, const char* name, int type,
const byte* data, int sz, int written, void* heap); const byte* data, int sz, int written, int lateRL,
void* heap);
WOLFSSL_LOCAL void AddLateName(const char* name, TimeoutInfo* info); WOLFSSL_LOCAL void AddLateName(const char* name, TimeoutInfo* info);
WOLFSSL_LOCAL void AddLateRecordHeader(const RecordLayerHeader* rl, WOLFSSL_LOCAL void AddLateRecordHeader(const RecordLayerHeader* rl,
TimeoutInfo* info); TimeoutInfo* info);

View File

@ -2497,6 +2497,26 @@ static WC_INLINE unsigned int my_psk_client_cs_cb(WOLFSSL* ssl,
#endif #endif
#endif /* USE_WINDOWS_API */ #endif /* USE_WINDOWS_API */
#ifdef WOLFSSL_CALLBACKS
/* only for debug use! */
static WC_INLINE void msgDebugCb(int write_p, int version, int content_type,
const void *buf, size_t len, WOLFSSL *ssl, void *arg)
{
size_t z;
byte* pt;
printf("Version %02X, content type = %d\n", version, content_type);
printf("%s ", (write_p)? "WRITING" : "READING");
pt = (byte*)buf;
printf("DATA [%zu]: ", len);
for (z = 0; z < len; z++)
printf("%02X", pt[z]);
printf("\n");
(void)arg;
(void)ssl;
}
#endif /* WOLFSSL_CALLBACKS */
#if defined(HAVE_OCSP) && defined(WOLFSSL_NONBLOCK_OCSP) #if defined(HAVE_OCSP) && defined(WOLFSSL_NONBLOCK_OCSP)
static WC_INLINE int OCSPIOCb(void* ioCtx, const char* url, int urlSz, static WC_INLINE int OCSPIOCb(void* ioCtx, const char* url, int urlSz,