@@ -879,6 +879,7 @@ do_test open-1.1.8-database {
879879 execsql {
880880 PRAGMA key = 'testkey';
881881 PRAGMA cipher_use_hmac = OFF;
882+ PRAGMA kdf_iter = 4000;
882883 SELECT count(*) FROM t1;
883884 SELECT * FROM t1;
884885 }
@@ -893,6 +894,7 @@ do_test attach-and-copy-1.1.8 {
893894 execsql {
894895 PRAGMA key = 'testkey';
895896 PRAGMA cipher_use_hmac = OFF;
897+ PRAGMA kdf_iter = 4000;
896898 ATTACH DATABASE 'test.db' AS db2 KEY 'testkey-hmac';
897899 CREATE TABLE db2.t1(a,b);
898900 INSERT INTO db2.t1 SELECT * FROM main.t1;
@@ -1350,20 +1352,22 @@ do_test cipher-options-before-keys {
13501352db close
13511353file delete -force test.db
13521354
1353- # open a 1.1.8 database (no HMAC), then
1355+ # open a 1.1.8 database (no HMAC, 4K iter ), then
13541356# try to open another 1.1.8 database. The
13551357# attached database should have the same hmac
13561358# setting as the original
1357- do_test default-use- hmac-attach {
1359+ do_test default-hmac-kdf -attach {
13581360 file copy -force sqlcipher-1.1.8-testkey.db test.db
13591361 sqlite_orig db test.db
13601362 execsql {
13611363 PRAGMA cipher_default_use_hmac = OFF;
1364+ PRAGMA cipher_default_kdf_iter = 4000;
13621365 PRAGMA key = 'testkey';
13631366 SELECT count(*) FROM t1;
13641367 ATTACH 'sqlcipher-1.1.8-testkey.db' AS db2;
13651368 SELECT count(*) from db2.t1;
13661369 PRAGMA cipher_default_use_hmac = ON;
1370+ PRAGMA cipher_default_kdf_iter = 64000;
13671371 }
13681372} {4 4}
13691373db close
@@ -1384,12 +1388,12 @@ do_test attach-1.1.8-database-from-2.0-fails {
13841388db close
13851389file delete -force test.db
13861390
1387- # open a 2.0 database (with HMAC), then
1391+ # open a 2.0 database (with HMAC, 4k iter ), then
13881392# set the default hmac setting to OFF.
13891393# try to a 1.1.8 database. this should
13901394# succeed now that hmac is off by default
13911395# before the attach
1392- do_test change-default-use- hmac-attach {
1396+ do_test change-default-hmac-kdf -attach {
13931397 sqlite_orig db test.db
13941398 execsql {
13951399 PRAGMA key = 'testkey';
@@ -1402,9 +1406,11 @@ do_test change-default-use-hmac-attach {
14021406 PRAGMA key = 'testkey';
14031407 SELECT count(*) FROM t1;
14041408 PRAGMA cipher_default_use_hmac = OFF;
1409+ PRAGMA cipher_default_kdf_iter = 4000;
14051410 ATTACH 'sqlcipher-1.1.8-testkey.db' AS db2;
14061411 SELECT count(*) from db2.t1;
14071412 PRAGMA cipher_default_use_hmac = ON;
1413+ PRAGMA cipher_default_kdf_iter = 64000;
14081414 }
14091415} {1 4}
14101416db close
@@ -1580,12 +1586,25 @@ do_test multipage-schema-autovacuum-shortread-wal {
15801586db close
15811587file delete -force test.db
15821588
1589+ # open a 2.3 database with little endian hmac page numbers (default)
1590+ # verify it can be opened
1591+ do_test open-2.3-le-database {
1592+ sqlite_orig db sqlcipher-2.3-testkey.db
1593+ execsql {
1594+ PRAGMA key = 'testkey';
1595+ SELECT count(*) FROM t1;
1596+ SELECT * FROM t1;
1597+ }
1598+ } {4 1 1 one one 1 2 one two}
1599+ db close
1600+
15831601# open a 2.0 database with little endian hmac page numbers (default)
15841602# verify it can be opened
15851603do_test open-2.0-le-database {
15861604 sqlite_orig db sqlcipher-2.0-le-testkey.db
15871605 execsql {
15881606 PRAGMA key = 'testkey';
1607+ PRAGMA kdf_iter = 4000;
15891608 SELECT count(*) FROM t1;
15901609 SELECT * FROM t1;
15911610 }
@@ -1599,6 +1618,7 @@ do_test open-2.0-be-database {
15991618 execsql {
16001619 PRAGMA key = 'testkey';
16011620 PRAGMA cipher_hmac_pgno = be;
1621+ PRAGMA kdf_iter = 4000;
16021622 SELECT count(*) FROM t1;
16031623 SELECT * FROM t1;
16041624 }
@@ -1615,6 +1635,7 @@ do_test be-to-le-migration {
16151635 execsql {
16161636 PRAGMA key = 'testkey';
16171637 PRAGMA cipher_hmac_pgno = be;
1638+ PRAGMA kdf_iter = 4000;
16181639 ATTACH DATABASE 'test.db' AS db2 KEY 'testkey';
16191640 CREATE TABLE db2.t1(a,b);
16201641 INSERT INTO db2.t1 SELECT * FROM main.t1;
@@ -1684,6 +1705,31 @@ do_test verify-pragma-cipher-default-use-hmac-off {
16841705db close
16851706file delete -force test.db
16861707
1708+ # verify the pragma default_cipher_kdf_iter
1709+ # is set to 64000 by default
1710+ do_test verify-pragma-cipher-default-kdf-iter-default {
1711+ sqlite_orig db test.db
1712+ execsql {
1713+ PRAGMA cipher_default_kdf_iter;
1714+ }
1715+ } {64000}
1716+ db close
1717+ file delete -force test.db
1718+
1719+
1720+ # verify the pragma default_cipher_kdf_ter
1721+ # reports changes
1722+ do_test verify-pragma-cipher-default-use-hmac-off {
1723+ sqlite_orig db test.db
1724+ execsql {
1725+ PRAGMA cipher_default_kdf_iter = 1000;
1726+ PRAGMA cipher_default_kdf_iter;
1727+ PRAGMA cipher_default_kdf_iter = 64000;
1728+ }
1729+ } {1000}
1730+ db close
1731+ file delete -force test.db
1732+
16871733# verify the pragma kdf_iter
16881734# reports the default value
16891735do_test verify-pragma-kdf-iter-reports-default {
@@ -1692,7 +1738,7 @@ do_test verify-pragma-kdf-iter-reports-default {
16921738 PRAGMA key = 'test';
16931739 PRAGMA kdf_iter;
16941740 }
1695- } {4000 }
1741+ } {64000 }
16961742db close
16971743file delete -force test.db
16981744
@@ -1843,6 +1889,7 @@ do_test open-2.0-beta-database {
18431889 sqlite_orig db sqlcipher-2.0-beta-testkey.db
18441890 execsql {
18451891 PRAGMA key = 'testkey';
1892+ PRAGMA kdf_iter = 4000;
18461893 PRAGMA fast_kdf_iter = 4000;
18471894 PRAGMA cipher_hmac_salt_mask = "x'00'";
18481895 SELECT count(*) FROM t1;
@@ -1861,6 +1908,7 @@ do_test 2.0-beta-to-2.0-migration {
18611908 execsql {
18621909 PRAGMA key = 'testkey';
18631910 PRAGMA cipher_hmac_salt_mask = "x'00'";
1911+ PRAGMA kdf_iter = 4000;
18641912 PRAGMA fast_kdf_iter = 4000;
18651913 SELECT count(*) FROM sqlite_master;
18661914
0 commit comments