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