forked from wolfSSL/wolfssl
add test_wolfSSL_msgCb
This commit is contained in:
29
src/ssl.c
29
src/ssl.c
@ -5873,8 +5873,16 @@ int wolfSSL_CertManagerDisableOCSPStapling(WOLFSSL_CERT_MANAGER* cm)
|
|||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#if defined(SESSION_CERTS)
|
||||||
|
STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL* ssl)
|
||||||
|
{
|
||||||
|
WOLFSSL_ENTER("wolfSSL_get_peer_cert_chain");
|
||||||
|
if ((ssl == NULL) || (ssl->session.chain.count == 0))
|
||||||
|
return NULL;
|
||||||
|
else
|
||||||
|
return (STACK_OF(WOLFSSL_X509)* )&ssl->session.chain;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#ifdef HAVE_OCSP
|
#ifdef HAVE_OCSP
|
||||||
|
|
||||||
|
|
||||||
@ -24993,15 +25001,6 @@ int wolfSSL_version(WOLFSSL* ssl)
|
|||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL* ssl)
|
|
||||||
{
|
|
||||||
WOLFSSL_ENTER("wolfSSL_get_peer_cert_chain");
|
|
||||||
if (ssl == NULL)
|
|
||||||
return NULL;
|
|
||||||
else
|
|
||||||
return (STACK_OF(WOLFSSL_X509)* )&ssl->session.chain;
|
|
||||||
}
|
|
||||||
|
|
||||||
WOLFSSL_CTX* wolfSSL_get_SSL_CTX(WOLFSSL* ssl)
|
WOLFSSL_CTX* wolfSSL_get_SSL_CTX(WOLFSSL* ssl)
|
||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_get_SSL_CTX");
|
WOLFSSL_ENTER("wolfSSL_get_SSL_CTX");
|
||||||
@ -26403,20 +26402,20 @@ int wolfSSL_set_msg_callback(WOLFSSL *ssl, SSL_Msg_Cb cb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NO_WOLFSSL_STUB
|
#ifndef NO_WOLFSSL_STUB
|
||||||
int wolfSSL_CTX_set_msg_callback_arg(WOLFSSL_CTX *ctx, void* arg)
|
void wolfSSL_CTX_set_msg_callback_arg(WOLFSSL_CTX *ctx, void* arg)
|
||||||
{
|
{
|
||||||
WOLFSSL_STUB("SSL_CTX_set_msg_callback_arg");
|
WOLFSSL_STUB("SSL_CTX_set_msg_callback_arg");
|
||||||
(void)ctx;
|
(void)ctx;
|
||||||
(void)arg;
|
(void)arg;
|
||||||
return WOLFSSL_FAILURE;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg)
|
void wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg)
|
||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_set_msg_callback_arg");
|
WOLFSSL_ENTER("wolfSSL_set_msg_callback_arg");
|
||||||
ssl->protoMsgCtx = arg;
|
ssl->protoMsgCtx = arg;
|
||||||
return SSL_SUCCESS;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *wolfSSL_OPENSSL_memdup(const void *data, size_t siz, const char* file, int line)
|
void *wolfSSL_OPENSSL_memdup(const void *data, size_t siz, const char* file, int line)
|
||||||
|
95
tests/api.c
95
tests/api.c
@ -45,6 +45,8 @@
|
|||||||
#include <wolfssl/ssl.h> /* compatibility layer */
|
#include <wolfssl/ssl.h> /* compatibility layer */
|
||||||
#include <wolfssl/test.h>
|
#include <wolfssl/test.h>
|
||||||
#include <tests/unit.h>
|
#include <tests/unit.h>
|
||||||
|
#include "examples/server/server.h"
|
||||||
|
/* for testing compatibility layer callbacks */
|
||||||
|
|
||||||
#ifndef NO_MD5
|
#ifndef NO_MD5
|
||||||
#include <wolfssl/wolfcrypt/md5.h>
|
#include <wolfssl/wolfcrypt/md5.h>
|
||||||
@ -10345,9 +10347,10 @@ static void test_wolfSSL_BN(void)
|
|||||||
#endif /* defined(OPENSSL_EXTRA) && !defined(NO_ASN) */
|
#endif /* defined(OPENSSL_EXTRA) && !defined(NO_ASN) */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define TEST_ARG 0x1234
|
||||||
#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && \
|
#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && \
|
||||||
!defined(NO_FILESYSTEM) && !defined(NO_RSA)
|
!defined(NO_FILESYSTEM) && !defined(NO_RSA)
|
||||||
#define TEST_ARG 0x1234
|
|
||||||
static void msg_cb(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)
|
static void msg_cb(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)
|
||||||
{
|
{
|
||||||
(void)write_p;
|
(void)write_p;
|
||||||
@ -10360,6 +10363,91 @@ static void msg_cb(int write_p, int version, int content_type, const void *buf,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(OPENSSL_EXTRA)
|
||||||
|
static int folk_testServer(THREAD_TYPE *serverThread, tcp_ready *ready)
|
||||||
|
{
|
||||||
|
static char **svr_argv ;
|
||||||
|
#ifdef WOLFSSL_TIRTOS
|
||||||
|
func_args svrArgs = {0};
|
||||||
|
svrArgs.argc = 1;
|
||||||
|
svrArgs.argv = svr_argv;
|
||||||
|
#else
|
||||||
|
func_args svrArgs = { 1, svr_argv, 0, NULL, NULL};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
InitTcpReady(ready);
|
||||||
|
/* start server */
|
||||||
|
svrArgs.signal = ready;
|
||||||
|
start_thread(server_test, &svrArgs, serverThread);
|
||||||
|
wait_tcp_ready(&svrArgs);
|
||||||
|
printf("Server folked\n");
|
||||||
|
return SSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int join_testServer(THREAD_TYPE *serverThread, tcp_ready *ready)
|
||||||
|
{
|
||||||
|
printf("Joining server\n");
|
||||||
|
join_thread(*serverThread);
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_TIRTOS
|
||||||
|
fdCloseSession(Task_self());
|
||||||
|
#endif
|
||||||
|
FreeTcpReady(ready);
|
||||||
|
|
||||||
|
return SSL_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void test_wolfSSL_msgCb(void){
|
||||||
|
#if defined(OPENSSL_EXTRA)
|
||||||
|
SSL* ssl;
|
||||||
|
SSL_CTX* ctx;
|
||||||
|
#if defined(SESSION_CERTS)
|
||||||
|
STACK_OF(WOLFSSL_X509)* chain;
|
||||||
|
#endif
|
||||||
|
THREAD_TYPE serverThread;
|
||||||
|
tcp_ready ready;
|
||||||
|
SOCKET_T sockfd = WOLFSSL_SOCKET_INVALID;
|
||||||
|
const char testMsg[] = "Hello Server";
|
||||||
|
#define BUF_SIZE 100
|
||||||
|
char recvBuff[BUF_SIZE];
|
||||||
|
|
||||||
|
printf(testingFmt, "test_wolfSSL_Get_others()");
|
||||||
|
|
||||||
|
AssertNotNull(ctx = SSL_CTX_new(wolfTLSv1_2_client_method()));
|
||||||
|
AssertTrue(wolfSSL_CTX_load_verify_locations(ctx, caCertFile,0)
|
||||||
|
== SSL_SUCCESS);
|
||||||
|
AssertTrue(wolfSSL_CTX_use_certificate_chain_file(ctx, cliCertFile)
|
||||||
|
== SSL_SUCCESS);
|
||||||
|
AssertTrue(wolfSSL_CTX_use_PrivateKey_file(ctx, cliKeyFile, SSL_FILETYPE_PEM)
|
||||||
|
== SSL_SUCCESS);
|
||||||
|
|
||||||
|
AssertTrue(folk_testServer(&serverThread, &ready) == SSL_SUCCESS);
|
||||||
|
|
||||||
|
AssertNotNull(ssl = SSL_new(ctx));
|
||||||
|
AssertTrue(SSL_set_msg_callback(ssl, msg_cb) == SSL_SUCCESS);
|
||||||
|
SSL_set_msg_callback_arg(ssl, (void*)TEST_ARG);
|
||||||
|
#if defined(SESSION_CERTS)
|
||||||
|
AssertNull(chain = SSL_get_peer_cert_chain(ssl));
|
||||||
|
#endif
|
||||||
|
tcp_connect(&sockfd, wolfSSLIP, wolfSSLPort, 0, 0, ssl);
|
||||||
|
AssertTrue(wolfSSL_set_fd(ssl, sockfd) == SSL_SUCCESS);
|
||||||
|
|
||||||
|
AssertTrue(wolfSSL_connect(ssl) == SSL_SUCCESS);
|
||||||
|
#if defined(SESSION_CERTS)
|
||||||
|
AssertTrue((chain = SSL_get_peer_cert_chain(ssl)) != NULL);
|
||||||
|
#endif
|
||||||
|
AssertTrue(wolfSSL_write(ssl, testMsg, (int)strlen(testMsg)) ==
|
||||||
|
(int)strlen(testMsg));
|
||||||
|
AssertTrue(wolfSSL_read(ssl, recvBuff, sizeof(recvBuff)) > 0);
|
||||||
|
|
||||||
|
AssertTrue(join_testServer (&serverThread, &ready) == SSL_SUCCESS);
|
||||||
|
|
||||||
|
printf(resultFmt, passed);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void test_wolfSSL_set_options(void)
|
static void test_wolfSSL_set_options(void)
|
||||||
{
|
{
|
||||||
#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && \
|
#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && \
|
||||||
@ -10395,7 +10483,7 @@ static void test_wolfSSL_set_options(void)
|
|||||||
SSL_OP_NO_COMPRESSION) == SSL_OP_NO_COMPRESSION);
|
SSL_OP_NO_COMPRESSION) == SSL_OP_NO_COMPRESSION);
|
||||||
|
|
||||||
AssertTrue(SSL_set_msg_callback(ssl, msg_cb) == SSL_SUCCESS);
|
AssertTrue(SSL_set_msg_callback(ssl, msg_cb) == SSL_SUCCESS);
|
||||||
AssertTrue(SSL_set_msg_callback_arg(ssl, arg) == SSL_SUCCESS);
|
SSL_set_msg_callback_arg(ssl, arg);
|
||||||
|
|
||||||
AssertTrue(SSL_CTX_set_alpn_protos(ctx, protos, len) == SSL_SUCCESS);
|
AssertTrue(SSL_CTX_set_alpn_protos(ctx, protos, len) == SSL_SUCCESS);
|
||||||
|
|
||||||
@ -11349,6 +11437,9 @@ void ApiTest(void)
|
|||||||
test_wolfSSL_EVP_MD_hmac_signing();
|
test_wolfSSL_EVP_MD_hmac_signing();
|
||||||
test_wolfSSL_CTX_add_extra_chain_cert();
|
test_wolfSSL_CTX_add_extra_chain_cert();
|
||||||
test_wolfSSL_ERR_peek_last_error_line();
|
test_wolfSSL_ERR_peek_last_error_line();
|
||||||
|
test_wolfSSL_set_options();
|
||||||
|
test_wolfSSL_X509_STORE_CTX();
|
||||||
|
test_wolfSSL_msgCb();
|
||||||
test_wolfSSL_X509_STORE_set_flags();
|
test_wolfSSL_X509_STORE_set_flags();
|
||||||
test_wolfSSL_X509_LOOKUP_load_file();
|
test_wolfSSL_X509_LOOKUP_load_file();
|
||||||
test_wolfSSL_X509_NID();
|
test_wolfSSL_X509_NID();
|
||||||
|
@ -181,7 +181,7 @@ enum wolfSSL_ErrorCodes {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#ifdef WOLFSSL_CALLBACKS
|
#if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA)
|
||||||
enum {
|
enum {
|
||||||
MIN_PARAM_ERR = UNSUPPORTED_SUITE,
|
MIN_PARAM_ERR = UNSUPPORTED_SUITE,
|
||||||
MAX_PARAM_ERR = MIN_PARAM_ERR - 10
|
MAX_PARAM_ERR = MIN_PARAM_ERR - 10
|
||||||
|
@ -434,6 +434,7 @@ typedef WOLFSSL_X509_STORE_CTX X509_STORE_CTX;
|
|||||||
|
|
||||||
#define SSL_CTX_set_session_id_context wolfSSL_CTX_set_session_id_context
|
#define SSL_CTX_set_session_id_context wolfSSL_CTX_set_session_id_context
|
||||||
#define SSL_get_peer_certificate wolfSSL_get_peer_certificate
|
#define SSL_get_peer_certificate wolfSSL_get_peer_certificate
|
||||||
|
#define SSL_get_peer_cert_chain wolfSSL_get_peer_cert_chain
|
||||||
|
|
||||||
#define SSL_want_read wolfSSL_want_read
|
#define SSL_want_read wolfSSL_want_read
|
||||||
#define SSL_want_write wolfSSL_want_write
|
#define SSL_want_write wolfSSL_want_write
|
||||||
@ -656,7 +657,7 @@ typedef WOLFSSL_X509_NAME_ENTRY X509_NAME_ENTRY;
|
|||||||
#define SSL_version wolfSSL_version
|
#define SSL_version wolfSSL_version
|
||||||
#define SSL_get_state wolfSSL_get_state
|
#define SSL_get_state wolfSSL_get_state
|
||||||
#define SSL_state_string_long wolfSSL_state_string_long
|
#define SSL_state_string_long wolfSSL_state_string_long
|
||||||
#define SSL_get_peer_cert_chain wolfSSL_get_peer_cert_chain
|
|
||||||
#define sk_X509_NAME_value wolfSSL_sk_X509_NAME_value
|
#define sk_X509_NAME_value wolfSSL_sk_X509_NAME_value
|
||||||
#define sk_X509_value wolfSSL_sk_X509_value
|
#define sk_X509_value wolfSSL_sk_X509_value
|
||||||
#define SSL_SESSION_get_ex_data wolfSSL_SESSION_get_ex_data
|
#define SSL_SESSION_get_ex_data wolfSSL_SESSION_get_ex_data
|
||||||
|
@ -2430,8 +2430,6 @@ WOLFSSL_API void* wolfSSL_sk_X509_NAME_value(const WOLF_STACK_OF(WOLFSSL_X509_NA
|
|||||||
|
|
||||||
WOLFSSL_API void* wolfSSL_sk_X509_value(WOLF_STACK_OF(WOLFSSL_X509)*, int);
|
WOLFSSL_API void* wolfSSL_sk_X509_value(WOLF_STACK_OF(WOLFSSL_X509)*, int);
|
||||||
|
|
||||||
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*);
|
|
||||||
|
|
||||||
WOLFSSL_API void* wolfSSL_SESSION_get_ex_data(const WOLFSSL_SESSION*, int);
|
WOLFSSL_API void* wolfSSL_SESSION_get_ex_data(const WOLFSSL_SESSION*, int);
|
||||||
|
|
||||||
WOLFSSL_API int wolfSSL_SESSION_set_ex_data(WOLFSSL_SESSION*, int, void*);
|
WOLFSSL_API int wolfSSL_SESSION_set_ex_data(WOLFSSL_SESSION*, int, void*);
|
||||||
@ -2505,8 +2503,10 @@ typedef void (*SSL_Msg_Cb)(int write_p, int version, int content_type,
|
|||||||
|
|
||||||
WOLFSSL_API int wolfSSL_CTX_set_msg_callback(WOLFSSL_CTX *ctx, SSL_Msg_Cb cb);
|
WOLFSSL_API int wolfSSL_CTX_set_msg_callback(WOLFSSL_CTX *ctx, SSL_Msg_Cb cb);
|
||||||
WOLFSSL_API int wolfSSL_set_msg_callback(WOLFSSL *ssl, SSL_Msg_Cb cb);
|
WOLFSSL_API int wolfSSL_set_msg_callback(WOLFSSL *ssl, SSL_Msg_Cb cb);
|
||||||
WOLFSSL_API int wolfSSL_CTX_set_msg_callback_arg(WOLFSSL_CTX *ctx, void* arg);
|
WOLFSSL_API void wolfSSL_CTX_set_msg_callback_arg(WOLFSSL_CTX *ctx, void* arg);
|
||||||
WOLFSSL_API int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg);
|
WOLFSSL_API void wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg);
|
||||||
|
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef OPENSSL_EXTRA
|
#ifdef OPENSSL_EXTRA
|
||||||
|
Reference in New Issue
Block a user