make _pragma_key more generic

This commit is contained in:
Frank Braun
2015-11-30 01:00:07 +00:00
parent 9314beb63f
commit e4e8007f0d
3 changed files with 4 additions and 11 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
}