2021-08-27 09:33:19 +02:00
|
|
|
{ lib
|
|
|
|
, buildDunePackage
|
2022-07-06 07:33:02 +02:00
|
|
|
, fetchFromGitHub
|
|
|
|
, fetchpatch
|
2021-08-27 09:33:19 +02:00
|
|
|
, ocaml
|
|
|
|
|
|
|
|
, alcotest
|
|
|
|
, cstruct
|
|
|
|
, mirage-crypto
|
|
|
|
}:
|
|
|
|
|
|
|
|
buildDunePackage rec {
|
|
|
|
pname = "chacha";
|
2022-07-06 07:33:02 +02:00
|
|
|
version = "1.1.0";
|
2021-08-27 09:33:19 +02:00
|
|
|
|
2022-07-06 07:33:02 +02:00
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "abeaumont";
|
|
|
|
repo = "ocaml-chacha";
|
|
|
|
rev = version;
|
2023-03-09 18:19:08 +01:00
|
|
|
hash = "sha256-PmeiFloU0k3SqOK1VjaliiCEzDzrzyMSasgnO5fJS1k=";
|
2021-08-27 09:33:19 +02:00
|
|
|
};
|
|
|
|
|
2022-07-06 07:33:02 +02:00
|
|
|
# Ensure compatibility with cstruct ≥ 6.1.0
|
|
|
|
patches = [ (fetchpatch {
|
|
|
|
url = "https://github.com/abeaumont/ocaml-chacha/commit/fbe4a0a808226229728a68f278adf370251196fd.patch";
|
|
|
|
sha256 = "sha256-y7X9toFDrgdv3qmFmUs7K7QS+Gy45rRLulKy48m7uqc=";
|
|
|
|
})];
|
2021-08-27 09:33:19 +02:00
|
|
|
|
2022-07-06 07:33:02 +02:00
|
|
|
minimalOCamlVersion = "4.02";
|
2023-03-09 18:19:08 +01:00
|
|
|
duneVersion = "3";
|
2021-08-27 09:33:19 +02:00
|
|
|
|
|
|
|
propagatedBuildInputs = [ cstruct mirage-crypto ];
|
|
|
|
|
|
|
|
# alcotest isn't available for OCaml < 4.05 due to fmt
|
|
|
|
doCheck = lib.versionAtLeast ocaml.version "4.05";
|
2022-03-01 16:42:22 +01:00
|
|
|
checkInputs = [ alcotest ];
|
2021-08-27 09:33:19 +02:00
|
|
|
|
|
|
|
meta = {
|
|
|
|
homepage = "https://github.com/abeaumont/ocaml-chacha";
|
|
|
|
description = "ChaCha20, ChaCha12 and ChaCha8 encryption functions, in OCaml";
|
|
|
|
longDescription = ''
|
|
|
|
An OCaml implementation of ChaCha functions, both ChaCha20 and the reduced
|
|
|
|
ChaCha8 and ChaCha12 functions. The hot loop is implemented in C for efficiency
|
|
|
|
reasons.
|
|
|
|
'';
|
|
|
|
license = lib.licenses.bsd2;
|
|
|
|
maintainers = with lib.maintainers; [ fufexan ];
|
|
|
|
};
|
|
|
|
}
|