4
0
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:
Wim
2022-01-31 00:27:37 +01:00
parent e7b193788a
commit e3cafeaf92
1074 changed files with 3091569 additions and 26075 deletions

View 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
}

View 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
}