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