appium-ios-remotexpc 0.0.5 → 0.1.0

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 (35) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/src/index.d.ts +1 -1
  3. package/build/src/index.d.ts.map +1 -1
  4. package/build/src/lib/apple-tv/srp/crypto-utils.d.ts +53 -0
  5. package/build/src/lib/apple-tv/srp/crypto-utils.d.ts.map +1 -0
  6. package/build/src/lib/apple-tv/srp/crypto-utils.js +128 -0
  7. package/build/src/lib/apple-tv/srp/index.d.ts +3 -0
  8. package/build/src/lib/apple-tv/srp/index.d.ts.map +1 -0
  9. package/build/src/lib/apple-tv/srp/index.js +2 -0
  10. package/build/src/lib/apple-tv/srp/srp-client.d.ts +130 -0
  11. package/build/src/lib/apple-tv/srp/srp-client.d.ts.map +1 -0
  12. package/build/src/lib/apple-tv/srp/srp-client.js +288 -0
  13. package/build/src/lib/remote-xpc/remote-xpc-connection.d.ts +1 -2
  14. package/build/src/lib/remote-xpc/remote-xpc-connection.d.ts.map +1 -1
  15. package/build/src/lib/remote-xpc/remote-xpc-connection.js +1 -2
  16. package/build/src/lib/tunnel/index.d.ts +3 -2
  17. package/build/src/lib/tunnel/index.d.ts.map +1 -1
  18. package/build/src/lib/tunnel/index.js +6 -3
  19. package/build/src/lib/types.d.ts +11 -0
  20. package/build/src/lib/types.d.ts.map +1 -1
  21. package/build/src/services/ios/diagnostic-service/index.d.ts.map +1 -1
  22. package/build/src/services/ios/diagnostic-service/index.js +0 -1
  23. package/build/src/services.d.ts +3 -3
  24. package/build/src/services.d.ts.map +1 -1
  25. package/build/src/services.js +8 -5
  26. package/package.json +1 -1
  27. package/src/index.ts +1 -0
  28. package/src/lib/apple-tv/srp/crypto-utils.ts +166 -0
  29. package/src/lib/apple-tv/srp/index.ts +8 -0
  30. package/src/lib/apple-tv/srp/srp-client.ts +387 -0
  31. package/src/lib/remote-xpc/remote-xpc-connection.ts +1 -2
  32. package/src/lib/tunnel/index.ts +7 -5
  33. package/src/lib/types.ts +12 -0
  34. package/src/services/ios/diagnostic-service/index.ts +0 -1
  35. package/src/services.ts +10 -7
@@ -1,5 +1,6 @@
1
1
  import type { TLSSocket } from 'tls';
2
2
  import { type TunnelConnection } from 'tuntap-bridge';
3
+ import { RemoteXpcConnection } from '../remote-xpc/remote-xpc-connection.js';
3
4
  /**
4
5
  * A wrapper around the tunnel connection that
5
6
  * maintains a registry of active tunnels that can be reused.
@@ -26,7 +27,7 @@ declare class TunnelManagerService {
26
27
  * @param rsdPort - The RSD port of the tunnel
27
28
  * @returns A promise that resolves to the RemoteXPC connection
28
29
  */
