]> git.baikalelectronics.ru Git - kernel.git/commit
crypto: curve25519 - generic C library implementations
authorJason A. Donenfeld <Jason@zx2c4.com>
Fri, 8 Nov 2019 12:22:32 +0000 (13:22 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sun, 17 Nov 2019 01:02:43 +0000 (09:02 +0800)
commit946f06e5fdc863632fccd0e340348c5b7eff806e
treeeff8cd4d432e1ba4788bf968b94a32f223b7f4dc
parenteca513abaffd6f3c10bb00bc4c92af4800cb529a
crypto: curve25519 - generic C library implementations

This contains two formally verified C implementations of the Curve25519
scalar multiplication function, one for 32-bit systems, and one for
64-bit systems whose compiler supports efficient 128-bit integer types.
Not only are these implementations formally verified, but they are also
the fastest available C implementations. They have been modified to be
friendly to kernel space and to be generally less horrendous looking,
but still an effort has been made to retain their formally verified
characteristic, and so the C might look slightly unidiomatic.

The 64-bit version comes from HACL*: https://github.com/project-everest/hacl-star
The 32-bit version comes from Fiat: https://github.com/mit-plv/fiat-crypto

Information: https://cr.yp.to/ecdh.html

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
[ardb: - move from lib/zinc to lib/crypto
       - replace .c #includes with Kconfig based object selection
       - drop simd handling and simplify support for per-arch versions ]
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
include/crypto/curve25519.h [new file with mode: 0644]
lib/crypto/Kconfig
lib/crypto/Makefile
lib/crypto/curve25519-fiat32.c [new file with mode: 0644]
lib/crypto/curve25519-hacl64.c [new file with mode: 0644]
lib/crypto/curve25519.c [new file with mode: 0644]