1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later 2*49cdfc7eSAndroid Build Coastguard Worker /* 3*49cdfc7eSAndroid Build Coastguard Worker * Copyright (c) 2018 Richard Palethorpe <[email protected]> 4*49cdfc7eSAndroid Build Coastguard Worker */ 5*49cdfc7eSAndroid Build Coastguard Worker 6*49cdfc7eSAndroid Build Coastguard Worker #ifndef LAPI_CRYPTOUSER_H__ 7*49cdfc7eSAndroid Build Coastguard Worker #define LAPI_CRYPTOUSER_H__ 8*49cdfc7eSAndroid Build Coastguard Worker 9*49cdfc7eSAndroid Build Coastguard Worker #ifdef HAVE_LINUX_CRYPTOUSER_H 10*49cdfc7eSAndroid Build Coastguard Worker # include <linux/cryptouser.h> 11*49cdfc7eSAndroid Build Coastguard Worker #else 12*49cdfc7eSAndroid Build Coastguard Worker # include <stdint.h> 13*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_MAX_NAME 64 14*49cdfc7eSAndroid Build Coastguard Worker 15*49cdfc7eSAndroid Build Coastguard Worker enum { 16*49cdfc7eSAndroid Build Coastguard Worker CRYPTO_MSG_BASE = 0x10, 17*49cdfc7eSAndroid Build Coastguard Worker CRYPTO_MSG_NEWALG = 0x10, 18*49cdfc7eSAndroid Build Coastguard Worker CRYPTO_MSG_DELALG, 19*49cdfc7eSAndroid Build Coastguard Worker CRYPTO_MSG_UPDATEALG, 20*49cdfc7eSAndroid Build Coastguard Worker CRYPTO_MSG_GETALG, 21*49cdfc7eSAndroid Build Coastguard Worker CRYPTO_MSG_DELRNG, 22*49cdfc7eSAndroid Build Coastguard Worker __CRYPTO_MSG_MAX 23*49cdfc7eSAndroid Build Coastguard Worker }; 24*49cdfc7eSAndroid Build Coastguard Worker 25*49cdfc7eSAndroid Build Coastguard Worker enum crypto_attr_type_t { 26*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_UNSPEC, 27*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_PRIORITY_VAL, /* uint32_t */ 28*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_LARVAL, /* struct crypto_report_larval */ 29*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_HASH, /* struct crypto_report_hash */ 30*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_BLKCIPHER, /* struct crypto_report_blkcipher */ 31*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_AEAD, /* struct crypto_report_aead */ 32*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_COMPRESS, /* struct crypto_report_comp */ 33*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_RNG, /* struct crypto_report_rng */ 34*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_CIPHER, /* struct crypto_report_cipher */ 35*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_AKCIPHER, /* struct crypto_report_akcipher */ 36*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_KPP, /* struct crypto_report_kpp */ 37*49cdfc7eSAndroid Build Coastguard Worker CRYPTOCFGA_REPORT_ACOMP, /* struct crypto_report_acomp */ 38*49cdfc7eSAndroid Build Coastguard Worker __CRYPTOCFGA_MAX 39*49cdfc7eSAndroid Build Coastguard Worker 40*49cdfc7eSAndroid Build Coastguard Worker #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1) 41*49cdfc7eSAndroid Build Coastguard Worker }; 42*49cdfc7eSAndroid Build Coastguard Worker 43*49cdfc7eSAndroid Build Coastguard Worker struct crypto_user_alg { 44*49cdfc7eSAndroid Build Coastguard Worker char cru_name[CRYPTO_MAX_NAME]; 45*49cdfc7eSAndroid Build Coastguard Worker char cru_driver_name[CRYPTO_MAX_NAME]; 46*49cdfc7eSAndroid Build Coastguard Worker char cru_module_name[CRYPTO_MAX_NAME]; 47*49cdfc7eSAndroid Build Coastguard Worker uint32_t cru_type; 48*49cdfc7eSAndroid Build Coastguard Worker uint32_t cru_mask; 49*49cdfc7eSAndroid Build Coastguard Worker uint32_t cru_refcnt; 50*49cdfc7eSAndroid Build Coastguard Worker uint32_t cru_flags; 51*49cdfc7eSAndroid Build Coastguard Worker }; 52*49cdfc7eSAndroid Build Coastguard Worker 53*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_larval { 54*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 55*49cdfc7eSAndroid Build Coastguard Worker }; 56*49cdfc7eSAndroid Build Coastguard Worker 57*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_hash { 58*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 59*49cdfc7eSAndroid Build Coastguard Worker unsigned int blocksize; 60*49cdfc7eSAndroid Build Coastguard Worker unsigned int digestsize; 61*49cdfc7eSAndroid Build Coastguard Worker }; 62*49cdfc7eSAndroid Build Coastguard Worker 63*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_cipher { 64*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 65*49cdfc7eSAndroid Build Coastguard Worker unsigned int blocksize; 66*49cdfc7eSAndroid Build Coastguard Worker unsigned int min_keysize; 67*49cdfc7eSAndroid Build Coastguard Worker unsigned int max_keysize; 68*49cdfc7eSAndroid Build Coastguard Worker }; 69*49cdfc7eSAndroid Build Coastguard Worker 70*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_blkcipher { 71*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 72*49cdfc7eSAndroid Build Coastguard Worker char geniv[CRYPTO_MAX_NAME]; 73*49cdfc7eSAndroid Build Coastguard Worker unsigned int blocksize; 74*49cdfc7eSAndroid Build Coastguard Worker unsigned int min_keysize; 75*49cdfc7eSAndroid Build Coastguard Worker unsigned int max_keysize; 76*49cdfc7eSAndroid Build Coastguard Worker unsigned int ivsize; 77*49cdfc7eSAndroid Build Coastguard Worker }; 78*49cdfc7eSAndroid Build Coastguard Worker 79*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_aead { 80*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 81*49cdfc7eSAndroid Build Coastguard Worker char geniv[CRYPTO_MAX_NAME]; 82*49cdfc7eSAndroid Build Coastguard Worker unsigned int blocksize; 83*49cdfc7eSAndroid Build Coastguard Worker unsigned int maxauthsize; 84*49cdfc7eSAndroid Build Coastguard Worker unsigned int ivsize; 85*49cdfc7eSAndroid Build Coastguard Worker }; 86*49cdfc7eSAndroid Build Coastguard Worker 87*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_comp { 88*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 89*49cdfc7eSAndroid Build Coastguard Worker }; 90*49cdfc7eSAndroid Build Coastguard Worker 91*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_rng { 92*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 93*49cdfc7eSAndroid Build Coastguard Worker unsigned int seedsize; 94*49cdfc7eSAndroid Build Coastguard Worker }; 95*49cdfc7eSAndroid Build Coastguard Worker 96*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_akcipher { 97*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 98*49cdfc7eSAndroid Build Coastguard Worker }; 99*49cdfc7eSAndroid Build Coastguard Worker 100*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_kpp { 101*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 102*49cdfc7eSAndroid Build Coastguard Worker }; 103*49cdfc7eSAndroid Build Coastguard Worker 104*49cdfc7eSAndroid Build Coastguard Worker struct crypto_report_acomp { 105*49cdfc7eSAndroid Build Coastguard Worker char type[CRYPTO_MAX_NAME]; 106*49cdfc7eSAndroid Build Coastguard Worker }; 107*49cdfc7eSAndroid Build Coastguard Worker 108*49cdfc7eSAndroid Build Coastguard Worker #endif /* HAVE_LINUX_CRYPTOUSER_H */ 109*49cdfc7eSAndroid Build Coastguard Worker 110*49cdfc7eSAndroid Build Coastguard Worker /* These are taken from include/crypto.h in the kernel tree. They are not 111*49cdfc7eSAndroid Build Coastguard Worker * currently included in the user API. 112*49cdfc7eSAndroid Build Coastguard Worker */ 113*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_MAX_ALG_NAME 114*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_MAX_ALG_NAME 128 115*49cdfc7eSAndroid Build Coastguard Worker #endif 116*49cdfc7eSAndroid Build Coastguard Worker 117*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_MASK 118*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_MASK 0x0000000f 119*49cdfc7eSAndroid Build Coastguard Worker #endif 120*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_CIPHER 121*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_CIPHER 0x00000001 122*49cdfc7eSAndroid Build Coastguard Worker #endif 123*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_COMPRESS 124*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_COMPRESS 0x00000002 125*49cdfc7eSAndroid Build Coastguard Worker #endif 126*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_AEAD 127*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_AEAD 0x00000003 128*49cdfc7eSAndroid Build Coastguard Worker #endif 129*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_BLKCIPHER 130*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_BLKCIPHER 0x00000004 131*49cdfc7eSAndroid Build Coastguard Worker #endif 132*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_ABLKCIPHER 133*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_ABLKCIPHER 0x00000005 134*49cdfc7eSAndroid Build Coastguard Worker #endif 135*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_SKCIPHER 136*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_SKCIPHER 0x00000005 137*49cdfc7eSAndroid Build Coastguard Worker #endif 138*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_GIVCIPHER 139*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_GIVCIPHER 0x00000006 140*49cdfc7eSAndroid Build Coastguard Worker #endif 141*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_KPP 142*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_KPP 0x00000008 143*49cdfc7eSAndroid Build Coastguard Worker #endif 144*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_ACOMPRESS 145*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_ACOMPRESS 0x0000000a 146*49cdfc7eSAndroid Build Coastguard Worker #endif 147*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_SCOMPRESS 148*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_SCOMPRESS 0x0000000b 149*49cdfc7eSAndroid Build Coastguard Worker #endif 150*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_RNG 151*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_RNG 0x0000000c 152*49cdfc7eSAndroid Build Coastguard Worker #endif 153*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_AKCIPHER 154*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_AKCIPHER 0x0000000d 155*49cdfc7eSAndroid Build Coastguard Worker #endif 156*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_DIGEST 157*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_DIGEST 0x0000000e 158*49cdfc7eSAndroid Build Coastguard Worker #endif 159*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_HASH 160*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_HASH 0x0000000e 161*49cdfc7eSAndroid Build Coastguard Worker #endif 162*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_SHASH 163*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_SHASH 0x0000000e 164*49cdfc7eSAndroid Build Coastguard Worker #endif 165*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_AHASH 166*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_AHASH 0x0000000f 167*49cdfc7eSAndroid Build Coastguard Worker #endif 168*49cdfc7eSAndroid Build Coastguard Worker 169*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_HASH_MASK 170*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_HASH_MASK 0x0000000e 171*49cdfc7eSAndroid Build Coastguard Worker #endif 172*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_AHASH_MASK 173*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_AHASH_MASK 0x0000000e 174*49cdfc7eSAndroid Build Coastguard Worker #endif 175*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_BLKCIPHER_MASK 176*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_BLKCIPHER_MASK 0x0000000c 177*49cdfc7eSAndroid Build Coastguard Worker #endif 178*49cdfc7eSAndroid Build Coastguard Worker #ifndef CRYPTO_ALG_TYPE_ACOMPRESS_MASK 179*49cdfc7eSAndroid Build Coastguard Worker # define CRYPTO_ALG_TYPE_ACOMPRESS_MASK 0x0000000e 180*49cdfc7eSAndroid Build Coastguard Worker #endif 181*49cdfc7eSAndroid Build Coastguard Worker 182*49cdfc7eSAndroid Build Coastguard Worker #endif /* LAPI_CRYPTOUSER_H__ */ 183