Re: [Models] An attribute value should be equal to self
"Kurt D. Zeilenga" <[email protected]>
| Newsgroups | gmane.ietf.ldapbis |
|---|---|
| Message-ID | <[email protected]> |
At 11:38 PM 3/10/2005, Steven Legg wrote: >I'm asking that LDAPprep not fail. Given that unassigned code points are to be prohibited [Section 7, Stringprep] (in at least one of the two involved strings), and all revisions of Unicode have unassigned code points, all proper profiles of Stringprep can fail and will fail in face of unassigned code points. That is, LDAPprep can fail. There is no way to escape this (and still have LDAPprep be a profile of the StringPrep algorithm). As you noted, troublesome characters should not be mapped to nothing as that causes string+garbage to match string. But mapping those troublesome characters to the replacement character makes little sense. If the replacement character is prohibited, then the mapping has zero impact. If the replacement character is allowed, then string+garbage would be equal to string+replacement. I think this is inappropriate as if we say the replacement character is not a troublesome character, then no troublesome character should match it. The issue I was referring with Normalization is really a code point v. character issue, and general assumption that matching (of the prepared values) is done in terms of characters not code points. Ignore this for now. (Also ignore the possibility that transcoding might fail.) The prohibition on Unassigned code points will cause StringPrep to fail. Now, if you want Rule(X,X) != Undefined, then in [Syntaxes] we could say that if LDAPrep fails the matching for either the assertion value or the attribute value, the matching is False. I'd have to think about it a bit, but off-hand, I think it might be better for assertions where an implementation is unable to determine the abstract value represented (e.g., prepare the string) by either the assertion or attribute value strings to return Undefined. My rationale is that since the implementation cannot determine what the abstract value is and it cannot determine equality of that abstract value to any other abstract value. This behavior is similar to the behavior with the string does not adhere to the applicable syntax restrictions. That is, I don't much difference in (cn=garbage) and (timeStamp=20050231Z). Both should evaluate to Undefined. Kurt