summaryrefslogtreecommitdiff
path: root/src/ssl_internal.h
diff options
context:
space:
mode:
authorliuxueli <[email protected]>2024-08-06 05:51:48 +0000
committerliuxueli <[email protected]>2024-08-06 05:51:48 +0000
commit4b3d68bc667299a0ae383435fd5e60ddd04cb5e8 (patch)
tree375b493d56dc88aa3840a236e712a3b1511f92a7 /src/ssl_internal.h
parent91ec4d1ee31278133881094501a03ed11d9fa839 (diff)
Feature: certificate decode
Diffstat (limited to 'src/ssl_internal.h')
-rw-r--r--src/ssl_internal.h65
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;
+ };
+
+};