package Crypt::Perl::X509::Extension::cRLDistributionPoints; use strict; use warnings; =encoding utf-8 =head1 NAME Crypt::Perl::X509::Extension::cRLDistributionPoints =head1 SEE ALSO L =cut use parent qw( Crypt::Perl::X509::Extension ); use Crypt::Perl::ASN1::BitString (); use Crypt::Perl::X509::GeneralNames (); use Crypt::Perl::X509::RelativeDistinguishedName (); use constant { OID => '2.5.29.31', CRITICAL => 0, }; use constant ASN1 => Crypt::Perl::X509::GeneralNames::ASN1() . <{'fullName'}) { my $gns = Crypt::Perl::X509::GeneralNames->new( @{ $pp{'distributionPoint'}{'fullName'} } ); $pp{'distributionPoint'} = { fullName => $gns->encode(), }; substr( $pp{'distributionPoint'}{'fullName'}, 0, 1, "\xa0" ); } elsif ($dp->{'nameRelativeToCRLIssuer'}) { my $rdn = Crypt::Perl::X509::RelativeDistinguishedName->new( @{ $dp->{'nameRelativeToCRLIssuer'} } ); $pp{'distributionPoint'} = { nameRelativeToCRLIssuer => $rdn->encode(), }; substr( $pp{'distributionPoint'}{'nameRelativeToCRLIssuer'}, 0, 1, "\xa1" ); } else { my @keys = keys %$dp; die Crypt::Perl::X::create('Generic', "Unrecognized “distributionPoint” hash! (@keys)"); } } if ( $pp{'reasons'} ) { $pp{'reasons'} = Crypt::Perl::ASN1::BitString::encode( \@_ReasonFlags, $pp{'reasons'}, ); } if ( $pp{'cRLIssuer'} ) { $pp{'cRLIssuer'} = Crypt::Perl::X509::GeneralNames->new( @{ $pp{'cRLIssuer'} } )->encode(); substr( $pp{'cRLIssuer'}, 0, 1, "\xa2" ); } } return bless \@self, $class; } sub _encode_params { my ($self) = @_; return [ @$self ]; } 1;