status-go/vendor/github.com/mutecomm/go-sqlcipher
Lukáš Tinkl f3c826275e
[go-sqlcipher] replace AES implementation with mbedtls (#3518)
HW accelerated versions provided for x86_64 and arm64, with compile time
guards and runtime detection

needed for status-im/status-desktop#10726

---------

Co-authored-by: Alex Jbanca <alexjb@status.im>
2023-05-25 11:30:11 +02:00
..
.travis.yml Add persistent datasync, use single database and handle negotiated filters (#1580) 2019-08-27 14:04:15 +02:00
LICENSE
MAINTENANCE Add persistent datasync, use single database and handle negotiated filters (#1580) 2019-08-27 14:04:15 +02:00
Makefile Add persistent datasync, use single database and handle negotiated filters (#1580) 2019-08-27 14:04:15 +02:00
README.md Add persistent datasync, use single database and handle negotiated filters (#1580) 2019-08-27 14:04:15 +02:00
aes.c [go-sqlcipher] replace AES implementation with mbedtls (#3518) 2023-05-25 11:30:11 +02:00
aesce.c [go-sqlcipher] replace AES implementation with mbedtls (#3518) 2023-05-25 11:30:11 +02:00
aesce.h [go-sqlcipher] replace AES implementation with mbedtls (#3518) 2023-05-25 11:30:11 +02:00
aesni.c [go-sqlcipher] replace AES implementation with mbedtls (#3518) 2023-05-25 11:30:11 +02:00
aesni.h [go-sqlcipher] replace AES implementation with mbedtls (#3518) 2023-05-25 11:30:11 +02:00
burn_stack.c performance(sqlcipher): Fix burn_stack performance issue 2023-05-12 09:08:39 +03:00
cbc_decrypt.c
cbc_done.c Add x3dh key exchange (#1127) 2018-09-24 20:07:34 +02:00
cbc_encrypt.c
cbc_start.c
crypt_argchk.c Add x3dh key exchange (#1127) 2018-09-24 20:07:34 +02:00
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 Add x3dh key exchange (#1127) 2018-09-24 20:07:34 +02:00
crypt_prng_descriptor.c
crypt_register_cipher.c
crypt_register_hash.c
crypt_register_prng.c
error.go
flags.go
fortuna.c Add x3dh key exchange (#1127) 2018-09-24 20:07:34 +02:00
hash_memory.c
hmac_done.c
hmac_init.c
hmac_memory.c
hmac_process.c
mbtls_aes.c [go-sqlcipher] replace AES implementation with mbedtls (#3518) 2023-05-25 11:30:11 +02:00
mbtls_aes.h [go-sqlcipher] replace AES implementation with mbedtls (#3518) 2023-05-25 11:30:11 +02:00
pkcs_5_2.c
sha1.c performance(sqlcipher): provide optimized versions of sha1_compress (#3490) 2023-05-16 20:18:38 +02:00
sha256.c
sqlcipher.go
sqlite3.c Add persistent datasync, use single database and handle negotiated filters (#1580) 2019-08-27 14:04:15 +02:00
sqlite3.go
sqlite3.h Add persistent datasync, use single database and handle negotiated filters (#1580) 2019-08-27 14:04:15 +02:00
sqlite3_other.go
sqlite3_windows.go
tomcrypt.h [go-sqlcipher] replace AES implementation with mbedtls (#3518) 2023-05-25 11:30:11 +02:00
tomcrypt_argchk.h Add x3dh key exchange (#1127) 2018-09-24 20:07:34 +02:00
tomcrypt_cfg.h
tomcrypt_cipher.h
tomcrypt_custom.h
tomcrypt_hash.h
tomcrypt_mac.h Add x3dh key exchange (#1127) 2018-09-24 20:07:34 +02:00
tomcrypt_macros.h performance(sqlcipher): provide optimized versions of sha1_compress (#3490) 2023-05-16 20:18:38 +02:00
tomcrypt_math.h
tomcrypt_misc.h
tomcrypt_pk.h
tomcrypt_pkcs.h
tomcrypt_prng.h
track_libtomcrypt.sh
zeromem.c performance(sqlcipher): Fix burn_stack performance issue 2023-05-12 09:08:39 +03:00

README.md

go-sqlcipher GoDoc Build Status

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:

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.