@sudoplatform/sudo-secure-communications 5.1.3 → 5.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/cjs/private/data/messaging/matrixMessagingService.js +6 -1
  2. package/cjs/private/data/messaging/matrixMessagingService.js.map +1 -1
  3. package/cjs/private/data/session/sessionManager.js +167 -66
  4. package/cjs/private/data/session/sessionManager.js.map +1 -1
  5. package/cjs/public/secureCommsClient.js +1 -1
  6. package/cjs/public/secureCommsClient.js.map +1 -1
  7. package/docs/assets/hierarchy.js +1 -1
  8. package/docs/assets/search.js +1 -1
  9. package/docs/classes/DefaultSecureCommsClient.html +15 -15
  10. package/docs/hierarchy.html +1 -1
  11. package/docs/interfaces/Audio.html +1 -1
  12. package/docs/interfaces/AudioMedia.html +1 -1
  13. package/docs/interfaces/BaseMessageContent.html +1 -1
  14. package/docs/interfaces/ChannelInvite.html +1 -1
  15. package/docs/interfaces/ChannelMember.html +1 -1
  16. package/docs/interfaces/DirectChatInvite.html +1 -1
  17. package/docs/interfaces/Emote.html +1 -1
  18. package/docs/interfaces/EncryptedMessage.html +1 -1
  19. package/docs/interfaces/File.html +1 -1
  20. package/docs/interfaces/FileMedia.html +1 -1
  21. package/docs/interfaces/GroupInvite.html +1 -1
  22. package/docs/interfaces/GroupMember.html +1 -1
  23. package/docs/interfaces/Handle.html +1 -1
  24. package/docs/interfaces/Image.html +1 -1
  25. package/docs/interfaces/ImageMedia.html +1 -1
  26. package/docs/interfaces/Invite.html +1 -1
  27. package/docs/interfaces/KeyVerificationRequest.html +1 -1
  28. package/docs/interfaces/Location.html +1 -1
  29. package/docs/interfaces/Member.html +1 -1
  30. package/docs/interfaces/MembershipChange.html +1 -1
  31. package/docs/interfaces/MessageNotification.html +1 -1
  32. package/docs/interfaces/Notice.html +1 -1
  33. package/docs/interfaces/NotificationInfo.html +1 -1
  34. package/docs/interfaces/OwnedHandle.html +1 -1
  35. package/docs/interfaces/Poll.html +1 -1
  36. package/docs/interfaces/PollResponse.html +1 -1
  37. package/docs/interfaces/RedactedMessage.html +1 -1
  38. package/docs/interfaces/SelfDestructedMessage.html +1 -1
  39. package/docs/interfaces/Text.html +1 -1
  40. package/docs/interfaces/Video.html +1 -1
  41. package/docs/interfaces/VideoMedia.html +1 -1
  42. package/docs/types/SecureCommsClientOptions.html +5 -3
  43. package/lib/private/data/messaging/matrixMessagingService.js +6 -1
  44. package/lib/private/data/messaging/matrixMessagingService.js.map +1 -1
  45. package/lib/private/data/session/sessionManager.js +167 -66
  46. package/lib/private/data/session/sessionManager.js.map +1 -1
  47. package/lib/public/secureCommsClient.js +1 -1
  48. package/lib/public/secureCommsClient.js.map +1 -1
  49. package/package.json +19 -10
  50. package/types/private/data/session/sessionManager.d.ts +14 -1
  51. package/types/public/secureCommsClient.d.ts +2 -0
@@ -10,15 +10,20 @@ import { HandleId } from '../../../public';
10
10
  import { delay } from '../../util/delay';
11
11
  import { MatrixClientManager } from '../common/matrixClientManager';
