qswiki/database/hdr/sqlite_modern_cpp/sqlcipher.h

54 lines
1.2 KiB
C++

#pragma once
#ifndef SQLITE_HAS_CODEC
#define SQLITE_HAS_CODEC
#endif
#include "../sqlite_modern_cpp.h"
namespace sqlite
{
struct sqlcipher_config : public sqlite_config
{
std::string key;
};
class sqlcipher_database : public database
{
public:
sqlcipher_database(std::string db, const sqlcipher_config &config) : database(db, config)
{
set_key(config.key);
}
sqlcipher_database(std::u16string db, const sqlcipher_config &config) : database(db, config)
{
set_key(config.key);
}
void set_key(const std::string &key)
{
if(auto ret = sqlite3_key(_db.get(), key.data(), key.size()))
errors::throw_sqlite_error(ret);
}
void set_key(const std::string &key, const std::string &db_name)
{
if(auto ret = sqlite3_key_v2(_db.get(), db_name.c_str(), key.data(), key.size()))
errors::throw_sqlite_error(ret);
}
void rekey(const std::string &new_key)
{
if(auto ret = sqlite3_rekey(_db.get(), new_key.data(), new_key.size()))
errors::throw_sqlite_error(ret);
}
void rekey(const std::string &new_key, const std::string &db_name)
{
if(auto ret = sqlite3_rekey_v2(_db.get(), db_name.c_str(), new_key.data(), new_key.size()))
errors::throw_sqlite_error(ret);
}
};
} // namespace sqlite