lime
Lime is a C++ library implementing Open Whisper System Signal protocol
Classes | Namespaces | Typedefs | Functions
lime_double_ratchet.hpp File Reference

Go to the source code of this file.

Classes

struct  lime::ARrKey< Curve, bool >
 
struct  lime::ARrKey< Curve, false >
 
struct  lime::ARrKey< Algo, true >
 
struct  lime::ARsKey< Curve, bool >
 
struct  lime::ARsKey< Curve, false >
 
struct  lime::ARsKey< Algo, true >
 
struct  lime::ARKeys< Curve >
 structure to hold the keys used in asymmetric ratchet For EC only DR, it holds More...
 
class  lime::DR
 A virtual class to define the Double Ratchet interface. More...
 
struct  lime::RecipientInfos
 extend the RecipientData to add a Double Ratchet session shared with the recipient More...
 

Namespaces

 lime
 

Typedefs

using lime::DRChainKey = lime::sBuffer< lime::settings::DRChainKeySize >
 
using lime::SharedADBuffer = std::array< uint8_t, lime::settings::DRSessionSharedADSize >
 

Functions

template<typename Algo >
std::shared_ptr< DR > lime::make_DR_from_localStorage (std::shared_ptr< lime::Db > localStorage, long sessionId, std::shared_ptr< RNG > RNG_context)
 
template<typename Algo >
std::shared_ptr< DR > lime::make_DR_for_sender (std::shared_ptr< lime::Db > localStorage, const DRChainKey &SK, const SharedADBuffer &AD, const ARrKey< Algo > &peerPublicKey, long int peerDid, const std::string &peerDeviceId, const DSA< typename Algo::EC, lime::DSAtype::publicKey > &peerIk, long int selfDid, const std::vector< uint8_t > &X3DH_initMessage, std::shared_ptr< RNG > RNG_context)
 
template<typename Algo >
std::shared_ptr< DR > lime::make_DR_for_receiver (std::shared_ptr< lime::Db > localStorage, const DRChainKey &SK, const SharedADBuffer &AD, const ARsKey< Algo > &selfKeyPair, long int peerDid, const std::string &peerDeviceId, const uint32_t OPk_id, const DSA< typename Algo::EC, lime::DSAtype::publicKey > &peerIk, long int selfDeviceId, std::shared_ptr< RNG > RNG_context)
 
void lime::encryptMessage (std::vector< RecipientInfos > &recipients, const std::vector< uint8_t > &plaintext, const std::vector< uint8_t > &recipientUserId, const std::string &sourceDeviceId, std::vector< uint8_t > &cipherMessage, const lime::EncryptionPolicy encryptionPolicy, std::shared_ptr< lime::Db > localStorage, const std::shared_ptr< limeRandomSeedCallback > randomSeedCallback)
 Encrypt a message to all recipients, identified by their device id. More...
 
std::shared_ptr< DR > lime::decryptMessage (const std::string &sourceDeviceId, const std::string &recipientDeviceId, const std::vector< uint8_t > &recipientUserId, std::vector< std::shared_ptr< DR >> &DRSessions, const std::vector< uint8_t > &DRmessage, const std::vector< uint8_t > &cipherMessage, std::vector< uint8_t > &plaintext)
 Decrypt a message. More...