@@ -6,7 +6,7 @@ use Crypt::CBC::PBKDF;
66use bytes;
77use vars qw( $VERSION) ;
88no warnings ' uninitialized' ;
9- $VERSION = ' 3.03 ' ;
9+ $VERSION = ' 3.04 ' ;
1010
1111use constant RANDOM_DEVICE => ' /dev/urandom' ;
1212use constant DEFAULT_PBKDF => ' opensslv1' ;
@@ -97,6 +97,7 @@ sub new {
9797 ' keysize' => $ks ,
9898 ' header_mode' => $header_mode ,
9999 ' literal_key' => $literal_key ,
100+ ' literal_iv' => defined $iv ,
100101 ' chain_mode' => $chain_mode ,
101102 ' make_random_salt' => $random_salt ,
102103 ' make_random_iv' => $random_iv ,
@@ -143,7 +144,7 @@ sub encrypt_hex (\$$) {
143144
144145sub decrypt_hex (\$$ ) {
145146 my ($self ,$data ) = @_ ;
146- return $self -> decrypt(pack ' H*' ,$data );
147+ return $self -> decrypt(pack ' H*' ,$data );
147148}
148149
149150# call to start a series of encryption/decryption operations
@@ -651,7 +652,9 @@ sub _read_key_and_iv {
651652 ($self -> {salt }) = $$input_stream =~ / ^Salted__(.{8})/s ;
652653 croak " Ciphertext does not begin with a valid header for 'salt' header mode" unless defined $self -> {salt };
653654 substr ($$input_stream ,0,16) = ' ' ;
654- ($self -> {key },$self -> {iv }) = $self -> pbkdf_obj-> key_and_iv($self -> {salt },$self -> {passphrase });
655+ my ($k ,$i ) = $self -> pbkdf_obj-> key_and_iv($self -> {salt },$self -> {passphrase });
656+ $self -> {key } = $k unless $self -> {literal_key };
657+ $self -> {iv } = $i unless $self -> {literal_iv };
655658 }
656659
657660 elsif ($header_mode eq ' randomiv' ) {
0 commit comments