From 654edd37bbf7608fa1f1889cda4604cdba76f20f Mon Sep 17 00:00:00 2001 From: Kim Alvefur <zash@zash.se> Date: Thu, 23 Jan 2025 16:38:56 +0100 Subject: util.sql: SQLCipher support This enables use of encrypted databases if LuaDBI or LuaSQLite3 has been linked against SQLCipher. Using `LD_PRELOAD` may work as well. Requires SQLCipher >= 4.0.0 due to the use of UPSERT --- util/sql.lua | 6 ++++++ util/sqlite3.lua | 6 ++++++ 2 files changed, 12 insertions(+) (limited to 'util') diff --git a/util/sql.lua b/util/sql.lua index c897d734..2f0ec493 100644 --- a/util/sql.lua +++ b/util/sql.lua @@ -84,6 +84,12 @@ function engine:connect() dbh:autocommit(false); -- don't commit automatically self.conn = dbh; self.prepared = {}; + if params.password then + local ok, err = self:execute(("PRAGMA key='%s'"):format(dbh:quote(params.password))); + if not ok then + return ok, err; + end + end local ok, err = self:set_encoding(); if not ok then return ok, err; diff --git a/util/sqlite3.lua b/util/sqlite3.lua index 470eb46d..fec2d162 100644 --- a/util/sqlite3.lua +++ b/util/sqlite3.lua @@ -114,6 +114,12 @@ function engine:connect() if not dbh then return nil, err; end self.conn = dbh; self.prepared = {}; + if params.password then + local ok, err = self:execute(("PRAGMA key='%s'"):format((params.password:gsub("'", "''")))); + if not ok then + return ok, err; + end + end local ok, err = self:set_encoding(); if not ok then return ok, err; -- cgit v1.2.3