mirror of
https://github.com/status-im/go-sqlcipher.git
synced 2026-08-31 02:01:15 +00:00
make _pragma_key more generic
This commit is contained in:
@@ -25,7 +25,7 @@ To create and open encrypted database files use the following DSN parameters:
|
||||
|
||||
```go
|
||||
key := "2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99"
|
||||
dbname := fmt.Sprintf("test?_pragma_key=%s&_pragma_cipher_page_size=4096", key)
|
||||
dbname := fmt.Sprintf("db?_pragma_key=x'%s'&_pragma_cipher_page_size=4096", key)
|
||||
db, _ := sql.Open("sqlite3", dbname)
|
||||
```
|
||||
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ var db *sql.DB
|
||||
|
||||
func init() {
|
||||
// create DB
|
||||
key := "2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99"
|
||||
key := "passphrase"
|
||||
tmpdir, err := ioutil.TempDir("", "sqlcipher_test")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
||||
+2
-9
@@ -71,7 +71,6 @@ import "C"
|
||||
import (
|
||||
"database/sql"
|
||||
"database/sql/driver"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
@@ -282,7 +281,7 @@ func errorString(err Error) string {
|
||||
// "deferred", "exclusive".
|
||||
// go-sqlcipher adds the following query parameters to those used by SQLite:
|
||||
// _pragma_key=XXX
|
||||
// Specify raw PRAGMA key (must be 64 character hex string).
|
||||
// Specify PRAGMA key.
|
||||
// _pragma_cipher_page_size=XXX
|
||||
// Set the PRAGMA cipher_page_size to adjust the page size.
|
||||
func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
|
||||
@@ -368,13 +367,7 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
|
||||
if params != nil {
|
||||
// _pragma_key
|
||||
if val := params.Get("_pragma_key"); val != "" {
|
||||
if len(val) != 64 {
|
||||
return nil, errors.New("sqlite3: _pragma_key doesn't have length 64")
|
||||
}
|
||||
if _, err := hex.DecodeString(val); err != nil {
|
||||
return nil, fmt.Errorf("sqlite3: _pragma_key cannot be decoded: %s", err)
|
||||
}
|
||||
query := fmt.Sprintf("PRAGMA key = \"x'%s'\";", val)
|
||||
query := fmt.Sprintf("PRAGMA key = \"%s\";", val)
|
||||
if _, err := conn.Exec(query, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user