crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в SQLite и криптография
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Гость_Oleg Дата 9.8.2014, 14:08
 
Цитата(Гость_Mish_ka_* @ 31.5.2014, 9:43) *
выдаёт такую ошибку:
configure: error: Library crypto not found. Install openssl!"


Я просто закоментировал в файле configure строки, которые сигнализируют об отсутствии OpenSSL.
Эта проверка не нужна, т.к. сборкой DLL'ки у меня занимается MSVC, а не MinGW.
Iron Bug Дата 2.6.2014, 7:23
  смотри логи конфирурации. там подробно пишутся команды и все проверки. найди, где падает и посмотри, что ему нужно.
Mish_ka Дата 31.5.2014, 9:43
  Уже весь измучился.

Подскажите пожалуйста в чём проблема. Делал всё по инструкциям

MSYS MSYS-1.0.11 (c:\msys\1.0\)
Раскрывающийся текст

g:/Programs/Qt/Tools/mingw482_32 /mingw
g:/Programs/Qt/5.3 /qt
c:/ /c

OpenSSL Win32OpenSSL-1_0_1g (c:\OpenSSL\)
TCLTK tcltk-8.4.1-1 (g:\Programs\Qt\Tools\mingw482_32\)
SQLCipher отсюда https://github.com/sqlcipher/sqlcipher
QT 5.3

Конфигурирую так
Раскрывающийся текст
cd /c/sqlcipher
./configure --prefix=/qt/src/qtbase/src/plugins/sqldrivers/sqlcipher --disable-tcl --disable-amalgamation CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2 -I/c/OpenSSL/include /c/OpenSSL/libeay32.dll -L/c/OpenSSL/lib/MinGW" LDFLAGS="-leay32"


выдаёт такую ошибку
Раскрывающийся текст

checking whether to support threadsafe operation... yes
checking for library containing pthread_create... none required
checking for crypto library to use... openssl
checking for HMAC_Init_ex in -lcrypto... no
configure: error: Library crypto not found. Install openssl!"


Третьи сутки бьюсь...
Iron Bug Дата 18.4.2013, 11:50
  тут нет загрузки какого-то расширения. тут только collation выставляется, а это другая команда.
на сайте они пишут, что
Цитата
(18) Case-insensitive matching of Unicode characters does not work.

The default configuration of SQLite only supports case-insensitive comparisons of ASCII characters. The reason for this is that doing full Unicode case-insensitive comparisons and case conversions requires tables and logic that would nearly double the size of the SQLite library. The SQLite developers reason that any application that needs full Unicode case support probably already has the necessary tables and functions and so SQLite should not take up space to duplicate this ability.

Instead of providing full Unicode case support by default, SQLite provides the ability to link against external Unicode comparison and conversion routines. The application can overload the built-in NOCASE collating sequence (using sqlite3_create_collation()) and the built-in like(), upper(), and lower() functions (using sqlite3_create_function()). The SQLite source code includes an "ICU" extension that does these overloads. Or, developers can write their own overloads based on their own Unicode-aware comparison routines already contained within their project.

http://www.sqlite.org/faq.html

если при компиляции указан макрос включения icu, то сам icu намертво прилинкован к sqlite (кстати, там многие опции не существуют, которые у тебя проставлены в строке сборки, но они просто игнорируются).
просто почитай код sqlite, где стоит макрос SQLITE_ENABLE_ICU - там всё понятно.

а что касается cypher'а - вот тут я не знаю: может, ему ещё что-то нужно перегружать. тогда, вероятно, поверх icu он ставит ещё какую-то свою дополнительную библиотеку.
вообще, расширения sqlite - это просто перегрузка некоторых функций. в описании каждого расширения указано, что оно перегружает и как. в любом случае, лучше собирать все библиотеки из сорцов, одним компилятором.

кроме того, в sqlite можно создавать динамические функции, я так делала. то есть, sqlite вызывает твою сишную функцию, связанную с неким именем в запросе. это если нужна какая-то хитрая обработка данных.

у меня дома нет венды, а на работе мало времени на эксперименты. я собрала sqlite с icu без проблем. это работает без всяких дополнений.
[Matrix] Дата 17.4.2013, 17:37
  Если верить консоли (тестировал в линуксе обычную версию), грузить нужно

