ch01.html   [plain text]


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>GNU Libidn API Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
<link rel="start" href="index.html" title="GNU Libidn API Reference Manual">
<link rel="up" href="index.html" title="GNU Libidn API Reference Manual">
<link rel="prev" href="index.html" title="GNU Libidn API Reference Manual">
<link rel="next" href="libidn-idna.html" title="idna">
<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="chapter" href="ch01.html" title="GNU Libidn API Reference Manual">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td>&#160;</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GNU Libidn API Reference Manual</th>
<td><a accesskey="n" href="libidn-idna.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="chapter" lang="en">
<div class="titlepage"><div><div><h2 class="title">
<a name="id2538440"></a>GNU Libidn API Reference Manual</h2></div></div></div>
<div class="toc"><dl>
<dt>
<span class="refentrytitle"><a href="libidn-idna.html">idna</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="libidn-pr29.html">pr29</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="libidn-punycode.html">punycode</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="libidn-tld.html">tld</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="libidn-stringprep.html">stringprep</a></span><span class="refpurpose"></span>
</dt>
</dl></div>
<p>
      GNU Libidn is an implementation of the Stringprep, Punycode and IDNA
      specifications defined by the IETF Internationalized Domain Names
      (IDN) working group, used for internationalized domain names.  The
      package is available under the GNU Lesser General Public License.
    </p>
<p>
      The library contains a generic Stringprep implementation that
      does Unicode 3.2 NFKC normalization, mapping and prohibitation
      of characters, and bidirectional character handling.  Profiles
      for Nameprep, iSCSI, SASL and XMPP are included.  Punycode and
      ASCII Compatible Encoding (ACE) via IDNA are supported.  A
      mechanism to define Top-Level Domain (TLD) specific validation
      tables, and to compare strings against those tables, is
      included.  Default tables for some TLDs are also included.
    </p>
<p>
      The Stringprep API consists of two main functions, one for
      converting data from the system's native representation into
      UTF-8, and one function to perform the Stringprep processing.
      Adding a new Stringprep profile for your application within the
      API is straightforward.  The Punycode API consists of one
      encoding function and one decoding function.  The IDNA API
      consists of the ToASCII and ToUnicode functions, as well as an
      high-level interface for converting entire domain names to and
      from the ACE encoded form.  The TLD API consists of one set of
      functions to extract the TLD name from a domain string, one set
      of functions to locate the proper TLD table to use based on the
      TLD name, and core functions to validate a string against a TLD
      table, and some utility wrappers to perform all the steps in one
      call.
    </p>
<p>
      The library is used by, e.g., GNU SASL and Shishi to process user
      names and passwords.  Libidn can be built into GNU Libc to enable a
      new system-wide getaddrinfo flag for IDN processing.
    </p>
<p>
      Libidn is developed for the GNU/Linux system, but runs on over 20
      platforms including most major Unix platforms and Windows, and many
      kind of devices including iPAQ handhelds and S/390 mainframes.
      Libidn is written in C and (parts of) the API is accessible from C,
      C++, Emacs Lisp, Python and Java.
    </p>
<p>The internal layout of the library, and how your application
      interact with the various parts of the library, are shown in
      <a href="ch01.html#components" title="Figure&#160;1.&#160;Components of Libidn">Figure&#160;1, &#8220;Components of Libidn&#8221;</a>.
    </p>
<div class="figure">
<a name="components"></a><p class="title"><b>Figure&#160;1.&#160;Components of Libidn</b></p>
<div class="figure-contents"><div><img src="libidn-components.png" alt="Components of Libidn"></div></div>
</div>
<br class="figure-break">
</div>
</body>
</html>