Skip to content

Commit da4424c

Browse files
authored
Merge pull request #6559 from dgarske/sni_defaults
Turn on SNI by default on hosts with resources
2 parents a4c0586 + 6052e01 commit da4424c

6 files changed

Lines changed: 139 additions & 103 deletions

File tree

CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1299,7 +1299,6 @@ endif()
12991299
# - CRL monitor
13001300
# - User crypto
13011301
# - Whitewood netRandom client library
1302-
# - SNI
13031302
# - Max fragment length
13041303
# - ALPN
13051304
# - Trusted CA indication
@@ -1315,8 +1314,14 @@ add_option(WOLFSSL_CRL
13151314
"Enable CRL (Use =io for inline CRL HTTP GET) (default: disabled)"
13161315
"no" "yes;no;io")
13171316

1317+
1318+
set(SNI_DEFAULT "no")
1319+
if(("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64|x86|AMD64|arm64") OR
1320+
("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64"))
1321+
set(SNI_DEFAULT "yes")
1322+
endif()
13181323
set(WOLFSSL_SNI_HELP_STRING "Enable SNI (default: disabled)")
1319-
add_option(WOLFSSL_SNI ${WOLFSSL_SNI_HELP_STRING} "no" "yes;no")
1324+
add_option(WOLFSSL_SNI ${WOLFSSL_SNI_HELP_STRING} ${SNI_DEFAULT} "yes;no")
13201325

13211326
set(WOLFSSL_TLSX_HELP_STRING "Enable all TLS Extensions (default: disabled)")
13221327
add_option(WOLFSSL_TLSX ${WOLFSSL_TLSX_HELP_STRING} "no" "yes;no")

configure.ac

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4971,21 +4971,22 @@ AC_ARG_WITH([wnr],
49714971

49724972

49734973
# SNI
4974+
# enable SNI automatically for x86_64/x86/aarch64/amd64
4975+
SNI_DEFAULT=no
4976+
if test "$host_cpu" = "x86_64" || test "$host_cpu" = "x86" || test "$host_cpu" = "aarch64" || test "$host_cpu" = "amd64"
4977+
then
4978+
SNI_DEFAULT=yes
4979+
fi
49744980
AC_ARG_ENABLE([sni],
4975-
[AS_HELP_STRING([--enable-sni],[Enable SNI (default: disabled)])],
4981+
[AS_HELP_STRING([--enable-sni],[Enable SNI (default: enabled on x86_64/x86/aarch64/amd64)])],
49764982
[ ENABLED_SNI=$enableval ],
4977-
[ ENABLED_SNI=no ]
4983+
[ ENABLED_SNI=$SNI_DEFAULT ]
49784984
)
4979-
if test "x$ENABLED_QT" = "xyes"
4985+
if test "x$ENABLED_QT" = "xyes" || test "$ENABLED_QUIC" = "yes"
49804986
then
49814987
ENABLED_SNI="yes"
49824988
fi
49834989

4984-
if test "$ENABLED_QUIC" = "yes"
4985-
then
4986-
ENABLED_SNI=yes
4987-
fi
4988-
49894990
if test "x$ENABLED_SNI" = "xyes"
49904991
then
49914992
AM_CFLAGS="$AM_CFLAGS -DHAVE_TLS_EXTENSIONS -DHAVE_SNI"

tests/api.c

Lines changed: 114 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,20 @@
4747
#endif
4848
#if defined(WOLFSSL_STATIC_MEMORY)
4949
#include <wolfssl/wolfcrypt/memory.h>
50+
51+
#if defined(WOLFSSL_STATIC_MEMORY) && !defined(WOLFCRYPT_ONLY)
52+
#if (defined(HAVE_ECC) && !defined(ALT_ECC_SIZE)) || \
53+
defined(SESSION_CERTS)
54+
#ifdef OPENSSL_EXTRA
55+
#define TEST_TLS_STATIC_MEMSZ (400000)
56+
#else
57+
#define TEST_TLS_STATIC_MEMSZ (320000)
58+
#endif
59+
#else
60+
#define TEST_TLS_STATIC_MEMSZ (80000)
61+
#endif
62+
#endif
63+
5064
#endif /* WOLFSSL_STATIC_MEMORY */
5165
#ifndef HEAP_HINT
5266
#define HEAP_HINT NULL
@@ -6800,11 +6814,11 @@ static THREAD_RETURN WOLFSSL_THREAD run_wolfssl_server(void* args)
68006814
}
68016815
#else
68026816
ctx = wolfSSL_CTX_new(callbacks->method());
6817+
#endif
68036818
if (ctx == NULL) {
68046819
fprintf(stderr, "CTX new failed\n");
68056820
goto cleanup;
68066821
}
6807-
#endif
68086822

