mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-06-27 16:59:23 +00:00
Add dependencies/vendor (whatsapp)
This commit is contained in:
29
vendor/go.mau.fi/libsignal/keys/session/DerivedSecrets.go
vendored
Normal file
29
vendor/go.mau.fi/libsignal/keys/session/DerivedSecrets.go
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
package session
|
||||
|
||||
// NewDerivedSecrets returns a new RootKey/ChainKey pair from 64 bytes of key material
|
||||
// generated by the key derivation function.
|
||||
func NewDerivedSecrets(keyMaterial []byte) *DerivedSecrets {
|
||||
secrets := DerivedSecrets{
|
||||
keyMaterial[:32],
|
||||
keyMaterial[32:],
|
||||
}
|
||||
|
||||
return &secrets
|
||||
}
|
||||
|
||||
// DerivedSecrets is a structure for holding the derived secrets for the
|
||||
// Root and Chain keys for a session.
|
||||
type DerivedSecrets struct {
|
||||
rootKey []byte
|
||||
chainKey []byte
|
||||
}
|
||||
|
||||
// RootKey returns the RootKey bytes.
|
||||
func (d *DerivedSecrets) RootKey() []byte {
|
||||
return d.rootKey
|
||||
}
|
||||
|
||||
// ChainKey returns the ChainKey bytes.
|
||||
func (d *DerivedSecrets) ChainKey() []byte {
|
||||
return d.chainKey
|
||||
}
|
43
vendor/go.mau.fi/libsignal/keys/session/Pair.go
vendored
Normal file
43
vendor/go.mau.fi/libsignal/keys/session/Pair.go
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
// Package session provides a simple structure for session keys, which is
|
||||
// a pair of root and chain keys for a session.
|
||||
package session
|
||||
|
||||
import (
|
||||
"go.mau.fi/libsignal/ecc"
|
||||
"go.mau.fi/libsignal/keys/chain"
|
||||
"go.mau.fi/libsignal/keys/message"
|
||||
)
|
||||
|
||||
// RootKeyable is an interface for all root key implementations that are part of
|
||||
// a session keypair.
|
||||
type RootKeyable interface {
|
||||
Bytes() []byte
|
||||
CreateChain(theirRatchetKey ecc.ECPublicKeyable, ourRatchetKey *ecc.ECKeyPair) (*KeyPair, error)
|
||||
}
|
||||
|
||||
// ChainKeyable is an interface for all chain key implementations that are part of
|
||||
// a session keypair.
|
||||
type ChainKeyable interface {
|
||||
Key() []byte
|
||||
Index() uint32
|
||||
NextKey() *chain.Key
|
||||
MessageKeys() *message.Keys
|
||||
Current() *chain.Key
|
||||
}
|
||||
|
||||
// NewKeyPair returns a new session key pair that holds a root and chain key.
|
||||
func NewKeyPair(rootKey RootKeyable, chainKey ChainKeyable) *KeyPair {
|
||||
keyPair := KeyPair{
|
||||
RootKey: rootKey,
|
||||
ChainKey: chainKey,
|
||||
}
|
||||
|
||||
return &keyPair
|
||||
}
|
||||
|
||||
// KeyPair is a session key pair that holds a single root and chain key pair. These
|
||||
// keys are ratcheted after every message sent and every message round trip.
|
||||
type KeyPair struct {
|
||||
RootKey RootKeyable
|
||||
ChainKey ChainKeyable
|
||||
}
|
Reference in New Issue
Block a user