Jump to content

User:ComputerUserUser/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by RussBot (talk | contribs) at 08:16, 13 January 2024 (Bot: Change redirected category Software libraries to Computer libraries). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

GNU Libidn is a free software library that provides support for Internationalized Domain Names (IDNs). It is designed for the encoding and decoding of internationalized domain names according to the Stringprep, Punycode, and IDNA specifications.

Libidn is developed and maintained by Simon Josefsson as part of the GNU Project. The library is written in C, and a portion of the API is also accessible in C++, Emacs Lisp, Python, and Java.

Implementations in Java and C# are provided natively and distributed under the terms of the GNU Lesser General Public License.

History

The library was originally named Libstringprep[1] before becoming a GNU project.

Technical Features

The library contains a generic implementation of Stringprep. Profiles such as Nameprep, iSCSI, XMPP, and Kerberos version 5 are also included. Punycode and ACE (ASCII Compatible Encoding) in the context of an internationalized domain name are supported. A mechanism for defining validation tables for a top-level domain (TLD) and comparing character strings from these tables is included. Default tables for certain TLDs are even included.

Stringprep

The API for Stringprep consists of two functions, "main", the first for converting data from the native representation of a system to UTF-8, and the second for Stringprep processing. This simplifies the use of a Stringprep profile in an application.

Punycode

The Punycode API consists of two functions, one for encoding, and the other for decoding.

IDNA

The IDNA API consists of two encoding functions, the first towards ASCII[2], the second towards Unicode[3], as well as a high-level interface for the conversion between domain names and their ACE (ASCII Compatible Encoding) representation.

TLD

The TLD API includes several functions to extract top-level domain names from a domain represented in character strings, others to locate the appropriate TLD table for use in the relevant top-level domain, others to validate a character string on a TLD table, and several adapter functions to perform all these steps in a single call.

Usage by the GNU Project

GNU Libidn is used by GNU SASL and GNU Shishi to process usernames and passwords.

Notes and References

Git Repository on GNU Savannah software forge.

References

  1. ^ Transclusion error: {{En}} is only for use in File namespace. Use {{langx|en}} or {{in lang|en}} instead. A version of Libstringprep distributed by Simon Josefsson on November 6, 2002.
  2. ^ ToASCII function.
  3. ^ ToUnicode function.