@@ -117,6 +117,18 @@ static void usage(const char* prog)
117117 printf ("usage: %s [--ecc|--x25519] [port]\n" , prog );
118118}
119119
120+ static const char * group_name (word16 group )
121+ {
122+ switch (group ) {
123+ case WOLFSSL_ECC_SECP256R1 :
124+ return "secp256r1" ;
125+ case WOLFSSL_ECC_X25519 :
126+ return "x25519" ;
127+ default :
128+ return "unknown" ;
129+ }
130+ }
131+
120132static int parse_server_args (int argc , char * * argv , int * port , word16 * group )
121133{
122134 int i ;
@@ -160,6 +172,7 @@ int server_async_test(int argc, char** argv)
160172 int port = DEFAULT_PORT ;
161173 word16 group = WOLFSSL_ECC_SECP256R1 ;
162174 int err = 0 ;
175+ const char * mode = NULL ;
163176#ifdef WOLFSSL_ASYNC_CRYPT
164177 int devId = INVALID_DEVID ;
165178#endif
@@ -183,6 +196,8 @@ int server_async_test(int argc, char** argv)
183196 usage (argv [0 ]);
184197 return 0 ;
185198 }
199+ mode = group_name (group );
200+ printf ("Async server mode: %s (keyshare 0x%04x)\n" , mode , group );
186201
187202 /* Initialize the server address struct with zeros */
188203 memset (& servAddr , 0 , sizeof (servAddr ));
@@ -267,20 +282,42 @@ int server_async_test(int argc, char** argv)
267282 wolfSSL_SetIORecv (ctx , NET_IO_RECV_CB );
268283 wolfSSL_SetIOSend (ctx , NET_IO_SEND_CB );
269284
270- /* Load server certificates into WOLFSSL_CTX */
271- ret = wolfSSL_CTX_use_certificate_buffer (ctx , serv_ecc_der_256 ,
272- sizeof_serv_ecc_der_256 , WOLFSSL_FILETYPE_ASN1 );
273- if (ret != WOLFSSL_SUCCESS ) {
274- fprintf (stderr , "ERROR: failed to load ECC server cert buffer.\n" );
285+ if (group == WOLFSSL_ECC_X25519 ) {
286+ #ifdef HAVE_ED25519
287+ ret = wolfSSL_CTX_use_certificate_buffer (ctx , server_ed25519_cert ,
288+ sizeof_server_ed25519_cert , WOLFSSL_FILETYPE_ASN1 );
289+ if (ret != WOLFSSL_SUCCESS ) {
290+ fprintf (stderr ,
291+ "ERROR: failed to load ED25519 server cert buffer.\n" );
292+ goto exit ;
293+ }
294+
295+ ret = wolfSSL_CTX_use_PrivateKey_buffer (ctx , server_ed25519_key ,
296+ sizeof_server_ed25519_key , WOLFSSL_FILETYPE_ASN1 );
297+ if (ret != WOLFSSL_SUCCESS ) {
298+ fprintf (stderr ,
299+ "ERROR: failed to load ED25519 server key buffer.\n" );
300+ goto exit ;
301+ }
302+ #else
303+ fprintf (stderr , "ERROR: --x25519 requires HAVE_ED25519 for certs\n" );
275304 goto exit ;
305+ #endif
276306 }
307+ else {
308+ ret = wolfSSL_CTX_use_certificate_buffer (ctx , serv_ecc_der_256 ,
309+ sizeof_serv_ecc_der_256 , WOLFSSL_FILETYPE_ASN1 );
310+ if (ret != WOLFSSL_SUCCESS ) {
311+ fprintf (stderr , "ERROR: failed to load ECC server cert buffer.\n" );
312+ goto exit ;
313+ }
277314
278- /* Load server key into WOLFSSL_CTX */
279- ret = wolfSSL_CTX_use_PrivateKey_buffer ( ctx , ecc_key_der_256 ,
280- sizeof_ecc_key_der_256 , WOLFSSL_FILETYPE_ASN1 );
281- if ( ret != WOLFSSL_SUCCESS ) {
282- fprintf ( stderr , "ERROR: failed to load ECC server key buffer.\n" ) ;
283- goto exit ;
315+ ret = wolfSSL_CTX_use_PrivateKey_buffer ( ctx , ecc_key_der_256 ,
316+ sizeof_ecc_key_der_256 , WOLFSSL_FILETYPE_ASN1 );
317+ if ( ret != WOLFSSL_SUCCESS ) {
318+ fprintf ( stderr , "ERROR: failed to load ECC server key buffer.\n" );
319+ goto exit ;
320+ }
284321 }
285322
286323 /* Continue to accept clients until mShutdown is issued */
@@ -357,6 +394,14 @@ int server_async_test(int argc, char** argv)
357394 goto exit ;
358395 }
359396
397+ {
398+ const char * cipher = wolfSSL_get_cipher_name (ssl );
399+ const char * curve = wolfSSL_get_curve_name (ssl );
400+ printf ("Negotiated cipher: %s\n" ,
401+ cipher != NULL ? cipher : "unknown" );
402+ printf ("Negotiated group: %s\n" ,
403+ curve != NULL ? curve : "unknown" );
404+ }
360405 printf ("Client connected successfully\n" );
361406
362407 /* Read the client data into our buff array */
@@ -434,6 +479,11 @@ int server_async_test(int argc, char** argv)
434479 goto exit ;
435480 }
436481
482+ #ifdef WOLFSSL_DEBUG_NONBLOCK
483+ printf ("WANT_READ/WRITE count: %d\n" , wouldblock_count );
484+ printf ("WC_PENDING_E count: %d\n" , pending_count );
485+ #endif
486+
437487 /* Cleanup after this connection */
438488 wolfSSL_shutdown (ssl );
439489 if (ssl ) {
0 commit comments