68096823
/* set defaults */
68106824
if (callbacks->caPemFile == NULL)
@@ -7053,14 +7067,12 @@ static void run_wolfssl_client(void* args)
70537067
}
70547068
}
70557069
#else
7056-
if (ctx == NULL) {
7057-
ctx = wolfSSL_CTX_new(callbacks->method());
7058-
}
7070+
ctx = wolfSSL_CTX_new(callbacks->method());
7071+
#endif
70597072
if (ctx == NULL) {
70607073
fprintf(stderr, "CTX new failed\n");
70617074
goto cleanup;
70627075
}
7063-
#endif
70647076

70657077
#ifdef WOLFSSL_TIRTOS
70667078
fdOpenSession(Task_self());
@@ -9353,90 +9365,117 @@ static int test_wolfSSL_UseSNI_connection(void)
93539365
callback_functions client_cb;
93549366
callback_functions server_cb;
93559367
size_t i;
9356-
9368+
#ifdef WOLFSSL_STATIC_MEMORY
9369+
byte cliMem[TEST_TLS_STATIC_MEMSZ];
9370+
byte svrMem[TEST_TLS_STATIC_MEMSZ];
9371+
#endif
93579372
struct {
93589373
method_provider client_meth;
93599374
method_provider server_meth;
9375+
#ifdef WOLFSSL_STATIC_MEMORY
9376+
wolfSSL_method_func client_meth_ex;
9377+
wolfSSL_method_func server_meth_ex;
9378+
#endif
93609379
} methods[] = {
93619380
#if defined(WOLFSSL_NO_TLS12) && !defined(WOLFSSL_TLS13)
9362-
{wolfSSLv23_client_method, wolfSSLv23_server_method},
9381+
{wolfSSLv23_client_method, wolfSSLv23_server_method
9382+
#ifdef WOLFSSL_STATIC_MEMORY
9383+
,wolfSSLv23_client_method_ex, wolfSSLv23_server_method_ex
9384+
#endif
9385+
},
93639386
#endif
93649387
#ifndef WOLFSSL_NO_TLS12
9365-
{wolfTLSv1_2_client_method, wolfTLSv1_2_server_method},
9388+
{wolfTLSv1_2_client_method, wolfTLSv1_2_server_method
9389+
#ifdef WOLFSSL_STATIC_MEMORY
9390+
,wolfTLSv1_2_client_method_ex, wolfTLSv1_2_server_method_ex
9391+
#endif
9392+
},
93669393
#endif
93679394
#ifdef WOLFSSL_TLS13
9368-
{wolfTLSv1_3_client_method, wolfTLSv1_3_server_method},
9395+
{wolfTLSv1_3_client_method, wolfTLSv1_3_server_method
9396+
#ifdef WOLFSSL_STATIC_MEMORY
9397+
,wolfTLSv1_3_client_method_ex, wolfTLSv1_3_server_method_ex
9398+
#endif
9399+
},
93699400
#endif
93709401
};
93719402
size_t methodsSz = sizeof(methods) / sizeof(*methods);
93729403

