package Crypt::Perl::ASN1::Encodee; use strict; use warnings; use Crypt::Perl::ASN1 (); use Crypt::Perl::X (); sub asn1_macro { my ($self_or_class) = @_; my $class = ref($self_or_class) || $self_or_class; $class =~ m<.+::(.+)> or die Crypt::Perl::X::create('Generic', "Invalid class: “$class”"); return $1; } sub encode { my ($self) = @_; my $asn1 = Crypt::Perl::ASN1->new(); $asn1 = $asn1->prepare( $self->ASN1() )->find( $self->asn1_macro() ); return $asn1->encode( $self->_encode_params() ); } 1;