Golang SQLCipher driver conforming to the built-in database/sql interface and using the latest sqlite3 code.
Go to file
xeodou e5155d46f4 Update wercker.yml 2017-02-03 16:00:52 +08:00
_example Update sqlcipher to 3.11.0 2016-07-07 15:43:10 +08:00
sqlite3_test Merge branch 'pr/207' 2015-11-02 11:53:42 +09:00
.gitignore add .gitignore 2014-11-14 17:20:14 +09:00
.travis.yml Bump Travis to Ubuntu 14.04 2016-04-23 00:00:50 +08:00
LICENSE Update sqlcipher to 3.11.0 2016-07-07 15:43:10 +08:00
README.md Update sqlcipher to 3.11.0 2016-07-07 15:43:10 +08:00
backup.go Move sqlite3 amalgation files a directory up. 2016-04-02 12:48:26 +02:00
callback.go callback: use handles rather than passing Go pointers 2016-01-29 13:18:39 -08:00
callback_test.go Move argument converters to callback.go, and optimize return value handling. 2015-08-21 16:37:45 -07:00
doc.go Update sqlcipher to 3.11.0 2016-07-07 15:43:10 +08:00
error.go Add one blank line for godoc 2014-08-18 17:00:59 +09:00
error_test.go Add test for ErrNo.Extend() 2015-01-26 18:38:13 +09:00
sqlite3-binding.c Update sqlcipher to 3.11.0 2016-07-07 15:43:10 +08:00
sqlite3-binding.h Update sqlcipher to 3.11.0 2016-07-07 15:43:10 +08:00
sqlite3.go Update sqlcipher to 3.11.0 2016-07-07 15:43:10 +08:00
sqlite3_fts3_test.go FTS4 is not available on Trusty 2016-04-23 00:00:49 +08:00
sqlite3_fts5.go Conditional build for the FTS5 Extension 2016-03-07 16:20:02 +09:00
sqlite3_icu.go added icu extension support 2015-08-20 03:02:59 +03:00
sqlite3_json1.go Conditional build for the JSON1 Extension 2016-02-28 09:53:54 +01:00
sqlite3_libsqlite3.go Disable LoadExtension when omit_load_extension is specified 2016-04-18 20:21:32 +08:00
sqlite3_load_extension.go Expose LoadExtension with entry point 2016-04-18 17:05:50 +08:00
sqlite3_omit_load_extension.go Disable LoadExtension when omit_load_extension is specified 2016-04-18 19:58:56 +08:00
sqlite3_other.go remove -lpthread. related issue #201 2015-04-28 08:58:25 +09:00
sqlite3_test.go Update sqlcipher to 3.11.0 2016-07-07 15:43:10 +08:00
sqlite3_windows.go Fix compile for old mingw32 2015-12-30 00:19:24 +02:00
sqlite3ext.h Clean code. 2016-07-19 12:30:40 -07:00
wercker.yml Update wercker.yml 2017-02-03 16:00:52 +08:00

README.md

go-sqlcipher

wercker status

SQLCipher driver conforming to the built-in database/sql interface and using the latest sqlite3 code.

which is 3.8.8.3 2015-02-25 13:29:11 9d6c1880fb75660bbabd693175579529785f8a6b

Working with sqlcipher version which is 3.8.6 2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e

It's wrapper with

  • go-sqlite3 sqlite3 driver for go that using database/sql.
  • SQLCipher SQLCipher is an SQLite extension that provides 256 bit AES encryption of database files.
  • Using openssl as the 256 bit AES encryption.

Have't build test in a windows machine or linux machine Working in my macbook-air

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix

OpenSSL 0.9.8zd 8 Jan 2015
built on: Mar  9 2015
platform: darwin64-x86_64-llvm
options:  bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) blowfish(idx)
compiler: -arch x86_64 -fmessage-length=0 -pipe -Wno-trigraphs -fpascal-strings -fasm-blocks -O3 -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DMD32_REG_T=int -DOPENSSL_NO_IDEA -DOPENSSL_PIC -DOPENSSL_THREADS -DZLIB -mmacosx-version-min=10.6
OPENSSLDIR: "/System/Library/OpenSSL"

Installation

This package can be installed with the go get command:

go get github.com/xeodou/go-sqlcipher

go-sqlcipher is cgo package. If you want to build your app using go-sqlcipher, you need gcc. However, if you install go-sqlcipher with go install github.com/xeodou/go-sqlcipher, you don't need gcc to build your app anymore.

Documentation

API documentation can be found here: http://godoc.org/github.com/xeodou/go-sqlcipher

Examples can be found under the ./_example directory

FAQ

The golang code is copy from go-sqlite3 If you have some issue, maybe you can find from https://github.com/mattn/go-sqlite3/issues

Here is some help from go-sqlite3 project.

  • Want to build go-sqlite3 with libsqlite3 on my linux.

    Use go build --tags "libsqlite3 linux"

  • Want to build go-sqlite3 with libsqlite3 on OS X.

    Install sqlite3 from homebrew: brew install sqlite3

    Use go build --tags "libsqlite3 darwin"

  • Want to build go-sqlite3 with icu extension.

    Use go build --tags "icu"

  • Can't build go-sqlite3 on windows 64bit.

    Probably, you are using go 1.0, go1.0 has a problem when it comes to compiling/linking on windows 64bit. See: https://github.com/mattn/go-sqlite3/issues/27

  • Getting insert error while query is opened.

    You can pass some arguments into the connection string, for example, a URI. See: https://github.com/mattn/go-sqlite3/issues/39

  • Do you want to cross compile? mingw on Linux or Mac?

    See: https://github.com/mattn/go-sqlite3/issues/106 See also: http://www.limitlessfx.com/cross-compile-golang-app-for-windows-from-linux.html

  • Want to get time.Time with current locale

    Use loc=auto in SQLite3 filename schema like file:foo.db?loc=auto.

  • Print some waring messages like warning: 'RAND_add' is deprecated: first deprecated in OS X 10.7

    You can ignore these messages.

License

MIT:

sqlite3-binding.c, sqlite3-binding.h, sqlite3ext.h

The -binding suffix was added to avoid build failures under gccgo.

In this repository, those files are amalgamation code that copied from SQLCipher. The license of those codes are depend on the license of SQLCipher.

In this repository, those files are an amalgamation of code that was copied from SQLite3. The license of that code is the same as the license of SQLite3.

Original repository https://github.com/mattn/go-sqlite3 is under MIT.

Author

xeodou