@@ -2006,7 +2006,7 @@ static int LoadPasswdList(StrList* strList, PwMapList* mapList)
20062006
20072007 return count ;
20082008}
2009-
2009+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
20102010static int LoadKeyboardList (StrList * strList , PwMapList * mapList )
20112011{
20122012 char names [256 ];
@@ -2034,6 +2034,7 @@ static int LoadKeyboardList(StrList* strList, PwMapList* mapList)
20342034
20352035 return count ;
20362036}
2037+ #endif
20372038
20382039#ifndef NO_FILESYSTEM
20392040static int LoadPubKeyList (StrList * strList , int format , PwMapList * mapList )
@@ -2183,8 +2184,10 @@ static int wsUserAuth(byte authType,
21832184#ifdef WOLFSSH_ALLOW_USERAUTH_NONE
21842185 authType != WOLFSSH_USERAUTH_NONE &&
21852186#endif
2186- authType != WOLFSSH_USERAUTH_PUBLICKEY &&
2187- authType != WOLFSSH_USERAUTH_KEYBOARD ) {
2187+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
2188+ authType != WOLFSSH_USERAUTH_KEYBOARD &&
2189+ #endif
2190+ authType != WOLFSSH_USERAUTH_PUBLICKEY ) {
21882191
21892192 return WOLFSSH_USERAUTH_FAILURE ;
21902193 }
@@ -2194,6 +2197,7 @@ static int wsUserAuth(byte authType,
21942197 authData -> sf .password .passwordSz ,
21952198 authHash );
21962199 }
2200+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
21972201 else if (authType == WOLFSSH_USERAUTH_KEYBOARD ) {
21982202 if (authData -> sf .keyboard .responseCount != 1 ) {
21992203 return WOLFSSH_USERAUTH_FAILURE ;
@@ -2202,6 +2206,7 @@ static int wsUserAuth(byte authType,
22022206 authData -> sf .keyboard .responseLengths [0 ],
22032207 authHash );
22042208 }
2209+ #endif
22052210 else if (authType == WOLFSSH_USERAUTH_PUBLICKEY ) {
22062211 wc_Sha256Hash (authData -> sf .publicKey .publicKey ,
22072212 authData -> sf .publicKey .publicKeySz ,
@@ -2302,6 +2307,7 @@ static int wsUserAuth(byte authType,
23022307 WOLFSSH_USERAUTH_REJECTED ;
23032308 }
23042309 }
2310+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
23052311 else if (authData -> type == WOLFSSH_USERAUTH_KEYBOARD ) {
23062312 if (WMEMCMP (map -> p , authHash , WC_SHA256_DIGEST_SIZE ) == 0 ) {
23072313 return WOLFSSH_USERAUTH_SUCCESS ;
@@ -2310,6 +2316,7 @@ static int wsUserAuth(byte authType,
23102316 return WOLFSSH_USERAUTH_INVALID_PASSWORD ;
23112317 }
23122318 }
2319+ #endif
23132320 #ifdef WOLFSSH_ALLOW_USERAUTH_NONE
23142321 else if (authData -> type == WOLFSSH_USERAUTH_NONE ) {
23152322 return WOLFSSH_USERAUTH_SUCCESS ;
@@ -2325,13 +2332,15 @@ static int wsUserAuth(byte authType,
23252332 return WOLFSSH_USERAUTH_INVALID_USER ;
23262333}
23272334
2335+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
23282336static int keyboardCallback (WS_UserAuthData_Keyboard * kbAuth , void * ctx )
23292337{
23302338 WS_UserAuthData_Keyboard * kbAuthData = (WS_UserAuthData_Keyboard * ) ctx ;
23312339 WMEMCPY (kbAuth , kbAuthData , sizeof (WS_UserAuthData_Keyboard ));
23322340
23332341 return WS_SUCCESS ;
23342342}
2343+ #endif
23352344
23362345#ifdef WOLFSSH_SFTP
23372346/*
@@ -2417,9 +2426,11 @@ static void ShowUsage(void)
24172426 " load in an X.509 DER cert to accept from peer\n" );
24182427 printf (" -P <name>:<password>\n"
24192428 " add password to accept from peer\n" );
2429+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
24202430 printf (" -i <name>:<password>\n"
24212431 " add passowrd to accept via keyboard-interactive "
24222432 "from peer\n" );
2433+ #endif
24232434#ifdef WOLFSSH_CERTS
24242435 printf (" -a <file> load in a root CA certificate file\n" );
24252436#endif
@@ -2463,8 +2474,10 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
24632474 StrList * derPubKeyList = NULL ;
24642475 #endif
24652476 StrList * passwdList = NULL ;
2477+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
24662478 StrList * keyboardList = NULL ;
24672479 WS_UserAuthData_Keyboard kbAuthData ;
2480+ #endif
24682481 WS_SOCKET_T listenFd = WOLFSSH_SOCKET_INVALID ;
24692482 word32 defaultHighwater = EXAMPLE_HIGHWATER_MARK ;
24702483 word32 threadCount = 0 ;
@@ -2495,7 +2508,9 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
24952508 int argc = serverArgs -> argc ;
24962509 char * * argv = serverArgs -> argv ;
24972510 serverArgs -> return_code = EXIT_SUCCESS ;
2511+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
24982512 kbAuthData .promptCount = 0 ;
2513+ #endif
24992514
25002515 if (argc > 0 ) {
25012516 const char * optlist = "?1a:d:efEp:R:Ni:j:i:I:J:K:P:k:b:x:m:c:s:" ;
@@ -2582,9 +2597,11 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
25822597 passwdList = StrListAdd (passwdList , myoptarg );
25832598 break ;
25842599
2600+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
25852601 case 'i' :
25862602 keyboardList = StrListAdd (keyboardList , myoptarg );
25872603 break ;
2604+ #endif
25882605
25892606 case 'b' :
25902607 userAuthWouldBlock = atoi (myoptarg );
@@ -2739,6 +2756,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
27392756 passwdList = NULL ;
27402757 }
27412758
2759+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
27422760 if (keyboardList ) {
27432761 LoadKeyboardList (keyboardList , & pwMapList );
27442762 StrListFree (keyboardList );
@@ -2767,6 +2785,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
27672785 kbAuthData .promptEcho [0 ] = 0 ;
27682786 wolfSSH_SetKeyboardAuthPrompts (ctx , keyboardCallback );
27692787 }
2788+ #endif
27702789
27712790 {
27722791 const char * bufName = NULL ;
@@ -2973,7 +2992,9 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
29732992 #endif
29742993 wolfSSH_SetUserAuthCtx (ssh , & pwMapList );
29752994 wolfSSH_SetKeyingCompletionCbCtx (ssh , (void * )ssh );
2995+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
29762996 wolfSSH_SetKeyboardAuthCtx (ssh , & kbAuthData );
2997+ #endif
29772998 /* Use the session object for its own highwater callback ctx */
29782999 if (defaultHighwater > 0 ) {
29793000 wolfSSH_SetHighwaterCtx (ssh , (void * )ssh );
@@ -3046,11 +3067,13 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
30463067 if (listenFd != WOLFSSH_SOCKET_INVALID ) {
30473068 WCLOSESOCKET (listenFd );
30483069 }
3070+ #ifdef WOLFSSH_KEYBOARD_INTERACTIVE
30493071 if (kbAuthData .promptCount > 0 ) {
30503072 WFREE (kbAuthData .promptLengths , NULL , 0 );
30513073 WFREE (kbAuthData .prompts , NULL , 0 );
30523074 WFREE (kbAuthData .promptEcho , NULL , 0 );
30533075 }
3076+ #endif
30543077 wc_FreeMutex (& doneLock );
30553078 PwMapListDelete (& pwMapList );
30563079 wolfSSH_CTX_free (ctx );
0 commit comments