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 )