diff options
Diffstat (limited to 'src/ssl_internal.h')
| -rw-r--r-- | src/ssl_internal.h | 65 |
1 files changed, 60 insertions, 5 deletions
diff --git a/src/ssl_internal.h b/src/ssl_internal.h index 9e7dad1..2891b68 100644 --- a/src/ssl_internal.h +++ b/src/ssl_internal.h @@ -4,6 +4,44 @@ #include <stddef.h> #include <uthash/utarray.h> +#include "ssl_decoder.h" + +#define SSL_DECODER_TOML_PATH "conf/ssl/ssl_decoder.toml" + +#define SSL_DECODER_FALSE 0 +#define SSL_DECODER_TRUE 1 + +#define SSL_UUID_BYTES_SZ 16 + +#define SSL_RANDOM_TIME_LEN 4 +#define SSL_RANDOM_SIZE 28 + +#define SSL_HANDSHAKE_CLIENT_HELLO 1 +#define SSL_HANDSHAKE_SERVER_HELLO 2 +#define SSL_HANDSHAKE_CERTIFICATE 11 +#define SSL_HANDSHAKE_SERVER_KEY_EXCHANGE 12 + +#define SSL_CONTENT_TYPE_HANDSHAKE 0x16 +#define SSL_CONTENT_TYPE_ALERT 0x15 +#define SSL_CONTENT_TYPE_APPLICATION_DATA 0x17 +#define SSL_CONTENT_TYPE_CHANGE_CIPHER_SPEC 0x14 + +#define ALPN_EXT_TYPE 0x0010 +#define SERVER_NAME_EXT_TYPE 0x0000 +#define SERVER_NAME_HOST_TYPE 0x0000 +#define SERVER_NAME_OTHER_TYPE 0x0008 +#define SESSION_TICKET_EXT_TYPE 0x0023 +#define ENCRPTED_SERVER_NAME_EXT_TYPE 0xFFCE +#define ENCRPTED_CLIENT_HELLO_EXT_TYPE 0xFE0D +#define EC_POINT_FORMATS_EXT_TYPE 0x000B + +// https://datatracker.ietf.org/doc/html/rfc7919 +// Supported Groups +#define SUPPORTED_GROUPS_EXT_TYPE 0x000A + + +#define SSL_CERTIFICATE_NUM_MAX 8 +#define SSL_CERTIFICATE_VERSION_MAX 3 #define SSL_DECODER_VERSION_UNKNOWN 0x0000 #define SSL_DECODER_VERSION_SSL_V2_0 0x0002 @@ -132,11 +170,8 @@ struct ssl_algorithm_identifier struct ssl_certificate { - int total_len; - int cert_len; - char cert_type; - - //struct ssl_l1v version; + uint16_t version; + enum ssl_certificate_type type; struct ssl_validity validity; struct ssl_serial_number serial; struct ssl_rdn_sequence issuer; @@ -147,3 +182,23 @@ struct ssl_certificate struct ssl_algorithm_identifier algorithm_identifier; struct ssl_signature_algorithm_id signature_algorithm; }; + + +#define SSL_MESSAGE_MAGIC 0xEF53534C + +struct ssl_message +{ + uint32_t magic; + enum ssl_message_type type; + char uuid_bytes[SSL_UUID_BYTES_SZ]; + struct session *ss; + struct ssl_decoder_plugin_env *plugin_env; + union + { + struct ssl_client_hello *chello; + struct ssl_server_hello *shello; + struct ssl_certificate *certificate; + void *data; + }; + +}; |
