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 PARSE_H 17 #define PARSE_H 18 19 #include "hs_msg.h" 20 #include "tls.h" 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 /** 27 * @brief Parse handshake message header 28 * 29 * @param ctx [IN] TLS context 30 * @param data [IN] Handshake message 31 * @param len [IN] Message length 32 * @param hsMsgInfo [OUT] Parsed handshake message header 33 * 34 * @return HITLS_SUCCESS 35 * For other error codes, see hitls_error.h 36 */ 37 int32_t HS_ParseMsgHeader(TLS_Ctx *ctx, const uint8_t *data, uint32_t len, HS_MsgInfo *hsMsgInfo); 38 39 /** 40 * @brief Parse the whole handshake message 41 * Used in pairs with HS_CleanMsg. After parsing, the data needs to be cleaned. 42 * 43 * @param ctx [IN] TLS context 44 * @param hsMsgInfo [IN] Handshake message 45 * @param hsMsg [OUT] Parsed complete handshake message 46 * 47 * @return HITLS_SUCCESS 48 * For other error codes, see hitls_error.h 49 */ 50 int32_t HS_ParseMsg(TLS_Ctx *ctx, const HS_MsgInfo *hsMsgInfo, HS_Msg *hsMsg); 51 52 /** 53 * @brief Clean handshake messages 54 * Used in pairs with HS_ParseMsg to release the memory allocated in hsMsg 55 * 56 * @param hsMsg [IN] Handshake message 57 */ 58 void HS_CleanMsg(HS_Msg *hsMsg); 59 60 61 /** 62 * @brief Check whether the type of the handshake message is expected 63 * 64 * @param ctx [IN] TLS context 65 * @param msgType [IN] Handshake message type 66 * 67 * @return HITLS_SUCCESS 68 * For other error codes, see hitls_error.h 69 */ 70 int32_t CheckHsMsgType(TLS_Ctx *ctx, HS_MsgType msgType); 71 72 #ifdef __cplusplus 73 } 74 #endif /* end __cplusplus */ 75 76 #endif /* end PARSE_H */ 77