• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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