[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [idn] Re: stringprep and unassigned code points



--On 01-10-25 00.01 -0700 Yves Arrouye <yves@realnames.com> wrote:

> I have the same understanding you do re: when unassigned code points may
> be generated (by an application that gets code points from a version of
> Unicode that was released after the version of Nameprep it uses).

I must be extremely bad at expressing myself. This is now the third time
since monday I explain how things work.

> Now
> let's suppose Unicode encodes something new, for which a new Nameprep is
> released (because some additions to the mapping table are needed).

A mapping can only be from an earlier unassigned codepoint.

> At
> this point, the DNS servers may contain the ACE(Nameprep(names in this
> new thing)).

ACE have absolutely nothing to do with this. This is a stringprep issue.

Only nameservers which do understand the new version of stringprep can have
these names.

> And applications get these new codepoints,

What do you mean by "get these new codepoints"?

> but because they
> do not have the appropriate mapping table, they will pass ACE(Old
> Nameprep(names in this new thing))

No, because the codepoint is unassigned in old version of stringsprep, and
because of that MUST NOT be used.

> which will sometimes match the new
> labels, and sometimes not. Am I right in thinking that applications do
> not need to be updated only if Nameprep does not change for the new code
> points (looks like common sense anyway)?

You are wrong.

Summary (once again):

If a new version of Unicode comes out, which have a newly assigned
codepoint (X), and a mapping from X to Y, the following is true:

- X can not be part of the result of a nameprep which an old application
  creates. If an old application get X as input, the codepoint is unassigned
  and therefore illegal.
- If Y is an earlier assigned codepoint, an application understanding the
  new version of nameprep will when getting X map that to Y.
- If Y is a newly assigned codepoint, an application understanding the
  new version of nameprep will when getting X map that to Y.
- In neither case (old application or new application) X will be part of
  the output of the stringprep process.

         paf