20 #ifndef lime_x3dh_protocol_hpp
21 #define lime_x3dh_protocol_hpp
40 template <
typename Curve>
78 namespace x3dh_protocol {
79 template <
typename Curve>
80 void buildMessage_registerUser(std::vector<uint8_t> &message,
const DSA<Curve, lime::DSAtype::publicKey> &Ik,
const X<Curve, lime::Xtype::publicKey> &SPk,
const DSA<Curve, lime::DSAtype::signature> &Sig,
const uint32_t SPk_id,
const std::vector<X<Curve, lime::Xtype::publicKey>> &OPks,
const std::vector<uint32_t> &OPk_ids) noexcept;
82 template <
typename Curve>
85 template <
typename Curve>
86 void buildMessage_publishSPk(std::vector<uint8_t> &message,
const X<Curve, lime::Xtype::publicKey> &SPk,
const DSA<Curve, lime::DSAtype::signature> &Sig,
const uint32_t SPk_id) noexcept;
88 template <
typename Curve>
89 void buildMessage_publishOPks(std::vector<uint8_t> &message,
const std::vector<X<Curve, lime::Xtype::publicKey>> &OPks,
const std::vector<uint32_t> &OPk_ids) noexcept;
91 template <
typename Curve>
94 template <
typename Curve>
98 #ifdef EC25519_ENABLED
99 extern template void buildMessage_registerUser<C255>(std::vector<uint8_t> &message,
const DSA<C255, lime::DSAtype::publicKey> &Ik,
const X<C255, lime::Xtype::publicKey> &SPk,
const DSA<C255, lime::DSAtype::signature> &Sig,
const uint32_t SPk_id,
const std::vector<X<C255, lime::Xtype::publicKey>> &OPks,
const std::vector<uint32_t> &OPk_ids) noexcept;
100 extern template void buildMessage_deleteUser<C255>(std::vector<uint8_t> &message) noexcept;
101 extern template void buildMessage_publishSPk<C255>(std::vector<uint8_t> &message,
const X<C255, lime::Xtype::publicKey> &SPk,
const DSA<C255, lime::DSAtype::signature> &Sig,
const uint32_t SPk_id) noexcept;
102 extern template void buildMessage_publishOPks<C255>(std::vector<uint8_t> &message,
const std::vector<X<C255, lime::Xtype::publicKey>> &OPks,
const std::vector<uint32_t> &OPk_ids) noexcept;
103 extern template void buildMessage_getPeerBundles<C255>(std::vector<uint8_t> &message, std::vector<std::string> &peer_device_ids) noexcept;
104 extern template void buildMessage_getSelfOPks<C255>(std::vector<uint8_t> &message) noexcept;
108 extern template void buildMessage_registerUser<C448>(std::vector<uint8_t> &message,
const DSA<C448, lime::DSAtype::publicKey> &Ik,
const X<C448, lime::Xtype::publicKey> &SPk,
const DSA<C448, lime::DSAtype::signature> &Sig,
const uint32_t SPk_id,
const std::vector<X<C448, lime::Xtype::publicKey>> &OPks,
const std::vector<uint32_t> &OPk_ids) noexcept;
109 extern template void buildMessage_deleteUser<C448>(std::vector<uint8_t> &message) noexcept;
110 extern template void buildMessage_publishSPk<C448>(std::vector<uint8_t> &message,
const X<C448, lime::Xtype::publicKey> &SPk,
const DSA<C448, lime::DSAtype::signature> &Sig,
const uint32_t SPk_id) noexcept;
111 extern template void buildMessage_publishOPks<C448>(std::vector<uint8_t> &message,
const std::vector<X<C448, lime::Xtype::publicKey>> &OPks,
const std::vector<uint32_t> &OPk_ids) noexcept;
112 extern template void buildMessage_getPeerBundles<C448>(std::vector<uint8_t> &message, std::vector<std::string> &peer_device_ids) noexcept;
113 extern template void buildMessage_getSelfOPks<C448>(std::vector<uint8_t> &message) noexcept;
void buildMessage_getSelfOPks(std::vector< uint8_t > &message) noexcept
build a getSelfOPks message
Definition: lime_x3dh_protocol.cpp:396
void buildMessage_getPeerBundles(std::vector< uint8_t > &message, std::vector< std::string > &peer_device_ids) noexcept
build a getPeerBundle message
Definition: lime_x3dh_protocol.cpp:353
void buildMessage_publishOPks(std::vector< uint8_t > &message, const std::vector< X< Curve, lime::Xtype::publicKey >> &OPks, const std::vector< uint32_t > &OPk_ids) noexcept
build a postOPks message
Definition: lime_x3dh_protocol.cpp:304
void buildMessage_deleteUser(std::vector< uint8_t > &message) noexcept
build a deleteUser message
Definition: lime_x3dh_protocol.cpp:248
void buildMessage_registerUser(std::vector< uint8_t > &message, const DSA< Curve, lime::DSAtype::publicKey > &Ik, const X< Curve, lime::Xtype::publicKey > &SPk, const DSA< Curve, lime::DSAtype::signature > &Sig, const uint32_t SPk_id, const std::vector< X< Curve, lime::Xtype::publicKey >> &OPks, const std::vector< uint32_t > &OPk_ids) noexcept
build a registerUser message : Identity Key<EDDSA Public Key length>
Definition: lime_x3dh_protocol.cpp:180
void buildMessage_publishSPk(std::vector< uint8_t > &message, const X< Curve, lime::Xtype::publicKey > &SPk, const DSA< Curve, lime::DSAtype::signature > &Sig, const uint32_t SPk_id) noexcept
build a postSPk message
Definition: lime_x3dh_protocol.cpp:267
X3DHKeyBundleFlag
Set possible values for a flag in the keyBundle X3DH packet.
Definition: lime_x3dh_protocol.hpp:31
Holds everything found in a key bundle received from X3DH server.
Definition: lime_x3dh_protocol.hpp:41
X3DH_peerBundle(std::string &&deviceId)
Definition: lime_x3dh_protocol.hpp:74
const DSA< Curve, lime::DSAtype::publicKey > Ik
Definition: lime_x3dh_protocol.hpp:43
const lime::X3DHKeyBundleFlag bundleFlag
Definition: lime_x3dh_protocol.hpp:47
X3DH_peerBundle(std::string &&deviceId, std::vector< uint8_t >::const_iterator Ik, std::vector< uint8_t >::const_iterator SPk, uint32_t SPk_id, std::vector< uint8_t >::const_iterator SPk_sig)
Definition: lime_x3dh_protocol.hpp:68
const X< Curve, lime::Xtype::publicKey > OPk
Definition: lime_x3dh_protocol.hpp:48
const DSA< Curve, lime::DSAtype::signature > SPk_sig
Definition: lime_x3dh_protocol.hpp:46
const uint32_t OPk_id
Definition: lime_x3dh_protocol.hpp:49
X3DH_peerBundle(std::string &&deviceId, std::vector< uint8_t >::const_iterator Ik, std::vector< uint8_t >::const_iterator SPk, uint32_t SPk_id, std::vector< uint8_t >::const_iterator SPk_sig, std::vector< uint8_t >::const_iterator OPk, uint32_t OPk_id)
Definition: lime_x3dh_protocol.hpp:62
const uint32_t SPk_id
Definition: lime_x3dh_protocol.hpp:45
const X< Curve, lime::Xtype::publicKey > SPk
Definition: lime_x3dh_protocol.hpp:44
const std::string deviceId
Definition: lime_x3dh_protocol.hpp:42