App-KamstrupKemSplit
view release on metacpan or search on metacpan
lib/App/KamstrupKemSplit.pm view on Meta::CPAN
=cut
sub decode_kem {
my $input_file = shift();
my $key = shift();
my $kemformat = shift() // 2;
my $kem_xml = XMLin($input_file);
DEBUG "Decoding encrypted section from XML with key '$key'";
my $data = decode_base64( $kem_xml->{CipherData}->{CipherValue} );
my $fullkey = $key . ( "\0" x ( 16 - length($key) ) );
my $cipher = Crypt::Rijndael->new( $fullkey, Crypt::Rijndael::MODE_CBC() );
my $plain_xml = $cipher->decrypt($data);
my $fix_head = $kemformat == 2 ? "<Devices schem" : "<MetersInOrder";
# Fix the XML
substr( $plain_xml, 0, 14 ) = $fix_head;
chomp($plain_xml);
# Remove trailing characters after last closing bracket in the XML
if ( $plain_xml =~ /(<.+>)/ ) {
( run in 1.044 second using v1.01-cache-2.11-cpan-e1769b4cff6 )