[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [idn] amending [IDNA]?
After some thinking, I suggest more specific statement
in [IDNA] to explain its relationship with [nameprep]:
On Fri, 17 Aug 2001 18:03:23 -0700 liana.ydisg@juno.com writes:
> Hi, Paul:
>
> I suggest the following procedure specification
> adds to [IDNA], this is only an idea, while I have no
> intention to put proper words in the document.
>
> [IDNA] is the component of internetionalization of
> Domain Name system. It contains procedures preparing
> localized domain name representation for DNS and
> supply display representation for local standard
> according to DNS registered hostnames.
[IDNA] implements Unicode codepoint specifications
published in [nameprep].
>
> The IDN-label protocol is:
>
> idn-label(input, tag-file, input-std, zonefile, idn-name)
> {
> tag = find-tag(input, tag-file, input-std);
if error(tag)
{
fprintf(stderr, "%s %s", idn-name, "illegal characters found in IDN
label.");
return (ERROR);
}
> switch (tag)
> {
> case USASCII : return(input); /* a legal DNS string*/
> case NIL: idn-name=
> uni-compress(input, UNICODE, DEFAULT-ACE);
> return strcat(DEFAULT-ACE, idn-name);
> default:
> idn-folding(input, input-std, tag, USASCII, output-list);
> if idn-label-length(output-list) >= MaxLabelLength
> {
> record-label(input, output-list, zonefile, tag);
> idn-truncate-label(output-list, tag);
> }
> idn-label-concat(output-list, idn-name);
> return strcat(tag, idn-name);
> }
>
> The idn-display protocol is:
>
> idn-display-code(input, local-std, zonefile, display-string)
> {
> display-string = NIL;
> search-zone(input, zonefile, local-std, display-string);
> if display-string
> return display-string;
>
> tag = find-tag (input, tag-file, USASCII);
if error(tag)
{
fprintf(stderr, "%s %s", input, "WARNING: Error found in DNS label.");
return (ERROR);
}
> switch (tag)
> {
> case USASCII : return(input); /* a legal DNS string*/
> case NIL: return(input); /* legacy name */
> case DEFAULT-TAG:
> local-std = UNICODE;
> uni-decompress(input, display-string)
> return display-string;
> default:
> idn-folding(input, USASCII, tag, local-std,
> display-string);
> if length(inupt) >= MaxLabelLength) /* truncated */
> idn-request-fullname(input, output-list, host1,
> host2);
> return display-string;
> }
>
>
delete: > [nameprep] shall be the host for and only deal with
...
delete > for case folding table lookups, and leave exclusion list to be
delete > checked by idn-label procedure within a tagged Unicode block.
[nameprep] shall specify availble case folding tables for
idn-folding(input, in-std, tag, out-std, out-list) protocol,
and illegal codepoint exclusion shall be implemented in
tag = find-tag(input, tag-file, input-std)
where tags are script based with naming defined in
[ISO 639-2/T] and registered with IANA.
The tags have values:
ERROR /* contain [nameprep] has Excluded Codepoints */
USASCII /* [A-Za-z0-9] */
NIL /* Unicode string with no applicable script label found. */
ZHO /* Chinese tag */
KOR /* Korean */
JAP /* Japanese */
LAT /* Latin */
...
>
> I am looking forward for your comments.
>
> Liana Ye
>