@casual-simulation/aux-records 3.2.6 → 3.2.7-alpha.6226622763

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 (93) hide show
  1. package/AIController.d.ts +1 -1
  2. package/AIGenerateSkyboxInterface.d.ts +1 -1
  3. package/AuthController.d.ts +53 -1
  4. package/AuthController.js +117 -1
  5. package/AuthController.js.map +1 -1
  6. package/AuthMessenger.d.ts +1 -1
  7. package/AuthStore.d.ts +5 -1
  8. package/AuthUtils.d.ts +55 -1
  9. package/AuthUtils.js +130 -2
  10. package/AuthUtils.js.map +1 -1
  11. package/DataRecordsController.d.ts +1 -1
  12. package/DataRecordsStore.d.ts +1 -1
  13. package/EventRecordsController.d.ts +1 -1
  14. package/EventRecordsController.js.map +1 -1
  15. package/EventRecordsStore.d.ts +1 -1
  16. package/FileRecordsController.d.ts +1 -1
  17. package/FileRecordsStore.d.ts +2 -2
  18. package/LivekitEvents.d.ts +1 -1
  19. package/MemoryRateLimiter.js +1 -1
  20. package/MemoryRateLimiter.js.map +1 -1
  21. package/MemoryStore.d.ts +2 -2
  22. package/MemoryStore.js +2 -0
  23. package/MemoryStore.js.map +1 -1
  24. package/PolicyController.d.ts +1 -1
  25. package/PolicyController.js.map +1 -1
  26. package/PolicyPermissions.d.ts +212 -1
  27. package/PolicyPermissions.js +67 -0
  28. package/PolicyPermissions.js.map +1 -1
  29. package/PolicyStore.d.ts +1 -1
  30. package/RateLimitController.d.ts +3 -1
  31. package/RateLimitController.js +2 -0
  32. package/RateLimitController.js.map +1 -1
  33. package/RecordsController.d.ts +30 -2
  34. package/RecordsController.js +12 -8
  35. package/RecordsController.js.map +1 -1
  36. package/{RecordsHttpServer.d.ts → RecordsServer.d.ts} +34 -5
  37. package/{RecordsHttpServer.js → RecordsServer.js} +133 -6
  38. package/RecordsServer.js.map +1 -0
  39. package/RecordsStore.d.ts +12 -6
  40. package/SubscriptionConfiguration.d.ts +479 -74
  41. package/SubscriptionConfiguration.js +34 -1
  42. package/SubscriptionConfiguration.js.map +1 -1
  43. package/SubscriptionController.d.ts +1 -1
  44. package/TestUtils.d.ts +2 -0
  45. package/TestUtils.js +5 -0
  46. package/TestUtils.js.map +1 -1
  47. package/Utils.d.ts +0 -10
  48. package/Utils.js +0 -19
  49. package/Utils.js.map +1 -1
  50. package/index.d.ts +2 -1
  51. package/index.js +2 -1
  52. package/index.js.map +1 -1
  53. package/package.json +6 -3
  54. package/websockets/InstRecordsStore.d.ts +186 -0
  55. package/websockets/InstRecordsStore.js +2 -0
  56. package/websockets/InstRecordsStore.js.map +1 -0
  57. package/websockets/MemoryInstRecordsStore.d.ts +31 -0
  58. package/websockets/MemoryInstRecordsStore.js +310 -0
  59. package/websockets/MemoryInstRecordsStore.js.map +1 -0
  60. package/websockets/MemoryTempInstRecordsStore.d.ts +31 -0
  61. package/websockets/MemoryTempInstRecordsStore.js +169 -0
  62. package/websockets/MemoryTempInstRecordsStore.js.map +1 -0
  63. package/websockets/MemoryWebsocketConnectionStore.d.ts +33 -0
  64. package/websockets/MemoryWebsocketConnectionStore.js +169 -0
  65. package/websockets/MemoryWebsocketConnectionStore.js.map +1 -0
  66. package/websockets/MemoryWebsocketMessenger.d.ts +21 -0
  67. package/websockets/MemoryWebsocketMessenger.js +94 -0
  68. package/websockets/MemoryWebsocketMessenger.js.map +1 -0
  69. package/websockets/SplitInstRecordsStore.d.ts +21 -0
  70. package/websockets/SplitInstRecordsStore.js +186 -0
  71. package/websockets/SplitInstRecordsStore.js.map +1 -0
  72. package/websockets/TemporaryInstRecordsStore.d.ts +130 -0
  73. package/websockets/TemporaryInstRecordsStore.js +2 -0
  74. package/websockets/TemporaryInstRecordsStore.js.map +1 -0
  75. package/websockets/Utils.d.ts +16 -0
  76. package/websockets/Utils.js +26 -0
  77. package/websockets/Utils.js.map +1 -0
  78. package/websockets/WebsocketConnectionStore.d.ts +141 -0
  79. package/websockets/WebsocketConnectionStore.js +2 -0
  80. package/websockets/WebsocketConnectionStore.js.map +1 -0
  81. package/websockets/WebsocketController.d.ts +97 -0
  82. package/websockets/WebsocketController.js +707 -0
  83. package/websockets/WebsocketController.js.map +1 -0
  84. package/websockets/WebsocketMessenger.d.ts +42 -0
  85. package/websockets/WebsocketMessenger.js +2 -0
  86. package/websockets/WebsocketMessenger.js.map +1 -0
  87. package/websockets/index.d.ts +12 -0
  88. package/websockets/index.js +12 -0
  89. package/websockets/index.js.map +1 -0
  90. package/Errors.d.ts +0 -29
  91. package/Errors.js +0 -2
  92. package/Errors.js.map +0 -1
  93. package/RecordsHttpServer.js.map +0 -1
