@ -106,11 +106,12 @@ impl Seed {
}
fn from_pem ( pem : pem ::Pem ) -> Result < Self , Error > {
if pem . contents . len ( ) ! = SEED_LENGTH {
Err ( Error ::IncorrectLength ( pem . contents . len ( ) ) )
let contents = pem . contents ( ) ;
if contents . len ( ) ! = SEED_LENGTH {
Err ( Error ::IncorrectLength ( contents . len ( ) ) )
} else {
let mut array = [ 0 ; SEED_LENGTH ] ;
for ( i , b ) in pem. contents. iter ( ) . enumerate ( ) {
for ( i , b ) in contents. iter ( ) . enumerate ( ) {
array [ i ] = * b ;
}
@ -122,10 +123,7 @@ impl Seed {
ensure_directory_exists ( & seed_file ) ? ;
let data = self . bytes ( ) ;
let pem = Pem {
tag : String ::from ( "SEED" ) ,
contents : data . to_vec ( ) ,
} ;
let pem = Pem ::new ( "SEED" , data ) ;
let pem_string = encode ( & pem ) ;
@ -224,19 +222,20 @@ VnZUNFZ4dlY=
}
#[ test ]
#[ should_panic ]
fn seed_from_pem_fails_for_long_seed ( ) {
let long = " - - - - - BEGIN SEED - - - - -
mbKANv2qKGmNVg1qtquj6Hx1pFPelpqOfE2JaJJAMEg1FlFhNRNlFlE=
mbKANv2qKGmNVg1qtquj6Hx1pFPelpqOfE2JaJJAMEg1FlFhNRNlFlE=
MIIBPQIBAAJBAOsfi5AGYhdRs/ x6q5H7kScxA0Kzzqe6WI6gf6 + tc6IvKQJo5rQc
dWWSQ0nRGt2hOPDO+ 35 NKhQEjBQxPh / v7n0CAwEAAQJBAOGaBAyuw0ICyENy5NsO
- - - - - END SEED - - - - -
" ;
let pem = pem ::parse ( long ) . unwrap ( ) ;
assert_eq! ( pem . contents ( ) . len ( ) , 96 ) ;
match Seed ::from_pem ( pem ) {
Ok ( _ ) = > panic! ( "should fail for long payload" ) ,
Err ( e ) = > {
match e {
Error ::IncorrectLength ( _) = > { } // pass
Error ::IncorrectLength ( len) = > assert_eq! ( len , 96 ) , // pass
_ = > panic! ( "should fail with IncorrectLength error" ) ,
}
}