@@ -513,6 +513,16 @@ static int AcceptAnyServerHostKey(const byte* pubKey, word32 pubKeySz,
513513 return 0 ;
514514}
515515
516+ static int RejectAnyServerHostKey (const byte * pubKey , word32 pubKeySz ,
517+ void * ctx )
518+ {
519+ (void )pubKey ;
520+ (void )pubKeySz ;
521+ (void )ctx ;
522+
523+ return 1 ;
524+ }
525+
516526static int QueueAppend (DuplexQueue * queue , const byte * data , word32 dataSz )
517527{
518528 if (queue == NULL || data == NULL ) {
@@ -953,6 +963,34 @@ static void TestKexDhReplyRejectsNoPublicKeyCheck(void)
953963#endif
954964}
955965
966+ static void AssertHandshakeRejectsWhenCallbackRejects (const char * keyAlgo )
967+ {
968+ KexReplyHarness harness ;
969+ KexReplyRunResult result ;
970+
971+ InitKexReplyHarness (& harness , keyAlgo , 0 );
972+ wolfSSH_CTX_SetPublicKeyCheck (harness .clientCtx , RejectAnyServerHostKey );
973+ RunKexReplyHandshake (& harness , & result );
974+
975+ AssertFalse (result .clientSuccess );
976+ AssertTrue (result .clientRet == WS_FATAL_ERROR );
977+ AssertTrue (result .clientErr != WS_WANT_READ && result .clientErr != WS_WANT_WRITE );
978+ AssertIntEQ (result .clientErr , WS_PUBKEY_REJECTED_E );
979+ AssertFalse (harness .client -> connectState >= CONNECT_KEYED );
980+
981+ FreeKexReplyHarness (& harness );
982+ }
983+
984+ static void TestKexDhReplyRejectsWhenCallbackRejects (void )
985+ {
986+ #ifndef WOLFSSH_NO_RSA_SHA2_256
987+ AssertHandshakeRejectsWhenCallbackRejects ("rsa-sha2-256" );
988+ #endif
989+ #ifndef WOLFSSH_NO_RSA_SHA2_512
990+ AssertHandshakeRejectsWhenCallbackRejects ("rsa-sha2-512" );
991+ #endif
992+ }
993+
956994#endif /* KEXDH_REPLY_REGRESS_KEX_ALGO */
957995
958996static void AssertChannelOpenFailResponse (const ChannelOpenHarness * harness ,
@@ -1941,6 +1979,7 @@ int main(int argc, char** argv)
19411979 TestKexDhReplyRejectsRsaSha2_512SigNameDowngrade ();
19421980 #endif
19431981 TestKexDhReplyRejectsNoPublicKeyCheck ();
1982+ TestKexDhReplyRejectsWhenCallbackRejects ();
19441983#endif
19451984
19461985#ifdef WOLFSSH_SFTP
0 commit comments