From 0ff7087fde825a595d5e57454384e351070c9a01 Mon Sep 17 00:00:00 2001 From: sim Date: Fri, 31 Oct 2025 09:41:23 +0100 Subject: [PATCH 1/2] Add function to verify saved ntf token, with unencrypted code --- src/Simplex/Messaging/Agent.hs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/Simplex/Messaging/Agent.hs b/src/Simplex/Messaging/Agent.hs index c19d4aeea..8099fb7ce 100644 --- a/src/Simplex/Messaging/Agent.hs +++ b/src/Simplex/Messaging/Agent.hs @@ -102,6 +102,7 @@ module Simplex.Messaging.Agent reconnectSMPServer, registerNtfToken, verifyNtfToken, + verifySavedNtfToken, checkNtfToken, deleteNtfToken, getNtfToken, @@ -628,6 +629,11 @@ verifyNtfToken :: AgentClient -> NetworkRequestMode -> DeviceToken -> C.CbNonce verifyNtfToken c = withAgentEnv c .:: verifyNtfToken' c {-# INLINE verifyNtfToken #-} +-- | Verify saved device notifications token +verifySavedNtfToken :: AgentClient -> NetworkRequestMode -> ByteString -> AE () +verifySavedNtfToken c = withAgentEnv c .: verifySavedNtfToken' c +{-# INLINE verifySavedNtfToken #-} + checkNtfToken :: AgentClient -> NetworkRequestMode -> DeviceToken -> AE NtfTknStatus checkNtfToken c = withAgentEnv c .: checkNtfToken' c {-# INLINE checkNtfToken #-} @@ -2544,6 +2550,19 @@ verifyNtfToken' c nm deviceToken nonce code = when (ntfMode == NMInstant) $ initializeNtfSubs c _ -> throwE $ CMD PROHIBITED "verifyNtfToken: no token" +verifySavedNtfToken' :: AgentClient -> NetworkRequestMode -> ByteString -> AM () +verifySavedNtfToken' c nm code = + withStore' c getSavedNtfToken >>= \case + Just tkn@NtfToken {ntfTokenId = Just tknId, ntfMode} -> do + let code' = NtfRegCode code + toStatus <- + withToken c nm tkn (Just (NTConfirmed, NTAVerify code')) (NTActive, Just NTACheck) $ + agentNtfVerifyToken c nm tknId tkn code' + when (toStatus == NTActive) $ do + lift $ setCronInterval c nm tknId tkn + when (ntfMode == NMInstant) $ initializeNtfSubs c + _ -> throwE $ CMD PROHIBITED "verifySavedNtfToken: no token" + setCronInterval :: AgentClient -> NetworkRequestMode -> NtfTokenId -> NtfToken -> AM' () setCronInterval c nm tknId tkn = do cron <- asks $ ntfCron . config From 472efa4764bf98bde5187a8c546316027bfa8c9d Mon Sep 17 00:00:00 2001 From: sim Date: Fri, 31 Oct 2025 09:48:44 +0100 Subject: [PATCH 2/2] Add function to delete saved ntf token --- src/Simplex/Messaging/Agent.hs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Simplex/Messaging/Agent.hs b/src/Simplex/Messaging/Agent.hs index 8099fb7ce..8a4428763 100644 --- a/src/Simplex/Messaging/Agent.hs +++ b/src/Simplex/Messaging/Agent.hs @@ -105,6 +105,7 @@ module Simplex.Messaging.Agent verifySavedNtfToken, checkNtfToken, deleteNtfToken, + deleteSavedNtfToken, getNtfToken, getNtfTokenData, toggleConnectionNtfs, @@ -642,6 +643,10 @@ deleteNtfToken :: AgentClient -> DeviceToken -> AE () deleteNtfToken c = withAgentEnv c . deleteNtfToken' c {-# INLINE deleteNtfToken #-} +deleteSavedNtfToken :: AgentClient -> AE () +deleteSavedNtfToken c = withAgentEnv c $ deleteSavedNtfToken' c +{-# INLINE deleteSavedNtfToken #-} + getNtfToken :: AgentClient -> AE (DeviceToken, NtfTknStatus, NotificationsMode, NtfServer) getNtfToken c = withAgentEnv c $ getNtfToken' c {-# INLINE getNtfToken #-} @@ -2591,6 +2596,15 @@ deleteNtfToken' c deviceToken = deleteNtfSubs c NSCSmpDelete _ -> throwE $ CMD PROHIBITED "deleteNtfToken: no token" + +deleteSavedNtfToken' :: AgentClient -> AM () +deleteSavedNtfToken' c = + withStore' c getSavedNtfToken >>= \case + Just tkn -> do + deleteToken c tkn + deleteNtfSubs c NSCSmpDelete + _ -> throwE $ CMD PROHIBITED "deleteSavedNtfToken: no token" + getNtfToken' :: AgentClient -> AM (DeviceToken, NtfTknStatus, NotificationsMode, NtfServer) getNtfToken' c = withStore' c getSavedNtfToken >>= \case