linux-headers (unknown)

(root)/
include/
linux/
cryptouser.h
       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 _LINUX_CRYPTOUSER_H
      23  #define _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 /* _LINUX_CRYPTOUSER_H */