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