- From: Thomas Roessler <tlr@w3.org>
- Date: Tue, 12 Jun 2007 18:05:28 +0200
- To: public-xmlsec-maintwg@w3.org
I've had another look at 4.4.4, RFC 4514, and some other stuff; I guess some of this overlaps with material that Konrad had sent earlier. Anyway... What does 4.4.4 mean? Basically, the references to RFC 2253 describe how to serialize a DName. A DName is a set of AttributeType/AttributeValue pairs. RFC 2253 (and 4514) describe how to serialize this set (this is beyond just converting some string of characters!). Section 2.4 of each of these RFCs describes how an AttributeValue (and only that!) is encoded. That's the section that is kind of reproduced in dsig-core. Section 3 of both RFCs is titled "Parsing a String Back to a Distinguished Name", and gives a BNF grammar for a string representation of a Distinguished Name. This grammar permits arbitrary '\' hexchar hexchar sequences. RFC 4514 further clarifies: | While other documents may define other algorithms for converting a | DN from its ASN.1 structured representation to a string, all | algorithms MUST produce strings that adhere to the requirements of | Section 3. Together, that suggests to me that there is no way to read a "\20" in a string representation as anything else than an escaped space character, even if all we reference is RFC 2253. Further, the text in dsig-core (which has been there through a number of iterations of dsig-core) says: | * The X509IssuerSerial element, which contains an X.509 issuer | distinguished name/serial number pair that SHOULD be compliant | with RFC2253 [LDAP-DN], | * The X509SubjectName element, which contains an X.509 subject | distinguished name that SHOULD be compliant with RFC2253 | [LDAP-DN], Note that this talks about compliance of an output string -- which makes most sense if you read it as a reference to section 3 of RFC 2253. Yet, the text was probably meant to refer to the grammar and the encoding rules. Looking back at historical records, the additional encoding rules were intended to address an issue raised by Gregor Karlinger [2] during Candidate Rec. [3] has further discussion and explicitly clarifies that the proposed additional encoding rules only apply to "strings in DNames", *NOT* to entire DNames. [4] includes Gregor's test cases, and clarifies that the intent of the additional encoding rules was to *add* to the RFC 2253 rules, not supersede them; note in particular the handling of leading whitespace in the test case. Therefore, I propose we do the following: - Change the normative references to be explicitly to RFC 2253 section 3, i.e., the grammar, and clarify that the RFC 2253 reference in the X509IssuerSerial element refers to the DName only. - Change the additional encoding rules text as follows: >>>>> To encode a distinguished name, the rules in section 2 of RFC 2253 [REF] should be applied. However, the string conversion rules in section 2.4 should be augmented as follows: * Escape all occurrences of ASCII control characters (Unicode range \x00 - \x1f) by replacing them with "\" followed by a two digit hex number showing its Unicode number. * Escape any trailing space characters by replacing them with "\20", instead of using the escape sequence "\ ". * Since a XML document logically consists of characters, not octets, the resulting Unicode string is finally encoded according to the character encoding used for producing the physical representation of the XML document. <<<<< Note that this demonstrates another subtle problem in the current text in dsig-core: The current text suggests to escape "any trailing whitespace." There is whitespace that is different from space characters, yet, the only encoding rule given is for space characters. Incidentally, the WS-I basic security profile mis-reads [5] the additional encoding rules as encoding rules for DNames (which they aren't!) and makes them a MUST -- probably worth sending a flare over there. 1. http://www.w3.org/2001/10/xmldsig-errata 2. http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001AprJun/0140.html 3. http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001AprJun/0334.html 4. http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2002JanMar/0246.html 5. http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html#X509IssuerSerial_Value -- Thomas Roessler, W3C <tlr@w3.org>
Received on Tuesday, 12 June 2007 16:05:43 UTC