Commit | Line | Data |
---|---|---|
e2f34481 NJ |
1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* | |
3 | * Copyright (C) 2019 Samsung Electronics Co., Ltd. | |
4 | */ | |
5 | ||
6 | #ifndef __CRYPTO_CTX_H__ | |
7 | #define __CRYPTO_CTX_H__ | |
8 | ||
9 | #include <crypto/hash.h> | |
10 | #include <crypto/aead.h> | |
11 | ||
12 | enum { | |
13 | CRYPTO_SHASH_HMACMD5 = 0, | |
14 | CRYPTO_SHASH_HMACSHA256, | |
15 | CRYPTO_SHASH_CMACAES, | |
16 | CRYPTO_SHASH_SHA256, | |
17 | CRYPTO_SHASH_SHA512, | |
e2f34481 NJ |
18 | CRYPTO_SHASH_MAX, |
19 | }; | |
20 | ||
21 | enum { | |
5a0ca770 NJ |
22 | CRYPTO_AEAD_AES_GCM = 16, |
23 | CRYPTO_AEAD_AES_CCM, | |
e2f34481 NJ |
24 | CRYPTO_AEAD_MAX, |
25 | }; | |
26 | ||
27 | enum { | |
28 | CRYPTO_BLK_ECBDES = 32, | |
29 | CRYPTO_BLK_MAX, | |
30 | }; | |
31 | ||
32 | struct ksmbd_crypto_ctx { | |
33 | struct list_head list; | |
34 | ||
35 | struct shash_desc *desc[CRYPTO_SHASH_MAX]; | |
36 | struct crypto_aead *ccmaes[CRYPTO_AEAD_MAX]; | |
37 | }; | |
38 | ||
39 | #define CRYPTO_HMACMD5(c) ((c)->desc[CRYPTO_SHASH_HMACMD5]) | |
40 | #define CRYPTO_HMACSHA256(c) ((c)->desc[CRYPTO_SHASH_HMACSHA256]) | |
41 | #define CRYPTO_CMACAES(c) ((c)->desc[CRYPTO_SHASH_CMACAES]) | |
42 | #define CRYPTO_SHA256(c) ((c)->desc[CRYPTO_SHASH_SHA256]) | |
43 | #define CRYPTO_SHA512(c) ((c)->desc[CRYPTO_SHASH_SHA512]) | |
e2f34481 NJ |
44 | |
45 | #define CRYPTO_HMACMD5_TFM(c) ((c)->desc[CRYPTO_SHASH_HMACMD5]->tfm) | |
46 | #define CRYPTO_HMACSHA256_TFM(c)\ | |
47 | ((c)->desc[CRYPTO_SHASH_HMACSHA256]->tfm) | |
48 | #define CRYPTO_CMACAES_TFM(c) ((c)->desc[CRYPTO_SHASH_CMACAES]->tfm) | |
49 | #define CRYPTO_SHA256_TFM(c) ((c)->desc[CRYPTO_SHASH_SHA256]->tfm) | |
50 | #define CRYPTO_SHA512_TFM(c) ((c)->desc[CRYPTO_SHASH_SHA512]->tfm) | |
e2f34481 | 51 | |
5a0ca770 NJ |
52 | #define CRYPTO_GCM(c) ((c)->ccmaes[CRYPTO_AEAD_AES_GCM]) |
53 | #define CRYPTO_CCM(c) ((c)->ccmaes[CRYPTO_AEAD_AES_CCM]) | |
e2f34481 NJ |
54 | |
55 | void ksmbd_release_crypto_ctx(struct ksmbd_crypto_ctx *ctx); | |
e2f34481 NJ |
56 | struct ksmbd_crypto_ctx *ksmbd_crypto_ctx_find_hmacmd5(void); |
57 | struct ksmbd_crypto_ctx *ksmbd_crypto_ctx_find_hmacsha256(void); | |
58 | struct ksmbd_crypto_ctx *ksmbd_crypto_ctx_find_cmacaes(void); | |
59 | struct ksmbd_crypto_ctx *ksmbd_crypto_ctx_find_sha512(void); | |
60 | struct ksmbd_crypto_ctx *ksmbd_crypto_ctx_find_sha256(void); | |
e2f34481 NJ |
61 | struct ksmbd_crypto_ctx *ksmbd_crypto_ctx_find_gcm(void); |
62 | struct ksmbd_crypto_ctx *ksmbd_crypto_ctx_find_ccm(void); | |
e2f34481 NJ |
63 | void ksmbd_crypto_destroy(void); |
64 | int ksmbd_crypto_create(void); | |
65 | ||
66 | #endif /* __CRYPTO_CTX_H__ */ |