package/AIController.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { InvalidSubscriptionTierError, NotAuthorizedError, NotLoggedInError, NotSubscribedError, NotSupportedError, ServerError, SubscriptionLimitReached } from './Errors';
1
+ import { InvalidSubscriptionTierError, NotAuthorizedError, NotLoggedInError, NotSubscribedError, NotSupportedError, ServerError, SubscriptionLimitReached } from '@casual-simulation/aux-common/Errors';
2
2
  import { AIChatInterface, AIChatMessage } from './AIChatInterface';
3
3
  import { AIGenerateSkyboxInterface, AIGenerateSkyboxInterfaceBlockadeLabsOptions } from './AIGenerateSkyboxInterface';
4
4
  import { AIGeneratedImage, AIImageInterface } from './AIImageInterface';
@@ -1,4 +1,4 @@
1
- import { ServerError } from './Errors';
1
+ import { ServerError } from '@casual-simulation/aux-common/Errors';
2
2
  /**
3
3
  * Defines an interface that is able to send and receive AI chat messages.
4
4
  */
@@ -1,5 +1,5 @@
1
1
  import { AddressType, AuthStore, AuthUser } from './AuthStore';
2
- import { ServerError } from './Errors';
2
+ import { ServerError } from '@casual-simulation/aux-common/Errors';
3
3
  import { AuthMessenger } from './AuthMessenger';
4
4
  import { RegexRule } from './Utils';
5
5
  import { ConfigurationStore } from './ConfigurationStore';
@@ -35,6 +35,10 @@ export declare const MAX_LOGIN_REQUEST_ATTEMPTS = 5;
35
35
  * The error message that should be used for invalid_key error messages.
36
36
  */
37
37
  export declare const INVALID_KEY_ERROR_MESSAGE = "The session key is invalid.";
38
+ /**
39
+ * The error message that should be used for invalid_token error messages.
40
+ */
41
+ export declare const INVALID_TOKEN_ERROR_MESSAGE = "The connection token is invalid.";
38
42
  /**
39
43
  * The maximum allowed length for an email address.
40
44
  */
