@@ -755,40 +755,31 @@ int test_wolfSSL_PEM_PrivateKey(void)
755755 return EXPECT_RESULT ();
756756}
757757
758- int test_wolfSSL_PEM_write_PrivateKey_PUBKEY (void )
758+ int test_wolfSSL_PEM_write_PrivateKey (void )
759759{
760760 EXPECT_DECLS ;
761761#if defined(OPENSSL_EXTRA ) && !defined(NO_CERTS ) && !defined(NO_RSA ) && \
762762 !defined(NO_FILESYSTEM ) && defined(USE_CERT_BUFFERS_2048 ) && \
763763 !defined(NO_ASN ) && !defined(NO_PWDBASED )
764764 const char * privFile = "./test-pem-write-private-key.pem" ;
765- const char * pubFile = "./test-pem-write-pubkey.pem" ;
766765 const unsigned char * serverKey =
767766 (const unsigned char * )server_key_der_2048 ;
768767 EVP_PKEY * pkey = NULL ;
769768 EVP_PKEY * readPriv = NULL ;
770- EVP_PKEY * readPub = NULL ;
771- unsigned char * pubDer = NULL ;
772- unsigned char * readPubDer = NULL ;
773769 XFILE fp = XBADFILE ;
774- long privSz = 0 ;
775- long pubSz = 0 ;
776- int pubDerSz = 0 ;
777- int readPubDerSz = 0 ;
778770
779771 remove (privFile );
780- remove (pubFile );
781772
782773 ExpectNotNull (wolfSSL_d2i_PrivateKey (EVP_PKEY_RSA , & pkey , & serverKey ,
783774 (long )sizeof_server_key_der_2048 ));
784775
776+ /* Bad-argument checks. */
785777 ExpectIntEQ (PEM_write_PrivateKey (XBADFILE , pkey , NULL , NULL , 0 , NULL ,
786778 NULL ), 0 );
787779 ExpectIntEQ (PEM_write_PrivateKey (stderr , NULL , NULL , NULL , 0 , NULL ,
788780 NULL ), 0 );
789- ExpectIntEQ (PEM_write_PUBKEY (XBADFILE , pkey ), 0 );
790- ExpectIntEQ (PEM_write_PUBKEY (stderr , NULL ), 0 );
791781
782+ /* Write private key to file. */
792783 ExpectTrue ((fp = XFOPEN (privFile , "wb" )) != XBADFILE );
793784 if (fp != XBADFILE ) {
794785 ExpectIntEQ (PEM_write_PrivateKey (fp , pkey , NULL , NULL , 0 , NULL , NULL ),
@@ -797,11 +788,9 @@ int test_wolfSSL_PEM_write_PrivateKey_PUBKEY(void)
797788 fp = XBADFILE ;
798789 }
799790
791+ /* Read it back and verify the DER content matches. */
800792 ExpectTrue ((fp = XFOPEN (privFile , "rb" )) != XBADFILE );
801793 if (fp != XBADFILE ) {
802- ExpectTrue (XFSEEK (fp , 0 , XSEEK_END ) == 0 );
803- ExpectIntGT (privSz = XFTELL (fp ), 0 );
804- ExpectTrue (XFSEEK (fp , 0 , XSEEK_SET ) == 0 );
805794 ExpectNotNull (readPriv = PEM_read_PrivateKey (fp , NULL , NULL , NULL ));
806795 XFCLOSE (fp );
807796 fp = XBADFILE ;
@@ -813,19 +802,56 @@ int test_wolfSSL_PEM_write_PrivateKey_PUBKEY(void)
813802 pkey -> pkey_sz ), 0 );
814803 }
815804
805+ EVP_PKEY_free (readPriv );
806+ EVP_PKEY_free (pkey );
807+ if (fp != XBADFILE ) {
808+ XFCLOSE (fp );
809+ }
810+ remove (privFile );
811+ #endif
812+ return EXPECT_RESULT ();
813+ }
814+
815+ int test_wolfSSL_PEM_write_PUBKEY (void )
816+ {
817+ EXPECT_DECLS ;
818+ #if defined(OPENSSL_EXTRA ) && !defined(NO_CERTS ) && !defined(NO_RSA ) && \
819+ !defined(NO_FILESYSTEM ) && defined(USE_CERT_BUFFERS_2048 ) && \
820+ !defined(NO_ASN ) && !defined(NO_PWDBASED )
821+ const char * pubFile = "./test-pem-write-pubkey.pem" ;
822+ const unsigned char * serverKey =
823+ (const unsigned char * )server_key_der_2048 ;
824+ EVP_PKEY * pkey = NULL ;
825+ EVP_PKEY * readPub = NULL ;
826+ unsigned char * pubDer = NULL ;
827+ unsigned char * readPubDer = NULL ;
828+ XFILE fp = XBADFILE ;
829+ int pubDerSz = 0 ;
830+ int readPubDerSz = 0 ;
831+
832+ remove (pubFile );
833+
834+ ExpectNotNull (wolfSSL_d2i_PrivateKey (EVP_PKEY_RSA , & pkey , & serverKey ,
835+ (long )sizeof_server_key_der_2048 ));
836+
837+ /* Bad-argument checks. */
838+ ExpectIntEQ (PEM_write_PUBKEY (XBADFILE , pkey ), 0 );
839+ ExpectIntEQ (PEM_write_PUBKEY (stderr , NULL ), 0 );
840+
841+ /* Capture the expected public-key DER for later comparison. */
816842 ExpectIntGT (pubDerSz = wolfSSL_i2d_PUBKEY (pkey , & pubDer ), 0 );
843+
844+ /* Write public key to file. */
817845 ExpectTrue ((fp = XFOPEN (pubFile , "wb" )) != XBADFILE );
818846 if (fp != XBADFILE ) {
819847 ExpectIntEQ (PEM_write_PUBKEY (fp , pkey ), 1 );
820848 XFCLOSE (fp );
821849 fp = XBADFILE ;
822850 }
823851
852+ /* Read it back and verify the DER content matches. */
824853 ExpectTrue ((fp = XFOPEN (pubFile , "rb" )) != XBADFILE );
825854 if (fp != XBADFILE ) {
826- ExpectTrue (XFSEEK (fp , 0 , XSEEK_END ) == 0 );
827- ExpectIntGT (pubSz = XFTELL (fp ), 0 );
828- ExpectTrue (XFSEEK (fp , 0 , XSEEK_SET ) == 0 );
829855 ExpectNotNull (readPub = PEM_read_PUBKEY (fp , NULL , NULL , NULL ));
830856 XFCLOSE (fp );
831857 fp = XBADFILE ;
@@ -837,17 +863,13 @@ int test_wolfSSL_PEM_write_PrivateKey_PUBKEY(void)
837863 ExpectIntEQ (XMEMCMP (pubDer , readPubDer , pubDerSz ), 0 );
838864 }
839865
840- ExpectIntGT (privSz , pubSz );
841-
842866 XFREE (readPubDer , NULL , DYNAMIC_TYPE_PUBLIC_KEY );
843867 XFREE (pubDer , NULL , DYNAMIC_TYPE_PUBLIC_KEY );
844868 EVP_PKEY_free (readPub );
845- EVP_PKEY_free (readPriv );
846869 EVP_PKEY_free (pkey );
847870 if (fp != XBADFILE ) {
848871 XFCLOSE (fp );
849872 }
850- remove (privFile );
851873 remove (pubFile );
852874#endif
853875 return EXPECT_RESULT ();
0 commit comments