mirror of https://github.com/voidlizard/hbs2
Change encryption handshake brains methods
This commit is contained in:
parent
792d627870
commit
dd9cbcd284
|
@ -605,63 +605,51 @@ transactional brains action = do
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
insertPeerAsymmKey :: forall e m .
|
insertPeerAsymmKey :: forall e m . (e ~ L4Proto, MonadIO m)
|
||||||
( e ~ L4Proto
|
|
||||||
, MonadIO m
|
|
||||||
)
|
|
||||||
=> BasicBrains e
|
=> BasicBrains e
|
||||||
-> Peer e
|
-> Peer e
|
||||||
-> Encrypt.PublicKey
|
-> Encrypt.PublicKey
|
||||||
-> m ()
|
|
||||||
|
|
||||||
insertPeerAsymmKey br peer hAsymmKey = do
|
|
||||||
let conn = view brainsDb br
|
|
||||||
void $ liftIO $ execute conn [qc|
|
|
||||||
INSERT INTO peer_asymmkey (peer,asymmkey)
|
|
||||||
VALUES (?,?)
|
|
||||||
ON CONFLICT (peer)
|
|
||||||
DO UPDATE SET
|
|
||||||
asymmkey = excluded.asymmkey
|
|
||||||
|
|
||||||
|] (show $ pretty peer, show hAsymmKey)
|
|
||||||
|
|
||||||
insertPeerSymmKey :: forall e m .
|
|
||||||
( e ~ L4Proto
|
|
||||||
, MonadIO m
|
|
||||||
)
|
|
||||||
=> BasicBrains e
|
|
||||||
-> Peer e
|
|
||||||
-> Encrypt.CombinedKey
|
-> Encrypt.CombinedKey
|
||||||
-> m ()
|
-> m ()
|
||||||
|
|
||||||
insertPeerSymmKey br peer hSymmKey = do
|
insertPeerAsymmKey br peer hAsymmKey hSymmKey = do
|
||||||
|
insertPeerAsymmKey br peer hAsymmKey hSymmKey
|
||||||
|
insertPeerAsymmKey' br (show $ pretty peer) hAsymmKey hSymmKey
|
||||||
|
|
||||||
|
insertPeerAsymmKey' :: forall e m . (e ~ L4Proto, MonadIO m)
|
||||||
|
=> BasicBrains e
|
||||||
|
-> String
|
||||||
|
-> Encrypt.PublicKey
|
||||||
|
-> Encrypt.CombinedKey
|
||||||
|
-> m ()
|
||||||
|
|
||||||
|
insertPeerAsymmKey' br key hAsymmKey hSymmKey = do
|
||||||
let conn = view brainsDb br
|
let conn = view brainsDb br
|
||||||
void $ liftIO $ execute conn [qc|
|
void $ liftIO $ execute conn [qc|
|
||||||
INSERT INTO peer_symmkey (peer,symmkey)
|
INSERT INTO peer_asymmkey (peer,asymmkey,symmkey)
|
||||||
VALUES (?,?)
|
VALUES (?,?,?)
|
||||||
ON CONFLICT (peer)
|
ON CONFLICT (peer)
|
||||||
DO UPDATE SET
|
DO UPDATE SET
|
||||||
symmkey = excluded.symmkey
|
asymmkey = excluded.asymmkey
|
||||||
|
, symmkey = excluded.symmkey
|
||||||
|
|] (key, show hAsymmKey, show hSymmKey)
|
||||||
|
|
||||||
|] (show $ pretty peer, show hSymmKey)
|
---
|
||||||
|
|
||||||
deletePeerAsymmKey :: forall e m . (e ~ L4Proto, MonadIO m)
|
deletePeerAsymmKey :: forall e m . (e ~ L4Proto, MonadIO m)
|
||||||
=> BasicBrains e -> Peer e -> m ()
|
=> BasicBrains e -> Peer e -> m ()
|
||||||
|
|
||||||
deletePeerAsymmKey br peer =
|
deletePeerAsymmKey br peer =
|
||||||
void $ liftIO $ execute (view brainsDb br) [qc|
|
deletePeerAsymmKey' br (show $ pretty peer)
|
||||||
DELETE FROM peer_symmkey
|
|
||||||
WHERE peer = ?
|
|
||||||
|] (Only (show $ pretty peer))
|
|
||||||
|
|
||||||
deletePeerSymmKey :: forall e m . (e ~ L4Proto, MonadIO m)
|
deletePeerAsymmKey' :: forall e m . (e ~ L4Proto, MonadIO m)
|
||||||
=> BasicBrains e -> Peer e -> m ()
|
=> BasicBrains e -> String -> m ()
|
||||||
|
|
||||||
deletePeerSymmKey br peer =
|
deletePeerAsymmKey' br key =
|
||||||
void $ liftIO $ execute (view brainsDb br) [qc|
|
void $ liftIO $ execute (view brainsDb br) [qc|
|
||||||
DELETE FROM peer_symmkey
|
DELETE FROM peer_asymmkey
|
||||||
WHERE peer = ?
|
WHERE peer = ?
|
||||||
|] (Only (show $ pretty peer))
|
|] (Only key)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -757,14 +745,6 @@ newBasicBrains cfg = liftIO do
|
||||||
create table if not exists peer_asymmkey
|
create table if not exists peer_asymmkey
|
||||||
( peer text not null
|
( peer text not null
|
||||||
, asymmkey text not null
|
, asymmkey text not null
|
||||||
, ts DATE DEFAULT (datetime('now','localtime'))
|
|
||||||
, primary key (peer)
|
|
||||||
)
|
|
||||||
|]
|
|
||||||
|
|
||||||
execute_ conn [qc|
|
|
||||||
create table if not exists peer_symmkey
|
|
||||||
( peer text not null
|
|
||||||
, symmkey text not null
|
, symmkey text not null
|
||||||
, ts DATE DEFAULT (datetime('now','localtime'))
|
, ts DATE DEFAULT (datetime('now','localtime'))
|
||||||
, primary key (peer)
|
, primary key (peer)
|
||||||
|
|
|
@ -654,14 +654,17 @@ runPeer opts = U.handle (\e -> myException e
|
||||||
{ encHandshake_considerPeerAsymmKey = \peer mpeerData -> \case
|
{ encHandshake_considerPeerAsymmKey = \peer mpeerData -> \case
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
deletePeerAsymmKey brains peer
|
deletePeerAsymmKey brains peer
|
||||||
deletePeerSymmKey brains peer
|
forM_ mpeerData \peerData ->
|
||||||
|
deletePeerAsymmKey' brains (show peerData)
|
||||||
Just pk -> do
|
Just pk -> do
|
||||||
-- emit PeerAsymmInfoKey (PeerAsymmPubKey peer pk)
|
-- emit PeerAsymmInfoKey (PeerAsymmPubKey peer pk)
|
||||||
insertPeerAsymmKey brains peer pk
|
let symmk = genCommonSecret @s
|
||||||
insertPeerSymmKey brains peer $
|
|
||||||
genCommonSecret @s
|
|
||||||
(privKeyFromKeypair @s (view envAsymmetricKeyPair penv))
|
(privKeyFromKeypair @s (view envAsymmetricKeyPair penv))
|
||||||
pk
|
pk
|
||||||
|
case mpeerData of
|
||||||
|
Nothing -> insertPeerAsymmKey brains peer pk symmk
|
||||||
|
Just peerData ->
|
||||||
|
insertPeerAsymmKey' brains (show peerData) pk symmk
|
||||||
}
|
}
|
||||||
|
|
||||||
env <- ask
|
env <- ask
|
||||||
|
|
Loading…
Reference in New Issue