Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 /*
0003  * Crypto user configuration API.
0004  *
0005  * Copyright (C) 2011 secunet Security Networks AG
0006  * Copyright (C) 2011 Steffen Klassert <steffen.klassert@secunet.com>
0007  *
0008  * This program is free software; you can redistribute it and/or modify it
0009  * under the terms and conditions of the GNU General Public License,
0010  * version 2, as published by the Free Software Foundation.
0011  *
0012  * This program is distributed in the hope it will be useful, but WITHOUT
0013  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0014  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
0015  * more details.
0016  *
0017  * You should have received a copy of the GNU General Public License along with
0018  * this program; if not, write to the Free Software Foundation, Inc.,
0019  * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
0020  */
0021 
0022 #ifndef _UAPI_LINUX_CRYPTOUSER_H
0023 #define _UAPI_LINUX_CRYPTOUSER_H
0024 
0025 #include <linux/types.h>
0026 
0027 /* Netlink configuration messages.  */
0028 enum {
0029     CRYPTO_MSG_BASE = 0x10,
0030     CRYPTO_MSG_NEWALG = 0x10,
0031     CRYPTO_MSG_DELALG,
0032     CRYPTO_MSG_UPDATEALG,
0033     CRYPTO_MSG_GETALG,
0034     CRYPTO_MSG_DELRNG,
0035     CRYPTO_MSG_GETSTAT,
0036     __CRYPTO_MSG_MAX
0037 };
0038 #define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1)
0039 #define CRYPTO_NR_MSGTYPES (CRYPTO_MSG_MAX + 1 - CRYPTO_MSG_BASE)
0040 
0041 #define CRYPTO_MAX_NAME 64
0042 
0043 /* Netlink message attributes.  */
0044 enum crypto_attr_type_t {
0045     CRYPTOCFGA_UNSPEC,
0046     CRYPTOCFGA_PRIORITY_VAL,    /* __u32 */
0047     CRYPTOCFGA_REPORT_LARVAL,   /* struct crypto_report_larval */
0048     CRYPTOCFGA_REPORT_HASH,     /* struct crypto_report_hash */
0049     CRYPTOCFGA_REPORT_BLKCIPHER,    /* struct crypto_report_blkcipher */
0050     CRYPTOCFGA_REPORT_AEAD,     /* struct crypto_report_aead */
0051     CRYPTOCFGA_REPORT_COMPRESS, /* struct crypto_report_comp */
0052     CRYPTOCFGA_REPORT_RNG,      /* struct crypto_report_rng */
0053     CRYPTOCFGA_REPORT_CIPHER,   /* struct crypto_report_cipher */
0054     CRYPTOCFGA_REPORT_AKCIPHER, /* struct crypto_report_akcipher */
0055     CRYPTOCFGA_REPORT_KPP,      /* struct crypto_report_kpp */
0056     CRYPTOCFGA_REPORT_ACOMP,    /* struct crypto_report_acomp */
0057     CRYPTOCFGA_STAT_LARVAL,     /* struct crypto_stat */
0058     CRYPTOCFGA_STAT_HASH,       /* struct crypto_stat */
0059     CRYPTOCFGA_STAT_BLKCIPHER,  /* struct crypto_stat */
0060     CRYPTOCFGA_STAT_AEAD,       /* struct crypto_stat */
0061     CRYPTOCFGA_STAT_COMPRESS,   /* struct crypto_stat */
0062     CRYPTOCFGA_STAT_RNG,        /* struct crypto_stat */
0063     CRYPTOCFGA_STAT_CIPHER,     /* struct crypto_stat */
0064     CRYPTOCFGA_STAT_AKCIPHER,   /* struct crypto_stat */
0065     CRYPTOCFGA_STAT_KPP,        /* struct crypto_stat */
0066     CRYPTOCFGA_STAT_ACOMP,      /* struct crypto_stat */
0067     __CRYPTOCFGA_MAX
0068 
0069 #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
0070 };
0071 
0072 struct crypto_user_alg {
0073     char cru_name[CRYPTO_MAX_NAME];
0074     char cru_driver_name[CRYPTO_MAX_NAME];
0075     char cru_module_name[CRYPTO_MAX_NAME];
0076     __u32 cru_type;
0077     __u32 cru_mask;
0078     __u32 cru_refcnt;
0079     __u32 cru_flags;
0080 };
0081 
0082 struct crypto_stat_aead {
0083     char type[CRYPTO_MAX_NAME];
0084     __u64 stat_encrypt_cnt;
0085     __u64 stat_encrypt_tlen;
0086     __u64 stat_decrypt_cnt;
0087     __u64 stat_decrypt_tlen;
0088     __u64 stat_err_cnt;
0089 };
0090 
0091 struct crypto_stat_akcipher {
0092     char type[CRYPTO_MAX_NAME];
0093     __u64 stat_encrypt_cnt;
0094     __u64 stat_encrypt_tlen;
0095     __u64 stat_decrypt_cnt;
0096     __u64 stat_decrypt_tlen;
0097     __u64 stat_verify_cnt;
0098     __u64 stat_sign_cnt;
0099     __u64 stat_err_cnt;
0100 };
0101 
0102 struct crypto_stat_cipher {
0103     char type[CRYPTO_MAX_NAME];
0104     __u64 stat_encrypt_cnt;
0105     __u64 stat_encrypt_tlen;
0106     __u64 stat_decrypt_cnt;
0107     __u64 stat_decrypt_tlen;
0108     __u64 stat_err_cnt;
0109 };
0110 
0111 struct crypto_stat_compress {
0112     char type[CRYPTO_MAX_NAME];
0113     __u64 stat_compress_cnt;
0114     __u64 stat_compress_tlen;
0115     __u64 stat_decompress_cnt;
0116     __u64 stat_decompress_tlen;
0117     __u64 stat_err_cnt;
0118 };
0119 
0120 struct crypto_stat_hash {
0121     char type[CRYPTO_MAX_NAME];
0122     __u64 stat_hash_cnt;
0123     __u64 stat_hash_tlen;
0124     __u64 stat_err_cnt;
0125 };
0126 
0127 struct crypto_stat_kpp {
0128     char type[CRYPTO_MAX_NAME];
0129     __u64 stat_setsecret_cnt;
0130     __u64 stat_generate_public_key_cnt;
0131     __u64 stat_compute_shared_secret_cnt;
0132     __u64 stat_err_cnt;
0133 };
0134 
0135 struct crypto_stat_rng {
0136     char type[CRYPTO_MAX_NAME];
0137     __u64 stat_generate_cnt;
0138     __u64 stat_generate_tlen;
0139     __u64 stat_seed_cnt;
0140     __u64 stat_err_cnt;
0141 };
0142 
0143 struct crypto_stat_larval {
0144     char type[CRYPTO_MAX_NAME];
0145 };
0146 
0147 struct crypto_report_larval {
0148     char type[CRYPTO_MAX_NAME];
0149 };
0150 
0151 struct crypto_report_hash {
0152     char type[CRYPTO_MAX_NAME];
0153     unsigned int blocksize;
0154     unsigned int digestsize;
0155 };
0156 
0157 struct crypto_report_cipher {
0158     char type[CRYPTO_MAX_NAME];
0159     unsigned int blocksize;
0160     unsigned int min_keysize;
0161     unsigned int max_keysize;
0162 };
0163 
0164 struct crypto_report_blkcipher {
0165     char type[CRYPTO_MAX_NAME];
0166     char geniv[CRYPTO_MAX_NAME];
0167     unsigned int blocksize;
0168     unsigned int min_keysize;
0169     unsigned int max_keysize;
0170     unsigned int ivsize;
0171 };
0172 
0173 struct crypto_report_aead {
0174     char type[CRYPTO_MAX_NAME];
0175     char geniv[CRYPTO_MAX_NAME];
0176     unsigned int blocksize;
0177     unsigned int maxauthsize;
0178     unsigned int ivsize;
0179 };
0180 
0181 struct crypto_report_comp {
0182     char type[CRYPTO_MAX_NAME];
0183 };
0184 
0185 struct crypto_report_rng {
0186     char type[CRYPTO_MAX_NAME];
0187     unsigned int seedsize;
0188 };
0189 
0190 struct crypto_report_akcipher {
0191     char type[CRYPTO_MAX_NAME];
0192 };
0193 
0194 struct crypto_report_kpp {
0195     char type[CRYPTO_MAX_NAME];
0196 };
0197 
0198 struct crypto_report_acomp {
0199     char type[CRYPTO_MAX_NAME];
0200 };
0201 
0202 #define CRYPTO_REPORT_MAXSIZE (sizeof(struct crypto_user_alg) + \
0203                    sizeof(struct crypto_report_blkcipher))
0204 
0205 #endif /* _UAPI_LINUX_CRYPTOUSER_H */