Skip to content

Commit 7beec43

Browse files
Add regress test for DoKexDhReply
1 parent 85cf3e7 commit 7beec43

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

tests/regress.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
501511
static 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

943981
static 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

Comments
 (0)