TLD checks for common names and dnsnames.

As in title. There is small ugly part that TLD check for common name and dnsname looks pretty much the same, but I wasn't sure where I could extract it. I'm also not sure if my approach to checking whether a name is probably an address or not is correct (I'm converting name to idna and checking whether it contains [a-z0-9-.*] characters). I could add this python package: https://pypi.python.org/pypi/rfc3987, so it will be more advanced.   
Surely it isn't write to lowercase and _then_ try UTF-8?

Also, is UTF-8 even allowed?