93739404
for (i = 0; i < methodsSz; i++) {
9374-
XMEMSET(&client_cb, 0, sizeof(callback_functions));
9375-
XMEMSET(&server_cb, 0, sizeof(callback_functions));
9376-
client_cb.method = methods[i].client_meth;
9377-
server_cb.method = methods[i].server_meth;
9378-
client_cb.devId = testDevId;
9379-
server_cb.devId = testDevId;
9380-
9381-
/* success case at ctx */
9382-
printf("success case at ctx\n");
9383-
client_cb.ctx_ready = use_SNI_at_ctx; client_cb.ssl_ready = NULL; client_cb.on_result = NULL;
9384-
server_cb.ctx_ready = use_SNI_at_ctx; server_cb.ssl_ready = NULL; server_cb.on_result = verify_SNI_real_matching;
9385-
test_wolfSSL_client_server(&client_cb, &server_cb);
9386-
9387-
/* success case at ssl */
9388-
printf("success case at ssl\n");
9389-
client_cb.ctx_ready = NULL; client_cb.ssl_ready = use_SNI_at_ssl; client_cb.on_result = verify_SNI_real_matching;
9390-
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_SNI_at_ssl; server_cb.on_result = verify_SNI_real_matching;
9391-
test_wolfSSL_client_server(&client_cb, &server_cb);
9392-
9393-
/* default mismatch behavior */
9394-
printf("default mismatch behavior\n");
9395-
client_cb.ctx_ready = NULL; client_cb.ssl_ready = different_SNI_at_ssl; client_cb.on_result = verify_FATAL_ERROR_on_client;
9396-
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_SNI_at_ssl; server_cb.on_result = verify_UNKNOWN_SNI_on_server;
9397-
test_wolfSSL_client_server(&client_cb, &server_cb);
9398-
9399-
/* continue on mismatch */
9400-
printf("continue on mismatch\n");
9401-
client_cb.ctx_ready = NULL; client_cb.ssl_ready = different_SNI_at_ssl; client_cb.on_result = NULL;
9402-
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_SNI_WITH_CONTINUE_at_ssl; server_cb.on_result = verify_SNI_no_matching;
9403-
test_wolfSSL_client_server(&client_cb, &server_cb);
9404-
9405-
/* fake answer on mismatch */
9406-
printf("fake answer on mismatch\n");
9407-
client_cb.ctx_ready = NULL; client_cb.ssl_ready = different_SNI_at_ssl; client_cb.on_result = NULL;
9408-
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_SNI_WITH_FAKE_ANSWER_at_ssl; server_cb.on_result = verify_SNI_fake_matching;
9409-
test_wolfSSL_client_server(&client_cb, &server_cb);
9410-
9411-
/* sni abort - success */
9412-
printf("sni abort - success\n");
9413-
client_cb.ctx_ready = use_SNI_at_ctx; client_cb.ssl_ready = NULL; client_cb.on_result = NULL;
9414-
server_cb.ctx_ready = use_MANDATORY_SNI_at_ctx; server_cb.ssl_ready = NULL; server_cb.on_result = verify_SNI_real_matching;
9415-
test_wolfSSL_client_server(&client_cb, &server_cb);
9416-
9417-
/* sni abort - abort when absent (ctx) */
9418-
printf("sni abort - abort when absent (ctx)\n");
9419-
client_cb.ctx_ready = NULL; client_cb.ssl_ready = NULL; client_cb.on_result = verify_FATAL_ERROR_on_client;
9420-
server_cb.ctx_ready = use_MANDATORY_SNI_at_ctx; server_cb.ssl_ready = NULL; server_cb.on_result = verify_SNI_ABSENT_on_server;
9421-
test_wolfSSL_client_server(&client_cb, &server_cb);
9422-
9423-
/* sni abort - abort when absent (ssl) */
9424-
printf("sni abort - abort when absent (ssl)\n");
9425-
client_cb.ctx_ready = NULL; client_cb.ssl_ready = NULL; client_cb.on_result = verify_FATAL_ERROR_on_client;
9426-
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_MANDATORY_SNI_at_ssl; server_cb.on_result = verify_SNI_ABSENT_on_server;
9427-
test_wolfSSL_client_server(&client_cb, &server_cb);
9428-
9429-
/* sni abort - success when overwritten */
9430-
printf("sni abort - success when overwritten\n");
9431-
client_cb.ctx_ready = NULL; client_cb.ssl_ready = NULL; client_cb.on_result = NULL;
9432-
server_cb.ctx_ready = use_MANDATORY_SNI_at_ctx; server_cb.ssl_ready = use_SNI_at_ssl; server_cb.on_result = verify_SNI_no_matching;
9433-
test_wolfSSL_client_server(&client_cb, &server_cb);
9434-
9435-
/* sni abort - success when allowing mismatches */
9436-
printf("sni abort - success when allowing mismatches\n");
9437-
client_cb.ctx_ready = NULL; client_cb.ssl_ready = different_SNI_at_ssl; client_cb.on_result = NULL;
9438-
server_cb.ctx_ready = use_PSEUDO_MANDATORY_SNI_at_ctx; server_cb.ssl_ready = NULL; server_cb.on_result = verify_SNI_fake_matching;
9439-
test_wolfSSL_client_server(&client_cb, &server_cb);
9405+
XMEMSET(&client_cb, 0, sizeof(callback_functions));
9406+
XMEMSET(&server_cb, 0, sizeof(callback_functions));
9407+
client_cb.method = methods[i].client_meth;
9408+
server_cb.method = methods[i].server_meth;
9409+
client_cb.devId = testDevId;
9410+
server_cb.devId = testDevId;
9411+
#ifdef WOLFSSL_STATIC_MEMORY
9412+
client_cb.method_ex = methods[i].client_meth_ex;
9413+
server_cb.method_ex = methods[i].server_meth_ex;
9414+
client_cb.mem = cliMem;
9415+
client_cb.memSz = (word32)sizeof(cliMem);
9416+
server_cb.mem = svrMem;
9417+
server_cb.memSz = (word32)sizeof(svrMem);;
9418+
#endif
9419+
9420+
/* success case at ctx */
9421+
printf("\n\tsuccess case at ctx\n");
9422+
client_cb.ctx_ready = use_SNI_at_ctx; client_cb.ssl_ready = NULL; client_cb.on_result = NULL;
9423+
server_cb.ctx_ready = use_SNI_at_ctx; server_cb.ssl_ready = NULL; server_cb.on_result = verify_SNI_real_matching;
9424+
test_wolfSSL_client_server(&client_cb, &server_cb);
9425+
9426+
/* success case at ssl */
9427+
printf("\tsuccess case at ssl\n");
9428+
client_cb.ctx_ready = NULL; client_cb.ssl_ready = use_SNI_at_ssl; client_cb.on_result = verify_SNI_real_matching;
9429+
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_SNI_at_ssl; server_cb.on_result = verify_SNI_real_matching;
9430+
test_wolfSSL_client_server(&client_cb, &server_cb);
9431+
9432+
/* default mismatch behavior */
9433+
printf("\tdefault mismatch behavior\n");
9434+
client_cb.ctx_ready = NULL; client_cb.ssl_ready = different_SNI_at_ssl; client_cb.on_result = verify_FATAL_ERROR_on_client;
9435+
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_SNI_at_ssl; server_cb.on_result = verify_UNKNOWN_SNI_on_server;
9436+
test_wolfSSL_client_server(&client_cb, &server_cb);
9437+
9438+
/* continue on mismatch */
9439+
printf("\tcontinue on mismatch\n");
9440+
client_cb.ctx_ready = NULL; client_cb.ssl_ready = different_SNI_at_ssl; client_cb.on_result = NULL;
9441+
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_SNI_WITH_CONTINUE_at_ssl; server_cb.on_result = verify_SNI_no_matching;
9442+
test_wolfSSL_client_server(&client_cb, &server_cb);
9443+
9444+
/* fake answer on mismatch */
9445+
printf("\tfake answer on mismatch\n");
9446+
client_cb.ctx_ready = NULL; client_cb.ssl_ready = different_SNI_at_ssl; client_cb.on_result = NULL;
9447+
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_SNI_WITH_FAKE_ANSWER_at_ssl; server_cb.on_result = verify_SNI_fake_matching;
9448+
test_wolfSSL_client_server(&client_cb, &server_cb);
9449+
9450+
/* sni abort - success */
9451+
printf("\tsni abort - success\n");
9452+
client_cb.ctx_ready = use_SNI_at_ctx; client_cb.ssl_ready = NULL; client_cb.on_result = NULL;
9453+
server_cb.ctx_ready = use_MANDATORY_SNI_at_ctx; server_cb.ssl_ready = NULL; server_cb.on_result = verify_SNI_real_matching;
9454+
test_wolfSSL_client_server(&client_cb, &server_cb);
9455+
9456+
/* sni abort - abort when absent (ctx) */
9457+
printf("\tsni abort - abort when absent (ctx)\n");
9458+
client_cb.ctx_ready = NULL; client_cb.ssl_ready = NULL; client_cb.on_result = verify_FATAL_ERROR_on_client;
9459+
server_cb.ctx_ready = use_MANDATORY_SNI_at_ctx; server_cb.ssl_ready = NULL; server_cb.on_result = verify_SNI_ABSENT_on_server;
9460+
test_wolfSSL_client_server(&client_cb, &server_cb);
9461+
9462+
/* sni abort - abort when absent (ssl) */
9463+
printf("\tsni abort - abort when absent (ssl)\n");
9464+
client_cb.ctx_ready = NULL; client_cb.ssl_ready = NULL; client_cb.on_result = verify_FATAL_ERROR_on_client;
9465+
server_cb.ctx_ready = NULL; server_cb.ssl_ready = use_MANDATORY_SNI_at_ssl; server_cb.on_result = verify_SNI_ABSENT_on_server;
9466+
test_wolfSSL_client_server(&client_cb, &server_cb);
9467+
9468+
/* sni abort - success when overwritten */
9469+
printf("\tsni abort - success when overwritten\n");
9470+
client_cb.ctx_ready = NULL; client_cb.ssl_ready = NULL; client_cb.on_result = NULL;
9471+
server_cb.ctx_ready = use_MANDATORY_SNI_at_ctx; server_cb.ssl_ready = use_SNI_at_ssl; server_cb.on_result = verify_SNI_no_matching;
9472+
test_wolfSSL_client_server(&client_cb, &server_cb);
9473+
9474+
/* sni abort - success when allowing mismatches */
9475+
printf("\tsni abort - success when allowing mismatches\n");
9476+
client_cb.ctx_ready = NULL; client_cb.ssl_ready = different_SNI_at_ssl; client_cb.on_result = NULL;
9477+
server_cb.ctx_ready = use_PSEUDO_MANDATORY_SNI_at_ctx; server_cb.ssl_ready = NULL; server_cb.on_result = verify_SNI_fake_matching;
9478+
test_wolfSSL_client_server(&client_cb, &server_cb);
94409479
}
94419480