@@ -60,6 +64,7 @@ export declare class AuthController {
60
64
  private _validateAddress;
61
65
  completeLogin(request: CompleteLoginRequest): Promise<CompleteLoginResult>;
62
66
  validateSessionKey(key: string): Promise<ValidateSessionKeyResult>;
67
+ validateConnectionToken(token: string): Promise<ValidateConnectionTokenResult>;
63
68
  revokeSession(request: RevokeSessionRequest): Promise<RevokeSessionResult>;
64
69
  /**
65
70
  * Attempts to revoke all the sessions for the specified user.
@@ -178,6 +183,10 @@ export interface CompleteLoginSuccess {
178
183
  * The secret key that provides access for the session.
179
184
  */
180
185
  sessionKey: string;
186
+ /**
187
+ * The connection key that provides websocket access for the session.
188
+ */
189
+ connectionKey: string;
181
190
  /**
182
191
  * The unix timestamp in miliseconds that the session will expire at.
183
192
  */
@@ -215,6 +224,45 @@ export interface ValidateSessionKeyFailure {
215
224
  errorMessage: string;
216
225
  banReason?: AuthUser['banReason'];
217
226
  }
227
+ export type ValidateConnectionTokenResult = ValidateConnectionTokenSuccess | ValidateConnectionTokenFailure;
228
+ export interface ValidateConnectionTokenSuccess {
229
+ success: true;
230
+ /**
231
+ * The ID of the user that owns the connection token.
232
+ */
233
+ userId: string;
234
+ /**
235
+ * The ID of the session that the connection token is for.
236
+ */
237
+ sessionId: string;
238
+ /**
239
+ * The ID that the client wants for the connection.
240
+ */
241
+ connectionId: string;
242
+ /**
243
+ * The name of the record that the connection token was generated for.
244
+ */
245
+ recordName: string;
246
+ /**
247
+ * The instance that the connection token was generated for.
248
+ */
249
+ inst: string;
250
+ allSessionsRevokedTimeMs?: number;
251
+ /**
252
+ * The subscription ID for the user.
253
+ */
254
+ subscriptionTier?: string;
255
+ /**
256
+ * The ID of the subscription that the user is subscribed to.
257
+ */
258
+ subscriptionId?: string;
259
+ }
260
+ export interface ValidateConnectionTokenFailure {
261
+ success: false;
262
+ errorCode: 'unacceptable_connection_token' | 'invalid_token' | 'session_expired' | 'user_is_banned' | ServerError;
263
+ errorMessage: string;
264
+ banReason?: AuthUser['banReason'];
265
+ }
218
266
  export interface RevokeSessionRequest {
219
267
  /**
220
268
  * The ID of the user whose session should be revoked.
@@ -342,6 +390,10 @@ export interface ReplaceSessionSuccess {
342
390
  * The secret key that provides access for the session.
343
391
  */
344
392
  sessionKey: string;
393
+ /**
394
+ * The connection key that provides websocket access for the session.
395
+ */
396
+ connectionKey: string;
345
397
  /**
346
398
  * The unix timestamp in miliseconds that the session will expire at.
347
399
  */
package/AuthController.js CHANGED
@@ -12,7 +12,8 @@ import { randomBytes } from 'tweetnacl';
12
12
  import { hashHighEntropyPasswordWithSalt, hashPasswordWithSalt, verifyPasswordAgainstHashes, } from '@casual-simulation/crypto';
13
13
  import { fromByteArray } from 'base64-js';
14
14
  import { cleanupObject, isActiveSubscription, isStringValid, } from './Utils';
15
- import { formatV1SessionKey, parseSessionKey, randomCode, } from './AuthUtils';
15
+ import { formatV1ConnectionKey, formatV1SessionKey, parseSessionKey, randomCode, verifyConnectionToken, } from './AuthUtils';
16
+ import { parseConnectionToken } from '@casual-simulation/aux-common';
16
17
  /**
17
18
  * The number of miliseconds that a login request should be valid for before expiration.
18
19
  */
@@ -45,6 +46,10 @@ export const MAX_LOGIN_REQUEST_ATTEMPTS = 5;
45
46
  * The error message that should be used for invalid_key error messages.
46
47
  */
47
48
  export const INVALID_KEY_ERROR_MESSAGE = 'The session key is invalid.';
49
+ /**
50
+ * The error message that should be used for invalid_token error messages.
51
+ */
52
+ export const INVALID_TOKEN_ERROR_MESSAGE = 'The connection token is invalid.';
48
53
  /**
49
54
  * The maximum allowed length for an email address.
50
55
  */
@@ -330,6 +335,7 @@ export class AuthController {
330
335
  }
331
336
  const sessionId = fromByteArray(randomBytes(SESSION_ID_BYTE_LENGTH));
332
337
  const sessionSecret = fromByteArray(randomBytes(SESSION_SECRET_BYTE_LENGTH));
338
+ const connectionSecret = fromByteArray(randomBytes(SESSION_SECRET_BYTE_LENGTH));
333
339
  const now = Date.now();
334
340
  const session = {
335
341
  userId: loginRequest.userId,
@@ -338,6 +344,7 @@ export class AuthController {
338
344
  // sessionSecret and sessionId are high-entropy (128 bits of random data)
339
345
  // so we should use a hash that is optimized for high-entropy inputs.
340
346
  secretHash: hashHighEntropyPasswordWithSalt(sessionSecret, sessionId),
347
+ connectionSecret: connectionSecret,
341
348
  grantedTimeMs: now,
342
349
  revokeTimeMs: null,
343
350
  expireTimeMs: now + SESSION_LIFETIME_MS,
@@ -351,6 +358,7 @@ export class AuthController {
351
358
  success: true,
352
359
  userId: session.userId,
353
360
  sessionKey: formatV1SessionKey(loginRequest.userId, sessionId, sessionSecret, session.expireTimeMs),
361
+ connectionKey: formatV1ConnectionKey(loginRequest.userId, sessionId, connectionSecret, session.expireTimeMs),
354
362
  expireTimeMs: session.expireTimeMs,
355
363
  };
356
364
  }
@@ -468,6 +476,111 @@ export class AuthController {
468
476
  }
469
477
  });
470
478
  }
