[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Protection of hyphen
Paul Hoffman / IMC <phoffman@xxxxxxx> wrote:
> Note that "owner-listname" is a prime example of why we might *not*
> want to protect the hyphen. The hyphen in that name is not for making
> subaddresses: it is just there for preventing the two names from
> smooshing together.
I don't understand your point. If foo is an ACE, and if hyphen is not
protected, then owner-foo is not going to be displayed intelligibly.
Maybe that's not a compelling problem, but it is at least a small reason
in favor of protecting hyphen, not a reason against.
(By the way, for anyone not familiar with it, the owner-foo convention
is built into various mailing list servers and into sendmail. When
sending mail to an alias foo, they often put owner-foo as the return
path.)
Roy Badami <roy@xxxxxxxxxxxxx> wrote:
> One simple approach would be to leave underscore unprotected
> instead, use xn__ as the ACE prefix and to use _ as the delimiter in
> bootstring.
>
> (I confess however that I don't understand the explanation of the
> infix solution to this problem mentioned in the draft; perhaps an
> example would be helpful?)
Suppose we want to protect all nonalphanumeric ASCII characters. The
infix could be, say, 8iesg8 (which contains no protected characters).
(Of course iesg is a placeholder for something shorter to be chosen
later.)
Now suppose we have the local part <pafii>de<runba> (example Q from the
Punycode spec). The Punycode encoder outputs de-jg4avhby1noc0d. We
change the hyphen to the infix, yielding de8iesg8jg4avhby1noc0d. To
decode that, we search for the infix, change it to a hyphen, and apply
the Punycode decoder.
Now consider <sono><supiido><de> (example R from the Punycode spec).
The Punycode encoder outputs d9juau41awczczp. That contains no hyphen,
so we prepend the infix, resulting in 8iesg8d9juau41awczczp. To decode
that, we search for the infix, notice that it appears at the very
beginning, and therefore simply remove it, then apply the Punycode
decoder.
The underscore solution is a little simpler, but it fails to protect
underscore. Maybe no one would care about protecting underscore, I
don't know.
AMC