dpdk/drivers/crypto/aesni_gcm/aesni_gcm_ops.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: BSD-3-Clause
   2 * Copyright(c) 2016-2020 Intel Corporation
   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 */
  15enum 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
  24enum aesni_gcm_key {
  25        GCM_KEY_128 = 0,
  26        GCM_KEY_192,
  27        GCM_KEY_256,
  28        GCM_KEY_NUM
  29};
  30
  31typedef 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
  37typedef void (*aesni_gcm_pre_t)(const void *key, struct gcm_key_data *gcm_data);
  38
  39typedef 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
  45typedef 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
  51typedef 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#if IMB_VERSION(0, 54, 0) < IMB_VERSION_NUM
  57typedef void (*aesni_gmac_init_t)(const struct gcm_key_data *gcm_key_data,
  58                struct gcm_context_data *gcm_ctx_data,
  59                const uint8_t *iv,
  60                const uint64_t iv_len);
  61
  62typedef void (*aesni_gmac_update_t)(const struct gcm_key_data *gcm_key_data,
  63                struct gcm_context_data *gcm_ctx_data,
  64                const uint8_t *in,
  65                const uint64_t plaintext_len);
  66
  67typedef void (*aesni_gmac_finalize_t)(const struct gcm_key_data *gcm_key_data,
  68                struct gcm_context_data *gcm_ctx_data,
  69                uint8_t *auth_tag,
  70                const uint64_t auth_tag_len);
  71#endif
  72
  73/** GCM library function pointer table */
  74struct aesni_gcm_ops {
  75        aesni_gcm_t enc;        /**< GCM encode function pointer */
  76        aesni_gcm_t dec;        /**< GCM decode function pointer */
  77        aesni_gcm_pre_t pre;    /**< GCM pre-compute */
  78        aesni_gcm_init_t init;
  79        aesni_gcm_update_t update_enc;
  80        aesni_gcm_update_t update_dec;
  81        aesni_gcm_finalize_t finalize_enc;
  82        aesni_gcm_finalize_t finalize_dec;
  83#if IMB_VERSION(0, 54, 0) < IMB_VERSION_NUM
  84        aesni_gmac_init_t gmac_init;
  85        aesni_gmac_update_t gmac_update;
  86        aesni_gmac_finalize_t gmac_finalize;
  87#endif
  88};
  89
  90/** GCM per-session operation handlers */
  91struct aesni_gcm_session_ops {
  92        aesni_gcm_t cipher;
  93        aesni_gcm_pre_t pre;
  94        aesni_gcm_init_t init;
  95        aesni_gcm_update_t update;
  96        aesni_gcm_finalize_t finalize;
  97#if IMB_VERSION(0, 54, 0) < IMB_VERSION_NUM
  98        aesni_gmac_init_t gmac_init;
  99        aesni_gmac_update_t gmac_update;
 100        aesni_gmac_finalize_t gmac_finalize;
 101#endif
 102};
 103
 104#endif /* _AESNI_GCM_OPS_H_ */
 105