#include "cpa.h"
#include "lac_common.h"
#include "icp_accel_devices.h"
#include "icp_adf_debug.h"
#include "icp_adf_transport.h"
#include "lac_sym.h"
#include "icp_qat_fw_la.h"
#include "lac_sym_qat_hash_defs_lookup.h"
#include "lac_sal_types_crypto.h"
#include "lac_sym_hash_defs.h"
#define LAC_SYM_QAT_XCBC_STATE_SIZE ((LAC_HASH_XCBC_MAC_BLOCK_SIZE)*3)
#define LAC_SYM_QAT_CMAC_STATE_SIZE ((LAC_HASH_CMAC_BLOCK_SIZE)*3)
typedef struct lac_sym_qat_hash_def_map_s {
CpaCySymHashAlgorithm hashAlgorithm;
lac_sym_qat_hash_defs_t hashDefs;
} lac_sym_qat_hash_def_map_t;
static Cpa8U md5InitialState[LAC_HASH_MD5_STATE_SIZE] = {
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
};
static Cpa8U sha1InitialState[LAC_HASH_SHA1_STATE_SIZE] = {
0x67, 0x45, 0x23, 0x01, 0xef, 0xcd, 0xab, 0x89, 0x98, 0xba,
0xdc, 0xfe, 0x10, 0x32, 0x54, 0x76, 0xc3, 0xd2, 0xe1, 0xf0
};
static Cpa8U sha224InitialState[LAC_HASH_SHA224_STATE_SIZE] = {
0xc1, 0x05, 0x9e, 0xd8, 0x36, 0x7c, 0xd5, 0x07, 0x30, 0x70, 0xdd,
0x17, 0xf7, 0x0e, 0x59, 0x39, 0xff, 0xc0, 0x0b, 0x31, 0x68, 0x58,
0x15, 0x11, 0x64, 0xf9, 0x8f, 0xa7, 0xbe, 0xfa, 0x4f, 0xa4
};
static Cpa8U sha256InitialState[LAC_HASH_SHA256_STATE_SIZE] = {
0x6a, 0x09, 0xe6, 0x67, 0xbb, 0x67, 0xae, 0x85, 0x3c, 0x6e, 0xf3,
0x72, 0xa5, 0x4f, 0xf5, 0x3a, 0x51, 0x0e, 0x52, 0x7f, 0x9b, 0x05,
0x68, 0x8c, 0x1f, 0x83, 0xd9, 0xab, 0x5b, 0xe0, 0xcd, 0x19
};
static Cpa8U sha384InitialState[LAC_HASH_SHA384_STATE_SIZE] = {
0xcb, 0xbb, 0x9d, 0x5d, 0xc1, 0x05, 0x9e, 0xd8, 0x62, 0x9a, 0x29,
0x2a, 0x36, 0x7c, 0xd5, 0x07, 0x91, 0x59, 0x01, 0x5a, 0x30, 0x70,
0xdd, 0x17, 0x15, 0x2f, 0xec, 0xd8, 0xf7, 0x0e, 0x59, 0x39, 0x67,
0x33, 0x26, 0x67, 0xff, 0xc0, 0x0b, 0x31, 0x8e, 0xb4, 0x4a, 0x87,
0x68, 0x58, 0x15, 0x11, 0xdb, 0x0c, 0x2e, 0x0d, 0x64, 0xf9, 0x8f,
0xa7, 0x47, 0xb5, 0x48, 0x1d, 0xbe, 0xfa, 0x4f, 0xa4
};
static Cpa8U sha512InitialState[LAC_HASH_SHA512_STATE_SIZE] = {
0x6a, 0x09, 0xe6, 0x67, 0xf3, 0xbc, 0xc9, 0x08, 0xbb, 0x67, 0xae,
0x85, 0x84, 0xca, 0xa7, 0x3b, 0x3c, 0x6e, 0xf3, 0x72, 0xfe, 0x94,
0xf8, 0x2b, 0xa5, 0x4f, 0xf5, 0x3a, 0x5f, 0x1d, 0x36, 0xf1, 0x51,
0x0e, 0x52, 0x7f, 0xad, 0xe6, 0x82, 0xd1, 0x9b, 0x05, 0x68, 0x8c,
0x2b, 0x3e, 0x6c, 0x1f, 0x1f, 0x83, 0xd9, 0xab, 0xfb, 0x41, 0xbd,
0x6b, 0x5b, 0xe0, 0xcd, 0x19, 0x13, 0x7e, 0x21, 0x79
};
static Cpa8U sha3_224InitialState[LAC_HASH_SHA3_224_STATE_SIZE] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static Cpa8U sha3_256InitialState[LAC_HASH_SHA3_256_STATE_SIZE] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static Cpa8U sha3_384InitialState[LAC_HASH_SHA3_384_STATE_SIZE] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static Cpa8U sha3_512InitialState[LAC_HASH_SHA3_512_STATE_SIZE] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static Cpa8U sm3InitialState[LAC_HASH_SM3_STATE_SIZE] = {
0x73, 0x80, 0x16, 0x6f, 0x49, 0x14, 0xb2, 0xb9, 0x17, 0x24, 0x42,
0xd7, 0xda, 0x8a, 0x06, 0x00, 0xa9, 0x6f, 0x30, 0xbc, 0x16, 0x31,
0x38, 0xaa, 0xe3, 0x8d, 0xee, 0x4d, 0xb0, 0xfb, 0x0e, 0x4e
};
static Cpa8U aesXcbcKeySeed[LAC_SYM_QAT_XCBC_STATE_SIZE] = {
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
};
static Cpa8U aesCmacKeySeed[LAC_HASH_CMAC_BLOCK_SIZE] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static lac_sym_qat_hash_alg_info_t md5Info = { LAC_HASH_MD5_DIGEST_SIZE,
LAC_HASH_MD5_BLOCK_SIZE,
md5InitialState,
LAC_HASH_MD5_STATE_SIZE };
static lac_sym_qat_hash_alg_info_t sha1Info = { LAC_HASH_SHA1_DIGEST_SIZE,
LAC_HASH_SHA1_BLOCK_SIZE,
sha1InitialState,
LAC_HASH_SHA1_STATE_SIZE };
static lac_sym_qat_hash_alg_info_t sha224Info = { LAC_HASH_SHA224_DIGEST_SIZE,
LAC_HASH_SHA224_BLOCK_SIZE,
sha224InitialState,
LAC_HASH_SHA224_STATE_SIZE };
static lac_sym_qat_hash_alg_info_t sha256Info = { LAC_HASH_SHA256_DIGEST_SIZE,
LAC_HASH_SHA256_BLOCK_SIZE,
sha256InitialState,
LAC_HASH_SHA256_STATE_SIZE };
static lac_sym_qat_hash_alg_info_t sha384Info = { LAC_HASH_SHA384_DIGEST_SIZE,
LAC_HASH_SHA384_BLOCK_SIZE,
sha384InitialState,
LAC_HASH_SHA384_STATE_SIZE };
static lac_sym_qat_hash_alg_info_t sha512Info = { LAC_HASH_SHA512_DIGEST_SIZE,
LAC_HASH_SHA512_BLOCK_SIZE,
sha512InitialState,
LAC_HASH_SHA512_STATE_SIZE };
static lac_sym_qat_hash_alg_info_t sha3_224Info = {
LAC_HASH_SHA3_224_DIGEST_SIZE,
LAC_HASH_SHA3_224_BLOCK_SIZE,
sha3_224InitialState,
LAC_HASH_SHA3_224_STATE_SIZE
};
static lac_sym_qat_hash_alg_info_t sha3_256Info = {
LAC_HASH_SHA3_256_DIGEST_SIZE,
LAC_HASH_SHA3_256_BLOCK_SIZE,
sha3_256InitialState,
LAC_HASH_SHA3_256_STATE_SIZE
};
static lac_sym_qat_hash_alg_info_t sha3_384Info = {
LAC_HASH_SHA3_384_DIGEST_SIZE,
LAC_HASH_SHA3_384_BLOCK_SIZE,
sha3_384InitialState,
LAC_HASH_SHA3_384_STATE_SIZE
};
static lac_sym_qat_hash_alg_info_t sha3_512Info = {
LAC_HASH_SHA3_512_DIGEST_SIZE,
LAC_HASH_SHA3_512_BLOCK_SIZE,
sha3_512InitialState,
LAC_HASH_SHA3_512_STATE_SIZE
};
static lac_sym_qat_hash_alg_info_t sm3Info = { LAC_HASH_SM3_DIGEST_SIZE,
LAC_HASH_SM3_BLOCK_SIZE,
sm3InitialState,
LAC_HASH_SM3_STATE_SIZE };
static lac_sym_qat_hash_alg_info_t polyInfo = { LAC_HASH_POLY_DIGEST_SIZE,
LAC_HASH_POLY_BLOCK_SIZE,
NULL,
LAC_HASH_POLY_STATE_SIZE };
static lac_sym_qat_hash_alg_info_t xcbcMacInfo = {
LAC_HASH_XCBC_MAC_128_DIGEST_SIZE,
LAC_HASH_XCBC_MAC_BLOCK_SIZE,
aesXcbcKeySeed,
LAC_SYM_QAT_XCBC_STATE_SIZE
};
static lac_sym_qat_hash_alg_info_t aesCmacInfo = {
LAC_HASH_CMAC_128_DIGEST_SIZE,
LAC_HASH_CMAC_BLOCK_SIZE,
aesCmacKeySeed,
LAC_SYM_QAT_CMAC_STATE_SIZE
};
static lac_sym_qat_hash_alg_info_t aesCcmInfo = {
LAC_HASH_AES_CCM_DIGEST_SIZE,
LAC_HASH_AES_CCM_BLOCK_SIZE,
NULL,
0
};
static lac_sym_qat_hash_alg_info_t aesGcmInfo = {
LAC_HASH_AES_GCM_DIGEST_SIZE,
LAC_HASH_AES_GCM_BLOCK_SIZE,
NULL,
0
};
static lac_sym_qat_hash_alg_info_t kasumiF9Info = {
LAC_HASH_KASUMI_F9_DIGEST_SIZE,
LAC_HASH_KASUMI_F9_BLOCK_SIZE,
NULL,
0
};
static lac_sym_qat_hash_alg_info_t snow3gUia2Info = {
LAC_HASH_SNOW3G_UIA2_DIGEST_SIZE,
LAC_HASH_SNOW3G_UIA2_BLOCK_SIZE,
NULL,
0
};
static lac_sym_qat_hash_alg_info_t aesCbcMacInfo = {
LAC_HASH_AES_CBC_MAC_DIGEST_SIZE,
LAC_HASH_AES_CBC_MAC_BLOCK_SIZE,
NULL,
0
};
static lac_sym_qat_hash_alg_info_t zucEia3Info = {
LAC_HASH_ZUC_EIA3_DIGEST_SIZE,
LAC_HASH_ZUC_EIA3_BLOCK_SIZE,
NULL,
0
};
static lac_sym_qat_hash_qat_info_t md5Config = { ICP_QAT_HW_AUTH_ALGO_MD5,
LAC_HASH_MD5_BLOCK_SIZE,
ICP_QAT_HW_MD5_STATE1_SZ,
ICP_QAT_HW_MD5_STATE2_SZ };
static lac_sym_qat_hash_qat_info_t sha1Config = { ICP_QAT_HW_AUTH_ALGO_SHA1,
LAC_HASH_SHA1_BLOCK_SIZE,
ICP_QAT_HW_SHA1_STATE1_SZ,
ICP_QAT_HW_SHA1_STATE2_SZ };
static lac_sym_qat_hash_qat_info_t sha224Config = {
ICP_QAT_HW_AUTH_ALGO_SHA224,
LAC_HASH_SHA224_BLOCK_SIZE,
ICP_QAT_HW_SHA224_STATE1_SZ,
ICP_QAT_HW_SHA224_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t sha256Config = {
ICP_QAT_HW_AUTH_ALGO_SHA256,
LAC_HASH_SHA256_BLOCK_SIZE,
ICP_QAT_HW_SHA256_STATE1_SZ,
ICP_QAT_HW_SHA256_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t sha384Config = {
ICP_QAT_HW_AUTH_ALGO_SHA384,
LAC_HASH_SHA384_BLOCK_SIZE,
ICP_QAT_HW_SHA384_STATE1_SZ,
ICP_QAT_HW_SHA384_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t sha512Config = {
ICP_QAT_HW_AUTH_ALGO_SHA512,
LAC_HASH_SHA512_BLOCK_SIZE,
ICP_QAT_HW_SHA512_STATE1_SZ,
ICP_QAT_HW_SHA512_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t sha3_224Config = {
ICP_QAT_HW_AUTH_ALGO_SHA3_224,
LAC_HASH_SHA3_224_BLOCK_SIZE,
ICP_QAT_HW_SHA3_224_STATE1_SZ,
ICP_QAT_HW_SHA3_224_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t sha3_256Config = {
ICP_QAT_HW_AUTH_ALGO_SHA3_256,
LAC_HASH_SHA3_256_BLOCK_SIZE,
ICP_QAT_HW_SHA3_256_STATE1_SZ,
ICP_QAT_HW_SHA3_256_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t sha3_384Config = {
ICP_QAT_HW_AUTH_ALGO_SHA3_384,
LAC_HASH_SHA3_384_BLOCK_SIZE,
ICP_QAT_HW_SHA3_384_STATE1_SZ,
ICP_QAT_HW_SHA3_384_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t sha3_512Config = {
ICP_QAT_HW_AUTH_ALGO_SHA3_512,
LAC_HASH_SHA3_512_BLOCK_SIZE,
ICP_QAT_HW_SHA3_512_STATE1_SZ,
ICP_QAT_HW_SHA3_512_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t sm3Config = { ICP_QAT_HW_AUTH_ALGO_SM3,
LAC_HASH_SM3_BLOCK_SIZE,
ICP_QAT_HW_SM3_STATE1_SZ,
ICP_QAT_HW_SM3_STATE2_SZ };
static lac_sym_qat_hash_qat_info_t polyConfig = { ICP_QAT_HW_AUTH_ALGO_POLY,
LAC_HASH_POLY_BLOCK_SIZE,
0,
0 };
static lac_sym_qat_hash_qat_info_t xcbcMacConfig = {
ICP_QAT_HW_AUTH_ALGO_AES_XCBC_MAC,
0,
ICP_QAT_HW_AES_XCBC_MAC_STATE1_SZ,
LAC_SYM_QAT_XCBC_STATE_SIZE
};
static lac_sym_qat_hash_qat_info_t aesCmacConfig = {
ICP_QAT_HW_AUTH_ALGO_AES_XCBC_MAC,
0,
ICP_QAT_HW_AES_XCBC_MAC_STATE1_SZ,
LAC_SYM_QAT_CMAC_STATE_SIZE
};
static lac_sym_qat_hash_qat_info_t aesCcmConfig = {
ICP_QAT_HW_AUTH_ALGO_AES_CBC_MAC,
0,
ICP_QAT_HW_AES_CBC_MAC_STATE1_SZ,
ICP_QAT_HW_AES_CBC_MAC_KEY_SZ + ICP_QAT_HW_AES_CCM_CBC_E_CTR0_SZ
};
static lac_sym_qat_hash_qat_info_t aesGcmConfig = {
ICP_QAT_HW_AUTH_ALGO_GALOIS_128,
0,
ICP_QAT_HW_GALOIS_128_STATE1_SZ,
ICP_QAT_HW_GALOIS_H_SZ + ICP_QAT_HW_GALOIS_LEN_A_SZ +
ICP_QAT_HW_GALOIS_E_CTR0_SZ
};
static lac_sym_qat_hash_qat_info_t kasumiF9Config = {
ICP_QAT_HW_AUTH_ALGO_KASUMI_F9,
0,
ICP_QAT_HW_KASUMI_F9_STATE1_SZ,
ICP_QAT_HW_KASUMI_F9_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t snow3gUia2Config = {
ICP_QAT_HW_AUTH_ALGO_SNOW_3G_UIA2,
0,
ICP_QAT_HW_SNOW_3G_UIA2_STATE1_SZ,
ICP_QAT_HW_SNOW_3G_UIA2_STATE2_SZ
};
static lac_sym_qat_hash_qat_info_t aesCbcMacConfig = {
ICP_QAT_HW_AUTH_ALGO_AES_CBC_MAC,
0,
ICP_QAT_HW_AES_CBC_MAC_STATE1_SZ,
ICP_QAT_HW_AES_CBC_MAC_STATE1_SZ + ICP_QAT_HW_AES_CBC_MAC_STATE1_SZ
};
static lac_sym_qat_hash_qat_info_t zucEia3Config = {
ICP_QAT_HW_AUTH_ALGO_ZUC_3G_128_EIA3,
0,
ICP_QAT_HW_ZUC_3G_EIA3_STATE1_SZ,
ICP_QAT_HW_ZUC_3G_EIA3_STATE2_SZ
};
static lac_sym_qat_hash_def_map_t lacHashDefsMapping[] = {
{ CPA_CY_SYM_HASH_MD5, { &md5Info, &md5Config } },
{ CPA_CY_SYM_HASH_SHA1, { &sha1Info, &sha1Config } },
{ CPA_CY_SYM_HASH_SHA224, { &sha224Info, &sha224Config } },
{ CPA_CY_SYM_HASH_SHA256, { &sha256Info, &sha256Config } },
{ CPA_CY_SYM_HASH_SHA384, { &sha384Info, &sha384Config } },
{ CPA_CY_SYM_HASH_SHA512, { &sha512Info, &sha512Config } },
{ CPA_CY_SYM_HASH_SHA3_224, { &sha3_224Info, &sha3_224Config } },
{ CPA_CY_SYM_HASH_SHA3_256, { &sha3_256Info, &sha3_256Config } },
{ CPA_CY_SYM_HASH_SHA3_384, { &sha3_384Info, &sha3_384Config } },
{ CPA_CY_SYM_HASH_SHA3_512, { &sha3_512Info, &sha3_512Config } },
{ CPA_CY_SYM_HASH_SM3, { &sm3Info, &sm3Config } },
{ CPA_CY_SYM_HASH_POLY, { &polyInfo, &polyConfig } },
{ CPA_CY_SYM_HASH_AES_XCBC, { &xcbcMacInfo, &xcbcMacConfig } },
{ CPA_CY_SYM_HASH_AES_CMAC, { &aesCmacInfo, &aesCmacConfig } },
{ CPA_CY_SYM_HASH_AES_CCM, { &aesCcmInfo, &aesCcmConfig } },
{ CPA_CY_SYM_HASH_AES_GCM, { &aesGcmInfo, &aesGcmConfig } },
{ CPA_CY_SYM_HASH_KASUMI_F9, { &kasumiF9Info, &kasumiF9Config } },
{ CPA_CY_SYM_HASH_SNOW3G_UIA2, { &snow3gUia2Info, &snow3gUia2Config } },
{ CPA_CY_SYM_HASH_AES_GMAC, { &aesGcmInfo, &aesGcmConfig } },
{ CPA_CY_SYM_HASH_ZUC_EIA3, { &zucEia3Info, &zucEia3Config } },
{ CPA_CY_SYM_HASH_AES_CBC_MAC, { &aesCbcMacInfo, &aesCbcMacConfig } }
};
CpaStatus
LacSymQat_HashLookupInit(CpaInstanceHandle instanceHandle)
{
Cpa32U entry = 0;
Cpa32U numEntries = 0;
Cpa32U arraySize = 0;
CpaStatus status = CPA_STATUS_SUCCESS;
CpaCySymHashAlgorithm hashAlg = CPA_CY_SYM_HASH_NONE;
sal_service_t *pService = (sal_service_t *)instanceHandle;
lac_sym_qat_hash_defs_t **pLacHashLookupDefs;
arraySize =
(CPA_CY_HASH_ALG_END + 1) * sizeof(lac_sym_qat_hash_defs_t *);
arraySize = LAC_ALIGN_POW2_ROUNDUP(arraySize, LAC_64BYTE_ALIGNMENT);
pLacHashLookupDefs = LAC_OS_MALLOC(arraySize);
if (NULL == pLacHashLookupDefs) {
return CPA_STATUS_RESOURCE;
}
LAC_OS_BZERO(pLacHashLookupDefs, arraySize);
numEntries =
sizeof(lacHashDefsMapping) / sizeof(lac_sym_qat_hash_def_map_t);
for (entry = 0; entry < numEntries; entry++) {
hashAlg = lacHashDefsMapping[entry].hashAlgorithm;
pLacHashLookupDefs[hashAlg] =
&(lacHashDefsMapping[entry].hashDefs);
}
((sal_crypto_service_t *)pService)->pLacHashLookupDefs =
pLacHashLookupDefs;
return status;
}
void
LacSymQat_HashAlgLookupGet(CpaInstanceHandle instanceHandle,
CpaCySymHashAlgorithm hashAlgorithm,
lac_sym_qat_hash_alg_info_t **ppHashAlgInfo)
{
sal_service_t *pService = (sal_service_t *)instanceHandle;
lac_sym_qat_hash_defs_t **pLacHashLookupDefs =
((sal_crypto_service_t *)pService)->pLacHashLookupDefs;
*ppHashAlgInfo = pLacHashLookupDefs[hashAlgorithm]->algInfo;
}
void
LacSymQat_HashDefsLookupGet(CpaInstanceHandle instanceHandle,
CpaCySymHashAlgorithm hashAlgorithm,
lac_sym_qat_hash_defs_t **ppHashDefsInfo)
{
sal_service_t *pService = (sal_service_t *)instanceHandle;
lac_sym_qat_hash_defs_t **pLacHashLookupDefs =
((sal_crypto_service_t *)pService)->pLacHashLookupDefs;
*ppHashDefsInfo = pLacHashLookupDefs[hashAlgorithm];
}