#pragma once #include enum chello_parse_result { CHELLO_PARSE_SUCCESS = 0, CHELLO_PARSE_INVALID_FORMAT = -1, CHELLO_PARSE_NOT_ENOUGH_BUFF = -2 }; struct ssl_version { uint8_t minor; uint8_t major; uint16_t ossl_format; }; struct ssl_chello { struct ssl_version min_version; struct ssl_version max_version; char *sni; char *alpn; char *sign_algos; uint16_t sign_algos_len; char *supported_groups; uint16_t supported_groups_len; char *cipher_suites; uint16_t cipher_suites_len; }; struct ssl_chello* ssl_chello_parse(const unsigned char* buff, size_t buff_len, enum chello_parse_result* result); void ssl_chello_free(struct ssl_chello* chello); void ssl_cipher_suites_to_name(const char *source, int source_len, char *result_common, size_t sz_common, char *result_tls13, size_t sz_tls13);