1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * Crypto user configuration API. 4*f80ad8b4SAndroid Build Coastguard Worker * 5*f80ad8b4SAndroid Build Coastguard Worker * Copyright (C) 2011 secunet Security Networks AG 6*f80ad8b4SAndroid Build Coastguard Worker * Copyright (C) 2011 Steffen Klassert <[email protected]> 7*f80ad8b4SAndroid Build Coastguard Worker * 8*f80ad8b4SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or modify it 9*f80ad8b4SAndroid Build Coastguard Worker * under the terms and conditions of the GNU General Public License, 10*f80ad8b4SAndroid Build Coastguard Worker * version 2, as published by the Free Software Foundation. 11*f80ad8b4SAndroid Build Coastguard Worker * 12*f80ad8b4SAndroid Build Coastguard Worker * This program is distributed in the hope it will be useful, but WITHOUT 13*f80ad8b4SAndroid Build Coastguard Worker * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14*f80ad8b4SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15*f80ad8b4SAndroid Build Coastguard Worker * more details. 16*f80ad8b4SAndroid Build Coastguard Worker * 17*f80ad8b4SAndroid Build Coastguard Worker * You should have received a copy of the GNU General Public License along with 18*f80ad8b4SAndroid Build Coastguard Worker * this program; if not, write to the Free Software Foundation, Inc., 19*f80ad8b4SAndroid Build Coastguard Worker * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 20*f80ad8b4SAndroid Build Coastguard Worker */ 21*f80ad8b4SAndroid Build Coastguard Worker 22*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_CRYPTOUSER_H 23*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_CRYPTOUSER_H 24*f80ad8b4SAndroid Build Coastguard Worker 25*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 26*f80ad8b4SAndroid Build Coastguard Worker 27*f80ad8b4SAndroid Build Coastguard Worker /* Netlink configuration messages. */ 28*f80ad8b4SAndroid Build Coastguard Worker enum { 29*f80ad8b4SAndroid Build Coastguard Worker CRYPTO_MSG_BASE = 0x10, 30*f80ad8b4SAndroid Build Coastguard Worker CRYPTO_MSG_NEWALG = 0x10, 31*f80ad8b4SAndroid Build Coastguard Worker CRYPTO_MSG_DELALG, 32*f80ad8b4SAndroid Build Coastguard Worker CRYPTO_MSG_UPDATEALG, 33*f80ad8b4SAndroid Build Coastguard Worker CRYPTO_MSG_GETALG, 34*f80ad8b4SAndroid Build Coastguard Worker CRYPTO_MSG_DELRNG, 35*f80ad8b4SAndroid Build Coastguard Worker CRYPTO_MSG_GETSTAT, /* No longer supported, do not use. */ 36*f80ad8b4SAndroid Build Coastguard Worker __CRYPTO_MSG_MAX 37*f80ad8b4SAndroid Build Coastguard Worker }; 38*f80ad8b4SAndroid Build Coastguard Worker #define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1) 39*f80ad8b4SAndroid Build Coastguard Worker #define CRYPTO_NR_MSGTYPES (CRYPTO_MSG_MAX + 1 - CRYPTO_MSG_BASE) 40*f80ad8b4SAndroid Build Coastguard Worker 41*f80ad8b4SAndroid Build Coastguard Worker #define CRYPTO_MAX_NAME 64 42*f80ad8b4SAndroid Build Coastguard Worker 43*f80ad8b4SAndroid Build Coastguard Worker /* Netlink message attributes. */ 44*f80ad8b4SAndroid Build Coastguard Worker enum crypto_attr_type_t { 45*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_UNSPEC, 46*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_PRIORITY_VAL, /* __u32 */ 47*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_LARVAL, /* struct crypto_report_larval */ 48*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_HASH, /* struct crypto_report_hash */ 49*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_BLKCIPHER, /* struct crypto_report_blkcipher */ 50*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_AEAD, /* struct crypto_report_aead */ 51*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_COMPRESS, /* struct crypto_report_comp */ 52*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_RNG, /* struct crypto_report_rng */ 53*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_CIPHER, /* struct crypto_report_cipher */ 54*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_AKCIPHER, /* struct crypto_report_akcipher */ 55*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_KPP, /* struct crypto_report_kpp */ 56*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_ACOMP, /* struct crypto_report_acomp */ 57*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_LARVAL, /* No longer supported, do not use. */ 58*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_HASH, /* No longer supported, do not use. */ 59*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_BLKCIPHER, /* No longer supported, do not use. */ 60*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_AEAD, /* No longer supported, do not use. */ 61*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_COMPRESS, /* No longer supported, do not use. */ 62*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_RNG, /* No longer supported, do not use. */ 63*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_CIPHER, /* No longer supported, do not use. */ 64*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_AKCIPHER, /* No longer supported, do not use. */ 65*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_KPP, /* No longer supported, do not use. */ 66*f80ad8b4SAndroid Build Coastguard Worker CRYPTOCFGA_STAT_ACOMP, /* No longer supported, do not use. */ 67*f80ad8b4SAndroid Build Coastguard Worker __CRYPTOCFGA_MAX 68*f80ad8b4SAndroid Build Coastguard Worker 69*f80ad8b4SAndroid Build Coastguard Worker #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1) 70*f80ad8b4SAndroid Build Coastguard Worker }; 71*f80ad8b4SAndroid Build Coastguard Worker 72*f80ad8b4SAndroid Build Coastguard Worker struct crypto_user_alg { 73*f80ad8b4SAndroid Build Coastguard Worker char cru_name[CRYPTO_MAX_NAME]; 74*f80ad8b4SAndroid Build Coastguard Worker char cru_driver_name[CRYPTO_MAX_NAME]; 75*f80ad8b4SAndroid Build Coastguard Worker char cru_module_name[CRYPTO_MAX_NAME]; 76*f80ad8b4SAndroid Build Coastguard Worker __u32 cru_type; 77*f80ad8b4SAndroid Build Coastguard Worker __u32 cru_mask; 78*f80ad8b4SAndroid Build Coastguard Worker __u32 cru_refcnt; 79*f80ad8b4SAndroid Build Coastguard Worker __u32 cru_flags; 80*f80ad8b4SAndroid Build Coastguard Worker }; 81*f80ad8b4SAndroid Build Coastguard Worker 82*f80ad8b4SAndroid Build Coastguard Worker /* No longer supported, do not use. */ 83*f80ad8b4SAndroid Build Coastguard Worker struct crypto_stat_aead { 84*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 85*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_encrypt_cnt; 86*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_encrypt_tlen; 87*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_decrypt_cnt; 88*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_decrypt_tlen; 89*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_err_cnt; 90*f80ad8b4SAndroid Build Coastguard Worker }; 91*f80ad8b4SAndroid Build Coastguard Worker 92*f80ad8b4SAndroid Build Coastguard Worker /* No longer supported, do not use. */ 93*f80ad8b4SAndroid Build Coastguard Worker struct crypto_stat_akcipher { 94*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 95*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_encrypt_cnt; 96*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_encrypt_tlen; 97*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_decrypt_cnt; 98*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_decrypt_tlen; 99*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_verify_cnt; 100*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_sign_cnt; 101*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_err_cnt; 102*f80ad8b4SAndroid Build Coastguard Worker }; 103*f80ad8b4SAndroid Build Coastguard Worker 104*f80ad8b4SAndroid Build Coastguard Worker /* No longer supported, do not use. */ 105*f80ad8b4SAndroid Build Coastguard Worker struct crypto_stat_cipher { 106*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 107*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_encrypt_cnt; 108*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_encrypt_tlen; 109*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_decrypt_cnt; 110*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_decrypt_tlen; 111*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_err_cnt; 112*f80ad8b4SAndroid Build Coastguard Worker }; 113*f80ad8b4SAndroid Build Coastguard Worker 114*f80ad8b4SAndroid Build Coastguard Worker /* No longer supported, do not use. */ 115*f80ad8b4SAndroid Build Coastguard Worker struct crypto_stat_compress { 116*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 117*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_compress_cnt; 118*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_compress_tlen; 119*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_decompress_cnt; 120*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_decompress_tlen; 121*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_err_cnt; 122*f80ad8b4SAndroid Build Coastguard Worker }; 123*f80ad8b4SAndroid Build Coastguard Worker 124*f80ad8b4SAndroid Build Coastguard Worker /* No longer supported, do not use. */ 125*f80ad8b4SAndroid Build Coastguard Worker struct crypto_stat_hash { 126*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 127*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_hash_cnt; 128*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_hash_tlen; 129*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_err_cnt; 130*f80ad8b4SAndroid Build Coastguard Worker }; 131*f80ad8b4SAndroid Build Coastguard Worker 132*f80ad8b4SAndroid Build Coastguard Worker /* No longer supported, do not use. */ 133*f80ad8b4SAndroid Build Coastguard Worker struct crypto_stat_kpp { 134*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 135*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_setsecret_cnt; 136*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_generate_public_key_cnt; 137*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_compute_shared_secret_cnt; 138*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_err_cnt; 139*f80ad8b4SAndroid Build Coastguard Worker }; 140*f80ad8b4SAndroid Build Coastguard Worker 141*f80ad8b4SAndroid Build Coastguard Worker /* No longer supported, do not use. */ 142*f80ad8b4SAndroid Build Coastguard Worker struct crypto_stat_rng { 143*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 144*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_generate_cnt; 145*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_generate_tlen; 146*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_seed_cnt; 147*f80ad8b4SAndroid Build Coastguard Worker __u64 stat_err_cnt; 148*f80ad8b4SAndroid Build Coastguard Worker }; 149*f80ad8b4SAndroid Build Coastguard Worker 150*f80ad8b4SAndroid Build Coastguard Worker /* No longer supported, do not use. */ 151*f80ad8b4SAndroid Build Coastguard Worker struct crypto_stat_larval { 152*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 153*f80ad8b4SAndroid Build Coastguard Worker }; 154*f80ad8b4SAndroid Build Coastguard Worker 155*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_larval { 156*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 157*f80ad8b4SAndroid Build Coastguard Worker }; 158*f80ad8b4SAndroid Build Coastguard Worker 159*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_hash { 160*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 161*f80ad8b4SAndroid Build Coastguard Worker unsigned int blocksize; 162*f80ad8b4SAndroid Build Coastguard Worker unsigned int digestsize; 163*f80ad8b4SAndroid Build Coastguard Worker }; 164*f80ad8b4SAndroid Build Coastguard Worker 165*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_cipher { 166*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 167*f80ad8b4SAndroid Build Coastguard Worker unsigned int blocksize; 168*f80ad8b4SAndroid Build Coastguard Worker unsigned int min_keysize; 169*f80ad8b4SAndroid Build Coastguard Worker unsigned int max_keysize; 170*f80ad8b4SAndroid Build Coastguard Worker }; 171*f80ad8b4SAndroid Build Coastguard Worker 172*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_blkcipher { 173*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 174*f80ad8b4SAndroid Build Coastguard Worker char geniv[CRYPTO_MAX_NAME]; 175*f80ad8b4SAndroid Build Coastguard Worker unsigned int blocksize; 176*f80ad8b4SAndroid Build Coastguard Worker unsigned int min_keysize; 177*f80ad8b4SAndroid Build Coastguard Worker unsigned int max_keysize; 178*f80ad8b4SAndroid Build Coastguard Worker unsigned int ivsize; 179*f80ad8b4SAndroid Build Coastguard Worker }; 180*f80ad8b4SAndroid Build Coastguard Worker 181*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_aead { 182*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 183*f80ad8b4SAndroid Build Coastguard Worker char geniv[CRYPTO_MAX_NAME]; 184*f80ad8b4SAndroid Build Coastguard Worker unsigned int blocksize; 185*f80ad8b4SAndroid Build Coastguard Worker unsigned int maxauthsize; 186*f80ad8b4SAndroid Build Coastguard Worker unsigned int ivsize; 187*f80ad8b4SAndroid Build Coastguard Worker }; 188*f80ad8b4SAndroid Build Coastguard Worker 189*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_comp { 190*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 191*f80ad8b4SAndroid Build Coastguard Worker }; 192*f80ad8b4SAndroid Build Coastguard Worker 193*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_rng { 194*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 195*f80ad8b4SAndroid Build Coastguard Worker unsigned int seedsize; 196*f80ad8b4SAndroid Build Coastguard Worker }; 197*f80ad8b4SAndroid Build Coastguard Worker 198*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_akcipher { 199*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 200*f80ad8b4SAndroid Build Coastguard Worker }; 201*f80ad8b4SAndroid Build Coastguard Worker 202*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_kpp { 203*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 204*f80ad8b4SAndroid Build Coastguard Worker }; 205*f80ad8b4SAndroid Build Coastguard Worker 206*f80ad8b4SAndroid Build Coastguard Worker struct crypto_report_acomp { 207*f80ad8b4SAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 208*f80ad8b4SAndroid Build Coastguard Worker }; 209*f80ad8b4SAndroid Build Coastguard Worker 210*f80ad8b4SAndroid Build Coastguard Worker #define CRYPTO_REPORT_MAXSIZE (sizeof(struct crypto_user_alg) + \ 211*f80ad8b4SAndroid Build Coastguard Worker sizeof(struct crypto_report_blkcipher)) 212*f80ad8b4SAndroid Build Coastguard Worker 213*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_CRYPTOUSER_H */ 214