mirror of
https://github.com/status-im/sqlcipher.git
synced 2025-02-24 01:38:09 +00:00
sqlcipher compatibility changes for upstream 3.6.17
This commit is contained in:
parent
1a81194b38
commit
84e17044df
@ -47,6 +47,8 @@
|
|||||||
#define CODEC_TRACE(X)
|
#define CODEC_TRACE(X)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void sqlite3FreeCodecArg(void *pCodecArg);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int derive_key;
|
int derive_key;
|
||||||
EVP_CIPHER *evp_cipher;
|
EVP_CIPHER *evp_cipher;
|
||||||
@ -441,7 +443,7 @@ int sqlite3CodecAttach(sqlite3* db, int nDb, const void *zKey, int nKey) {
|
|||||||
RAND_pseudo_bytes(ctx->kdf_salt, FILE_HEADER_SZ);
|
RAND_pseudo_bytes(ctx->kdf_salt, FILE_HEADER_SZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
sqlite3PagerSetCodec(sqlite3BtreePager(pDb->pBt), sqlite3Codec, (void *) ctx);
|
sqlite3pager_sqlite3PagerSetCodec(sqlite3BtreePager(pDb->pBt), sqlite3Codec, NULL, sqlite3FreeCodecArg, (void *) ctx);
|
||||||
|
|
||||||
codec_set_cipher_name(db, nDb, CIPHER, 0);
|
codec_set_cipher_name(db, nDb, CIPHER, 0);
|
||||||
codec_set_kdf_iter(db, nDb, PBKDF2_ITER, 0);
|
codec_set_kdf_iter(db, nDb, PBKDF2_ITER, 0);
|
||||||
@ -454,11 +456,10 @@ int sqlite3CodecAttach(sqlite3* db, int nDb, const void *zKey, int nKey) {
|
|||||||
return SQLITE_ERROR;
|
return SQLITE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sqlite3FreeCodecArg(void *pCodecArg) {
|
void sqlite3FreeCodecArg(void *pCodecArg) {
|
||||||
codec_ctx *ctx = (codec_ctx *) pCodecArg;
|
codec_ctx *ctx = (codec_ctx *) pCodecArg;
|
||||||
if(pCodecArg == NULL) return SQLITE_ERROR;
|
if(pCodecArg == NULL) return;
|
||||||
codec_ctx_free(&ctx); // wipe and free allocated memory for the context
|
codec_ctx_free(&ctx); // wipe and free allocated memory for the context
|
||||||
return SQLITE_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void sqlite3_activate_see(const char* in) {
|
void sqlite3_activate_see(const char* in) {
|
||||||
|
@ -51,6 +51,13 @@
|
|||||||
void sqlite3pager_get_codec(Pager *pPager, void **ctx);
|
void sqlite3pager_get_codec(Pager *pPager, void **ctx);
|
||||||
int sqlite3pager_is_mj_pgno(Pager *pPager, Pgno pgno);
|
int sqlite3pager_is_mj_pgno(Pager *pPager, Pgno pgno);
|
||||||
sqlite3_file *sqlite3Pager_get_fd(Pager *pPager);
|
sqlite3_file *sqlite3Pager_get_fd(Pager *pPager);
|
||||||
|
void sqlite3pager_sqlite3PagerSetCodec(
|
||||||
|
Pager *pPager,
|
||||||
|
void *(*xCodec)(void*,void*,Pgno,int),
|
||||||
|
void (*xCodecSizeChng)(void*,int,int),
|
||||||
|
void (*xCodecFree)(void*),
|
||||||
|
void *pCodec
|
||||||
|
);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
23
src/pager.c
23
src/pager.c
@ -2645,16 +2645,6 @@ int sqlite3PagerClose(Pager *pPager){
|
|||||||
IOTRACE(("CLOSE %p\n", pPager))
|
IOTRACE(("CLOSE %p\n", pPager))
|
||||||
sqlite3OsClose(pPager->fd);
|
sqlite3OsClose(pPager->fd);
|
||||||
|
|
||||||
/* BEGIN CRYPTO */
|
|
||||||
#ifdef SQLITE_HAS_CODEC
|
|
||||||
extern int sqlite3FreeCodecArg(void *);
|
|
||||||
if(pPager->pCodecArg) sqlite3FreeCodecArg(pPager->pCodecArg);
|
|
||||||
#endif
|
|
||||||
/* END CRYPTO */
|
|
||||||
|
|
||||||
sqlite3PageFree(pPager->pTmpSpace);
|
|
||||||
sqlite3PcacheClose(pPager->pPCache);
|
|
||||||
|
|
||||||
#ifdef SQLITE_HAS_CODEC
|
#ifdef SQLITE_HAS_CODEC
|
||||||
if( pPager->xCodecFree ) pPager->xCodecFree(pPager->pCodec);
|
if( pPager->xCodecFree ) pPager->xCodecFree(pPager->pCodec);
|
||||||
#endif
|
#endif
|
||||||
@ -5339,7 +5329,7 @@ sqlite3_backup **sqlite3PagerBackupPtr(Pager *pPager){
|
|||||||
/* BEGIN CRYPTO */
|
/* BEGIN CRYPTO */
|
||||||
#ifdef SQLITE_HAS_CODEC
|
#ifdef SQLITE_HAS_CODEC
|
||||||
void sqlite3pager_get_codec(Pager *pPager, void **ctx) {
|
void sqlite3pager_get_codec(Pager *pPager, void **ctx) {
|
||||||
*ctx = pPager->pCodecArg;
|
*ctx = pPager->pCodec;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sqlite3pager_is_mj_pgno(Pager *pPager, Pgno pgno) {
|
int sqlite3pager_is_mj_pgno(Pager *pPager, Pgno pgno) {
|
||||||
@ -5350,6 +5340,17 @@ sqlite3_file *sqlite3Pager_get_fd(Pager *pPager) {
|
|||||||
return (isOpen(pPager->fd)) ? pPager->fd : NULL;
|
return (isOpen(pPager->fd)) ? pPager->fd : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sqlite3pager_sqlite3PagerSetCodec(
|
||||||
|
Pager *pPager,
|
||||||
|
void *(*xCodec)(void*,void*,Pgno,int),
|
||||||
|
void (*xCodecSizeChng)(void*,int,int),
|
||||||
|
void (*xCodecFree)(void*),
|
||||||
|
void *pCodec
|
||||||
|
){
|
||||||
|
sqlite3PagerSetCodec(pPager, xCodec, xCodecSizeChng, xCodecFree, pCodec);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/* END CRYPTO */
|
/* END CRYPTO */
|
||||||
|
|
||||||
|
@ -220,6 +220,10 @@ do_test codec-1.9 {
|
|||||||
BEGIN;
|
BEGIN;
|
||||||
CREATE TABLE t2(a,b);
|
CREATE TABLE t2(a,b);
|
||||||
} db
|
} db
|
||||||
|
|
||||||
|
for {set i 1} {$i<=3000} {incr i} {
|
||||||
|
execsql "CREATE TABLE longtablename$i (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TEXT, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb TEXT);" db
|
||||||
|
}
|
||||||
|
|
||||||
for {set i 1} {$i<=25000} {incr i} {
|
for {set i 1} {$i<=25000} {incr i} {
|
||||||
set r [expr {int(rand()*500000)}]
|
set r [expr {int(rand()*500000)}]
|
||||||
@ -237,9 +241,10 @@ do_test codec-1.9 {
|
|||||||
execsql {
|
execsql {
|
||||||
PRAGMA key = 'testkey';
|
PRAGMA key = 'testkey';
|
||||||
SELECT count(*) FROM t2;
|
SELECT count(*) FROM t2;
|
||||||
|
SELECT count(*) FROM sqlite_master;
|
||||||
} db
|
} db
|
||||||
|
|
||||||
} {25000}
|
} {25000 3001}
|
||||||
db close
|
db close
|
||||||
file delete -force test.db
|
file delete -force test.db
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user