projects/guix·blob version-0.14.0 · refs

637 lines · 22.8 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Eric Dvorsak <[email protected]>
3;;; Copyright © 2015, 2016, 2017 Efraim Flashner <[email protected]>
4;;; Copyright © 2015, 2016, 2017 Leo Famulari <[email protected]>
5;;; Copyright © 2016, 2017 Marius Bakke <[email protected]>
6;;; Copyright © 2017 Ben Sturmfels <[email protected]>
7;;; Copyright © 2016 Sou Bunnbu <[email protected]>
8;;; Copyright © 2015 Cyril Roelandt <[email protected]>
9;;; Copyright © 2014, 2017 Eric Bavier <[email protected]>
10;;; Copyright © 2015, 2016 David Thompson <[email protected]>
11;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <[email protected]>
12;;; Copyright © 2016, 2017 ng0 <[email protected]>
13;;; Copyright © 2014, 2015 Mark H Weaver <[email protected]>
14;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <[email protected]>
15;;; Copyright © 2016 Danny Milosavljevic <[email protected]>
16;;; Copyright © 2016, 2017 Arun Isaac <[email protected]>
17;;; Copyright © 2017 Carlo Zancanaro <[email protected]>
18;;;
19;;; This file is part of GNU Guix.
20;;;
21;;; GNU Guix is free software; you can redistribute it and/or modify it
22;;; under the terms of the GNU General Public License as published by
23;;; the Free Software Foundation; either version 3 of the License, or (at
24;;; your option) any later version.
25;;;
26;;; GNU Guix is distributed in the hope that it will be useful, but
27;;; WITHOUT ANY WARRANTY; without even the implied warranty of
28;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29;;; GNU General Public License for more details.
30;;;
31;;; You should have received a copy of the GNU General Public License
32;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
33
34(define-module (gnu packages python-crypto)
35 #:use-module (guix packages)
36 #:use-module (guix download)
37 #:use-module (guix git-download)
38 #:use-module (guix build-system python)
39 #:use-module (gnu packages)
40 #:use-module (gnu packages check)
41 #:use-module (gnu packages crypto)
42 #:use-module (gnu packages libffi)
43 #:use-module (gnu packages multiprecision)
44 #:use-module (gnu packages protobuf)
45 #:use-module (gnu packages python)
46 #:use-module (gnu packages time)
47 #:use-module (gnu packages tls)
48 #:use-module ((guix licenses) #:prefix license:)
49 #:use-module (srfi srfi-1))
50
51(define-public python-passlib
52 (package
53 (name "python-passlib")
54 (version "1.7.1")
55 (source
56 (origin
57 (method url-fetch)
58 (uri (pypi-uri "passlib" version))
59 (sha256
60 (base32
61 "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
62 (build-system python-build-system)
63 (native-inputs
64 `(("python-nose" ,python-nose)))
65 (propagated-inputs
66 `(("python-py-bcrypt" ,python-py-bcrypt)))
67 (arguments
68 `(#:phases
69 (modify-phases %standard-phases
70 (add-before 'check 'set-PYTHON_EGG_CACHE
71 ;; some tests require access to "$HOME/.cython"
72 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
73 (home-page "https://bitbucket.org/ecollins/passlib")
74 (synopsis
75 "Comprehensive password hashing framework")
76 (description
77 "Passlib is a password hashing library for Python 2 & 3, which provides
78cross-platform implementations of over 30 password hashing algorithms, as well
79as a framework for managing existing password hashes. It's designed to be
80useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
81to providing full-strength password hashing for multi-user application.")
82 (license license:bsd-3)))
83
84(define-public python2-passlib
85 (package-with-python2 python-passlib))
86
87(define-public python-py-bcrypt
88 (package
89 (name "python-py-bcrypt")
90 (version "0.4")
91 (source
92 (origin
93 (method url-fetch)
94 (uri (string-append
95 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
96 version
97 ".tar.gz"))
98 (sha256
99 (base32
100 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
101 (build-system python-build-system)
102 (home-page "https://code.google.com/p/py-bcrypt")
103 (synopsis
104 "Bcrypt password hashing and key derivation")
105 (description
106 "A python wrapper of OpenBSD's Blowfish password hashing code. This
107system hashes passwords using a version of Bruce Schneier's Blowfish block
108cipher with modifications designed to raise the cost of off-line password
109cracking and frustrate fast hardware implementation. The computation cost of
110the algorithm is parametised, so it can be increased as computers get faster.
111The intent is to make a compromise of a password database less likely to
112result in an attacker gaining knowledge of the plaintext passwords (e.g. using
113John the Ripper).")
114 ;; "sha2.c" is under BSD-3;
115 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
116 ;; the rest is under ISC.
117 (license (list license:isc license:bsd-3 license:bsd-4))))
118
119(define-public python2-py-bcrypt
120 (package-with-python2 python-py-bcrypt))
121
122(define-public python-paramiko
123 (package
124 (name "python-paramiko")
125 (version "2.1.2")
126 (source
127 (origin
128 (method url-fetch)
129 (uri (pypi-uri "paramiko" version))
130 (sha256
131 (base32
132 "04734n0wy3hxk6rij4fr29in5jmr70nxpc7pqi2ksbjysfz4kbjz"))))
133 (build-system python-build-system)
134 (arguments
135 '(#:phases
136 (modify-phases %standard-phases
137 (replace 'check
138 (lambda _
139 (zero? (system* "python" "test.py")))))))
140 (propagated-inputs
141 `(("python-pyasn1" ,python-pyasn1)
142 ("python-cryptography" ,python-cryptography)))
143 (home-page "http://www.paramiko.org/")
144 (synopsis "SSHv2 protocol library")
145 (description "Paramiko is a python implementation of the SSHv2 protocol,
146providing both client and server functionality. While it leverages a Python C
147extension for low level cryptography (PyCrypto), Paramiko itself is a pure
148Python interface around SSH networking concepts.")
149 (license license:lgpl2.1+)))
150
151(define-public python2-paramiko
152 (package-with-python2 python-paramiko))
153
154(define-public python-ecdsa
155 (package
156 (name "python-ecdsa")
157 (version "0.13")
158 (source
159 (origin
160 (method url-fetch)
161 (uri (string-append
162 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
163 version
164 ".tar.gz"))
165 (sha256
166 (base32
167 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
168 (build-system python-build-system)
169 (inputs
170 `(("openssl" ,openssl)))
171 (home-page
172 "https://github.com/warner/python-ecdsa")
173 (synopsis
174 "ECDSA cryptographic signature library (pure python)")
175 (description
176 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
177Curve Digital Signature Algorithm), implemented purely in Python. With this
178library, you can quickly create keypairs (signing key and verifying key), sign
179messages, and verify the signatures. The keys and signatures are very short,
180making them easy to handle and incorporate into other protocols.")
181 (license license:expat)))
182
183(define-public python2-ecdsa
184 (package-with-python2 python-ecdsa))
185
186;;; Pycrypto is abandoned upstream:
187;;;
188;;; https://github.com/dlitz/pycrypto/issues/173
189;;;
190;;; TODO Remove this package from GNU Guix.
191(define-public python-pycrypto
192 (package
193 (name "python-pycrypto")
194 (version "2.6.1")
195 (source
196 (origin
197 (method url-fetch)
198 (uri (pypi-uri "pycrypto" version))
199 (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
200 (sha256
201 (base32
202 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
203 (build-system python-build-system)
204 (inputs
205 `(("python" ,python)
206 ("gmp" ,gmp)))
207 (arguments
208 `(#:phases
209 (modify-phases %standard-phases
210 (add-before 'build 'set-build-env
211 ;; pycrypto runs an autoconf configure script behind the scenes
212 (lambda _ (setenv "CONFIG_SHELL" (which "bash")) #t)))))
213 (home-page "http://www.pycrypto.org/")
214 (synopsis "Cryptographic modules for Python")
215 (description
216 "Pycrypto is a collection of both secure hash functions (such as SHA256
217and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
218etc.). The package is structured to make adding new modules easy.")
219 (license license:public-domain)))
220
221(define-public python2-pycrypto
222 (let ((pycrypto (package-with-python2 python-pycrypto)))
223 (package (inherit pycrypto)
224 (inputs
225 `(("python" ,python-2)
226 ,@(alist-delete
227 "python"
228 (package-inputs pycrypto)))))))
229
230(define-public python-keyring
231 (package
232 (name "python-keyring")
233 (version "8.7")
234 (source
235 (origin
236 (method url-fetch)
237 (uri (pypi-uri "keyring" version))
238 (sha256
239 (base32
240 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
241 (build-system python-build-system)
242 (native-inputs
243 `(("python-setuptools-scm" ,python-setuptools-scm)))
244 (propagated-inputs
245 `(("python-pycrypto" ,python-pycrypto)))
246 (arguments
247 `(#:tests? #f)) ;TODO: tests require pytest
248 (home-page "https://github.com/jaraco/keyring")
249 (synopsis "Store and access your passwords safely")
250 (description
251 "The Python keyring lib provides a easy way to access the system keyring
252service from python. It can be used in any application that needs safe
253password storage.")
254 ;; "MIT" and PSF dual license
255 (license license:x11)))
256
257(define-public python2-keyring
258 (package-with-python2 python-keyring))
259
260(define-public python-certifi
261 (package
262 (name "python-certifi")
263 (version "2017.1.23")
264 (source (origin
265 (method url-fetch)
266 (uri (pypi-uri "certifi" version))
267 (sha256
268 (base32
269 "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
270 (build-system python-build-system)
271 (home-page "https://certifi.io/")
272 (synopsis "Python CA certificate bundle")
273 (description
274 "Certifi is a Python library that contains a CA certificate bundle, which
275is used by the Requests library to verify HTTPS requests.")
276 (license license:asl2.0)))
277
278(define-public python2-certifi
279 (package-with-python2 python-certifi))
280
281(define-public python-cryptography-vectors
282 (package
283 (name "python-cryptography-vectors")
284 (version "2.0.3")
285 (source
286 (origin
287 (method url-fetch)
288 (uri (pypi-uri "cryptography_vectors" version))
289 (sha256
290 (base32
291 "1qa117fs1yd50zn2cfxh7d9l999ds0z4h83m9m7j4fk6ffm33f5y"))))
292 (build-system python-build-system)
293 (home-page "https://github.com/pyca/cryptography")
294 (synopsis "Test vectors for the cryptography package")
295 (description
296 "This package contains test vectors for the cryptography package.")
297 ;; Distributed under either BSD-3 or ASL2.0
298 (license (list license:bsd-3 license:asl2.0))))
299
300(define-public python2-cryptography-vectors
301 (package-with-python2 python-cryptography-vectors))
302
303(define-public python-cryptography
304 (package
305 (name "python-cryptography")
306 (version "2.0.3")
307 (source
308 (origin
309 (method url-fetch)
310 (uri (pypi-uri "cryptography" version))
311 (sha256
312 (base32
313 "0fnck37zyvbzmccbp7w3jy27jgmij1992j5wyy3gxhw6a11b4jyh"))))
314 (build-system python-build-system)
315 (inputs
316 `(("openssl" ,openssl)))
317 (propagated-inputs
318 `(("python-asn1crypto" ,python-asn1crypto)
319 ("python-cffi" ,python-cffi)
320 ("python-six" ,python-six)
321 ("python-idna" ,python-idna)
322 ("python-iso8601" ,python-iso8601)))
323 (native-inputs
324 `(("python-cryptography-vectors" ,python-cryptography-vectors)
325 ("python-hypothesis" ,python-hypothesis)
326 ("python-pretend" ,python-pretend)
327 ("python-pytz" ,python-pytz)
328 ("python-pytest" ,python-pytest-3.0)))
329 (home-page "https://github.com/pyca/cryptography")
330 (synopsis "Cryptographic recipes and primitives for Python")
331 (description
332 "cryptography is a package which provides cryptographic recipes and
333primitives to Python developers. It aims to be the “cryptographic standard
334library” for Python. The package includes both high level recipes, and low
335level interfaces to common cryptographic algorithms such as symmetric ciphers,
336message digests and key derivation functions.")
337 ;; Distributed under either BSD-3 or ASL2.0
338 (license (list license:bsd-3 license:asl2.0))
339 (properties `((python2-variant . ,(delay python2-cryptography))))))
340
341(define-public python2-cryptography
342 (let ((crypto (package-with-python2
343 (strip-python2-variant python-cryptography))))
344 (package (inherit crypto)
345 (propagated-inputs
346 `(("python2-ipaddress" ,python2-ipaddress)
347 ("python2-backport-ssl-match-hostname"
348 ,python2-backport-ssl-match-hostname)
349 ("python2-enum34" ,python2-enum34)
350 ,@(package-propagated-inputs crypto))))))
351
352(define-public python-pyopenssl
353 (package
354 (name "python-pyopenssl")
355 (version "17.3.0")
356 (source
357 (origin
358 (method url-fetch)
359 (uri (pypi-uri "pyOpenSSL" version))
360 (sha256
361 (base32
362 "0xkc1wfnpg6abzllivg3ylhc63npjdy1v81f4kc08bm8cj80nqr9"))))
363 (build-system python-build-system)
364 (arguments
365 '(#:phases
366 (modify-phases %standard-phases
367 (delete 'check)
368 (add-after 'install 'check
369 (lambda* (#:key inputs outputs #:allow-other-keys)
370 (add-installed-pythonpath inputs outputs)
371 (zero? (system* "py.test" "-v" "-k"
372 (string-append
373 ;; This test tries to look up certificates from
374 ;; the compiled-in default path in OpenSSL, which
375 ;; does not exist in the build environment.
376 "not test_fallback_default_verify_paths "
377 ;; This test attempts to make a connection to
378 ;; an external web service.
379 "and not test_set_default_verify_paths"))))))))
380 (propagated-inputs
381 `(("python-cryptography" ,python-cryptography)
382 ("python-six" ,python-six)))
383 (inputs
384 `(("openssl" ,openssl)))
385 (native-inputs
386 `(("python-flaky" ,python-flaky)
387 ("python-pretend" ,python-pretend)
388 ("python-pytest" ,python-pytest-3.0)))
389 (home-page "https://github.com/pyca/pyopenssl")
390 (synopsis "Python wrapper module around the OpenSSL library")
391 (description
392 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
393library.")
394 (license license:asl2.0)))
395
396(define-public python2-pyopenssl
397 (package-with-python2 python-pyopenssl))
398
399(define-public python-axolotl-curve25519
400 (package
401 (name "python-axolotl-curve25519")
402 (version "0.1")
403 (source
404 (origin
405 (method git-fetch)
406 (uri (git-reference
407 (url "https://github.com/tgalal/python-axolotl-curve25519")
408 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
409 (file-name (string-append name "-" version "-checkout"))
410 (sha256
411 (base32
412 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
413 (build-system python-build-system)
414 (arguments
415 `(;; Prevent creation of the egg. This works around
416 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
417 #:configure-flags '("--root=/")))
418 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
419 (synopsis "Python wrapper for curve25519 library")
420 (description "This is a python wrapper for the curve25519 library
421with ed25519 signatures. The C code was pulled from
422libaxolotl-android. At the moment this wrapper is meant for use by
423python-axolotl.")
424 (license (list license:gpl3 ; Most files
425 license:bsd-3)))) ; curve/curve25519-donna.c
426
427(define-public python2-axolotl-curve25519
428 (package-with-python2 python-axolotl-curve25519))
429
430(define-public python-axolotl
431 (package
432 (name "python-axolotl")
433 (version "0.1.35")
434 (source
435 (origin
436 (method url-fetch)
437 (uri (string-append
438 "https://github.com/tgalal/python-axolotl/archive/"
439 version ".tar.gz"))
440 (file-name (string-append name "-" version ".tar.gz"))
441 (sha256
442 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
443 (build-system python-build-system)
444 (arguments
445 `(#:phases
446 (modify-phases %standard-phases
447 ;; Don't install tests
448 (add-before 'install 'remove-tests
449 (lambda _
450 (for-each delete-file-recursively
451 '("axolotl/tests" "build/lib/axolotl/tests"))
452 #t)))))
453 (propagated-inputs
454 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
455 ("python-dateutil" ,python-dateutil)
456 ("python-protobuf" ,python-protobuf)
457 ("python-pycrypto" ,python-pycrypto)))
458 (home-page "https://github.com/tgalal/python-axolotl")
459 (synopsis "Python port of libaxolotl-android")
460 (description "This is a python port of libaxolotl-android. This
461is a ratcheting forward secrecy protocol that works in synchronous and
462asynchronous messaging environments.")
463 (license license:gpl3)))
464
465(define-public python2-axolotl
466 (package-with-python2 python-axolotl))
467
468;; SlowAES isn't compatible with Python 3.
469(define-public python2-slowaes
470 (package
471 (name "python2-slowaes")
472 (version "0.1a1")
473 (source
474 (origin
475 (method url-fetch)
476 (uri (pypi-uri "slowaes" version))
477 (sha256
478 (base32
479 "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
480 (build-system python-build-system)
481 (arguments `(#:python ,python-2))
482 (home-page "http://code.google.com/p/slowaes/")
483 (synopsis "Implementation of AES in Python")
484 (description "This package contains an implementation of AES in Python.
485This implementation is slow (hence the project name) but still useful when
486faster ones are not available.")
487 (license license:asl2.0)))
488
489(define-public python-pyaes
490 (package
491 (name "python-pyaes")
492 (version "1.6.0")
493 (source
494 (origin
495 (method url-fetch)
496 (uri (pypi-uri "pyaes" version))
497 (sha256
498 (base32
499 "0bp9bjqy1n6ij1zb86wz9lqa1dhla8qr1d7w2kxyn7jbj56sbmcw"))))
500 (build-system python-build-system)
501 (home-page "https://github.com/ricmoo/pyaes")
502 (synopsis "Implementation of AES in Python")
503 (description "This package contains a pure-Python implementation of the
504AES block cipher algorithm and the common modes of operation (CBC, CFB, CTR,
505ECB and OFB).")
506 (license license:expat)))
507
508(define-public python2-pyaes
509 (package-with-python2 python-pyaes))
510
511(define-public python-asn1crypto
512 (package
513 (name "python-asn1crypto")
514 (version "0.22.0")
515 (source
516 (origin
517 (method url-fetch)
518 (uri (string-append "https://github.com/wbond/asn1crypto/archive/"
519 version ".tar.gz"))
520 (sha256
521 (base32
522 "1kn910896l3knmilla1c9ly20q181s43w1ah08lzkbm1h3j6pcz0"))))
523 (build-system python-build-system)
524 (home-page "https://github.com/wbond/asn1crypto")
525 (synopsis "ASN.1 parser and serializer in Python")
526 (description "asn1crypto is an ASN.1 parser and serializer with definitions
527for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7,
528PKCS#8, PKCS#12, PKCS#5, X.509 and TSP.")
529 (license license:expat)))
530
531(define-public python2-asn1crypto
532 (package-with-python2 python-asn1crypto))
533
534(define-public python-pynacl
535 (package
536 (name "python-pynacl")
537 (version "1.1.2")
538 (source
539 (origin
540 (method url-fetch)
541 (uri (pypi-uri "PyNaCl" version))
542 (modules '((guix build utils)))
543 ;; Remove bundled libsodium
544 (snippet '(delete-file-recursively "src/libsodium"))
545 (sha256
546 (base32
547 "135gz0020fqx8fbr9izpwyq49aww202nkqacq0cw61xz99sjpx9j"))))
548 (build-system python-build-system)
549 (arguments
550 `(#:phases
551 (modify-phases %standard-phases
552 (add-before 'build 'use-system-sodium
553 (lambda _
554 (setenv "SODIUM_INSTALL" "system")
555 #t)))))
556 (native-inputs
557 `(("python-pytest" ,python-pytest)))
558 (propagated-inputs
559 `(("python-cffi" ,python-cffi)
560 ("python-six" ,python-six)
561 ("libsodium" ,libsodium)))
562 (home-page "https://github.com/pyca/pynacl/")
563 (synopsis "Python bindings to libsodium")
564 (description
565 "PyNaCl is a Python binding to libsodium, which is a fork of the
566Networking and Cryptography library. These libraries have a stated goal
567of improving usability, security and speed.")
568 (license license:asl2.0)))
569
570(define-public python2-pgpdump
571 (package
572 (name "python2-pgpdump")
573 (version "1.5")
574 (source
575 (origin
576 (method url-fetch)
577 (uri (pypi-uri "pgpdump" version))
578 (sha256
579 (base32
580 "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw"))))
581 (build-system python-build-system)
582
583 ;; Currently fails to build with Python 3.
584 (arguments `(#:python ,python-2))
585
586 (home-page "https://github.com/toofishes/python-pgpdump")
587 (synopsis "Python library for parsing PGP packets")
588 (description
589 "Python-pgpdump is an OpenPGP packet parser based on
590@uref{http://www.mew.org/~kazu/proj/pgpdump/, pgpdump}. It notably supports:
591
592@itemize
593@item signature packets;
594@item public key packets;
595@item secret key packets;
596@item trust, user ID, and user attribute packets;
597@item ASCII-armor decoding and CRC check.
598@end itemize\n")
599 (license license:bsd-3)))
600
601(define-public python2-roca-detect
602 (package
603 (name "python2-roca-detect")
604 (version "1.0.8")
605 (source
606 (origin
607 (method url-fetch)
608 (uri (pypi-uri "roca-detect" version))
609 (sha256
610 (base32
611 "1di4akyw2lf5r8zfwvyhkilz8jv8g4b66rgaqwfabmjwma6gnw27"))))
612 (build-system python-build-system)
613 (native-inputs
614 ;; TODO: apk_parse_ph4, pyjks
615 `(("python2-dateutil" ,python2-dateutil)
616 ("python2-six" ,python2-six)
617 ("python2-cryptography" ,python2-cryptography)
618 ("python2-future" ,python2-future)
619 ("python2-coloredlogs" ,python2-coloredlogs)
620 ("python2-pgpdump" ,python2-pgpdump)))
621 (arguments
622 `(;; Basic testing routine is quite simple and works with Py3
623 ;; but the rest of the code that processes the different
624 ;; key formats and extracts the modulus for inspection is
625 ;; not yet fully py3 ready.
626 #:python ,python-2))
627 (home-page "https://github.com/crocs-muni/roca")
628 (synopsis "ROCA detection tool")
629 (description
630 "This tool is related to the paper entitled @i{Return of the
631Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli}. It
632enables you to test public RSA keys for a presence of the described
633vulnerability. Currently the tool supports the following key formats: X.509
634Certificate (DER encoded, PEM encoded), RSA PEM (encoded private key, public
635key), SSH public key, ASC-encoded OpenPGP key, APK Android application, LDIFF
636file, and more.")
637 (license license:gpl3)))