cpp-d1064d
[cross.git] / i686-linux-gnu-4.7 / usr / 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 #include <linux/types.h>
23
24 /* Netlink configuration messages.  */
25 enum {
26         CRYPTO_MSG_BASE = 0x10,
27         CRYPTO_MSG_NEWALG = 0x10,
28         CRYPTO_MSG_DELALG,
29         CRYPTO_MSG_UPDATEALG,
30         CRYPTO_MSG_GETALG,
31         CRYPTO_MSG_DELRNG,
32         __CRYPTO_MSG_MAX
33 };
34 #define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1)
35 #define CRYPTO_NR_MSGTYPES (CRYPTO_MSG_MAX + 1 - CRYPTO_MSG_BASE)
36
37 #define CRYPTO_MAX_NAME 64
38
39 /* Netlink message attributes.  */
40 enum crypto_attr_type_t {
41         CRYPTOCFGA_UNSPEC,
42         CRYPTOCFGA_PRIORITY_VAL,        /* __u32 */
43         CRYPTOCFGA_REPORT_LARVAL,       /* struct crypto_report_larval */
44         CRYPTOCFGA_REPORT_HASH,         /* struct crypto_report_hash */
45         CRYPTOCFGA_REPORT_BLKCIPHER,    /* struct crypto_report_blkcipher */
46         CRYPTOCFGA_REPORT_AEAD,         /* struct crypto_report_aead */
47         CRYPTOCFGA_REPORT_COMPRESS,     /* struct crypto_report_comp */
48         CRYPTOCFGA_REPORT_RNG,          /* struct crypto_report_rng */
49         CRYPTOCFGA_REPORT_CIPHER,       /* struct crypto_report_cipher */
50         CRYPTOCFGA_REPORT_AKCIPHER,     /* struct crypto_report_akcipher */
51         CRYPTOCFGA_REPORT_KPP,          /* struct crypto_report_kpp */
52         CRYPTOCFGA_REPORT_ACOMP,        /* struct crypto_report_acomp */
53         __CRYPTOCFGA_MAX
54
55 #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
56 };
57
58 struct crypto_user_alg {
59         char cru_name[CRYPTO_MAX_NAME];
60         char cru_driver_name[CRYPTO_MAX_NAME];
61         char cru_module_name[CRYPTO_MAX_NAME];
62         __u32 cru_type;
63         __u32 cru_mask;
64         __u32 cru_refcnt;
65         __u32 cru_flags;
66 };
67
68 struct crypto_report_larval {
69         char type[CRYPTO_MAX_NAME];
70 };
71
72 struct crypto_report_hash {
73         char type[CRYPTO_MAX_NAME];
74         unsigned int blocksize;
75         unsigned int digestsize;
76 };
77
78 struct crypto_report_cipher {
79         char type[CRYPTO_MAX_NAME];
80         unsigned int blocksize;
81         unsigned int min_keysize;
82         unsigned int max_keysize;
83 };
84
85 struct crypto_report_blkcipher {
86         char type[CRYPTO_MAX_NAME];
87         char geniv[CRYPTO_MAX_NAME];
88         unsigned int blocksize;
89         unsigned int min_keysize;
90         unsigned int max_keysize;
91         unsigned int ivsize;
92 };
93
94 struct crypto_report_aead {
95         char type[CRYPTO_MAX_NAME];
96         char geniv[CRYPTO_MAX_NAME];
97         unsigned int blocksize;
98         unsigned int maxauthsize;
99         unsigned int ivsize;
100 };
101
102 struct crypto_report_comp {
103         char type[CRYPTO_MAX_NAME];
104 };
105
106 struct crypto_report_rng {
107         char type[CRYPTO_MAX_NAME];
108         unsigned int seedsize;
109 };
110
111 struct crypto_report_akcipher {
112         char type[CRYPTO_MAX_NAME];
113 };
114
115 struct crypto_report_kpp {
116         char type[CRYPTO_MAX_NAME];
117 };
118
119 struct crypto_report_acomp {
120         char type[CRYPTO_MAX_NAME];
121 };
122
123 #define CRYPTO_REPORT_MAXSIZE (sizeof(struct crypto_user_alg) + \
124                                sizeof(struct crypto_report_blkcipher))