holds intermediate key data needed to improve performance More...
#include <intel-ipsec-mb.h>
Data Fields | ||
| uint8_t | expanded_keys [IMB_GCM_ENC_KEY_LEN *IMB_GCM_KEY_SETS] | |
| union { | ||
| struct { | ||
| uint8_t shifted_hkey [IMB_GCM_ENC_KEY_LEN *8] | ||
| uint8_t shifted_hkey_k [IMB_GCM_ENC_KEY_LEN *8] | ||
| } sse_avx | ||
| struct { | ||
| uint8_t shifted_hkey [IMB_GCM_ENC_KEY_LEN *8] | ||
| } avx2_avx512 | ||
| struct { | ||
| uint8_t shifted_hkey [IMB_GCM_ENC_KEY_LEN *32 *2] | ||
| } vaes_avx512 | ||
| } | ghash_keys | |
holds intermediate key data needed to improve performance
gcm_key_data hold internal key information used by gcm128, gcm192 and gcm256.
| struct { ... } gcm_key_data::avx2_avx512 |
| uint8_t gcm_key_data::expanded_keys[IMB_GCM_ENC_KEY_LEN *IMB_GCM_KEY_SETS] |
| union { ... } gcm_key_data::ghash_keys |
| uint8_t gcm_key_data::shifted_hkey[IMB_GCM_ENC_KEY_LEN *32 *2] |
This is needed for schoolbook multiply purposes. (HashKey<<1 mod poly), (HashKey^2<<1 mod poly), ..., (Hashkey^48<<1 mod poly)
Start with: (HashKey<<1 mod poly), (HashKey^2<<1 mod poly), ..., (Hashkey^32<<1 mod poly)
Followed by: (HashKey<<1 mod poly) x POLY, (HashKey^2<<1 mod poly) x POLY, ..., (Hashkey^32<<1 mod poly) x POLY
| uint8_t gcm_key_data::shifted_hkey_k[IMB_GCM_ENC_KEY_LEN *8] |
This is needed for Karatsuba multiply purposes. Storage for XOR of High 64 bits and low 64 bits of HashKey mod poly.
(HashKey<<1 mod poly), (HashKey^2<<1 mod poly), ..., (Hashkey^128<<1 mod poly)
| struct { ... } gcm_key_data::sse_avx |
< Storage for precomputed hash keys
| struct { ... } gcm_key_data::vaes_avx512 |