Rus Selin
unread,Oct 1, 2010, 8:19:57 AM10/1/10Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to SQLCipher Users
Good afternoon to all!
Correct me if what not so:
==================================================================
/* test.h: */
#include "sqlite3.h"
extern "C" const char* sqlite3_libversion(void);
extern "C" int sqlite3_open(const char *filename, sqlite3 **ppDb);
extern "C" int sqlite3_exec(sqlite3*, const char *sql, int (*callback)
(void*,int,char**,char**), void *, char **errmsg);
extern "C" int sqlite3_close(sqlite3 *);
extern "C" int sqlite3_key(sqlite3 *db, const void *pKey, int nKey);
extern "C" int sqlite3_rekey(sqlite3 *db, const void *pKey, int nKey);
/* test.c: */
#include <stdio.h>
#include "test.h"
sqlite3* hDB = 0;
int res = 0;
const char* pSQL = "CREATE TABLE IF NOT EXISTS [test1] ( "
" [id] INTEGER PRIMARY KEY NULL, "
" [message] VARCHAR(40) NULL "
");";
int main(int argc, char**argv) {
printf("\nSQLite: %s\n", sqlite3_libversion());
printf("\n------------------------------------------\n");
res = sqlite3_open("test.db", &hDB);
res = sqlite3_exec(hDB, pSQL, NULL, NULL, NULL);
printf("pSQL result: %ld\n", res);
res = sqlite3_close(hDB);
printf("\n------------------------------------------\n");
res = sqlite3_open("test.db", &hDB);
res = sqlite3_rekey(hDB, "hello", 5);
printf("\nresult sqlite3_rekey: %ld\n\n", res);
res = sqlite3_close(hDB);
printf("\n------------------------------------------\n");
res = sqlite3_open("test.db", &hDB);
res = sqlite3_key(hDB, "hello", 5);
res = sqlite3_exec(hDB, "SELECT count(*) FROM sqlite_master;",
NULL, NULL, NULL);
printf("\nresult sqlite3_exec: %ld\n\n", res);
res = sqlite3_close(hDB);
return 0;
}
==================================================================
cmd: (i use mingw)
rm -f test.db
g++ -c -o test.o test.c
g++ -o test.exe -d sqlite3.dll test.o
./test.exe
==================================================================
output: (./test.exe)
ruslansk@PC-006 /home/user/projects/sqlite/sqlite3_test
SQLite: 3.7.2
------------------------------------------
pSQL result: 0
------------------------------------------
sqlite3_rekey: entered db=9776496 pKey=hello, nKey=5
sqlite3_rekey: database pDb=9776928
sqlite3_rekey: no codec attached to db, attaching now
sqlite3CodecAttach: entered nDb=0 zKey=hello, nKey=5
codec_set_cipher_name: entered db=9776496 nDb=0 cipher_name=aes-256-
cbc for_ctx=
0
codec_set_kdf_iter: entered db=9776496 nDb=0 kdf_iter=4000 for_ctx=0
codec_set_pass_key: entered db=9776496 nDb=0 cipher_name=hello nKey=5
for_ctx=0
cipher_ctx_copy: entered target=9799896, source=9799800
sqlite3_rekey: updating page size for iv_sz change from 0 to 16
sqlite3CodecGetKey: entered db=9776496, nDb=0
sqlite3CodecAttach: entered nDb=2 zKey=hello, nKey=0
sqlite3Codec: entered pgno=1, mode=3, ctx->mode_rekey=0, pg_sz=1024
codec_key_derive: entered c_ctx->pass=hello, c_ctx->pass_sz=0 ctx-
>kdf_salt=9885
256 ctx->kdf_salt_sz=16 c_ctx->kdf_iter=4000 c_ctx->key_sz=0
cipher_ctx_cmp: entered c1=9799896 c2=9799800
codec_key_derive: entered c_ctx->pass=hello, c_ctx->pass_sz=5 ctx-
>kdf_salt=9885
256 ctx->kdf_salt_sz=16 c_ctx->kdf_iter=4000 c_ctx->key_sz=32
codec_key_derive: deriving key using PBKDF2
sqlite3Codec: switch mode=3 offset=16
codec_cipher:entered pgno=1, mode=0, size=1008
sqlite3CodecGetKey: entered db=9776496, nDb=0
sqlite3Codec: entered pgno=2, mode=3, ctx->mode_rekey=0, pg_sz=1024
sqlite3Codec: switch mode=3 offset=0
codec_cipher:entered pgno=2, mode=0, size=1024
sqlite3Codec: entered pgno=1, mode=7, ctx->mode_rekey=0, pg_sz=1024
sqlite3Codec: switch mode=7 offset=16
codec_cipher:entered pgno=1, mode=1, size=1008
sqlite3Codec: entered pgno=2, mode=7, ctx->mode_rekey=0, pg_sz=1024
sqlite3Codec: switch mode=7 offset=0
codec_cipher:entered pgno=2, mode=1, size=1024
sqlite3Codec: entered pgno=1, mode=6, ctx->mode_rekey=0, pg_sz=1024
sqlite3Codec: switch mode=6 offset=16
codec_cipher:entered pgno=1, mode=1, size=1008
sqlite3Codec: entered pgno=2, mode=6, ctx->mode_rekey=0, pg_sz=1024
sqlite3Codec: switch mode=6 offset=0
codec_cipher:entered pgno=2, mode=1, size=1024
codec_set_pass_key: entered db=9776496 nDb=0 cipher_name=hello nKey=5
for_ctx=1
sqlite3Codec: entered pgno=1, mode=7, ctx->mode_rekey=1, pg_sz=1024
cipher_ctx_cmp: entered c1=9799896 c2=9799800
codec_key_derive: entered c_ctx->pass=hello, c_ctx->pass_sz=5 ctx-
>kdf_salt=9885
256 ctx->kdf_salt_sz=16 c_ctx->kdf_iter=4000 c_ctx->key_sz=32
codec_key_derive: deriving key using PBKDF2
sqlite3Codec: switch mode=7 offset=16
codec_cipher:entered pgno=1, mode=1, size=1008
sqlite3Codec: entered pgno=2, mode=7, ctx->mode_rekey=1, pg_sz=1024
sqlite3Codec: switch mode=7 offset=0
codec_cipher:entered pgno=2, mode=1, size=1024
sqlite3_rekey: committing
sqlite3Codec: entered pgno=1, mode=6, ctx->mode_rekey=1, pg_sz=1024
sqlite3Codec: switch mode=6 offset=16
codec_cipher:entered pgno=1, mode=1, size=1008
sqlite3Codec: entered pgno=2, mode=6, ctx->mode_rekey=1, pg_sz=1024
sqlite3Codec: switch mode=6 offset=0
codec_cipher:entered pgno=2, mode=1, size=1024
cipher_ctx_copy: entered target=9799800, source=9799896
result sqlite3_rekey: 0
codec_ctx_free: entered iCtx=2293356
cipher_ctx_free: entered iCtx=9885516
cipher_ctx_free: entered iCtx=9885520
------------------------------------------
sqlite3_key: entered db=9776496 pKey=hello nKey=5
sqlite3CodecAttach: entered nDb=0 zKey=hello, nKey=5
codec_set_cipher_name: entered db=9776496 nDb=0 cipher_name=aes-256-
cbc for_ctx=
0
codec_set_kdf_iter: entered db=9776496 nDb=0 kdf_iter=4000 for_ctx=0
codec_set_pass_key: entered db=9776496 nDb=0 cipher_name=hello nKey=5
for_ctx=0
cipher_ctx_copy: entered target=9776416, source=9799848
sqlite3Codec: entered pgno=1, mode=3, ctx->mode_rekey=0, pg_sz=1024
codec_key_derive: entered c_ctx->pass=hello, c_ctx->pass_sz=5 ctx-
>kdf_salt=9808
640 ctx->kdf_salt_sz=16 c_ctx->kdf_iter=4000 c_ctx->key_sz=32
codec_key_derive: deriving key using PBKDF2
cipher_ctx_cmp: entered c1=9776416 c2=9799848
cipher_ctx_copy: entered target=9776416, source=9799848
sqlite3Codec: switch mode=3 offset=16
codec_cipher:entered pgno=1, mode=0, size=1008
result sqlite3_exec: 11
codec_ctx_free: entered iCtx=2293356
cipher_ctx_free: entered iCtx=9799820
cipher_ctx_free: entered iCtx=9799824
==================================================================
Particularly next lines interest:
pSQL result: 0 ---- table added success
result sqlite3_rekey: 0 ---- database success encrypt
result sqlite3_exec: 11 ---- after open, input key...
sqlite3_exec(hDB, "SELECT count(*) FROM sqlite_master;".....
return 11; /// SQLite
error ----> #define SQLITE_CORRUPT 11 /* The database disk
image is malformed */
Like all it is true. Has killed on meditations and tests about one
week :) judge please!