diff options
Diffstat (limited to 'vendor/go.mau.fi/libsignal/state/store')
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) +} |