1 # codec.test developed by Stephen Lombardo (Zetetic LLC)
2 # sjlombardo at zetetic dot net
5 # Copyright (c) 2018, ZETETIC LLC
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are met:
8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above copyright
11 # notice, this list of conditions and the following disclaimer in the
12 # documentation and/or other materials provided with the distribution.
13 # * Neither the name of the ZETETIC LLC nor the
14 # names of its contributors may be used to endorse or promote products
15 # derived from this software without specific prior written permission.
17 # THIS SOFTWARE IS PROVIDED BY ZETETIC LLC ''AS IS'' AND ANY
18 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 # DISCLAIMED. IN NO EVENT SHALL ZETETIC LLC BE LIABLE FOR ANY
21 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 # This file implements regression tests for SQLite library. The
29 # focus of this script is testing code cipher features.
31 # NOTE: tester.tcl has overridden the definition of sqlite3 to
32 # automatically pass in a key value. Thus tests in this file
33 # should explicitly close and open db with sqlite_orig in order
34 # to bypass default key assignment.
37 file delete
-force test.db
38 file delete
-force test2.db
39 file delete
-force test3.db
40 file delete
-force test4.db
42 set testdir
[file dirname
$argv0]
43 set sampleDir
[file normalize
[file dirname
[file dirname
$argv0]]]
45 # If the library is not compiled with has_codec support then
46 # skip all tests in this file.
47 if {![sqlite_orig
-has-codec
]} {
52 proc setup
{file key
} {
54 execsql
"PRAGMA key=$key;"
57 INSERT INTO t1 VALUES
('test1'
, 'test2'
);
62 proc get_cipher_provider
{} {
63 sqlite_orig db test.db
66 PRAGMA cipher_provider
;
70 proc if_built_with_openssl
{name cmd expected
} {
71 if {[get_cipher_provider
] == "openssl"} {
72 do_test
$name $cmd $expected
76 proc if_built_with_libtomcrypt
{name cmd expected
} {
77 if {[get_cipher_provider
] == "libtomcrypt"} {
78 do_test
$name $cmd $expected
82 proc if_built_with_commoncrypto
{name cmd expected
} {
83 if {[get_cipher_provider
] == "commoncrypto"} {
84 do_test
$name $cmd $expected
88 proc if_built_with_nss
{name cmd expected
} {
89 if {[get_cipher_provider
] == "nss"} {
90 do_test
$name $cmd $expected
94 proc cmpFilesChunked
{file1 file2
{chunksize
16384}} {
95 set f1
[open $file1]; fconfigure $f1 -translation binary
96 set f2
[open $file2]; fconfigure $f2 -translation binary
98 set d1
[read $f1 $chunksize]
99 set d2
[read $f2 $chunksize]
100 set diff
[string compare
$d1 $d2]
101 if {$diff != 0 ||
[eof $f1] ||
[eof $f2]} {
109 proc trace_proc sql
{
111 lappend TRACE_OUT
[string trim
$sql]