PIP 5.6.1
Platform-Independent Primitives
Public Member Functions | Static Public Member Functions | List of all members
PICrypt Class Reference

Class for encrypting and decrypting data. Class providing cryptographic operations using the libsodium library, including encryption, decryption, hashing, and digital signatures. It supports both instance-based and static method-based operations. Requires libsodium library initialization. All methods are thread-safe when using different keys. More...

#include <picrypt.h>

Public Member Functions

 PICrypt ()
 Constructor that generates a random key.
 
 ~PICrypt ()
 Destructor.
 
bool setKey (const PIByteArray &key)
 Set key to "key", key size must be a sizeKey().
 
bool setKey (const PIString &secret)
 Generate and set key from keyphrase "secret".
 
PIByteArray key ()
 Returns current key.
 
PIByteArray crypt (const PIByteArray &data)
 Encrypt given data "data", result size will be increased by sizeCrypt().
 
PIByteArray decrypt (const PIByteArray &crypt_data, bool *ok=0)
 Decrypt given data "crypt_data".
 
PIByteArray signMessage (const PIByteArray &data, const PIByteArray &secret_key)
 Calculate digital signature for data.
 
bool verifySign (const PIByteArray &data, const PIByteArray &signature, const PIByteArray &public_key)
 Verify digital signature of signed message.
 
PIByteArray crypt (const PIByteArray &data, const PIByteArray &public_key, const PIByteArray &secret_key)
 Encrypt given data "data".
 
PIByteArray decrypt (const PIByteArray &crypt_data, const PIByteArray &public_key, const PIByteArray &secret_key, bool *ok=0)
 Decrypt given data "crypt_data".
 

Static Public Member Functions

static PIByteArray crypt (const PIByteArray &data, PIByteArray key)
 Encrypt given data "data" with key "key", result size will be increased by sizeCrypt().
 
static PIByteArray decrypt (const PIByteArray &crypt_data, PIByteArray key, bool *ok=0)
 Decrypt given data "crypt_data" with key "key".
 
static PIByteArray hash (PIString secret)
 Generate hash from keyphrase "secret", may be used as a key for encryption.
 
static PIByteArray hash (const PIByteArray &data)
 Generate hash from bytearray.
 
static PIByteArray hash (const PIByteArray &data, const unsigned char *key, size_t keylen)
 Generate hash from bytearray using provided key.
 
static size_t sizeHash ()
 Returns hash size.
 
static ullong shorthash (const PIString &s, PIByteArray key=PIByteArray())
 Generate short hash from string "s", may be used for hash table.
 
static PIByteArray generateKey ()
 Generate random key.
 
static PIByteArray generateRandomBuff (int size)
 Generate random buffer.
 
static size_t sizeKey ()
 Returns key size.
 
static size_t sizeCrypt ()
 Returns size which be added to data size in encryption process.
 
static bool generateSignKeys (PIByteArray &public_key, PIByteArray &secret_key)
 Function randomly generates a secret key and a corresponding public key for digital signature.
 
static bool generateSignKeys (PIByteArray &public_key, PIByteArray &secret_key, const PIByteArray &seed)
 Function generates a secret key from input data and a corresponding public key for digital signature.
 
static PIByteArray extractSignPublicKey (const PIByteArray &secret_key)
 Function extract sign public key from sing secret key.
 
static bool generateKeypair (PIByteArray &public_key, PIByteArray &secret_key)
 Function randomly generates a secret key and a corresponding public key for authenticated encryption.
 
static bool generateKeypair (PIByteArray &public_key, PIByteArray &secret_key, const PIByteArray &seed)
 Function generates a secret key from input data and a corresponding public key for authenticated encryption.
 
static PIByteArray passwordHash (PIString password, const PIByteArray &seed)
 Generate password hash from "password".
 
static PIString version ()
 Returns libsodium version.
 

Detailed Description

Class for encrypting and decrypting data. Class providing cryptographic operations using the libsodium library, including encryption, decryption, hashing, and digital signatures. It supports both instance-based and static method-based operations. Requires libsodium library initialization. All methods are thread-safe when using different keys.