summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
author李佳 <[email protected]>2024-07-10 06:58:33 +0000
committerlijia <[email protected]>2024-07-11 11:23:10 +0800
commit4782225f29b6f80ee023297d0a0726c6c798e3d7 (patch)
tree35e385984c8312daf1de3f479af5523928626f54 /include
Initial commitv1.0.1
Diffstat (limited to 'include')
-rw-r--r--include/quic_decoder.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/quic_decoder.h b/include/quic_decoder.h
new file mode 100644
index 0000000..a4a909b
--- /dev/null
+++ b/include/quic_decoder.h
@@ -0,0 +1,33 @@
+#pragma once
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+#include <stddef.h>
+
+enum quic_message_type
+{
+ QUIC_CLIENT_HELLO,
+ QUIC_SERVER_HELLO,
+ QUIC_PROTECTED_PAYLOAD,
+ QUIC_MSG_MAX,
+};
+
+#define QUIC_DECODER_TOPIC "QUIC_DECODER_MESSAGE"
+struct quic_message;
+enum quic_message_type quic_message_type_get(const struct quic_message *msg);
+
+/*
+ * 0 is reserved for version negotiation, will never represent a real protocol.
+ * https://www.rfc-editor.org/rfc/rfc9000.html#name-versions
+*/
+unsigned int quic_message_version_get(const struct quic_message *msg);
+const char *quic_message_readable_version_get0(const struct quic_message *msg);
+const char *quic_message_readable_ja3hash_get0(const struct quic_message *msg);
+void quic_message_sni_get0(const struct quic_message *msg, char **result, size_t *len);
+void quic_message_user_agent_get0(const struct quic_message *msg, char **result, size_t *len);
+void quic_message_protected_payload_get0(const struct quic_message *msg, char **result, size_t *len);
+
+#ifdef __cplusplus
+}
+#endif