162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright (C) 2012-2019 ARM Limited (or its affiliates). */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef _CC_CRYPTO_CTX_H_ 562306a36Sopenharmony_ci#define _CC_CRYPTO_CTX_H_ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <linux/types.h> 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#define CC_DRV_DES_IV_SIZE 8 1062306a36Sopenharmony_ci#define CC_DRV_DES_BLOCK_SIZE 8 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#define CC_DRV_DES_ONE_KEY_SIZE 8 1362306a36Sopenharmony_ci#define CC_DRV_DES_DOUBLE_KEY_SIZE 16 1462306a36Sopenharmony_ci#define CC_DRV_DES_TRIPLE_KEY_SIZE 24 1562306a36Sopenharmony_ci#define CC_DRV_DES_KEY_SIZE_MAX CC_DRV_DES_TRIPLE_KEY_SIZE 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define CC_AES_IV_SIZE 16 1862306a36Sopenharmony_ci#define CC_AES_IV_SIZE_WORDS (CC_AES_IV_SIZE >> 2) 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define CC_AES_BLOCK_SIZE 16 2162306a36Sopenharmony_ci#define CC_AES_BLOCK_SIZE_WORDS 4 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci#define CC_AES_128_BIT_KEY_SIZE 16 2462306a36Sopenharmony_ci#define CC_AES_128_BIT_KEY_SIZE_WORDS (CC_AES_128_BIT_KEY_SIZE >> 2) 2562306a36Sopenharmony_ci#define CC_AES_192_BIT_KEY_SIZE 24 2662306a36Sopenharmony_ci#define CC_AES_192_BIT_KEY_SIZE_WORDS (CC_AES_192_BIT_KEY_SIZE >> 2) 2762306a36Sopenharmony_ci#define CC_AES_256_BIT_KEY_SIZE 32 2862306a36Sopenharmony_ci#define CC_AES_256_BIT_KEY_SIZE_WORDS (CC_AES_256_BIT_KEY_SIZE >> 2) 2962306a36Sopenharmony_ci#define CC_AES_KEY_SIZE_MAX CC_AES_256_BIT_KEY_SIZE 3062306a36Sopenharmony_ci#define CC_AES_KEY_SIZE_WORDS_MAX (CC_AES_KEY_SIZE_MAX >> 2) 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci#define CC_MD5_DIGEST_SIZE 16 3362306a36Sopenharmony_ci#define CC_SHA1_DIGEST_SIZE 20 3462306a36Sopenharmony_ci#define CC_SHA224_DIGEST_SIZE 28 3562306a36Sopenharmony_ci#define CC_SHA256_DIGEST_SIZE 32 3662306a36Sopenharmony_ci#define CC_SHA256_DIGEST_SIZE_IN_WORDS 8 3762306a36Sopenharmony_ci#define CC_SHA384_DIGEST_SIZE 48 3862306a36Sopenharmony_ci#define CC_SHA512_DIGEST_SIZE 64 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci#define CC_SHA1_BLOCK_SIZE 64 4162306a36Sopenharmony_ci#define CC_SHA1_BLOCK_SIZE_IN_WORDS 16 4262306a36Sopenharmony_ci#define CC_MD5_BLOCK_SIZE 64 4362306a36Sopenharmony_ci#define CC_MD5_BLOCK_SIZE_IN_WORDS 16 4462306a36Sopenharmony_ci#define CC_SHA224_BLOCK_SIZE 64 4562306a36Sopenharmony_ci#define CC_SHA256_BLOCK_SIZE 64 4662306a36Sopenharmony_ci#define CC_SHA256_BLOCK_SIZE_IN_WORDS 16 4762306a36Sopenharmony_ci#define CC_SHA1_224_256_BLOCK_SIZE 64 4862306a36Sopenharmony_ci#define CC_SHA384_BLOCK_SIZE 128 4962306a36Sopenharmony_ci#define CC_SHA512_BLOCK_SIZE 128 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci#define CC_DIGEST_SIZE_MAX CC_SHA512_DIGEST_SIZE 5262306a36Sopenharmony_ci#define CC_HASH_BLOCK_SIZE_MAX CC_SHA512_BLOCK_SIZE /*1024b*/ 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#define CC_HMAC_BLOCK_SIZE_MAX CC_HASH_BLOCK_SIZE_MAX 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci#define CC_DRV_ALG_MAX_BLOCK_SIZE CC_HASH_BLOCK_SIZE_MAX 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci#define CC_CPP_NUM_SLOTS 8 5962306a36Sopenharmony_ci#define CC_CPP_NUM_ALGS 2 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_cienum cc_cpp_alg { 6262306a36Sopenharmony_ci CC_CPP_SM4 = 1, 6362306a36Sopenharmony_ci CC_CPP_AES = 0 6462306a36Sopenharmony_ci}; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_cienum drv_engine_type { 6762306a36Sopenharmony_ci DRV_ENGINE_NULL = 0, 6862306a36Sopenharmony_ci DRV_ENGINE_AES = 1, 6962306a36Sopenharmony_ci DRV_ENGINE_DES = 2, 7062306a36Sopenharmony_ci DRV_ENGINE_HASH = 3, 7162306a36Sopenharmony_ci DRV_ENGINE_RC4 = 4, 7262306a36Sopenharmony_ci DRV_ENGINE_DOUT = 5, 7362306a36Sopenharmony_ci DRV_ENGINE_RESERVE32B = S32_MAX, 7462306a36Sopenharmony_ci}; 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_cienum drv_crypto_alg { 7762306a36Sopenharmony_ci DRV_CRYPTO_ALG_NULL = -1, 7862306a36Sopenharmony_ci DRV_CRYPTO_ALG_AES = 0, 7962306a36Sopenharmony_ci DRV_CRYPTO_ALG_DES = 1, 8062306a36Sopenharmony_ci DRV_CRYPTO_ALG_HASH = 2, 8162306a36Sopenharmony_ci DRV_CRYPTO_ALG_C2 = 3, 8262306a36Sopenharmony_ci DRV_CRYPTO_ALG_HMAC = 4, 8362306a36Sopenharmony_ci DRV_CRYPTO_ALG_AEAD = 5, 8462306a36Sopenharmony_ci DRV_CRYPTO_ALG_BYPASS = 6, 8562306a36Sopenharmony_ci DRV_CRYPTO_ALG_NUM = 7, 8662306a36Sopenharmony_ci DRV_CRYPTO_ALG_RESERVE32B = S32_MAX 8762306a36Sopenharmony_ci}; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_cienum drv_crypto_direction { 9062306a36Sopenharmony_ci DRV_CRYPTO_DIRECTION_NULL = -1, 9162306a36Sopenharmony_ci DRV_CRYPTO_DIRECTION_ENCRYPT = 0, 9262306a36Sopenharmony_ci DRV_CRYPTO_DIRECTION_DECRYPT = 1, 9362306a36Sopenharmony_ci DRV_CRYPTO_DIRECTION_DECRYPT_ENCRYPT = 3, 9462306a36Sopenharmony_ci DRV_CRYPTO_DIRECTION_RESERVE32B = S32_MAX 9562306a36Sopenharmony_ci}; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_cienum drv_cipher_mode { 9862306a36Sopenharmony_ci DRV_CIPHER_NULL_MODE = -1, 9962306a36Sopenharmony_ci DRV_CIPHER_ECB = 0, 10062306a36Sopenharmony_ci DRV_CIPHER_CBC = 1, 10162306a36Sopenharmony_ci DRV_CIPHER_CTR = 2, 10262306a36Sopenharmony_ci DRV_CIPHER_CBC_MAC = 3, 10362306a36Sopenharmony_ci DRV_CIPHER_XTS = 4, 10462306a36Sopenharmony_ci DRV_CIPHER_XCBC_MAC = 5, 10562306a36Sopenharmony_ci DRV_CIPHER_OFB = 6, 10662306a36Sopenharmony_ci DRV_CIPHER_CMAC = 7, 10762306a36Sopenharmony_ci DRV_CIPHER_CCM = 8, 10862306a36Sopenharmony_ci DRV_CIPHER_CBC_CTS = 11, 10962306a36Sopenharmony_ci DRV_CIPHER_GCTR = 12, 11062306a36Sopenharmony_ci DRV_CIPHER_ESSIV = 13, 11162306a36Sopenharmony_ci DRV_CIPHER_RESERVE32B = S32_MAX 11262306a36Sopenharmony_ci}; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_cienum drv_hash_mode { 11562306a36Sopenharmony_ci DRV_HASH_NULL = -1, 11662306a36Sopenharmony_ci DRV_HASH_SHA1 = 0, 11762306a36Sopenharmony_ci DRV_HASH_SHA256 = 1, 11862306a36Sopenharmony_ci DRV_HASH_SHA224 = 2, 11962306a36Sopenharmony_ci DRV_HASH_SHA512 = 3, 12062306a36Sopenharmony_ci DRV_HASH_SHA384 = 4, 12162306a36Sopenharmony_ci DRV_HASH_MD5 = 5, 12262306a36Sopenharmony_ci DRV_HASH_CBC_MAC = 6, 12362306a36Sopenharmony_ci DRV_HASH_XCBC_MAC = 7, 12462306a36Sopenharmony_ci DRV_HASH_CMAC = 8, 12562306a36Sopenharmony_ci DRV_HASH_SM3 = 9, 12662306a36Sopenharmony_ci DRV_HASH_MODE_NUM = 10, 12762306a36Sopenharmony_ci DRV_HASH_RESERVE32B = S32_MAX 12862306a36Sopenharmony_ci}; 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_cienum drv_hash_hw_mode { 13162306a36Sopenharmony_ci DRV_HASH_HW_MD5 = 0, 13262306a36Sopenharmony_ci DRV_HASH_HW_SHA1 = 1, 13362306a36Sopenharmony_ci DRV_HASH_HW_SHA256 = 2, 13462306a36Sopenharmony_ci DRV_HASH_HW_SHA224 = 10, 13562306a36Sopenharmony_ci DRV_HASH_HW_SHA512 = 4, 13662306a36Sopenharmony_ci DRV_HASH_HW_SHA384 = 12, 13762306a36Sopenharmony_ci DRV_HASH_HW_GHASH = 6, 13862306a36Sopenharmony_ci DRV_HASH_HW_SM3 = 14, 13962306a36Sopenharmony_ci DRV_HASH_HW_RESERVE32B = S32_MAX 14062306a36Sopenharmony_ci}; 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci#endif /* _CC_CRYPTO_CTX_H_ */ 143