@@ -6923,8 +6923,10 @@ int test_wc_Pkcs8EncryptDecisionCoverage(void)
69236923 WC_RNG rng ;
69246924 byte key [32 ];
69256925 byte out [512 ];
6926+ byte fill [512 ];
69266927 byte salt [8 ];
69276928 word32 outSz ;
6929+ word32 need = 0 ;
69286930
69296931 XMEMSET (key , 3 , sizeof (key ));
69306932 XMEMSET (salt , 4 , sizeof (salt ));
@@ -6949,6 +6951,34 @@ int test_wc_Pkcs8EncryptDecisionCoverage(void)
69496951 "pw" , 2 , PKCS5 , PBES2 , AES128CBCb , salt , sizeof (salt ), 1000 ,
69506952 0x7FFFFFFF , & rng , HEAP_HINT ), WC_NO_ERR_TRACE (ALGO_ID_E ));
69516953
6954+ /* Zero and one byte short return BUFFER_E and leave the buffer
6955+ * untouched; the queried size succeeds. */
6956+ outSz = 0 ;
6957+ ExpectIntEQ (wc_EncryptPKCS8Key_ex (key , sizeof (key ), NULL , & outSz ,
6958+ "pw" , 2 , PKCS5 , PBES2 , AES128CBCb , NULL , 0 , 1000 , 0 , & rng ,
6959+ HEAP_HINT ), WC_NO_ERR_TRACE (LENGTH_ONLY_E ));
6960+ need = outSz ;
6961+ ExpectIntGT (need , 1 );
6962+ ExpectIntLE (need , sizeof (out ));
6963+ XMEMSET (out , 0xA5 , sizeof (out ));
6964+ XMEMSET (fill , 0xA5 , sizeof (fill ));
6965+ outSz = 0 ;
6966+ ExpectIntEQ (wc_EncryptPKCS8Key_ex (key , sizeof (key ), out , & outSz ,
6967+ "pw" , 2 , PKCS5 , PBES2 , AES128CBCb , NULL , 0 , 1000 , 0 , & rng ,
6968+ HEAP_HINT ), WC_NO_ERR_TRACE (BUFFER_E ));
6969+ outSz = need - 1 ;
6970+ ExpectIntEQ (wc_EncryptPKCS8Key_ex (key , sizeof (key ), out , & outSz ,
6971+ "pw" , 2 , PKCS5 , PBES2 , AES128CBCb , NULL , 0 , 1000 , 0 , & rng ,
6972+ HEAP_HINT ), WC_NO_ERR_TRACE (BUFFER_E ));
6973+ ExpectBufEQ (out , fill , sizeof (out ));
6974+ #if defined(HAVE_PBKDF2 ) && !defined(NO_HMAC ) && !defined(NO_SHA )
6975+ outSz = need ;
6976+ ExpectIntEQ (wc_EncryptPKCS8Key_ex (key , sizeof (key ), out , & outSz ,
6977+ "pw" , 2 , PKCS5 , PBES2 , AES128CBCb , NULL , 0 , 1000 , 0 , & rng ,
6978+ HEAP_HINT ), (int )need );
6979+ ExpectBufEQ (out + need , fill + need , sizeof (out ) - need );
6980+ #endif
6981+
69526982 ExpectIntEQ (wc_FreeRng (& rng ), 0 );
69536983#endif /* HAVE_AES_CBC && !NO_AES && WOLFSSL_AES_128 && !FIPS */
69546984 return EXPECT_RESULT ();
0 commit comments