summaryrefslogtreecommitdiffstats
path: root/vendor/go.mau.fi/whatsmeow/store/sqlstore
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/go.mau.fi/whatsmeow/store/sqlstore')
-rw-r--r--vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go15
-rw-r--r--vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go12
2 files changed, 19 insertions, 8 deletions
diff --git a/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go b/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go
index 7f8c6c8f..4fbcec34 100644
--- a/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go
+++ b/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go
@@ -7,7 +7,6 @@
package sqlstore
import (
- "crypto/rand"
"database/sql"
"errors"
"fmt"
@@ -18,6 +17,7 @@ import (
"go.mau.fi/whatsmeow/types"
"go.mau.fi/whatsmeow/util/keys"
waLog "go.mau.fi/whatsmeow/util/log"
+ "go.mau.fi/whatsmeow/util/randbytes"
)
// Container is a wrapper for a SQL database that can contain multiple whatsmeow sessions.
@@ -65,7 +65,12 @@ func New(dialect, address string, log waLog.Logger) (*Container, error) {
// if err != nil {
// panic(err)
// }
-// container, err := sqlstore.NewWithDB(db, "sqlite3", nil)
+// container := sqlstore.NewWithDB(db, "sqlite3", nil)
+//
+// This method does not call Upgrade automatically like New does, so you must call it yourself:
+//
+// container := sqlstore.NewWithDB(...)
+// err := container.Upgrade()
func NewWithDB(db *sql.DB, dialect string, log waLog.Logger) *Container {
if log == nil {
log = waLog.Noop
@@ -205,11 +210,7 @@ func (c *Container) NewDevice() *store.Device {
NoiseKey: keys.NewKeyPair(),
IdentityKey: keys.NewKeyPair(),
RegistrationID: mathRand.Uint32(),
- AdvSecretKey: make([]byte, 32),
- }
- _, err := rand.Read(device.AdvSecretKey)
- if err != nil {
- panic(err)
+ AdvSecretKey: randbytes.Make(32),
}
device.SignedPreKey = device.IdentityKey.CreateSignedPreKey(1)
return device
diff --git a/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go b/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go
index f9f5a287..a6acdfc0 100644
--- a/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go
+++ b/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go
@@ -284,7 +284,8 @@ const (
SET key_data=excluded.key_data, timestamp=excluded.timestamp, fingerprint=excluded.fingerprint
WHERE excluded.timestamp > whatsmeow_app_state_sync_keys.timestamp
`
- getAppStateSyncKeyQuery = `SELECT key_data, timestamp, fingerprint FROM whatsmeow_app_state_sync_keys WHERE jid=$1 AND key_id=$2`
+ getAppStateSyncKeyQuery = `SELECT key_data, timestamp, fingerprint FROM whatsmeow_app_state_sync_keys WHERE jid=$1 AND key_id=$2`
+ getLatestAppStateSyncKeyIDQuery = `SELECT key_id FROM whatsmeow_app_state_sync_keys WHERE jid=$1 ORDER BY timestamp DESC LIMIT 1`
)
func (s *SQLStore) PutAppStateSyncKey(id []byte, key store.AppStateSyncKey) error {
@@ -301,6 +302,15 @@ func (s *SQLStore) GetAppStateSyncKey(id []byte) (*store.AppStateSyncKey, error)
return &key, err
}
+func (s *SQLStore) GetLatestAppStateSyncKeyID() ([]byte, error) {
+ var keyID []byte
+ err := s.db.QueryRow(getLatestAppStateSyncKeyIDQuery, s.JID).Scan(&keyID)
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, nil
+ }
+ return keyID, err
+}
+
const (
putAppStateVersionQuery = `
INSERT INTO whatsmeow_app_state_version (jid, name, version, hash) VALUES ($1, $2, $3, $4)