1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
3 ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
4 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
5 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
6 ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
7 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
8 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
9 ;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
10 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
11 ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
12 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
13 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
14 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
15 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
16 ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
17 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
19 ;;; This file is part of GNU Guix.
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.
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.
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/>.
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))
51 (define-public python-passlib
53 (name "python-passlib")
58 (uri (pypi-uri "passlib" version))
61 "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
62 (build-system python-build-system)
64 `(("python-nose" ,python-nose)))
66 `(("python-py-bcrypt" ,python-py-bcrypt)))
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")
75 "Comprehensive password hashing framework")
77 "Passlib is a password hashing library for Python 2 & 3, which provides
78 cross-platform implementations of over 30 password hashing algorithms, as well
79 as a framework for managing existing password hashes. It's designed to be
80 useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
81 to providing full-strength password hashing for multi-user application.")
82 (license license:bsd-3)))
84 (define-public python2-passlib
85 (package-with-python2 python-passlib))
87 (define-public python-py-bcrypt
89 (name "python-py-bcrypt")
95 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
100 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
101 (build-system python-build-system)
102 (home-page "https://code.google.com/p/py-bcrypt")
104 "Bcrypt password hashing and key derivation")
106 "A python wrapper of OpenBSD's Blowfish password hashing code. This
107 system hashes passwords using a version of Bruce Schneier's Blowfish block
108 cipher with modifications designed to raise the cost of off-line password
109 cracking and frustrate fast hardware implementation. The computation cost of
110 the algorithm is parametised, so it can be increased as computers get faster.
111 The intent is to make a compromise of a password database less likely to
112 result in an attacker gaining knowledge of the plaintext passwords (e.g. using
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))))
119 (define-public python2-py-bcrypt
120 (package-with-python2 python-py-bcrypt))
122 (define-public python-paramiko
124 (name "python-paramiko")
129 (uri (pypi-uri "paramiko" version))
132 "1pf0zxzhgyy4avby3ajg5hp18b0d8iirbkdfw53z0h6w611bp0wk"))))
133 (build-system python-build-system)
136 (modify-phases %standard-phases
139 (zero? (system* "python" "test.py")))))))
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,
146 providing both client and server functionality. While it leverages a Python C
147 extension for low level cryptography (PyCrypto), Paramiko itself is a pure
148 Python interface around SSH networking concepts.")
149 (license license:lgpl2.1+)))
151 (define-public python2-paramiko
152 (package-with-python2 python-paramiko))
154 (define-public python-ecdsa
156 (name "python-ecdsa")
162 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
167 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
168 (build-system python-build-system)
170 `(("openssl" ,openssl)))
172 "https://github.com/warner/python-ecdsa")
174 "ECDSA cryptographic signature library (pure python)")
176 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
177 Curve Digital Signature Algorithm), implemented purely in Python. With this
178 library, you can quickly create keypairs (signing key and verifying key), sign
179 messages, and verify the signatures. The keys and signatures are very short,
180 making them easy to handle and incorporate into other protocols.")
181 (license license:expat)))
183 (define-public python2-ecdsa
184 (package-with-python2 python-ecdsa))
186 ;;; Pycrypto is abandoned upstream:
188 ;;; https://github.com/dlitz/pycrypto/issues/173
190 ;;; TODO Remove this package from GNU Guix.
191 (define-public python-pycrypto
193 (name "python-pycrypto")
198 (uri (pypi-uri "pycrypto" version))
199 (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
202 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
203 (build-system python-build-system)
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")
216 "Pycrypto is a collection of both secure hash functions (such as SHA256
217 and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
218 etc.). The package is structured to make adding new modules easy.")
219 (license license:public-domain)))
221 (define-public python2-pycrypto
222 (let ((pycrypto (package-with-python2 python-pycrypto)))
223 (package (inherit pycrypto)
225 `(("python" ,python-2)
228 (package-inputs pycrypto)))))))
230 (define-public python-keyring
232 (name "python-keyring")
237 (uri (pypi-uri "keyring" version))
240 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
241 (build-system python-build-system)
243 `(("python-setuptools-scm" ,python-setuptools-scm)))
245 `(("python-pycrypto" ,python-pycrypto)))
247 `(#:tests? #f)) ;TODO: tests require pytest
248 (home-page "https://github.com/jaraco/keyring")
249 (synopsis "Store and access your passwords safely")
251 "The Python keyring lib provides a easy way to access the system keyring
252 service from python. It can be used in any application that needs safe
254 ;; "MIT" and PSF dual license
255 (license license:x11)))
257 (define-public python2-keyring
258 (package-with-python2 python-keyring))
260 (define-public python-certifi
262 (name "python-certifi")
263 (version "2017.1.23")
266 (uri (pypi-uri "certifi" version))
269 "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
270 (build-system python-build-system)
271 (home-page "https://certifi.io/")
272 (synopsis "Python CA certificate bundle")
274 "Certifi is a Python library that contains a CA certificate bundle, which
275 is used by the Requests library to verify HTTPS requests.")
276 (license license:asl2.0)))
278 (define-public python2-certifi
279 (package-with-python2 python-certifi))
281 (define-public python-cryptography-vectors
283 (name "python-cryptography-vectors")
288 (uri (pypi-uri "cryptography_vectors" version))
291 "03cpmi5azvipphmva7dxv8k3w7ffblvn5452rs5r6smdhxyiqq6g"))))
292 (build-system python-build-system)
293 (home-page "https://github.com/pyca/cryptography")
294 (synopsis "Test vectors for the cryptography package")
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))))
300 (define-public python2-cryptography-vectors
301 (package-with-python2 python-cryptography-vectors))
303 (define-public python-cryptography
305 (name "python-cryptography")
310 (uri (pypi-uri "cryptography" version))
313 "0j2gwr4qxvskip77z4n9nqvr4vi243n3bzij18ay4drc6sg2g87m"))))
314 (build-system python-build-system)
316 `(("openssl" ,openssl)))
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)))
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)))
329 (home-page "https://github.com/pyca/cryptography")
330 (synopsis "Cryptographic recipes and primitives for Python")
332 "cryptography is a package which provides cryptographic recipes and
333 primitives to Python developers. It aims to be the “cryptographic standard
334 library” for Python. The package includes both high level recipes, and low
335 level interfaces to common cryptographic algorithms such as symmetric ciphers,
336 message 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))))))
341 (define-public python2-cryptography
342 (let ((crypto (package-with-python2
343 (strip-python2-variant python-cryptography))))
344 (package (inherit crypto)
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))))))
352 (define-public python-pyopenssl
354 (name "python-pyopenssl")
359 (uri (pypi-uri "pyOpenSSL" version))
362 "0wv78mwsdqbxqwdwllf4maqybhbj3vb8328ia04hnb558sxcy41c"))))
363 (build-system python-build-system)
366 (modify-phases %standard-phases
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"
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"))))))))
381 `(("python-cryptography" ,python-cryptography)
382 ("python-six" ,python-six)))
384 `(("openssl" ,openssl)))
386 `(("python-flaky" ,python-flaky)
387 ("python-pretend" ,python-pretend)
388 ("python-pytest" ,python-pytest)))
389 (home-page "https://github.com/pyca/pyopenssl")
390 (synopsis "Python wrapper module around the OpenSSL library")
392 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
394 (license license:asl2.0)))
396 (define-public python2-pyopenssl
397 (package-with-python2 python-pyopenssl))
399 (define-public python-ed25519
401 (name "python-ed25519")
406 (uri (pypi-uri "ed25519" version))
409 "0ahx1nkxa0xis3cw0h5c4fpgv8mq4znkq7kajly33lc3317bk499"))))
410 (build-system python-build-system)
411 (home-page "https://github.com/warner/python-ed25519")
412 (synopsis "Ed25519 public-key signatures")
413 (description "Ed25519 public-key signatures")
414 (license license:expat)))
416 (define-public python2-ed25519
417 (package-with-python2 python-ed25519))
419 (define-public python-axolotl-curve25519
421 (name "python-axolotl-curve25519")
427 (url "https://github.com/tgalal/python-axolotl-curve25519")
428 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
429 (file-name (string-append name "-" version "-checkout"))
432 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
433 (build-system python-build-system)
435 `(;; Prevent creation of the egg. This works around
436 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
437 #:configure-flags '("--root=/")))
438 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
439 (synopsis "Python wrapper for curve25519 library")
440 (description "This is a python wrapper for the curve25519 library
441 with ed25519 signatures. The C code was pulled from
442 libaxolotl-android. At the moment this wrapper is meant for use by
444 (license (list license:gpl3 ; Most files
445 license:bsd-3)))) ; curve/curve25519-donna.c
447 (define-public python2-axolotl-curve25519
448 (package-with-python2 python-axolotl-curve25519))
450 (define-public python-axolotl
452 (name "python-axolotl")
458 "https://github.com/tgalal/python-axolotl/archive/"
460 (file-name (string-append name "-" version ".tar.gz"))
461 (patches (search-patches "python-axolotl-AES-fix.patch"))
463 (base32 "0badsgkgz0ir3hqynxzsfjgacppi874syvvmgccc6j164053x6zm"))))
464 (build-system python-build-system)
467 (modify-phases %standard-phases
468 ;; Don't install tests
469 (add-before 'install 'remove-tests
471 (for-each delete-file-recursively
472 '("axolotl/tests" "build/lib/axolotl/tests"))
475 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
476 ("python-dateutil" ,python-dateutil)
477 ("python-protobuf" ,python-protobuf)
478 ("python-pycrypto" ,python-pycrypto)))
479 (home-page "https://github.com/tgalal/python-axolotl")
480 (synopsis "Python port of libaxolotl-android")
481 (description "This is a python port of libaxolotl-android. This
482 is a ratcheting forward secrecy protocol that works in synchronous and
483 asynchronous messaging environments.")
484 (license license:gpl3)))
486 (define-public python2-axolotl
487 (package-with-python2 python-axolotl))
489 ;; SlowAES isn't compatible with Python 3.
490 (define-public python2-slowaes
492 (name "python2-slowaes")
497 (uri (pypi-uri "slowaes" version))
500 "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
501 (build-system python-build-system)
502 (arguments `(#:python ,python-2))
503 (home-page "http://code.google.com/p/slowaes/")
504 (synopsis "Implementation of AES in Python")
505 (description "This package contains an implementation of AES in Python.
506 This implementation is slow (hence the project name) but still useful when
507 faster ones are not available.")
508 (license license:asl2.0)))
510 (define-public python-pyaes
512 (name "python-pyaes")
517 (uri (pypi-uri "pyaes" version))
520 "13vdaff15k0jyfcss4b4xvfgm8xyv0nrbyw5n1qc7lrqbi0b3h82"))))
521 (build-system python-build-system)
522 (home-page "https://github.com/ricmoo/pyaes")
523 (synopsis "Implementation of AES in Python")
524 (description "This package contains a pure-Python implementation of the
525 AES block cipher algorithm and the common modes of operation (CBC, CFB, CTR,
527 (license license:expat)))
529 (define-public python2-pyaes
530 (package-with-python2 python-pyaes))
532 (define-public python-asn1crypto
534 (name "python-asn1crypto")
539 (uri (string-append "https://github.com/wbond/asn1crypto/archive/"
541 (file-name (string-append name "-" version ".tar.gz"))
544 "1kn910896l3knmilla1c9ly20q181s43w1ah08lzkbm1h3j6pcz0"))))
545 (build-system python-build-system)
546 (home-page "https://github.com/wbond/asn1crypto")
547 (synopsis "ASN.1 parser and serializer in Python")
548 (description "asn1crypto is an ASN.1 parser and serializer with definitions
549 for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7,
550 PKCS#8, PKCS#12, PKCS#5, X.509 and TSP.")
551 (license license:expat)))
553 (define-public python2-asn1crypto
554 (package-with-python2 python-asn1crypto))
556 (define-public python-pynacl
558 (name "python-pynacl")
563 (uri (pypi-uri "PyNaCl" version))
564 (modules '((guix build utils)))
565 ;; Remove bundled libsodium
566 (snippet '(delete-file-recursively "src/libsodium"))
569 "01vjq0pxyw1mxaqy013hzs8nknmvg3kpzlzmh69jxznyipgvria5"))))
570 (build-system python-build-system)
573 (modify-phases %standard-phases
574 (add-before 'build 'use-system-sodium
576 (setenv "SODIUM_INSTALL" "system")
579 `(("python-hypothesis" ,python-hypothesis)
580 ("python-pytest" ,python-pytest)))
582 `(("python-cffi" ,python-cffi)
583 ("python-six" ,python-six)
584 ("libsodium" ,libsodium)))
585 (home-page "https://github.com/pyca/pynacl/")
586 (synopsis "Python bindings to libsodium")
588 "PyNaCl is a Python binding to libsodium, which is a fork of the
589 Networking and Cryptography library. These libraries have a stated goal
590 of improving usability, security and speed.")
591 (license license:asl2.0)))
593 (define-public python2-pgpdump
595 (name "python2-pgpdump")
600 (uri (pypi-uri "pgpdump" version))
603 "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw"))))
604 (build-system python-build-system)
606 ;; Currently fails to build with Python 3.
607 (arguments `(#:python ,python-2))
609 (home-page "https://github.com/toofishes/python-pgpdump")
610 (synopsis "Python library for parsing PGP packets")
612 "Python-pgpdump is an OpenPGP packet parser based on
613 @uref{http://www.mew.org/~kazu/proj/pgpdump/, pgpdump}. It notably supports:
616 @item signature packets;
617 @item public key packets;
618 @item secret key packets;
619 @item trust, user ID, and user attribute packets;
620 @item ASCII-armor decoding and CRC check.
622 (license license:bsd-3)))
624 (define-public python2-roca-detect
626 (name "python2-roca-detect")
631 (uri (pypi-uri "roca-detect" version))
634 "1di4akyw2lf5r8zfwvyhkilz8jv8g4b66rgaqwfabmjwma6gnw27"))))
635 (build-system python-build-system)
637 ;; TODO: apk_parse_ph4, pyjks
638 `(("python2-dateutil" ,python2-dateutil)
639 ("python2-six" ,python2-six)
640 ("python2-cryptography" ,python2-cryptography)
641 ("python2-future" ,python2-future)
642 ("python2-coloredlogs" ,python2-coloredlogs)
643 ("python2-pgpdump" ,python2-pgpdump)))
645 `(;; Basic testing routine is quite simple and works with Py3
646 ;; but the rest of the code that processes the different
647 ;; key formats and extracts the modulus for inspection is
648 ;; not yet fully py3 ready.
650 (home-page "https://github.com/crocs-muni/roca")
651 (synopsis "ROCA detection tool")
653 "This tool is related to the paper entitled @i{Return of the
654 Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli}. It
655 enables you to test public RSA keys for a presence of the described
656 vulnerability. Currently the tool supports the following key formats: X.509
657 Certificate (DER encoded, PEM encoded), RSA PEM (encoded private key, public
658 key), SSH public key, ASC-encoded OpenPGP key, APK Android application, LDIFF
660 (license license:gpl3)))
662 (define-public python-ecpy
669 (uri (pypi-uri "ECPy" version))
672 "090fqnj8z0xm44jrfpll7j45r68m6kp7mjr7yxzg93j42h3sj285"))))
673 (build-system python-build-system)
675 `(("python-future" ,python-future)))
676 (home-page "https://github.com/ubinity/ECPy")
677 (synopsis "Pure Python Elliptic Curve Library")
678 (description "This package provides a Elliptic Curve Library in pure
680 (license license:asl2.0)))
682 (define-public python2-ecpy
683 (package-with-python2 python-ecpy))
685 (define-public python-josepy
687 (name "python-josepy")
691 (uri (pypi-uri "josepy" version))
694 "1k0ahzzaq2rrjiifwbhbp7vm8z4zk0ipgiqwicil80kzlf6bhj4z"))))
695 (build-system python-build-system)
697 ;; The tests require pytest >= 3.2, which is not yet packaged.
700 `(("python-cryptography" ,python-cryptography)
701 ("python-pyopenssl" ,python-pyopenssl)
702 ("python-six" ,python-six)))
703 ;; TODO Enable when we have pytest >= 3.2.
705 ; `(("python-coverage" ,python-coverage)
706 ; ("python-flake8" ,python-flake8)
707 ; ("python-isort" ,python-isort)
708 ; ("python-mock" ,python-mock)
709 ; ("python-pytest" ,python-pytest-3.0)
710 ; ("python-pytest-cov" ,python-pytest-cov)
711 ; ("python-pytest-cache" ,python-pytest-cache)
712 ; ("python-pytest-flake8" ,python-pytest-flake8)))
713 (home-page "https://github.com/certbot/josepy")
714 (synopsis "JOSE protocol implementation in Python")
715 (description "This package provides a Python implementation of the JOSE
716 protocol (Javascript Object Signing and Encryption).")
717 (license license:asl2.0)))
719 (define-public python2-josepy
720 (package-with-python2 python-josepy))
722 (define-public python-pycryptodome
724 (name "python-pycryptodome")
729 (uri (pypi-uri "pycryptodome" version))
732 "15mc1h5ij1b6hcqvb048kb4k0ip64n2ky0zz0rml2s78ylv7g5dp"))))
733 (build-system python-build-system)
734 (home-page "https://www.pycryptodome.org")
735 (synopsis "Cryptographic library for Python")
736 (description "This package provides a cryptographic library for Python.
738 It brings the following enhancements with respect to the last official version
742 @item Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB)
743 @item Accelerated AES on Intel platforms via AES-NI
744 @item First class support for PyPy
745 @item Elliptic curves cryptography (NIST P-256 curve only)
746 @item Better and more compact API (nonce and iv attributes for ciphers,
747 automatic generation of random nonces and IVs, simplified CTR cipher mode, and
749 @item SHA-3 (including SHAKE XOFs) and BLAKE2 hash algorithms
750 @item Salsa20 and ChaCha20 stream ciphers
751 @item scrypt and HKDF
752 @item Deterministic (EC)DSA
753 @item Password-protected PKCS#8 key containers
754 @item Shamir’s Secret Sharing scheme
755 @item Random numbers get sourced directly from the OS (and not from a CSPRNG
757 @item Cleaner RSA and DSA key generation (largely based on FIPS 186-4)
758 @item Major clean ups and simplification of the code base
760 (license license:bsd-2)))
762 (define-public python2-pycryptodome
763 (package-with-python2 python-pycryptodome))