gnu: Add python-lirc.
[jackhill/guix/guix.git] / gnu / packages / password-utils.scm
CommitLineData
de63b20e
SS
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com>
17d2e86d 3;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
7e9b07bd 4;;; Copyright © 2015 Aljosha Papsch <misc@rpapsch.de>
3d4f9d5c 5;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
c285a400
JT
6;;; Copyright © 2016 Jessica Tallon <tsyesika@tsyesika.se>
7;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
6d32dd8c 8;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
61201e46 9;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
de63b20e
SS
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages password-utils)
27 #:use-module ((guix licenses) #:prefix license:)
e8647227 28 #:use-module (guix build-system cmake)
de63b20e
SS
29 #:use-module (guix build-system gnu)
30 #:use-module (guix download)
e8647227 31 #:use-module (guix packages)
c285a400
JT
32 #:use-module (gnu packages admin)
33 #:use-module (gnu packages base)
e8647227
EF
34 #:use-module (gnu packages compression)
35 #:use-module (gnu packages gnupg)
3d4f9d5c 36 #:use-module (gnu packages gtk)
dd24e906 37 #:use-module (gnu packages guile)
c285a400 38 #:use-module (gnu packages linux)
3d4f9d5c 39 #:use-module (gnu packages man)
7e9b07bd
AP
40 #:use-module (gnu packages ncurses)
41 #:use-module (gnu packages pkg-config)
3d4f9d5c 42 #:use-module (gnu packages python)
7e9b07bd 43 #:use-module (gnu packages tls)
e8647227 44 #:use-module (gnu packages qt)
c285a400 45 #:use-module (gnu packages version-control)
dd24e906 46 #:use-module (gnu packages xdisorg)
3d4f9d5c
CAW
47 #:use-module (gnu packages xorg)
48 #:use-module (guix build-system python))
de63b20e
SS
49
50(define-public pwgen
51 (package
52 (name "pwgen")
53 (version "2.07")
54 (source
55 (origin
56 (method url-fetch)
de67e922
LF
57 (uri (string-append "mirror://sourceforge/pwgen/pwgen/" version
58 "/pwgen-" version ".tar.gz"))
de63b20e
SS
59 (sha256
60 (base32 "0mhmw700kkh238fzivcwnwi94bj9f3h36yfh3k3j2v19b0zmjx7b"))))
61 (build-system gnu-build-system)
62 (arguments
63 `(#:tests? #f)) ; no test suite
64 (home-page "http://pwgen.sourceforge.net/")
65 (synopsis "Password generator")
66 (description "Pwgen generates passwords which can be easily memorized by a
67human.")
68 (license license:gpl2)))
e8647227
EF
69
70(define-public keepassx
71 (package
72 (name "keepassx")
17d2e86d 73 (version "2.0.2")
e8647227
EF
74 (source
75 (origin
76 (method url-fetch)
e5be0e01
EF
77 (uri (string-append "https://www.keepassx.org/releases/" version
78 "/keepassx-" version ".tar.gz"))
e8647227 79 (sha256
2c5e4976 80 (base32
17d2e86d 81 "1f1nlbd669rmpzr52d9dgfgclg4jcaq2jkrby3b8q1vjkksdqjr0"))))
e8647227
EF
82 (build-system cmake-build-system)
83 (inputs
84 `(("libgcrypt" ,libgcrypt)
85 ("libxtst" ,libxtst)
86 ("qt" ,qt-4)))
87 (native-inputs
88 `(("zlib" ,zlib)))
89 (home-page "https://www.keepassx.org")
90 (synopsis "Password manager")
91 (description "KeePassX is a password manager or safe which helps you to
92manage your passwords in a secure way. You can put all your passwords in one
93database, which is locked with one master key or a key-file which can be stored
94on an external storage device. The databases are encrypted using the
95algorithms AES or Twofish.")
96 ;; Non functional parts use various licences.
97 (license license:gpl3)))
dd24e906
DT
98
99(define-public shroud
100 (package
101 (name "shroud")
b4aa6d3d 102 (version "0.1.1")
dd24e906
DT
103 (source (origin
104 (method url-fetch)
105 (uri (string-append "http://files.dthompson.us/shroud/shroud-"
106 version ".tar.gz"))
107 (sha256
108 (base32
b4aa6d3d 109 "1y43yhgy2zbrk5bqj3qyx9rkcz2bma9sinlrg7dip3jqms9gq4lr"))))
dd24e906
DT
110 (build-system gnu-build-system)
111 (inputs
112 `(("guile" ,guile-2.0)
113 ("gnupg" ,gnupg)
114 ("xclip" ,xclip)))
115 (synopsis "GnuPG-based secret manager")
116 (description "Shroud is a simple secret manager with a command line
117interface. The password database is stored as a Scheme s-expression and
118encrypted with a GnuPG key. Secrets consist of an arbitrary number of
119key/value pairs, making Shroud suitable for more than just password storage.
120For copying and pasting secrets into web browsers and other graphical
121applications, there is xclip integration." )
122 (home-page "http://dthompson.us/pages/software/shroud.html")
123 (license license:gpl3+)))
7e9b07bd
AP
124
125(define-public yapet
126 (package
127 (name "yapet")
128 (version "1.0")
129 (source (origin
130 (method url-fetch)
131 (uri (string-append "http://www.guengel.ch/myapps/yapet/downloads/yapet-"
132 version
133 ".tar.bz2"))
134 (sha256
135 (base32
136 "0ydbnqw6icdh07pnv2w6dhvq501bdfvrklv4xmyr8znca9d753if"))))
137 (build-system gnu-build-system)
138 (inputs
139 `(("ncurses" ,ncurses)
140 ("openssl" ,openssl)))
141 (native-inputs
142 `(("pkg-config" ,pkg-config)))
143 (synopsis "Yet Another Password Encryption Tool")
144 (description "YAPET is a text based password manager using the Blowfish
145encryption algorithm. Because of its small footprint and very few library
146dependencies, it is suited for installing on desktop and server systems alike.
147The text based user interface allows you to run YAPET easily in a Secure Shell
148session. Two companion utilities enable users to convert CSV files to YAPET
149and vice versa.")
150 (home-page "http://www.guengel.ch/myapps/yapet/")
151 (license license:gpl3+)))
72029c8b
SB
152
153(define-public cracklib
154 (package
155 (name "cracklib")
156 (version "2.9.6")
157 (source (origin
158 (method url-fetch)
159 (uri (string-append "https://github.com/cracklib/cracklib/"
160 "releases/download/" name "-" version "/"
161 name "-" version ".tar.gz"))
162 (sha256
163 (base32
164 "0hrkb0prf7n92w6rxgq0ilzkk6rkhpys2cfqkrbzswp27na7dkqp"))))
165 (build-system gnu-build-system)
166 (synopsis "Password checking library")
167 (home-page "https://github.com/cracklib/cracklib")
168 (description
169 "CrackLib is a library containing a C function which may be used in a
170passwd like program. The idea is simple: try to prevent users from choosing
171passwords that could be guessed by crack by filtering them out, at source.")
172 (license license:lgpl2.1)))
c2fb2076
SB
173
174(define-public libpwquality
175 (package
176 (name "libpwquality")
177 (version "1.3.0")
178 (source (origin
179 (method url-fetch)
180 (uri (list
181 (string-append "https://fedorahosted.org/releases/l/i/"
182 name "/" name "-" version ".tar.bz2")
183 (string-append "https://launchpad.net/libpwquality/trunk/"
184 version "/+download/"
185 name "-" version ".tar.bz2")))
186 (sha256
187 (base32
188 "0aidriag6h0syfm33nzdfdsqgrnsgihwjv3a5lgkqch3w68fmlkl"))))
189 (build-system gnu-build-system)
190 (arguments
191 ;; XXX: have RUNPATH issue.
192 '(#:configure-flags '("--disable-python-bindings")))
193 (inputs
194 `(("cracklib" ,cracklib)))
195 (synopsis "Password quality checker")
196 (home-page "https://fedorahosted.org/libpwquality/")
197 (description
198 "Libpwquality is a library for password quality checking and generation of
199random passwords that pass the checks.")
200 (license license:gpl2+)))
3d4f9d5c
CAW
201
202(define-public assword
203 (package
204 (name "assword")
205 (version "0.8")
206 (source (origin
207 (method url-fetch)
208 (uri (list
209 (string-append
210 "http://http.debian.net/debian/pool/main/a/assword/"
211 "assword_" version ".orig.tar.gz")))
212 (sha256
213 (base32
214 "0dl4wizbi0r21wxzykm8s445xbvqim5nabi799dmpkdnnh8i546i"))))
215 (arguments
216 `(#:python ,python-2
217 ;; irritatingly, tests do run but not there are two problems:
218 ;; - "import gtk" fails for unknown reasons here despite it the
219 ;; program working (indeed, I've found I have to do a logout and log
220 ;; back in in after an install order for some mumbo jumbo environment
221 ;; variable mess to work with pygtk and assword... what's up with
222 ;; that?)
223 ;; - even when the tests fail, they don't return a nonzero status,
224 ;; so I'm not sure how to programmatically get that information
225 #:tests? #f
226 #:phases
227 (modify-phases %standard-phases
228 (add-after 'install 'manpage
229 (lambda* (#:key outputs #:allow-other-keys)
230 (and
231 (zero? (system* "make" "assword.1"))
232 (install-file
233 "assword.1"
234 (string-append (assoc-ref outputs "out") "/share/man/man1"))))))))
235 (build-system python-build-system)
236 (native-inputs
237 `(("help2man" ,help2man)))
238 (inputs
239 `(("python-setuptools" ,python2-setuptools)
240 ("python2-xdo" ,python2-xdo)
241 ("python2-pygpgme" ,python2-pygpgme)
242 ("python2-pygtk" ,python2-pygtk)))
243 (propagated-inputs
244 `(("xclip" ,xclip)))
245 (home-page "https://finestructure.net/assword/")
246 (synopsis "Password manager")
247 (description "assword is a simple password manager using GPG-wrapped
248JSON files. It has a command line interface as well as a very simple
249graphical interface, which can even \"type\" your passwords into
250any X11 window.")
251 (license license:gpl3+)))
c285a400
JT
252
253(define-public password-store
254 (package
255 (name "password-store")
256 (version "1.6.5")
257 (source (origin
258 (method url-fetch)
259 (uri
260 (string-append "https://git.zx2c4.com/password-store/snapshot/"
261 name "-" version ".tar.xz"))
262 (sha256
263 (base32
264 "05bk3lrp5jwg0v338lvylp7glpliydzz4jf5pjr6k3kagrv3jyik"))))
265 (build-system gnu-build-system)
266 (arguments
267 '(#:phases
268 (modify-phases %standard-phases
269 (delete 'configure)
61201e46
AG
270 (add-after 'install 'wrap-path
271 (lambda* (#:key inputs outputs #:allow-other-keys)
272 (let ((out (assoc-ref outputs "out"))
273 (path (map (lambda (pkg)
274 (string-append (assoc-ref inputs pkg) "/bin"))
275 '("coreutils" "getopt" "git" "gnupg" "pwgen"
276 "sed" "tree" "which" "xclip"))))
277 (wrap-program (string-append out "/bin/pass")
278 `("PATH" ":" prefix (,(string-join path ":"))))))))
c285a400
JT
279 #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
280 #:test-target "test"))
61201e46
AG
281 (inputs
282 `(("getopt" ,util-linux)
283 ("git" ,git)
284 ("gnupg" ,gnupg)
285 ("pwgen" ,pwgen)
286 ("sed" ,sed)
287 ("tree" ,tree)
288 ("which" ,which)
289 ("xclip" ,xclip)))
c285a400
JT
290 (home-page "http://www.passwordstore.org/")
291 (synopsis "Encrypted password manager")
292 (description "Password-store is a password manager which uses GnuPG to
293store and retrieve passwords. The tool stores each password in its own
294GnuPG-encrypted file, allowing the program to be simple yet secure.
295Synchronization is possible using the integrated git support, which commits
296changes to your password database to a git repository that can be managed
297through the pass command.")
298 (license license:gpl2+)))
6d32dd8c
LG
299
300(define-public argon2
301 (package
302 (name "argon2")
303 (version "20160406")
304 (source
305 (origin
306 (method url-fetch)
307 (uri
308 (string-append
309 "https://codeload.github.com/P-H-C/phc-winner-"
310 name "/tar.gz/" version))
311 (file-name (string-append name "-" version ".tar.gz"))
312 (sha256
313 (base32
314 "0g6wa94sh639xl1qc8z21q43r1mp8y77r1zf8nwx5pfsxd8fmyzv"))))
315 (build-system gnu-build-system)
316 (arguments
317 `(#:test-target "test"
318 #:make-flags '("CC=gcc")
319 #:phases
320 (modify-phases %standard-phases
321 (delete 'configure)
322 (replace 'install
323 (lambda _
324 (let ((out (assoc-ref %outputs "out")))
325 (install-file "argon2" (string-append out "/bin"))
326 (install-file "libargon2.a" (string-append out "/lib"))
327 (install-file "libargon2.so" (string-append out "/lib"))
328 (copy-recursively "include"
329 (string-append out "/include"))))))))
330 (home-page "https://www.argon2.com/")
331 (synopsis "Password hashing library")
332 (description "Argon2 provides a key derivation function that was declared
333winner of the 2015 Password Hashing Competition.")
334 (license license:cc0)))