logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

X500::DN - handle X.500 DNs (Distinguished Names), parse and format them

Author

       Robert Joop <yaph-070708@timesink.de>

Bugs

       •   Due to Parse::RecDescent's greedyness, white space after attribute values gets into the parsed value.
           It might be possible to work around this.

Description

       This module handles X.500 DNs (Distinguished Names).  Currently, it parses DN strings formatted according
       to RFC 2253 syntax into an internal format and produces RFC 2253 formatted string from it.

   Methods
       •   $object = new X500::DN (rdn, rdn, ...);

           Creates a DN object from zero or more arguments of type X500::RDN.

       •   $object = X500::DN->ParseRFC2253 ('cn=John Doe, o=Acme\\, Inc., c=US');

           Creates a DN object from an RFC 2253 formatted DN string notation.

       •   $object->getRFC2253String();

           Returns the DN as a string formatted according to RFC 2253 syntax.

       •   $object->getOpenSSLString();

           Returns the DN as a string formatted suitable for "openssl req -subj" and "openssl ca -subj".

       •   $object->getX500String();

           Returns  the  DN  as a string formatted according to X.500 syntax.  NOTE: This is a hack, there is no
           definition for a X.500 string syntax!

       •   $object->hasMultivaluedRDNs();

           Returns whether the DN contains multi-valued RDNs.

       •   $object->getRDN (num);

           Returns the DN's RDN at position num as an X500::RDN object.  num starts with 0,  which  will  return
           the first RDN in ASN.1 SEQUENCE order.

       •   $object->getRDNs();

           Returns the DN's RDNs, a list of objects of type X500::RDN, in ASN.1 SEQUENCE order.

   EXPORT
       None.

History

       Early 2002: First idea, discussed on comp.lang.perl.moderated
       April 2002: First public release, 0.15

perl v5.36.0                                       2022-12-12                                            DN(3pm)

Name

       X500::DN - handle X.500 DNs (Distinguished Names), parse and format them

Note

       The RFC 2253 syntax is explicitelybackwards in relation to the ASN.1 SEQUENCE.

       So the RFC 2253 string "cn=John Doe, c=US" has the same meaning as the X.500 string "c=US, cn=John Doe".
       The X500::DN objects keep the RDNs in X.500 order!

See Also

       X500::RDN, perl.

Synopsis

         use X500::DN;

         my $dn = X500::DN->ParseRFC2253 ('cn=John Doe, o=Acme\\, Inc., c=US') or die;
         print $dn->getRFC2253String(), "\n";

         $dn = new X500::DN (new X500::RDN ('c'=>'US'), new X500::RDN ('cn'=>'John Doe'));
         my $rdn0 = $dn->getRDN (0);
         my $c = $rdn0->getAttributeValue ('c');

See Also