summaryrefslogtreecommitdiffstats
path: root/vendor/go.mau.fi/libsignal/state/store
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/go.mau.fi/libsignal/state/store')
-rw-r--r--vendor/go.mau.fi/libsignal/state/store/Doc.go3
-rw-r--r--vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go29
-rw-r--r--vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go21
-rw-r--r--vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go21
-rw-r--r--vendor/go.mau.fi/libsignal/state/store/SessionStore.go17
-rw-r--r--vendor/go.mau.fi/libsignal/state/store/SignalProtocolStore.go15
-rw-r--r--vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go24
7 files changed, 130 insertions, 0 deletions
diff --git a/vendor/go.mau.fi/libsignal/state/store/Doc.go b/vendor/go.mau.fi/libsignal/state/store/Doc.go
new file mode 100644
index 00000000..9a018d3d
--- /dev/null
+++ b/vendor/go.mau.fi/libsignal/state/store/Doc.go
@@ -0,0 +1,3 @@
+// Package store provides the storage interfaces for storing the state of
+// ongoing double ratchet sessions and keys.
+package store
diff --git a/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go b/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go
new file mode 100644
index 00000000..05ad8d1e
--- /dev/null
+++ b/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go
@@ -0,0 +1,29 @@
+package store
+
+import (
+ "go.mau.fi/libsignal/keys/identity"
+ "go.mau.fi/libsignal/protocol"
+)
+
+// IdentityKey provides an interface to identity information.
+type IdentityKey interface {
+ // Get the local client's identity key pair.
+ GetIdentityKeyPair() *identity.KeyPair
+
+ // Return the local client's registration ID.
+ //
+ // Clients should maintain a registration ID, a random number between 1 and 16380
+ // that's generated once at install time.
+ GetLocalRegistrationId() uint32
+
+ // Save a remote client's identity key in our identity store.
+ SaveIdentity(address *protocol.SignalAddress, identityKey *identity.Key)
+
+ // Verify a remote client's identity key.
+ //
+ // Determine whether a remote client's identity is trusted. Trust is based on
+ // 'trust on first use'. This means that an identity key is considered 'trusted'
+ // if there is no entry for the recipient in the local store, or if it matches the
+ // saved key for a recipient in the local store.
+ IsTrustedIdentity(address *protocol.SignalAddress, identityKey *identity.Key) bool
+}
diff --git a/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go b/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go
new file mode 100644
index 00000000..fea2eed0
--- /dev/null
+++ b/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go
@@ -0,0 +1,21 @@
+package store
+
+import (
+ "go.mau.fi/libsignal/keys/message"
+)
+
+// MessageKey store is an interface describing the optional local storage
+// of message keys.
+type MessageKey interface {
+ // Load a local message key by id
+ LoadMessageKey(keyID uint32) *message.Keys
+
+ // Store a local message key
+ StoreMessageKey(keyID uint32, key *message.Keys)
+
+ // Check to see if the store contains a message key with id.
+ ContainsMessageKey(keyID uint32) bool
+
+ // Delete a message key from local storage.
+ RemoveMessageKey(keyID uint32)
+}
diff --git a/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go b/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go
new file mode 100644
index 00000000..a132be65
--- /dev/null
+++ b/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go
@@ -0,0 +1,21 @@
+package store
+
+import (
+ "go.mau.fi/libsignal/state/record"
+)
+
+// PreKey store is an interface describing the local storage
+// of PreKeyRecords
+type PreKey interface {
+ // Load a local PreKeyRecord
+ LoadPreKey(preKeyID uint32) *record.PreKey
+
+ // Store a local PreKeyRecord
+ StorePreKey(preKeyID uint32, preKeyRecord *record.PreKey)
+
+ // Check to see if the store contains a PreKeyRecord
+ ContainsPreKey(preKeyID uint32) bool
+
+ // Delete a PreKeyRecord from local storage.
+ RemovePreKey(preKeyID uint32)
+}
diff --git a/vendor/go.mau.fi/libsignal/state/store/SessionStore.go b/vendor/go.mau.fi/libsignal/state/store/SessionStore.go
new file mode 100644
index 00000000..e18fc024
--- /dev/null
+++ b/vendor/go.mau.fi/libsignal/state/store/SessionStore.go
@@ -0,0 +1,17 @@
+package store
+
+import (
+ "go.mau.fi/libsignal/protocol"
+ "go.mau.fi/libsignal/state/record"
+)
+
+// Session store is an interface for the persistent storage of session
+// state information for remote clients.
+type Session interface {
+ LoadSession(address *protocol.SignalAddress) *record.Session
+ GetSubDeviceSessions(name string) []uint32
+ StoreSession(remoteAddress *protocol.SignalAddress, record *record.Session)
+ ContainsSession(remoteAddress *protocol.SignalAddress) bool
+ DeleteSession(remoteAddress *protocol.SignalAddress)
+ DeleteAllSessions()
+}
diff --git a/vendor/go.mau.fi/libsignal/state/store/SignalProtocolStore.go b/vendor/go.mau.fi/libsignal/state/store/SignalProtocolStore.go
new file mode 100644
index 00000000..081e0380
--- /dev/null
+++ b/vendor/go.mau.fi/libsignal/state/store/SignalProtocolStore.go
@@ -0,0 +1,15 @@
+package store
+
+import (
+ "go.mau.fi/libsignal/groups/state/store"
+)
+
+// SignalProtocol store is an interface that implements the
+// methods for all stores needed in the Signal Protocol.
+type SignalProtocol interface {
+ IdentityKey
+ PreKey
+ Session
+ SignedPreKey
+ store.SenderKey
+}
diff --git a/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go b/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go
new file mode 100644
index 00000000..058cd670
--- /dev/null
+++ b/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go
@@ -0,0 +1,24 @@
+package store
+
+import (
+ "go.mau.fi/libsignal/state/record"
+)
+
+// SignedPreKey store is an interface that describes how to persistently
+// store signed PreKeys.
+type SignedPreKey interface {
+ // LoadSignedPreKey loads a local SignedPreKeyRecord
+ LoadSignedPreKey(signedPreKeyID uint32) *record.SignedPreKey
+
+ // LoadSignedPreKeys loads all local SignedPreKeyRecords
+ LoadSignedPreKeys() []*record.SignedPreKey
+
+ // Store a local SignedPreKeyRecord
+ StoreSignedPreKey(signedPreKeyID uint32, record *record.SignedPreKey)
+
+ // Check to see if store contains the given record
+ ContainsSignedPreKey(signedPreKeyID uint32) bool
+
+ // Delete a SignedPreKeyRecord from local storage
+ RemoveSignedPreKey(signedPreKeyID uint32)
+}