alvr: 20.11.1 -> 20.12.1 (#374869)
[NixPkgs.git] / pkgs / development / python-modules / cryptography / default.nix
blob0a8ebbc5d9f64df5289ea21d65d794fec2e7f959
2   lib,
3   stdenv,
4   buildPythonPackage,
5   callPackage,
6   setuptools,
7   bcrypt,
8   certifi,
9   cffi,
10   cryptography-vectors ? (callPackage ./vectors.nix { }),
11   fetchFromGitHub,
12   isPyPy,
13   libiconv,
14   libxcrypt,
15   openssl,
16   pkg-config,
17   pretend,
18   pytest-xdist,
19   pytestCheckHook,
20   pythonOlder,
21   rustPlatform,
22   Security,
25 buildPythonPackage rec {
26   pname = "cryptography";
27   version = "44.0.0"; # Also update the hash in vectors.nix
28   pyproject = true;
30   disabled = pythonOlder "3.7";
32   src = fetchFromGitHub {
33     owner = "pyca";
34     repo = "cryptography";
35     tag = version;
36     hash = "sha256-A+qYW8GksYk+FQG8ZJHNYrjcouE1CsVH0Lko2ahoYUI=";
37   };
39   cargoDeps = rustPlatform.fetchCargoTarball {
40     inherit src;
41     name = "${pname}-${version}";
42     hash = "sha256-LJIY2O8ul36JQmhiW8VhLCQ0BaX+j+HGr3e8RUkZpc8=";
43   };
45   postPatch = ''
46     substituteInPlace pyproject.toml \
47       --replace-fail "--benchmark-disable" ""
48   '';
50   build-system = [
51     rustPlatform.cargoSetupHook
52     rustPlatform.maturinBuildHook
53     pkg-config
54     setuptools
55   ] ++ lib.optionals (!isPyPy) [ cffi ];
57   buildInputs =
58     [ openssl ]
59     ++ lib.optionals stdenv.hostPlatform.isDarwin [
60       Security
61       libiconv
62     ]
63     ++ lib.optionals (pythonOlder "3.9") [ libxcrypt ];
65   dependencies = lib.optionals (!isPyPy) [ cffi ];
67   optional-dependencies.ssh = [ bcrypt ];
69   nativeCheckInputs = [
70     certifi
71     cryptography-vectors
72     pretend
73     pytestCheckHook
74     pytest-xdist
75   ] ++ optional-dependencies.ssh;
77   pytestFlagsArray = [ "--disable-pytest-warnings" ];
79   disabledTestPaths = [
80     # save compute time by not running benchmarks
81     "tests/bench"
82   ];
84   passthru = {
85     vectors = cryptography-vectors;
86   };
88   meta = with lib; {
89     description = "Package which provides cryptographic recipes and primitives";
90     longDescription = ''
91       Cryptography includes both high level recipes and low level interfaces to
92       common cryptographic algorithms such as symmetric ciphers, message
93       digests, and key derivation functions.
94     '';
95     homepage = "https://github.com/pyca/cryptography";
96     changelog =
97       "https://cryptography.io/en/latest/changelog/#v" + replaceStrings [ "." ] [ "-" ] version;
98     license = with licenses; [
99       asl20
100       bsd3
101       psfl
102     ];
103     maintainers = with maintainers; [ SuperSandro2000 ];
104   };