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