@@ -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