@@ -824,23 +824,22 @@ smpClientHandshake c ks_ keyHash@(C.KeyHash kh) vRange proxyServer serviceKeys_
824824 serverKey <- getServerVerifyKey c
825825 (,certKey) <$> (C. x509ToPublic' =<< C. verifyX509 serverKey exact)
826826 let v = maxVersion vr
827+ serviceVersion ServiceCredentials {serviceRole} = if serviceRole == SRMessaging then rcvServiceSMPVersion else serviceCertsSMPVersion
827828 serviceKeys = case serviceKeys_ of
828- Just sks | v >= serviceCertsSMPVersion && certificateSent c -> Just sks
829+ Just sks | v >= serviceVersion ( fst sks) && certificateSent c -> Just sks
829830 _ -> Nothing
830- clientService = mkClientService v =<< serviceKeys
831+ clientService = mkClientService <$> serviceKeys
831832 hs = SMPClientHandshake {smpVersion = v, keyHash, authPubKey = fst <$> ks_, proxyServer, clientService}
832833 sendHandshake th hs
833834 service <- mapM getClientService serviceKeys
834835 liftIO $ smpTHandleClient th v vr (snd <$> ks_) ck_ proxyServer service
835836 Nothing -> throwE TEVersion
836837 where
837838 th@ THandle {params = THandleParams {sessionId}} = smpTHandle c
838- mkClientService :: VersionSMP -> (ServiceCredentials , C. KeyPairEd25519 ) -> Maybe SMPClientHandshakeService
839- mkClientService v (ServiceCredentials {serviceRole, serviceCreds, serviceSignKey}, (k, _))
840- | serviceRole == SRMessaging && v < rcvServiceSMPVersion = Nothing
841- | otherwise =
842- let sk = C. signX509 serviceSignKey $ C. publicToX509 k
843- in Just SMPClientHandshakeService {serviceRole, serviceCertKey = CertChainPubKey (fst serviceCreds) sk}
839+ mkClientService :: (ServiceCredentials , C. KeyPairEd25519 ) -> SMPClientHandshakeService
840+ mkClientService (ServiceCredentials {serviceRole, serviceCreds, serviceSignKey}, (k, _)) =
841+ let sk = C. signX509 serviceSignKey $ C. publicToX509 k
842+ in SMPClientHandshakeService {serviceRole, serviceCertKey = CertChainPubKey (fst serviceCreds) sk}
844843 getClientService :: (ServiceCredentials , C. KeyPairEd25519 ) -> ExceptT TransportError IO THClientService
845844 getClientService (ServiceCredentials {serviceRole, serviceCertHash}, (_, pk)) =
846845 getHandshake th >>= \ case
0 commit comments