summaryrefslogtreecommitdiff
path: root/utils/mir_signal.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/mir_signal.h')
-rw-r--r--utils/mir_signal.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/utils/mir_signal.h b/utils/mir_signal.h
new file mode 100644
index 0000000000..ef443374ff
--- /dev/null
+++ b/utils/mir_signal.h
@@ -0,0 +1,56 @@
+#ifndef __MIR_SIGNAL_H__
+#define __MIR_SIGNAL_H__
+
+#include <m_system.h>
+#include <m_utils.h>
+
+#include "../libs/libsignal/src/curve.h"
+#include "../libs/libsignal/src/hkdf.h"
+#include "../libs/libsignal/src/key_helper.h"
+#include "../libs/libsignal/src/protocol.h"
+#include "../libs/libsignal/src/session_builder.h"
+#include "../libs/libsignal/src/session_cipher.h"
+#include "../libs/libsignal/src/signal_protocol.h"
+#include "../libs/libsignal/src/signal_protocol_types.h"
+
+struct signal_buffer
+{
+ size_t len;
+ uint8_t data[1];
+};
+
+struct signal_type_base
+{
+ unsigned int ref_count = 0;
+ void (*destroy)(signal_type_base *instance) = 0;
+};
+
+struct ec_public_key : public signal_type_base
+{
+ uint8_t data[32];
+};
+
+struct ec_private_key : public signal_type_base
+{
+ uint8_t data[32];
+};
+
+class SignalBuffer
+{
+ signal_buffer *m_buf;
+
+public:
+ SignalBuffer(const class MBinBuffer &buf);
+ SignalBuffer(const ec_public_key *key);
+ SignalBuffer(const ec_private_key *key);
+ SignalBuffer(const session_pre_key *pre_key);
+ SignalBuffer(const session_signed_pre_key *pre_key);
+ ~SignalBuffer();
+
+ __forceinline uint8_t* data() const { return m_buf->data; }
+ __forceinline unsigned len() const { return unsigned(m_buf->len); }
+
+ CMStringA toBase64() const;
+};
+
+#endif // __MIR_SMILEYS_H__