479
+ validateConnectionToken(token) {
480
+ return __awaiter(this, void 0, void 0, function* () {
481
+ if (typeof token !== 'string' || token === '') {
482
+ return {
483
+ success: false,
484
+ errorCode: 'unacceptable_connection_token',
485
+ errorMessage: 'The given connection token is invalid. It must be a correctly formatted string.',
486
+ };
487
+ }
488
+ try {
489
+ const tokenValues = parseConnectionToken(token);
490
+ if (!tokenValues) {
491
+ console.log('[AuthController] [validateConnectionToken] Could not parse token.');
492
+ return {
493
+ success: false,
494
+ errorCode: 'unacceptable_connection_token',
495
+ errorMessage: 'The given connection token is invalid. It must be a correctly formatted string.',
496
+ };
497
+ }
498
+ const [userId, sessionId, connectionId, recordName, inst, hash] = tokenValues;
499
+ const session = yield this._store.findSession(userId, sessionId);
500
+ if (!session) {
501
+ console.log('[AuthController] [validateConnectionToken] Could not find session.');
502
+ return {
503
+ success: false,
504
+ errorCode: 'invalid_token',
505
+ errorMessage: INVALID_TOKEN_ERROR_MESSAGE,
506
+ };
507
+ }
508
+ if (!verifyConnectionToken(token, session.connectionSecret)) {
509
+ console.log('[AuthController] [validateConnectionToken] Connection token was invalid.');
510
+ return {
511
+ success: false,
512
+ errorCode: 'invalid_token',
513
+ errorMessage: INVALID_TOKEN_ERROR_MESSAGE,
514
+ };
515
+ }
516
+ const now = Date.now();
517
+ if (session.revokeTimeMs && now >= session.revokeTimeMs) {
518
+ console.log('[AuthController] [validateConnectionToken] Session has been revoked.');
519
+ return {
520
+ success: false,
521
+ errorCode: 'invalid_token',
522
+ errorMessage: INVALID_TOKEN_ERROR_MESSAGE,
523
+ };
524
+ }
525
+ if (now >= session.expireTimeMs) {
526
+ console.log('[AuthController] [validateConnectionToken] Session has expired.');
527
+ return {
528
+ success: false,
529
+ errorCode: 'session_expired',
530
+ errorMessage: 'The session has expired.',
531
+ };
532
+ }
533
+ const userInfo = yield this._store.findUser(userId);
534
+ if (!userInfo) {
535
+ console.log('[AuthController] [validateConnectionToken] Unable to find user!');
536
+ return {
537
+ success: false,
538
+ errorCode: 'invalid_token',
539
+ errorMessage: INVALID_TOKEN_ERROR_MESSAGE,
540
+ };
541
+ }
542
+ else {
543
+ if (typeof userInfo.allSessionRevokeTimeMs === 'number') {
544
+ if (userInfo.allSessionRevokeTimeMs >= session.grantedTimeMs) {
545
+ return {
546
+ success: false,
547
+ errorCode: 'invalid_token',
548
+ errorMessage: INVALID_TOKEN_ERROR_MESSAGE,
549
+ };
550
+ }
551
+ }
552
+ if (userInfo.banTimeMs > 0) {
553
+ return {
554
+ success: false,
555
+ errorCode: 'user_is_banned',
556
+ errorMessage: 'The user has been banned.',
557
+ banReason: userInfo.banReason,
558
+ };
559
+ }
560
+ }
561
+ const { subscriptionId, subscriptionTier } = yield this._getSubscriptionInfo(userInfo);
562
+ return {
563
+ success: true,
564
+ userId: session.userId,
565
+ sessionId: session.sessionId,
566
+ connectionId: connectionId,
567
+ recordName: recordName,
568
+ inst: inst,
569
+ allSessionsRevokedTimeMs: userInfo.allSessionRevokeTimeMs,
570
+ subscriptionId: subscriptionId !== null && subscriptionId !== void 0 ? subscriptionId : undefined,
571
+ subscriptionTier: subscriptionTier !== null && subscriptionTier !== void 0 ? subscriptionTier : undefined,
572
+ };
573
+ }
574
+ catch (err) {
575
+ console.error('[AuthController] Error ocurred while validating a connection token', err);
576
+ return {
577
+ success: false,
578
+ errorCode: 'server_error',
579
+ errorMessage: 'A server error occurred.',
580
+ };
581
+ }
582
+ });
583
+ }
471
584
  revokeSession(request) {
472
585
  return __awaiter(this, void 0, void 0, function* () {
473
586
  if (typeof request.userId !== 'string' || request.userId === '') {
@@ -615,11 +728,13 @@ export class AuthController {
615
728
  const now = Date.now();
616
729
  const newSessionId = fromByteArray(randomBytes(SESSION_ID_BYTE_LENGTH));
617
730
  const newSessionSecret = fromByteArray(randomBytes(SESSION_SECRET_BYTE_LENGTH));
731
+ const newConnectionSecret = fromByteArray(randomBytes(SESSION_SECRET_BYTE_LENGTH));
618
732
  const newSession = {
619
733
  userId: userId,
620
734
  sessionId: newSessionId,
621
735
  requestId: null,
622
736
  secretHash: hashPasswordWithSalt(newSessionSecret, newSessionId),
737
+ connectionSecret: newConnectionSecret,
623
738
  grantedTimeMs: now,
624
739
  revokeTimeMs: null,
625
740
  expireTimeMs: now + SESSION_LIFETIME_MS,
@@ -641,6 +756,7 @@ export class AuthController {
641
756
  success: true,
642
757
  userId: userId,
643
758
  sessionKey: formatV1SessionKey(userId, newSessionId, newSessionSecret, newSession.expireTimeMs),
759
+ connectionKey: formatV1ConnectionKey(userId, newSessionId, newConnectionSecret, newSession.expireTimeMs),
644
760
  expireTimeMs: newSession.expireTimeMs,
645
761
  };
646
762
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AuthController.js","sourceRoot":"","sources":["AuthController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthController.js","sourceRoot":"","sources":["AuthController.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { AddressType } from './AuthStore';
2
- import { ServerError } from './Errors';
2
+ import { ServerError } from '@casual-simulation/aux-common/Errors';
3
3
  /**
4
4
  * Defines an interface for a service that is able to send messages to addresses for login requests.
5
5
  */
package/AuthStore.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { RegexRule } from './Utils';
2
- import { ServerError } from './Errors';
2
+ import { ServerError } from '@casual-simulation/aux-common/Errors';
3
3
  /**
4
4
  * Defines an interface that represents an auth store.
5
5
  */
@@ -271,6 +271,10 @@ export interface AuthSession {
271
271
  * The hash of the token that provides access to this session.
272
272
  */
273
273
  secretHash: string;
274
+ /**
275
+ * The secret of the token that provides connection access to this session.
276
+ */
277
+ connectionSecret: string;
274
278
  /**
275
279
  * The unix timestamp in miliseconds that the session was granted at.
276
280
  */
package/AuthUtils.d.ts CHANGED
@@ -15,7 +15,7 @@ export declare function randomCode(): string;
15
15
  */
16
16
  export declare function formatV1SessionKey(userId: string, sessionId: string, sessionSecret: string, expireTimeMs: number): string;
17
17
  /**
18
- * Parses the given session token into a user ID and session ID, and session secret array.
18
+ * Parses the given session key into a user ID and session ID, and session secret array.
19
19
  * Returns null if the key cannot be parsed.
20
20
  * @param key The key to parse.
21
21
  */
@@ -36,6 +36,36 @@ export declare function parseV1SessionKey(key: string): [
36
36
  sessionSecret: string,
37
37
  expireTimeMs: number
38
38
  ];
39
+ /**
40
+ * Formats the given user ID, session ID, connection secret, and expiration time into a key that is used to generate connection tokens.
41
+ * @param userId The ID of the user.
42
+ * @param sessionId The ID of the session.
43
+ * @param sessionSecret The secret for the connections.
44
+ * @param expireTimeMs The unix timestamp that the key expires at.
45
+ */
46
+ export declare function formatV1ConnectionKey(userId: string, sessionId: string, connectionSecret: string, expireTimeMs: number): string;
47
+ /**
48
+ * Parses the given connection key into a user ID and session ID, and connection secret array.
49
+ * Returns null if the key cannot be parsed.
50
+ * @param key The key to parse.
51
+ */
52
+ export declare function parseConnectionKey(key: string | null): [
53
+ userId: string,
54
+ sessionId: string,
55
+ connectionSecret: string,
56
+ expireTimeMs: number
57
+ ];
58
+ /**
59
+ * Parses a version 1 session key into a user ID, session ID, session secret, and expiration time.
60
+ * Returns null if the key cannot be parsed or if it is not a V1 key.
61
+ * @param key The key to parse.
62
+ */
63
+ export declare function parseV1ConnectionKey(key: string): [
64
+ userId: string,
65
+ sessionId: string,
66
+ connectionSecret: string,
67
+ expireTimeMs: number
68
+ ];
39
69
  /**
40
70
  * Formats the given OpenAI Key into a string that is detectable as an OpenAI Key.
41
71
  * @param apiKey The API Key that should be formatted.
@@ -51,4 +81,28 @@ export declare function isOpenAiKey(apiKey: string): boolean;
51
81
  * @param key The key that should be parsed.
52
82
  */
53
83
  export declare function parseOpenAiKey(key: string): [key: string];
84
+ /**
85
+ * Generates a new connection token from the given key, connection ID, and device ID.
86
+ *
87
+ * Returns null if the key cannot be parsed.
88
+ * @param key The connection key that should be used to generate the token.
89
+ * @param connectionId The connection ID.
90
+ * @param deviceId The device ID.
91
+ * @param inst The ID of the instance that the connection is for.
92
+ */
93
+ export declare function generateV1ConnectionToken(key: string, connectionId: string, recordName: string, inst: string): string;
94
+ /**
95
+ * Calculates the SHA-256 HMAC of the given connection ID, record name, and inst using the given connection secret.
96
+ * @param connectionSecret The connection secret.
97
+ * @param connectionId The ID of the connection.
98
+ * @param recordName The name of the record.
99
+ * @param inst The inst.
100
+ */
101
+ export declare function v1ConnectionTokenHmac(connectionSecret: string, connectionId: string, recordName: string, inst: string): string;
102
+ /**
103
+ * Validates whether the given connection token is valid and was generated from the given connection key.
104
+ * @param connectionToken The connection token to validate.
105
+ * @param connectionSecret The secret for the connection.
106
+ */
107
+ export declare function verifyConnectionToken(connectionToken: string, connectionSecret: string): boolean;
54
108
  //# sourceMappingURL=AuthUtils.d.ts.map
package/AuthUtils.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { padStart } from 'lodash';
2
2
  import { randomBytes } from 'tweetnacl';
3
- import { fromBase64String, toBase64String } from './Utils';
3
+ import { fromBase64String, toBase64String, parseV1ConnectionToken, formatV1ConnectionToken, } from '@casual-simulation/aux-common';
4
+ import { sha256, hmac } from 'hash.js';
5
+ import { toByteArray } from 'base64-js';
4
6
  /**
5
7
  * The number of characters that random codes should contain.
6
8
  */
@@ -25,7 +27,7 @@ export function formatV1SessionKey(userId, sessionId, sessionSecret, expireTimeM
25
27
  return `vSK1.${toBase64String(userId)}.${toBase64String(sessionId)}.${toBase64String(sessionSecret)}.${toBase64String(expireTimeMs.toString())}`;
26
28
  }
27
29
  /**
28
- * Parses the given session token into a user ID and session ID, and session secret array.
30
+ * Parses the given session key into a user ID and session ID, and session secret array.
29
31
  * Returns null if the key cannot be parsed.
30
32
  * @param key The key to parse.
31
33
  */
@@ -83,6 +85,75 @@ export function parseV1SessionKey(key) {
83
85
  return null;
84
86
  }
85
87
  }
88
+ /**
89
+ * Formats the given user ID, session ID, connection secret, and expiration time into a key that is used to generate connection tokens.
90
+ * @param userId The ID of the user.
91
+ * @param sessionId The ID of the session.
92
+ * @param sessionSecret The secret for the connections.
93
+ * @param expireTimeMs The unix timestamp that the key expires at.
94
+ */
95
+ export function formatV1ConnectionKey(userId, sessionId, connectionSecret, expireTimeMs) {
96
+ return `vCK1.${toBase64String(userId)}.${toBase64String(sessionId)}.${toBase64String(connectionSecret)}.${toBase64String(expireTimeMs.toString())}`;
97
+ }
98
+ /**
99
+ * Parses the given connection key into a user ID and session ID, and connection secret array.
100
+ * Returns null if the key cannot be parsed.
101
+ * @param key The key to parse.
102
+ */
103
+ export function parseConnectionKey(key) {
104
+ return parseV1ConnectionKey(key);
105
+ }
106
+ /**
107
+ * Parses a version 1 session key into a user ID, session ID, session secret, and expiration time.
108
+ * Returns null if the key cannot be parsed or if it is not a V1 key.
109
+ * @param key The key to parse.
110
+ */
111
+ export function parseV1ConnectionKey(key) {
112
+ if (!key) {
113
+ return null;
114
+ }
115
+ if (!key.startsWith('vCK1.')) {
116
+ return null;
117
+ }
118
+ const withoutVersion = key.slice('vCK1.'.length);
119
+ let periodAfterUserId = withoutVersion.indexOf('.');
120
+ if (periodAfterUserId < 0) {
121
+ return null;
122
+ }
123
+ const userIdBase64 = withoutVersion.slice(0, periodAfterUserId);
124
+ const sessionIdPlusPassword = withoutVersion.slice(periodAfterUserId + 1);
125
+ if (userIdBase64.length <= 0 || sessionIdPlusPassword.length <= 0) {
126
+ return null;
127
+ }
128
+ const periodAfterSessionId = sessionIdPlusPassword.indexOf('.');
129
+ if (periodAfterSessionId < 0) {
130
+ return null;
131
+ }
132
+ const sessionIdBase64 = sessionIdPlusPassword.slice(0, periodAfterSessionId);
133
+ const passwordPlusExpireTime = sessionIdPlusPassword.slice(periodAfterSessionId + 1);
134
+ if (sessionIdBase64.length <= 0 || passwordPlusExpireTime.length <= 0) {
135
+ return null;
136
+ }
137
+ const periodAfterPassword = passwordPlusExpireTime.indexOf('.');
138
+ if (periodAfterPassword < 0) {
139
+ return null;
140
+ }
141
+ const passwordBase64 = passwordPlusExpireTime.slice(0, periodAfterPassword);
142
+ const expireTimeBase64 = passwordPlusExpireTime.slice(periodAfterPassword + 1);
143
+ if (passwordBase64.length <= 0 || expireTimeBase64.length <= 0) {
144
+ return null;
145
+ }
146
+ try {
147
+ const userId = fromBase64String(userIdBase64);
148
+ const sessionId = fromBase64String(sessionIdBase64);
149
+ const password = fromBase64String(passwordBase64);
150
+ const expireTime = parseInt(fromBase64String(expireTimeBase64));
151
+ return [userId, sessionId, password, expireTime];
152
+ }
153
+ catch (err) {
154
+ return null;
155
+ }
156
+ }
86
157
  /**
87
158
  * Formats the given OpenAI Key into a string that is detectable as an OpenAI Key.
88
159
  * @param apiKey The API Key that should be formatted.
@@ -111,4 +182,61 @@ export function parseOpenAiKey(key) {
111
182
  const withoutVersion = key.slice('vAI1.'.length);
112
183
  return [fromBase64String(withoutVersion)];
113
184
  }
185
+ /**
186
+ * Generates a new connection token from the given key, connection ID, and device ID.
187
+ *
188
+ * Returns null if the key cannot be parsed.
189
+ * @param key The connection key that should be used to generate the token.
190
+ * @param connectionId The connection ID.
191
+ * @param deviceId The device ID.
192
+ * @param inst The ID of the instance that the connection is for.
193
+ */
194
+ export function generateV1ConnectionToken(key, connectionId, recordName, inst) {
195
+ const parsed = parseConnectionKey(key);
196
+ if (!parsed) {
197
+ return null;
198
+ }
199
+ const [userId, sessionId, connectionSecret, expireTimeMs] = parsed;
200
+ const hashHex = v1ConnectionTokenHmac(connectionSecret, connectionId, recordName, inst);
201
+ return formatV1ConnectionToken(userId, sessionId, connectionId, recordName, inst, hashHex);
202
+ }
203
+ /**
204
+ * Calculates the SHA-256 HMAC of the given connection ID, record name, and inst using the given connection secret.
205
+ * @param connectionSecret The connection secret.
206
+ * @param connectionId The ID of the connection.
207
+ * @param recordName The name of the record.
208
+ * @param inst The inst.
209
+ */
210
+ export function v1ConnectionTokenHmac(connectionSecret, connectionId, recordName, inst) {
211
+ const hash = hmac(sha256, toByteArray(connectionSecret), 'hex');
212
+ hash.update(connectionId);
213
+ hash.update(recordName);
214
+ hash.update(inst);
215
+ const hashHex = hash.digest('hex');
216
+ return hashHex;
217
+ }
218
+ /**
219
+ * Validates whether the given connection token is valid and was generated from the given connection key.
220
+ * @param connectionToken The connection token to validate.
221
+ * @param connectionSecret The secret for the connection.
222
+ */
223
+ export function verifyConnectionToken(connectionToken, connectionSecret) {
224
+ if (!connectionToken || !connectionSecret) {
225
+ return false;
226
+ }
227
+ try {
228
+ const parsed = parseV1ConnectionToken(connectionToken);
229
+ if (parsed) {
230
+ const [userId, sessionId, connectionId, recordName, inst, hash] = parsed;
231
+ const expectedHash = v1ConnectionTokenHmac(connectionSecret, connectionId, recordName, inst);
232
+ return hash === expectedHash;
233
+ }
234
+ else {
235
+ return false;
236
+ }
237
+ }
238
+ catch (_a) {
239
+ return false;
240
+ }
241
+ }
114
242
  //# sourceMappingURL=AuthUtils.js.map