forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 238
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
crypto: s390 - add crypto library interface for ChaCha20
Implement a crypto library interface for the s390-native ChaCha20 cipher algorithm. This allows us to stop to select CRYPTO_CHACHA20 and instead select CRYPTO_ARCH_HAVE_LIB_CHACHA. This allows BIG_KEYS=y not to build a whole ChaCha20 crypto infrastructure as a built-in, but build a smaller CRYPTO_LIB_CHACHA instead. Make CRYPTO_CHACHA_S390 config entry to look like similar ones on other architectures. Remove CRYPTO_ALGAPI select as anyway it is selected by CRYPTO_SKCIPHER. Add a new test module and a test script for ChaCha20 cipher and its interfaces. Here are test results on an idle z15 machine: Data | Generic crypto TFM | s390 crypto TFM | s390 lib size | enc dec | enc dec | enc dec -----+--------------------+------------------+---------------- 512b | 1545ns 1295ns | 604ns 446ns | 430ns 407ns 4k | 9536ns 9463ns | 2329ns 2174ns | 2170ns 2154ns 64k | 149.6us 149.3us | 34.4us 34.5us | 33.9us 33.1us 6M | 23.61ms 23.11ms | 4223us 4160us | 3951us 4008us 60M | 143.9ms 143.9ms | 33.5ms 33.2ms | 32.2ms 32.1ms Signed-off-by: Vladis Dronov <[email protected]> Reviewed-by: Harald Freudenberger <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
- Loading branch information
Showing
5 changed files
with
452 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# SPDX-License-Identifier: GPL-2.0 | ||
# | ||
# Copyright (C) 2022 Red Hat, Inc. | ||
# Author: Vladis Dronov <[email protected]> | ||
|
||
obj-m += test_cipher.o | ||
test_cipher-y := test-cipher.o | ||
|
||
all: | ||
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules | ||
clean: | ||
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
#!/bin/bash | ||
# SPDX-License-Identifier: GPL-2.0 | ||
# | ||
# Copyright (C) 2022 Red Hat, Inc. | ||
# Author: Vladis Dronov <[email protected]> | ||
# | ||
# This script runs (via instmod) test-cipher.ko module which invokes | ||
# generic and s390-native ChaCha20 encryprion algorithms with different | ||
# size of data. Check 'dmesg' for results. | ||
# | ||
# The insmod error is expected: | ||
# insmod: ERROR: could not insert module test_cipher.ko: Operation not permitted | ||
|
||
lsmod | grep chacha | cut -f1 -d' ' | xargs rmmod | ||
modprobe chacha_generic | ||
modprobe chacha_s390 | ||
|
||
# run encryption for different data size, including whole block(s) +/- 1 | ||
insmod test_cipher.ko size=63 | ||
insmod test_cipher.ko size=64 | ||
insmod test_cipher.ko size=65 | ||
insmod test_cipher.ko size=127 | ||
insmod test_cipher.ko size=128 | ||
insmod test_cipher.ko size=129 | ||
insmod test_cipher.ko size=511 | ||
insmod test_cipher.ko size=512 | ||
insmod test_cipher.ko size=513 | ||
insmod test_cipher.ko size=4096 | ||
insmod test_cipher.ko size=65611 | ||
insmod test_cipher.ko size=6291456 | ||
insmod test_cipher.ko size=62914560 | ||
|
||
# print test logs | ||
dmesg | tail -170 |
Oops, something went wrong.