12
12
  export class SessionManager {
13
- constructor(sessionService, storageModule) {
13
+ constructor(sessionService, storageModule, autoRefreshTokenMinutesBeforeExpiration) {
14
14
  this.sessionService = sessionService;
15
15
  this.storageModule = storageModule;
16
+ this.autoRefreshTokenMinutesBeforeExpiration = autoRefreshTokenMinutesBeforeExpiration;
16
17
  this.sessions = {};
17
18
  this.log = new DefaultLogger(this.constructor.name);
18
19
  }
19
20
  async deleteSession(handleId, deleteStorage = false) {
20
21
  const session = this.sessions[handleId.toString()];
21
22
  if (session) {
23
+ // Clear any scheduled token refresh
24
+ if (session.refreshTimeout) {
25
+ clearTimeout(session.refreshTimeout);
26
+ }
22
27
  // stop syncing matrix client
23
28
  await session.matrixClient.stopSyncing();
24
29
  // Flush any still existing background watchers
@@ -53,88 +58,184 @@ export class SessionManager {
53
58
  }
54
59
  // MARK: Access Tokens
55
60
  async ensureValidSession(handleId, storePassphrase) {
56
- // check if we have a cached session for this handleId
57
61
  const cachedSession = this.sessions[handleId.toString()];
58
62
  const newStorePassphrase = cachedSession?.storePassphrase ?? storePassphrase ?? undefined;
59
- let deviceId;
63
+ // Try to use cached session if valid
60
64
  if (cachedSession) {
61
- const decoded = JWT.decode(cachedSession.accessToken);
62
- deviceId = decoded.device_id;
63
- const expiry = parseInt(decoded.exp, 10);
64
- const now = Math.floor(Date.now() / 1000);
65
- const isExpiredOrExpiringSoon = expiry - now <= 300; // Check if the token has expired or will expire in 300 seconds
66
- if (!isExpiredOrExpiringSoon &&
67
- cachedSession.matrixClient.isUsingToken(cachedSession.accessToken)) {
68
- return cachedSession.accessToken;
69
- }
70
- // token is expired or different than matrix token. Refresh
71
- try {
72
- const newSession = await this.sessionService.get({
73
- handleId: handleId.toString(),
74
- deviceId: deviceId ?? v4(),
75
- });
76
- const newToken = newSession.token;
77
- // update matrix client and session with new token
78
- cachedSession.matrixClient.updateAccessToken(newToken);
79
- this.sessions[handleId.toString()] = {
80
- accessToken: newToken,
81
- storePassphrase: newStorePassphrase,
82
- matrixClient: cachedSession.matrixClient,
83
- };
84
- // store session for future reloads
85
- const handleStorage = await this.storageModule.useHandleStorage(handleId.toString(), newStorePassphrase);
86
- await handleStorage?.secureCommsStore.sessionAPIs.saveAccessToken(newToken);
87
- return newToken;
65
+ const validAccessToken = await this.tryUseCachedSession(handleId, cachedSession, newStorePassphrase);
66
+ if (validAccessToken) {
67
+ return validAccessToken;
88
68
  }
89
- catch {
90
- // if refresh fails. clean up defunct matrix client and remove cached session
91
- await cachedSession.matrixClient.stopSyncing();
92
- delete this.sessions[handleId.toString()];
69
+ }
70
+ // Create new session from storage or fresh token
71
+ return await this.createNewSession(handleId, newStorePassphrase);
72
+ }
73
+ decodeToken(token) {
74
+ const decoded = JWT.decode(token);
75
+ if (!decoded || !decoded.exp || !decoded.device_id) {
76
+ throw new Error('Invalid token');
77
+ }
78
+ const expiry = parseInt(decoded.exp, 10);
79
+ const deviceId = decoded.device_id;
80
+ return { decoded, expiry, deviceId };
81
+ }
82
+ isTokenExpired(expiry) {
83
+ const now = Math.floor(Date.now() / 1000);
84
+ return expiry - now <= 0;
85
+ }
86
+ isTokenExpiringSoon(expiry) {
87
+ const now = Math.floor(Date.now() / 1000);
88
+ const refreshThresholdSeconds = this.autoRefreshTokenMinutesBeforeExpiration * 60;
89
+ const timeUntilExpiry = expiry - now;
90
+ return timeUntilExpiry > 0 && timeUntilExpiry <= refreshThresholdSeconds;
91
+ }
92
+ isTokenExpiredOrExpiringSoon(expiry) {
93
+ return this.isTokenExpired(expiry) || this.isTokenExpiringSoon(expiry);
94
+ }
95
+ scheduleTokenRefresh(handleId, expiry, storePassphrase) {
96
+ const now = Math.floor(Date.now() / 1000);
97
+ const timeUntilExpiry = expiry - now;
98
+ const refreshThresholdSeconds = this.autoRefreshTokenMinutesBeforeExpiration * 60;
99
+ const timeBeforeExpiryToSchedule = timeUntilExpiry - refreshThresholdSeconds;
100
+ // Only schedule refresh if auto-refresh is enabled and there's enough time until expiry
101
+ // If auto-refresh is disabled (0) or less than the threshold, the token will not be auto refreshed.
102
+ if (this.autoRefreshTokenMinutesBeforeExpiration > 0 &&
103
+ timeBeforeExpiryToSchedule > 0) {
104
+ return setTimeout(async () => {
105
+ try {
106
+ await this.ensureValidSession(handleId, storePassphrase);
107
+ }
108
+ catch (error) {
109
+ this.log.error(`Failed to refresh token for handle ${handleId.toString()}`, { err: error });
110
+ }
111
+ }, timeBeforeExpiryToSchedule * 1000);
112
+ }
113
+ return undefined;
114
+ }
115
+ // Test if the cached session is still valid.
116
+ // Returns access token if it is still valid or can be refreshed.
117
+ // Returns undefined if the token is expired or cannot be refreshed.
118
+ async tryUseCachedSession(handleId, cachedSession, storePassphrase) {
119
+ const { expiry, deviceId } = this.decodeToken(cachedSession.accessToken);
120
+ if (!this.isTokenExpiredOrExpiringSoon(expiry) &&
121
+ cachedSession.matrixClient.isUsingToken(cachedSession.accessToken)) {
122
+ return cachedSession.accessToken;
123
+ }
124
+ if (this.isTokenExpired(expiry)) {
125
+ return await this.handleExpiredToken(handleId);
126
+ }
127
+ return await this.refreshCachedSessionToken(handleId, cachedSession, deviceId, storePassphrase);
128
+ }
129
+ async handleExpiredToken(handleId) {
130
+ this.log.debug(`Token expired for handle ${handleId.toString()}, cleaned up session`);
131
+ // Stop syncing the matrix client since token is expired
132
+ await this.deleteSession(handleId);
133
+ return undefined;
134
+ }
135
+ async refreshCachedSessionToken(handleId, cachedSession, deviceId, storePassphrase) {
136
+ try {
137
+ const newSession = await this.getAccessTokenFromService(handleId, deviceId);
138
+ const newToken = newSession.token;
139
+ const { expiry: newExpiry } = this.decodeToken(newToken);
140
+ // Schedule new refresh timeout
141
+ if (cachedSession.refreshTimeout) {
142
+ clearTimeout(cachedSession.refreshTimeout);
93
143
  }
144
+ const refreshTimeout = this.scheduleTokenRefresh(handleId, newExpiry, storePassphrase);
145
+ // Update matrix client and session with new token
146
+ cachedSession.matrixClient.updateAccessToken(newToken);
147
+ this.sessions[handleId.toString()] = {
148
+ accessToken: newToken,
149
+ storePassphrase: storePassphrase,
150
+ matrixClient: cachedSession.matrixClient,
151
+ refreshTimeout,
152
+ };
153
+ // Store session for future reloads
154
+ const handleStorage = await this.storageModule.useHandleStorage(handleId.toString(), storePassphrase);
155
+ await handleStorage?.secureCommsStore.sessionAPIs.saveAccessToken(newToken);
156
+ return newToken;
157
+ }
158
+ catch (error) {
159
+ // If refresh fails, clean up defunct matrix client and remove cached session
160
+ this.log.error(`Failed to refresh token for handle ${handleId.toString()}: ${error}`);
161
+ await this.deleteSession(handleId);
162
+ return undefined;
94
163
  }
95
- // useHandleStorage will initialize the handle storage if it is not already initialized.
96
- const handleStorage = await this.storageModule.useHandleStorage(handleId.toString(), newStorePassphrase);
97
- let accessToken;
98
- // Retrieve access token from store if cached session does not exist
164
+ }
165
+ async getAccessTokenFromStorage(handleStorage) {
99
166
  const storedAccessToken = await handleStorage?.secureCommsStore.sessionAPIs.getAccessToken();
100
- if (storedAccessToken) {
101
- const decoded = JWT.decode(storedAccessToken);
102
- deviceId = decoded.device_id;
103
- const expiry = parseInt(decoded.exp, 10);
104
- const now = Math.floor(Date.now() / 1000);
105
- const isExpiredOrExpiringSoon = expiry - now <= 300; // Check if the token has expired or will expire in 300 seconds
106
- if (!isExpiredOrExpiringSoon) {
107
- accessToken = storedAccessToken;
108
- }
109
- else {
110
- // get new access token
111
- accessToken = (await this.sessionService.get({
112
- handleId: handleId.toString(),
113
- deviceId: deviceId ?? v4(),
114
- })).token;
115
- }
167
+ if (!storedAccessToken) {
168
+ return undefined;
116
169
  }
117
- else {
118
- // get new access token
119
- accessToken = (await this.sessionService.get({
120
- handleId: handleId.toString(),
121
- deviceId: deviceId ?? v4(),
122
- })).token;
170
+ // Parse token once to check validity
171
+ const { expiry, deviceId } = this.decodeToken(storedAccessToken);
172
+ // If token is still valid (not expired and not expiring soon), use it
173
+ if (!this.isTokenExpired(expiry) && !this.isTokenExpiringSoon(expiry)) {
174
+ return {
175
+ token: storedAccessToken,
176
+ deviceId,
177
+ isValid: true,
178
+ };
123
179
  }
180
+ // Token is expired or expiring soon, return it with isValid: false
181
+ return {
182
+ token: storedAccessToken,
183
+ deviceId,
184
+ isValid: false,
185
+ };
186
+ }
187
+ async getAccessTokenFromService(handleId, deviceId) {
188
+ const newSession = await this.sessionService.get({
189
+ handleId: handleId.toString(),
190
+ deviceId: deviceId ?? v4(),
191
+ });
192
+ // Parse new token to get deviceId (in case deviceId wasn't provided)
193
+ const { deviceId: tokenDeviceId } = this.decodeToken(newSession.token);
194
+ return {
195
+ token: newSession.token,
196
+ deviceId: deviceId ?? tokenDeviceId,
197
+ };
198
+ }
199
+ async getAccessTokenFromStorageOrService(handleId, handleStorage) {
200
+ // Try to get token from storage first
201
+ const storedToken = await this.getAccessTokenFromStorage(handleStorage);
202
+ if (storedToken?.isValid) {
203
+ return {
204
+ token: storedToken.token,
205
+ deviceId: storedToken.deviceId,
206
+ };
207
+ }
208
+ // Token not in storage or invalid, get from service
209
+ // Use deviceId from invalid stored token if available
210
+ const deviceId = storedToken?.deviceId;
211
+ const serviceToken = await this.getAccessTokenFromService(handleId, deviceId);
212
+ return {
213
+ token: serviceToken.token,
214
+ deviceId: serviceToken.deviceId,
215
+ };
216
+ }
217
+ async createNewSession(handleId, storePassphrase) {
218
+ // useHandleStorage will initialize the handle storage if it is not already initialized
219
+ const handleStorage = await this.storageModule.useHandleStorage(handleId.toString(), storePassphrase);
220
+ // Get access token from storage or service
221
+ const { token: accessToken } = await this.getAccessTokenFromStorageOrService(handleId, handleStorage);
222
+ // Parse token once for both matrix client creation and refresh scheduling
223
+ const { decoded, expiry } = this.decodeToken(accessToken);
124
224
  // Create a new matrix client
125
- const matrixClient = await this.createMatrixClient(handleId.toString(), accessToken, newStorePassphrase, // still pass this in - it will be used by RustCrypto.
126
- handleStorage);
225
+ const matrixClient = await this.createMatrixClient(handleId.toString(), accessToken, decoded, storePassphrase, handleStorage);
226
+ // Schedule token refresh before expiry
227
+ const refreshTimeout = this.scheduleTokenRefresh(handleId, expiry, storePassphrase);
228
+ // Store session
127
229
  this.sessions[handleId.toString()] = {
128
230
  accessToken: accessToken,
129
- storePassphrase: newStorePassphrase,
231
+ storePassphrase: storePassphrase,
130
232
  matrixClient,
233
+ refreshTimeout,
131
234
  };
132
- // store session for future reloads
133
235
  await handleStorage?.secureCommsStore.sessionAPIs.saveAccessToken(accessToken);
134
236
  return accessToken;
135
237
  }
136
- async createMatrixClient(handleId, token, storePassphrase, handleStorage) {
137
- const decoded = JWT.decode(token);
238
+ async createMatrixClient(handleId, token, decoded, storePassphrase, handleStorage) {
138
239
  const client = new MatrixClientManager(token, decoded, handleStorage);
139
240
  if (typeof indexedDB !== 'undefined') {
140
241
  // use indexedDB if available (i.e., in browser or Node with polyfill)
@@ -1 +1 @@
1
- {"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../../src/private/data/session/sessionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../../src/private/data/session/sessionManager.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@ export class DefaultSecureCommsClient {
36
36
  this.keyManager =
37
37
  opts.sudoKeyManager ?? new DefaultSudoKeyManager(this.sudoCryptoProvider);
38
38
  this.sessionService = new DefaultSessionService(this.apiClient);
39
- this.sessionManager = new SessionManager(this.sessionService, this.storage);
39
+ this.sessionManager = new SessionManager(this.sessionService, this.storage, opts.autoRefreshTokenMinutesBeforeExpiration ?? 5);
40
40
  this.mediaCredentialService = new DefaultMediaCredentialService(this.apiClient);
41
41
  this.mediaCredentialManager = new MediaCredentialManager(this.userClient, this.mediaCredentialService, this.identityServiceConfig, this.secureCommsServiceConfig);
42
42
  this.handles = new DefaultHandlesModule(this.apiClient, this.sessionManager);
@@ -1 +1 @@
1
- {"version":3,"file":"secureCommsClient.js","sourceRoot":"","sources":["../../src/public/secureCommsClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secureCommsClient.js","sourceRoot":"","sources":["../../src/public/secureCommsClient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudoplatform/sudo-secure-communications",
3
- "version": "5.1.3",
3
+ "version": "5.1.5",
4
4
  "author": "Anonyome Labs, Inc.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -65,15 +65,14 @@
65
65
  "@sudoplatform/sudo-user": "^16.0.0"
66
66
  },
67
67
  "dependencies": {
68
- "@aws-sdk/client-s3": "^3.369.0",
69
- "@aws-sdk/credential-provider-cognito-identity": "^3.369.0",
70
- "@aws-sdk/credential-providers": "^3.369.0",
71
- "@aws-sdk/lib-storage": "^3.369.0",
68
+ "@aws-sdk/client-s3": "^3.965.0",
69
+ "@aws-sdk/credential-provider-cognito-identity": "^3.965.0",
70
+ "@aws-sdk/credential-providers": "^3.965.0",
71
+ "@aws-sdk/lib-storage": "^3.965.0",
72
72
  "@matrix-org/matrix-sdk-crypto-wasm": "15.3.0",
73
73
  "@sudoplatform/sudo-web-crypto-provider": "^10.0.1",
74
74
  "@types/md5": "^2.3.6",
75
75
  "async-mutex": "^0.5.0",
76
- "aws-sdk": "^2.1412.0",
77
76
  "blurhash": "^2.0.5",
78
77
  "fflate": "^0.8.2",
79
78
  "fp-ts": "^2.16.11",
@@ -165,10 +164,20 @@
165
164
  },
166
165
  "packageManager": "yarn@4.12.0+sha512.f45ab632439a67f8bc759bf32ead036a1f413287b9042726b7cc4818b7b49e14e9423ba49b18f9e06ea4941c1ad062385b1d8760a8d5091a1a31e5f6219afca8",
167
166
  "auditSuppressions": {
168
- "1109754": {
169
- "until": 1765917031,
170
- "untilISO": "2025-12-16T20:30:31Z",
171
- "reason": "awaiting patch from js-yaml"
167
+ "1111987": {
168
+ "until": 1772203020,
169
+ "untilISO": "2026-2-28T00:37:00Z",
170
+ "reason": "Waiting for patch - @smithy/config-resolver"
171
+ },
172
+ "1112255": {
173
+ "until": 1772203020,
174
+ "untilISO": "2026-2-28T00:37:00Z",
175
+ "reason": "node-tar used by bufferutil by websocket"
176
+ },
177
+ "1112329": {
178
+ "until": 1772203020,
179
+ "untilISO": "2026-2-28T00:37:00Z",
180
+ "reason": "node-tar used by bufferutil by websocket"
172
181
  }
173
182
  }
174
183
  }
@@ -4,12 +4,25 @@ import { MatrixClientManager } from '../common/matrixClientManager';
4
4
  export declare class SessionManager {
5
5
  private readonly sessionService;
6
6
  private readonly storageModule;
7
+ private readonly autoRefreshTokenMinutesBeforeExpiration;
7
8
  private readonly log;
8
9
  private readonly sessions;
9
- constructor(sessionService: SessionService, storageModule: StorageModule);
10
+ constructor(sessionService: SessionService, storageModule: StorageModule, autoRefreshTokenMinutesBeforeExpiration: number);
10
11
  deleteSession(handleId: HandleId, deleteStorage?: boolean): Promise<void>;
11
12
  reset(): Promise<void>;
12
13
  getMatrixClient(handleId: HandleId): Promise<MatrixClientManager>;
13
14
  ensureValidSession(handleId: HandleId, storePassphrase?: string): Promise<string>;
15
+ private decodeToken;
16
+ private isTokenExpired;
17
+ private isTokenExpiringSoon;
18
+ private isTokenExpiredOrExpiringSoon;
19
+ private scheduleTokenRefresh;
20
+ private tryUseCachedSession;
21
+ private handleExpiredToken;
22
+ private refreshCachedSessionToken;
23
+ private getAccessTokenFromStorage;
24
+ private getAccessTokenFromService;
25
+ private getAccessTokenFromStorageOrService;
26
+ private createNewSession;
14
27
  private createMatrixClient;
15
28
  }
@@ -111,6 +111,8 @@ export type SecureCommsClientOptions = {
111
111
  sudoKeyManager?: SudoKeyManager;
112
112
  /** StorageProviderFactory to use. Default is undefined, which will make the client use in-memory storage. */
113
113
  storageProviderFactory?: StorageProviderFactory;
114
+ /** AutoRefreshTokenMinutesBeforeExpiration to use. Default is 5 minutes. Set to 0 to disable automatic token refresh. */
115
+ autoRefreshTokenMinutesBeforeExpiration?: number;
114
116
  };
115
117
  export declare class DefaultSecureCommsClient implements SecureCommsClient {
116
118
  handles: HandlesModule;