numam-dpdk/drivers/crypto/qat/qat_sym_capabilities.h
Damian Nowak 7d5ef3bb32 crypto/qat: support XTS
This patch adds XTS capabilities and enables
XTS cipher mode on QAT.
It also updates the documentation for newly
supported AES XTS mode on QAT.

Signed-off-by: Damian Nowak <damianx.nowak@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
2019-03-22 15:54:24 +01:00

598 lines
13 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2017-2019 Intel Corporation
*/
#ifndef _QAT_SYM_CAPABILITIES_H_
#define _QAT_SYM_CAPABILITIES_H_
#define QAT_BASE_GEN1_SYM_CAPABILITIES \
{ /* SHA1 HMAC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_SHA1_HMAC, \
.block_size = 64, \
.key_size = { \
.min = 1, \
.max = 64, \
.increment = 1 \
}, \
.digest_size = { \
.min = 1, \
.max = 20, \
.increment = 1 \
}, \
.iv_size = { 0 } \
}, } \
}, } \
}, \
{ /* SHA224 HMAC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_SHA224_HMAC, \
.block_size = 64, \
.key_size = { \
.min = 1, \
.max = 64, \
.increment = 1 \
}, \
.digest_size = { \
.min = 1, \
.max = 28, \
.increment = 1 \
}, \
.iv_size = { 0 } \
}, } \
}, } \
}, \
{ /* SHA256 HMAC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_SHA256_HMAC, \
.block_size = 64, \
.key_size = { \
.min = 1, \
.max = 64, \
.increment = 1 \
}, \
.digest_size = { \
.min = 1, \
.max = 32, \
.increment = 1 \
}, \
.iv_size = { 0 } \
}, } \
}, } \
}, \
{ /* SHA384 HMAC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_SHA384_HMAC, \
.block_size = 128, \
.key_size = { \
.min = 1, \
.max = 128, \
.increment = 1 \
}, \
.digest_size = { \
.min = 1, \
.max = 48, \
.increment = 1 \
}, \
.iv_size = { 0 } \
}, } \
}, } \
}, \
{ /* SHA512 HMAC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_SHA512_HMAC, \
.block_size = 128, \
.key_size = { \
.min = 1, \
.max = 128, \
.increment = 1 \
}, \
.digest_size = { \
.min = 1, \
.max = 64, \
.increment = 1 \
}, \
.iv_size = { 0 } \
}, } \
}, } \
}, \
{ /* MD5 HMAC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_MD5_HMAC, \
.block_size = 64, \
.key_size = { \
.min = 1, \
.max = 64, \
.increment = 1 \
}, \
.digest_size = { \
.min = 1, \
.max = 16, \
.increment = 1 \
}, \
.iv_size = { 0 } \
}, } \
}, } \
}, \
{ /* AES XCBC MAC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.digest_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.aad_size = { 0 }, \
.iv_size = { 0 } \
}, } \
}, } \
}, \
{ /* AES CMAC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_AES_CMAC, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.digest_size = { \
.min = 12, \
.max = 16, \
.increment = 4 \
} \
}, } \
}, } \
}, \
{ /* AES CCM */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, \
{.aead = { \
.algo = RTE_CRYPTO_AEAD_AES_CCM, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.digest_size = { \
.min = 4, \
.max = 16, \
.increment = 2 \
}, \
.aad_size = { \
.min = 0, \
.max = 224, \
.increment = 1 \
}, \
.iv_size = { \
.min = 7, \
.max = 13, \
.increment = 1 \
}, \
}, } \
}, } \
}, \
{ /* AES GCM */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, \
{.aead = { \
.algo = RTE_CRYPTO_AEAD_AES_GCM, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 32, \
.increment = 8 \
}, \
.digest_size = { \
.min = 8, \
.max = 16, \
.increment = 4 \
}, \
.aad_size = { \
.min = 0, \
.max = 240, \
.increment = 1 \
}, \
.iv_size = { \
.min = 12, \
.max = 12, \
.increment = 0 \
}, \
}, } \
}, } \
}, \
{ /* AES GMAC (AUTH) */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_AES_GMAC, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 32, \
.increment = 8 \
}, \
.digest_size = { \
.min = 8, \
.max = 16, \
.increment = 4 \
}, \
.iv_size = { \
.min = 12, \
.max = 12, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* SNOW 3G (UIA2) */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.digest_size = { \
.min = 4, \
.max = 4, \
.increment = 0 \
}, \
.iv_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* AES CBC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_AES_CBC, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 32, \
.increment = 8 \
}, \
.iv_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* AES XTS */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_AES_XTS, \
.block_size = 16, \
.key_size = { \
.min = 32, \
.max = 64, \
.increment = 0 \
}, \
.iv_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* AES DOCSIS BPI */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_AES_DOCSISBPI,\
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.iv_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* SNOW 3G (UEA2) */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.iv_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* AES CTR */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_AES_CTR, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 32, \
.increment = 8 \
}, \
.iv_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* NULL (AUTH) */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_NULL, \
.block_size = 1, \
.key_size = { \
.min = 0, \
.max = 0, \
.increment = 0 \
}, \
.digest_size = { \
.min = 0, \
.max = 0, \
.increment = 0 \
}, \
.iv_size = { 0 } \
}, }, \
}, }, \
}, \
{ /* NULL (CIPHER) */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_NULL, \
.block_size = 1, \
.key_size = { \
.min = 0, \
.max = 0, \
.increment = 0 \
}, \
.iv_size = { \
.min = 0, \
.max = 0, \
.increment = 0 \
} \
}, }, \
}, } \
}, \
{ /* KASUMI (F8) */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_KASUMI_F8, \
.block_size = 8, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.iv_size = { \
.min = 8, \
.max = 8, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* KASUMI (F9) */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_KASUMI_F9, \
.block_size = 8, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.digest_size = { \
.min = 4, \
.max = 4, \
.increment = 0 \
}, \
.iv_size = { 0 } \
}, } \
}, } \
}, \
{ /* 3DES CBC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_3DES_CBC, \
.block_size = 8, \
.key_size = { \
.min = 8, \
.max = 24, \
.increment = 8 \
}, \
.iv_size = { \
.min = 8, \
.max = 8, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* 3DES CTR */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_3DES_CTR, \
.block_size = 8, \
.key_size = { \
.min = 16, \
.max = 24, \
.increment = 8 \
}, \
.iv_size = { \
.min = 8, \
.max = 8, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* DES CBC */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_DES_CBC, \
.block_size = 8, \
.key_size = { \
.min = 8, \
.max = 8, \
.increment = 0 \
}, \
.iv_size = { \
.min = 8, \
.max = 8, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* DES DOCSISBPI */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_DES_DOCSISBPI,\
.block_size = 8, \
.key_size = { \
.min = 8, \
.max = 8, \
.increment = 0 \
}, \
.iv_size = { \
.min = 8, \
.max = 8, \
.increment = 0 \
} \
}, } \
}, } \
}
#define QAT_EXTRA_GEN2_SYM_CAPABILITIES \
{ /* ZUC (EEA3) */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \
{.cipher = { \
.algo = RTE_CRYPTO_CIPHER_ZUC_EEA3, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.iv_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
} \
}, } \
}, } \
}, \
{ /* ZUC (EIA3) */ \
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \
{.sym = { \
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \
{.auth = { \
.algo = RTE_CRYPTO_AUTH_ZUC_EIA3, \
.block_size = 16, \
.key_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
}, \
.digest_size = { \
.min = 4, \
.max = 4, \
.increment = 0 \
}, \
.iv_size = { \
.min = 16, \
.max = 16, \
.increment = 0 \
} \
}, } \
}, } \
}
#endif /* _QAT_SYM_CAPABILITIES_H_ */