Subject: [idn] Circular Reference in the IDNA / Nameprep documentation

From: "Colosi, John" <[email-masked]>
Date: Tue, 28 May 2002 18:47:08 -0400

All,

	The current documentation layout for prohibited codepoints seems
confusing.

	To properly implement prohibitions consistent with the Nameprep 10
draft, one must:
		Conditionally prohibit five (5) ranges (IDNA)
		Conditionally prohibit leading/trailing hyphens (IDNA)
		Prohibit additional delimiters (+U3002) (Nameprep)
		Prohibit ranges from "Prohibition Tables" (Stringprep)
		Prohibit ranges from "Unassigned Codepoints" (Stringprep)

	[ from "draft-ietf-idn-nameprep-10.txt", line 107 ]
	"IMPORTANT NOTE: This profile MUST be used with the IDNA protocol.
The IDNA protocol has additional prohibitions that are checked outside of
this profile."

	If this statement is true, and Nameprep MUST be implemented with
consideration to prohibitions in IDNA, then shouldn't these prohibitions be
incorporated in the Nameprep draft?  Nameprep's reference to IDNA, taken in
conjunction with IDNA's reference to Nameprep seems circular.

	What is the motivation for relegating the conditional prohibitions
to the IDNA draft?  Could "non-LDH" characters be specified in a table of
the Stringprep draft?  The Nameprep draft would then reference this table in
a conditional prohibition, encapsulating the name preparation concept.

-- John

---

From: "Adam M. Costello" <[email-masked]>
Date: Wed, 29 May 2002 02:51:16 +0000

"Colosi, John" <[email-masked]> wrote:

> What is the motivation for relegating the conditional prohibitions to
> the IDNA draft?  Could "non-LDH" characters be specified in a table of
> the Stringprep draft?  The Nameprep draft would then reference this
> table in a conditional prohibition, encapsulating the name preparation
> concept.

The check for leading/trailing hyphens cannot be done within the
Stringprep framework.  Stringprep has no provisions for prohibiting
characters in selected places in the string.  ToASCII is the only place
we can perform this check.

The check for non-LDH ASCII code points is done in the same place.  We
want to keep these two checks together because they are both derived
from the same source (the STD3 host name syntax) and both are enabled by
a single flag.

AMC