|
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.
|