;;; Copyright © 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
+;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018, 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
+;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 Hendur Saga <hendursaga@yahoo.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crates-io)
#:use-module (gnu packages cryptsetup)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages golang)
#:use-module (gnu packages image)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages lsof)
+ #:use-module (gnu packages man)
+ #:use-module (gnu packages multiprecision)
#:use-module (gnu packages nettle)
#:use-module (gnu packages password-utils)
#:use-module (gnu packages perl)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix build-system cargo)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system go)
#:use-module (guix build-system perl)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
(define-public signify
(package
(name "signify")
- (version "28")
+ (version "29")
(home-page "https://github.com/aperezdc/signify")
(source (origin
(method url-fetch)
"/download/v" version "/signify-" version ".tar.xz"))
(sha256
(base32
- "05v970glhpaxv0m4cnidfxsdnsjp12nf2crzrdq4ml7g5a3g6hdq"))))
+ "1bzcax5kb4lr0rmpmrdpq5q0iq6b2dxzpl56li8aanbkck1c7hd9"))))
(build-system gnu-build-system)
;; TODO Build with libwaive (described in README.md), to implement something
;; like OpenBSD's pledge().
"See base64.c in the distribution for
the license from IBM.")))))
+(define-public rust-minisign
+ (package
+ (name "rust-minisign")
+ (version "0.5.20")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "minisign" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0xmcvh2snravghaar8igc6b9r3s1snnmf9qam9l3zyhm4987767y"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-getrandom" ,rust-getrandom-0.1)
+ ("rust-rpassword" ,rust-rpassword-4)
+ ("rust-scrypt" ,rust-scrypt-0.3))))
+ (home-page "https://github.com/jedisct1/rust-minisign")
+ (synopsis "Crate to sign files and verify signatures")
+ (description
+ "This package provides a crate to sign files and verify signatures.")
+ (license license:expat)))
+
+(define-public go-minisign
+ (package
+ (name "go-minisign")
+ (version "0.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jedisct1/go-minisign")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0wc0rk5m60yz52f0cncmbgq67yvb1rcx91gvzjg6jpc4mpw2db27"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin (delete-file-recursively "vendor") #t))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/jedisct1/go-minisign"))
+ (propagated-inputs
+ `(("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
+ (home-page "https://github.com/jedisct1/go-minisign")
+ (synopsis "Minisign verification library for Golang")
+ (description "A Golang library to verify Minisign signatures.")
+ (license license:expat)))
+
(define-public encfs
(package
(name "encfs")
no man page, refer to the home page for usage details.")
(license (list license:isc license:expat)))))
+(define-public ssss
+ (package
+ (name "ssss")
+ (version "0.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://point-at-infinity.org/ssss/ssss-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "15grn2fp1x8p92kxkwbmsx8rz16g93y9grl3hfqbh1jn21ama5jx"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; No test suite
+ #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+ "CC=gcc")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ; no configuration to be done
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((outdir (assoc-ref outputs "out"))
+ (bindir (string-append outdir "/bin"))
+ (docdir (string-append outdir
+ "/share/doc/ssss-"
+ ,version)))
+ (install-file "ssss-combine" bindir)
+ (install-file "ssss-split" bindir)
+ (install-file "ssss.1" docdir)
+ (install-file "ssss.1.html" docdir)
+ #t))))))
+ (inputs
+ `(("gmp" ,gmp)))
+ (native-inputs
+ `(("xmltoman" ,xmltoman)))
+ (home-page "http://point-at-infinity.org/ssss/")
+ (synopsis "Shamir's secret sharing scheme implementation")
+ (description "@command{ssss-split} and @command{ssss-combine} are utilities that split
+and combine secrets securely using Shamir's secret sharing scheme. This implementation
+allows for a threshold scheme where the minimum number of shares can be less than the
+total number of shares generated.")
+ (license license:gpl2+)))
+
(define-public tomb
(package
(name "tomb")
(error "program not found:" program)))
'("seq" "mkfs.ext4" "pinentry"
"gpg" "cryptsetup" "gettext" "lsof"
- "qrencode" "steghide" "findmnt")))))
+ "qrencode" "steghide" "findmnt" "getent")))))
#t)))
(delete 'check)
(add-after 'wrap 'check
(define-public scrypt
(package
(name "scrypt")
- (version "1.2.1")
+ (version "1.3.1")
(source
(origin
(method url-fetch)
version ".tgz"))
(sha256
(base32
- "0xy5yhrwwv13skv9im9vm76rybh9f29j2dh4hlh2x01gvbkza8a6"))))
+ "1hnl0r6pmyxiy4dmafmqk1db7wpc0x9rqpzqcwr9d2cmghcj6byz"))))
(build-system gnu-build-system)
(arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'patch-command-invocations
+ `(#:license-file-regexp "COPYRIGHT"
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'patch-$PATH-assumptions
(lambda _
+ (substitute* "configure"
+ (("\\{POSIX_PATH\\}")
+ "{PATH}"))
(substitute* "Makefile.in"
(("command -p") ""))
#t))
(add-after 'install 'install-docs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref %outputs "out"))
- (misc (string-append out "/share/doc/scrypt")))
- (install-file "FORMAT" misc)
+ (doc (string-append out "/share/doc/" ,name "-" ,version)))
+ (install-file "FORMAT" doc)
#t))))))
(inputs
`(("openssl" ,openssl)))
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/technion/libscrypt.git")
+ (url "https://github.com/technion/libscrypt")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(define-public crypto++
(package
(name "crypto++")
- (version "8.0.0")
+ (version "8.2.0")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append "https://cryptopp.com/cryptopp"
".zip"))
(sha256
(base32
- "0b5qrsm4jhy4nzxgrm13nixhvbswr242plx1jw6r4sw492rqkzdv"))))
+ "0n40hlz5jkvlcp9vxrj0fsrcfp7dm0zmmv6h52dx3f8i5qjf5w03"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
"libdir=" out "/lib\n"
"includedir=" out "/include\n\n"
"Name: libcrypto++-" ,version "\n"
- "Description: Class library of cryptographic schemes"
+ "Description: Class library of cryptographic schemes\n"
"Version: " ,version "\n"
"Libs: -L${libdir} -lcryptopp\n"
"Cflags: -I${includedir}\n"))
(define-public rhash
(package
(name "rhash")
- (version "1.3.8")
+ (version "1.3.9")
(source
(origin
(method url-fetch)
- (uri (string-append "https://github.com/rhash/RHash/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (uri (string-append "mirror://sourceforge/rhash/rhash/" version
+ "/rhash-" version "-src.tar.gz"))
+ (file-name (string-append "rhash-" version ".tar.gz"))
(sha256
(base32
- "0k60ywyhwqwqxa2q2l85vwgf884hcgy31nxir3dqgz7ymib6llxy"))))
+ "1xn9fqa6rlnhsbgami45g82dlw9i1skg2sri3ydiinwak5ph1ca2"))))
(build-system gnu-build-system)
(arguments
- `(#:make-flags
+ `(#:configure-flags
+ (list (string-append "--prefix=" (assoc-ref %outputs "out"))
+ ,@(let ((target (%current-target-system)))
+ (if target
+ `((string-append "--target=" ,target)
+ (string-append "--cc="
+ (assoc-ref %build-inputs "cross-gcc")
+ "/bin/" ,target "-gcc"))
+ '())))
+ #:make-flags
;; The binaries in /bin need some help finding librhash.so.0.
(list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
#:test-target "test" ; ‘make check’ just checks the sources
(replace 'configure
;; ./configure is not GNU autotools' and doesn't gracefully handle
;; unrecognized options, so we must call it manually.
- (lambda* (#:key outputs #:allow-other-keys)
- (invoke "./configure"
- (string-append "--prefix=" (assoc-ref outputs "out")))))
+ (lambda* (#:key configure-flags #:allow-other-keys)
+ (apply invoke "./configure" configure-flags)))
+ (add-before 'check 'patch-/bin/sh
+ (lambda _
+ (substitute* "Makefile"
+ (("/bin/sh") (which "sh")))
+ #t))
(add-after 'install 'install-library-extras
(lambda* (#:key make-flags #:allow-other-keys)
(apply invoke
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/vstakhov/asignify.git")
+ (url "https://github.com/vstakhov/asignify")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(home-page "https://github.com/bitcoin-core/secp256k1")
(license license:unlicense))))
+(define-public libsecp256k1-bitcoin-cash
+ (package
+ (name "libsecp256k1-bitcoin-cash")
+ (version "0.22.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Bitcoin-ABC/secp256k1")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1rnif3iny6pz1r3g69bagzr342mm3x0v66b60csnmm1rg44bd5v1"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)))
+ (arguments
+ '(#:configure-flags '("--enable-module-recovery"
+ "--enable-experimental"
+ "--enable-module-ecdh"
+ "--disable-jni"
+ "--with-bignum=no"
+ "--enable-module-schnorr"
+ "--disable-static"
+ "--enable-shared")))
+ (synopsis "Optimized C library for EC operations on curve secp256k1")
+ (description
+ "Optimized C library for cryptographic operations on curve secp256k1.
+
+This library is used for consensus critical cryptographic operations on the
+Bitcoin Cash network.
+
+Features:
+
+@itemize
+@item secp256k1 ECDSA signing/verification and key generation.
+@item secp256k1 Schnorr signing/verification (Bitcoin Cash Schnorr variant).
+@item Additive and multiplicative tweaking of secret/public keys.
+@item Serialization/parsing of secret keys, public keys, signatures.
+@item Constant time, constant memory access signing and pubkey generation.
+@item Derandomized ECDSA (via RFC6979 or with a caller provided function).
+@item Very efficient implementation.
+@item Suitable for embedded systems.
+@item Optional module for public key recovery.
+@item Optional module for ECDH key exchange (experimental).
+@item Optional module for multiset hash (experimental).
+@end itemize\n")
+ (home-page "https://github.com/Bitcoin-ABC/secp256k1")
+ (license license:expat)))
+
(define-public stoken
(package
(name "stoken")
(define-public minisign
(package
(name "minisign")
- (version "0.8")
+ (version "0.9")
(source
(origin
(method url-fetch)
(string-append "https://github.com/jedisct1/minisign/releases/download/"
version "/minisign-" version ".tar.gz"))
(sha256
- (base32
- "10hhgwxf9rcdlr00shrkcyxndrc22dh5lj8k5z27xg3nc0jba3hk"))))
+ (base32 "1h9cfvvm6lqq33b2wdar1x3w4k7zyrscavllyb0l5dmcdabq60r2"))))
(build-system cmake-build-system)
(arguments
; No test suite
(define-public libolm
(package
(name "libolm")
- (version "3.1.4")
+ (version "3.1.5")
(source (origin
(method git-fetch)
(uri (git-reference
(commit version)))
(sha256
(base32
- "06s7rw4a9vn35wzz7chxn54mp0sjgbpv2bzz9lq0g4hnzw33cjbi"))
+ "030g0jmmvhx2dh32k708sz6cdd5q1wz48i4gigh6dclqk10w28lm"))
(file-name (git-file-name name version))))
(arguments
`(#:phases
API.")
(home-page "https://matrix.org/docs/projects/other/olm/")
(license license:asl2.0)))
+
+(define-public hash-extender
+ (let ((commit "cb8aaee49f93e9c0d2f03eb3cafb429c9eed723d")
+ (revision "2"))
+ (package
+ (name "hash-extender")
+ (version (git-version "0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/iagox86/hash_extender")
+ (commit commit)))
+ (sha256
+ (base32
+ "1fj118566hr1wv03az2w0iqknazsqqkak0mvlcvwpgr6midjqi9b"))
+ (file-name (git-file-name name version))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'check
+ (lambda _
+ (invoke "./hash_extender_test")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((outdir (assoc-ref outputs "out"))
+ (bindir (string-append outdir "/bin"))
+ (docdir (string-append outdir
+ "/share/doc/hash-extender-"
+ ,version)))
+ (install-file "hash_extender" bindir)
+ (install-file "README.md" docdir)
+ #t))))))
+ (inputs
+ `(("openssl" ,openssl)))
+ (synopsis "Tool for hash length extension attacks")
+ (description "@command{hash_extender} is a utility for performing hash
+length extension attacks supporting MD4, MD5, RIPEMD-160, SHA-0, SHA-1,
+SHA-256, SHA-512, and WHIRLPOOL hashes.")
+ (home-page "https://github.com/iagox86/hash_extender")
+ (license license:bsd-3))))