projects/guix·blob python-team · refs

1886 lines · 75.1 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 David Thompson <[email protected]>
3;;; Copyright © 2015, 2017, 2018, 2019, 2022 Ricardo Wurmus <[email protected]>
4;;; Copyright © 2016, 2017, 2018, 2019, 2021 Leo Famulari <[email protected]>
5;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
6;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <[email protected]>
7;;; Copyright © 2016, 2017 Nikita <[email protected]>
8;;; Copyright © 2016, 2017, 2019, 2020 Eric Bavier <[email protected]>
9;;; Copyright © 2017 Pierre Langlois <[email protected]>
10;;; Copyright © 2018, 2020, 2021, 2023, 2025 Efraim Flashner <[email protected]>
11;;; Copyright © 2018 Arun Isaac <[email protected]>
12;;; Copyright © 2018 Nicolas Goaziou <[email protected]>
13;;; Copyright © 2018, 2020 Nicolò Balzarotti <[email protected]>
14;;; Copyright © 2018 Tim Gesthuizen <[email protected]>
15;;; Copyright © 2019 Pierre Neidhardt <[email protected]>
16;;; Copyright © 2019 Tanguy Le Carrour <[email protected]>
17;;; Copyright © 2020 Marius Bakke <[email protected]>
18;;; Copyright © 2020 Jakub Kądziołka <[email protected]>
19;;; Copyright © 2020 Brice Waegeneire <[email protected]>
20;;; Copyright © 2020 Hendur Saga <[email protected]>
21;;; Copyright © 2020 pukkamustard <[email protected]>
22;;; Copyright © 2021 Ellis Kenyő <[email protected]>
23;;; Copyright © 2021 Maxime Devos <[email protected]>
24;;; Copyright © 2021, 2022, 2025 Brendan Tildesley <[email protected]>
25;;; Copyright © 2022 Allan Adair <[email protected]>
26;;; Copyright © 2022, 2024-2025 Maxim Cournoyer <[email protected]>
27;;; Copyright © 2022 Denis 'GNUtoo' Carikli <[email protected]>
28;;; Copyright © 2023 Ivan Vilata-i-Balaguer <[email protected]>
29;;; Copyright © 2023 Foundation Devices, Inc. <[email protected]>
30;;; Copyright © 2024, 2025 Janneke Nieuwenhuizen <[email protected]>
31;;; Copyright © 2025 Ashish SHUKLA <[email protected]>
32;;; Copyright © 2025 Robin Templeton <[email protected]>
33;;; Copyright © 2026 Hennadii Stepanov <[email protected]>
34;;; Copyright © 2026 Noé Lopez <[email protected]>
35;;; Copyright © 2026 bdunahu <[email protected]>
36;;;
37;;; This file is part of GNU Guix.
38;;;
39;;; GNU Guix is free software; you can redistribute it and/or modify it
40;;; under the terms of the GNU General Public License as published by
41;;; the Free Software Foundation; either version 3 of the License, or (at
42;;; your option) any later version.
43;;;
44;;; GNU Guix is distributed in the hope that it will be useful, but
45;;; WITHOUT ANY WARRANTY; without even the implied warranty of
46;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47;;; GNU General Public License for more details.
48;;;
49;;; You should have received a copy of the GNU General Public License
50;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
51
52(define-module (gnu packages crypto)
53 #:use-module (gnu packages)
54 #:use-module (gnu packages admin)
55 #:use-module (gnu packages aidc)
56 #:use-module (gnu packages assembly)
57 #:use-module (gnu packages attr)
58 #:use-module (gnu packages autotools)
59 #:use-module (gnu packages base)
60 #:use-module (gnu packages bash)
61 #:use-module (gnu packages boost)
62 #:use-module (gnu packages check)
63 #:use-module (gnu packages compression)
64 #:use-module (gnu packages cpp)
65 #:use-module (gnu packages cryptsetup)
66 #:use-module (gnu packages curl)
67 #:use-module (gnu packages documentation)
68 #:use-module (gnu packages gettext)
69 #:use-module (gnu packages gnupg)
70 #:use-module (gnu packages graphviz)
71 #:use-module (gnu packages image)
72 #:use-module (gnu packages kerberos)
73 #:use-module (gnu packages libbsd)
74 #:use-module (gnu packages libffi)
75 #:use-module (gnu packages linux)
76 #:use-module (gnu packages logging)
77 #:use-module (gnu packages lsof)
78 #:use-module (gnu packages man)
79 #:use-module (gnu packages multiprecision)
80 #:use-module (gnu packages nettle)
81 #:use-module (gnu packages password-utils)
82 #:use-module (gnu packages perl)
83 #:use-module (gnu packages perl-check)
84 #:use-module (gnu packages pkg-config)
85 #:use-module (gnu packages python)
86 #:use-module (gnu packages python-build)
87 #:use-module (gnu packages python-xyz)
88 #:use-module (gnu packages python-check)
89 #:use-module (gnu packages python-crypto)
90 #:use-module (gnu packages readline)
91 #:use-module (gnu packages search)
92 #:use-module (gnu packages serialization)
93 #:use-module (gnu packages shells)
94 #:use-module (gnu packages sqlite)
95 #:use-module (gnu packages tcl)
96 #:use-module (gnu packages tls)
97 #:use-module (gnu packages version-control)
98 #:use-module (gnu packages xml)
99 #:use-module ((guix licenses) #:prefix license:)
100 #:use-module (guix packages)
101 #:use-module (guix download)
102 #:use-module (guix git-download)
103 #:use-module (guix gexp)
104 #:use-module (guix build-system cargo)
105 #:use-module (guix build-system cmake)
106 #:use-module (guix build-system copy)
107 #:use-module (guix build-system gnu)
108 #:use-module (guix build-system perl)
109 #:use-module (guix build-system pyproject)
110 #:use-module (guix utils)
111 #:use-module (srfi srfi-1)
112 #:use-module (srfi srfi-26))
113
114(define-public crc32c
115 (package
116 (name "crc32c")
117 (version "1.1.2")
118 (source (origin
119 (method git-fetch)
120 (uri (git-reference
121 (url "https://github.com/google/crc32c")
122 (commit version)))
123 (file-name (git-file-name name version))
124 (sha256
125 (base32
126 "0966lyy3w5cnrs0c0fkma4hga51k54hns72l4n76944awqssap7j"))
127 (patches (search-patches "crc32c-unbundle-googletest.patch"))))
128 (build-system cmake-build-system)
129 (arguments
130 (list
131 #:configure-flags
132 #~(list "-DBUILD_SHARED_LIBS=ON"
133 "-DCRC32C_BUILD_BENCHMARKS=OFF"
134 "-DCRC32C_USE_GLOG=OFF"
135 (string-append
136 "-DCRC32C_BUILD_TESTS="
137 ;; TODO: perhaps infer #:tests?
138 (if #$(%current-target-system)
139 "OFF" "ON")))))
140 (native-inputs (list googletest-1.12))
141 (home-page "https://github.com/google/crc32c")
142 (synopsis "Cyclic redundancy check")
143 (description
144 "This package provides architecture-specific implementations of the
145CRC32C algorithm, which is specified in RFC 3720, section 12.1.")
146 (license license:bsd-3)))
147
148(define-public crcpp
149 (package
150 (name "crcpp")
151 (version "1.2.1.0")
152 (source (origin
153 (method git-fetch)
154 (uri (git-reference
155 (url "https://github.com/d-bahr/CRCpp.git")
156 (commit (string-append "release-" version))))
157 (file-name (git-file-name name version))
158 (sha256
159 (base32
160 "005hc25srr4r80md57cg9fax98c8n57ljrhxyw0chjlyq3c0d07n"))))
161 (build-system cmake-build-system)
162 (arguments
163 (list
164 #:phases
165 #~(modify-phases %standard-phases
166 (add-after 'install 'install-pkgconfig-description
167 (lambda _
168 (let ((dir (string-append #$output "/lib/pkgconfig")))
169 (mkdir-p (string-append dir))
170 (with-output-to-file (string-append dir "/CRCpp.pc")
171 (lambda _
172 (simple-format #t "\
173prefix=~a
174includedir=${prefix}/include
175
176Name: ~a
177Description: CRC (cyclic redundancy check) library for C++
178Version: ~a
179Cflags: -I${includedir}"
180 #$output #$name #$version)))))))))
181 (home-page "https://github.com/d-bahr/CRCpp")
182 (synopsis "@acronym{CRC, cyclic redundancy check} library for C++")
183 (description "CRC++ is a C++ library for calculating cyclic redundancy
184checks. It supports bit-by-bit and byte-by-byte calculation of full and
185multipart CRCs. It aims to have highly optimized algorithms that can run
186branchless for projects with a need for efficiency. Many common CRCs are
187provided out-of-the-box, such as CRC-32 (used in PKZip and Ethernet),
188CRC-XMODEM, and CRC-CCITT.")
189 (license license:bsd-3)))
190
191(define-public libblake3
192 (package
193 (name "libblake3")
194 (version "1.8.2")
195 (source
196 (origin
197 (method git-fetch)
198 (uri (git-reference
199 (url "https://github.com/BLAKE3-team/BLAKE3")
200 (commit version)))
201 (file-name (git-file-name name version))
202 (sha256
203 (base32 "1pm7285insrmpfwwal8rnp3yhvc6s2ki8b6ccmbh2qfnnl95a010"))))
204 (build-system cmake-build-system)
205 (arguments
206 (list
207 #:configure-flags
208 #~(list "-DBUILD_SHARED_LIBS=ON")
209 #:tests? #f ; XXX: there are some rust tests in the root.
210 #:phases
211 #~(modify-phases %standard-phases
212 (add-after 'unpack 'chdir
213 (lambda _
214 (chdir "c"))))))
215 (home-page "https://github.com/BLAKE3-team/BLAKE3")
216 (synopsis "Official C implementation of BLAKE3")
217 (description "This package provides a cryptographic hash function that is
218fast, secure, parallelizable, capable of incremental updates.")
219 (license (list license:asl2.0 license:cc0)))) ; dual licensed
220
221(define-public libdecaf
222 ;; The 1.0.2 release fails due to some compiler warning treated as an error
223 ;; (see: https://sourceforge.net/p/ed448goldilocks/tickets/16/). Use the
224 ;; latest commit available.
225 (let ((commit "e5cc6240690d3ffdfcbdb1e4e851954b789cd5d9")
226 (revision "0"))
227 (package
228 (name "libdecaf")
229 (version (git-version "1.0.2" revision commit))
230 (source (origin
231 (method git-fetch)
232 (uri (git-reference
233 (url "git://git.code.sf.net/p/ed448goldilocks/code")
234 (commit commit)))
235 (file-name
236 (git-file-name name version))
237 (sha256
238 (base32
239 "1gxf503cnmgsv7s0dm82rrizjhifdhdh42sfvbfsdj55syjnv1p2"))))
240 (build-system cmake-build-system)
241 (outputs '("out" "python" "doc"))
242 (arguments
243 (list #:imported-modules (append %cmake-build-system-modules
244 %pyproject-build-system-modules)
245 #:modules '((guix build cmake-build-system)
246 ((guix build pyproject-build-system) #:prefix python:)
247 (guix build utils))
248 #:configure-flags #~(list "-DENABLE_STATIC=OFF")
249 #:phases
250 #~(modify-phases %standard-phases
251 (add-after 'unpack 'patch-python-binding
252 (lambda _
253 (substitute* "python/setup.py"
254 (("gmake")
255 "make")
256 (("'\\.\\.', 'build', 'lib', 'libdecaf\\.so'")
257 "'..', '..', 'build', 'src', 'libdecaf.so'"))))
258 (add-after 'unpack 'ensure-no-mtimes-pre-1980
259 (assoc-ref python:%standard-phases 'ensure-no-mtimes-pre-1980))
260 (add-after 'install 'install-python-binding
261 (lambda* (#:key inputs outputs #:allow-other-keys)
262 (with-directory-excursion "../source/python"
263 (invoke "python" "setup.py" "install"
264 (string-append
265 "--prefix="
266 (python:site-packages inputs outputs)))))))))
267 (native-inputs (list python-minimal-wrapper python-setuptools))
268 (synopsis "Decaf Elliptic Curve Library")
269 (description "The libdecaf library is an implementation of elliptic curve
270cryptography using the Montgomery and Edwards curves Curve25519, Ed25519,
271Ed448-Goldilocks and Curve448, using the Decaf encoding.")
272 (home-page "https://ed448goldilocks.sourceforge.net/")
273 (license (list license:expat ;library
274 license:bsd-2))))) ;python bindings
275
276(define-public libsodium
277 (package
278 (name "libsodium")
279 (version "1.0.22")
280 (source
281 (origin
282 (method git-fetch)
283 (uri (git-reference
284 (url "https://github.com/jedisct1/libsodium")
285 (commit (string-append version "-RELEASE"))))
286 (file-name (git-file-name name version))
287 (sha256
288 (base32
289 "05lqdn6nzldsia5mv5a9xfvc5k0kybh9snwv7qsb135gva4bpjwk"))))
290 (build-system gnu-build-system)
291 (synopsis "Portable NaCl-based crypto library")
292 (description
293 "Sodium is a new easy-to-use high-speed software library for network
294communication, encryption, decryption, signatures, etc.")
295 (license license:isc)
296 (home-page "https://libsodium.org")))
297
298;;; Avoid switching to git-fetch, as git-minimal depends on libmd.
299;;; See guix/guix!11627.
300(define-public libmd
301 (package
302 (name "libmd")
303 (version "1.3.0")
304 (source (origin
305 (method url-fetch)
306 (uri
307 (list
308 (string-append "https://archive.hadrons.org/software/libmd/libmd-"
309 version ".tar.xz")
310 (string-append "https://libbsd.freedesktop.org/releases/libmd-"
311 version ".tar.xz")))
312 (sha256
313 (base32
314 "01k70qnr3m79p9pll9w4p9yyd44ih29lc09cdwr70r3nnsv1w3zw"))))
315 (build-system gnu-build-system)
316 (arguments
317 (list
318 #:configure-flags
319 #~(list "--disable-static")))
320 (synopsis "Message Digest functions from BSD systems")
321 (description
322 "The currently provided message digest algorithms are:
323@itemize
324@item MD2
325@item MD4
326@item MD5
327@item RIPEMD-160
328@item SHA-1
329@item SHA-2 (SHA-256, SHA-384 and SHA-512)
330@item SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE-128, SHAKE-256)
331@end itemize")
332 (license (list license:bsd-3
333 license:bsd-2
334 license:isc
335 license:public-domain))
336 (home-page "https://www.hadrons.org/software/libmd/")))
337
338(define-public signify
339 (package
340 (name "signify")
341 (version "32")
342 (home-page "https://github.com/aperezdc/signify")
343 (source (origin
344 (method url-fetch)
345 (uri (string-append "https://github.com/aperezdc/signify/releases"
346 "/download/v" version "/signify-" version ".tar.xz"))
347 (sha256
348 (base32
349 "1maq4wv7934gql95rr55pj419gnbj8jkrgn1f25jcg97v5zvklbd"))
350 (modules '((guix build utils)))
351 (snippet '(delete-file-recursively "libbsd"))))
352 (build-system gnu-build-system)
353 ;; TODO Build with libwaive (described in README.md), to implement something
354 ;; like OpenBSD's pledge().
355 (arguments
356 (list
357 #:make-flags
358 #~(list (string-append "CC=" #$(cc-for-target))
359 (string-append "PREFIX=" #$output))
360 #:phases
361 #~(modify-phases %standard-phases
362 (delete 'configure))))
363 (native-inputs
364 (list pkg-config))
365 (inputs
366 (list libbsd))
367 (synopsis "Create and verify cryptographic signatures")
368 (description "The signify utility creates and verifies cryptographic
369signatures using the elliptic curve Ed25519. This is a Linux port of the
370OpenBSD tool of the same name.")
371 ;; This package includes third-party code that was originally released under
372 ;; various non-copyleft licenses. See the source files for clarification.
373 (license (list license:bsd-3 license:expat license:isc
374 license:public-domain (license:non-copyleft
375 "file://base64.c"
376 "See base64.c in the distribution for
377 the license from IBM.")))))
378
379(define-public rust-minisign
380 (package
381 (name "rust-minisign")
382 (version "0.7.9")
383 (source
384 (origin
385 (method url-fetch)
386 (uri (crate-uri "minisign" version))
387 (file-name (string-append name "-" version ".tar.gz"))
388 (sha256
389 (base32 "1rqdmnzzak7svsgcjnrb7rrbq4gv378alcnmynfq47js863i6m16"))))
390 (build-system cargo-build-system)
391 (arguments
392 `(#:install-source? #f))
393 (inputs (cargo-inputs 'rust-minisign))
394 (home-page "https://github.com/jedisct1/rust-minisign")
395 (synopsis "Crate to sign files and verify signatures")
396 (description
397 "This package provides a crate to sign files and verify signatures.")
398 (license license:expat)))
399
400(define-public keyutils
401 (package
402 (name "keyutils")
403 (version "1.6.3")
404 (source
405 (origin
406 (method git-fetch)
407 (uri (git-reference
408 (url (string-append "https://git.kernel.org/pub/scm/linux/kernel/"
409 "git/dhowells/keyutils.git"))
410 (commit (string-append "v" version))))
411 (file-name (git-file-name name version))
412 (sha256
413 (base32 "1095g1p5038m91wf2dxnagngpvww7ilcj8fhyviid3srvxr675i7"))
414 (modules '((guix build utils)))
415 ;; Create relative symbolic links instead of absolute ones to /lib/*.
416 (snippet '(begin
417 (substitute* "Makefile" (("\\$\\(LNS\\) \\$\\(LIBDIR\\)/")
418 "$(LNS) "))))))
419 (build-system gnu-build-system)
420 (arguments
421 (list #:make-flags
422 #~(list (string-append "CC=" #$(cc-for-target))
423 ;; "NO_ARLIB=1" would cleanly disable static libraries.
424 "RPATH=-Wl,-rpath,$(DESTDIR)$(LIBDIR)"
425 (string-append "DESTDIR=" #$output)
426 "INCLUDEDIR=/include"
427 "LIBDIR=/lib"
428 "MANDIR=/share/man"
429 "SHAREDIR=/share/keyutils")
430 #:phases
431 #~(modify-phases %standard-phases
432 (delete 'configure) ; no configure script
433 (add-after 'unpack 'avoid-embedding-timestamp
434 ;; Do not embed build timestamp
435 (lambda _
436 (substitute* "Makefile"
437 (("shell date") "shell true"))))
438 (add-after 'install 'install:static
439 (lambda _
440 (with-directory-excursion #$output
441 (for-each (lambda (file)
442 (let ((target (string-append #$output:static
443 "/" file)))
444 (format #t "~a -> ~a\n" file target)
445 (mkdir-p (dirname target))
446 (rename-file file target)))
447 (find-files "lib" "\\.a$"))))))
448 #:test-target "test"))
449 (inputs
450 (list mit-krb5))
451 (home-page "https://people.redhat.com/dhowells/keyutils/")
452 (synopsis "Linux key management utilities")
453 (description
454 "Keyutils is a set of utilities for managing the key retention facility in
455the Linux kernel, which can be used by file systems, block devices, and more to
456gain and retain the authorization and encryption keys required to perform
457secure operations.")
458 (license (list license:lgpl2.1+ ; the files keyutils.*
459 license:gpl2+)))) ; the rest
460
461(define-public ssss
462 (package
463 (name "ssss")
464 (version "0.5")
465 (source (origin
466 (method url-fetch)
467 (uri (string-append "http://point-at-infinity.org/ssss/ssss-"
468 version ".tar.gz"))
469 (sha256
470 (base32
471 "15grn2fp1x8p92kxkwbmsx8rz16g93y9grl3hfqbh1jn21ama5jx"))))
472 (build-system gnu-build-system)
473 (arguments
474 `(#:tests? #f ; No test suite
475 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
476 ,(string-append "CC=" (cc-for-target)))
477 #:phases
478 (modify-phases %standard-phases
479 (delete 'configure) ; no configuration to be done
480 (replace 'install
481 (lambda* (#:key outputs #:allow-other-keys)
482 (let* ((outdir (assoc-ref outputs "out"))
483 (bindir (string-append outdir "/bin"))
484 (docdir (string-append outdir
485 "/share/doc/ssss-"
486 ,version)))
487 (install-file "ssss-combine" bindir)
488 (install-file "ssss-split" bindir)
489 (install-file "ssss.1" docdir)
490 (install-file "ssss.1.html" docdir)
491 #t))))))
492 (inputs
493 (list gmp))
494 (native-inputs
495 (list xmltoman))
496 (home-page "http://point-at-infinity.org/ssss/")
497 (synopsis "Shamir's secret sharing scheme implementation")
498 (description "@command{ssss-split} and @command{ssss-combine} are utilities that split
499and combine secrets securely using Shamir's secret sharing scheme. This implementation
500allows for a threshold scheme where the minimum number of shares can be less than the
501total number of shares generated.")
502 (license license:gpl2+)))
503
504(define-public tomb
505 (package
506 (name "tomb")
507 (version "2.13")
508 (source
509 (origin
510 (method url-fetch)
511 (uri (string-append "https://files.dyne.org/tomb/releases/"
512 "Tomb-" version ".tar.gz"))
513 (sha256
514 (base32 "1405kw0j8i1bqyqbim8530xf6hchpf57r9p1v92aknwyn5wgny0g"))))
515 (build-system gnu-build-system)
516 (arguments
517 (list
518 #:make-flags #~(list (string-append "PREFIX=" #$output))
519 ;; TODO: Build and install gtk and qt trays
520 #:phases
521 #~(modify-phases %standard-phases
522 (delete 'configure) ;no configuration to be done
523 (add-after 'install 'i18n
524 (lambda* (#:key make-flags #:allow-other-keys)
525 (apply invoke "make" "-C" "extras/translations"
526 "install" make-flags)))
527 (add-after 'install 'cloak
528 (lambda* (#:key make-flags #:allow-other-keys)
529 (apply invoke "make" "-C" "extras/cloak" "install" make-flags)
530 (copy-recursively
531 "extras/cloak/ciphers"
532 (string-append #$output "/share/tomb/extras/cloak/ciphers"))))
533 (add-after 'install 'gtomb
534 (lambda _
535 (install-file "extras/gtomb/gtomb"
536 (string-append #$output "/bin"))))
537 (add-after 'install 'wrap
538 (lambda* (#:key inputs #:allow-other-keys)
539 (wrap-program (string-append #$output "/bin/tomb")
540 `("PATH" ":" prefix
541 (,(string-append (assoc-ref inputs "mlocate") "/bin")
542 ,@(map (lambda (program)
543 (or (and=> (which program) dirname)
544 (error "program not found:" program)))
545 ;; The size of this package explodes with:
546 ;; "unoconv" "recoll"
547 '("argon2" "seq" "mkfs.ext4" "pinentry"
548 "gpg" "cryptsetup" "gettext" "lsof"
549 "qrencode" "steghide" "findmnt" "getent")))))))
550 (delete 'check)
551 (add-after 'wrap 'check
552 (lambda* (#:key tests? #:allow-other-keys)
553 (when tests?
554 ;; Running the full tests requires sudo/root access for
555 ;; cryptsetup, which is not available in the build
556 ;; environment. But we can run `tomb dig` without root, so
557 ;; make sure that works.
558 ;;
559 ;; TODO: It Would Be Nice to check the expected "index",
560 ;; "search", "bury", and "exhume" features are available by
561 ;; querying `tomb -h`.
562 (let ((tomb (string-append #$output "/bin/tomb")))
563 (invoke tomb "dig" "-s" "10" "secrets.tomb"))))))))
564 (native-inputs
565 (list which))
566 (inputs
567 (list argon2
568 bash-minimal
569 cryptsetup-minimal
570 e2fsprogs ; for mkfs.ext4
571 gettext-minimal ; used at runtime
572 gnupg
573 lsof
574 mlocate
575 pinentry
576 qrencode
577 ;; recoll ; size explodes
578 steghide
579 ;; unoconv ; size explodes
580 util-linux
581 zsh))
582 (home-page "https://dyne.org/tomb/")
583 (synopsis "File encryption for secret data")
584 (description
585 "Tomb is an application to manage the creation and access of encrypted
586storage files: it can be operated from commandline and it can integrate with a
587user's graphical desktop.")
588 (license license:gpl3+)))
589
590(define-public scrypt
591 (package
592 (name "scrypt")
593 (version "1.3.1")
594 (source
595 (origin
596 (method url-fetch)
597 (uri (string-append "https://www.tarsnap.com/scrypt/scrypt-"
598 version ".tgz"))
599 (sha256
600 (base32
601 "1hnl0r6pmyxiy4dmafmqk1db7wpc0x9rqpzqcwr9d2cmghcj6byz"))))
602 (build-system gnu-build-system)
603 (arguments
604 `(#:license-file-regexp "COPYRIGHT"
605 #:phases (modify-phases %standard-phases
606 (add-after 'unpack 'patch-$PATH-assumptions
607 (lambda _
608 (substitute* "configure"
609 (("\\{POSIX_PATH\\}")
610 "{PATH}"))
611 (substitute* "Makefile.in"
612 (("command -p") ""))
613 #t))
614 (add-after 'install 'install-docs
615 (lambda* (#:key outputs #:allow-other-keys)
616 (let* ((out (assoc-ref %outputs "out"))
617 (doc (string-append out "/share/doc/" ,name "-" ,version)))
618 (install-file "FORMAT" doc)
619 #t))))))
620 (inputs
621 (list openssl))
622 (home-page "https://www.tarsnap.com/scrypt.html")
623 (synopsis "Memory-hard encryption tool based on scrypt")
624 (description "This package provides a simple password-based encryption
625utility as a demonstration of the @code{scrypt} key derivation function.
626@code{Scrypt} is designed to be far more resistant against hardware brute-force
627attacks than alternative functions such as @code{PBKDF2} or @code{bcrypt}.")
628 (license license:bsd-2)))
629
630(define-public libscrypt
631 (package
632 (name "libscrypt")
633 (version "1.22")
634 (source
635 (origin
636 (method git-fetch)
637 (uri (git-reference
638 (url "https://github.com/technion/libscrypt")
639 (commit (string-append "v" version))))
640 (file-name (git-file-name name version))
641 (sha256
642 (base32 "10dinz1zx8zfm81ra16s20izpm7f7j414n4i3fkdf40vbl5slra1"))))
643 (build-system gnu-build-system)
644 (outputs (list "out" "static"))
645 (arguments
646 (list #:make-flags
647 #~(list (string-append "PREFIX=" #$output)
648 (string-append "CC=" #$(cc-for-target)))
649 #:phases
650 #~(modify-phases %standard-phases
651 (delete 'configure) ; no configure script
652 (add-after 'install 'install:static
653 (lambda _
654 (install-file "libscrypt.a"
655 (string-append #$output:static "/lib")))))))
656 (home-page "https://lolware.net/libscrypt.html")
657 (synopsis "Password hashing library")
658 (description "@code{libscrypt} implements @code{scrypt} key derivation
659function. It is designed to be far more secure against hardware brute-force
660attacks than alternative functions such as @code{PBKDF2} or @code{bcrypt}.")
661 (license license:bsd-3)))
662
663(define-public perl-math-random-isaac-xs
664 (package
665 (name "perl-math-random-isaac-xs")
666 (version "1.004")
667 (source
668 (origin
669 (method url-fetch)
670 (uri (string-append "mirror://cpan/authors/id/J/JA/JAWNSY/"
671 "Math-Random-ISAAC-XS-" version ".tar.gz"))
672 (sha256
673 (base32
674 "0yxqqcqvj51fn7b7j5xqhz65v74arzgainn66c6k7inijbmr1xws"))))
675 (build-system perl-build-system)
676 (native-inputs
677 (list perl-module-build perl-test-nowarnings))
678 (home-page "https://metacpan.org/release/Math-Random-ISAAC-XS")
679 (synopsis "C implementation of the ISAAC PRNG algorithm")
680 (description "ISAAC (Indirection, Shift, Accumulate, Add, and Count) is a
681fast pseudo-random number generator. It is suitable for applications where a
682significant amount of random data needs to be produced quickly, such as
683solving using the Monte Carlo method or for games. The results are uniformly
684distributed, unbiased, and unpredictable unless you know the seed.
685
686This package implements the same interface as @code{Math::Random::ISAAC}.")
687 (license license:public-domain)))
688
689(define-public perl-math-random-isaac
690 (package
691 (name "perl-math-random-isaac")
692 (version "1.004")
693 (source
694 (origin
695 (method url-fetch)
696 (uri (string-append "mirror://cpan/authors/id/J/JA/JAWNSY/"
697 "Math-Random-ISAAC-" version ".tar.gz"))
698 (sha256
699 (base32
700 "0z1b3xbb3xz71h25fg6jgsccra7migq7s0vawx2rfzi0pwpz0wr7"))))
701 (build-system perl-build-system)
702 (native-inputs
703 (list perl-test-nowarnings))
704 (propagated-inputs
705 (list perl-math-random-isaac-xs))
706 (home-page "https://metacpan.org/release/Math-Random-ISAAC")
707 (synopsis "Perl interface to the ISAAC PRNG algorithm")
708 (description "ISAAC (Indirection, Shift, Accumulate, Add, and Count) is a
709fast pseudo-random number generator. It is suitable for applications where a
710significant amount of random data needs to be produced quickly, such as
711solving using the Monte Carlo method or for games. The results are uniformly
712distributed, unbiased, and unpredictable unless you know the seed.
713
714This package provides a Perl interface to the ISAAC pseudo random number
715generator.")
716 (license license:public-domain)))
717
718(define-public perl-crypt-random-source
719 (package
720 (name "perl-crypt-random-source")
721 (version "0.14")
722 (source
723 (origin
724 (method url-fetch)
725 (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
726 "Crypt-Random-Source-" version ".tar.gz"))
727 (sha256
728 (base32 "1rpdds3sy5l1fhngnkrsgwsmwd54wpicx3i9ds69blcskwkcwkpc"))))
729 (build-system perl-build-system)
730 (native-inputs
731 (list perl-module-build-tiny perl-test-fatal))
732 (propagated-inputs
733 (list perl-capture-tiny
734 perl-module-find
735 perl-module-runtime
736 perl-moo
737 perl-namespace-clean
738 perl-sub-exporter
739 perl-type-tiny))
740 (home-page "https://metacpan.org/release/Crypt-Random-Source")
741 (synopsis "Get weak or strong random data from pluggable sources")
742 (description "This module provides implementations for a number of
743byte-oriented sources of random data.")
744 (license license:perl-license)))
745
746(define-public perl-math-random-secure
747 (package
748 (name "perl-math-random-secure")
749 (version "0.080001")
750 (source
751 (origin
752 (method url-fetch)
753 (uri (string-append "mirror://cpan/authors/id/F/FR/FREW/"
754 "Math-Random-Secure-" version ".tar.gz"))
755 (sha256
756 (base32
757 "0dgbf4ncll4kmgkyb9fsaxn0vf2smc9dmwqzgh3259zc2zla995z"))))
758 (build-system perl-build-system)
759 (native-inputs
760 (list perl-list-moreutils perl-test-leaktrace perl-test-sharedfork
761 perl-test-warn))
762 (inputs
763 (list perl-crypt-random-source perl-math-random-isaac
764 perl-math-random-isaac-xs perl-moo))
765 (home-page "https://metacpan.org/release/Math-Random-Secure")
766 (synopsis "Cryptographically secure replacement for rand()")
767 (description "This module is intended to provide a
768cryptographically-secure replacement for Perl's built-in @code{rand} function.
769\"Cryptographically secure\", in this case, means:
770
771@enumerate
772@item No matter how many numbers you see generated by the random number
773generator, you cannot guess the future numbers, and you cannot guess the seed.
774@item There are so many possible seeds that it would take decades, centuries,
775or millennia for an attacker to try them all.
776@item The seed comes from a source that generates relatively strong random
777data on your platform, so the seed itself will be as random as possible.
778@end enumerate\n")
779 (license license:artistic2.0)))
780
781(define-public qatlib
782 (package
783 (name "qatlib")
784 (version "26.02.0")
785 (source (origin
786 (method git-fetch)
787 (uri (git-reference
788 (url "https://github.com/intel/qatlib/")
789 (commit version)))
790 (file-name (git-file-name name version))
791 (sha256
792 (base32
793 "1ly4wjw7mpvgn0270z3242bng7ailvx99mhisymf4qdhq0cvz8n2"))))
794 (build-system gnu-build-system)
795 (arguments
796 (list #:configure-flags #~(list "--disable-static"))) ;avoid large .a
797 (native-inputs (list autoconf autoconf-archive automake libtool nasm))
798 (inputs (list numactl openssl zlib))
799 (propagated-inputs (list openssl)) ;in 'Requires' of libqat.pc
800 (home-page "https://github.com/intel/qatlib")
801 (synopsis "Intel QuickAssist Technology Library (QATlib)")
802 (description "Intel QuickAssist Technology provides hardware acceleration for
803offloading security, authentication and compression services from the CPU,
804thus significantly increasing the performance and efficiency of standard
805platform solutions. Its services include symmetric encryption and
806authentication, asymmetric encryption, digital signatures, RSA, DH and ECC,
807and lossless data compression. This package provides user space libraries
808that allow access to Intel QuickAssist devices and expose the Intel
809QuickAssist APIs and sample codes.")
810 (license license:bsd-3)
811 ;; This package only supports hardware that exists on the x86_64 platform,
812 ;; and is not portable.
813 (supported-systems (list "x86_64-linux"))))
814
815(define-public crypto++
816 (package
817 (name "crypto++")
818 (version "8.9.0")
819 (source (origin
820 (method git-fetch)
821 (uri
822 (git-reference
823 (url "https://github.com/weidai11/cryptopp")
824 (commit
825 (string-append "CRYPTOPP_"
826 (string-replace-substring version "." "_")))))
827 (file-name (git-file-name name version))
828 (sha256
829 (base32
830 "153jl84s26nw85vw7hlc84plpja7adq6q2cdydr7g2b445yrlpqx"))))
831 (build-system gnu-build-system)
832 (arguments
833 (list #:make-flags
834 #~(list (string-append "PREFIX=" #$output)
835 (string-append "CC=" #$(cc-for-target))
836 (string-append "CXX=" #$(cxx-for-target))
837 (string-append "AR=" #$(ar-for-target))
838 ;; Override "/sbin/ldconfig" with simply "echo" since
839 ;; we don't need ldconfig(8).
840 "LDCONF=echo")
841 #:phases
842 #~(modify-phases %standard-phases
843 (delete 'configure)
844 (replace 'build
845 ;; By default, only the static library is built.
846 (lambda* (#:key make-flags parallel-build?
847 #:allow-other-keys)
848 (let* ((job-count (if parallel-build?
849 (number->string (parallel-job-count))
850 1))
851 (jobs (string-append "-j" job-count))
852 (target #$(if (target-mingw?)
853 "static"
854 "shared")))
855 (apply invoke "make" target jobs make-flags)
856 (apply invoke "make" "libcryptopp.pc" jobs
857 make-flags)))))))
858 (properties '((tunable? . #t)))
859 (native-inputs
860 (list unzip))
861 (home-page "https://cryptopp.com/")
862 (synopsis "C++ class library of cryptographic schemes")
863 (description "Crypto++ is a C++ class library of cryptographic schemes.")
864 ;; The compilation is distributed under the Boost license; the individual
865 ;; files in the compilation are in the public domain.
866 (license (list license:boost1.0 license:public-domain))))
867
868(define-public libb2
869 (package
870 (name "libb2")
871 (version "0.98.1")
872 (source (origin
873 (method url-fetch)
874 (uri (string-append
875 "https://github.com/BLAKE2/libb2/releases/download/v"
876 version "/libb2-" version ".tar.gz"))
877 (sha256
878 (base32
879 "0bn7yrzdixdvzm46shbhpkqbr6zyqyxiqn7a7x54ag3mrvfnyqjk"))))
880 (build-system gnu-build-system)
881 (arguments
882 `(#:configure-flags
883 (list
884 ,@(if (target-x86?)
885 ;; fat only checks for Intel optimisations
886 '("--enable-fat")
887 '())
888 "--disable-native"))) ;don't optimise at build time
889 (home-page "https://blake2.net/")
890 (synopsis "Library implementing the BLAKE2 family of hash functions")
891 (description
892 "libb2 is a portable implementation of the BLAKE2 family of cryptographic
893hash functions. It includes optimised implementations for IA-32 and AMD64
894processors, and an interface layer that automatically selects the best
895implementation for the processor it is run on.
896
897@dfn{BLAKE2} (RFC 7693) is a family of high-speed cryptographic hash functions
898that are faster than MD5, SHA-1, SHA-2, and SHA-3, yet are at least as secure
899as the latest standard, SHA-3. It is an improved version of the SHA-3 finalist
900BLAKE.")
901 (license license:public-domain)))
902
903(define-public b2sum
904 ;; Upstream doesn't seem to use a versioned release workflow, so build from
905 ;; a recent commit.
906 (let ((commit "54f4faa4c16ea34bcd59d16e8da46a64b259fc07")
907 (revision "0"))
908 (package
909 (name "b2sum")
910 (version (git-version "20190724" revision commit))
911 (source (origin
912 (method git-fetch)
913 (uri (git-reference
914 (url "https://github.com/BLAKE2/BLAKE2")
915 (commit commit)))
916 (file-name (git-file-name name version))
917 (sha256
918 (base32 "04z631v0vzl52g73v390ask5fnzi5wg83lcjkjhpmmymaz0jn152"))))
919 ;; "This code requires at least SSE2".
920 (supported-systems '("x86_64-linux"))
921 (build-system gnu-build-system)
922 (arguments
923 `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
924 (string-append "PREFIX=" (assoc-ref %outputs "out")))
925 #:tests? #f ; No test suite
926 #:phases
927 (modify-phases %standard-phases
928 (add-before 'build 'change-directory
929 (lambda _
930 (chdir "b2sum")))
931 ;; Produce generic binaries
932 (add-after 'change-directory 'de-tune
933 (lambda _
934 (substitute* "makefile"
935 ((" -march=native") ""))))
936 (delete 'configure)))) ; No ./configure script
937 (home-page "https://www.blake2.net/")
938 (synopsis "BLAKE2 checksum tool")
939 (description "BLAKE2 is a cryptographic hash function faster than MD5,
940SHA-1, SHA-2, and SHA-3, yet is at least as secure as SHA-3.")
941 ;; You may also choose to redistribute this program as Apache 2.0 or the
942 ;; OpenSSL license. See 'b2sum/b2sum.c' in the source distribution.
943 (license license:cc0)
944 ;; There is a significant speedup when the compiler generates
945 ;; instructions tuned to the CPU of the running machine:
946 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=51198#22
947 (properties '((tunable? . #true))))))
948
949(define-public rhash
950 (package
951 (name "rhash")
952 (version "1.4.6")
953 (source
954 (origin
955 (method url-fetch)
956 (uri (string-append "mirror://sourceforge/rhash/rhash/" version
957 "/rhash-" version "-src.tar.gz"))
958 (file-name (string-append "rhash-" version ".tar.gz"))
959 (sha256
960 (base32
961 "0ylkxhkj4nzmb0iampn2lv7v4yw59x7dl8mdcxqcx2mfxv7ijq4z"))))
962 (build-system gnu-build-system)
963 (arguments
964 (list #:configure-flags
965 #~(list (string-append "--prefix=" #$output)
966 #$@(let ((target (%current-target-system)))
967 (if target
968 #~((string-append "--target=" #$target)
969 (string-append "--cc="
970 (assoc-ref %build-inputs "cross-gcc")
971 "/bin/" #$target "-gcc"))
972 #~())))
973 #:make-flags
974 ;; The binaries in /bin need some help finding librhash.so.0.
975 #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
976 #:test-target "test" ; ‘make check’ just checks the sources
977 #:phases
978 #~(modify-phases %standard-phases
979 (delete 'configure)
980 (add-before 'build 'configure
981 ;; ./configure is not GNU autotools' and doesn't gracefully handle
982 ;; unrecognized options, so we must call it manually.
983 (lambda* (#:key configure-flags #:allow-other-keys)
984 (apply invoke "./configure" configure-flags)))
985 (add-before 'check 'patch-/bin/sh
986 (lambda _
987 (substitute* "Makefile"
988 (("/bin/sh") (which "sh")))))
989 (add-after 'install 'install-library-extras
990 (lambda* (#:key make-flags #:allow-other-keys)
991 (apply invoke
992 "make" "-C" "librhash"
993 "install-lib-headers" "install-so-link"
994 make-flags))))))
995 (home-page "https://sourceforge.net/projects/rhash/")
996 (synopsis "Utility for computing hash sums")
997 (description "RHash is a console utility for calculation and verification
998of magnet links and a wide range of hash sums like CRC32, MD4, MD5, SHA1,
999SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
100034.11-94, RIPEMD-160, HAS-160, EDON-R, Whirlpool and Snefru.")
1001 (license (license:non-copyleft "file://COPYING"))))
1002
1003(define-public botan
1004 (package
1005 (name "botan")
1006 (version "3.9.0")
1007 (source (origin
1008 (method git-fetch)
1009 (uri (git-reference
1010 (url "https://github.com/randombit/botan/")
1011 (commit version)))
1012 (file-name (git-file-name name version))
1013 (sha256
1014 (base32
1015 "1k5dyn39b77bfawly2yms0crbkn6g7msh16q7bxnh7dra4cnkmsn"))))
1016 (build-system gnu-build-system)
1017 (arguments
1018 (list
1019 #:phases
1020 #~(modify-phases %standard-phases
1021 (replace 'configure
1022 (lambda* (#:key inputs outputs #:allow-other-keys)
1023 ;; Upstream tests and benchmarks with -O3.
1024 (setenv "CXXFLAGS" "-O3")
1025 (invoke "python" "./configure.py"
1026 (string-append "--prefix=" #$output)
1027 "--disable-static"
1028
1029 ;; Otherwise, the `botan` executable cannot find
1030 ;; libbotan.
1031 (string-append "--ldflags=-Wl,-rpath=" #$output "/lib")
1032
1033 "--with-os-feature=getentropy"
1034 "--with-rst2man"
1035
1036 ;; Recommended by upstream
1037 "--with-zlib" "--with-bzip2" "--with-sqlite3")))
1038 (add-before 'check 'library-path-for-tests
1039 (lambda _ (setenv "LD_LIBRARY_PATH" (getcwd))))
1040 (replace 'check
1041 (lambda* (#:key tests? #:allow-other-keys)
1042 (when tests?
1043 (invoke "./botan-test")))))))
1044 (native-inputs (list python-wrapper python-docutils))
1045 (inputs (list sqlite bzip2 zlib))
1046 (synopsis "Cryptographic library in C++11")
1047 (description "Botan is a cryptography library, written in C++11, offering
1048the tools necessary to implement a range of practical systems, such as TLS/DTLS,
1049PKIX certificate handling, PKCS#11 and TPM hardware support, password hashing,
1050and post-quantum crypto schemes. In addition to the C++, botan has a C89 API
1051specifically designed to be easy to call from other languages. A Python binding
1052using ctypes is included, and several other language bindings are available.")
1053 (home-page "https://botan.randombit.net")
1054 (license license:bsd-2)))
1055
1056;; Needed explicitly by biboumi
1057(define-public botan-2
1058 (hidden-package
1059 (package
1060 (inherit botan)
1061 (name "botan")
1062 (version "2.19.3")
1063 (source
1064 (origin
1065 (method git-fetch)
1066 (uri (git-reference
1067 (url "https://github.com/randombit/botan/")
1068 (commit version)))
1069 (file-name (git-file-name name version))
1070 (sha256
1071 (base32
1072 "16dsrxb7z245hvbjzapq7qf65ip1fh2390qap30hpfd383dyvilw")))))))
1073
1074(define-public ccrypt
1075 (package
1076 (name "ccrypt")
1077 (version "1.11")
1078 (source (origin
1079 (method url-fetch)
1080 (uri (string-append "mirror://sourceforge/ccrypt/"
1081 version "/ccrypt-" version ".tar.gz"))
1082 (sha256
1083 (base32
1084 "0kx4a5mhmp73ljknl2lcccmw9z3f5y8lqw0ghaymzvln1984g75i"))))
1085 (build-system gnu-build-system)
1086 (home-page "https://ccrypt.sourceforge.net")
1087 (synopsis "Command-line utility for encrypting and decrypting files and streams")
1088 (description "@command{ccrypt} is a utility for encrypting and decrypting
1089files and streams. It was designed as a replacement for the standard unix
1090@command{crypt} utility, which is notorious for using a very weak encryption
1091algorithm. @command{ccrypt} is based on the Rijndael block cipher, a version of
1092which is also used in the Advanced Encryption Standard (AES, see
1093@url{http://www.nist.gov/aes}). This cipher is believed to provide very strong
1094security.")
1095 (license license:gpl2)))
1096
1097(define-public asignify
1098 (let ((commit "d6b3651fa96f05aeefc318f75503fc9ca77b1f58")
1099 (revision "2"))
1100 (package
1101 (name "asignify")
1102 (version (git-version "1.1" revision commit))
1103 (source (origin
1104 (method git-fetch)
1105 (uri (git-reference
1106 (url "https://github.com/vstakhov/asignify")
1107 (commit commit)))
1108 (file-name (git-file-name name version))
1109 (sha256
1110 (base32
1111 "0a6k21gb2n45bj1d2qy34lgi4qsd3ck59jxcycbxafs0wdglsyl9"))))
1112 (build-system gnu-build-system)
1113 (arguments
1114 (list
1115 #:configure-flags
1116 #~(list "--enable-openssl"
1117 (string-append "--with-openssl="
1118 #$(this-package-input "openssl")))))
1119 (native-inputs
1120 (list autoconf automake libtool))
1121 (inputs
1122 (list openssl))
1123 (home-page "https://github.com/vstakhov/asignify")
1124 (synopsis
1125 "Cryptographic authentication and encryption tool and library")
1126 (description "Asignify offers public cryptographic signatures and
1127encryption with a library or a command-line tool. The tool is heavily
1128inspired by signify as used in OpenBSD. The main goal of this project is to
1129define a high level API for signing files, validating signatures and
1130encrypting using public-key cryptography. Asignify is designed to be portable
1131and self-contained with zero external dependencies. Asignify can verify
1132OpenBSD signatures, but it cannot sign messages in OpenBSD format yet.")
1133 (license license:bsd-2))))
1134
1135(define-public embedded-json-signature
1136 ;; No releases, use latest commit.
1137 (let ((commit "2a571b0cbe8f8bdeacb02361fcf8be7c687f7778")
1138 (revision "0"))
1139 (package
1140 (name "embedded-json-signature")
1141 ;; For version, see top of EmbeddedJSONSignature.h.
1142 (version (git-version "1.0" revision commit))
1143 (source
1144 (origin
1145 (method git-fetch)
1146 (uri (git-reference
1147 (url "https://github.com/past-due/EmbeddedJSONSignature")
1148 (commit commit)))
1149 (file-name (git-file-name name version))
1150 (sha256
1151 (base32
1152 "1ixwymz6sngf378djh0yw5dg8v6iwcqyw68clnvnij8bl6a876f8"))))
1153 (build-system cmake-build-system)
1154 (arguments
1155 (list
1156 #:tests? #f ;no tests
1157 #:phases
1158 #~(modify-phases %standard-phases
1159 (add-after 'unpack 'do-shared
1160 (lambda _
1161 (substitute* "CMakeLists.txt" (("STATIC") "SHARED"))))
1162 (replace 'install ;no install phase
1163 (lambda _
1164 (let ((inc (in-vicinity #$output "include"))
1165 (lib (in-vicinity #$output "lib")))
1166 (install-file "../source/include/EmbeddedJSONSignature.h" inc)
1167 (install-file "libEmbeddedJSONSignature.so" lib)))))))
1168 (inputs (list libsodium))
1169 (home-page "https://github.com/past-due/EmbeddedJSONSignature")
1170 (synopsis "Simple embedded JSON signature algorithm for C++11 or later")
1171 (description "This package provides an @code{EmbeddedJSONSignature} C++
1172class for signing and verifying the integrity of JSON objects using
1173@code{libsodium}’s public-key signature system. Signatures are embedded into
1174the JSON object itself as a key/value pair, while verification methods allow
1175easy extraction of the unmodified object.")
1176 (license license:expat))))
1177
1178(define-public enchive
1179 (package
1180 (name "enchive")
1181 (version "3.5")
1182 (source (origin
1183 (method git-fetch)
1184 (uri (git-reference
1185 (url "https://github.com/skeeto/enchive")
1186 (commit version)))
1187 (sha256
1188 (base32
1189 "0fdrfc5l42lj2bvmv9dmkmhmm7qiszwk7cmdvnqad3fs7652g0qa"))
1190 (file-name (git-file-name name version))))
1191 (build-system gnu-build-system)
1192 (arguments
1193 (list
1194 #:tests? #f ;no check target '
1195 #:make-flags
1196 #~(list (string-append "CC=" #$(cc-for-target))
1197 (string-append "PREFIX=" #$output))
1198 #:phases
1199 #~(modify-phases %standard-phases
1200 (delete 'configure)
1201 (add-after 'install 'post-install
1202 (lambda _
1203 (install-file
1204 "enchive-mode.el"
1205 (string-append #$output "/share/emacs/site-lisp")))))))
1206 (synopsis "Encrypted personal archives")
1207 (description
1208 "Enchive is a tool to encrypt files to yourself for long-term
1209archival. It's a focused, simple alternative to more complex solutions such as
1210GnuPG or encrypted filesystems. Enchive has no external dependencies and is
1211trivial to build for local use. Portability is emphasized over performance.")
1212 (home-page "https://github.com/skeeto/enchive")
1213 (license license:unlicense)))
1214
1215(define-public libsecp256k1
1216 (package
1217 (name "libsecp256k1")
1218 (version "0.8.0")
1219 (source (origin
1220 (method git-fetch)
1221 (uri (git-reference
1222 (url "https://github.com/bitcoin-core/secp256k1")
1223 (commit (string-append "v" version))))
1224 (file-name (git-file-name name version))
1225 (sha256
1226 (base32
1227 "0n3sflwzrb0yjf4fsip4qm3yq5pg2qj88hakam7vd98r1fqk13zg"))))
1228 (build-system gnu-build-system)
1229 (arguments
1230 (list #:configure-flags
1231 #~(list
1232 "--enable-module-recovery"
1233 "--enable-experimental"
1234 "--enable-shared"
1235 "--disable-static"
1236 "--disable-benchmark")
1237 #:phases
1238 (if (%current-target-system)
1239 #~%standard-phases
1240 #~(modify-phases %standard-phases
1241 ;; These files are pre-generated, the build system is able to
1242 ;; re-generate those if not cross-compiling,
1243 (add-after 'unpack 'delete-precomputed-files
1244 (lambda _
1245 (for-each delete-file '("src/precomputed_ecmult.c"
1246 "src/precomputed_ecmult_gen.c"))))))))
1247 (native-inputs
1248 (list autoconf automake libtool))
1249 (synopsis "C library for EC operations on curve secp256k1")
1250 (description
1251 "Optimized C library for EC operations on curve secp256k1.
1252
1253Features:
1254
1255@itemize
1256@item secp256k1 ECDSA signing/verification and key generation.
1257@item Additive and multiplicative tweaking of secret/public keys.
1258@item Serialization/parsing of private keys, public keys, signatures.
1259@item Constant time, constant memory access signing and public key generation.
1260@item Derandomized ECDSA (via RFC6979 or with a caller provided function.)
1261@item Very efficient implementation.
1262@item Suitable for embedded systems.
1263@item No runtime dependencies.
1264@item Optional module for public key recovery.
1265@item Optional module for ECDH key exchange.
1266@item Optional module for Schnorr signatures according to BIP-340.
1267@end itemize\n")
1268 (home-page "https://github.com/bitcoin-core/secp256k1")
1269 (license license:expat)))
1270
1271(define-public libsecp256k1-bitcoin-cash
1272 (package
1273 (name "libsecp256k1-bitcoin-cash")
1274 (version "0.27.1")
1275 (source
1276 (origin
1277 (method git-fetch)
1278 (uri (git-reference
1279 (url "https://github.com/Bitcoin-ABC/secp256k1")
1280 (commit (string-append "v" version))))
1281 (file-name (git-file-name name version))
1282 (sha256
1283 (base32 "00g7zdwdk6ij1wv2l3wf389njq3svg0zz09i1kq77sk7p9larnfs"))))
1284 (build-system gnu-build-system)
1285 (native-inputs
1286 (list autoconf automake libtool))
1287 (arguments
1288 '(#:configure-flags '("--enable-module-recovery"
1289 "--enable-experimental"
1290 "--enable-module-ecdh"
1291 "--disable-jni"
1292 "--with-bignum=no"
1293 "--enable-module-schnorr"
1294 "--disable-static"
1295 "--enable-shared")))
1296 (synopsis "Optimized C library for EC operations on curve secp256k1")
1297 (description
1298 "Optimized C library for cryptographic operations on curve secp256k1.
1299
1300This library is used for consensus critical cryptographic operations on the
1301Bitcoin Cash network.
1302
1303Features:
1304
1305@itemize
1306@item secp256k1 ECDSA signing/verification and key generation.
1307@item secp256k1 Schnorr signing/verification (Bitcoin Cash Schnorr variant).
1308@item Additive and multiplicative tweaking of secret/public keys.
1309@item Serialization/parsing of secret keys, public keys, signatures.
1310@item Constant time, constant memory access signing and pubkey generation.
1311@item Derandomized ECDSA (via RFC6979 or with a caller provided function).
1312@item Very efficient implementation.
1313@item Suitable for embedded systems.
1314@item Optional module for public key recovery.
1315@item Optional module for ECDH key exchange (experimental).
1316@item Optional module for multiset hash (experimental).
1317@end itemize\n")
1318 (home-page "https://github.com/Bitcoin-ABC/secp256k1")
1319 (license license:expat)))
1320
1321(define-public stoken
1322 (package
1323 (name "stoken")
1324 (version "0.92")
1325 (source (origin
1326 (method url-fetch)
1327 (uri (string-append "mirror://sourceforge/stoken/"
1328 "stoken-" version ".tar.gz"))
1329 (sha256
1330 (base32
1331 "0npgr6y85gzwksy8jkwa4yzvqwjprwnplx3yiw3ayk4f0ldlhaxa"))))
1332 (build-system gnu-build-system)
1333 (native-inputs
1334 (list pkg-config))
1335 (inputs
1336 (list nettle libxml2))
1337 (home-page "https://stoken.sf.net")
1338 (synopsis "Software Token for cryptographic authentication")
1339 (description
1340 "@code{stoken} is a token code generator compatible with RSA SecurID
1341128-bit (AES) tokens. This package contains a standalone command-line program
1342that allows for importing token seeds, generating token codes, and various
1343utility/testing functions.")
1344 (license license:lgpl2.1+)))
1345
1346(define-public hpenc
1347 (package
1348 (name "hpenc")
1349 (version "3.0")
1350 (source (origin
1351 (method git-fetch)
1352 (uri (git-reference
1353 (url "https://github.com/vstakhov/hpenc")
1354 (commit version)))
1355 (file-name (git-file-name name version))
1356 (sha256
1357 (base32
1358 "1fb5yi3d2k8kd4zm7liiqagpz610y168xrr1cvn7cbq314jm2my1"))))
1359 (build-system gnu-build-system)
1360 (arguments
1361 (list
1362 #:tests? #f ; No test suite
1363 #:make-flags
1364 #~(list (string-append "PREFIX=" #$output)
1365 ;; Build the program and the docs.
1366 "SUBDIRS=src doc")
1367 #:phases
1368 #~(modify-phases %standard-phases
1369 (delete 'configure) ; No ./configure script
1370 (add-after 'unpack 'patch-path
1371 (lambda _
1372 (substitute* '("src/Makefile" "doc/Makefile")
1373 (("/usr/bin/install")
1374 "install"))))
1375 (add-before 'install 'make-output-directories
1376 (lambda _
1377 (mkdir-p (string-append #$output "/bin"))
1378 (mkdir-p (string-append #$output "/share/man/man1")))))))
1379 (inputs
1380 (list libsodium openssl))
1381 (synopsis "High-performance command-line tool for stream encryption")
1382 (description "Hpenc is a command-line tool for performing authenticated
1383encryption (AES-GCM and ChaCha20-Poly1305) of streaming data. It does not
1384perform an asymmetric key exchange, instead requiring the user to distribute
1385pre-shared keys out of band. It is designed to handle large amounts of data
1386quickly by using all your CPU cores and hardware acceleration.")
1387 (home-page "https://github.com/vstakhov/hpenc")
1388 (license license:bsd-3)))
1389
1390(define-public minisign
1391 (package
1392 (name "minisign")
1393 (version "0.12")
1394 (source
1395 (origin
1396 (method git-fetch)
1397 (uri (git-reference
1398 (url "https://github.com/jedisct1/minisign")
1399 (commit version)))
1400 (file-name (git-file-name name version))
1401 (sha256
1402 (base32 "1b7iagx8jdyhvni24qhq13qydsinbh42gvb9dgn8d9vx3f33645a"))))
1403 (build-system cmake-build-system)
1404 (arguments
1405 `(#:tests? #f)) ; no test suite
1406 (native-inputs
1407 (list pkg-config))
1408 (inputs
1409 (list libsodium))
1410 (home-page "https://jedisct1.github.io/minisign")
1411 (synopsis "Tool to sign files and verify signatures")
1412 (description
1413 "Minisign is a dead simple tool to sign files and verify signatures. It is
1414portable, lightweight, and uses the highly secure Ed25519 public-key signature
1415system. Signature written by minisign can be verified using OpenBSD's
1416signify tool: public key files and signature files are compatible. However,
1417minisign uses a slightly different format to store secret keys. Minisign
1418signatures include trusted comments in addition to untrusted comments.
1419Trusted comments are signed, thus verified, before being displayed.")
1420 (license license:isc)))
1421
1422(define-public monocypher
1423 (package
1424 (name "monocypher")
1425 (version "4.0.3")
1426 (source
1427 (origin
1428 (method git-fetch)
1429 (uri (git-reference
1430 (url "https://github.com/LoupVaillant/Monocypher")
1431 (commit version)))
1432 (file-name (git-file-name name version))
1433 (sha256
1434 (base32 "08wk5l2r5k7akxx2s525f72pwqkv0pcf69dd60zwyggylz34lw65"))))
1435 (build-system gnu-build-system)
1436 (arguments
1437 (list
1438 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
1439 (string-append "PREFIX=" #$output))
1440 #:phases
1441 #~(modify-phases %standard-phases
1442 (delete 'configure)
1443 (add-before 'check 'build-tests
1444 (lambda* (#:key tests? make-flags #:allow-other-keys)
1445 (when tests?
1446 (with-directory-excursion "tests/gen"
1447 (apply invoke "make" make-flags)))))
1448 (add-after 'install 'delete-static-archive
1449 ;; Don't want, but Makefile can't be told to only build shared.
1450 (lambda _
1451 (delete-file (in-vicinity #$output "lib/libmonocypher.a")))))))
1452 (native-inputs
1453 (list libsodium ;tests only
1454 mandoc
1455 pkg-config
1456 python-cryptography ;python is test only
1457 python-minimal))
1458 (home-page "https://monocypher.org/")
1459 (synopsis "Easy to use crypto library")
1460 (description "Monocypher is an easy to use, easy to deploy, auditable crypto
1461library for C. Features include:
1462@itemize
1463@item Authenticated encryption with XChaCha20 and Poly1305 (RFC 8439)
1464@item Hashing and key derivation with BLAKE2b (and SHA-512)
1465@item Password Hashing with Argon2
1466@item Public Key Cryptography with X25519 key exchanges
1467@item Public Key Signatures with EdDSA and Ed25519
1468@end itemize")
1469 (license (list license:bsd-2 license:cc0)))) ;dual licensed
1470
1471(define-public olm
1472 (package
1473 (name "olm")
1474 (version "3.2.16")
1475 (source (origin
1476 (method git-fetch)
1477 (uri (git-reference
1478 (url "https://gitlab.matrix.org/matrix-org/olm")
1479 (commit version)))
1480 (sha256
1481 (base32
1482 "19yibssxn12q6ddl15nvqzvcf1hwqial48ng6llfafwbkfdb8z95"))
1483 (file-name (git-file-name name version))
1484 ;; Delete the bundled blob. It's free, but unauditable,
1485 ;; and apparently only required for android.
1486 (snippet '(delete-file
1487 "android/gradle/wrapper/gradle-wrapper.jar"))))
1488 (build-system cmake-build-system)
1489 (arguments
1490 (list
1491 #:phases
1492 #~(modify-phases %standard-phases
1493 (replace 'check
1494 (lambda* (#:key tests? #:allow-other-keys)
1495 (when tests?
1496 (with-directory-excursion "tests"
1497 (invoke "ctest" "."))))))))
1498 (synopsis "Implementation of the Olm and Megolm cryptographic ratchets")
1499 (description "The Olm library implements the Double Ratchet
1500cryptographic ratchet. It is written in C and C++11, and exposed as a C
1501API.")
1502 (home-page "https://gitlab.matrix.org/matrix-org/olm/")
1503 (license license:asl2.0)))
1504
1505;; TODO: This is the only Python package here, consider to build from source
1506;; directly without inheritance and move to python-crypto module.
1507(define-public python-olm
1508 (package
1509 ;; python-olm is part of olm and must be updated at the same time.
1510 (inherit olm)
1511 (name "python-olm")
1512 (build-system pyproject-build-system)
1513 (arguments
1514 (list
1515 #:phases
1516 #~(modify-phases %standard-phases
1517 (add-after 'unpack 'chdir
1518 (lambda _
1519 (chdir "python")))
1520 (add-before 'build 'set-preprocessor
1521 (lambda _
1522 (setenv "CPP" "gcc -E"))))))
1523 (inputs (list olm))
1524 (propagated-inputs
1525 (list python-cffi python-future))
1526 (native-inputs
1527 (list python-aspectlib
1528 python-pytest
1529 python-pytest-benchmark
1530 python-setuptools))
1531 (synopsis "Python bindings for Olm")
1532 (description "The Olm library implements the Double Ratchet
1533cryptographic ratchet. This package contains its Python bindings.")))
1534
1535(define-public hash-extender
1536 (let ((commit "f00b1a02eca02b0907e26726f7efe437bc396aa4")
1537 (revision "0"))
1538 (package
1539 (name "hash-extender")
1540 (version (git-version "0.02" revision commit)) ;from hash_extender.c
1541 (source (origin
1542 (method git-fetch)
1543 (uri (git-reference
1544 (url "https://github.com/iagox86/hash_extender")
1545 (commit commit)))
1546 (sha256
1547 (base32
1548 "12hh2vs8ppavjj47rgyp60cdw70lm2zqdpdv1zdgb3jgdzkg7bf2"))
1549 (file-name (git-file-name name version))))
1550 (build-system gnu-build-system)
1551 (arguments
1552 (list
1553 #:phases
1554 #~(modify-phases %standard-phases
1555 (delete 'configure)
1556 ;; See: https://github.com/iagox86/hash_extender/issues/29
1557 (delete 'check)
1558 (replace 'install
1559 (lambda _
1560 (install-file "hash_extender" (string-append #$output "/bin"))
1561 (install-file
1562 "README.md"
1563 (string-append
1564 #$output "/share/doc/hash-extender-" #$version)))))))
1565 (inputs
1566 (list openssl))
1567 (synopsis "Tool for hash length extension attacks")
1568 (description "@command{hash_extender} is a utility for performing hash
1569length extension attacks supporting MD4, MD5, RIPEMD-160, SHA-0, SHA-1,
1570SHA-256, SHA-512, and WHIRLPOOL hashes.")
1571 (home-page "https://github.com/iagox86/hash_extender")
1572 (license license:bsd-3))))
1573
1574(define-public mkp224o
1575 (package
1576 (name "mkp224o")
1577 (version "1.7.0")
1578 (source (origin
1579 (method git-fetch)
1580 (uri (git-reference
1581 (url "https://github.com/cathugger/mkp224o")
1582 (commit (string-append "v" version))))
1583 (sha256
1584 (base32
1585 "1d0mrp936if1zi8ss0mmywglsmrl0jx42x2sgnm56js8ij3g3g9q"))
1586 (file-name (git-file-name name version))))
1587 (build-system gnu-build-system)
1588 (arguments
1589 (list
1590 #:tests? #f ; no test suite
1591 #:phases
1592 #~(modify-phases %standard-phases
1593 (add-before 'configure 'set-cflags
1594 (lambda _
1595 (setenv "CFLAGS" "-O3")))
1596 (replace 'install
1597 (lambda _
1598 (install-file "mkp224o" (string-append #$output "/bin")))))))
1599 (native-inputs
1600 (list autoconf))
1601 (inputs
1602 (list libsodium))
1603 (synopsis "Tor hidden service v3 name generator")
1604 (description "@code{mkp224o} generates valid ed25519 (hidden service
1605version 3) onion addresses. It allows one to produce customized vanity .onion
1606addresses using a brute-force method.")
1607 (home-page "https://github.com/cathugger/mkp224o")
1608 (license license:cc0)))
1609
1610(define-public transcrypt
1611 (package
1612 (name "transcrypt")
1613 (version "2.3.1")
1614 (source
1615 (origin
1616 (method git-fetch)
1617 (uri (git-reference
1618 (url "https://github.com/elasticdog/transcrypt")
1619 (commit (string-append "v" version))))
1620 (sha256
1621 (base32 "1yp1s69wphhsaks46rfj2ann8z397jgvbbq22ikdwxcw96f49pmk"))
1622 (file-name (git-file-name name version))))
1623 (inputs
1624 (list git openssl))
1625 (build-system copy-build-system)
1626 (arguments
1627 (list
1628 #:install-plan
1629 #~'(("transcrypt" "bin/transcrypt")
1630 ("man/transcrypt.1" "share/man/man1/transcrypt.1")
1631 ("contrib/bash/transcrypt"
1632 "share/bash-completion/completions/transcrypt")
1633 ("contrib/zsh/_transcrypt"
1634 "share/zsh/site-functions/_transcrypt"))))
1635 (home-page "https://github.com/elasticdog/transcrypt")
1636 (synopsis "Transparently encrypt files within a git repository")
1637 (description
1638 "Transcrypt is a script to configure transparent encryption of sensitive
1639files stored in a Git repository. Files that you choose will be automatically
1640encrypted when you commit them, and automatically decrypted when you check
1641them out. The process will degrade gracefully, so even people without your
1642encryption password can safely commit changes to the repository's
1643non-encrypted files.")
1644 (license license:expat)))
1645
1646(define-public cryfs
1647 (package
1648 (name "cryfs")
1649 (version "1.0.3")
1650 (source
1651 (origin
1652 (method url-fetch)
1653 (uri (string-append
1654 "https://github.com/cryfs/cryfs/releases/download/"
1655 version "/cryfs-" version ".tar.xz"))
1656 (sha256
1657 (base32 "1zlxbch22pdwvwpplcgzpx109a4plwc4a5qlpa8190awdr0cqc0z"))
1658 (patches (search-patches "cryfs-fuse3-up.patch"))))
1659 (build-system cmake-build-system)
1660 (arguments
1661 '(#:modules ((guix build cmake-build-system)
1662 (guix build utils)
1663 (srfi srfi-1))
1664 #:configure-flags
1665 ;; Note: This also disables checking for security issues.
1666 '("-DCRYFS_UPDATE_CHECKS=OFF"
1667 "-DBUILD_TESTING=ON")
1668 ;; crypto++ is still bundled: https://github.com/cryfs/cryfs/issues/369
1669 #:phases
1670 (modify-phases %standard-phases
1671 (add-before 'configure 'fix-up
1672 (lambda* (#:key tests? #:allow-other-keys)
1673 (chdir "..") ; We end up in .github somehow
1674 ;; Install documentation with Guix defaults.
1675 (substitute* "doc/CMakeLists.txt"
1676 (("CONFIGURATIONS Release")
1677 "CONFIGURATIONS Release RelWithDebInfo"))))
1678 (replace 'check
1679 (lambda* (#:key tests? #:allow-other-keys)
1680 (when tests?
1681 (setenv "HOME" "/tmp")))))))
1682 (native-inputs
1683 (list googletest pkg-config python-wrapper))
1684 (inputs
1685 (list boost curl fuse range-v3 spdlog))
1686 (home-page "https://www.cryfs.org/")
1687 (synopsis "Encrypted FUSE filesystem for the cloud")
1688 (description "CryFS encrypts your files, so you can safely store them anywhere.
1689It works well together with cloud services like Dropbox, iCloud, OneDrive and
1690others. CryFS creates an encrypted userspace filesystem that can be mounted
1691via FUSE without root permissions. It is similar to EncFS, but provides
1692additional security and privacy measures such as hiding file sizes and directory
1693structure. However CryFS is not considered stable yet by the developers.")
1694 (license license:lgpl3+)
1695 (properties `((tunable? . #t)))))
1696
1697(define-public b3sum
1698 (package
1699 (name "b3sum")
1700 (version "1.8.4")
1701 (source
1702 (origin
1703 (method url-fetch)
1704 (uri (crate-uri "b3sum" version))
1705 (file-name (string-append name "-" version ".tar.gz"))
1706 (sha256
1707 (base32 "0pkra5zh680cl9q92hpzmg9flz99b06bhpg7jyhymg1nkm0anw7a"))))
1708 (build-system cargo-build-system)
1709 (arguments
1710 (list
1711 #:install-source? #f
1712 #:phases
1713 #~(modify-phases %standard-phases
1714 (add-before 'check 'patch-tests
1715 (lambda _
1716 (substitute* "tests/cli_tests.rs"
1717 (("/bin/sh") (which "sh"))))))))
1718 (inputs (cargo-inputs 'b3sum))
1719 (home-page "https://github.com/BLAKE3-team/BLAKE3")
1720 (synopsis "Command line BLAKE3 checksum tool")
1721 (description "This package provides @code{b3sum}, a command line
1722checksum tool based on the BLAKE3 cryptographic hash function.")
1723 ;; Users may choose between these two licenses when redistributing the
1724 ;; program provided by this package.
1725 (license (list license:cc0 license:asl2.0))))
1726
1727(define-public libxcrypt
1728 (package
1729 (name "libxcrypt")
1730 (version "4.4.38")
1731 (source
1732 (origin
1733 (method url-fetch)
1734 (uri
1735 (string-append
1736 "https://github.com/besser82/libxcrypt/releases/download/v" version
1737 "/libxcrypt-" version ".tar.xz"))
1738 (sha256
1739 (base32 "1mkd42s12iagnpqk29hqi5vk2a6vkdaagn81gwr9k9vf62f4nc40"))))
1740 (build-system gnu-build-system)
1741 (native-inputs
1742 (list perl))
1743 (arguments
1744 (cond
1745 ((target-ppc32?)
1746 (list #:tests? #f)) ; TODO: Investigate test failures.
1747 ((target-mingw?)
1748 (list #:configure-flags
1749 #~(list #$(string-append "CFLAGS=-g -O2"
1750 " -Wno-error=pedantic"
1751 " -Wno-error=conversion")
1752 "ac_cv_ld_no_undefined=-no-undefined")))
1753 (else '())))
1754 (synopsis
1755 "Extended crypt library for descrypt, md5crypt, bcrypt, and others")
1756 (description
1757 "libxcrypt is a modern library for one-way hashing of passwords. It
1758supports a wide variety of both modern and historical hashing methods:
1759yescrypt, gost-yescrypt, scrypt, bcrypt, sha512crypt, sha256crypt, md5crypt,
1760SunMD5, sha1crypt, NT, bsdicrypt, bigcrypt, and descrypt.")
1761 (home-page "https://github.com/besser82/libxcrypt")
1762 (license license:lgpl2.1)))
1763
1764(define-public libxcrypt-without-failure-tokens
1765 ;; This version of libxcrypt is used for guile-2.2.4, which is used in Guix
1766 ;; v1.0.0 and thus needs to be supported for guix time-machine.
1767 ;;
1768 ;; Guile uses the 'crypt' hashing function that used to be provided by glibc,
1769 ;; but was moved to libxcrypt around glibc 2.39. However, the crypt function
1770 ;; in libxcrypt works differently for invalid salt values: libxcrypt returnns
1771 ;; the failure token "*0" for (crypt "pass" "$X$abc"), where glibc raised
1772 ;; "Invalid argument" (EINVAL). The --disable-failure-tokens flag lets
1773 ;; libxcrypt behave in the same way as glibc.
1774 ;;
1775 ;; Guile 2.2.4 explicitly checks for the glibc behavior of crypt, and thus
1776 ;; needs libxcrypt to be compiled with --disable-failure-tokens.
1777 (hidden-package
1778 (package/inherit libxcrypt
1779 (name "libxcrypt-without-failure-tokens")
1780 (arguments
1781 (substitute-keyword-arguments arguments
1782 ((#:configure-flags flags #~'())
1783 #~(cons* "--disable-failure-tokens" #$flags)))))))
1784
1785(define-public keychain
1786 (package
1787 (name "keychain")
1788 (version "2.9.8")
1789 (source (origin
1790 (method git-fetch)
1791 (uri (git-reference
1792 (url "https://github.com/danielrobbins/keychain")
1793 (commit version)))
1794 (file-name (git-file-name name version))
1795 (sha256
1796 (base32
1797 "1ps1hm6xf12agbrgw3jpja28q6b52cpa0fgsvkyhp4j1b2hfhkf6"))))
1798 (build-system gnu-build-system)
1799 (arguments
1800 (list
1801 #:tests? #f ; No test suite
1802 #:phases
1803 #~(modify-phases %standard-phases
1804 (delete 'configure)
1805 (replace 'install
1806 (lambda _
1807 (install-file "keychain" (string-append #$output "/bin/"))
1808 (install-file "keychain.1"
1809 (string-append #$output "/share/man/man1")))))))
1810 (propagated-inputs
1811 (list procps))
1812 (native-inputs
1813 (list perl))
1814 (synopsis
1815 "SSH or GPG agent frontend that can share a single agent on the same
1816system")
1817 (description
1818 "Keychain is usually run from shell profiles like ~/.bash_profile, but
1819it is also possible to use it with non-interactive shells. It works
1820with various operating systems (including GNU/Linux and HURD) and
1821shells (like bourne-compatible, csh-compatible and fish shells). By
1822default Keychain will only start ssh-agent, but it can also be
1823configured to start gpg-agent.")
1824 (home-page "https://github.com/danielrobbins/keychain")
1825 (license license:gpl2)))
1826
1827(define-public libdigidocpp
1828 (package
1829 (name "libdigidocpp")
1830 (version "4.3.0")
1831 (source
1832 (origin
1833 (method git-fetch)
1834 (uri (git-reference
1835 (url "https://github.com/open-eid/libdigidocpp")
1836 (commit (string-append "v" version))))
1837 (file-name (git-file-name name version))
1838 (sha256
1839 (base32 "1kv1cyc8ylsxcvhsx1lgbjaar7ilf14gmcnmzclql2wd5vf1973z"))
1840 (modules '((guix build utils)))
1841 (snippet '(delete-file-recursively "src/minizip"))))
1842 (build-system cmake-build-system)
1843 (arguments (list #:test-exclude "runtest"))
1844 (native-inputs (list boost pkg-config))
1845 (inputs
1846 (list libltdl
1847 libxml2
1848 libxslt
1849 minizip-ng-compat
1850 openssl
1851 xmlsec-openssl
1852 zlib))
1853 (home-page "https://github.com/open-eid/libdigidocpp")
1854 (synopsis "DigiDoc digital signature library")
1855 (description "DigiDoc is an XML file format for documents with digital
1856signatures used by the Estonian ID card infrastructure. This library allows
1857for creation and reading of DigiDoc files.")
1858 (license license:lgpl2.1+)))
1859
1860(define-public osslsigncode
1861 (package
1862 (name "osslsigncode")
1863 (version "2.14")
1864 (source
1865 (origin
1866 (method git-fetch)
1867 (uri (git-reference
1868 (url "https://github.com/mtrojnar/osslsigncode")
1869 (commit version)))
1870 (file-name (git-file-name name version))
1871 (sha256
1872 (base32 "06ybcp9r8w0algxvvv0mz4h1cjw764b33s9b26n1dhvpl1dqc24c"))))
1873 (build-system cmake-build-system)
1874 (arguments
1875 (list
1876 #:parallel-tests? #f))
1877 (inputs (list openssl zlib))
1878 (native-inputs (list python-cryptography python-minimal-wrapper))
1879 (home-page "https://github.com/mtrojnar/osslsigncode")
1880 (synopsis
1881 "Authenticode signing for PE, CAB, CAT, MSI, APPX and script files")
1882 (description
1883 "osslsigncode is a small tool that implements part of the
1884functionality of the Microsoft tool signtool.exe - more exactly the Authenticode
1885signing and timestamping. It is based on OpenSSL.")
1886 (license license:gpl3+)))