1 /* 2 * This file is part of the openHiTLS project. 3 * 4 * openHiTLS is licensed under the Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * 8 * http://license.coscl.org.cn/MulanPSL2 9 * 10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13 * See the Mulan PSL v2 for more details. 14 */ 15 16 #ifndef TRANSCRIPT_HASH_H 17 #define TRANSCRIPT_HASH_H 18 19 #include <stdint.h> 20 #include "hitls_crypt_type.h" 21 #include "hs_ctx.h" 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /** 28 * @brief Set the hash algorithm 29 * 30 * @param libCtx [IN] library context for provider 31 * @param attrName [IN] attribute name of the provider, maybe NULL 32 * @param ctx [IN] verify context 33 * @param hashAlgo [IN] hash algorithm 34 * 35 * @retval HITLS_SUCCESS 36 * @retval HITLS_CRYPT_ERR_DIGEST hash operation failed 37 * @retval HITLS_UNREGISTERED_CALLBACK The callback function is not registered. 38 */ 39 int32_t VERIFY_SetHash(HITLS_Lib_Ctx *libCtx, const char *attrName, VerifyCtx *ctx, HITLS_HashAlgo hashAlgo); 40 41 /** 42 * @brief Add handshake message data 43 * 44 * @param ctx [IN] verify context 45 * @param data [IN] Handshake message data 46 * @param len [IN] Data length 47 * 48 * @retval HITLS_SUCCESS 49 * @retval HITLS_UNREGISTERED_CALLBACK The callback function is not registered. 50 * @retval HITLS_CRYPT_ERR_DIGEST hash operation failed 51 * @retval HITLS_MEMCPY_FAIL 52 * @retval HITLS_MEMALLOC_FAIL 53 */ 54 int32_t VERIFY_Append(VerifyCtx *ctx, const uint8_t *data, uint32_t len); 55 56 /** 57 * @brief Calculate the SessionHash 58 * 59 * @param ctx [IN] verify context 60 * @param digest [OUT] digest data 61 * @param digestLen [IN/OUT] IN:maximum length of digest OUT:digest length 62 * 63 * @retval HITLS_SUCCESS 64 * @retval For other error codes, see SAL_CRYPT_DigestFinal 65 */ 66 int32_t VERIFY_CalcSessionHash(VerifyCtx *ctx, uint8_t *digest, uint32_t *digestLen); 67 68 /** 69 * @brief Release the message cache linked list 70 * 71 * @param ctx [IN] verify context 72 */ 73 void VERIFY_FreeMsgCache(VerifyCtx *ctx); 74 75 #ifdef __cplusplus 76 } 77 #endif /* end __cplusplus */ 78 #endif /* end TRANSCRIPT_HASH_H */ 79