watchtower: add wtclient.ClientSession constructor

This commit is contained in:
Elle Mouton committed 2023-03-20 10:46:53 +02:00
1 parent 0ed5c750c8
commit 41e36c7ec7
2 files changed
+34 -15

No files matched your search

+27
View File
@@ -198,3 +198,30 @@ type ClientSession struct {
// key used to connect to the watchtower.
SessionKeyECDH keychain.SingleKeyECDH
}
// NewClientSessionFromDBSession converts a wtdb.ClientSession to a
// ClientSession.
func NewClientSessionFromDBSession(s *wtdb.ClientSession, tower *Tower,
keyRing ECDHKeyRing) (*ClientSession, error) {
towerKeyDesc, err := keyRing.DeriveKey(
keychain.KeyLocator{
Family: keychain.KeyFamilyTowerSession,
Index: s.KeyIndex,
},
)
if err != nil {
return nil, err
}
sessionKeyECDH := keychain.NewPubKeyECDH(
towerKeyDesc, keyRing,
)
return &ClientSession{
ID: s.ID,
ClientSessionBody: s.ClientSessionBody,
Tower: tower,
SessionKeyECDH: sessionKeyECDH,
}, nil
}