package Crypt::Perl::X509::InfoAccessBase; use strict; use warnings; use parent qw( Crypt::Perl::X509::Extension ); use Crypt::Perl::X509::GeneralName (); use Crypt::Perl::X (); use constant ASN1 => Crypt::Perl::X509::GeneralName::ASN1() . < 'InfoAccess', CRITICAL => 0, }; sub new { my ($class, @accessDescrs) = @_; if (!@accessDescrs) { die Crypt::Perl::X::create('Generic', 'Need access descriptions!'); } return bless \@accessDescrs, $class; } sub _encode_params { my ($self) = @_; my $data = [ map { $self->can("OID_$_->[0]") or die( Crypt::Perl::X::create('Generic', "Unknown method: “$_->[0]”") ); { accessMethod => $self->can("OID_$_->[0]")->(), accessLocation => Crypt::Perl::X509::GeneralName->new( @{$_}[1,2] )->encode(), } } @$self, ]; return $data; } 1;