^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Quick & dirty crypto testing module.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * This will only exist until we have a better testing mechanism
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * (e.g. a char device).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * Copyright (c) 2002 Jean-Francois Dive <jef@linuxbe.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * Copyright (c) 2007 Nokia Siemens Networks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #ifndef _CRYPTO_TCRYPT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define _CRYPTO_TCRYPT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct cipher_speed_template {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) const char *key;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) unsigned int klen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) struct aead_speed_template {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) const char *key;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) unsigned int klen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) struct hash_speed {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) unsigned int blen; /* buffer length */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) unsigned int plen; /* per-update length */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * DES test vectors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define DES3_SPEED_VECTORS 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) static struct cipher_speed_template des3_speed_template[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) "\x55\x55\x55\x55\x55\x55\x55\x55"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) "\xfe\xdc\xba\x98\x76\x54\x32\x10",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) .klen = 24,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) * Cipher speed tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) static u8 speed_template_8[] = {8, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) static u8 speed_template_16[] = {16, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) static u8 speed_template_24[] = {24, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) static u8 speed_template_8_16[] = {8, 16, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) static u8 speed_template_8_32[] = {8, 32, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) static u8 speed_template_16_32[] = {16, 32, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) static u8 speed_template_20_28_36[] = {20, 28, 36, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) static u8 speed_template_32_48[] = {32, 48, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) static u8 speed_template_32_64[] = {32, 64, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) static u8 speed_template_32[] = {32, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) * AEAD speed tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) static u8 aead_speed_template_19[] = {19, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) static u8 aead_speed_template_20[] = {20, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) static u8 aead_speed_template_36[] = {36, 0};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) * Digest speed tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) static struct hash_speed generic_hash_speed_template[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) { .blen = 16, .plen = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) { .blen = 64, .plen = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) { .blen = 64, .plen = 64, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) { .blen = 256, .plen = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) { .blen = 256, .plen = 64, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) { .blen = 256, .plen = 256, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) { .blen = 1024, .plen = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) { .blen = 1024, .plen = 256, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) { .blen = 1024, .plen = 1024, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) { .blen = 2048, .plen = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) { .blen = 2048, .plen = 256, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) { .blen = 2048, .plen = 1024, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) { .blen = 2048, .plen = 2048, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) { .blen = 4096, .plen = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) { .blen = 4096, .plen = 256, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) { .blen = 4096, .plen = 1024, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) { .blen = 4096, .plen = 4096, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) { .blen = 8192, .plen = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) { .blen = 8192, .plen = 256, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) { .blen = 8192, .plen = 1024, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) { .blen = 8192, .plen = 4096, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) { .blen = 8192, .plen = 8192, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) /* End marker */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) { .blen = 0, .plen = 0, }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) static struct hash_speed poly1305_speed_template[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) { .blen = 96, .plen = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) { .blen = 96, .plen = 32, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) { .blen = 96, .plen = 96, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) { .blen = 288, .plen = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) { .blen = 288, .plen = 32, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) { .blen = 288, .plen = 288, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) { .blen = 1056, .plen = 32, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) { .blen = 1056, .plen = 1056, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) { .blen = 2080, .plen = 32, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) { .blen = 2080, .plen = 2080, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) { .blen = 4128, .plen = 4128, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) { .blen = 8224, .plen = 8224, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) /* End marker */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) { .blen = 0, .plen = 0, }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #endif /* _CRYPTO_TCRYPT_H */