mirror of https://github.com/voidlizard/hbs2
do not pass PeerData to encHandshake_considerPeerAsymmKey
This commit is contained in:
parent
a0334f5dee
commit
00bac2047f
|
@ -75,7 +75,7 @@ sendBeginEncryptionExchange creds ourpubkey peer = do
|
|||
request peer (BeginEncryptionExchange @e sign ourpubkey)
|
||||
|
||||
data EncryptionHandshakeAdapter e m s = EncryptionHandshakeAdapter
|
||||
{ encHandshake_considerPeerAsymmKey :: Peer e -> Maybe (PeerData e) -> Maybe Encrypt.PublicKey -> m ()
|
||||
{ encHandshake_considerPeerAsymmKey :: Peer e -> Maybe Encrypt.PublicKey -> m ()
|
||||
}
|
||||
|
||||
|
||||
|
@ -109,7 +109,7 @@ encryptionHandshakeProto EncryptionHandshakeAdapter{..} penv = \case
|
|||
trace $ "EHSP ResetEncryptionKeys from" <+> viaShow (peer, mpeerData)
|
||||
|
||||
-- сначала удалим у себя его прошлый ключ
|
||||
encHandshake_considerPeerAsymmKey peer mpeerData Nothing
|
||||
encHandshake_considerPeerAsymmKey peer Nothing
|
||||
|
||||
creds <- getCredentials @s
|
||||
let ourpubkey = pubKeyFromKeypair @s $ view envAsymmetricKeyPair penv
|
||||
|
@ -131,14 +131,14 @@ encryptionHandshakeProto EncryptionHandshakeAdapter{..} penv = \case
|
|||
let sign = makeSign @s (view peerSignSk creds) ((cs . serialise) ourpubkey)
|
||||
|
||||
-- сначала удалим у себя его прошлый ключ
|
||||
encHandshake_considerPeerAsymmKey peer mpeerData Nothing
|
||||
encHandshake_considerPeerAsymmKey peer Nothing
|
||||
|
||||
-- отправить обратно свой публичный ключ
|
||||
-- отправится пока ещё в плоском виде
|
||||
response (AckEncryptionExchange @e sign ourpubkey)
|
||||
|
||||
-- Только после этого прописываем его ключ у себя
|
||||
encHandshake_considerPeerAsymmKey peer mpeerData (Just theirpubkey)
|
||||
encHandshake_considerPeerAsymmKey peer (Just theirpubkey)
|
||||
|
||||
AckEncryptionExchange theirsign theirpubkey -> do
|
||||
peer <- thatPeer proto
|
||||
|
@ -149,7 +149,7 @@ encryptionHandshakeProto EncryptionHandshakeAdapter{..} penv = \case
|
|||
|
||||
-- Он уже прописал у себя наш публичный ключ и готов общаться шифрованными сообщениями
|
||||
-- Прописываем его ключ у себя
|
||||
encHandshake_considerPeerAsymmKey peer mpeerData (Just theirpubkey)
|
||||
encHandshake_considerPeerAsymmKey peer (Just theirpubkey)
|
||||
|
||||
where
|
||||
proto = Proxy @(EncryptionHandshake e)
|
||||
|
|
|
@ -673,22 +673,25 @@ runPeer opts = U.handle (\e -> myException e
|
|||
, EventEmitter e (PeerAsymmInfo e) m
|
||||
) => EncryptionHandshakeAdapter L4Proto m s
|
||||
encryptionHshakeAdapter = EncryptionHandshakeAdapter
|
||||
{ encHandshake_considerPeerAsymmKey = \peer mpeerData -> \case
|
||||
Nothing -> do
|
||||
-- deletePeerAsymmKey brains peer
|
||||
forM_ mpeerData \peerData ->
|
||||
deletePeerAsymmKey' brains (show peerData)
|
||||
Just pk -> do
|
||||
-- emit PeerAsymmInfoKey (PeerAsymmPubKey peer pk)
|
||||
let symmk = genCommonSecret @s
|
||||
(privKeyFromKeypair @s (view envAsymmetricKeyPair penv))
|
||||
pk
|
||||
case mpeerData of
|
||||
Nothing -> do
|
||||
-- insertPeerAsymmKey brains peer pk symmk
|
||||
pure ()
|
||||
Just peerData ->
|
||||
insertPeerAsymmKey' brains (show peerData) pk symmk
|
||||
{ encHandshake_considerPeerAsymmKey = \peer mpubkey -> withPeerM penv do
|
||||
mpeerData <- withPeerM penv $ find (KnownPeerKey peer) id
|
||||
case mpubkey of
|
||||
Nothing -> do
|
||||
-- deletePeerAsymmKey brains peer
|
||||
forM_ mpeerData \peerData ->
|
||||
deletePeerAsymmKey' brains (show peerData)
|
||||
Just pk -> do
|
||||
-- emit PeerAsymmInfoKey (PeerAsymmPubKey peer pk)
|
||||
let symmk = genCommonSecret @s
|
||||
(privKeyFromKeypair @s (view envAsymmetricKeyPair penv))
|
||||
pk
|
||||
case mpeerData of
|
||||
Nothing -> do
|
||||
-- insertPeerAsymmKey brains peer pk symmk
|
||||
pure ()
|
||||
Just peerData ->
|
||||
insertPeerAsymmKey' brains (show peerData) pk symmk
|
||||
|
||||
}
|
||||
|
||||
env <- ask
|
||||
|
|
Loading…
Reference in New Issue