@@ -539,6 +539,8 @@ mod test {
539
539
use crate :: pkey:: PKey ;
540
540
#[ cfg( not( any( boringssl, awslc_fips) ) ) ]
541
541
use crate :: sign:: { Signer , Verifier } ;
542
+ use crate :: symm:: Cipher ;
543
+ use std:: str:: from_utf8;
542
544
543
545
#[ test]
544
546
pub fn test_generate ( ) {
@@ -694,4 +696,63 @@ mod test {
694
696
let s = format ! ( "{:?}" , sig) ;
695
697
assert_eq ! ( s, "DsaSig { r: 774484690634577222213819810519929266740561094381, s: 910998676210681457251421818099943952372231273347 }" ) ;
696
698
}
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
+ }
697
758
}
0 commit comments