From e4e8007f0deb5add7008e270402761aaeda89dcb Mon Sep 17 00:00:00 2001 From: Frank Braun Date: Mon, 30 Nov 2015 01:00:07 +0000 Subject: [PATCH] make _pragma_key more generic --- README.md | 2 +- sqlcipher_test.go | 2 +- sqlite3.go | 11 ++--------- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 37adc4b..fc51423 100644 --- a/README.md +++ b/README.md @@ -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) ``` diff --git a/sqlcipher_test.go b/sqlcipher_test.go index 7350671..11696c8 100644 --- a/sqlcipher_test.go +++ b/sqlcipher_test.go @@ -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) diff --git a/sqlite3.go b/sqlite3.go index da91969..d8685de 100644 --- a/sqlite3.go +++ b/sqlite3.go @@ -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 }