Привязка SQLCipher к Qt

Материал из Wiki.crossplatform.ru

Перейти к: навигация, поиск

Содержание

Краткое описание SQLCipher.

SQLCipher - это кроссплатформенное расширение SQLite, с открытым исходным кодом. Она зашифровывает страницы базы данных прежде чем они записываются для хранения и дешифрует их во время чтения. Т.о. SQLCipher предоставляет полностью зашифрованную SQLite базу данных. При этом, пользователю не требуется обладать специальными знаниями лежащими в основе безопасности баз данных. Приложение будет использовать стандартное API для манипуляции таблицами используя SQL.За кулисами библиотека сама молча управляет аспектами безопасности.

Подробнее о SQLCipher смотрите на сайте разработчика. [1]

Подготовка к интеграции.

Для того что бы получить возможность использовать SQLCipher в своем приложении на Qt, нам потребуется пересобрать существующий qsqlite плагин, внеся в исходный код этого плагина незначительные изменения.

Не смотря на то, что SQLCipher можно использовать без шифрования, т.е. как обычную SQLite базу данных, тем не менее, давайте не будем трогать существующий плагин для SQLite, а сделаем на его основе новый.

#Создаём копию плагина sqlite с именем sqlcipher
$ cd QTDIR/src/plugins/sqldrivers
$ cp -rf sqlite sqlcipher


Установка и сборка SqlCipher.

Установка и сборка SqlCipher (Linux).

Клонируем из репозитория исходники SqlCipher. Для этого в Вашей системе должен быть установлен git. Клонирование производится в любое удобное место.

$ git clone git://github.com/sjlombardo/sqlcipher.git

Далее, нам необходимо собрать SqlCipher. Для этого выполняем следующие действия (не забываем изменить путь в --prefix)

$ ./configure --prefix=/home/user/qtsdk/qt/src/plugins/sqldrivers/sqlcipher CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
$ make
$ make install

Теперь в ~/qtsdk/qt/src/plugins/sqldrivers у нас появилось структура каталогов bin, include, lib - которые необходимы нам для сборки нового sql плагина для Qt.

Установка и сборка SqlCipher (Windows).

Установка дополнительного ПО.

Скачиваем и устанавливаем на свой компьютер MSYS. В конце установки будет задано несколько вопросов, соглашаемся с ними и указываем путь до MinGW (входит в поставку Qt).

Скачиваем и устанавливаем Win32 OpenSSL v0.9.8m. Во время установки не менять место размещения dll-файлов.

Так же нам потребуется TclTk (специальная сборка для MinGW). Скачиваем, устанавливаем. Во время установки указываем путь до MinGW. Находим файл MINGWPATH/bin/tclsh84.exe и переименивываем его в tclsh.exe

Конфигурирование и компиляция sqlcipher

Для сборки sqlcipher, запускаем MSYS и выполняем следущие действия (обязательно учитываем регистр при написании)

$ cd sqlcipher
$ ./configure --prefix=/QTPATH/src/plugins/sqldrivers/sqlcipher --disable-tcl --disable-amalgamation
CFLAGS="-DSQLITE_HAS_CODEC -I../OpenSSL/include /c/Windows/System32/libeay32.dll"
$ make
$ make dll
$ make install 
$ cp /OPENSSLPATH/lib/MinGW/libeay32.a /QTPATH/src/plugins/sqldrivers/sqlcipher/lib