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.
- package/CHANGELOG.md +15 -0
- package/build/src/lib/apple-tv/constants.d.ts +1 -0
- package/build/src/lib/apple-tv/constants.d.ts.map +1 -1
- package/build/src/lib/apple-tv/constants.js +2 -0
- package/build/src/lib/apple-tv/constants.js.map +1 -1
- package/build/src/lib/apple-tv/discovered-device-mapper.d.ts.map +1 -1
- package/build/src/lib/apple-tv/discovered-device-mapper.js +2 -0
- package/build/src/lib/apple-tv/discovered-device-mapper.js.map +1 -1
- package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.d.ts +1 -2
- package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.d.ts.map +1 -1
- package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.js +24 -28
- package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.js.map +1 -1
- package/build/src/lib/apple-tv/pairing-protocol/peer-identity.d.ts +11 -0
- package/build/src/lib/apple-tv/pairing-protocol/peer-identity.d.ts.map +1 -0
- package/build/src/lib/apple-tv/pairing-protocol/peer-identity.js +24 -0
- package/build/src/lib/apple-tv/pairing-protocol/peer-identity.js.map +1 -0
- package/build/src/lib/apple-tv/storage/pairing-storage.d.ts +1 -1
- package/build/src/lib/apple-tv/storage/pairing-storage.d.ts.map +1 -1
- package/build/src/lib/apple-tv/storage/pairing-storage.js +14 -3
- package/build/src/lib/apple-tv/storage/pairing-storage.js.map +1 -1
- package/build/src/lib/apple-tv/storage/types.d.ts +2 -1
- package/build/src/lib/apple-tv/storage/types.d.ts.map +1 -1
- package/build/src/lib/apple-tv/tunnel/pair-record-matcher.d.ts +20 -0
- package/build/src/lib/apple-tv/tunnel/pair-record-matcher.d.ts.map +1 -0
- package/build/src/lib/apple-tv/tunnel/pair-record-matcher.js +24 -0
- package/build/src/lib/apple-tv/tunnel/pair-record-matcher.js.map +1 -0
- package/build/src/lib/apple-tv/tunnel/tunnel-service.d.ts +8 -2
- package/build/src/lib/apple-tv/tunnel/tunnel-service.d.ts.map +1 -1
- package/build/src/lib/apple-tv/tunnel/tunnel-service.js +56 -36
- package/build/src/lib/apple-tv/tunnel/tunnel-service.js.map +1 -1
- package/build/src/lib/apple-tv/types.d.ts +4 -0
- package/build/src/lib/apple-tv/types.d.ts.map +1 -1
- package/build/src/lib/apple-tv/utils/index.d.ts +1 -0
- package/build/src/lib/apple-tv/utils/index.d.ts.map +1 -1
- package/build/src/lib/apple-tv/utils/index.js +1 -0
- package/build/src/lib/apple-tv/utils/index.js.map +1 -1
- package/build/src/lib/apple-tv/utils/siphash.d.ts +16 -0
- package/build/src/lib/apple-tv/utils/siphash.d.ts.map +1 -0
- package/build/src/lib/apple-tv/utils/siphash.js +84 -0
- package/build/src/lib/apple-tv/utils/siphash.js.map +1 -0
- package/build/src/lib/discovery/mdns-discovery-backend.js +2 -0
- package/build/src/lib/discovery/mdns-discovery-backend.js.map +1 -1
- package/build/src/lib/discovery/types.d.ts +4 -0
- package/build/src/lib/discovery/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/lib/apple-tv/constants.ts +3 -0
- package/src/lib/apple-tv/discovered-device-mapper.ts +2 -0
- package/src/lib/apple-tv/pairing-protocol/pairing-protocol.ts +26 -35
- package/src/lib/apple-tv/pairing-protocol/peer-identity.ts +34 -0
- package/src/lib/apple-tv/storage/pairing-storage.ts +22 -14
- package/src/lib/apple-tv/storage/types.ts +2 -7
- package/src/lib/apple-tv/tunnel/pair-record-matcher.ts +48 -0
- package/src/lib/apple-tv/tunnel/tunnel-service.ts +73 -44
- package/src/lib/apple-tv/types.ts +4 -0
- package/src/lib/apple-tv/utils/index.ts +1 -0
- package/src/lib/apple-tv/utils/siphash.ts +93 -0
- package/src/lib/discovery/mdns-discovery-backend.ts +2 -0
- 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,
|
|
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"}
|
|
@@ -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;
|
|
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":"
|
|
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 {
|
|
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
|
|
77
|
-
return this.createPairingResult(device, ltpk, ltsk,
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
496
|
-
|
|
497
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,sBAAsB,EAAE,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,MAAM,EACN,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,IAAI,GACL,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAC,0BAA0B,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAEvH,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAG3E,MAAM,GAAG,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,OAAO,eAAe;IAIP;IACA;IAJX,eAAe,GAAG,CAAC,CAAC;IAE5B,YACmB,aAAqC,EACrC,SAA6B;QAD7B,kBAAa,GAAb,aAAa,CAAwB;QACrC,cAAS,GAAT,SAAS,CAAoB;IAC7C,CAAC;IAEJ,KAAK,CAAC,kBAAkB,CAAC,MAAqB;QAC5C,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC;YACH,oBAAoB;YACpB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE9B,oCAAoC;YACpC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAErC,+BAA+B;YAC/B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC,CAAC;YAElE,6BAA6B;YAC7B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAE/D,oCAAoC;YACpC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACvE,MAAM,EAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAC,GAAG,sBAAsB,EAAE,CAAC;YACrE,MAAM,eAAe,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEnD,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;YAEvG,gCAAgC;YAChC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAEpF,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,OAAY,EAAE,cAAuB;QACzD,OAAO;YACL,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,EAAE,EAAE,OAAO;iBACZ;aACF;YACD,YAAY,EAAE,MAAM;YACpB,cAAc,EAAE,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE;SACzD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,MAAc,EAAE,IAAY;QACjD,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;YAChF,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI;gBACJ,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,qBAAqB,CAAC;aACtE,CAAC,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,WAAmB;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9C,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,uBAAuB;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrD,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAE3C,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAC3D,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACnD,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,kBAAkB;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvD,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACK,6BAA6B,CAAC,QAAa;QACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC;QAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,wBAAwB,CAAC,SAAiC;QACtE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAEvD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC5D,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAExC,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAClD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAEjC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,6DAA6D,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QACpG,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACK,sBAAsB;QAC5B,OAAO;YACL,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,EAAE,EAAE;wBACF,OAAO,EAAE;4BACP,EAAE,EAAE;gCACF,SAAS,EAAE;oCACT,EAAE,EAAE;wCACF,WAAW,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC;wCACtC,mBAAmB,EAAE,EAAE;qCACxB;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;YACD,YAAY,EAAE,MAAM;YACpB,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,6BAA6B;QACnC,MAAM,eAAe,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,0BAA0B,CAAC,eAAe,CAAC,CAAC;QAEhE,OAAO,IAAI,CAAC,aAAa,CAAC;YACxB,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,WAAW,EAAE;wBACX,EAAE,EAAE;4BACF,IAAI,EAAE,WAAW;4BACjB,IAAI,EAAE,qBAAqB;4BAC3B,eAAe,EAAE,IAAI;yBACtB;qBACF;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,6BAA6B;QACnC,OAAO,IAAI,CAAC,aAAa,CAAC;YACxB,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,gBAAgB,EAAE,EAAE;iBACrB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,+BAA+B;QACrC,MAAM,SAAS,GAAG,4BAA4B,EAAE,CAAC;QAEjD,OAAO,IAAI,CAAC,aAAa,CAAC;YACxB,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,WAAW,EAAE;wBACX,EAAE,EAAE;4BACF,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,oBAAoB;4BAC1B,WAAW,EAAE,QAAQ,EAAE;4BACvB,eAAe,EAAE,IAAI;yBACtB;qBACF;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,iBAAiB,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEzC,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CAAC,+BAA+B,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,mBAAmB,CAAC,SAAiC;QAC3D,MAAM,WAAW,GAAG,SAAS,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,YAAY,CAAC,sCAAsC,EAAE,wBAAwB,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,IAAI,YAAY,CAAC,wCAAwC,SAAS,EAAE,EAAE,gBAAgB,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC;QAC7G,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,YAAY,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,eAAe,CAAC,GAAW,EAAE,SAAiC;QACpE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,eAAe,GAAG,SAAS,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;YAEvE,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;YAClC,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YACzC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;YACtB,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;YAC5C,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,YAAY,CAAC,SAAoB;QAC7C,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC;QAC5C,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;QAE7C,MAAM,QAAQ,GAAe;YAC3B;gBACE,IAAI,EAAE,wBAAwB,CAAC,KAAK;gBACpC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;aACvC;YACD,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,wBAAwB,CAAC,UAAU,CAAC;YAC5E,EAAC,IAAI,EAAE,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAC;SAC1D,CAAC;QACF,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACjC,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,WAAW,EAAE;wBACX,EAAE,EAAE;4BACF,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;4BAC5B,IAAI,EAAE,oBAAoB;4BAC1B,WAAW,EAAE,QAAQ,EAAE;4BACvB,eAAe,EAAE,KAAK;yBACvB;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACK,wBAAwB,CAAC,QAAa;QAC5C,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAClE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChG,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,WAAW,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,YAAY,CAAC,uCAAuC,EAAE,WAAW,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,aAAa,CACzB,UAAkB,EAClB,eAAuB,EACvB,IAAY,EACZ,IAAY,EACZ,UAAkB;QAElB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC;gBACtB,GAAG,EAAE,UAAU;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC;gBACrD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC;gBACrD,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;YAEH,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACnE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;YAE5D,MAAM,QAAQ,GAAe;gBAC3B;oBACE,IAAI,EAAE,wBAAwB,CAAC,UAAU;oBACzC,IAAI,EAAE,qBAAqB;iBAC5B;gBACD,EAAC,IAAI,EAAE,wBAAwB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAC;gBACvD,EAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAC;gBAC3D,EAAC,IAAI,EAAE,SAAgB,EAAE,IAAI,EAAE,UAAU,EAAC;aAC3C,CAAC;YAEF,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,uBAAuB,CAAC;gBACxC,SAAS,EAAE,OAAO;gBAClB,GAAG,EAAE,UAAU;gBACf,KAAK;aACN,CAAC,CAAC;YAEH,MAAM,iBAAiB,GAAe;gBACpC,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,wBAAwB,CAAC,cAAc,CAAC;gBAC1E;oBACE,IAAI,EAAE,wBAAwB,CAAC,KAAK;oBACpC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;iBACvC;aACF,CAAC;YACF,MAAM,YAAY,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAEnD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBACjC,KAAK,EAAE;oBACL,EAAE,EAAE;wBACF,WAAW,EAAE;4BACX,EAAE,EAAE;gCACF,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;gCACrC,IAAI,EAAE,oBAAoB;gCAC1B,WAAW,EAAE,QAAQ,EAAE;gCACvB,eAAe,EAAE,KAAK;6BACvB;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,UAAe,EAAE,UAAkB;QAC3D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACrE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC;QAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAE/C,GAAG,CAAC,KAAK,CACP,wBAAwB,EACxB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAChE,CAAC;QAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,EAAE,EAAE,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QACxE,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,uBAAuB,CAAC;gBACxC,UAAU,EAAE,aAAa;gBACzB,GAAG,EAAE,UAAU;gBACf,KAAK;aACN,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACjD,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACpE,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;YACtE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,GAAG,CAAC,KAAK,CAAC,+BAA+B,iBAAiB,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,wBAAwB,CAAC,YAAgD;QAC/E,MAAM,IAAI,GAAG,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,kBAAkB,CAAC;QACzD,OAAO,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,CAAC;IAEO,iBAAiB,CAAC,KAAc;QACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzG,CAAC;IAED;;;;;OAKG;IACK,oBAAoB,CAAC,UAAkB;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC;YACrB,GAAG,EAAE,UAAU;YACf,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC;YACxD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC;YACxD,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QAEH,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACrC,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;SACtB,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,mBAAmB,CAC/B,MAAqB,EACrB,IAAY,EACZ,IAAY,EACZ,iBAA0B;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,sBAAsB,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACpF,OAAO,EAAC,QAAQ,EAAE,WAAW,EAAC,CAAC;IACjC,CAAC;IAEO,sBAAsB,CAAC,MAAqB,EAAE,iBAA0B;QAC9E,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,iBAAiB,CAAC,WAAW,EAAE,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,gBAAgB,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClG,GAAG,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;YAC7F,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,YAAY,CACpB,kGAAkG,EAClG,6BAA6B,CAC9B,CAAC;IACJ,CAAC;CACF"}
|
|
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,
|
|
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;
|
|
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,
|
|
19
|
+
async save(deviceId, record) {
|
|
18
20
|
try {
|
|
19
21
|
const itemName = `${APPLETV_PAIRING_PREFIX}${deviceId}`;
|
|
20
|
-
const plistContent = this.createPlistContent(
|
|
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":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAC,sBAAsB,EAAE,wBAAwB,EAAC,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAE,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAI1C,MAAM,GAAG,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAExC,uEAAuE;AACvE,MAAM,OAAO,cAAc;IAGI;IAFZ,GAAG,CAAC;IAErB,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAChD,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,IAAI,
|
|
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,
|
|
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;
|
|
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
|
-
*
|
|
47
|
+
* Loads each pair record once; records that fail to load are recorded as failed attempts and skipped.
|
|
48
48
|
*/
|
|
49
|
-
private
|
|
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;
|
|
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"}
|