d4fa1002f9
Fixing status-im/status-desktop#10572 Implements a cross-platform version of OP-TEE/optee_os#3102 Remove recursion Use memset instead of while loop A description to understand introduced changes without reading the code. zeromem weights about 50% of the total CPU time on M1 Macs and seems to be major performance offender. It is used to clear the stack when using variables with sensitive information. |
||
---|---|---|
_example/simple | ||
sqlite3_test | ||
.travis.yml | ||
LICENSE | ||
MAINTENANCE | ||
Makefile | ||
README.md | ||
aes.c | ||
aes_tab.h | ||
burn_stack.c | ||
cbc_decrypt.c | ||
cbc_done.c | ||
cbc_encrypt.c | ||
cbc_start.c | ||
crypt_argchk.c | ||
crypt_cipher_descriptor.c | ||
crypt_cipher_is_valid.c | ||
crypt_find_cipher.c | ||
crypt_find_hash.c | ||
crypt_hash_descriptor.c | ||
crypt_hash_is_valid.c | ||
crypt_prng_descriptor.c | ||
crypt_register_cipher.c | ||
crypt_register_hash.c | ||
crypt_register_prng.c | ||
error.go | ||
error_test.go | ||
flags.go | ||
fortuna.c | ||
go.mod | ||
go.sum | ||
hash_memory.c | ||
hmac_done.c | ||
hmac_init.c | ||
hmac_memory.c | ||
hmac_process.c | ||
pkcs_5_2.c | ||
sha1.c | ||
sha256.c | ||
sqlcipher.go | ||
sqlcipher_test.go | ||
sqlite3.c | ||
sqlite3.go | ||
sqlite3.h | ||
sqlite3_other.go | ||
sqlite3_test.go | ||
sqlite3_windows.go | ||
tomcrypt.h | ||
tomcrypt_argchk.h | ||
tomcrypt_cfg.h | ||
tomcrypt_cipher.h | ||
tomcrypt_custom.h | ||
tomcrypt_hash.h | ||
tomcrypt_mac.h | ||
tomcrypt_macros.h | ||
tomcrypt_math.h | ||
tomcrypt_misc.h | ||
tomcrypt_pk.h | ||
tomcrypt_pkcs.h | ||
tomcrypt_prng.h | ||
track_libtomcrypt.sh | ||
zeromem.c |
README.md
go-sqlcipher
Description
Self-contained Go sqlite3 driver with an AES-256 encrypted sqlite3 database conforming to the built-in database/sql interface. It is based on:
- stripped-down Go sqlite3 driver: https://github.com/mattn/go-sqlite3
- SQLite extension with AES-256 codec: https://github.com/sqlcipher/sqlcipher
- AES-256 implementation from: https://github.com/libtom/libtomcrypt
SQLite itself is part of SQLCipher.
go-sqlcipher currently only supports the SQLCipher 3.x releases.
Installation
This package can be installed with the go get command:
go get github.com/mutecomm/go-sqlcipher
Documentation
To create and open encrypted database files use the following DSN parameters:
key := "2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99"
dbname := fmt.Sprintf("db?_pragma_key=x'%s'&_pragma_cipher_page_size=4096", key)
db, _ := sql.Open("sqlite3", dbname)
_pragma_key
is the hex encoded 32 byte key (must be 64 characters long).
_pragma_cipher_page_size
is the page size of the encrypted database (set if
you want a different value than the default 1024 bytes).
API documentation can be found here: http://godoc.org/github.com/mutecomm/go-sqlcipher
Use the function sqlite3.IsEncrypted() to check whether a database file is encrypted or not.
Examples can be found under the ./_example
directory
License
The code of the originating packages is covered by their respective licenses. See LICENSE file for details.