appium-ios-remotexpc 5.24.6 → 5.25.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 (58) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/build/src/lib/apple-tv/constants.d.ts +1 -0
  3. package/build/src/lib/apple-tv/constants.d.ts.map +1 -1
  4. package/build/src/lib/apple-tv/constants.js +2 -0
  5. package/build/src/lib/apple-tv/constants.js.map +1 -1
  6. package/build/src/lib/apple-tv/discovered-device-mapper.d.ts.map +1 -1
  7. package/build/src/lib/apple-tv/discovered-device-mapper.js +2 -0
  8. package/build/src/lib/apple-tv/discovered-device-mapper.js.map +1 -1
  9. package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.d.ts +1 -2
  10. package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.d.ts.map +1 -1
  11. package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.js +24 -28
  12. package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.js.map +1 -1
  13. package/build/src/lib/apple-tv/pairing-protocol/peer-identity.d.ts +11 -0
  14. package/build/src/lib/apple-tv/pairing-protocol/peer-identity.d.ts.map +1 -0
  15. package/build/src/lib/apple-tv/pairing-protocol/peer-identity.js +24 -0
  16. package/build/src/lib/apple-tv/pairing-protocol/peer-identity.js.map +1 -0
  17. package/build/src/lib/apple-tv/storage/pairing-storage.d.ts +1 -1
  18. package/build/src/lib/apple-tv/storage/pairing-storage.d.ts.map +1 -1
  19. package/build/src/lib/apple-tv/storage/pairing-storage.js +14 -3
  20. package/build/src/lib/apple-tv/storage/pairing-storage.js.map +1 -1
  21. package/build/src/lib/apple-tv/storage/types.d.ts +2 -1
  22. package/build/src/lib/apple-tv/storage/types.d.ts.map +1 -1
  23. package/build/src/lib/apple-tv/tunnel/pair-record-matcher.d.ts +20 -0
  24. package/build/src/lib/apple-tv/tunnel/pair-record-matcher.d.ts.map +1 -0
  25. package/build/src/lib/apple-tv/tunnel/pair-record-matcher.js +24 -0
  26. package/build/src/lib/apple-tv/tunnel/pair-record-matcher.js.map +1 -0
  27. package/build/src/lib/apple-tv/tunnel/tunnel-service.d.ts +8 -2
  28. package/build/src/lib/apple-tv/tunnel/tunnel-service.d.ts.map +1 -1
  29. package/build/src/lib/apple-tv/tunnel/tunnel-service.js +56 -36
  30. package/build/src/lib/apple-tv/tunnel/tunnel-service.js.map +1 -1
  31. package/build/src/lib/apple-tv/types.d.ts +4 -0
  32. package/build/src/lib/apple-tv/types.d.ts.map +1 -1
  33. package/build/src/lib/apple-tv/utils/index.d.ts +1 -0
  34. package/build/src/lib/apple-tv/utils/index.d.ts.map +1 -1
  35. package/build/src/lib/apple-tv/utils/index.js +1 -0
  36. package/build/src/lib/apple-tv/utils/index.js.map +1 -1
  37. package/build/src/lib/apple-tv/utils/siphash.d.ts +16 -0
  38. package/build/src/lib/apple-tv/utils/siphash.d.ts.map +1 -0
  39. package/build/src/lib/apple-tv/utils/siphash.js +84 -0
  40. package/build/src/lib/apple-tv/utils/siphash.js.map +1 -0
  41. package/build/src/lib/discovery/mdns-discovery-backend.js +2 -0
  42. package/build/src/lib/discovery/mdns-discovery-backend.js.map +1 -1
  43. package/build/src/lib/discovery/types.d.ts +4 -0
  44. package/build/src/lib/discovery/types.d.ts.map +1 -1
  45. package/package.json +3 -3
  46. package/src/lib/apple-tv/constants.ts +3 -0
  47. package/src/lib/apple-tv/discovered-device-mapper.ts +2 -0
  48. package/src/lib/apple-tv/pairing-protocol/pairing-protocol.ts +26 -35
  49. package/src/lib/apple-tv/pairing-protocol/peer-identity.ts +34 -0
  50. package/src/lib/apple-tv/storage/pairing-storage.ts +22 -14
  51. package/src/lib/apple-tv/storage/types.ts +2 -7
  52. package/src/lib/apple-tv/tunnel/pair-record-matcher.ts +48 -0
  53. package/src/lib/apple-tv/tunnel/tunnel-service.ts +73 -44
  54. package/src/lib/apple-tv/types.ts +4 -0
  55. package/src/lib/apple-tv/utils/index.ts +1 -0
  56. package/src/lib/apple-tv/utils/siphash.ts +93 -0
  57. package/src/lib/discovery/mdns-discovery-backend.ts +2 -0
  58. package/src/lib/discovery/types.ts +4 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,21 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.25.0](https://github.com/appium/appium-ios/compare/appium-ios-remotexpc@5.24.7...appium-ios-remotexpc@5.25.0) (2026-10-12)
7
+
8
+ ### Features
9
+
10
+ * **remotexpc:** match Apple TV adverts to pair records by authTag ([#50](https://github.com/appium/appium-ios/issues/50)) ([81f6930](https://github.com/appium/appium-ios/commit/81f69306a1736ffa430cec9b778a2de88e8e44e8))
11
+
12
+
13
+ ## [5.24.7](https://github.com/appium/appium-ios/compare/appium-ios-remotexpc@5.24.6...appium-ios-remotexpc@5.24.7) (2026-10-08)
14
+
15
+ **Note:** Version bump only for package appium-ios-remotexpc
16
+
17
+
18
+
19
+
20
+
6
21
  ## [5.24.6](https://github.com/appium/appium-ios/compare/appium-ios-remotexpc@5.24.5...appium-ios-remotexpc@5.24.6) (2026-10-05)
7
22
 
8
23
  **Note:** Version bump only for package appium-ios-remotexpc
@@ -19,6 +19,7 @@ export declare const REMOTE_PAIRING_MANUAL_DISCOVERY_SERVICE_TYPE = "_remotepair
19
19
  */
20
20
  export declare const REMOTE_PAIRING_VERIFIED_DISCOVERY_SERVICE_TYPE = "_remotepairing._tcp";
21
21
  export declare const REMOTE_PAIRING_DISCOVERY_DOMAIN = "local";
22
+ export declare const ALT_IRK_LENGTH = 16;
22
23
  export declare const PairingDataComponentType: {
23
24
  readonly METHOD: 0;
24
25
  readonly IDENTIFIER: 1;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/lib/apple-tv/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,4CAA4C,uCAAuC,CAAC;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,8CAA8C,wBAAwB,CAAC;AAEpF,eAAO,MAAM,+BAA+B,UAAU,CAAC;AAGvD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC3B,CAAC;AAGX,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAG1C,eAAO,MAAM,cAAc,QAc1B,CAAC;AAGF,eAAO,MAAM,aAAa,QAAY,CAAC;AAGvC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAG3C,eAAO,MAAM,YAAY,eAAe,CAAC;AAGzC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAGxC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAGxC,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAG5C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC,eAAO,MAAM,WAAW,IAAO,CAAC;AAChC,eAAO,MAAM,WAAW,IAAO,CAAC;AAChC,eAAO,MAAM,YAAY,IAAO,CAAC;AACjC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,oBAAoB,KAAO,CAAC;AACzC,eAAO,MAAM,uBAAuB,KAAO,CAAC;AAC5C,eAAO,MAAM,sBAAsB,KAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAGxC,eAAO,MAAM,kBAAkB,KAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,KAAO,CAAC;AACxC,eAAO,MAAM,mBAAmB,KAAO,CAAC;AACxC,eAAO,MAAM,mBAAmB,KAAO,CAAC;AAGxC,eAAO,MAAM,wBAAwB,KAAO,CAAC;AAC7C,eAAO,MAAM,6BAA6B,KAAO,CAAC;AAClD,eAAO,MAAM,8BAA8B,KAAO,CAAC;AACnD,eAAO,MAAM,8BAA8B,KAAO,CAAC;AAGnD,eAAO,MAAM,uBAAuB,MAAO,CAAC;AAC5C,eAAO,MAAM,4BAA4B,MAAO,CAAC;AACjD,eAAO,MAAM,6BAA6B,MAAO,CAAC;AAClD,eAAO,MAAM,6BAA6B,MAAO,CAAC;AAGlD,eAAO,MAAM,uBAAuB,MAAO,CAAC;AAC5C,eAAO,MAAM,4BAA4B,MAAO,CAAC;AAGjD,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAC3C,eAAO,MAAM,2BAA2B,MAAO,CAAC;AAGhD,eAAO,MAAM,gBAAgB,MAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,eAAO,MAAM,iBAAiB,aAAa,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/lib/apple-tv/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,4CAA4C,uCAAuC,CAAC;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,8CAA8C,wBAAwB,CAAC;AAEpF,eAAO,MAAM,+BAA+B,UAAU,CAAC;AAGvD,eAAO,MAAM,cAAc,KAAK,CAAC;AAGjC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC3B,CAAC;AAGX,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAG1C,eAAO,MAAM,cAAc,QAc1B,CAAC;AAGF,eAAO,MAAM,aAAa,QAAY,CAAC;AAGvC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAG3C,eAAO,MAAM,YAAY,eAAe,CAAC;AAGzC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAGxC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAGxC,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAG5C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC,eAAO,MAAM,WAAW,IAAO,CAAC;AAChC,eAAO,MAAM,WAAW,IAAO,CAAC;AAChC,eAAO,MAAM,YAAY,IAAO,CAAC;AACjC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,oBAAoB,KAAO,CAAC;AACzC,eAAO,MAAM,uBAAuB,KAAO,CAAC;AAC5C,eAAO,MAAM,sBAAsB,KAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAGxC,eAAO,MAAM,kBAAkB,KAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,KAAO,CAAC;AACxC,eAAO,MAAM,mBAAmB,KAAO,CAAC;AACxC,eAAO,MAAM,mBAAmB,KAAO,CAAC;AAGxC,eAAO,MAAM,wBAAwB,KAAO,CAAC;AAC7C,eAAO,MAAM,6BAA6B,KAAO,CAAC;AAClD,eAAO,MAAM,8BAA8B,KAAO,CAAC;AACnD,eAAO,MAAM,8BAA8B,KAAO,CAAC;AAGnD,eAAO,MAAM,uBAAuB,MAAO,CAAC;AAC5C,eAAO,MAAM,4BAA4B,MAAO,CAAC;AACjD,eAAO,MAAM,6BAA6B,MAAO,CAAC;AAClD,eAAO,MAAM,6BAA6B,MAAO,CAAC;AAGlD,eAAO,MAAM,uBAAuB,MAAO,CAAC;AAC5C,eAAO,MAAM,4BAA4B,MAAO,CAAC;AAGjD,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAC3C,eAAO,MAAM,2BAA2B,MAAO,CAAC;AAGhD,eAAO,MAAM,gBAAgB,MAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,eAAO,MAAM,iBAAiB,aAAa,CAAC"}
@@ -25,6 +25,8 @@ export const REMOTE_PAIRING_MANUAL_DISCOVERY_SERVICE_TYPE = '_remotepairing-manu
25
25
  */
26
26
  export const REMOTE_PAIRING_VERIFIED_DISCOVERY_SERVICE_TYPE = '_remotepairing._tcp';
27
27
  export const REMOTE_PAIRING_DISCOVERY_DOMAIN = 'local';
28
+ // Byte length of the altIRK an Apple TV reveals in pair-setup M6 (the SipHash key behind its mDNS authTag)
29
+ export const ALT_IRK_LENGTH = 16;
28
30
  // TLV8 component type identifiers used in pairing data exchange
29
31
  export const PairingDataComponentType = {
30
32
  METHOD: 0x00,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/lib/apple-tv/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/lib/apple-tv/constants.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"discovered-device-mapper.d.ts","sourceRoot":"","sources":["../../../../src/lib/apple-tv/discovered-device-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,GAAG,IAAI,CAyB9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,aAAa,EAAE,CAE7E"}
1
+ {"version":3,"file":"discovered-device-mapper.d.ts","sourceRoot":"","sources":["../../../../src/lib/apple-tv/discovered-device-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,GAAG,IAAI,CA2B9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,aAAa,EAAE,CAE7E"}
@@ -22,6 +22,8 @@ export function toAppleTVDevice(device) {
22
22
  port,
23
23
  model,
24
24
  version,
25
+ serviceIdentifier: device.metadata.serviceIdentifier,
26
+ authTag: device.metadata.authTag,
25
27
  };
26
28
  }
27
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"discovered-device-mapper.js","sourceRoot":"","sources":["../../../../src/lib/apple-tv/discovered-device-mapper.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwB;IACtD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC;IAC1E,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,UAAU;QACV,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,gBAAgB;QAClD,QAAQ;QACR,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI;QACJ,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA2B;IAC1D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAA2B,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACvH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAwB;IAC/C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,sDAAsD;IACtD,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"discovered-device-mapper.js","sourceRoot":"","sources":["../../../../src/lib/apple-tv/discovered-device-mapper.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwB;IACtD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC;IAC1E,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,UAAU;QACV,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,gBAAgB;QAClD,QAAQ;QACR,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI;QACJ,KAAK;QACL,OAAO;QACP,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB;QACpD,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA2B;IAC1D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAA2B,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACvH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAwB;IAC/C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,sDAAsD;IACtD,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC"}
@@ -172,8 +172,6 @@ export declare class PairingProtocol implements PairingProtocolInterface {
172
172
  * @param decryptKey Decryption key for M6 encrypted data
173
173
  */
174
174
  private processM6Response;
175
- private extractRemotePairingUdid;
176
- private isOpackDictionary;
177
175
  /**
178
176
  * Derives encryption and decryption keys from SRP session key
179
177
  * Uses HKDF with pairing-specific salt and info strings
@@ -187,6 +185,7 @@ export declare class PairingProtocol implements PairingProtocolInterface {
187
185
  * @param device Apple TV device information
188
186
  * @param ltpk Long-term public key to save
189
187
  * @param ltsk Long-term secret key to save
188
+ * @param peerIdentity Identity read from M6; its altIRK enables offline authTag matching
190
189
  * @returns Path to saved pairing credentials file
191
190
  */
192
191
  private createPairingResult;
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-protocol.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing-protocol/pairing-protocol.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAIhE,OAAO,KAAK,EAAC,aAAa,EAAE,wBAAwB,EAA6B,MAAM,aAAa,CAAC;AAGrG,OAAO,KAAK,EAAiB,wBAAwB,EAAkB,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAI7G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,eAAgB,YAAW,wBAAwB;IAI5D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,OAAO,CAAC,eAAe,CAAK;gBAGT,aAAa,EAAE,sBAAsB,EACrC,SAAS,EAAE,kBAAkB;IAG1C,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAkClF,OAAO,CAAC,aAAa;IAYrB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAWtB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAInB;;;OAGG;YACW,gBAAgB;IAO9B;;;OAGG;YACW,uBAAuB;IAUrC;;;;OAIG;YACW,kBAAkB;IAQhC;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;IAWrC;;;;;;OAMG;YACW,wBAAwB;IAYtC;;;;OAIG;YACW,mBAAmB;IAYjC;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAuB9B;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IAmBrC;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IAUrC;;;;OAIG;IACH,OAAO,CAAC,+BAA+B;IAmBvC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAevB;;;;OAIG;YACW,YAAY;IAgC1B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;;;;;;;;OASG;YACW,aAAa;IAoE3B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,iBAAiB;IAIzB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;;;;;;OAOG;YACW,mBAAmB;IAYjC,OAAO,CAAC,sBAAsB;CAe/B"}
1
+ {"version":3,"file":"pairing-protocol.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing-protocol/pairing-protocol.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAIhE,OAAO,KAAK,EAAC,aAAa,EAAE,wBAAwB,EAAW,MAAM,aAAa,CAAC;AAInF,OAAO,KAAK,EAAiB,wBAAwB,EAAkB,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAI7G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,eAAgB,YAAW,wBAAwB;IAI5D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,OAAO,CAAC,eAAe,CAAK;gBAGT,aAAa,EAAE,sBAAsB,EACrC,SAAS,EAAE,kBAAkB;IAG1C,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAkClF,OAAO,CAAC,aAAa;IAYrB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAWtB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAInB;;;OAGG;YACW,gBAAgB;IAO9B;;;OAGG;YACW,uBAAuB;IAUrC;;;;OAIG;YACW,kBAAkB;IAQhC;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;IAWrC;;;;;;OAMG;YACW,wBAAwB;IAYtC;;;;OAIG;YACW,mBAAmB;IAYjC;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAuB9B;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IAmBrC;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IAUrC;;;;OAIG;IACH,OAAO,CAAC,+BAA+B;IAmBvC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAevB;;;;OAIG;YACW,YAAY;IAgC1B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;;;;;;;;OASG;YACW,aAAa;IAoE3B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;;;;;;;OAQG;YACW,mBAAmB;IAkBjC,OAAO,CAAC,sBAAsB;CAe/B"}
@@ -3,7 +3,7 @@ import { hostname } from 'node:os';
3
3
  import { getLogger } from '../../logger.js';
4
4
  import { DEFAULT_PAIRING_CONFIG, PairingDataComponentType } from '../constants.js';
5
5
  import { encodeAppleTVDeviceInfo } from '../device-info/index.js';
6
- import { Opack2, createEd25519Signature, decryptChaCha20Poly1305, encryptChaCha20Poly1305, generateEd25519KeyPair, hkdf, } from '../encryption/index.js';
6
+ import { createEd25519Signature, decryptChaCha20Poly1305, encryptChaCha20Poly1305, generateEd25519KeyPair, hkdf, } from '../encryption/index.js';
7
7
  import { PairingError } from '../errors.js';
8
8
  import { NETWORK_CONSTANTS } from '../network/constants.js';
9
9
  import { SRPClient } from '../srp/index.js';
@@ -11,6 +11,7 @@ import { PairingStorage } from '../storage/pairing-storage.js';
11
11
  import { createPairVerificationData, createSetupManualPairingData, decodeTLV8ToDict, encodeTLV8 } from '../tlv/index.js';
12
12
  import { generateHostId } from '../utils/uuid-generator.js';
13
13
  import { INFO_TYPE, PAIRING_MESSAGES, PAIRING_STATES } from './constants.js';
14
+ import { extractPeerIdentity } from './peer-identity.js';
14
15
  const log = getLogger('PairingProtocol');
15
16
  /**
16
17
  * Implements the HomeKit Accessory Protocol (HAP) Pair-Setup process for Apple TV.
@@ -73,8 +74,8 @@ export class PairingProtocol {
73
74
  const devicePairingID = generateHostId(hostname());
74
75
  await this.sendM5Message(encryptionKeys.encryptKey, devicePairingID, ltpk, ltsk, srpClient.sessionKey);
75
76
  // Step 6: Receive M6 completion
76
- const remotePairingUdid = await this.receiveM6Completion(encryptionKeys.decryptKey);
77
- return this.createPairingResult(device, ltpk, ltsk, remotePairingUdid);
77
+ const peerIdentity = await this.receiveM6Completion(encryptionKeys.decryptKey);
78
+ return this.createPairingResult(device, ltpk, ltsk, peerIdentity);
78
79
  }
79
80
  catch (error) {
80
81
  log.error('Pairing flow failed:', error);
@@ -195,7 +196,7 @@ export class PairingProtocol {
195
196
  catch (error) {
196
197
  log.warn('M6 decryption failed - but pairing may still be successful:', error.message);
197
198
  }
198
- return undefined;
199
+ return {};
199
200
  }
200
201
  /**
201
202
  * Constructs initial handshake request packet
@@ -468,7 +469,7 @@ export class PairingProtocol {
468
469
  */
469
470
  processM6Response(m6Response, decryptKey) {
470
471
  if (!m6Response.message?.plain?._0?.event?._0?.pairingData?._0?.data) {
471
- return undefined;
472
+ return {};
472
473
  }
473
474
  const m6DataBase64 = m6Response.message.plain._0.event._0.pairingData._0.data;
474
475
  const m6TLVBuffer = Buffer.from(m6DataBase64, 'base64');
@@ -488,28 +489,16 @@ export class PairingProtocol {
488
489
  });
489
490
  const decryptedTLV = decodeTLV8ToDict(decrypted);
490
491
  log.debug('M6 decrypted content types:', Object.keys(decryptedTLV));
491
- const remotePairingUdid = this.extractRemotePairingUdid(decryptedTLV);
492
- if (remotePairingUdid) {
493
- log.debug(`M6 INFO remotepairing_udid: ${remotePairingUdid}`);
492
+ const peerIdentity = extractPeerIdentity(decryptedTLV);
493
+ if (peerIdentity.remotePairingUdid) {
494
+ log.debug(`M6 INFO remotepairing_udid: ${peerIdentity.remotePairingUdid}`);
494
495
  }
495
- return remotePairingUdid;
496
- }
497
- return undefined;
498
- }
499
- extractRemotePairingUdid(decryptedTLV) {
500
- const info = decryptedTLV[PairingDataComponentType.INFO];
501
- if (!info) {
502
- return undefined;
503
- }
504
- const decodedInfo = Opack2.loads(info);
505
- if (!this.isOpackDictionary(decodedInfo)) {
506
- return undefined;
496
+ if (!peerIdentity.altIRK) {
497
+ log.debug('M6 INFO did not include a usable altIRK; this pair record cannot be matched by authTag');
498
+ }
499
+ return peerIdentity;
507
500
  }
508
- const remotePairingUdid = decodedInfo.remotepairing_udid;
509
- return typeof remotePairingUdid === 'string' && remotePairingUdid ? remotePairingUdid.toUpperCase() : undefined;
510
- }
511
- isOpackDictionary(value) {
512
- return typeof value === 'object' && value !== null && !Array.isArray(value) && !Buffer.isBuffer(value);
501
+ return {};
513
502
  }
514
503
  /**
515
504
  * Derives encryption and decryption keys from SRP session key
@@ -536,12 +525,19 @@ export class PairingProtocol {
536
525
  * @param device Apple TV device information
537
526
  * @param ltpk Long-term public key to save
538
527
  * @param ltsk Long-term secret key to save
528
+ * @param peerIdentity Identity read from M6; its altIRK enables offline authTag matching
539
529
  * @returns Path to saved pairing credentials file
540
530
  */
541
- async createPairingResult(device, ltpk, ltsk, remotePairingUdid) {
542
- const deviceId = this.resolvePairingDeviceId(device, remotePairingUdid);
531
+ async createPairingResult(device, ltpk, ltsk, peerIdentity) {
532
+ const deviceId = this.resolvePairingDeviceId(device, peerIdentity.remotePairingUdid);
543
533
  const storage = new PairingStorage(DEFAULT_PAIRING_CONFIG);
544
- const pairingFile = await storage.save(deviceId, ltpk, ltsk, '', remotePairingUdid);
534
+ const pairingFile = await storage.save(deviceId, {
535
+ publicKey: ltpk,
536
+ privateKey: ltsk,
537
+ remoteUnlockHostKey: '',
538
+ remotePairingUdid: peerIdentity.remotePairingUdid,
539
+ altIRK: peerIdentity.altIRK,
540
+ });
545
541
  return { deviceId, pairingFile };
546
542
  }
547
543
  resolvePairingDeviceId(device, remotePairingUdid) {
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-protocol.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing-protocol/pairing-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pairing-protocol.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing-protocol/pairing-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** Identity the Apple TV reveals in the encrypted INFO payload of pair-setup M6. */
2
+ export interface PairSetupPeerIdentity {
3
+ remotePairingUdid?: string;
4
+ altIRK?: Buffer;
5
+ }
6
+ /**
7
+ * Reads `remotepairing_udid` and `altIRK` from the decrypted M6 TLV.
8
+ * Absent or malformed fields are left undefined; altIRK must be exactly 16 bytes.
9
+ */
10
+ export declare function extractPeerIdentity(decryptedTLV: Record<number, Buffer | undefined>): PairSetupPeerIdentity;
11
+ //# sourceMappingURL=peer-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-identity.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing-protocol/peer-identity.ts"],"names":[],"mappings":"AAKA,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,qBAAqB,CAkB3G"}
@@ -0,0 +1,24 @@
1
+ import { util } from '@appium/support';
2
+ import { ALT_IRK_LENGTH, PairingDataComponentType } from '../constants.js';
3
+ import { Opack2 } from '../encryption/index.js';
4
+ /**
5
+ * Reads `remotepairing_udid` and `altIRK` from the decrypted M6 TLV.
6
+ * Absent or malformed fields are left undefined; altIRK must be exactly 16 bytes.
7
+ */
8
+ export function extractPeerIdentity(decryptedTLV) {
9
+ const info = decryptedTLV[PairingDataComponentType.INFO];
10
+ if (!info) {
11
+ return {};
12
+ }
13
+ const decodedInfo = Opack2.loads(info);
14
+ if (!util.isPlainObject(decodedInfo)) {
15
+ return {};
16
+ }
17
+ const remotePairingUdid = decodedInfo.remotepairing_udid;
18
+ const altIRK = decodedInfo.altIRK;
19
+ return {
20
+ remotePairingUdid: typeof remotePairingUdid === 'string' && remotePairingUdid ? remotePairingUdid.toUpperCase() : undefined,
21
+ altIRK: Buffer.isBuffer(altIRK) && altIRK.length === ALT_IRK_LENGTH ? altIRK : undefined,
22
+ };
23
+ }
24
+ //# sourceMappingURL=peer-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-identity.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing-protocol/peer-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAC,cAAc,EAAE,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAQ9C;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAgD;IAClF,MAAM,IAAI,GAAG,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,kBAAkB,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAClC,OAAO;QACL,iBAAiB,EACf,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;QAC1G,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KACzF,CAAC;AACJ,CAAC"}
@@ -5,7 +5,7 @@ export declare class PairingStorage implements PairingStorageInterface {
5
5
  private readonly config;
6
6
  private readonly box;
7
7
  constructor(config: PairingConfig);
8
- save(deviceId: string, ltpk: Buffer, ltsk: Buffer, remoteUnlockHostKey?: string, remotePairingUdid?: string): Promise<string>;
8
+ save(deviceId: string, record: PairRecord): Promise<string>;
9
9
  load(deviceId: string): Promise<PairRecord | null>;
10
10
  getAvailableDeviceIds(): Promise<string[]>;
11
11
  private createPlistContent;
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-storage.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/storage/pairing-storage.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAC,UAAU,EAAE,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAIpE,uEAAuE;AACvE,qBAAa,cAAe,YAAW,uBAAuB;IAGhD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAEQ,MAAM,EAAE,aAAa;IAI5C,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,mBAAmB,SAAK,EACxB,iBAAiB,SAAK,GACrB,OAAO,CAAC,MAAM,CAAC;IAiBZ,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAuClD,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBhD,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,sBAAsB;CAK/B"}
1
+ {"version":3,"file":"pairing-storage.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/storage/pairing-storage.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAC,UAAU,EAAE,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAOpE,uEAAuE;AACvE,qBAAa,cAAe,YAAW,uBAAuB;IAGhD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAEQ,MAAM,EAAE,aAAa;IAI5C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB3D,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAwClD,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBhD,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,sBAAsB;CAK/B"}
@@ -6,6 +6,8 @@ import { getLogger } from '../../logger.js';
6
6
  import { createXmlPlist, parseXmlPlist } from '../../plist/index.js';
7
7
  import { PairingError } from '../errors.js';
8
8
  const log = getLogger('PairingStorage');
9
+ // Plist key for the device altIRK received in pair-setup M6
10
+ const PEER_ALT_IRK_KEY = 'peer_alt_irk';
9
11
  /** Manages persistent storage of pairing credentials as plist files */
10
12
  export class PairingStorage {
11
13
  config;
@@ -14,10 +16,10 @@ export class PairingStorage {
14
16
  this.config = config;
15
17
  this.box = strongbox(STRONGBOX_CONTAINER_NAME);
16
18
  }
17
- async save(deviceId, ltpk, ltsk, remoteUnlockHostKey = '', remotePairingUdid = '') {
19
+ async save(deviceId, record) {
18
20
  try {
19
21
  const itemName = `${APPLETV_PAIRING_PREFIX}${deviceId}`;
20
- const plistContent = this.createPlistContent(ltpk, ltsk, remoteUnlockHostKey, remotePairingUdid);
22
+ const plistContent = this.createPlistContent(record);
21
23
  const item = await this.box.createItemWithValue(itemName, plistContent);
22
24
  const itemPath = item.id;
23
25
  log.info(`Pairing record saved to: ${itemPath}`);
@@ -53,6 +55,7 @@ export class PairingStorage {
53
55
  publicKey,
54
56
  remoteUnlockHostKey: parsed.remote_unlock_host_key || '',
55
57
  remotePairingUdid: typeof parsed.remote_pairing_udid === 'string' ? parsed.remote_pairing_udid.toUpperCase() : undefined,
58
+ altIRK: parseOptionalBinaryValue(parsed[PEER_ALT_IRK_KEY]),
56
59
  };
57
60
  }
58
61
  catch (error) {
@@ -82,12 +85,13 @@ export class PairingStorage {
82
85
  return [];
83
86
  }
84
87
  }
85
- createPlistContent(publicKey, privateKey, remoteUnlockHostKey, remotePairingUdid) {
88
+ createPlistContent({ publicKey, privateKey, remoteUnlockHostKey, remotePairingUdid = '', altIRK, }) {
86
89
  return createXmlPlist({
87
90
  private_key: privateKey,
88
91
  public_key: publicKey,
89
92
  remote_unlock_host_key: remoteUnlockHostKey,
90
93
  remote_pairing_udid: remotePairingUdid.toUpperCase(),
94
+ ...(altIRK ? { [PEER_ALT_IRK_KEY]: altIRK } : {}),
91
95
  });
92
96
  }
93
97
  getStrongboxSlugPrefix() {
@@ -96,4 +100,11 @@ export class PairingStorage {
96
100
  return basename(item.id).slice(0, -sentinel.length);
97
101
  }
98
102
  }
103
+ /** Reads an optional binary plist value stored either as data or as a base64 string. */
104
+ function parseOptionalBinaryValue(value) {
105
+ if (Buffer.isBuffer(value)) {
106
+ return value;
107
+ }
108
+ return typeof value === 'string' && value ? Buffer.from(value, 'base64') : undefined;
109
+ }
99
110
  //# sourceMappingURL=pairing-storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-storage.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/storage/pairing-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pairing-storage.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/storage/pairing-storage.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@ export interface PairRecord {
3
3
  privateKey: Buffer;
4
4
  remoteUnlockHostKey: string;
5
5
  remotePairingUdid?: string;
6
+ altIRK?: Buffer;
6
7
  }
7
8
  export interface PairingStorageInterface {
8
- save(deviceId: string, ltpk: Buffer, ltsk: Buffer, remoteUnlockHostKey?: string, remotePairingUdid?: string): Promise<string>;
9
+ save(deviceId: string, record: PairRecord): Promise<string>;
9
10
  load(deviceId: string): Promise<PairRecord | null>;
10
11
  getAvailableDeviceIds(): Promise<string[]>;
11
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/storage/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CACF,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,mBAAmB,CAAC,EAAE,MAAM,EAC5B,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACnD,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/storage/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACnD,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5C"}
@@ -0,0 +1,20 @@
1
+ import type { PairRecord } from '../storage/types.js';
2
+ import type { AppleTVDevice } from '../types.js';
3
+ export interface PairRecordCandidate {
4
+ identifier: string;
5
+ record: PairRecord;
6
+ }
7
+ export interface MatchedPairRecord extends PairRecordCandidate {
8
+ device: AppleTVDevice;
9
+ }
10
+ export interface PairRecordMatchResult {
11
+ matches: MatchedPairRecord[];
12
+ recordsWithoutAltIRK: string[];
13
+ devicesWithoutAuthTag: string[];
14
+ }
15
+ /**
16
+ * Matches discovered devices to pair records offline: a device belongs to the record whose stored
17
+ * altIRK reproduces the authTag it advertises. Records saved before altIRK was stored cannot match.
18
+ */
19
+ export declare function matchDevicesToPairRecords(devices: AppleTVDevice[], candidates: PairRecordCandidate[]): PairRecordMatchResult;
20
+ //# sourceMappingURL=pair-record-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pair-record-matcher.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/tunnel/pair-record-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,aAAa,EAAE,EACxB,UAAU,EAAE,mBAAmB,EAAE,GAChC,qBAAqB,CAqBvB"}
@@ -0,0 +1,24 @@
1
+ import { validateAuthTag } from '../utils/siphash.js';
2
+ /**
3
+ * Matches discovered devices to pair records offline: a device belongs to the record whose stored
4
+ * altIRK reproduces the authTag it advertises. Records saved before altIRK was stored cannot match.
5
+ */
6
+ export function matchDevicesToPairRecords(devices, candidates) {
7
+ const recordsWithoutAltIRK = candidates.filter(({ record }) => !record.altIRK).map(({ identifier }) => identifier);
8
+ const usableCandidates = candidates.flatMap(({ identifier, record }) => record.altIRK ? [{ identifier, record, altIRK: record.altIRK }] : []);
9
+ const devicesWithoutAuthTag = [];
10
+ const matches = [];
11
+ for (const device of devices) {
12
+ const { serviceIdentifier, authTag } = device;
13
+ if (!serviceIdentifier || !authTag) {
14
+ devicesWithoutAuthTag.push(device.identifier);
15
+ continue;
16
+ }
17
+ const match = usableCandidates.find(({ altIRK }) => validateAuthTag(altIRK, serviceIdentifier, authTag));
18
+ if (match) {
19
+ matches.push({ identifier: match.identifier, record: match.record, device });
20
+ }
21
+ }
22
+ return { matches, recordsWithoutAltIRK, devicesWithoutAuthTag };
23
+ }
24
+ //# sourceMappingURL=pair-record-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pair-record-matcher.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/tunnel/pair-record-matcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAiBpD;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAwB,EACxB,UAAiC;IAEjC,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IAC/G,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,EAAC,UAAU,EAAE,MAAM,EAAC,EAAE,EAAE,CACnE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CACnE,CAAC;IAEF,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,EAAC,iBAAiB,EAAE,OAAO,EAAC,GAAG,MAAM,CAAC;QAC5C,IAAI,CAAC,iBAAiB,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QACvG,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,EAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,OAAO,EAAC,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAC,CAAC;AAChE,CAAC"}
@@ -44,9 +44,15 @@ export declare class AppleTVTunnelService {
44
44
  */
45
45
  private logDiscoveredDevices;
46
46
  /**
47
- * Selects devices to process based on the specific device identifier
47
+ * Loads each pair record once; records that fail to load are recorded as failed attempts and skipped.
48
48
  */
49
- private selectDevicesToProcess;
49
+ private loadPairRecordCandidates;
50
+ /**
51
+ * Builds the ordered connection attempts: devices matched to a record by authTag first, then
52
+ * records without an altIRK (saved before it was stored) against every device no record matched.
53
+ * `specificDeviceIdentifier` may be a discovered device identifier or a pair record id.
54
+ */
55
+ private selectConnectionAttempts;
50
56
  /**
51
57
  * Validates pair records and returns the list of identifiers to try
52
58
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/tunnel/tunnel-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAgBhC,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mDAAmD,CAAC;AAGxF,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAKhD,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,cAAc;IALxB,OAAO,CAAC,uBAAuB,CAAK;gBAGjB,aAAa,EAAE,sBAAsB,EACrC,IAAI,EAAE,gBAAgB,EAC/B,cAAc,EAAE,MAAM;IAG1B,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC;IA8EnD,iBAAiB,IAAI,MAAM;CAG5B;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,cAAc,CAAK;;IAQ3B,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACG,eAAe,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAsBhF,WAAW,CACf,QAAQ,CAAC,EAAE,MAAM,EACjB,wBAAwB,CAAC,EAAE,MAAM,EACjC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;QACT,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,aAAa,CAAC;KACvB,CAAC;IAsDF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;YACW,yBAAyB;IAcvC;;OAEG;YACW,uBAAuB;IAiErC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,oBAAoB;YAOd,gBAAgB;YA4BhB,uBAAuB;YAcvB,iBAAiB;CAYhC"}
1
+ {"version":3,"file":"tunnel-service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/tunnel/tunnel-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAgBhC,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mDAAmD,CAAC;AAGxF,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAG/C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAKhD,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,cAAc;IALxB,OAAO,CAAC,uBAAuB,CAAK;gBAGjB,aAAa,EAAE,sBAAsB,EACrC,IAAI,EAAE,gBAAgB,EAC/B,cAAc,EAAE,MAAM;IAG1B,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC;IA8EnD,iBAAiB,IAAI,MAAM;CAG5B;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,cAAc,CAAK;;IAQ3B,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACG,eAAe,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAsBhF,WAAW,CACf,QAAQ,CAAC,EAAE,MAAM,EACjB,wBAAwB,CAAC,EAAE,MAAM,EACjC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;QACT,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,aAAa,CAAC;KACvB,CAAC;IAuCF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;YACW,wBAAwB;IAiBtC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAuDhC;;OAEG;YACW,yBAAyB;IAcvC;;OAEG;YACW,uBAAuB;IAiErC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,oBAAoB;YAOd,gBAAgB;YA4BhB,uBAAuB;YAcvB,iBAAiB;CAYhC"}