0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #ifndef _UAPI_LINUX_CRYPTOUSER_H
0023 #define _UAPI_LINUX_CRYPTOUSER_H
0024
0025 #include <linux/types.h>
0026
0027
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
0044 enum crypto_attr_type_t {
0045 CRYPTOCFGA_UNSPEC,
0046 CRYPTOCFGA_PRIORITY_VAL,
0047 CRYPTOCFGA_REPORT_LARVAL,
0048 CRYPTOCFGA_REPORT_HASH,
0049 CRYPTOCFGA_REPORT_BLKCIPHER,
0050 CRYPTOCFGA_REPORT_AEAD,
0051 CRYPTOCFGA_REPORT_COMPRESS,
0052 CRYPTOCFGA_REPORT_RNG,
0053 CRYPTOCFGA_REPORT_CIPHER,
0054 CRYPTOCFGA_REPORT_AKCIPHER,
0055 CRYPTOCFGA_REPORT_KPP,
0056 CRYPTOCFGA_REPORT_ACOMP,
0057 CRYPTOCFGA_STAT_LARVAL,
0058 CRYPTOCFGA_STAT_HASH,
0059 CRYPTOCFGA_STAT_BLKCIPHER,
0060 CRYPTOCFGA_STAT_AEAD,
0061 CRYPTOCFGA_STAT_COMPRESS,
0062 CRYPTOCFGA_STAT_RNG,
0063 CRYPTOCFGA_STAT_CIPHER,
0064 CRYPTOCFGA_STAT_AKCIPHER,
0065 CRYPTOCFGA_STAT_KPP,
0066 CRYPTOCFGA_STAT_ACOMP,
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