@@ -101,10 +101,44 @@ pub fn derive_lafs_mutable(private_key_pem: &str, format: &str) -> String {
101
101
102
102
#[ cfg( test) ]
103
103
mod tests {
104
+ use super :: * ;
105
+ use rsa:: pkcs1:: EncodeRsaPrivateKey ;
106
+ use rsa:: pkcs8:: LineEnding ;
104
107
use serde_yaml;
105
108
109
+ fn generate_rsa_private_key ( ) -> RsaPrivateKey {
110
+ let mut rng = rand:: thread_rng ( ) ;
111
+ RsaPrivateKey :: new ( & mut rng, 2048 ) . expect ( "failed to generate RSA private key" )
112
+ }
113
+
114
+ #[ test]
115
+ fn test_derive_lafs_mutable_from_pkcs1 ( ) {
116
+ let private_key = generate_rsa_private_key ( ) ;
117
+ let pem_pkcs1 = private_key. to_pkcs1_pem ( LineEnding :: LF ) . unwrap ( ) ;
118
+ let result = derive_lafs_mutable ( & pem_pkcs1, "SSK" ) ;
119
+ assert_eq ! ( result. starts_with( "URI:SSK:" ) , true ) ;
120
+ }
121
+
122
+ #[ test]
123
+ fn test_derive_lafs_mutable_from_pkcs8 ( ) {
124
+ let private_key = generate_rsa_private_key ( ) ;
125
+ let pem_pkcs8 = private_key. to_pkcs8_pem ( LineEnding :: LF ) . unwrap ( ) ;
126
+ let result = derive_lafs_mutable ( & pem_pkcs8, "SSK" ) ;
127
+ assert_eq ! ( result. starts_with( "URI:SSK:" ) , true ) ;
128
+ }
129
+
130
+ #[ test]
131
+ fn test_derive_lafs_mutable_pkcs1_eq_pkcs8 ( ) {
132
+ let private_key = generate_rsa_private_key ( ) ;
133
+ let pem_pkcs1 = private_key. to_pkcs1_pem ( LineEnding :: LF ) . unwrap ( ) ;
134
+ let pem_pkcs8 = private_key. to_pkcs8_pem ( LineEnding :: LF ) . unwrap ( ) ;
135
+ let result_pkcs1 = derive_lafs_mutable ( & pem_pkcs1, "SSK" ) ;
136
+ let result_pkcs8 = derive_lafs_mutable ( & pem_pkcs8, "SSK" ) ;
137
+ assert_eq ! ( result_pkcs1, result_pkcs8) ;
138
+ }
139
+
106
140
#[ test]
107
- fn test_derive_lafs_mutable ( ) {
141
+ fn test_derive_lafs_mutable_from_vectors ( ) {
108
142
let contents = std:: fs:: read_to_string ( "tests/vectors/lafs.yaml" ) . unwrap ( ) ;
109
143
let data: serde_yaml:: Value = serde_yaml:: from_str ( & contents) . unwrap ( ) ;
110
144
for vector in data[ "vector" ] . as_sequence ( ) . unwrap ( ) {
@@ -118,7 +152,7 @@ mod tests {
118
152
"mdmf" => "MDMF" ,
119
153
_ => panic ! ( "Unknown format: {:?}" , format) ,
120
154
} ;
121
- let result = super :: derive_lafs_mutable ( key, format) ;
155
+ let result = derive_lafs_mutable ( key, format) ;
122
156
let expected = vector[ "expected" ] . as_str ( ) . unwrap ( ) ;
123
157
assert_eq ! ( result, expected) ;
124
158
}
0 commit comments