16#ifndef PARSE_EXTENSIONS_H
17#define PARSE_EXTENSIONS_H
22#include "parse_common.h"
44int32_t ParseClientExtension(TLS_Ctx *ctx,
const uint8_t *buf, uint32_t bufLen,
ClientHelloMsg *msg);
70int32_t ParseServerExtension(TLS_Ctx *ctx,
const uint8_t *buf, uint32_t bufLen,
ServerHelloMsg *msg);
85int32_t ParseExHeader(TLS_Ctx *ctx,
const uint8_t *buf, uint32_t bufLen, uint16_t *extMsgType, uint32_t *extMsgLen);
104int32_t ParseEmptyExtension(TLS_Ctx *ctx, uint16_t extMsgType, uint32_t extMsgLen,
bool *haveExtension);
106int32_t ParseExCookie(
const uint8_t *buf, uint32_t bufLen, uint8_t **cookie, uint16_t *cookieLen);
108int32_t ParseSecRenegoInfo(TLS_Ctx *ctx,
const uint8_t *buf, uint32_t bufLen, uint8_t **secRenegoInfo,
109 uint8_t *secRenegoInfoSize);
111int32_t ParseRecordSizeLimit(TLS_Ctx *ctx,
const uint8_t *buf, uint32_t bufLen,
112 bool *haveRecordSizeLimit, uint16_t *recordSizeLimit);
114int32_t ParseServerSelectedAlpnProtocol(
115 ParsePacket *pkt,
bool *haveSelectedAlpn, uint8_t **alpnSelected, uint16_t *alpnSelectedSize);
126int32_t ParseDupExtProcess(TLS_Ctx *ctx, uint32_t logId,
const void *format);
137int32_t ParseErrorExtLengthProcess(TLS_Ctx *ctx, uint32_t logId,
const void *format);
139bool GetExtensionFlagValue(TLS_Ctx *ctx, uint32_t hsExTypeId);
141int32_t CheckForDuplicateExtension(
ParsePacket *pkt, uint16_t *extMsgType, uint32_t *extMsgLen,
142 uint32_t *extensionId, uint64_t extensionTypeMask);