diff options
Diffstat (limited to 'include/linux/crypto.h')
| -rw-r--r-- | include/linux/crypto.h | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/include/linux/crypto.h b/include/linux/crypto.h index 425824bd49f3..c43dc47fdf75 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h | |||
| @@ -30,15 +30,17 @@ | |||
| 30 | */ | 30 | */ |
| 31 | #define CRYPTO_ALG_TYPE_MASK 0x0000000f | 31 | #define CRYPTO_ALG_TYPE_MASK 0x0000000f |
| 32 | #define CRYPTO_ALG_TYPE_CIPHER 0x00000001 | 32 | #define CRYPTO_ALG_TYPE_CIPHER 0x00000001 |
| 33 | #define CRYPTO_ALG_TYPE_DIGEST 0x00000002 | 33 | #define CRYPTO_ALG_TYPE_COMPRESS 0x00000002 |
| 34 | #define CRYPTO_ALG_TYPE_HASH 0x00000003 | 34 | #define CRYPTO_ALG_TYPE_AEAD 0x00000003 |
| 35 | #define CRYPTO_ALG_TYPE_BLKCIPHER 0x00000004 | 35 | #define CRYPTO_ALG_TYPE_BLKCIPHER 0x00000004 |
| 36 | #define CRYPTO_ALG_TYPE_ABLKCIPHER 0x00000005 | 36 | #define CRYPTO_ALG_TYPE_ABLKCIPHER 0x00000005 |
| 37 | #define CRYPTO_ALG_TYPE_GIVCIPHER 0x00000006 | 37 | #define CRYPTO_ALG_TYPE_GIVCIPHER 0x00000006 |
| 38 | #define CRYPTO_ALG_TYPE_COMPRESS 0x00000008 | 38 | #define CRYPTO_ALG_TYPE_DIGEST 0x00000008 |
| 39 | #define CRYPTO_ALG_TYPE_AEAD 0x00000009 | 39 | #define CRYPTO_ALG_TYPE_HASH 0x00000009 |
| 40 | #define CRYPTO_ALG_TYPE_AHASH 0x0000000a | ||
| 40 | 41 | ||
| 41 | #define CRYPTO_ALG_TYPE_HASH_MASK 0x0000000e | 42 | #define CRYPTO_ALG_TYPE_HASH_MASK 0x0000000e |
| 43 | #define CRYPTO_ALG_TYPE_AHASH_MASK 0x0000000c | ||
| 42 | #define CRYPTO_ALG_TYPE_BLKCIPHER_MASK 0x0000000c | 44 | #define CRYPTO_ALG_TYPE_BLKCIPHER_MASK 0x0000000c |
| 43 | 45 | ||
| 44 | #define CRYPTO_ALG_LARVAL 0x00000010 | 46 | #define CRYPTO_ALG_LARVAL 0x00000010 |
| @@ -102,6 +104,7 @@ struct crypto_async_request; | |||
| 102 | struct crypto_aead; | 104 | struct crypto_aead; |
| 103 | struct crypto_blkcipher; | 105 | struct crypto_blkcipher; |
| 104 | struct crypto_hash; | 106 | struct crypto_hash; |
| 107 | struct crypto_ahash; | ||
| 105 | struct crypto_tfm; | 108 | struct crypto_tfm; |
| 106 | struct crypto_type; | 109 | struct crypto_type; |
| 107 | struct aead_givcrypt_request; | 110 | struct aead_givcrypt_request; |
| @@ -131,6 +134,16 @@ struct ablkcipher_request { | |||
| 131 | void *__ctx[] CRYPTO_MINALIGN_ATTR; | 134 | void *__ctx[] CRYPTO_MINALIGN_ATTR; |
| 132 | }; | 135 | }; |
| 133 | 136 | ||
| 137 | struct ahash_request { | ||
| 138 | struct crypto_async_request base; | ||
| 139 | |||
| 140 | unsigned int nbytes; | ||
| 141 | struct scatterlist *src; | ||
| 142 | u8 *result; | ||
| 143 | |||
| 144 | void *__ctx[] CRYPTO_MINALIGN_ATTR; | ||
| 145 | }; | ||
| 146 | |||
| 134 | /** | 147 | /** |
| 135 | * struct aead_request - AEAD request | 148 | * struct aead_request - AEAD request |
| 136 | * @base: Common attributes for async crypto requests | 149 | * @base: Common attributes for async crypto requests |
| @@ -195,6 +208,17 @@ struct ablkcipher_alg { | |||
| 195 | unsigned int ivsize; | 208 | unsigned int ivsize; |
| 196 | }; | 209 | }; |
| 197 | 210 | ||
| 211 | struct ahash_alg { | ||
| 212 | int (*init)(struct ahash_request *req); | ||
| 213 | int (*update)(struct ahash_request *req); | ||
| 214 | int (*final)(struct ahash_request *req); | ||
| 215 | int (*digest)(struct ahash_request *req); | ||
| 216 | int (*setkey)(struct crypto_ahash *tfm, const u8 *key, | ||
| 217 | unsigned int keylen); | ||
| 218 | |||
| 219 | unsigned int digestsize; | ||
| 220 | }; | ||
| 221 | |||
| 198 | struct aead_alg { | 222 | struct aead_alg { |
| 199 | int (*setkey)(struct crypto_aead *tfm, const u8 *key, | 223 | int (*setkey)(struct crypto_aead *tfm, const u8 *key, |
| 200 | unsigned int keylen); | 224 | unsigned int keylen); |
| @@ -272,6 +296,7 @@ struct compress_alg { | |||
| 272 | #define cra_cipher cra_u.cipher | 296 | #define cra_cipher cra_u.cipher |
| 273 | #define cra_digest cra_u.digest | 297 | #define cra_digest cra_u.digest |
| 274 | #define cra_hash cra_u.hash | 298 | #define cra_hash cra_u.hash |
| 299 | #define cra_ahash cra_u.ahash | ||
| 275 | #define cra_compress cra_u.compress | 300 | #define cra_compress cra_u.compress |
| 276 | 301 | ||
| 277 | struct crypto_alg { | 302 | struct crypto_alg { |
| @@ -298,6 +323,7 @@ struct crypto_alg { | |||
| 298 | struct cipher_alg cipher; | 323 | struct cipher_alg cipher; |
| 299 | struct digest_alg digest; | 324 | struct digest_alg digest; |
| 300 | struct hash_alg hash; | 325 | struct hash_alg hash; |
| 326 | struct ahash_alg ahash; | ||
| 301 | struct compress_alg compress; | 327 | struct compress_alg compress; |
| 302 | } cra_u; | 328 | } cra_u; |
| 303 | 329 | ||
| @@ -383,6 +409,18 @@ struct hash_tfm { | |||
| 383 | unsigned int digestsize; | 409 | unsigned int digestsize; |
| 384 | }; | 410 | }; |
| 385 | 411 | ||
| 412 | struct ahash_tfm { | ||
| 413 | int (*init)(struct ahash_request *req); | ||
| 414 | int (*update)(struct ahash_request *req); | ||
| 415 | int (*final)(struct ahash_request *req); | ||
| 416 | int (*digest)(struct ahash_request *req); | ||
| 417 | int (*setkey)(struct crypto_ahash *tfm, const u8 *key, | ||
| 418 | unsigned int keylen); | ||
| 419 | |||
| 420 | unsigned int digestsize; | ||
| 421 | unsigned int reqsize; | ||
| 422 | }; | ||
| 423 | |||
| 386 | struct compress_tfm { | 424 | struct compress_tfm { |
| 387 | int (*cot_compress)(struct crypto_tfm *tfm, | 425 | int (*cot_compress)(struct crypto_tfm *tfm, |
| 388 | const u8 *src, unsigned int slen, | 426 | const u8 *src, unsigned int slen, |
| @@ -397,6 +435,7 @@ struct compress_tfm { | |||
| 397 | #define crt_blkcipher crt_u.blkcipher | 435 | #define crt_blkcipher crt_u.blkcipher |
| 398 | #define crt_cipher crt_u.cipher | 436 | #define crt_cipher crt_u.cipher |
| 399 | #define crt_hash crt_u.hash | 437 | #define crt_hash crt_u.hash |
| 438 | #define crt_ahash crt_u.ahash | ||
| 400 | #define crt_compress crt_u.compress | 439 | #define crt_compress crt_u.compress |
| 401 | 440 | ||
| 402 | struct crypto_tfm { | 441 | struct crypto_tfm { |
| @@ -409,6 +448,7 @@ struct crypto_tfm { | |||
| 409 | struct blkcipher_tfm blkcipher; | 448 | struct blkcipher_tfm blkcipher; |
| 410 | struct cipher_tfm cipher; | 449 | struct cipher_tfm cipher; |
| 411 | struct hash_tfm hash; | 450 | struct hash_tfm hash; |
| 451 | struct ahash_tfm ahash; | ||
| 412 | struct compress_tfm compress; | 452 | struct compress_tfm compress; |
| 413 | } crt_u; | 453 | } crt_u; |
| 414 | 454 | ||
