]>
Commit | Line | Data |
---|---|---|
11fdf7f2 | 1 | /* SPDX-License-Identifier: BSD-3-Clause |
f67539c2 | 2 | * Copyright(c) 2016-2020 Intel Corporation |
11fdf7f2 TL |
3 | */ |
4 | ||
5 | #ifndef _AESNI_GCM_OPS_H_ | |
6 | #define _AESNI_GCM_OPS_H_ | |
7 | ||
8 | #ifndef LINUX | |
9 | #define LINUX | |
10 | #endif | |
11 | ||
12 | #include <intel-ipsec-mb.h> | |
13 | ||
14 | /** Supported vector modes */ | |
15 | enum aesni_gcm_vector_mode { | |
16 | RTE_AESNI_GCM_NOT_SUPPORTED = 0, | |
17 | RTE_AESNI_GCM_SSE, | |
18 | RTE_AESNI_GCM_AVX, | |
19 | RTE_AESNI_GCM_AVX2, | |
9f95a23c | 20 | RTE_AESNI_GCM_AVX512, |
11fdf7f2 TL |
21 | RTE_AESNI_GCM_VECTOR_NUM |
22 | }; | |
23 | ||
24 | enum aesni_gcm_key { | |
9f95a23c TL |
25 | GCM_KEY_128 = 0, |
26 | GCM_KEY_192, | |
27 | GCM_KEY_256, | |
28 | GCM_KEY_NUM | |
11fdf7f2 TL |
29 | }; |
30 | ||
11fdf7f2 TL |
31 | typedef void (*aesni_gcm_t)(const struct gcm_key_data *gcm_key_data, |
32 | struct gcm_context_data *gcm_ctx_data, uint8_t *out, | |
33 | const uint8_t *in, uint64_t plaintext_len, const uint8_t *iv, | |
34 | const uint8_t *aad, uint64_t aad_len, | |
35 | uint8_t *auth_tag, uint64_t auth_tag_len); | |
36 | ||
9f95a23c | 37 | typedef void (*aesni_gcm_pre_t)(const void *key, struct gcm_key_data *gcm_data); |
11fdf7f2 TL |
38 | |
39 | typedef void (*aesni_gcm_init_t)(const struct gcm_key_data *gcm_key_data, | |
40 | struct gcm_context_data *gcm_ctx_data, | |
41 | const uint8_t *iv, | |
42 | uint8_t const *aad, | |
43 | uint64_t aad_len); | |
44 | ||
45 | typedef void (*aesni_gcm_update_t)(const struct gcm_key_data *gcm_key_data, | |
46 | struct gcm_context_data *gcm_ctx_data, | |
47 | uint8_t *out, | |
48 | const uint8_t *in, | |
49 | uint64_t plaintext_len); | |
50 | ||
51 | typedef void (*aesni_gcm_finalize_t)(const struct gcm_key_data *gcm_key_data, | |
52 | struct gcm_context_data *gcm_ctx_data, | |
53 | uint8_t *auth_tag, | |
54 | uint64_t auth_tag_len); | |
55 | ||
56 | /** GCM library function pointer table */ | |
57 | struct aesni_gcm_ops { | |
58 | aesni_gcm_t enc; /**< GCM encode function pointer */ | |
59 | aesni_gcm_t dec; /**< GCM decode function pointer */ | |
9f95a23c | 60 | aesni_gcm_pre_t pre; /**< GCM pre-compute */ |
11fdf7f2 TL |
61 | aesni_gcm_init_t init; |
62 | aesni_gcm_update_t update_enc; | |
63 | aesni_gcm_update_t update_dec; | |
9f95a23c TL |
64 | aesni_gcm_finalize_t finalize_enc; |
65 | aesni_gcm_finalize_t finalize_dec; | |
11fdf7f2 TL |
66 | }; |
67 | ||
f67539c2 TL |
68 | /** GCM per-session operation handlers */ |
69 | struct aesni_gcm_session_ops { | |
70 | aesni_gcm_t cipher; | |
71 | aesni_gcm_pre_t pre; | |
72 | aesni_gcm_init_t init; | |
73 | aesni_gcm_update_t update; | |
74 | aesni_gcm_finalize_t finalize; | |
75 | }; | |
76 | ||
11fdf7f2 | 77 | #endif /* _AESNI_GCM_OPS_H_ */ |