1e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2d0497524SHerbert Xu /* 3d0497524SHerbert Xu * Crypto user configuration API. 4d0497524SHerbert Xu * 5d0497524SHerbert Xu * Copyright (C) 2011 secunet Security Networks AG 6d0497524SHerbert Xu * Copyright (C) 2011 Steffen Klassert <[email protected]> 7d0497524SHerbert Xu * 8d0497524SHerbert Xu * This program is free software; you can redistribute it and/or modify it 9d0497524SHerbert Xu * under the terms and conditions of the GNU General Public License, 10d0497524SHerbert Xu * version 2, as published by the Free Software Foundation. 11d0497524SHerbert Xu * 12d0497524SHerbert Xu * This program is distributed in the hope it will be useful, but WITHOUT 13d0497524SHerbert Xu * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14d0497524SHerbert Xu * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15d0497524SHerbert Xu * more details. 16d0497524SHerbert Xu * 17d0497524SHerbert Xu * You should have received a copy of the GNU General Public License along with 18d0497524SHerbert Xu * this program; if not, write to the Free Software Foundation, Inc., 19d0497524SHerbert Xu * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 20d0497524SHerbert Xu */ 21d0497524SHerbert Xu 2268289c63SMasahiro Yamada #ifndef _UAPI_LINUX_CRYPTOUSER_H 2368289c63SMasahiro Yamada #define _UAPI_LINUX_CRYPTOUSER_H 2468289c63SMasahiro Yamada 259078b4eeSNicolas Dichtel #include <linux/types.h> 269078b4eeSNicolas Dichtel 27d0497524SHerbert Xu /* Netlink configuration messages. */ 28d0497524SHerbert Xu enum { 29d0497524SHerbert Xu CRYPTO_MSG_BASE = 0x10, 30d0497524SHerbert Xu CRYPTO_MSG_NEWALG = 0x10, 31d0497524SHerbert Xu CRYPTO_MSG_DELALG, 32d0497524SHerbert Xu CRYPTO_MSG_UPDATEALG, 33d0497524SHerbert Xu CRYPTO_MSG_GETALG, 349aa867e4SHerbert Xu CRYPTO_MSG_DELRNG, 3529ce50e0SEric Biggers CRYPTO_MSG_GETSTAT, /* No longer supported, do not use. */ 36d0497524SHerbert Xu __CRYPTO_MSG_MAX 37d0497524SHerbert Xu }; 38d0497524SHerbert Xu #define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1) 39d0497524SHerbert Xu #define CRYPTO_NR_MSGTYPES (CRYPTO_MSG_MAX + 1 - CRYPTO_MSG_BASE) 40d0497524SHerbert Xu 414473710dSHerbert Xu #define CRYPTO_MAX_NAME 64 42d0497524SHerbert Xu 43d0497524SHerbert Xu /* Netlink message attributes. */ 44d0497524SHerbert Xu enum crypto_attr_type_t { 45d0497524SHerbert Xu CRYPTOCFGA_UNSPEC, 46d0497524SHerbert Xu CRYPTOCFGA_PRIORITY_VAL, /* __u32 */ 47d0497524SHerbert Xu CRYPTOCFGA_REPORT_LARVAL, /* struct crypto_report_larval */ 48d0497524SHerbert Xu CRYPTOCFGA_REPORT_HASH, /* struct crypto_report_hash */ 49d0497524SHerbert Xu CRYPTOCFGA_REPORT_BLKCIPHER, /* struct crypto_report_blkcipher */ 50d0497524SHerbert Xu CRYPTOCFGA_REPORT_AEAD, /* struct crypto_report_aead */ 51d0497524SHerbert Xu CRYPTOCFGA_REPORT_COMPRESS, /* struct crypto_report_comp */ 52d0497524SHerbert Xu CRYPTOCFGA_REPORT_RNG, /* struct crypto_report_rng */ 53d0497524SHerbert Xu CRYPTOCFGA_REPORT_CIPHER, /* struct crypto_report_cipher */ 54d0497524SHerbert Xu CRYPTOCFGA_REPORT_AKCIPHER, /* struct crypto_report_akcipher */ 554e5f2c40SSalvatore Benedetto CRYPTOCFGA_REPORT_KPP, /* struct crypto_report_kpp */ 562ebda74fSGiovanni Cabiddu CRYPTOCFGA_REPORT_ACOMP, /* struct crypto_report_acomp */ 5729ce50e0SEric Biggers CRYPTOCFGA_STAT_LARVAL, /* No longer supported, do not use. */ 5829ce50e0SEric Biggers CRYPTOCFGA_STAT_HASH, /* No longer supported, do not use. */ 5929ce50e0SEric Biggers CRYPTOCFGA_STAT_BLKCIPHER, /* No longer supported, do not use. */ 6029ce50e0SEric Biggers CRYPTOCFGA_STAT_AEAD, /* No longer supported, do not use. */ 6129ce50e0SEric Biggers CRYPTOCFGA_STAT_COMPRESS, /* No longer supported, do not use. */ 6229ce50e0SEric Biggers CRYPTOCFGA_STAT_RNG, /* No longer supported, do not use. */ 6329ce50e0SEric Biggers CRYPTOCFGA_STAT_CIPHER, /* No longer supported, do not use. */ 6429ce50e0SEric Biggers CRYPTOCFGA_STAT_AKCIPHER, /* No longer supported, do not use. */ 6529ce50e0SEric Biggers CRYPTOCFGA_STAT_KPP, /* No longer supported, do not use. */ 6629ce50e0SEric Biggers CRYPTOCFGA_STAT_ACOMP, /* No longer supported, do not use. */ 67*65c4c93cSLukas Wunner CRYPTOCFGA_REPORT_SIG, /* struct crypto_report_sig */ 68d0497524SHerbert Xu __CRYPTOCFGA_MAX 69d0497524SHerbert Xu 70d0497524SHerbert Xu #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1) 71d0497524SHerbert Xu }; 72d0497524SHerbert Xu 73d0497524SHerbert Xu struct crypto_user_alg { 744473710dSHerbert Xu char cru_name[CRYPTO_MAX_NAME]; 754473710dSHerbert Xu char cru_driver_name[CRYPTO_MAX_NAME]; 764473710dSHerbert Xu char cru_module_name[CRYPTO_MAX_NAME]; 77d0497524SHerbert Xu __u32 cru_type; 78d0497524SHerbert Xu __u32 cru_mask; 79d0497524SHerbert Xu __u32 cru_refcnt; 80d0497524SHerbert Xu __u32 cru_flags; 81d0497524SHerbert Xu }; 82d0497524SHerbert Xu 8329ce50e0SEric Biggers /* No longer supported, do not use. */ 847f0a9d5cSCorentin Labbe struct crypto_stat_aead { 85cac5818cSCorentin Labbe char type[CRYPTO_MAX_NAME]; 866e8e72cdSCorentin Labbe __u64 stat_encrypt_cnt; 87cac5818cSCorentin Labbe __u64 stat_encrypt_tlen; 887f0a9d5cSCorentin Labbe __u64 stat_decrypt_cnt; 897f0a9d5cSCorentin Labbe __u64 stat_decrypt_tlen; 9044f13133SCorentin Labbe __u64 stat_err_cnt; 917f0a9d5cSCorentin Labbe }; 927f0a9d5cSCorentin Labbe 9329ce50e0SEric Biggers /* No longer supported, do not use. */ 947f0a9d5cSCorentin Labbe struct crypto_stat_akcipher { 957f0a9d5cSCorentin Labbe char type[CRYPTO_MAX_NAME]; 967f0a9d5cSCorentin Labbe __u64 stat_encrypt_cnt; 977f0a9d5cSCorentin Labbe __u64 stat_encrypt_tlen; 987f0a9d5cSCorentin Labbe __u64 stat_decrypt_cnt; 997f0a9d5cSCorentin Labbe __u64 stat_decrypt_tlen; 1007f0a9d5cSCorentin Labbe __u64 stat_verify_cnt; 1017f0a9d5cSCorentin Labbe __u64 stat_sign_cnt; 10244f13133SCorentin Labbe __u64 stat_err_cnt; 1037f0a9d5cSCorentin Labbe }; 1047f0a9d5cSCorentin Labbe 10529ce50e0SEric Biggers /* No longer supported, do not use. */ 1067f0a9d5cSCorentin Labbe struct crypto_stat_cipher { 1077f0a9d5cSCorentin Labbe char type[CRYPTO_MAX_NAME]; 1087f0a9d5cSCorentin Labbe __u64 stat_encrypt_cnt; 1097f0a9d5cSCorentin Labbe __u64 stat_encrypt_tlen; 1107f0a9d5cSCorentin Labbe __u64 stat_decrypt_cnt; 1117f0a9d5cSCorentin Labbe __u64 stat_decrypt_tlen; 11244f13133SCorentin Labbe __u64 stat_err_cnt; 1137f0a9d5cSCorentin Labbe }; 1147f0a9d5cSCorentin Labbe 11529ce50e0SEric Biggers /* No longer supported, do not use. */ 1167f0a9d5cSCorentin Labbe struct crypto_stat_compress { 1177f0a9d5cSCorentin Labbe char type[CRYPTO_MAX_NAME]; 1187f0a9d5cSCorentin Labbe __u64 stat_compress_cnt; 1197f0a9d5cSCorentin Labbe __u64 stat_compress_tlen; 1207f0a9d5cSCorentin Labbe __u64 stat_decompress_cnt; 1217f0a9d5cSCorentin Labbe __u64 stat_decompress_tlen; 12244f13133SCorentin Labbe __u64 stat_err_cnt; 1237f0a9d5cSCorentin Labbe }; 1247f0a9d5cSCorentin Labbe 12529ce50e0SEric Biggers /* No longer supported, do not use. */ 1267f0a9d5cSCorentin Labbe struct crypto_stat_hash { 1277f0a9d5cSCorentin Labbe char type[CRYPTO_MAX_NAME]; 1287f0a9d5cSCorentin Labbe __u64 stat_hash_cnt; 1297f0a9d5cSCorentin Labbe __u64 stat_hash_tlen; 13044f13133SCorentin Labbe __u64 stat_err_cnt; 1317f0a9d5cSCorentin Labbe }; 1327f0a9d5cSCorentin Labbe 13329ce50e0SEric Biggers /* No longer supported, do not use. */ 1347f0a9d5cSCorentin Labbe struct crypto_stat_kpp { 1357f0a9d5cSCorentin Labbe char type[CRYPTO_MAX_NAME]; 1367f0a9d5cSCorentin Labbe __u64 stat_setsecret_cnt; 1377f0a9d5cSCorentin Labbe __u64 stat_generate_public_key_cnt; 1387f0a9d5cSCorentin Labbe __u64 stat_compute_shared_secret_cnt; 13944f13133SCorentin Labbe __u64 stat_err_cnt; 140cac5818cSCorentin Labbe }; 1417f0a9d5cSCorentin Labbe 14229ce50e0SEric Biggers /* No longer supported, do not use. */ 1437f0a9d5cSCorentin Labbe struct crypto_stat_rng { 1447f0a9d5cSCorentin Labbe char type[CRYPTO_MAX_NAME]; 1457f0a9d5cSCorentin Labbe __u64 stat_generate_cnt; 1467f0a9d5cSCorentin Labbe __u64 stat_generate_tlen; 1476e8e72cdSCorentin Labbe __u64 stat_seed_cnt; 14844f13133SCorentin Labbe __u64 stat_err_cnt; 149cac5818cSCorentin Labbe }; 1507f0a9d5cSCorentin Labbe 15129ce50e0SEric Biggers /* No longer supported, do not use. */ 1527f0a9d5cSCorentin Labbe struct crypto_stat_larval { 1537f0a9d5cSCorentin Labbe char type[CRYPTO_MAX_NAME]; 154cac5818cSCorentin Labbe }; 155cac5818cSCorentin Labbe 156d0497524SHerbert Xu struct crypto_report_larval { 157d0497524SHerbert Xu char type[CRYPTO_MAX_NAME]; 158d0497524SHerbert Xu }; 159d0497524SHerbert Xu 160d0497524SHerbert Xu struct crypto_report_hash { 161d0497524SHerbert Xu char type[CRYPTO_MAX_NAME]; 162d0497524SHerbert Xu unsigned int blocksize; 163d0497524SHerbert Xu unsigned int digestsize; 164d0497524SHerbert Xu }; 165d0497524SHerbert Xu 166d0497524SHerbert Xu struct crypto_report_cipher { 1674473710dSHerbert Xu char type[CRYPTO_MAX_NAME]; 168d0497524SHerbert Xu unsigned int blocksize; 169d0497524SHerbert Xu unsigned int min_keysize; 170d0497524SHerbert Xu unsigned int max_keysize; 171d0497524SHerbert Xu }; 172d0497524SHerbert Xu 173d0497524SHerbert Xu struct crypto_report_blkcipher { 174d0497524SHerbert Xu char type[CRYPTO_MAX_NAME]; 175d0497524SHerbert Xu char geniv[CRYPTO_MAX_NAME]; 176d0497524SHerbert Xu unsigned int blocksize; 177d0497524SHerbert Xu unsigned int min_keysize; 178d0497524SHerbert Xu unsigned int max_keysize; 179d0497524SHerbert Xu unsigned int ivsize; 180d0497524SHerbert Xu }; 181d0497524SHerbert Xu 182d0497524SHerbert Xu struct crypto_report_aead { 183d0497524SHerbert Xu char type[CRYPTO_MAX_NAME]; 184d0497524SHerbert Xu char geniv[CRYPTO_MAX_NAME]; 185d0497524SHerbert Xu unsigned int blocksize; 186d0497524SHerbert Xu unsigned int maxauthsize; 187d0497524SHerbert Xu unsigned int ivsize; 188d0497524SHerbert Xu }; 189d0497524SHerbert Xu 190d0497524SHerbert Xu struct crypto_report_comp { 191d0497524SHerbert Xu char type[CRYPTO_MAX_NAME]; 192d0497524SHerbert Xu }; 193d0497524SHerbert Xu 194d0497524SHerbert Xu struct crypto_report_rng { 195d0497524SHerbert Xu char type[CRYPTO_MAX_NAME]; 196d0497524SHerbert Xu unsigned int seedsize; 197d0497524SHerbert Xu }; 198d0497524SHerbert Xu 199d0497524SHerbert Xu struct crypto_report_akcipher { 200d0497524SHerbert Xu char type[CRYPTO_MAX_NAME]; 201d0497524SHerbert Xu }; 202d0497524SHerbert Xu 2034e5f2c40SSalvatore Benedetto struct crypto_report_kpp { 2044e5f2c40SSalvatore Benedetto char type[CRYPTO_MAX_NAME]; 2054e5f2c40SSalvatore Benedetto }; 2064e5f2c40SSalvatore Benedetto 2072ebda74fSGiovanni Cabiddu struct crypto_report_acomp { 2082ebda74fSGiovanni Cabiddu char type[CRYPTO_MAX_NAME]; 2092ebda74fSGiovanni Cabiddu }; 2102ebda74fSGiovanni Cabiddu 211*65c4c93cSLukas Wunner struct crypto_report_sig { 212*65c4c93cSLukas Wunner char type[CRYPTO_MAX_NAME]; 213*65c4c93cSLukas Wunner }; 214*65c4c93cSLukas Wunner 215d0497524SHerbert Xu #define CRYPTO_REPORT_MAXSIZE (sizeof(struct crypto_user_alg) + \ 216d0497524SHerbert Xu sizeof(struct crypto_report_blkcipher)) 21768289c63SMasahiro Yamada 21868289c63SMasahiro Yamada #endif /* _UAPI_LINUX_CRYPTOUSER_H */ 219