29
- createRemoteXPCConnection(address: string, rsdPort: number): Promise<any>;
30
+ createRemoteXPCConnection(address: string, rsdPort: number): Promise<RemoteXpcConnection>;
30
31
  /**
31
32
  * Establishes a tunnel connection if not already connected.
32
33
  * If a tunnel is already open for the same address, it will be reused.
@@ -64,6 +65,6 @@ declare class TunnelManagerService {
64
65
  closeTunnel(): Promise<void>;
65
66
  }
66
67
  export declare const TunnelManager: TunnelManagerService;
67
- export { PacketStreamServer } from './packet-stream-server.js';
68
68
  export { PacketStreamClient } from './packet-stream-client.js';
69
+ export { PacketStreamServer } from './packet-stream-server.js';
69
70
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,eAAe,CAAC;AAwB/E;;;GAGG;AACH,cAAM,oBAAoB;IAExB,OAAO,CAAC,cAAc,CAA+C;IAErE;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKtC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAM5B;;;;;;OAMG;IACG,yBAAyB,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC;IAyCf;;;;;;OAMG;IACG,SAAS,CAAC,mBAAmB,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmD1E;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAU5D;;;;;OAKG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1D;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAatC;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAGnC;AAGD,eAAO,MAAM,aAAa,sBAA6B,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAsB7E;;;GAGG;AACH,cAAM,oBAAoB;IAExB,OAAO,CAAC,cAAc,CAA+C;IAErE;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKtC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAM5B;;;;;;OAMG;IACG,yBAAyB,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC;IA2C/B;;;;;;OAMG;IACG,SAAS,CAAC,mBAAmB,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmD1E;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAU5D;;;;;OAKG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1D;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAatC;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAGnC;AAGD,eAAO,MAAM,aAAa,sBAA6B,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { logger } from '@appium/support';
2
2
  import { connectToTunnelLockdown } from 'tuntap-bridge';
3
- import RemoteXpcConnection from '../remote-xpc/remote-xpc-connection.js';
3
+ import { RemoteXpcConnection } from '../remote-xpc/remote-xpc-connection.js';
4
4
  const log = logger.getLogger('TunnelManager');
5
5
  /**
6
6
  * A wrapper around the tunnel connection that
@@ -38,7 +38,10 @@ class TunnelManagerService {
38
38
  */
