Skip to content

Commit a608f19

Browse files
authored
Merge pull request #923 from yosuke-wolfssl/f_2484
Add additional regress test for DoKexDhReply
2 parents 8552be0 + 7beec43 commit a608f19

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
@@ -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+
516526
static 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

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

Comments
 (0)