@@ -539,6 +539,8 @@ mod test {
539539    use  crate :: pkey:: PKey ; 
540540    #[ cfg( not( any( boringssl,  awslc_fips) ) ) ]  
541541    use  crate :: sign:: { Signer ,  Verifier } ; 
542+     use  crate :: symm:: Cipher ; 
543+     use  std:: str:: from_utf8; 
542544
543545    #[ test]  
544546    pub  fn  test_generate ( )  { 
@@ -694,4 +696,63 @@ mod test {
694696        let  s = format ! ( "{:?}" ,  sig) ; 
695697        assert_eq ! ( s,  "DsaSig { r: 774484690634577222213819810519929266740561094381, s: 910998676210681457251421818099943952372231273347 }" ) ; 
696698    } 
699+ 
700+     #[ test]  
701+     fn  test_private_key_to_pem ( )  { 
702+         let  key = Dsa :: generate ( 512 ) . unwrap ( ) ; 
703+         let  pem = key. private_key_to_pem ( ) . unwrap ( ) ; 
704+         let  pem_str = from_utf8 ( & pem) . unwrap ( ) ; 
705+         assert ! ( 
706+             pem_str. contains( "-----BEGIN DSA PRIVATE KEY-----" ) , 
707+             "{pem_str}" 
708+         ) ; 
709+     } 
710+ 
711+     #[ test]  
712+     fn  test_private_key_to_pem_password ( )  { 
713+         let  key = Dsa :: generate ( 512 ) . unwrap ( ) ; 
714+         let  pem = key
715+             . private_key_to_pem_passphrase ( Cipher :: aes_128_cbc ( ) ,  b"foobar" ) 
716+             . unwrap ( ) ; 
717+         let  pem_str = from_utf8 ( & pem) . unwrap ( ) ; 
718+         assert ! ( 
719+             pem_str. contains( "-----BEGIN DSA PRIVATE KEY-----" ) , 
720+             "{pem_str}" 
721+         ) ; 
722+         assert ! ( pem_str. contains( "ENCRYPTED" ) ,  "{pem_str}" ) ; 
723+         assert ! ( pem_str. contains( "AES-128-CBC" ) ,  "{pem_str}" ) ; 
724+     } 
725+ 
726+     #[ test]  
727+     fn  test_private_key_to_der ( )  { 
728+         let  key = Dsa :: generate ( 512 ) . unwrap ( ) ; 
729+         key. private_key_to_der ( ) . unwrap ( ) ; 
730+     } 
731+ 
732+     #[ test]  
733+     fn  test_public_key_from_pem ( )  { 
734+         Dsa :: public_key_from_pem ( include_bytes ! ( "../test/dsa.pub.pem" ) ) . unwrap ( ) ; 
735+     } 
736+ 
737+     #[ test]  
738+     fn  test_public_key_from_der ( )  { 
739+         Dsa :: public_key_from_der ( include_bytes ! ( "../test/dsa.pub.der" ) ) . unwrap ( ) ; 
740+     } 
741+ 
742+     #[ test]  
743+     fn  test_public_key_to_pem ( )  { 
744+         let  key = Dsa :: public_key_from_der ( include_bytes ! ( "../test/dsa.pub.der" ) ) . unwrap ( ) ; 
745+         let  pem = key. public_key_to_pem ( ) . unwrap ( ) ; 
746+         assert_eq ! ( 
747+             from_utf8( & pem) . unwrap( ) , 
748+             include_str!( "../test/dsa.pub.pem" ) . replace( "\r \n " ,  "\n " ) 
749+         ) ; 
750+     } 
751+ 
752+     #[ test]  
753+     fn  test_public_key_to_der ( )  { 
754+         let  key = Dsa :: public_key_from_pem ( include_bytes ! ( "../test/dsa.pub.pem" ) ) . unwrap ( ) ; 
755+         let  der = key. public_key_to_der ( ) . unwrap ( ) ; 
756+         assert_eq ! ( der,  include_bytes!( "../test/dsa.pub.der" ) ) ; 
757+     } 
697758} 
0 commit comments