129610e41SRavi Kumar /* SPDX-License-Identifier: BSD-3-Clause 229610e41SRavi Kumar * Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved. 329610e41SRavi Kumar */ 429610e41SRavi Kumar 529610e41SRavi Kumar #ifndef _CCP_CRYPTO_H_ 629610e41SRavi Kumar #define _CCP_CRYPTO_H_ 729610e41SRavi Kumar 829610e41SRavi Kumar #include <limits.h> 929610e41SRavi Kumar #include <stdbool.h> 1029610e41SRavi Kumar #include <stdint.h> 1129610e41SRavi Kumar #include <string.h> 1229610e41SRavi Kumar 1329610e41SRavi Kumar #include <rte_atomic.h> 1429610e41SRavi Kumar #include <rte_byteorder.h> 1529610e41SRavi Kumar #include <rte_io.h> 1629610e41SRavi Kumar #include <rte_pci.h> 1729610e41SRavi Kumar #include <rte_spinlock.h> 1829610e41SRavi Kumar #include <rte_crypto_sym.h> 1929610e41SRavi Kumar #include <rte_cryptodev.h> 2029610e41SRavi Kumar 2129610e41SRavi Kumar #include "ccp_dev.h" 2229610e41SRavi Kumar 23d9a9e561SRavi Kumar #define AES_BLOCK_SIZE 16 24d9a9e561SRavi Kumar #define CMAC_PAD_VALUE 0x80 25d9a9e561SRavi Kumar #define CTR_NONCE_SIZE 4 26d9a9e561SRavi Kumar #define CTR_IV_SIZE 8 2729610e41SRavi Kumar #define CCP_SHA3_CTX_SIZE 200 28d9a9e561SRavi Kumar 29d9a9e561SRavi Kumar /**Macro helpers for CCP command creation*/ 30d9a9e561SRavi Kumar #define CCP_AES_SIZE(p) ((p)->aes.size) 31d9a9e561SRavi Kumar #define CCP_AES_ENCRYPT(p) ((p)->aes.encrypt) 32d9a9e561SRavi Kumar #define CCP_AES_MODE(p) ((p)->aes.mode) 33d9a9e561SRavi Kumar #define CCP_AES_TYPE(p) ((p)->aes.type) 34c05adb06SRavi Kumar #define CCP_DES_ENCRYPT(p) ((p)->des.encrypt) 35c05adb06SRavi Kumar #define CCP_DES_MODE(p) ((p)->des.mode) 36c05adb06SRavi Kumar #define CCP_DES_TYPE(p) ((p)->des.type) 370c6a81efSRavi Kumar #define CCP_SHA_TYPE(p) ((p)->sha.type) 38d9a9e561SRavi Kumar #define CCP_PT_BYTESWAP(p) ((p)->pt.byteswap) 39d9a9e561SRavi Kumar #define CCP_PT_BITWISE(p) ((p)->pt.bitwise) 40d9a9e561SRavi Kumar 410c6a81efSRavi Kumar /* HMAC */ 420c6a81efSRavi Kumar #define HMAC_IPAD_VALUE 0x36 430c6a81efSRavi Kumar #define HMAC_OPAD_VALUE 0x5c 440c6a81efSRavi Kumar 45e0d88a39SRavi Kumar /* MD5 */ 460c6a81efSRavi Kumar #define MD5_DIGEST_SIZE 16 470c6a81efSRavi Kumar #define MD5_BLOCK_SIZE 64 480c6a81efSRavi Kumar 490c6a81efSRavi Kumar /* SHA */ 500c6a81efSRavi Kumar #define SHA_COMMON_DIGEST_SIZE 32 510c6a81efSRavi Kumar #define SHA1_DIGEST_SIZE 20 520c6a81efSRavi Kumar #define SHA1_BLOCK_SIZE 64 530c6a81efSRavi Kumar 54ca40ea24SRavi Kumar #define SHA224_DIGEST_SIZE 28 55ca40ea24SRavi Kumar #define SHA224_BLOCK_SIZE 64 561df800f8SRavi Kumar #define SHA3_224_BLOCK_SIZE 144 57ca40ea24SRavi Kumar 58ca40ea24SRavi Kumar #define SHA256_DIGEST_SIZE 32 59ca40ea24SRavi Kumar #define SHA256_BLOCK_SIZE 64 601df800f8SRavi Kumar #define SHA3_256_BLOCK_SIZE 136 61ca40ea24SRavi Kumar 62ca40ea24SRavi Kumar #define SHA384_DIGEST_SIZE 48 63ca40ea24SRavi Kumar #define SHA384_BLOCK_SIZE 128 641df800f8SRavi Kumar #define SHA3_384_BLOCK_SIZE 104 65ca40ea24SRavi Kumar 66ca40ea24SRavi Kumar #define SHA512_DIGEST_SIZE 64 67ca40ea24SRavi Kumar #define SHA512_BLOCK_SIZE 128 681df800f8SRavi Kumar #define SHA3_512_BLOCK_SIZE 72 69ca40ea24SRavi Kumar 706c561b03SRavi Kumar /* Maximum length for digest */ 716c561b03SRavi Kumar #define DIGEST_LENGTH_MAX 64 726c561b03SRavi Kumar 737be78d02SJosh Soref /* SHA LSB initialization values */ 740c6a81efSRavi Kumar 750c6a81efSRavi Kumar #define SHA1_H0 0x67452301UL 760c6a81efSRavi Kumar #define SHA1_H1 0xefcdab89UL 770c6a81efSRavi Kumar #define SHA1_H2 0x98badcfeUL 780c6a81efSRavi Kumar #define SHA1_H3 0x10325476UL 790c6a81efSRavi Kumar #define SHA1_H4 0xc3d2e1f0UL 800c6a81efSRavi Kumar 81ca40ea24SRavi Kumar #define SHA224_H0 0xc1059ed8UL 82ca40ea24SRavi Kumar #define SHA224_H1 0x367cd507UL 83ca40ea24SRavi Kumar #define SHA224_H2 0x3070dd17UL 84ca40ea24SRavi Kumar #define SHA224_H3 0xf70e5939UL 85ca40ea24SRavi Kumar #define SHA224_H4 0xffc00b31UL 86ca40ea24SRavi Kumar #define SHA224_H5 0x68581511UL 87ca40ea24SRavi Kumar #define SHA224_H6 0x64f98fa7UL 88ca40ea24SRavi Kumar #define SHA224_H7 0xbefa4fa4UL 89ca40ea24SRavi Kumar 90ca40ea24SRavi Kumar #define SHA256_H0 0x6a09e667UL 91ca40ea24SRavi Kumar #define SHA256_H1 0xbb67ae85UL 92ca40ea24SRavi Kumar #define SHA256_H2 0x3c6ef372UL 93ca40ea24SRavi Kumar #define SHA256_H3 0xa54ff53aUL 94ca40ea24SRavi Kumar #define SHA256_H4 0x510e527fUL 95ca40ea24SRavi Kumar #define SHA256_H5 0x9b05688cUL 96ca40ea24SRavi Kumar #define SHA256_H6 0x1f83d9abUL 97ca40ea24SRavi Kumar #define SHA256_H7 0x5be0cd19UL 98ca40ea24SRavi Kumar 99ca40ea24SRavi Kumar #define SHA384_H0 0xcbbb9d5dc1059ed8ULL 100ca40ea24SRavi Kumar #define SHA384_H1 0x629a292a367cd507ULL 101ca40ea24SRavi Kumar #define SHA384_H2 0x9159015a3070dd17ULL 102ca40ea24SRavi Kumar #define SHA384_H3 0x152fecd8f70e5939ULL 103ca40ea24SRavi Kumar #define SHA384_H4 0x67332667ffc00b31ULL 104ca40ea24SRavi Kumar #define SHA384_H5 0x8eb44a8768581511ULL 105ca40ea24SRavi Kumar #define SHA384_H6 0xdb0c2e0d64f98fa7ULL 106ca40ea24SRavi Kumar #define SHA384_H7 0x47b5481dbefa4fa4ULL 107ca40ea24SRavi Kumar 108ca40ea24SRavi Kumar #define SHA512_H0 0x6a09e667f3bcc908ULL 109ca40ea24SRavi Kumar #define SHA512_H1 0xbb67ae8584caa73bULL 110ca40ea24SRavi Kumar #define SHA512_H2 0x3c6ef372fe94f82bULL 111ca40ea24SRavi Kumar #define SHA512_H3 0xa54ff53a5f1d36f1ULL 112ca40ea24SRavi Kumar #define SHA512_H4 0x510e527fade682d1ULL 113ca40ea24SRavi Kumar #define SHA512_H5 0x9b05688c2b3e6c1fULL 114ca40ea24SRavi Kumar #define SHA512_H6 0x1f83d9abfb41bd6bULL 115ca40ea24SRavi Kumar #define SHA512_H7 0x5be0cd19137e2179ULL 116ca40ea24SRavi Kumar 11729610e41SRavi Kumar /** 11829610e41SRavi Kumar * CCP supported AES modes 11929610e41SRavi Kumar */ 12029610e41SRavi Kumar enum ccp_aes_mode { 12129610e41SRavi Kumar CCP_AES_MODE_ECB = 0, 12229610e41SRavi Kumar CCP_AES_MODE_CBC, 12329610e41SRavi Kumar CCP_AES_MODE_OFB, 12429610e41SRavi Kumar CCP_AES_MODE_CFB, 12529610e41SRavi Kumar CCP_AES_MODE_CTR, 12629610e41SRavi Kumar CCP_AES_MODE_CMAC, 12729610e41SRavi Kumar CCP_AES_MODE_GHASH, 12829610e41SRavi Kumar CCP_AES_MODE_GCTR, 12929610e41SRavi Kumar CCP_AES_MODE__LAST, 13029610e41SRavi Kumar }; 13129610e41SRavi Kumar 13229610e41SRavi Kumar /** 13329610e41SRavi Kumar * CCP AES GHASH mode 13429610e41SRavi Kumar */ 13529610e41SRavi Kumar enum ccp_aes_ghash_mode { 13629610e41SRavi Kumar CCP_AES_MODE_GHASH_AAD = 0, 13729610e41SRavi Kumar CCP_AES_MODE_GHASH_FINAL 13829610e41SRavi Kumar }; 13929610e41SRavi Kumar 14029610e41SRavi Kumar /** 14129610e41SRavi Kumar * CCP supported AES types 14229610e41SRavi Kumar */ 14329610e41SRavi Kumar enum ccp_aes_type { 14429610e41SRavi Kumar CCP_AES_TYPE_128 = 0, 14529610e41SRavi Kumar CCP_AES_TYPE_192, 14629610e41SRavi Kumar CCP_AES_TYPE_256, 14729610e41SRavi Kumar CCP_AES_TYPE__LAST, 14829610e41SRavi Kumar }; 14929610e41SRavi Kumar 15029610e41SRavi Kumar /***** 3DES engine *****/ 15129610e41SRavi Kumar 15229610e41SRavi Kumar /** 15329610e41SRavi Kumar * CCP supported DES/3DES modes 15429610e41SRavi Kumar */ 15529610e41SRavi Kumar enum ccp_des_mode { 15629610e41SRavi Kumar CCP_DES_MODE_ECB = 0, /* Not supported */ 15729610e41SRavi Kumar CCP_DES_MODE_CBC, 15829610e41SRavi Kumar CCP_DES_MODE_CFB, 15929610e41SRavi Kumar }; 16029610e41SRavi Kumar 16129610e41SRavi Kumar /** 16229610e41SRavi Kumar * CCP supported DES types 16329610e41SRavi Kumar */ 16429610e41SRavi Kumar enum ccp_des_type { 16529610e41SRavi Kumar CCP_DES_TYPE_128 = 0, /* 112 + 16 parity */ 16629610e41SRavi Kumar CCP_DES_TYPE_192, /* 168 + 24 parity */ 16729610e41SRavi Kumar CCP_DES_TYPE__LAST, 16829610e41SRavi Kumar }; 16929610e41SRavi Kumar 17029610e41SRavi Kumar /***** SHA engine *****/ 17129610e41SRavi Kumar 17229610e41SRavi Kumar /** 17329610e41SRavi Kumar * ccp_sha_type - type of SHA operation 17429610e41SRavi Kumar * 17529610e41SRavi Kumar * @CCP_SHA_TYPE_1: SHA-1 operation 17629610e41SRavi Kumar * @CCP_SHA_TYPE_224: SHA-224 operation 17729610e41SRavi Kumar * @CCP_SHA_TYPE_256: SHA-256 operation 17829610e41SRavi Kumar */ 17929610e41SRavi Kumar enum ccp_sha_type { 18029610e41SRavi Kumar CCP_SHA_TYPE_1 = 1, 18129610e41SRavi Kumar CCP_SHA_TYPE_224, 18229610e41SRavi Kumar CCP_SHA_TYPE_256, 18329610e41SRavi Kumar CCP_SHA_TYPE_384, 18429610e41SRavi Kumar CCP_SHA_TYPE_512, 18529610e41SRavi Kumar CCP_SHA_TYPE_RSVD1, 18629610e41SRavi Kumar CCP_SHA_TYPE_RSVD2, 18729610e41SRavi Kumar CCP_SHA3_TYPE_224, 18829610e41SRavi Kumar CCP_SHA3_TYPE_256, 18929610e41SRavi Kumar CCP_SHA3_TYPE_384, 19029610e41SRavi Kumar CCP_SHA3_TYPE_512, 19129610e41SRavi Kumar CCP_SHA_TYPE__LAST, 19229610e41SRavi Kumar }; 19329610e41SRavi Kumar 19429610e41SRavi Kumar /** 19529610e41SRavi Kumar * CCP supported cipher algorithms 19629610e41SRavi Kumar */ 19729610e41SRavi Kumar enum ccp_cipher_algo { 19829610e41SRavi Kumar CCP_CIPHER_ALGO_AES_CBC = 0, 19929610e41SRavi Kumar CCP_CIPHER_ALGO_AES_ECB, 20029610e41SRavi Kumar CCP_CIPHER_ALGO_AES_CTR, 20129610e41SRavi Kumar CCP_CIPHER_ALGO_AES_GCM, 20229610e41SRavi Kumar CCP_CIPHER_ALGO_3DES_CBC, 20329610e41SRavi Kumar }; 20429610e41SRavi Kumar 20529610e41SRavi Kumar /** 20629610e41SRavi Kumar * CCP cipher operation type 20729610e41SRavi Kumar */ 20829610e41SRavi Kumar enum ccp_cipher_dir { 20929610e41SRavi Kumar CCP_CIPHER_DIR_DECRYPT = 0, 21029610e41SRavi Kumar CCP_CIPHER_DIR_ENCRYPT = 1, 21129610e41SRavi Kumar }; 21229610e41SRavi Kumar 21329610e41SRavi Kumar /** 21429610e41SRavi Kumar * CCP supported hash algorithms 21529610e41SRavi Kumar */ 21629610e41SRavi Kumar enum ccp_hash_algo { 21729610e41SRavi Kumar CCP_AUTH_ALGO_SHA1 = 0, 21829610e41SRavi Kumar CCP_AUTH_ALGO_SHA1_HMAC, 21929610e41SRavi Kumar CCP_AUTH_ALGO_SHA224, 22029610e41SRavi Kumar CCP_AUTH_ALGO_SHA224_HMAC, 22129610e41SRavi Kumar CCP_AUTH_ALGO_SHA3_224, 22229610e41SRavi Kumar CCP_AUTH_ALGO_SHA3_224_HMAC, 22329610e41SRavi Kumar CCP_AUTH_ALGO_SHA256, 22429610e41SRavi Kumar CCP_AUTH_ALGO_SHA256_HMAC, 22529610e41SRavi Kumar CCP_AUTH_ALGO_SHA3_256, 22629610e41SRavi Kumar CCP_AUTH_ALGO_SHA3_256_HMAC, 22729610e41SRavi Kumar CCP_AUTH_ALGO_SHA384, 22829610e41SRavi Kumar CCP_AUTH_ALGO_SHA384_HMAC, 22929610e41SRavi Kumar CCP_AUTH_ALGO_SHA3_384, 23029610e41SRavi Kumar CCP_AUTH_ALGO_SHA3_384_HMAC, 23129610e41SRavi Kumar CCP_AUTH_ALGO_SHA512, 23229610e41SRavi Kumar CCP_AUTH_ALGO_SHA512_HMAC, 23329610e41SRavi Kumar CCP_AUTH_ALGO_SHA3_512, 23429610e41SRavi Kumar CCP_AUTH_ALGO_SHA3_512_HMAC, 23529610e41SRavi Kumar CCP_AUTH_ALGO_AES_CMAC, 23629610e41SRavi Kumar CCP_AUTH_ALGO_AES_GCM, 23729610e41SRavi Kumar CCP_AUTH_ALGO_MD5_HMAC, 23829610e41SRavi Kumar }; 23929610e41SRavi Kumar 24029610e41SRavi Kumar /** 24129610e41SRavi Kumar * CCP hash operation type 24229610e41SRavi Kumar */ 24329610e41SRavi Kumar enum ccp_hash_op { 24429610e41SRavi Kumar CCP_AUTH_OP_GENERATE = 0, 24529610e41SRavi Kumar CCP_AUTH_OP_VERIFY = 1, 24629610e41SRavi Kumar }; 24729610e41SRavi Kumar 24829610e41SRavi Kumar /* CCP crypto private session structure */ 249*27595cd8STyler Retzlaff struct __rte_cache_aligned ccp_session { 250e0d88a39SRavi Kumar bool auth_opt; 25129610e41SRavi Kumar enum ccp_cmd_order cmd_id; 25229610e41SRavi Kumar /**< chain order mode */ 25329610e41SRavi Kumar struct { 25429610e41SRavi Kumar uint16_t length; 25529610e41SRavi Kumar uint16_t offset; 25629610e41SRavi Kumar } iv; 25729610e41SRavi Kumar /**< IV parameters */ 25829610e41SRavi Kumar struct { 25929610e41SRavi Kumar enum ccp_cipher_algo algo; 26029610e41SRavi Kumar enum ccp_engine engine; 26129610e41SRavi Kumar union { 26229610e41SRavi Kumar enum ccp_aes_mode aes_mode; 26329610e41SRavi Kumar enum ccp_des_mode des_mode; 26429610e41SRavi Kumar } um; 26529610e41SRavi Kumar union { 26629610e41SRavi Kumar enum ccp_aes_type aes_type; 26729610e41SRavi Kumar enum ccp_des_type des_type; 26829610e41SRavi Kumar } ut; 26929610e41SRavi Kumar enum ccp_cipher_dir dir; 27029610e41SRavi Kumar uint64_t key_length; 27129610e41SRavi Kumar /**< max cipher key size 256 bits */ 27229610e41SRavi Kumar uint8_t key[32]; 27329610e41SRavi Kumar /**ccp key format*/ 27429610e41SRavi Kumar uint8_t key_ccp[32]; 27529610e41SRavi Kumar phys_addr_t key_phys; 27629610e41SRavi Kumar /**AES-ctr nonce(4) iv(8) ctr*/ 27729610e41SRavi Kumar uint8_t nonce[32]; 27829610e41SRavi Kumar phys_addr_t nonce_phys; 27929610e41SRavi Kumar } cipher; 28029610e41SRavi Kumar /**< Cipher Parameters */ 28129610e41SRavi Kumar 28229610e41SRavi Kumar struct { 28329610e41SRavi Kumar enum ccp_hash_algo algo; 28429610e41SRavi Kumar enum ccp_engine engine; 28529610e41SRavi Kumar union { 28629610e41SRavi Kumar enum ccp_aes_mode aes_mode; 28729610e41SRavi Kumar } um; 28829610e41SRavi Kumar union { 28929610e41SRavi Kumar enum ccp_sha_type sha_type; 29029610e41SRavi Kumar enum ccp_aes_type aes_type; 29129610e41SRavi Kumar } ut; 29229610e41SRavi Kumar enum ccp_hash_op op; 29329610e41SRavi Kumar uint64_t key_length; 29429610e41SRavi Kumar /**< max hash key size 144 bytes (struct capabilties) */ 29529610e41SRavi Kumar uint8_t key[144]; 29629610e41SRavi Kumar /**< max be key size of AES is 32*/ 29729610e41SRavi Kumar uint8_t key_ccp[32]; 29829610e41SRavi Kumar phys_addr_t key_phys; 29929610e41SRavi Kumar uint64_t digest_length; 30029610e41SRavi Kumar void *ctx; 30129610e41SRavi Kumar int ctx_len; 30229610e41SRavi Kumar int offset; 30329610e41SRavi Kumar int block_size; 30429610e41SRavi Kumar /**< Buffer to store Software generated precomute values*/ 30529610e41SRavi Kumar /**< For HMAC H(ipad ^ key) and H(opad ^ key) */ 30629610e41SRavi Kumar /**< For CMAC K1 IV and K2 IV*/ 30729610e41SRavi Kumar uint8_t pre_compute[2 * CCP_SHA3_CTX_SIZE]; 30829610e41SRavi Kumar /**< SHA3 initial ctx all zeros*/ 30929610e41SRavi Kumar uint8_t sha3_ctx[200]; 31029610e41SRavi Kumar int aad_length; 31129610e41SRavi Kumar } auth; 31229610e41SRavi Kumar /**< Authentication Parameters */ 31329610e41SRavi Kumar enum rte_crypto_aead_algorithm aead_algo; 31429610e41SRavi Kumar /**< AEAD Algorithm */ 31529610e41SRavi Kumar 31629610e41SRavi Kumar uint32_t reserved; 317*27595cd8STyler Retzlaff }; 31829610e41SRavi Kumar 31929610e41SRavi Kumar extern uint8_t ccp_cryptodev_driver_id; 32029610e41SRavi Kumar 32129610e41SRavi Kumar struct ccp_qp; 322e0d88a39SRavi Kumar struct ccp_private; 32329610e41SRavi Kumar 32429610e41SRavi Kumar /** 32529610e41SRavi Kumar * Set and validate CCP crypto session parameters 32629610e41SRavi Kumar * 32729610e41SRavi Kumar * @param sess ccp private session 32829610e41SRavi Kumar * @param xform crypto xform for this session 32929610e41SRavi Kumar * @return 0 on success otherwise -1 33029610e41SRavi Kumar */ 33129610e41SRavi Kumar int ccp_set_session_parameters(struct ccp_session *sess, 332e0d88a39SRavi Kumar const struct rte_crypto_sym_xform *xform, 333e0d88a39SRavi Kumar struct ccp_private *internals); 33429610e41SRavi Kumar 33570f0f8a8SRavi Kumar /** 33670f0f8a8SRavi Kumar * Find count of slots 33770f0f8a8SRavi Kumar * 33870f0f8a8SRavi Kumar * @param session CCP private session 33970f0f8a8SRavi Kumar * @return count of free slots available 34070f0f8a8SRavi Kumar */ 34170f0f8a8SRavi Kumar int ccp_compute_slot_count(struct ccp_session *session); 34270f0f8a8SRavi Kumar 34370f0f8a8SRavi Kumar /** 34470f0f8a8SRavi Kumar * process crypto ops to be enqueued 34570f0f8a8SRavi Kumar * 34670f0f8a8SRavi Kumar * @param qp CCP crypto queue-pair 34770f0f8a8SRavi Kumar * @param op crypto ops table 34870f0f8a8SRavi Kumar * @param cmd_q CCP cmd queue 34970f0f8a8SRavi Kumar * @param nb_ops No. of ops to be submitted 35070f0f8a8SRavi Kumar * @return 0 on success otherwise -1 35170f0f8a8SRavi Kumar */ 3526c561b03SRavi Kumar int process_ops_to_enqueue(struct ccp_qp *qp, 35370f0f8a8SRavi Kumar struct rte_crypto_op **op, 35470f0f8a8SRavi Kumar struct ccp_queue *cmd_q, 35570f0f8a8SRavi Kumar uint16_t nb_ops, 35672775857SAmaranath Somalapuram uint16_t total_nb_ops, 35772775857SAmaranath Somalapuram int slots_req, 35872775857SAmaranath Somalapuram uint16_t b_idx); 35970f0f8a8SRavi Kumar 36070f0f8a8SRavi Kumar /** 36170f0f8a8SRavi Kumar * process crypto ops to be dequeued 36270f0f8a8SRavi Kumar * 36370f0f8a8SRavi Kumar * @param qp CCP crypto queue-pair 36470f0f8a8SRavi Kumar * @param op crypto ops table 36570f0f8a8SRavi Kumar * @param nb_ops requested no. of ops 36670f0f8a8SRavi Kumar * @return 0 on success otherwise -1 36770f0f8a8SRavi Kumar */ 36870f0f8a8SRavi Kumar int process_ops_to_dequeue(struct ccp_qp *qp, 36970f0f8a8SRavi Kumar struct rte_crypto_op **op, 37072775857SAmaranath Somalapuram uint16_t nb_ops, 37172775857SAmaranath Somalapuram uint16_t *total_nb_ops); 37270f0f8a8SRavi Kumar 3731df800f8SRavi Kumar 3741df800f8SRavi Kumar /** 3751df800f8SRavi Kumar * Apis for SHA3 partial hash generation 3761df800f8SRavi Kumar * @param data_in buffer pointer on which phash is applied 3771df800f8SRavi Kumar * @param data_out phash result in ccp be format is written 3781df800f8SRavi Kumar */ 3791df800f8SRavi Kumar int partial_hash_sha3_224(uint8_t *data_in, 3801df800f8SRavi Kumar uint8_t *data_out); 3811df800f8SRavi Kumar 3821df800f8SRavi Kumar int partial_hash_sha3_256(uint8_t *data_in, 3831df800f8SRavi Kumar uint8_t *data_out); 3841df800f8SRavi Kumar 3851df800f8SRavi Kumar int partial_hash_sha3_384(uint8_t *data_in, 3861df800f8SRavi Kumar uint8_t *data_out); 3871df800f8SRavi Kumar 3881df800f8SRavi Kumar int partial_hash_sha3_512(uint8_t *data_in, 3891df800f8SRavi Kumar uint8_t *data_out); 3901df800f8SRavi Kumar 39129610e41SRavi Kumar #endif /* _CCP_CRYPTO_H_ */ 392