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

Go to the source code of this file.

Classes

struct  lime::sBuffer< T >
 auto clean fixed size buffer(std::array based) More...
 
class  lime::X< Curve, dataType >
 Base buffer definition for Key Exchange data structure. More...
 
class  lime::Xpair< Curve >
 Key pair structure for key exchange algorithm. More...
 
class  lime::DSA< Curve, dataType >
 Base buffer definition for DSA data structure. More...
 
class  lime::DSApair< Curve >
 Key pair structure for DSA algorithm. More...
 
class  lime::RNG
 Random number generator interface. More...
 
class  lime::keyExchange< Curve >
 Key exchange interface. More...
 
class  lime::Signature< Curve >
 Digital Signature interface. More...
 

Namespaces

 lime
 

Functions

void lime::cleanBuffer (uint8_t *buffer, size_t size)
 force a buffer values to zero in a way that shall prevent the compiler from optimizing it out More...
 
template<typename hashAlgo >
void lime::HMAC (const uint8_t *const key, const size_t keySize, const uint8_t *const input, const size_t inputSize, uint8_t *hash, size_t hashSize)
 templated HMAC More...
 
template<>
void lime::HMAC< SHA512 > (const uint8_t *const key, const size_t keySize, const uint8_t *const input, const size_t inputSize, uint8_t *hash, size_t hashSize)
 
template<typename hashAlgo , typename infoType >
void lime::HMAC_KDF (const std::vector< uint8_t > &salt, const std::vector< uint8_t > &ikm, const infoType &info, uint8_t *okm, size_t okmSize)
 HKDF as described in RFC5869. More...
 
template<typename hashAlgo , typename infoType >
void lime::HMAC_KDF (const uint8_t *const salt, const size_t saltSize, const uint8_t *const ikm, const size_t ikmSize, const infoType &info, uint8_t *output, size_t outputSize)
 
template<typename AEADAlgo >
void lime::AEAD_encrypt (const uint8_t *const key, const size_t keySize, const uint8_t *const IV, const size_t IVSize, const uint8_t *const plain, const size_t plainSize, const uint8_t *const AD, const size_t ADSize, uint8_t *tag, const size_t tagSize, uint8_t *cipher)
 Encrypt and tag using scheme given as template parameter. More...
 
template<typename AEADAlgo >
bool lime::AEAD_decrypt (const uint8_t *const key, const size_t keySize, const uint8_t *const IV, const size_t IVSize, const uint8_t *const cipher, const size_t cipherSize, const uint8_t *const AD, const size_t ADSize, const uint8_t *const tag, const size_t tagSize, uint8_t *plain)
 Authenticate and Decrypt using scheme given as template parameter. More...
 
template<>
void lime::AEAD_encrypt< AES256GCM > (const uint8_t *const key, const size_t keySize, const uint8_t *const IV, const size_t IVSize, const uint8_t *const plain, const size_t plainSize, const uint8_t *const AD, const size_t ADSize, uint8_t *tag, const size_t tagSize, uint8_t *cipher)
 
template<>
bool lime::AEAD_decrypt< AES256GCM > (const uint8_t *const key, const size_t keySize, const uint8_t *const IV, const size_t IVSize, const uint8_t *const cipher, const size_t cipherSize, const uint8_t *const AD, const size_t ADSize, const uint8_t *const tag, const size_t tagSize, uint8_t *plain)
 
std::shared_ptr< RNG > lime::make_RNG ()
 
template<typename Curve >
std::shared_ptr< keyExchange< Curve > > lime::make_keyExchange ()
 
template<typename Curve >
std::shared_ptr< Signature< Curve > > lime::make_Signature ()
 
template void lime::HMAC_KDF< SHA512, std::vector< uint8_t > > (const std::vector< uint8_t > &salt, const std::vector< uint8_t > &ikm, const std::vector< uint8_t > &info, uint8_t *output, size_t outputSize)
 
template void lime::HMAC_KDF< SHA512, std::string > (const std::vector< uint8_t > &salt, const std::vector< uint8_t > &ikm, const std::string &info, uint8_t *output, size_t outputSize)
 
template void lime::HMAC_KDF< SHA512, std::vector< uint8_t > > (const uint8_t *const salt, const size_t saltSize, const uint8_t *const ikm, const size_t ikmSize, const std::vector< uint8_t > &info, uint8_t *output, size_t outputSize)
 
template void lime::HMAC_KDF< SHA512, std::string > (const uint8_t *const salt, const size_t saltSize, const uint8_t *const ikm, const size_t ikmSize, const std::string &info, uint8_t *output, size_t outputSize)