use strict; use Test::More tests => 9; use Convert::PEM; use Math::BigInt; my $pem = Convert::PEM->new( Name => 'TEST OBJECT', ASN => qq( TestObject SEQUENCE { int INTEGER } )); isa_ok $pem, 'Convert::PEM'; my($obj, $obj2, $blob); $obj = { TestObject => { int => 4 } }; $blob = $pem->encode( Content => $obj ); ok $blob, 'encode gave us something'; $obj2 = $pem->decode( Content => $blob ); is $obj->{TestObject}{int}, $obj2->{TestObject}{int}, 'input matches output'; $blob = $pem->encode( Content => $obj, Password => 'xx' ); ok $blob, 'encode gave us something'; $obj2 = $pem->decode( Content => $blob ); ok !defined $obj2, 'decode fails on encrypted input'; like $pem->errstr, qr/^Decryption failed/, 'errstr matches decrypt failed'; $obj2 = $pem->decode( Content => $blob, Password => 'xx' ); is $obj->{TestObject}{int}, $obj2->{TestObject}{int}, 'input matches output'; $obj->{TestObject}{int} = Math::BigInt->new("110982309809809850938509"); $blob = $pem->encode( Content => $obj ); ok $blob, 'encode gave us something'; $obj2 = $pem->decode( Content => $blob ); is $obj->{TestObject}{int}, $obj2->{TestObject}{int}, 'input matches output';