Blame README

Packit Service aec53c
		    Libgcrypt - The GNU Crypto Library
Packit Service aec53c
		   ------------------------------------
Packit Service aec53c
                             Version 1.8
Packit Service aec53c
Packit Service aec53c
       Copyright (C) 1989,1991-2018 Free Software Foundation, Inc.
Packit Service aec53c
       Copyright (C) 2012-2018 g10 Code GmbH
Packit Service aec53c
       Copyright (C) 2013-2018 Jussi Kivilinna
Packit Service aec53c
Packit Service aec53c
    Libgcrypt is free software.  See the file AUTHORS for full copying
Packit Service aec53c
    notices, and LICENSES for notices about contributions that require
Packit Service aec53c
    these additional notices to be distributed.
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
    Overview
Packit Service aec53c
    --------
Packit Service aec53c
Packit Service aec53c
    Libgcrypt is a general purpose crypto library based on the code
Packit Service aec53c
    used in GnuPG.  Libgcrypt depends on the library `libgpg-error',
Packit Service aec53c
    which must be installed correctly before Libgcrypt is to be built.
Packit Service aec53c
    Libgcrypt is distributed under the LGPL, see the section "License"
Packit Service aec53c
    below for details.
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
    Build Instructions
Packit Service aec53c
    ------------------
Packit Service aec53c
Packit Service aec53c
    The download canonical location for libgcrypt is:
Packit Service aec53c
Packit Service aec53c
      https://gnupg.org/ftp/gcrypt/libgcrypt/
Packit Service aec53c
Packit Service aec53c
    To build libgcrypt you need libgpg-error:
Packit Service aec53c
Packit Service aec53c
      https://gnupg.org/ftp/gcrypt/libgpg-error/
Packit Service aec53c
Packit Service aec53c
    You should get the latest versions of course.
Packit Service aec53c
Packit Service aec53c
    After building and installing the libgpg-error package, you may
Packit Service aec53c
    continue with Libgcrypt installation as with allmost all GNU
Packit Service aec53c
    packages, you just have to do
Packit Service aec53c
Packit Service aec53c
       ./configure
Packit Service aec53c
       make
Packit Service aec53c
       make check
Packit Service aec53c
       make install
Packit Service aec53c
Packit Service aec53c
    The "make check" is not required but a good idea to see whether
Packit Service aec53c
    the library works as expected.  The check takes some while and
Packit Service aec53c
    prints some benchmarking results.  Before doing "make install" you
Packit Service aec53c
    probably need to become root.
Packit Service aec53c
Packit Service aec53c
    To build libgcrypt for Microsoft Windows, you need to have the
Packit Service aec53c
    mingw32 cross-building toolchain installed.  Instead of running a
Packit Service aec53c
    plain configure you use
Packit Service aec53c
Packit Service aec53c
      ./autogen.sh --build-w32
Packit Service aec53c
      make
Packit Service aec53c
      make install
Packit Service aec53c
Packit Service aec53c
    By default this command sequences expectsd a libgpg-error
Packit Service aec53c
    installed below $HOME/w32root and installs libgcrypt to that
Packit Service aec53c
    directory too.  See the autogen.sh code for details.
Packit Service aec53c
Packit Service aec53c
    The documentation is available as an Info file (gcrypt.info).  To
Packit Service aec53c
    build documentation in PDF, run this:
Packit Service aec53c
Packit Service aec53c
      cd doc
Packit Service aec53c
      make pdf
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
    Mailing List
Packit Service aec53c
    ------------
Packit Service aec53c
Packit Service aec53c
    You may want to join the developer's mailing list
Packit Service aec53c
    gcrypt-devel@gnupg.org by sending mail with a subject of
Packit Service aec53c
    "subscribe" to gcrypt-devel-request@gnupg.org.  An archive of this
Packit Service aec53c
    list is available at https://lists.gnupg.org .
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
    Configure options
Packit Service aec53c
    -----------------
Packit Service aec53c
    Here is a list of configure options which are sometimes useful
Packit Service aec53c
    for installation.
Packit Service aec53c
Packit Service aec53c
     --enable-large-data-tests
Packit Service aec53c
                     With this option a "make check" will take really
Packit Service aec53c
                     long due to extra checks for the hash algorithms.
Packit Service aec53c
Packit Service aec53c
     --enable-m-guard
Packit Service aec53c
                     Enable the integrated malloc checking code. Please
Packit Service aec53c
                     note that this feature does not work on all CPUs
Packit Service aec53c
                     (e.g. SunOS 5.7 on UltraSparc-2) and might give
Packit Service aec53c
                     you a bus error.
Packit Service aec53c
Packit Service aec53c
     --disable-asm
Packit Service aec53c
                     Do not use assembler modules.  It is not possible
Packit Service aec53c
                     to use this on some CPU types.
Packit Service aec53c
Packit Service aec53c
     --enable-ld-version-script
Packit Service aec53c
                     Libgcrypt tries to build a library where internal
Packit Service aec53c
                     symbols are not exported.  This requires support
Packit Service aec53c
                     from ld and is currently enabled for a few OSes.
Packit Service aec53c
                     If you know that your ld supports the so called
Packit Service aec53c
                     ELF version scripts, you can use this option to
Packit Service aec53c
                     force its use.  OTOH, if you get error message
Packit Service aec53c
                     from the linker, you probably want to use this
Packit Service aec53c
                     option to disable the use of version scripts.
Packit Service aec53c
                     Note, that you should never ever use an
Packit Service aec53c
                     undocumented symbol or one which is prefixed with
Packit Service aec53c
                     an underscore.
Packit Service aec53c
Packit Service aec53c
     --enable-ciphers=list
Packit Service aec53c
     --enable-pubkey-ciphers=list
Packit Service aec53c
     --enable-digests=list
Packit Service aec53c
                     If not otherwise specified, all algorithms
Packit Service aec53c
                     included in the libgcrypt source tree are built.
Packit Service aec53c
		     An exception are algorithms, which depend on
Packit Service aec53c
		     features not provided by the system, like 64bit
Packit Service aec53c
		     data types.  With these switches it is possible
Packit Service aec53c
                     to select exactly those algorithm modules, which
Packit Service aec53c
		     should be built.  The algorithms are to be
Packit Service aec53c
                     separated by spaces, commas or colons.  To view
Packit Service aec53c
                     the list used with the current build the program
Packit Service aec53c
                     tests/version may be used.
Packit Service aec53c
Packit Service aec53c
     --disable-endian-check
Packit Service aec53c
                     Don't let configure test for the endianness but
Packit Service aec53c
                     try to use the OS provided macros at compile
Packit Service aec53c
                     time.  This is helpful to create OS X fat binaries.
Packit Service aec53c
Packit Service aec53c
     --enable-random-daemon
Packit Service aec53c
                     Include support for a global random daemon and
Packit Service aec53c
                     build the daemon.  This is an experimental feature.
Packit Service aec53c
Packit Service aec53c
     --enable-mpi-path=EXTRA_PATH
Packit Service aec53c
                     Prepend EXTRA_PATH to list of CPU specific
Packit Service aec53c
                     optimizations.  For example, if you want to add
Packit Service aec53c
                     optimizations forn a Intel Pentium 4 compatible
Packit Service aec53c
                     CPU, you may use
Packit Service aec53c
                        --enable-mpi-path=pentium4/sse2:pentium4/mmx
Packit Service aec53c
                     Take care: The generated library may crash on
Packit Service aec53c
                     non-compatible CPUs.
Packit Service aec53c
Packit Service aec53c
     --enable-random=NAME
Packit Service aec53c
                     Force the use of the random gathering module
Packit Service aec53c
		     NAME.  Default is either to use /dev/random or
Packit Service aec53c
		     the auto mode.  Possible values for NAME are:
Packit Service aec53c
		       egd - Use the module which accesses the
Packit Service aec53c
			     Entropy Gathering Daemon. See the webpages
Packit Service aec53c
			     for more information about it.
Packit Service aec53c
		      unix - Use the standard Unix module which does not
Packit Service aec53c
			     have a very good performance.
Packit Service aec53c
		     linux - Use the module which accesses /dev/random.
Packit Service aec53c
			     This is the first choice and the default one
Packit Service aec53c
			     for GNU/Linux or *BSD.
Packit Service aec53c
                      auto - Compile linux, egd and unix in and
Packit Service aec53c
                             automagically select at runtime.
Packit Service aec53c
Packit Service aec53c
     --enable-hmac-binary-check
Packit Service aec53c
                     Include support to check the binary at runtime
Packit Service aec53c
                     against a HMAC checksum.  This works only in FIPS
Packit Service aec53c
                     mode and on systems providing the dladdr function.
Packit Service aec53c
Packit Service aec53c
     --disable-padlock-support
Packit Service aec53c
                     Disable support for the PadLock engine of VIA
Packit Service aec53c
                     processors.  The default is to use PadLock if
Packit Service aec53c
                     available.  Try this if you get problems with
Packit Service aec53c
                     assembler code.
Packit Service aec53c
Packit Service aec53c
     --disable-aesni-support
Packit Service aec53c
                     Disable support for the AES-NI instructions of
Packit Service aec53c
                     newer Intel CPUs.  The default is to use AES-NI
Packit Service aec53c
                     if available.  Try this if you get problems with
Packit Service aec53c
                     assembler code.
Packit Service aec53c
Packit Service aec53c
     --disable-O-flag-munging
Packit Service aec53c
                     Some code is too complex for some compilers while
Packit Service aec53c
                     in higher optimization modes, thus the compiler
Packit Service aec53c
                     invocation is modified to use a lower
Packit Service aec53c
                     optimization level.  Usually this works very well
Packit Service aec53c
                     but on some platforms these rules break the
Packit Service aec53c
                     invocation.  This option may be used to disable
Packit Service aec53c
                     the feature under the assumption that either good
Packit Service aec53c
                     CFLAGS are given or the compiler can grok the code.
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
    Build Problems
Packit Service aec53c
    --------------
Packit Service aec53c
Packit Service aec53c
    If you have a problem with a certain release, please first check
Packit Service aec53c
    the Release-info URL given in the NEWS file.
Packit Service aec53c
Packit Service aec53c
    We can't check all assembler files, so if you have problems
Packit Service aec53c
    assembling them (or the program crashes) use --disable-asm with
Packit Service aec53c
    ./configure.  If you opt to delete individual replacement files in
Packit Service aec53c
    hopes of using the remaining ones, be aware that the configure
Packit Service aec53c
    scripts may consider several subdirectories to get all available
Packit Service aec53c
    assembler files; be sure to delete the correct ones.  Never delete
Packit Service aec53c
    udiv-qrnnd.S in any CPU directory, because there may be no C
Packit Service aec53c
    substitute (in mpi/genereic).  Don't forget to delete
Packit Service aec53c
    "config.cache" and run "./config.status --recheck".  We got a few
Packit Service aec53c
    reports about problems using versions of gcc earlier than 2.96
Packit Service aec53c
    along with a non-GNU assembler (as).  If this applies to your
Packit Service aec53c
    platform, you can either upgrade gcc to a more recent version, or
Packit Service aec53c
    use the GNU assembler.
Packit Service aec53c
Packit Service aec53c
    Some make tools are broken - the best solution is to use GNU's
Packit Service aec53c
    make.  Try gmake or grab the sources from a GNU archive and
Packit Service aec53c
    install them.
Packit Service aec53c
Packit Service aec53c
    Specific problems on some machines:
Packit Service aec53c
Packit Service aec53c
      * IBM RS/6000 running AIX
Packit Service aec53c
Packit Service aec53c
	Due to a change in gcc (since version 2.8) the MPI stuff may
Packit Service aec53c
	not build. In this case try to run configure using:
Packit Service aec53c
	    CFLAGS="-g -O2 -mcpu=powerpc" ./configure
Packit Service aec53c
Packit Service aec53c
      * SVR4.2 (ESIX V4.2 cc)
Packit Service aec53c
Packit Service aec53c
        Due to problems with the ESIX as(1), you probably want to do:
Packit Service aec53c
            CFLAGS="-O -K pentium" ./configure --disable-asm
Packit Service aec53c
Packit Service aec53c
      * SunOS 4.1.4
Packit Service aec53c
Packit Service aec53c
         ./configure ac_cv_sys_symbol_underscore=yes
Packit Service aec53c
Packit Service aec53c
      * Sparc64 CPUs
Packit Service aec53c
Packit Service aec53c
        We have reports about failures in the AES module when
Packit Service aec53c
        compiling using gcc (e.g. version 4.1.2) and the option -O3;
Packit Service aec53c
        using -O2 solves the problem.
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
    License
Packit Service aec53c
    -------
Packit Service aec53c
Packit Service aec53c
    The library is distributed under the terms of the GNU Lesser
Packit Service aec53c
    General Public License (LGPL); see the file COPYING.LIB for the
Packit Service aec53c
    actual terms.
Packit Service aec53c
Packit Service aec53c
    The helper programs as well as the documentation are distributed
Packit Service aec53c
    under the terms of the GNU General Public License (GPL); see the
Packit Service aec53c
    file COPYING for the actual terms.
Packit Service aec53c
Packit Service aec53c
    The file LICENSES has notices about contributions that require
Packit Service aec53c
    that these additional notices are distributed.
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
    Contact
Packit Service aec53c
    -------
Packit Service aec53c
Packit Service aec53c
    See the file AUTHORS.
Packit Service aec53c
Packit Service aec53c
    Commercial grade support for Libgcrypt is available; for a listing
Packit Service aec53c
    of offers see https://www.gnupg.org/service.html .
Packit Service aec53c
Packit Service aec53c
    Maintenance and development of Libgcrypt is mostly financed by
Packit Service aec53c
    donations.  We currently employ 3 full-time developers, one
Packit Service aec53c
    part-timer, and one contractor.  They all work on GnuPG and
Packit Service aec53c
    closely related software like Libgcrypt.  Please visit
Packit Service aec53c
    https://gnupg.org/donate/ to see out how you can help.
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
  This file is Free Software; as a special exception the authors gives
Packit Service aec53c
  unlimited permission to copy and/or distribute it, with or without
Packit Service aec53c
  modifications, as long as this notice is preserved. For conditions
Packit Service aec53c
  of the whole package, please see the file COPYING.  This file is
Packit Service aec53c
  distributed in the hope that it will be useful, but WITHOUT ANY
Packit Service aec53c
  WARRANTY, to the extent permitted by law; without even the implied
Packit Service aec53c
  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.