<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-system-libxcrypt" role="wrap">
  <?dbhtml filename="libxcrypt.html"?>

  <sect1info condition="script">
    <productname>libxcrypt</productname>
    <productnumber>&libxcrypt-version;</productnumber>
    <address>&libxcrypt-url;</address>
  </sect1info>

  <title>Libxcrypt-&libxcrypt-version;</title>

  <indexterm zone="ch-system-libxcrypt">
    <primary sortas="a-Libxcrypt">Libxcrypt</primary>
  </indexterm>

  <sect2 role="package">
    <title/>

    <para>The Libxcrypt package contains a modern library for one-way
    hashing of passwords.</para>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&libxcrypt-fin-sbu;</seg>
        <seg>&libxcrypt-fin-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Libxcrypt</title>

    <para>Prepare Libxcrypt for compilation:</para>

<screen><userinput remap="configure">./configure --prefix=/usr                \
            --enable-hashes=strong,glibc \
            --enable-obsolete-api=no     \
            --disable-static             \
            --disable-failure-tokens</userinput></screen>

    <variablelist>
      <title>The meaning of the new configure options:</title>

      <varlistentry>
        <term><parameter>--enable-hashes=strong,glibc</parameter></term>
        <listitem>
          <para>Build strong hash algorithms recommended for security use
          cases, and the hash algorithms provided by traditional Glibc
          <systemitem class='library'>libcrypt</systemitem> for
          compatibility.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>--enable-obsolete-api=no</parameter></term>
        <listitem>
          <para>Disable obsolete API functions.  They are not needed for
          a modern Linux system built from source.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>--disable-failure-tokens</parameter></term>
        <listitem>
          <para>Disable failure token feature.  It's needed for
          compatibility with the traditional hash libraries of some
          platforms, but a Linux system based on Glibc does not need
          it.</para>
        </listitem>
      </varlistentry>
    </variablelist>

    <para>Compile the package:</para>

<screen><userinput remap="make">make</userinput></screen>

    <para>To test the results, issue:</para>

<screen><userinput remap="test">make check</userinput></screen>

    <para>Install the package:</para>

<screen><userinput remap="install">make install</userinput></screen>

    <note>

      <para>The instructions above disabled obsolete API functions since
      no package installed by compiling from sources would link against
      them at runtime. However, the only known binary-only applications
      that link against these functions require ABI version 1.  If you must
      have such functions because of some binary-only application or to be
      compliant with LSB, build the package again with the following
      commands:</para>

<screen role="nodump"><userinput>make distclean
./configure --prefix=/usr                \
            --enable-hashes=strong,glibc \
            --enable-obsolete-api=glibc  \
            --disable-static             \
            --disable-failure-tokens
make
cp -av --remove-destination .libs/libcrypt.so.1* /usr/lib</userinput></screen>
    </note>

  </sect2>

  <sect2 id="contents-libxcrypt" role="content">
    <title>Contents of Libxcrypt</title>

    <segmentedlist>
      <segtitle>Installed libraries</segtitle>

      <seglistitem>
        <seg>libcrypt.so</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="libcrypt">
        <term><filename class="libraryfile">libcrypt</filename></term>
        <listitem>
          <para>Contains functions to hash passwords</para>
          <indexterm zone="ch-system-libxcrypt libcrypt">
            <primary sortas="c-libcrypt">libcrypt</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>