Re: ASN.1 types for Distinguished names (was: Re: Distinguished names and

Julian Onions <j.onions@nexor.co.uk> Thu, 03 April 1997 07:07 UTC

Received: by suntan.tandem.com (8.6.12/suntan5.970212) for ietf-pkix-relay id XAA27681; Wed, 2 Apr 1997 23:07:14 -0800
Received: from victor.nexor.co.uk by suntan.tandem.com (8.6.12/suntan5.970212) for <ietf-pkix@tandem.com> id XAA27678; Wed, 2 Apr 1997 23:07:12 -0800
Received: from nexor.co.uk (actually host tornado) by victor with SMTP (MMTA 2.0); Thu, 3 Apr 1997 08:03:20 +0100
To: Brian Korver <briank@terisa.com>
cc: " (Holger Reif)" <Holger.Reif@PrakInf.TU-Ilmenau.d400-gw.de>, ietf-pkix@tandem.com, ssl-users@mincom.oz.au
Subject: Re: ASN.1 types for Distinguished names (was: Re: Distinguished names and
In-reply-to: Your message of Wed, 02 Apr 1997 18:38:42 +0100. <199704021732.JAA10529@dv8.teri>
X-Phone: +44 115 952 0580
Date: Thu, 03 Apr 1997 08:03:14 +0100
Message-ID: <28351.860050994@nexor.co.uk>
From: Julian Onions <j.onions@nexor.co.uk>

When comparing DN's you should actually use the matching rules defined
in X.500 for each RDN component. This tells you whether two components are
equal. So to get it right in all cases is quite laborious.
However, for the majority of cases you can make it simple as there 
in practice only about two matching rules in common usage.

Most components are of syntax DirectoryString and are derived from the
name attribute (http://domen.uninett.no/~hta/ietf/oid/2.5.4.41.html).
These all mostly use caseIgnoreMatch for comparison 
(http://domen.uninett.no/~hta/ietf/oid/2.5.13.2.html) in which 
characters are considered equal if 'corresponding characters' match.
And as X.500 says...

"Where the strings being matched are of different ASN.1 syntax, the
comparison proceeds as normal so long as the corresponding characters
are in both character sets. Otherwise matching fails."

Which implies for implementation, mapping one syntax into another
before comparison.

As to what ASN.1 syntax you choose from the choice - given the above rules
it doesn't much matter providing it is representable. Therefore printable
string is the simplest if you've got the basic latin alphabet. If you need
to represent accents or odd punctuation characters, you need to use
one of the other alternatives, but you could always go for the most complex
encoding if required.

One thing not mentioned in the rules but is a general note, is
that for string syntaxes, space characters are handled specially. That is
- leading and trailing spaces are ignored.
- multiple consecutive spaces are considered to be one space
- a string consisting only of spaces is considered to be equal to a single
  space

Julian.

P.S. As to certificate and CRL extensions - there is a mostly complete
list of the X.500(97) ones at 
http://domen.uninett.no/~hta/ietf/oid/2.5.29.html