libidn: Introduction
1
1 1 Introduction
1 **************
1
1 GNU Libidn is a fully documented implementation of the Stringprep,
1 Punycode and IDNA specifications. Libidn’s purpose is to encode and
1 decode internationalized domain name strings. There are native C, C#
1 and Java libraries.
1
1 The C library contains a generic Stringprep implementation. Profiles
1 for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included. Punycode
1 and ASCII Compatible Encoding (ACE) via IDNA are supported. A mechanism
1 to define Top-Level Domain (TLD) specific validation tables, and to
1 compare strings against those tables, is included. Default tables for
1 some TLDs are also included.
1
1 The Stringprep API consists of two main functions, one for converting
1 data from the system’s native representation into UTF-8, and one
1 function to perform the Stringprep processing. Adding a new Stringprep
1 profile for your application within the API is straightforward. The
1 Punycode API consists of one encoding function and one decoding
1 function. The IDNA API consists of the ToASCII and ToUnicode functions,
1 as well as an high-level interface for converting entire domain names to
1 and from the ACE encoded form. The TLD API consists of one set of
1 functions to extract the TLD name from a domain string, one set of
1 functions to locate the proper TLD table to use based on the TLD name,
1 and core functions to validate a string against a TLD table, and some
1 utility wrappers to perform all the steps in one call.
1
1 The library is used by, e.g., GNU SASL and Shishi to process user
1 names and passwords. Libidn can be built into GNU Libc to enable a new
1 system-wide getaddrinfo flag for IDN processing.
1
1 Libidn is developed for the GNU/Linux system, but runs on over 20
1 Unix platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.
1 The library is written in C and (parts of) the API is also accessible
1 from C++, Emacs Lisp, Python and Java. A native Java and C# port is
1 included.
1
1 Also included is a command line tool, several self tests, code
1 examples, and more.
1
Menu