cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cryptouser.h (5336B)


      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.  */
     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,
     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.  */
     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,		/* 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
     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
     82struct 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
     91struct 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
    102struct 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
    111struct 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
    120struct 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
    127struct 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
    135struct 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
    143struct crypto_stat_larval {
    144	char type[CRYPTO_MAX_NAME];
    145};
    146
    147struct crypto_report_larval {
    148	char type[CRYPTO_MAX_NAME];
    149};
    150
    151struct crypto_report_hash {
    152	char type[CRYPTO_MAX_NAME];
    153	unsigned int blocksize;
    154	unsigned int digestsize;
    155};
    156
    157struct 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
    164struct 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
    173struct 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
    181struct crypto_report_comp {
    182	char type[CRYPTO_MAX_NAME];
    183};
    184
    185struct crypto_report_rng {
    186	char type[CRYPTO_MAX_NAME];
    187	unsigned int seedsize;
    188};
    189
    190struct crypto_report_akcipher {
    191	char type[CRYPTO_MAX_NAME];
    192};
    193
    194struct crypto_report_kpp {
    195	char type[CRYPTO_MAX_NAME];
    196};
    197
    198struct 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 */