@@ -593,6 +593,49 @@ static void test_wolfSSH_CTX_UseCert_buffer(void)
593593}
594594
595595
596+ static void test_wolfSSH_CTX_UsePrivateKey_buffer_pem (void )
597+ {
598+ #if defined(WOLFSSH_CERTS ) && !defined(WOLFSSH_NO_SERVER )
599+ WOLFSSH_CTX * ctx = NULL ;
600+ byte * key = NULL ;
601+ word32 keySz = 0 ;
602+
603+ ctx = wolfSSH_CTX_new (WOLFSSH_ENDPOINT_SERVER , NULL );
604+ AssertNotNull (ctx );
605+
606+ #ifndef WOLFSSH_NO_RSA
607+ AssertIntEQ (0 , load_file ("./keys/server-key-rsa.pem" , & key , & keySz ));
608+ AssertNotNull (key );
609+ AssertIntNE (0 , keySz );
610+
611+ /* PEM private key should load successfully */
612+ AssertIntEQ (WS_SUCCESS ,
613+ wolfSSH_CTX_UsePrivateKey_buffer (ctx , key , keySz ,
614+ WOLFSSH_FORMAT_PEM ));
615+
616+ free (key );
617+ key = NULL ;
618+ #endif /* WOLFSSH_NO_RSA */
619+
620+ #ifndef WOLFSSH_NO_ECDSA
621+ AssertIntEQ (0 , load_file ("./keys/server-key-ecc.pem" , & key , & keySz ));
622+ AssertNotNull (key );
623+ AssertIntNE (0 , keySz );
624+
625+ /* PEM ECC private key should load successfully */
626+ AssertIntEQ (WS_SUCCESS ,
627+ wolfSSH_CTX_UsePrivateKey_buffer (ctx , key , keySz ,
628+ WOLFSSH_FORMAT_PEM ));
629+
630+ free (key );
631+ key = NULL ;
632+ #endif /* WOLFSSH_NO_ECDSA */
633+
634+ wolfSSH_CTX_free (ctx );
635+ #endif /* WOLFSSH_CERTS && !WOLFSSH_NO_SERVER */
636+ }
637+
638+
596639static void test_wolfSSH_CertMan (void )
597640{
598641#ifdef WOLFSSH_CERTMAN
@@ -1990,6 +2033,7 @@ int wolfSSH_ApiTest(int argc, char** argv)
19902033 test_wolfSSH_ConvertConsole ();
19912034 test_wolfSSH_CTX_UsePrivateKey_buffer ();
19922035 test_wolfSSH_CTX_UseCert_buffer ();
2036+ test_wolfSSH_CTX_UsePrivateKey_buffer_pem ();
19932037 test_wolfSSH_CertMan ();
19942038 test_wolfSSH_ReadKey ();
19952039 test_wolfSSH_QueryAlgoList ();
0 commit comments