@@ -683,17 +683,37 @@ cfg_if! {
683
683
#[ cfg( test) ]
684
684
mod test {
685
685
use crate :: symm:: Cipher ;
686
+ use std:: str:: from_utf8;
686
687
687
688
use super :: * ;
688
689
689
690
#[ test]
690
- fn test_from_password ( ) {
691
+ fn test_private_key_from_pem ( ) {
692
+ Rsa :: private_key_from_pem ( include_bytes ! ( "../test/rsa.pem" ) ) . unwrap ( ) ;
693
+ }
694
+
695
+ #[ test]
696
+ fn test_private_key_from_pem_pkcs1 ( ) {
697
+ Rsa :: private_key_from_pem ( include_bytes ! ( "../test/rsa.pkcs1.pem" ) ) . unwrap ( ) ;
698
+ }
699
+ #[ test]
700
+ fn test_private_key_from_der ( ) {
701
+ Rsa :: private_key_from_der ( include_bytes ! ( "../test/rsa.der" ) ) . unwrap ( ) ;
702
+ }
703
+
704
+ #[ test]
705
+ fn test_private_key_from_der_pkcs1 ( ) {
706
+ Rsa :: private_key_from_der ( include_bytes ! ( "../test/rsa.pkcs1.der" ) ) . unwrap ( ) ;
707
+ }
708
+
709
+ #[ test]
710
+ fn test_private_key_from_pem_password ( ) {
691
711
let key = include_bytes ! ( "../test/rsa-encrypted.pem" ) ;
692
712
Rsa :: private_key_from_pem_passphrase ( key, b"mypass" ) . unwrap ( ) ;
693
713
}
694
714
695
715
#[ test]
696
- fn test_from_password_callback ( ) {
716
+ fn test_private_key_from_pem_callback ( ) {
697
717
let mut password_queried = false ;
698
718
let key = include_bytes ! ( "../test/rsa-encrypted.pem" ) ;
699
719
Rsa :: private_key_from_pem_callback ( key, |password| {
@@ -707,18 +727,35 @@ mod test {
707
727
}
708
728
709
729
#[ test]
710
- fn test_to_password ( ) {
711
- let key = Rsa :: generate ( 2048 ) . unwrap ( ) ;
730
+ fn test_private_key_to_pem ( ) {
731
+ let key = Rsa :: private_key_from_der ( include_bytes ! ( "../test/rsa.der" ) ) . unwrap ( ) ;
732
+ let pem = key. private_key_to_pem ( ) . unwrap ( ) ;
733
+ assert_eq ! (
734
+ from_utf8( & pem) . unwrap( ) ,
735
+ include_str!( "../test/rsa.pkcs1.pem" ) . replace( "\r \n " , "\n " )
736
+ ) ;
737
+ }
738
+
739
+ #[ test]
740
+ fn test_private_key_to_pem_password ( ) {
741
+ let key = Rsa :: private_key_from_der ( include_bytes ! ( "../test/rsa.der" ) ) . unwrap ( ) ;
712
742
let pem = key
713
743
. private_key_to_pem_passphrase ( Cipher :: aes_128_cbc ( ) , b"foobar" )
714
744
. unwrap ( ) ;
715
745
Rsa :: private_key_from_pem_passphrase ( & pem, b"foobar" ) . unwrap ( ) ;
716
746
assert ! ( Rsa :: private_key_from_pem_passphrase( & pem, b"fizzbuzz" ) . is_err( ) ) ;
717
747
}
718
748
749
+ #[ test]
750
+ fn test_private_key_to_der_pkcs1 ( ) {
751
+ let key = super :: Rsa :: private_key_from_pem ( include_bytes ! ( "../test/rsa.pem" ) ) . unwrap ( ) ;
752
+ let der = key. private_key_to_der ( ) . unwrap ( ) ;
753
+ assert_eq ! ( der, include_bytes!( "../test/rsa.pkcs1.der" ) ) ;
754
+ }
755
+
719
756
#[ test]
720
757
fn test_public_encrypt_private_decrypt_with_padding ( ) {
721
- let key = include_bytes ! ( "../test/rsa.pem. pub" ) ;
758
+ let key = include_bytes ! ( "../test/rsa.pub.pem " ) ;
722
759
let public_key = Rsa :: public_key_from_pem ( key) . unwrap ( ) ;
723
760
724
761
let mut result = vec ! [ 0 ; public_key. size( ) as usize ] ;
@@ -780,25 +817,48 @@ mod test {
780
817
}
781
818
782
819
#[ test]
783
- #[ should_panic]
784
820
fn test_public_key_from_pem_pkcs1_file_panic ( ) {
785
821
let key = include_bytes ! ( "../test/key.pem.pub" ) ;
786
- Rsa :: public_key_from_pem_pkcs1 ( key) . unwrap ( ) ;
822
+ assert ! ( Rsa :: public_key_from_pem_pkcs1( key) . is_err ( ) ) ;
787
823
}
788
824
789
825
#[ test]
790
826
fn test_public_key_to_pem_pkcs1 ( ) {
791
- let keypair = super :: Rsa :: generate ( 512 ) . unwrap ( ) ;
827
+ let keypair = super :: Rsa :: private_key_from_der ( include_bytes ! ( "../test/rsa.der" ) ) . unwrap ( ) ;
792
828
let pubkey_pem = keypair. public_key_to_pem_pkcs1 ( ) . unwrap ( ) ;
793
- super :: Rsa :: public_key_from_pem_pkcs1 ( & pubkey_pem) . unwrap ( ) ;
829
+ assert_eq ! (
830
+ from_utf8( & pubkey_pem) . unwrap( ) ,
831
+ include_str!( "../test/rsa.pub.pkcs1.pem" ) . replace( "\r \n " , "\n " )
832
+ ) ;
794
833
}
795
834
796
835
#[ test]
797
- #[ should_panic]
798
- fn test_public_key_from_pem_pkcs1_generate_panic ( ) {
799
- let keypair = super :: Rsa :: generate ( 512 ) . unwrap ( ) ;
836
+ fn test_public_key_to_pem ( ) {
837
+ let keypair = super :: Rsa :: private_key_from_der ( include_bytes ! ( "../test/rsa.der" ) ) . unwrap ( ) ;
800
838
let pubkey_pem = keypair. public_key_to_pem ( ) . unwrap ( ) ;
801
- super :: Rsa :: public_key_from_pem_pkcs1 ( & pubkey_pem) . unwrap ( ) ;
839
+ assert_eq ! (
840
+ from_utf8( & pubkey_pem) . unwrap( ) ,
841
+ include_str!( "../test/rsa.pub.pem" ) . replace( "\r \n " , "\n " )
842
+ ) ;
843
+ }
844
+
845
+ #[ test]
846
+ fn test_public_key_to_der ( ) {
847
+ let keypair = super :: Rsa :: private_key_from_pem ( include_bytes ! ( "../test/rsa.pem" ) ) . unwrap ( ) ;
848
+ let pubkey_der = keypair. public_key_to_der ( ) . unwrap ( ) ;
849
+ assert_eq ! ( pubkey_der, include_bytes!( "../test/rsa.pub.der" ) ) ;
850
+ }
851
+
852
+ #[ test]
853
+ fn test_public_key_to_der_pkcs1 ( ) {
854
+ let keypair = super :: Rsa :: private_key_from_pem ( include_bytes ! ( "../test/rsa.pem" ) ) . unwrap ( ) ;
855
+ let pubkey_der = keypair. public_key_to_der_pkcs1 ( ) . unwrap ( ) ;
856
+ assert_eq ! ( pubkey_der, include_bytes!( "../test/rsa.pub.pkcs1.der" ) ) ;
857
+ }
858
+
859
+ #[ test]
860
+ fn test_public_key_from_pem_pkcs1_generate_panic ( ) {
861
+ assert ! ( Rsa :: public_key_from_der_pkcs1( include_bytes!( "../test/rsa.pub.der" ) ) . is_err( ) ) ;
802
862
}
803
863
804
864
#[ test]
0 commit comments