@@ -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 ] ;
@@ -788,17 +825,60 @@ mod test {
788
825
789
826
#[ test]
790
827
fn test_public_key_to_pem_pkcs1 ( ) {
791
- let keypair = super :: Rsa :: generate ( 512 ) . unwrap ( ) ;
828
+ let keypair = super :: Rsa :: private_key_from_der ( include_bytes ! ( "../test/rsa.der" ) ) . unwrap ( ) ;
792
829
let pubkey_pem = keypair. public_key_to_pem_pkcs1 ( ) . unwrap ( ) ;
793
- super :: Rsa :: public_key_from_pem_pkcs1 ( & pubkey_pem) . unwrap ( ) ;
830
+ assert_eq ! (
831
+ from_utf8( & pubkey_pem) . unwrap( ) ,
832
+ include_str!( "../test/rsa.pub.pkcs1.pem" ) . replace( "\r \n " , "\n " )
833
+ ) ;
834
+ }
835
+
836
+ #[ test]
837
+ fn test_public_key_to_pem ( ) {
838
+ let keypair = super :: Rsa :: private_key_from_der ( include_bytes ! ( "../test/rsa.der" ) ) . unwrap ( ) ;
839
+ let pubkey_pem = keypair. public_key_to_pem ( ) . unwrap ( ) ;
840
+ assert_eq ! (
841
+ from_utf8( & pubkey_pem) . unwrap( ) ,
842
+ include_str!( "../test/rsa.pub.pem" ) . replace( "\r \n " , "\n " )
843
+ ) ;
844
+ }
845
+
846
+ #[ test]
847
+ fn test_public_key_to_der ( ) {
848
+ let keypair = super :: Rsa :: private_key_from_pem ( include_bytes ! ( "../test/rsa.pem" ) ) . unwrap ( ) ;
849
+ let pubkey_der = keypair. public_key_to_der ( ) . unwrap ( ) ;
850
+ assert_eq ! ( pubkey_der, include_bytes!( "../test/rsa.pub.der" ) ) ;
851
+ }
852
+
853
+ #[ test]
854
+ fn test_public_key_to_der_pkcs1 ( ) {
855
+ let keypair = super :: Rsa :: private_key_from_pem ( include_bytes ! ( "../test/rsa.pem" ) ) . unwrap ( ) ;
856
+ let pubkey_der = keypair. public_key_to_der_pkcs1 ( ) . unwrap ( ) ;
857
+ assert_eq ! ( pubkey_der, include_bytes!( "../test/rsa.pub.pkcs1.der" ) ) ;
858
+ }
859
+
860
+ #[ test]
861
+ #[ should_panic]
862
+ fn test_public_key_from_pem_generate_panic ( ) {
863
+ Rsa :: public_key_from_pem ( include_bytes ! ( "../test/rsa.pub.pkcs1.pem" ) ) . unwrap ( ) ;
794
864
}
795
865
796
866
#[ test]
797
867
#[ should_panic]
798
868
fn test_public_key_from_pem_pkcs1_generate_panic ( ) {
799
- let keypair = super :: Rsa :: generate ( 512 ) . unwrap ( ) ;
800
- let pubkey_pem = keypair. public_key_to_pem ( ) . unwrap ( ) ;
801
- super :: Rsa :: public_key_from_pem_pkcs1 ( & pubkey_pem) . unwrap ( ) ;
869
+ Rsa :: public_key_from_pem_pkcs1 ( include_bytes ! ( "../test/rsa.pub.pem" ) ) . unwrap ( ) ;
870
+ }
871
+
872
+ #[ test]
873
+ #[ should_panic]
874
+ fn test_public_key_from_der_generate_panic ( ) {
875
+ Rsa :: public_key_from_der ( include_bytes ! ( "../test/rsa.pub.pkcs1.der" ) ) . unwrap ( ) ;
876
+ }
877
+
878
+ #[ test]
879
+ #[ should_panic]
880
+ fn test_public_key_from_der_pkcs1_generate_panic ( ) {
881
+ Rsa :: public_key_from_der_pkcs1 ( include_bytes ! ( "../test/rsa.pub.der" ) ) . unwrap ( ) ;
802
882
}
803
883
804
884
#[ test]
0 commit comments