@@ -498,6 +498,16 @@ static int AcceptAnyServerHostKey(const byte* pubKey, word32 pubKeySz,
498498 return 0 ;
499499}
500500
501+ static int RejectAnyServerHostKey (const byte * pubKey , word32 pubKeySz ,
502+ void * ctx )
503+ {
504+ (void )pubKey ;
505+ (void )pubKeySz ;
506+ (void )ctx ;
507+
508+ return 1 ;
509+ }
510+
501511static int QueueAppend (DuplexQueue * queue , const byte * data , word32 dataSz )
502512{
503513 if (queue == NULL || data == NULL ) {
@@ -938,6 +948,34 @@ static void TestKexDhReplyRejectsNoPublicKeyCheck(void)
938948#endif
939949}
940950
951+ static void AssertHandshakeRejectsWhenCallbackRejects (const char * keyAlgo )
952+ {
953+ KexReplyHarness harness ;
954+ KexReplyRunResult result ;
955+
956+ InitKexReplyHarness (& harness , keyAlgo , 0 );
957+ wolfSSH_CTX_SetPublicKeyCheck (harness .clientCtx , RejectAnyServerHostKey );
958+ RunKexReplyHandshake (& harness , & result );
959+
960+ AssertFalse (result .clientSuccess );
961+ AssertTrue (result .clientRet == WS_FATAL_ERROR );
962+ AssertTrue (result .clientErr != WS_WANT_READ && result .clientErr != WS_WANT_WRITE );
963+ AssertIntEQ (result .clientErr , WS_PUBKEY_REJECTED_E );
964+ AssertFalse (harness .client -> connectState >= CONNECT_KEYED );
965+
966+ FreeKexReplyHarness (& harness );
967+ }
968+
969+ static void TestKexDhReplyRejectsWhenCallbackRejects (void )
970+ {
971+ #ifndef WOLFSSH_NO_RSA_SHA2_256
972+ AssertHandshakeRejectsWhenCallbackRejects ("rsa-sha2-256" );
973+ #endif
974+ #ifndef WOLFSSH_NO_RSA_SHA2_512
975+ AssertHandshakeRejectsWhenCallbackRejects ("rsa-sha2-512" );
976+ #endif
977+ }
978+
941979#endif /* KEXDH_REPLY_REGRESS_KEX_ALGO */
942980
943981static void AssertChannelOpenFailResponse (const ChannelOpenHarness * harness ,
@@ -1727,6 +1765,7 @@ int main(int argc, char** argv)
17271765 TestKexDhReplyRejectsRsaSha2_512SigNameDowngrade ();
17281766 #endif
17291767 TestKexDhReplyRejectsNoPublicKeyCheck ();
1768+ TestKexDhReplyRejectsWhenCallbackRejects ();
17301769#endif
17311770
17321771#ifdef WOLFSSH_SFTP
0 commit comments