IDN with Gemini?

Scot gmi1 at scotdoyle.com
Tue Dec 8 02:21:18 GMT 2020
On 12/7/20 3:46 PM, colecmac at protonmail.com wrote:
> On Monday, December 7, 2020 4:00 PM, Scot<gmi1 at scotdoyle.com>  wrote:
>
>> On 12/7/20 12:00 PM,colecmac at protonmail.com  wrote:
>>
>>> What parsing would a client have to do?
>>>
>>> -   Extracting the domain, so it can be punycoded for DNS lookups
>> Can we be sure gemini host resolution will always use the global DNS?
>>
>> Section 4 of RFC 6055 cautions against assuming that all name resolution
>> is using the global DNS and therefore that querying with punycode
>> domain names will succeed:
>>
>>  ? It is inappropriate for an application that calls a general-purpose
>>    name resolution library to convert a name to an A-label unless the
>>    application is absolutely certain that, in all environments where the
>>    application might be used, only the global DNS that uses IDNA
>>    A-labels actually will be used to resolve the name.
> ... Do you have an example of a system/network that fails on punycode?
>
Yes, an organization's internal network resolver or a user's local
resolver could reply to utf8 queries but not punycode queries.

For example, adding the line:

 ? 10.99.99.1? ??.jp

to /etc/hosts on Ubuntu 20.04 with resolver systemd-resolved
and running the test program [1] gives this output:

 ? error querying 'xn--td2aa.jp': Unknown server error

 ? name '??.jp' has ip address 10.99.99.1


[1]
#include <netdb.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/socket.h>

int show_ip(char *name) {
 ? struct hostent *entry;
 ? entry = gethostbyname(name);
 ? if (entry) {
 ??? printf("name '%s' has ip address %s\n\n", entry->h_name,
 ?????????? inet_ntoa(*((struct in_addr*)entry->h_addr)));
 ? } else {
 ??? printf("error querying '%s': %s\n\n", name, hstrerror(h_errno));
 ? }
}

int main() {
 ? show_ip("xn--td2aa.jp");
 ? show_ip("??.jp");
}


Archive home | About this archive