39
39
  async createRemoteXPCConnection(address, rsdPort) {
40
40
  try {
41
- const remoteXPC = new RemoteXpcConnection([address, rsdPort]);
41
+ const remoteXPC = new RemoteXpcConnection([
42
+ address,
43
+ rsdPort,
44
+ ]);
42
45
  // Connect to RemoteXPC with delay between retries
43
46
  let retries = 3;
44
47
  let lastError;
@@ -201,5 +204,5 @@ class TunnelManagerService {
201
204
  // Create and export the singleton instance
202
205
  export const TunnelManager = new TunnelManagerService();
203
206
  // Export packet streaming IPC functionality
204
- export { PacketStreamServer } from './packet-stream-server.js';
205
207
  export { PacketStreamClient } from './packet-stream-client.js';
208
+ export { PacketStreamServer } from './packet-stream-server.js';
@@ -4,6 +4,7 @@
4
4
  import { EventEmitter } from 'events';
5
5
  import type { PacketData } from 'tuntap-bridge';
6
6
  import type { BaseService, Service } from '../services/ios/base-service.js';
7
+ import type { RemoteXpcConnection } from './remote-xpc/remote-xpc-connection.js';
7
8
  import type { Device } from './usbmux/index.js';
8
9
  /**
9
10
  * Represents a value that can be stored in a plist
@@ -152,6 +153,16 @@ export interface DiagnosticsServiceConstructor {
152
153
  */
153
154
  new (address: [string, number]): DiagnosticsService;
154
155
  }
156
+ /**
157
+ * Represents a DiagnosticsService instance with its associated RemoteXPC connection
158
+ * This allows callers to properly manage the connection lifecycle
159
+ */
160
+ export interface DiagnosticsServiceWithConnection {
161
+ /** The DiagnosticsService instance */
162
+ diagnosticsService: DiagnosticsService;
163
+ /** The RemoteXPC connection that can be used to close the connection */
164
+ remoteXPC: RemoteXpcConnection;
165
+ }
155
166
  /**
156
167
  * Options for configuring syslog capture
157
168
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/diagnostic-service/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,IAAI,2BAA2B,EACjD,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;;;GAKG;AACH,cAAM,kBACJ,SAAQ,WACR,YAAW,2BAA2B;IAEtC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,oDACmB;gBAEvC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAIrC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAazC;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC;IAa1C;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAavC;;;;OAIG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA4CpD,OAAO,CAAC,gBAAgB;YAOV,0BAA0B;YAK1B,WAAW;IAoBzB,OAAO,CAAC,yBAAyB;YA0CnB,iCAAiC;CA8BhD;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/diagnostic-service/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,IAAI,2BAA2B,EACjD,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;;;GAKG;AACH,cAAM,kBACJ,SAAQ,WACR,YAAW,2BAA2B;IAEtC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,oDACmB;gBAEvC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAIrC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAazC;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC;IAa1C;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAavC;;;;OAIG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA4CpD,OAAO,CAAC,gBAAgB;YAOV,0BAA0B;YAK1B,WAAW;IAoBzB,OAAO,CAAC,yBAAyB;YA0CnB,iCAAiC;CA6BhD;AAED,eAAe,kBAAkB,CAAC"}
@@ -154,7 +154,6 @@ class DiagnosticsService extends BaseService {
154
154
  };
155
155
  log.debug('Sending follow-up request for additional data');
156
156
  const additionalResponse = await conn.sendPlistRequest(emptyRequest, timeout);
157
- log.debug('Additional response: ', additionalResponse);
158
157
  const hasDiagnostics = 'Diagnostics' in additionalResponse &&
159
158
  typeof additionalResponse.Diagnostics === 'object' &&
160
159
  additionalResponse.Diagnostics !== null &&
@@ -1,6 +1,6 @@
1
- import RemoteXpcConnection from './lib/remote-xpc/remote-xpc-connection.js';
2
- import type { DiagnosticsService as DiagnosticsServiceType, SyslogService as SyslogServiceType } from './lib/types.js';
3
- export declare function startDiagnosticsService(udid: string): Promise<DiagnosticsServiceType>;
1
+ import { RemoteXpcConnection } from './lib/remote-xpc/remote-xpc-connection.js';
2
+ import type { DiagnosticsServiceWithConnection, SyslogService as SyslogServiceType } from './lib/types.js';
3
+ export declare function startDiagnosticsService(udid: string): Promise<DiagnosticsServiceWithConnection>;
4
4
  export declare function startSyslogService(udid: string): Promise<SyslogServiceType>;
5
5
  export declare function createRemoteXPCConnection(udid: string): Promise<{
6
6
  remoteXPC: RemoteXpcConnection;
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,MAAM,2CAA2C,CAAC;AAG5E,OAAO,KAAK,EACV,kBAAkB,IAAI,sBAAsB,EAC5C,aAAa,IAAI,iBAAiB,EACnC,MAAM,gBAAgB,CAAC;AAOxB,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,sBAAsB,CAAC,CASjC;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,CAG5B;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM;;;;;;;;GAO3D"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,KAAK,EACV,gCAAgC,EAChC,aAAa,IAAI,iBAAiB,EACnC,MAAM,gBAAgB,CAAC;AAOxB,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gCAAgC,CAAC,CAY3C;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,CAG5B;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM;;;;;;;;GAO3D"}
@@ -1,5 +1,5 @@
1
1
  import { strongbox } from '@appium/strongbox';
2
- import RemoteXpcConnection from './lib/remote-xpc/remote-xpc-connection.js';
2
+ import { RemoteXpcConnection } from './lib/remote-xpc/remote-xpc-connection.js';
3
3
  import { TunnelManager } from './lib/tunnel/index.js';
4
4
  import { TunnelApiClient } from './lib/tunnel/tunnel-api-client.js';
5
5
  import DiagnosticsService from './services/ios/diagnostic-service/index.js';
@@ -9,10 +9,13 @@ const TUNNEL_REGISTRY_PORT = 'tunnelRegistryPort';
9
9
  export async function startDiagnosticsService(udid) {
10
10
  const { remoteXPC, tunnelConnection } = await createRemoteXPCConnection(udid);
11
11
  const diagnosticsService = remoteXPC.findService(DiagnosticsService.RSD_SERVICE_NAME);
12
- return new DiagnosticsService([
13
- tunnelConnection.host,
14
- parseInt(diagnosticsService.port, 10),
15
- ]);
12
+ return {
13
+ remoteXPC: remoteXPC,
14
+ diagnosticsService: new DiagnosticsService([
15
+ tunnelConnection.host,
16
+ parseInt(diagnosticsService.port, 10),
17
+ ]),
18
+ };
16
19
  }
17
20
  export async function startSyslogService(udid) {
18
21
  const { tunnelConnection } = await createRemoteXPCConnection(udid);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-ios-remotexpc",
3
- "version": "0.0.5",
3
+ "version": "0.1.0",
4
4
  "main": "build/src/index.js",
5
5
  "types": "build/src/index.d.ts",
6
6
  "type": "module",
package/src/index.ts CHANGED
@@ -19,6 +19,7 @@ export type {
19
19
  TunnelResult,
20
20
  TunnelRegistry,
21
21
  TunnelRegistryEntry,
22
+ DiagnosticsServiceWithConnection,
22
23
  } from './lib/types.js';
23
24
  export {
24
25
  createUsbmux,
@@ -0,0 +1,166 @@
1
+ import { createHash } from 'node:crypto';
2
+
3
+ import { SRP_HASH_ALGORITHM } from '../constants.js';
4
+ import {
5
+ bigIntToBuffer,
6
+ bigIntToMinimalBuffer,
7
+ bufferToBigInt,
8
+ } from '../utils/buffer-utils.js';
9
+
10
+ /**
11
+ * Computes a cryptographic hash of the provided input buffers.
12
+ *
13
+ * @param inputs - Variable number of Buffer objects to hash
14
+ * @returns The computed hash as a Buffer
15
+ * @throws {Error} If no inputs provided
16
+ */
17
+ export function hash(...inputs: Buffer[]): Buffer {
18
+ if (inputs.length === 0) {
19
+ throw new Error('At least one input buffer is required for hashing');
20
+ }
21
+
22
+ const hasher = createHash(SRP_HASH_ALGORITHM);
23
+
24
+ for (const input of inputs) {
25
+ if (!Buffer.isBuffer(input)) {
26
+ throw new Error('All inputs must be Buffer objects');
27
+ }
28
+ hasher.update(input);
29
+ }
30
+
31
+ return hasher.digest();
32
+ }
33
+
34
+ /**
35
+ * Calculates the SRP multiplier parameter k = H(N, g).
36
+ *
37
+ * @param N - The large safe prime modulus
38
+ * @param g - The generator
39
+ * @param keyLength - The key length in bytes
40
+ * @returns The calculated k value as a bigint
41
+ * @throws {Error} If parameters are invalid
42
+ */
43
+ export function calculateK(N: bigint, g: bigint, keyLength: number): bigint {
44
+ if (N <= BigInt(0) || g <= BigInt(0)) {
45
+ throw new Error('N and g must be positive');
46
+ }
47
+ if (keyLength <= 0) {
48
+ throw new Error('Key length must be positive');
49
+ }
50
+
51
+ const NBuffer = bigIntToBuffer(N, keyLength);
52
+ const gBuffer = bigIntToBuffer(g, keyLength);
53
+ const kHash = hash(NBuffer, gBuffer);
54
+
55
+ return bufferToBigInt(kHash);
56
+ }
57
+
58
+ /**
59
+ * Calculates the private key x = H(salt, H(username:password)).
60
+ *
61
+ * @param salt - The salt buffer
62
+ * @param username - The username string
63
+ * @param password - The password string
64
+ * @returns The calculated x value as a bigint
65
+ * @throws {Error} If parameters are invalid
66
+ */
67
+ export function calculateX(
68
+ salt: Buffer,
69
+ username: string,
70
+ password: string,
71
+ ): bigint {
72
+ if (!Buffer.isBuffer(salt) || salt.length === 0) {
73
+ throw new Error('Salt must be a non-empty Buffer');
74
+ }
75
+ if (!username || !password) {
76
+ throw new Error('Username and password must be non-empty strings');
77
+ }
78
+
79
+ const usernamePasswordHash = hash(
80
+ Buffer.from(`${username}:${password}`, 'utf8'),
81
+ );
82
+ const xHash = hash(salt, usernamePasswordHash);
83
+
84
+ return bufferToBigInt(xHash);
85
+ }
86
+
87
+ /**
88
+ * Calculates the random scrambling parameter u = H(A, B).
89
+ *
90
+ * @param A - The client's public key
91
+ * @param B - The server's public key
92
+ * @param keyLength - The key length in bytes
93
+ * @returns The calculated u value as a bigint
94
+ * @throws {Error} If parameters are invalid
95
+ */
96
+ export function calculateU(A: bigint, B: bigint, keyLength: number): bigint {
97
+ if (A <= BigInt(0) || B <= BigInt(0)) {
98
+ throw new Error('Public keys A and B must be positive');
99
+ }
100
+ if (keyLength <= 0) {
101
+ throw new Error('Key length must be positive');
102
+ }
103
+
104
+ const ABuffer = bigIntToBuffer(A, keyLength);
105
+ const BBuffer = bigIntToBuffer(B, keyLength);
106
+ const uHash = hash(ABuffer, BBuffer);
107
+
108
+ const u = bufferToBigInt(uHash);
109
+ if (u === BigInt(0)) {
110
+ throw new Error('Calculated u value cannot be zero (hash collision)');
111
+ }
112
+
113
+ return u;
114
+ }
115
+
116
+ /**
117
+ * Calculates the client evidence M1 = H(H(N) xor H(g), H(username), salt, A, B, K).
118
+ *
119
+ * @param N - The large safe prime modulus
120
+ * @param g - The generator
121
+ * @param username - The username string
122
+ * @param salt - The salt buffer
123
+ * @param A - The client's public key
124
+ * @param B - The server's public key
125
+ * @param K - The session key
126
+ * @returns The calculated M1 evidence as a Buffer
127
+ * @throws {Error} If parameters are invalid
128
+ */
129
+ export function calculateM1(
130
+ N: bigint,
131
+ g: bigint,
132
+ username: string,
133
+ salt: Buffer,
134
+ A: bigint,
135
+ B: bigint,
136
+ K: Buffer,
137
+ ): Buffer {
138
+ if (N <= BigInt(0) || g <= BigInt(0) || A <= BigInt(0) || B <= BigInt(0)) {
139
+ throw new Error('All bigint parameters must be positive');
140
+ }
141
+ if (!username) {
142
+ throw new Error('Username must be non-empty');
143
+ }
144
+ if (!Buffer.isBuffer(salt) || salt.length === 0) {
145
+ throw new Error('Salt must be a non-empty Buffer');
146
+ }
147
+ if (!Buffer.isBuffer(K) || K.length === 0) {
148
+ throw new Error('Session key K must be a non-empty Buffer');
149
+ }
150
+
151
+ const NBytes = bigIntToMinimalBuffer(N);
152
+ const gBytes = bigIntToMinimalBuffer(g);
153
+ const NHash = hash(NBytes);
154
+ const gHash = hash(gBytes);
155
+
156
+ const NgXorBytes = Buffer.alloc(NHash.length);
157
+ for (let i = 0; i < NHash.length; i++) {
158
+ NgXorBytes[i] = NHash[i] ^ gHash[i];
159
+ }
160
+
161
+ const usernameHash = hash(Buffer.from(username, 'utf8'));
162
+ const ABytes = bigIntToMinimalBuffer(A);
163
+ const BBytes = bigIntToMinimalBuffer(B);
164
+
165
+ return hash(NgXorBytes, usernameHash, salt, ABytes, BBytes, K);
166
+ }
@@ -0,0 +1,8 @@
1
+ export { SRPClient } from './srp-client.js';
2
+ export {
3
+ hash,
4
+ calculateK,
5
+ calculateX,
6
+ calculateU,
7
+ calculateM1,
8
+ } from './crypto-utils.js';