diff options
Diffstat (limited to 'utils/mir_signal.h')
-rw-r--r-- | utils/mir_signal.h | 56 |
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__ |