Skip to content

Commit 656f290

Browse files
authored
agent: fix updating short invitation link data (#1566)
1 parent 643c3c3 commit 656f290

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

src/Simplex/Messaging/Agent.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,7 @@ setConnShortLink' c connId cMode userData clientData =
859859
Just ShortLinkCreds {shortLinkId, shortLinkKey, linkPrivSigKey, linkEncFixedData} -> do
860860
let (linkId, k) = SL.contactShortLinkKdf shortLinkKey
861861
unless (shortLinkId == linkId) $ throwE $ INTERNAL "setConnShortLink: link ID is not derived from link"
862-
d <- liftError id $ SL.encryptUserData g k $ SL.encodeSignUserData linkPrivSigKey smpAgentVRange userData
862+
d <- liftError id $ SL.encryptUserData g k $ SL.encodeSignUserData SCMContact linkPrivSigKey smpAgentVRange userData
863863
pure (rq, linkId, cslContact shortLinkKey, (linkEncFixedData, d))
864864
Nothing -> do
865865
sigKeys@(_, privSigKey) <- atomically $ C.generateKeyPair @'C.Ed25519 g
@@ -877,7 +877,7 @@ setConnShortLink' c connId cMode userData clientData =
877877
g <- asks random
878878
AgentConfig {smpAgentVRange} <- asks config
879879
let k = SL.invShortLinkKdf shortLinkKey
880-
d <- liftError id $ SL.encryptUserData g k $ SL.encodeSignUserData linkPrivSigKey smpAgentVRange userData
880+
d <- liftError id $ SL.encryptUserData g k $ SL.encodeSignUserData SCMInvitation linkPrivSigKey smpAgentVRange userData
881881
let sl = CSLInvitation SLSServer (qServer rq) shortLinkId shortLinkKey
882882
pure (rq, shortLinkId, sl, (linkEncFixedData, d))
883883
Nothing -> throwE $ CMD PROHIBITED "setConnShortLink: no ShortLinkCreds in invitation"

src/Simplex/Messaging/Crypto/ShortLink.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ encodeSignLinkData (rootKey, pk) agentVRange connReq userData =
5454
md = smpEncode $ connLinkData @c agentVRange userData
5555
in (LinkKey (C.sha3_256 fd), (encodeSign pk fd, encodeSign pk md))
5656

57-
encodeSignUserData :: C.PrivateKeyEd25519 -> VersionRangeSMPA -> ConnInfo -> ByteString
58-
encodeSignUserData pk agentVRange userData =
59-
encodeSign pk $ smpEncode $ connLinkData @'CMContact agentVRange userData
57+
encodeSignUserData :: forall c. ConnectionModeI c => SConnectionMode c -> C.PrivateKeyEd25519 -> VersionRangeSMPA -> ConnInfo -> ByteString
58+
encodeSignUserData _ pk agentVRange userData =
59+
encodeSign pk $ smpEncode $ connLinkData @c agentVRange userData
6060

6161
connLinkData :: forall c. ConnectionModeI c => VersionRangeSMPA -> ConnInfo -> ConnLinkData c
6262
connLinkData agentVRange userData = case sConnectionMode @c of

tests/AgentTests/ShortLinkTests.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import AgentTests.ConnectionRequestTests (contactConnRequest, invConnRequest)
88
import AgentTests.EqInstances ()
99
import Control.Concurrent.STM
1010
import Control.Monad.Except
11-
import Simplex.Messaging.Agent.Protocol (AgentErrorType (..), ConnectionMode (..), LinkKey (..), SMPAgentError (..), linkUserData, supportedSMPAgentVRange)
11+
import Simplex.Messaging.Agent.Protocol (AgentErrorType (..), ConnectionMode (..), LinkKey (..), SConnectionMode (..), SMPAgentError (..), linkUserData, supportedSMPAgentVRange)
1212
import qualified Simplex.Messaging.Crypto as C
1313
import qualified Simplex.Messaging.Crypto.ShortLink as SL
1414
import Test.Hspec hiding (fit, it)
@@ -79,7 +79,7 @@ testUpdateContactShortLink = do
7979
Right (fd, _ud) <- runExceptT $ SL.encryptLinkData g k linkData
8080
-- encrypt updated user data
8181
let updatedUserData = "updated user data"
82-
signed = SL.encodeSignUserData (snd sigKeys) supportedSMPAgentVRange updatedUserData
82+
signed = SL.encodeSignUserData SCMContact (snd sigKeys) supportedSMPAgentVRange updatedUserData
8383
Right ud' <- runExceptT $ SL.encryptUserData g k signed
8484
-- decrypt
8585
Right (connReq, connData') <- pure $ SL.decryptLinkData linkKey k (fd, ud')
@@ -114,7 +114,7 @@ testContactShortLinkBadSignature = do
114114
let updatedUserData = "updated user data"
115115
-- another signature key
116116
(_, pk) <- atomically $ C.generateKeyPair @'C.Ed25519 g
117-
let signed = SL.encodeSignUserData pk supportedSMPAgentVRange updatedUserData
117+
let signed = SL.encodeSignUserData SCMContact pk supportedSMPAgentVRange updatedUserData
118118
Right ud' <- runExceptT $ SL.encryptUserData g k signed
119119
-- decryption fails
120120
SL.decryptLinkData @'CMContact linkKey k (fd, ud')

0 commit comments

Comments
 (0)