$ sqlite3 
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> SELECT "ы" LIKE "Ы";
0
sqlite> SELECT icu_load_collation('ru_RU', 'russian');
Error: no such function: icu_load_collation
sqlite> .load ./libsqliteicu.so
sqlite> SELECT icu_load_collation('ru_RU', 'russian');

sqlite> SELECT "ы" LIKE "Ы";
1
sqlite>


Осталось разобраться что делать в винде с sqlcipher'ом
Iron Bug Дата 17.4.2013, 12:12
 
Цитата([Matrix] @ 16.4.2013, 11:19) *

не могу понять что я делаю не так

по-моему, там ICU линкуется прямо к SQLite и не надо ничего грузить. судя по коду, макрос ENABLE_ICU там включает инициализацию специальных функций для FTS.
[Matrix] Дата 16.4.2013, 8:19
  Необходимо собрать плагин с поддержкой регистронезависимого поиска по русскому языку, собирал sqlcipher 2 версии с ICU 5.1. В приложении Qt выполнение загрузки ICU расширения

"SELECT load_extension('icu.dll');"


завершается ошибкой

"error during initialization:  Unable to fetch row"



Сборка:

./configure --disable-tcl --disable-amalgamation --enable-load-extension CFLAGS="-DSQLITE_ENABLE_ICU -DSQLITE_HAS_CODEC -DSQLITE_ENABLE_FTS4 -DSQLITE_TEMP_STORE=2 -DSQLITE_MAX_ATTACHED=62 -DSQLITE_ENABLE_LOAD_EXTENSION  -I./ext/fts3 -I/c/OpenSSL-Win32/include -L/c/OpenSSL-Win32/lib/MinGW -I./ext/icu -L/C/build/icu/source/lib -I/C/build/icu/source/common -I/C/build/icu/source/i18n" LDFLAGS="-leay32 -licuuc -licuin -licudt"

make

cd ext/icu

gcc -shared icu.c -o icu.dll -DSQLITE_ENABLE_ICU -DSQLITE_HAS_CODEC -DSQLITE_ENABLE_FTS4 -DSQLITE_TEMP_STORE=2 -DSQLITE_MAX_ATTACHED=62 -I./ext/fts3 -I./ext/icu -L/C/build/icu/source/lib -I/C/build/icu/source/common -I/C/build/icu/source/i18n -licuuc -licuin -I../../src -I../../


не могу понять что я делаю не так
AlekseyK Дата 25.11.2012, 17:29
  Спасибо. :)
skozlovf Дата 25.11.2012, 16:54
  Недавно тоже понадобилось собрать sqlcipher для qt, но вариант с msys не устраивал. В результате родился cmake скрипт. Оснван на идее domehead100 ( https://groups.google.com/d/msg/sqlcipher/I...B8/x205cECTiI0J ).
В результате можно собирать библиотеку sqlcipher, шелл и плагин для qt используя msvc и msys.

В принципе можно рассматривать как альтернативу http://www.wiki.crossplatform.ru/index.php...ipher_%D0%BA_Qt
если, как у меня, не устраивает сборка при помощи mingw.

Тестировал на SQLCipher-2.0.6, sqlite-3.7.14.1, Qt-4.8.3, OpenSSL-1.0.1b
Выложил тут: https://github.com/skozlovf/sqlcipher-cmake
dream2work Дата 2.4.2012, 12:08
  добавил в pro библиотеку (libsqlcipher.a) и автоматически сгенерировался код:
LIBS += -L/usr/local/Trolltech/Qt-4.8.0/plugins/sqldrivers/ -lqsqlcipher
INCLUDEPATH += /usr/local/Trolltech/Qt-4.8.0/plugins/sqldrivers
DEPENDPATH += /usr/local/Trolltech/Qt-4.8.0/plugins/sqldrivers
PRE_TARGETDEPS += /usr/local/Trolltech/Qt-4.8.0/plugins/sqldrivers/libqsqlcipher.a


теперь следующая ошибка
/home/admin/Documents/test_project/src/main/main.o:-1: In function `global constructors keyed to _Z16myMessageHandler9QtMsgTypePKc':
/home/admin/Documents/test_project/src/main/main.cpp:-1: error: undefined reference to `qt_plugin_instance_qsqlcipher()'
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 1:22