mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-16 07:24:39 +08:00
349d03ffd5
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 <vdronov@redhat.com> Reviewed-by: Harald Freudenberger <freude@linux.ibm.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
35 lines
1.0 KiB
Bash
35 lines
1.0 KiB
Bash
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Copyright (C) 2022 Red Hat, Inc.
|
|
# Author: Vladis Dronov <vdronoff@gmail.com>
|
|
#
|
|
# 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
|