94429481
res = TEST_RES_CHECK(1);
@@ -57657,17 +57696,6 @@ static int test_wolfSSL_CTX_StaticMemory_TLS(int tlsVer,
5765757696
#endif /* WOLFSSL_STATIC_MEMORY && HAVE_IO_TESTS_DEPENDENCIES */
5765857697

5765957698
#if defined(WOLFSSL_STATIC_MEMORY) && !defined(WOLFCRYPT_ONLY)
57660-
#if (defined(HAVE_ECC) && !defined(ALT_ECC_SIZE)) || \
57661-
defined(SESSION_CERTS)
57662-
#ifdef OPENSSL_EXTRA
57663-
#define TEST_TLS_STATIC_MEMSZ (400000)
57664-
#else
57665-
#define TEST_TLS_STATIC_MEMSZ (320000)
57666-
#endif
57667-
#else
57668-
#define TEST_TLS_STATIC_MEMSZ (80000)
57669-
#endif
57670-
5767157699
static int test_wolfSSL_CTX_StaticMemory_SSL(WOLFSSL_CTX* ctx)
5767257700
{
5767357701
EXPECT_DECLS;

wolfcrypt/src/wc_port.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ int wolfCrypt_Init(void)
385385
return ret;
386386
}
387387

388-
#ifdef WOLFSSL_TRACK_MEMORY_VERBOSE
388+
#if defined(WOLFSSL_TRACK_MEMORY_VERBOSE) && !defined(WOLFSSL_STATIC_MEMORY)
389389
long wolfCrypt_heap_peakAllocs_checkpoint(void) {
390390
long ret = ourMemStats.peakAllocsTripOdometer;
391391
ourMemStats.peakAllocsTripOdometer = ourMemStats.totalAllocs -

wolfcrypt/test/test.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
#endif
5656
#endif
5757

58-
#ifdef WOLFSSL_TRACK_MEMORY_VERBOSE
58+
#if defined(WOLFSSL_TRACK_MEMORY_VERBOSE) && !defined(WOLFSSL_STATIC_MEMORY)
5959
#ifdef WOLFSSL_TEST_MAX_RELATIVE_HEAP_ALLOCS
6060
static ssize_t max_relative_heap_allocs = WOLFSSL_TEST_MAX_RELATIVE_HEAP_ALLOCS;
6161
#else
@@ -84,7 +84,7 @@
8484
}
8585
#else
8686
#define PRINT_HEAP_CHECKPOINT()
87-
#endif
87+
#endif /* WOLFSSL_TRACK_MEMORY_VERBOSE && !WOLFSSL_STATIC_MEMORY */
8888

8989
#ifdef USE_FLAT_TEST_H
9090
#ifdef HAVE_CONFIG_H
@@ -832,15 +832,15 @@ wc_test_ret_t wolfcrypt_test(void* args)
832832
#endif
833833
{
834834
wc_test_ret_t ret;
835-
#ifdef WOLFSSL_TRACK_MEMORY_VERBOSE
835+
#if defined(WOLFSSL_TRACK_MEMORY_VERBOSE) && !defined(WOLFSSL_STATIC_MEMORY)
836836
long heap_baselineAllocs, heap_baselineBytes;
837837
#endif
838838
#ifdef TEST_ALWAYS_RUN_TO_END
839839
int last_failed_test_ret = 0;
840840
#endif
841841
STACK_SIZE_INIT();
842842

843-
#ifdef WOLFSSL_TRACK_MEMORY_VERBOSE
843+
#if defined(WOLFSSL_TRACK_MEMORY_VERBOSE) && !defined(WOLFSSL_STATIC_MEMORY)
844844
(void)wolfCrypt_heap_peakAllocs_checkpoint();
845845
heap_baselineAllocs = wolfCrypt_heap_peakAllocs_checkpoint();
846846
(void)wolfCrypt_heap_peakBytes_checkpoint();

wolfssl/test.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2903,7 +2903,8 @@ static WC_INLINE int myVerify(int preverify, WOLFSSL_X509_STORE_CTX* store)
29032903
char buffer[WOLFSSL_MAX_ERROR_SZ];
29042904
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
29052905
WOLFSSL_X509* peer;
2906-
#if defined(SHOW_CERTS) && !defined(NO_FILESYSTEM)
2906+
#if defined(SHOW_CERTS) && !defined(NO_FILESYSTEM) && \
2907+
!defined(OPENSSL_EXTRA_X509_SMALL)
29072908
WOLFSSL_BIO* bio = NULL;
29082909
WOLFSSL_STACK* sk = NULL;
29092910
X509* x509 = NULL;
@@ -2948,7 +2949,8 @@ static WC_INLINE int myVerify(int preverify, WOLFSSL_X509_STORE_CTX* store)
29482949

29492950
XFREE(subject, 0, DYNAMIC_TYPE_OPENSSL);
29502951
XFREE(issuer, 0, DYNAMIC_TYPE_OPENSSL);
2951-
#if defined(SHOW_CERTS) && !defined(NO_FILESYSTEM)
2952+
#if defined(SHOW_CERTS) && !defined(NO_FILESYSTEM) && \
2953+
!defined(OPENSSL_EXTRA_X509_SMALL)
29522954
/* avoid printing duplicate certs */
29532955
if (store->depth == 1) {
29542956
int i;

0 commit comments

Comments
 (0)