[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: [Models] An attribute value should be equal to self



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