xref: /openbmc/linux/drivers/crypto/ccree/cc_crypto_ctx.h (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
14c3f9727SGilad Ben-Yossef /* SPDX-License-Identifier: GPL-2.0 */
2*03963caeSGilad Ben-Yossef /* Copyright (C) 2012-2019 ARM Limited (or its affiliates). */
34c3f9727SGilad Ben-Yossef 
44c3f9727SGilad Ben-Yossef #ifndef _CC_CRYPTO_CTX_H_
54c3f9727SGilad Ben-Yossef #define _CC_CRYPTO_CTX_H_
64c3f9727SGilad Ben-Yossef 
74c3f9727SGilad Ben-Yossef #include <linux/types.h>
84c3f9727SGilad Ben-Yossef 
94c3f9727SGilad Ben-Yossef #define CC_DRV_DES_IV_SIZE 8
104c3f9727SGilad Ben-Yossef #define CC_DRV_DES_BLOCK_SIZE 8
114c3f9727SGilad Ben-Yossef 
124c3f9727SGilad Ben-Yossef #define CC_DRV_DES_ONE_KEY_SIZE 8
134c3f9727SGilad Ben-Yossef #define CC_DRV_DES_DOUBLE_KEY_SIZE 16
144c3f9727SGilad Ben-Yossef #define CC_DRV_DES_TRIPLE_KEY_SIZE 24
154c3f9727SGilad Ben-Yossef #define CC_DRV_DES_KEY_SIZE_MAX CC_DRV_DES_TRIPLE_KEY_SIZE
164c3f9727SGilad Ben-Yossef 
174c3f9727SGilad Ben-Yossef #define CC_AES_IV_SIZE 16
184c3f9727SGilad Ben-Yossef #define CC_AES_IV_SIZE_WORDS (CC_AES_IV_SIZE >> 2)
194c3f9727SGilad Ben-Yossef 
204c3f9727SGilad Ben-Yossef #define CC_AES_BLOCK_SIZE 16
214c3f9727SGilad Ben-Yossef #define CC_AES_BLOCK_SIZE_WORDS 4
224c3f9727SGilad Ben-Yossef 
234c3f9727SGilad Ben-Yossef #define CC_AES_128_BIT_KEY_SIZE 16
244c3f9727SGilad Ben-Yossef #define CC_AES_128_BIT_KEY_SIZE_WORDS	(CC_AES_128_BIT_KEY_SIZE >> 2)
254c3f9727SGilad Ben-Yossef #define CC_AES_192_BIT_KEY_SIZE 24
264c3f9727SGilad Ben-Yossef #define CC_AES_192_BIT_KEY_SIZE_WORDS	(CC_AES_192_BIT_KEY_SIZE >> 2)
274c3f9727SGilad Ben-Yossef #define CC_AES_256_BIT_KEY_SIZE 32
284c3f9727SGilad Ben-Yossef #define CC_AES_256_BIT_KEY_SIZE_WORDS	(CC_AES_256_BIT_KEY_SIZE >> 2)
294c3f9727SGilad Ben-Yossef #define CC_AES_KEY_SIZE_MAX			CC_AES_256_BIT_KEY_SIZE
304c3f9727SGilad Ben-Yossef #define CC_AES_KEY_SIZE_WORDS_MAX		(CC_AES_KEY_SIZE_MAX >> 2)
314c3f9727SGilad Ben-Yossef 
324c3f9727SGilad Ben-Yossef #define CC_MD5_DIGEST_SIZE	16
334c3f9727SGilad Ben-Yossef #define CC_SHA1_DIGEST_SIZE	20
344c3f9727SGilad Ben-Yossef #define CC_SHA224_DIGEST_SIZE	28
354c3f9727SGilad Ben-Yossef #define CC_SHA256_DIGEST_SIZE	32
364c3f9727SGilad Ben-Yossef #define CC_SHA256_DIGEST_SIZE_IN_WORDS 8
374c3f9727SGilad Ben-Yossef #define CC_SHA384_DIGEST_SIZE	48
384c3f9727SGilad Ben-Yossef #define CC_SHA512_DIGEST_SIZE	64
394c3f9727SGilad Ben-Yossef 
404c3f9727SGilad Ben-Yossef #define CC_SHA1_BLOCK_SIZE 64
414c3f9727SGilad Ben-Yossef #define CC_SHA1_BLOCK_SIZE_IN_WORDS 16
424c3f9727SGilad Ben-Yossef #define CC_MD5_BLOCK_SIZE 64
434c3f9727SGilad Ben-Yossef #define CC_MD5_BLOCK_SIZE_IN_WORDS 16
444c3f9727SGilad Ben-Yossef #define CC_SHA224_BLOCK_SIZE 64
454c3f9727SGilad Ben-Yossef #define CC_SHA256_BLOCK_SIZE 64
464c3f9727SGilad Ben-Yossef #define CC_SHA256_BLOCK_SIZE_IN_WORDS 16
474c3f9727SGilad Ben-Yossef #define CC_SHA1_224_256_BLOCK_SIZE 64
484c3f9727SGilad Ben-Yossef #define CC_SHA384_BLOCK_SIZE 128
494c3f9727SGilad Ben-Yossef #define CC_SHA512_BLOCK_SIZE 128
504c3f9727SGilad Ben-Yossef 
514c3f9727SGilad Ben-Yossef #define CC_DIGEST_SIZE_MAX CC_SHA512_DIGEST_SIZE
524c3f9727SGilad Ben-Yossef #define CC_HASH_BLOCK_SIZE_MAX CC_SHA512_BLOCK_SIZE /*1024b*/
534c3f9727SGilad Ben-Yossef 
544c3f9727SGilad Ben-Yossef #define CC_HMAC_BLOCK_SIZE_MAX CC_HASH_BLOCK_SIZE_MAX
554c3f9727SGilad Ben-Yossef 
564c3f9727SGilad Ben-Yossef #define CC_DRV_ALG_MAX_BLOCK_SIZE CC_HASH_BLOCK_SIZE_MAX
574c3f9727SGilad Ben-Yossef 
58cadfd898SGilad Ben-Yossef #define CC_CPP_NUM_SLOTS	8
59cadfd898SGilad Ben-Yossef #define CC_CPP_NUM_ALGS		2
60cadfd898SGilad Ben-Yossef 
61cadfd898SGilad Ben-Yossef enum cc_cpp_alg {
62cadfd898SGilad Ben-Yossef 	CC_CPP_SM4 = 1,
63cadfd898SGilad Ben-Yossef 	CC_CPP_AES = 0
64cadfd898SGilad Ben-Yossef };
65cadfd898SGilad Ben-Yossef 
664c3f9727SGilad Ben-Yossef enum drv_engine_type {
674c3f9727SGilad Ben-Yossef 	DRV_ENGINE_NULL = 0,
684c3f9727SGilad Ben-Yossef 	DRV_ENGINE_AES = 1,
694c3f9727SGilad Ben-Yossef 	DRV_ENGINE_DES = 2,
704c3f9727SGilad Ben-Yossef 	DRV_ENGINE_HASH = 3,
714c3f9727SGilad Ben-Yossef 	DRV_ENGINE_RC4 = 4,
724c3f9727SGilad Ben-Yossef 	DRV_ENGINE_DOUT = 5,
734c3f9727SGilad Ben-Yossef 	DRV_ENGINE_RESERVE32B = S32_MAX,
744c3f9727SGilad Ben-Yossef };
754c3f9727SGilad Ben-Yossef 
764c3f9727SGilad Ben-Yossef enum drv_crypto_alg {
774c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_NULL = -1,
784c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_AES  = 0,
794c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_DES  = 1,
804c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_HASH = 2,
814c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_C2   = 3,
824c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_HMAC = 4,
834c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_AEAD = 5,
844c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_BYPASS = 6,
854c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_NUM = 7,
864c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_ALG_RESERVE32B = S32_MAX
874c3f9727SGilad Ben-Yossef };
884c3f9727SGilad Ben-Yossef 
894c3f9727SGilad Ben-Yossef enum drv_crypto_direction {
904c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_DIRECTION_NULL = -1,
914c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_DIRECTION_ENCRYPT = 0,
924c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_DIRECTION_DECRYPT = 1,
934c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_DIRECTION_DECRYPT_ENCRYPT = 3,
944c3f9727SGilad Ben-Yossef 	DRV_CRYPTO_DIRECTION_RESERVE32B = S32_MAX
954c3f9727SGilad Ben-Yossef };
964c3f9727SGilad Ben-Yossef 
974c3f9727SGilad Ben-Yossef enum drv_cipher_mode {
984c3f9727SGilad Ben-Yossef 	DRV_CIPHER_NULL_MODE = -1,
994c3f9727SGilad Ben-Yossef 	DRV_CIPHER_ECB = 0,
1004c3f9727SGilad Ben-Yossef 	DRV_CIPHER_CBC = 1,
1014c3f9727SGilad Ben-Yossef 	DRV_CIPHER_CTR = 2,
1024c3f9727SGilad Ben-Yossef 	DRV_CIPHER_CBC_MAC = 3,
1034c3f9727SGilad Ben-Yossef 	DRV_CIPHER_XTS = 4,
1044c3f9727SGilad Ben-Yossef 	DRV_CIPHER_XCBC_MAC = 5,
1054c3f9727SGilad Ben-Yossef 	DRV_CIPHER_OFB = 6,
1064c3f9727SGilad Ben-Yossef 	DRV_CIPHER_CMAC = 7,
1074c3f9727SGilad Ben-Yossef 	DRV_CIPHER_CCM = 8,
1084c3f9727SGilad Ben-Yossef 	DRV_CIPHER_CBC_CTS = 11,
1094c3f9727SGilad Ben-Yossef 	DRV_CIPHER_GCTR = 12,
1104c3f9727SGilad Ben-Yossef 	DRV_CIPHER_ESSIV = 13,
1114c3f9727SGilad Ben-Yossef 	DRV_CIPHER_RESERVE32B = S32_MAX
1124c3f9727SGilad Ben-Yossef };
1134c3f9727SGilad Ben-Yossef 
1144c3f9727SGilad Ben-Yossef enum drv_hash_mode {
1154c3f9727SGilad Ben-Yossef 	DRV_HASH_NULL = -1,
1164c3f9727SGilad Ben-Yossef 	DRV_HASH_SHA1 = 0,
1174c3f9727SGilad Ben-Yossef 	DRV_HASH_SHA256 = 1,
1184c3f9727SGilad Ben-Yossef 	DRV_HASH_SHA224 = 2,
1194c3f9727SGilad Ben-Yossef 	DRV_HASH_SHA512 = 3,
1204c3f9727SGilad Ben-Yossef 	DRV_HASH_SHA384 = 4,
1214c3f9727SGilad Ben-Yossef 	DRV_HASH_MD5 = 5,
1224c3f9727SGilad Ben-Yossef 	DRV_HASH_CBC_MAC = 6,
1234c3f9727SGilad Ben-Yossef 	DRV_HASH_XCBC_MAC = 7,
1244c3f9727SGilad Ben-Yossef 	DRV_HASH_CMAC = 8,
125927574e0SYael Chemla 	DRV_HASH_SM3 = 9,
126927574e0SYael Chemla 	DRV_HASH_MODE_NUM = 10,
1274c3f9727SGilad Ben-Yossef 	DRV_HASH_RESERVE32B = S32_MAX
1284c3f9727SGilad Ben-Yossef };
1294c3f9727SGilad Ben-Yossef 
1304c3f9727SGilad Ben-Yossef enum drv_hash_hw_mode {
1314c3f9727SGilad Ben-Yossef 	DRV_HASH_HW_MD5 = 0,
1324c3f9727SGilad Ben-Yossef 	DRV_HASH_HW_SHA1 = 1,
1334c3f9727SGilad Ben-Yossef 	DRV_HASH_HW_SHA256 = 2,
1344c3f9727SGilad Ben-Yossef 	DRV_HASH_HW_SHA224 = 10,
1354c3f9727SGilad Ben-Yossef 	DRV_HASH_HW_SHA512 = 4,
1364c3f9727SGilad Ben-Yossef 	DRV_HASH_HW_SHA384 = 12,
1374c3f9727SGilad Ben-Yossef 	DRV_HASH_HW_GHASH = 6,
138927574e0SYael Chemla 	DRV_HASH_HW_SM3 = 14,
1394c3f9727SGilad Ben-Yossef 	DRV_HASH_HW_RESERVE32B = S32_MAX
1404c3f9727SGilad Ben-Yossef };
1414c3f9727SGilad Ben-Yossef 
1424c3f9727SGilad Ben-Yossef #endif /* _CC_CRYPTO_CTX_H_ */
143