root/include/uapi/linux/cryptouser.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 AG
   6  * Copyright (C) 2011 Steffen Klassert <steffen.klassert@secunet.com>
   7  *
   8  * This program is free software; you can redistribute it and/or modify it
   9  * 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 WITHOUT
  13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  14  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  15  * more details.
  16  *
  17  * You should have received a copy of the GNU General Public License along with
  18  * 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_H
  23 #define _UAPI_LINUX_CRYPTOUSER_H
  24 
  25 #include <linux/types.h>
  26 
  27 /* Netlink configuration messages.  */
  28 enum {
  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,
  36         __CRYPTO_MSG_MAX
  37 };
  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 64
  42 
  43 /* Netlink message attributes.  */
  44 enum 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,         /* struct crypto_stat */
  58         CRYPTOCFGA_STAT_HASH,           /* struct crypto_stat */
  59         CRYPTOCFGA_STAT_BLKCIPHER,      /* struct crypto_stat */
  60         CRYPTOCFGA_STAT_AEAD,           /* struct crypto_stat */
  61         CRYPTOCFGA_STAT_COMPRESS,       /* struct crypto_stat */
  62         CRYPTOCFGA_STAT_RNG,            /* struct crypto_stat */
  63         CRYPTOCFGA_STAT_CIPHER,         /* struct crypto_stat */
  64         CRYPTOCFGA_STAT_AKCIPHER,       /* struct crypto_stat */
  65         CRYPTOCFGA_STAT_KPP,            /* struct crypto_stat */
  66         CRYPTOCFGA_STAT_ACOMP,          /* struct crypto_stat */
  67         __CRYPTOCFGA_MAX
  68 
  69 #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
  70 };
  71 
  72 struct 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 struct crypto_stat_aead {
  83         char type[CRYPTO_MAX_NAME];
  84         __u64 stat_encrypt_cnt;
  85         __u64 stat_encrypt_tlen;
  86         __u64 stat_decrypt_cnt;
  87         __u64 stat_decrypt_tlen;
  88         __u64 stat_err_cnt;
  89 };
  90 
  91 struct crypto_stat_akcipher {
  92         char type[CRYPTO_MAX_NAME];
  93         __u64 stat_encrypt_cnt;
  94         __u64 stat_encrypt_tlen;
  95         __u64 stat_decrypt_cnt;
  96         __u64 stat_decrypt_tlen;
  97         __u64 stat_verify_cnt;
  98         __u64 stat_sign_cnt;
  99         __u64 stat_err_cnt;
 100 };
 101 
 102 struct crypto_stat_cipher {
 103         char type[CRYPTO_MAX_NAME];
 104         __u64 stat_encrypt_cnt;
 105         __u64 stat_encrypt_tlen;
 106         __u64 stat_decrypt_cnt;
 107         __u64 stat_decrypt_tlen;
 108         __u64 stat_err_cnt;
 109 };
 110 
 111 struct crypto_stat_compress {
 112         char type[CRYPTO_MAX_NAME];
 113         __u64 stat_compress_cnt;
 114         __u64 stat_compress_tlen;
 115         __u64 stat_decompress_cnt;
 116         __u64 stat_decompress_tlen;
 117         __u64 stat_err_cnt;
 118 };
 119 
 120 struct crypto_stat_hash {
 121         char type[CRYPTO_MAX_NAME];
 122         __u64 stat_hash_cnt;
 123         __u64 stat_hash_tlen;
 124         __u64 stat_err_cnt;
 125 };
 126 
 127 struct crypto_stat_kpp {
 128         char type[CRYPTO_MAX_NAME];
 129         __u64 stat_setsecret_cnt;
 130         __u64 stat_generate_public_key_cnt;
 131         __u64 stat_compute_shared_secret_cnt;
 132         __u64 stat_err_cnt;
 133 };
 134 
 135 struct crypto_stat_rng {
 136         char type[CRYPTO_MAX_NAME];
 137         __u64 stat_generate_cnt;
 138         __u64 stat_generate_tlen;
 139         __u64 stat_seed_cnt;
 140         __u64 stat_err_cnt;
 141 };
 142 
 143 struct crypto_stat_larval {
 144         char type[CRYPTO_MAX_NAME];
 145 };
 146 
 147 struct crypto_report_larval {
 148         char type[CRYPTO_MAX_NAME];
 149 };
 150 
 151 struct crypto_report_hash {
 152         char type[CRYPTO_MAX_NAME];
 153         unsigned int blocksize;
 154         unsigned int digestsize;
 155 };
 156 
 157 struct crypto_report_cipher {
 158         char type[CRYPTO_MAX_NAME];
 159         unsigned int blocksize;
 160         unsigned int min_keysize;
 161         unsigned int max_keysize;
 162 };
 163 
 164 struct crypto_report_blkcipher {
 165         char type[CRYPTO_MAX_NAME];
 166         char geniv[CRYPTO_MAX_NAME];
 167         unsigned int blocksize;
 168         unsigned int min_keysize;
 169         unsigned int max_keysize;
 170         unsigned int ivsize;
 171 };
 172 
 173 struct crypto_report_aead {
 174         char type[CRYPTO_MAX_NAME];
 175         char geniv[CRYPTO_MAX_NAME];
 176         unsigned int blocksize;
 177         unsigned int maxauthsize;
 178         unsigned int ivsize;
 179 };
 180 
 181 struct crypto_report_comp {
 182         char type[CRYPTO_MAX_NAME];
 183 };
 184 
 185 struct crypto_report_rng {
 186         char type[CRYPTO_MAX_NAME];
 187         unsigned int seedsize;
 188 };
 189 
 190 struct crypto_report_akcipher {
 191         char type[CRYPTO_MAX_NAME];
 192 };
 193 
 194 struct crypto_report_kpp {
 195         char type[CRYPTO_MAX_NAME];
 196 };
 197 
 198 struct crypto_report_acomp {
 199         char type[CRYPTO_MAX_NAME];
 200 };
 201 
 202 #define CRYPTO_REPORT_MAXSIZE (sizeof(struct crypto_user_alg) + \
 203                                sizeof(struct crypto_report_blkcipher))
 204 
 205 #endif /* _UAPI_LINUX_CRYPTOUSER_H */

/* [<][>][^][v][top][bottom][index][help] */