]>
Commit | Line | Data |
---|---|---|
9f95a23c TL |
1 | /* SPDX-License-Identifier: BSD-3-Clause |
2 | * Copyright(c) 2016-2017 Intel Corporation | |
7c673cae FG |
3 | */ |
4 | ||
11fdf7f2 TL |
5 | #ifndef _AESNI_GCM_OPS_H_ |
6 | #define _AESNI_GCM_OPS_H_ | |
7 | ||
8 | #ifndef LINUX | |
9 | #define LINUX | |
10 | #endif | |
11 | ||
9f95a23c | 12 | #include <intel-ipsec-mb.h> |
11fdf7f2 | 13 | |
9f95a23c TL |
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, | |
20 | RTE_AESNI_GCM_AVX512, | |
21 | RTE_AESNI_GCM_VECTOR_NUM | |
22 | }; | |
23 | ||
24 | enum aesni_gcm_key { | |
25 | GCM_KEY_128 = 0, | |
26 | GCM_KEY_192, | |
27 | GCM_KEY_256, | |
28 | GCM_KEY_NUM | |
29 | }; | |
30 | ||
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 | ||
37 | typedef void (*aesni_gcm_pre_t)(const void *key, struct gcm_key_data *gcm_data); | |
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, | |
11fdf7f2 TL |
42 | uint8_t const *aad, |
43 | uint64_t aad_len); | |
44 | ||
9f95a23c TL |
45 | typedef void (*aesni_gcm_update_t)(const struct gcm_key_data *gcm_key_data, |
46 | struct gcm_context_data *gcm_ctx_data, | |
11fdf7f2 TL |
47 | uint8_t *out, |
48 | const uint8_t *in, | |
49 | uint64_t plaintext_len); | |
50 | ||
9f95a23c TL |
51 | typedef void (*aesni_gcm_finalize_t)(const struct gcm_key_data *gcm_key_data, |
52 | struct gcm_context_data *gcm_ctx_data, | |
11fdf7f2 TL |
53 | uint8_t *auth_tag, |
54 | uint64_t auth_tag_len); | |
55 | ||
9f95a23c | 56 | /** GCM library function pointer table */ |
11fdf7f2 | 57 | struct aesni_gcm_ops { |
9f95a23c TL |
58 | aesni_gcm_t enc; /**< GCM encode function pointer */ |
59 | aesni_gcm_t dec; /**< GCM decode function pointer */ | |
60 | aesni_gcm_pre_t pre; /**< GCM pre-compute */ | |
11fdf7f2 | 61 | aesni_gcm_init_t init; |
9f95a23c TL |
62 | aesni_gcm_update_t update_enc; |
63 | aesni_gcm_update_t update_dec; | |
64 | aesni_gcm_finalize_t finalize_enc; | |
65 | aesni_gcm_finalize_t finalize_dec; | |
11fdf7f2 TL |
66 | }; |
67 | ||
68 | #endif /* _AESNI_GCM_OPS_H_ */ |