37 lines
821 B
C
37 lines
821 B
C
#pragma once
|
|
#include <stdint.h>
|
|
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);
|
|
|