2017-10-18 05:10:08 +01:00
|
|
|
{ stdenv, buildPackages, gmp, gnum4
|
2015-04-04 03:13:20 +01:00
|
|
|
|
|
|
|
# Version specific args
|
|
|
|
, version, src
|
|
|
|
, ...}:
|
|
|
|
|
2019-08-13 22:52:01 +01:00
|
|
|
stdenv.mkDerivation ({
|
2015-04-04 03:13:20 +01:00
|
|
|
name = "nettle-${version}";
|
|
|
|
|
|
|
|
inherit src;
|
|
|
|
|
2016-08-29 01:30:01 +01:00
|
|
|
outputs = [ "out" "dev" ];
|
2015-10-07 20:53:44 +01:00
|
|
|
outputBin = "dev";
|
|
|
|
|
2018-02-13 18:36:54 +00:00
|
|
|
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
|
|
|
nativeBuildInputs = [ gnum4 ];
|
2015-04-04 03:13:20 +01:00
|
|
|
propagatedBuildInputs = [ gmp ];
|
|
|
|
|
2020-02-18 11:17:45 +00:00
|
|
|
configureFlags = [ "--enable-fat" ]; # runtime selection of HW-accelerated code
|
|
|
|
|
2018-08-20 20:11:29 +01:00
|
|
|
doCheck = (stdenv.hostPlatform.system != "i686-cygwin" && !stdenv.isDarwin);
|
2015-04-04 03:13:20 +01:00
|
|
|
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
|
2018-08-20 20:11:29 +01:00
|
|
|
patches = stdenv.lib.optional (stdenv.hostPlatform.system == "i686-cygwin")
|
2015-04-04 03:13:20 +01:00
|
|
|
./cygwin.patch;
|
|
|
|
|
2015-04-19 08:48:48 +01:00
|
|
|
meta = with stdenv.lib; {
|
2015-04-04 03:13:20 +01:00
|
|
|
description = "Cryptographic library";
|
|
|
|
|
|
|
|
longDescription = ''
|
|
|
|
Nettle is a cryptographic library that is designed to fit
|
|
|
|
easily in more or less any context: In crypto toolkits for
|
|
|
|
object-oriented languages (C++, Python, Pike, ...), in
|
|
|
|
applications like LSH or GNUPG, or even in kernel space. In
|
|
|
|
most contexts, you need more than the basic cryptographic
|
|
|
|
algorithms, you also need some way to keep track of available
|
|
|
|
algorithms, their properties and variants. You often have
|
|
|
|
some algorithm selection process, often dictated by a protocol
|
|
|
|
you want to implement.
|
|
|
|
|
|
|
|
And as the requirements of applications differ in subtle and
|
|
|
|
not so subtle ways, an API that fits one application well can
|
|
|
|
be a pain to use in a different context. And that is why
|
|
|
|
there are so many different cryptographic libraries around.
|
|
|
|
|
|
|
|
Nettle tries to avoid this problem by doing one thing, the
|
|
|
|
low-level crypto stuff, and providing a simple but general
|
|
|
|
interface to it. In particular, Nettle doesn't do algorithm
|
|
|
|
selection. It doesn't do memory allocation. It doesn't do any
|
|
|
|
I/O.
|
|
|
|
'';
|
|
|
|
|
2015-04-19 08:48:48 +01:00
|
|
|
license = licenses.gpl2Plus;
|
2015-04-04 03:13:20 +01:00
|
|
|
|
|
|
|
homepage = http://www.lysator.liu.se/~nisse/nettle/;
|
|
|
|
|
2015-04-19 08:48:48 +01:00
|
|
|
platforms = platforms.all;
|
2015-04-04 03:13:20 +01:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
stdenv.lib.optionalAttrs stdenv.isSunOS {
|
|
|
|
# Make sure the right <gmp.h> is found, and not the incompatible
|
|
|
|
# /usr/include/mp.h from OpenSolaris. See
|
|
|
|
# <https://lists.gnu.org/archive/html/hydra-users/2012-08/msg00000.html>
|
|
|
|
# for details.
|
2015-10-15 16:43:23 +01:00
|
|
|
configureFlags = [ "--with-include-path=${gmp.dev}/include" ];
|
2015-04-04 03:13:20 +01:00
|
|
|
})
|