homebridge-midea-platform 1.1.2-beta.3 → 1.1.2-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/.husky/pre-commit +0 -0
  2. package/dist/accessory/AccessoryFactory.d.ts +12 -12
  3. package/dist/accessory/AccessoryFactory.js +31 -31
  4. package/dist/accessory/AirConditionerAccessory.d.ts +86 -86
  5. package/dist/accessory/AirConditionerAccessory.js +560 -560
  6. package/dist/accessory/AirConditionerAccessory.js.map +1 -1
  7. package/dist/accessory/BaseAccessory.d.ts +11 -11
  8. package/dist/accessory/BaseAccessory.js +21 -21
  9. package/dist/accessory/DehumidifierAccessory.d.ts +45 -45
  10. package/dist/accessory/DehumidifierAccessory.js +344 -344
  11. package/dist/accessory/ElectricWaterHeaterAccessory.d.ts +44 -44
  12. package/dist/accessory/ElectricWaterHeaterAccessory.js +176 -176
  13. package/dist/accessory/FanAccessory.d.ts +39 -39
  14. package/dist/accessory/FanAccessory.js +123 -123
  15. package/dist/accessory/FrontLoadWasherAccessory.d.ts +30 -30
  16. package/dist/accessory/FrontLoadWasherAccessory.js +60 -60
  17. package/dist/accessory/GasWaterHeaterAccessory.d.ts +51 -51
  18. package/dist/accessory/GasWaterHeaterAccessory.js +216 -216
  19. package/dist/core/MideaCloud.d.ts +35 -35
  20. package/dist/core/MideaCloud.js +350 -350
  21. package/dist/core/MideaConstants.d.ts +49 -49
  22. package/dist/core/MideaConstants.js +57 -57
  23. package/dist/core/MideaDevice.d.ts +76 -76
  24. package/dist/core/MideaDevice.js +409 -409
  25. package/dist/core/MideaDiscover.d.ts +35 -35
  26. package/dist/core/MideaDiscover.js +212 -212
  27. package/dist/core/MideaMessage.d.ts +75 -75
  28. package/dist/core/MideaMessage.js +184 -184
  29. package/dist/core/MideaPacketBuilder.d.ts +10 -10
  30. package/dist/core/MideaPacketBuilder.js +60 -60
  31. package/dist/core/MideaSecurity.d.ts +63 -63
  32. package/dist/core/MideaSecurity.d.ts.map +1 -1
  33. package/dist/core/MideaSecurity.js +251 -242
  34. package/dist/core/MideaSecurity.js.map +1 -1
  35. package/dist/core/MideaUtils.d.ts +32 -32
  36. package/dist/core/MideaUtils.js +181 -181
  37. package/dist/devices/DeviceFactory.d.ts +12 -12
  38. package/dist/devices/DeviceFactory.js +33 -33
  39. package/dist/devices/a1/MideaA1Device.d.ts +76 -76
  40. package/dist/devices/a1/MideaA1Device.js +136 -136
  41. package/dist/devices/a1/MideaA1Message.d.ts +40 -40
  42. package/dist/devices/a1/MideaA1Message.js +198 -198
  43. package/dist/devices/ac/MideaACDevice.d.ts +100 -100
  44. package/dist/devices/ac/MideaACDevice.js +370 -370
  45. package/dist/devices/ac/MideaACMessage.d.ts +92 -92
  46. package/dist/devices/ac/MideaACMessage.js +589 -589
  47. package/dist/devices/db/MideaDBDevice.d.ts +29 -29
  48. package/dist/devices/db/MideaDBDevice.js +88 -88
  49. package/dist/devices/db/MideaDBMessage.d.ts +32 -32
  50. package/dist/devices/db/MideaDBMessage.js +101 -101
  51. package/dist/devices/e2/MideaE2Device.d.ts +44 -44
  52. package/dist/devices/e2/MideaE2Device.js +119 -119
  53. package/dist/devices/e2/MideaE2Message.d.ts +33 -33
  54. package/dist/devices/e2/MideaE2Message.js +132 -132
  55. package/dist/devices/e3/MideaE3Device.d.ts +43 -43
  56. package/dist/devices/e3/MideaE3Device.js +125 -125
  57. package/dist/devices/e3/MideaE3Message.d.ts +51 -51
  58. package/dist/devices/e3/MideaE3Message.js +136 -136
  59. package/dist/devices/fa/MideaFADevice.d.ts +36 -36
  60. package/dist/devices/fa/MideaFADevice.js +92 -92
  61. package/dist/devices/fa/MideaFAMessage.d.ts +38 -38
  62. package/dist/devices/fa/MideaFAMessage.js +98 -98
  63. package/dist/index.d.ts +6 -6
  64. package/dist/index.js +6 -6
  65. package/dist/platform.d.ts +60 -60
  66. package/dist/platform.d.ts.map +1 -1
  67. package/dist/platform.js +212 -213
  68. package/dist/platform.js.map +1 -1
  69. package/dist/platformUtils.d.ts +98 -98
  70. package/dist/platformUtils.js +96 -96
  71. package/dist/settings.d.ts +8 -8
  72. package/dist/settings.js +11 -11
  73. package/package.json +1 -1
@@ -1,243 +1,252 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LocalSecurity = exports.ArtisonClimaSecurity = exports.NetHomePlusSecurity = exports.SimpleSecurity = exports.MeijuCloudSecurity = exports.MSmartHomeCloudSecurity = exports.ProxiedSecurity = exports.CloudSecurity = void 0;
4
- const crypto_1 = require("crypto");
5
- const MideaConstants_1 = require("./MideaConstants");
6
- const MideaUtils_1 = require("./MideaUtils");
7
- const querystring_1 = require("querystring");
8
- function unescape_plus(str) {
9
- return (0, querystring_1.unescape)(str.replace(/\+/g, ' '));
10
- }
11
- class CloudSecurity {
12
- constructor(login_key, iot_key, hmac_key) {
13
- this.LOGIN_KEY = login_key;
14
- if (hmac_key) {
15
- this.HMAC_KEY = Buffer.from(hmac_key.toString(16), 'hex').toString();
16
- }
17
- if (iot_key) {
18
- this.IOT_KEY = Buffer.from(iot_key.toString(16), 'hex').toString();
19
- }
20
- }
21
- // Generate a HMAC signature for the provided data and random data.
22
- sign(data, random) {
23
- const message = `${this.IOT_KEY}${data}${random}`;
24
- return (0, crypto_1.createHmac)('sha256', this.HMAC_KEY).update(message).digest('hex');
25
- }
26
- // Encrypt the password for cloud API password.
27
- encrpytPassword(loginId, password) {
28
- const m1 = (0, crypto_1.createHash)('sha256').update(password);
29
- const login_hash = `${loginId}${m1.digest('hex')}${this.LOGIN_KEY}`;
30
- const m2 = (0, crypto_1.createHash)('sha256').update(login_hash);
31
- return m2.digest('hex');
32
- }
33
- static getUDPID(device_id_buf) {
34
- const data = (0, crypto_1.createHash)('sha256').update(device_id_buf).digest();
35
- const output = Buffer.alloc(16);
36
- for (let i = 0; i < 16; i++) {
37
- output[i] = data[i] ^ data[i + 16];
38
- }
39
- return output.toString('hex');
40
- }
41
- }
42
- exports.CloudSecurity = CloudSecurity;
43
- class ProxiedSecurity extends CloudSecurity {
44
- getAppKeyAndIv() {
45
- const hash = (0, crypto_1.createHash)('sha256').update(Buffer.from(this.APP_KEY, 'utf8')).digest('hex');
46
- return {
47
- appKey: Buffer.from(hash.substring(0, 16)),
48
- iv: Buffer.from(hash.substring(16, 32)),
49
- };
50
- }
51
- encryptAESAppKey(data) {
52
- const { appKey, iv } = this.getAppKeyAndIv();
53
- const cipher = (0, crypto_1.createCipheriv)('aes-128-cbc', appKey, iv);
54
- return Buffer.concat([cipher.update(data), cipher.final()]);
55
- }
56
- decryptAESAppKey(data) {
57
- const { appKey, iv } = this.getAppKeyAndIv();
58
- const decipher = (0, crypto_1.createDecipheriv)('aes-128-cbc', appKey, iv);
59
- return Buffer.concat([decipher.update(data), decipher.final()]);
60
- }
61
- }
62
- exports.ProxiedSecurity = ProxiedSecurity;
63
- class MSmartHomeCloudSecurity extends ProxiedSecurity {
64
- constructor() {
65
- super(MSmartHomeCloudSecurity._LOGIN_KEY, BigInt('7882822598523843940'), BigInt('117390035944627627450677220413733956185864939010425'));
66
- this.APP_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
67
- }
68
- encrpytIAMPassword(loginId, password) {
69
- const m1 = (0, crypto_1.createHash)('md5').update(password);
70
- const m2 = (0, crypto_1.createHash)('md5').update(m1.digest('hex'));
71
- const login_hash = `${loginId}${m2.digest('hex')}${this.LOGIN_KEY}`;
72
- const sha = (0, crypto_1.createHash)('sha256').update(login_hash);
73
- return sha.digest('hex');
74
- }
75
- }
76
- exports.MSmartHomeCloudSecurity = MSmartHomeCloudSecurity;
77
- MSmartHomeCloudSecurity._LOGIN_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
78
- class MeijuCloudSecurity extends ProxiedSecurity {
79
- constructor() {
80
- super(MeijuCloudSecurity._LOGIN_KEY, BigInt('9795516279659324117647275084689641883661667'), BigInt('117390035944627627450677220413733956185864939010425'));
81
- this.APP_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
82
- }
83
- encrpytIAMPassword(_loginId, password) {
84
- const m1 = (0, crypto_1.createHash)('md5').update(password);
85
- const m2 = (0, crypto_1.createHash)('md5').update(m1.digest('hex'));
86
- return m2.digest('hex');
87
- }
88
- }
89
- exports.MeijuCloudSecurity = MeijuCloudSecurity;
90
- MeijuCloudSecurity._LOGIN_KEY = 'ad0ee21d48a64bf49f4fb583ab76e799';
91
- class SimpleSecurity extends CloudSecurity {
92
- constructor(login_key) {
93
- super(login_key);
94
- }
95
- encrpytIAMPassword() {
96
- return '';
97
- }
98
- sign(url, query) {
99
- const parsedUrl = new URL(url);
100
- const path = parsedUrl.pathname;
101
- return (0, crypto_1.createHash)('sha256')
102
- .update(Buffer.from(`${path}${unescape_plus(query)}${this.LOGIN_KEY}`, 'ascii'))
103
- .digest('hex');
104
- }
105
- }
106
- exports.SimpleSecurity = SimpleSecurity;
107
- class NetHomePlusSecurity extends SimpleSecurity {
108
- constructor() {
109
- super(NetHomePlusSecurity._LOGIN_KEY);
110
- }
111
- }
112
- exports.NetHomePlusSecurity = NetHomePlusSecurity;
113
- NetHomePlusSecurity._LOGIN_KEY = '3742e9e5842d4ad59c2db887e12449f9';
114
- class ArtisonClimaSecurity extends SimpleSecurity {
115
- constructor() {
116
- super(ArtisonClimaSecurity._LOGIN_KEY);
117
- }
118
- }
119
- exports.ArtisonClimaSecurity = ArtisonClimaSecurity;
120
- ArtisonClimaSecurity._LOGIN_KEY = '434a209a5ce141c3b726de067835d7f0';
121
- class LocalSecurity {
122
- constructor() {
123
- this.aes_key = Buffer.from(BigInt('141661095494369103254425781617665632877').toString(16), 'hex');
124
- this.salt = Buffer.from(BigInt('233912452794221312800602098970898185176935770387238278451789080441632479840061417076563').toString(16), 'hex');
125
- this.iv = Buffer.alloc(16);
126
- this.request_count = 0;
127
- this.response_count = 0;
128
- }
129
- aes_cbc_encrpyt(raw, key) {
130
- const cipher = (0, crypto_1.createCipheriv)('aes-256-cbc', key, this.iv);
131
- cipher.setAutoPadding(false);
132
- return Buffer.concat([cipher.update(raw), cipher.final()]);
133
- }
134
- aes_cbc_decrypt(raw, key) {
135
- const decipher = (0, crypto_1.createDecipheriv)('aes-256-cbc', key, this.iv);
136
- decipher.setAutoPadding(false);
137
- return Buffer.concat([decipher.update(raw), decipher.final()]);
138
- }
139
- aes_encrypt(data) {
140
- const cipher = (0, crypto_1.createCipheriv)('aes-128-ecb', this.aes_key, null);
141
- return Buffer.concat([cipher.update(data), cipher.final()]);
142
- }
143
- aes_decrypt(data) {
144
- const decipher = (0, crypto_1.createDecipheriv)('aes-128-ecb', this.aes_key, null);
145
- return Buffer.concat([decipher.update(data), decipher.final()]);
146
- }
147
- encode32_data(raw) {
148
- return (0, crypto_1.createHash)('md5')
149
- .update(Buffer.concat([raw, this.salt]))
150
- .digest();
151
- }
152
- tcp_key_from_resp(response, key) {
153
- if (response.toString() === 'ERROR') {
154
- throw Error('Authentication response is ERROR, cannot get TCP key.');
155
- }
156
- if (response.length !== 64) {
157
- throw Error('Authentication response has unexpected data length, cannot get TCP key..');
158
- }
159
- const payload = response.subarray(0, 32);
160
- const sign = response.subarray(32, response.length);
161
- const plain = this.aes_cbc_decrypt(payload, key);
162
- if ((0, crypto_1.createHash)('sha256').update(plain).digest().compare(sign) !== 0) {
163
- throw Error('Authentication sign does not match, cannot get TCP key.');
164
- }
165
- this.tcp_key = (0, MideaUtils_1.strxor)(plain, key);
166
- this.request_count = 0;
167
- this.response_count = 0;
168
- return this.tcp_key;
169
- }
170
- encode_8370(data, message_type) {
171
- let header = Buffer.from([0x83, 0x70]);
172
- let size = data.length;
173
- let padding = 0;
174
- if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST || message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
175
- if ((size + 2) % 16 !== 0) {
176
- padding = 16 - ((size + 2) & 0xf);
177
- size += padding + 32;
178
- data = Buffer.concat([data, (0, crypto_1.randomBytes)(padding)]);
179
- }
180
- }
181
- header = Buffer.concat([header, (0, MideaUtils_1.numberToUint8Array)(size, 2, MideaConstants_1.Endianness.Big)]);
182
- header = Buffer.concat([header, Buffer.from([0x20, (padding << 4) | message_type])]);
183
- data = Buffer.concat([(0, MideaUtils_1.numberToUint8Array)(this.request_count, 2, MideaConstants_1.Endianness.Big), data]);
184
- this.request_count += 1;
185
- if (this.request_count >= 0xffff) {
186
- this.request_count = 0;
187
- }
188
- if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST || message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
189
- const sign = (0, crypto_1.createHash)('sha256')
190
- .update(Buffer.concat([header, data]))
191
- .digest();
192
- data = Buffer.concat([this.aes_cbc_encrpyt(data, this.tcp_key), sign]);
193
- }
194
- return Buffer.concat([header, data]);
195
- }
196
- decode_8370(data) {
197
- if (data.length < 6) {
198
- return [[], data];
199
- }
200
- const header = data.subarray(0, 6);
201
- if (header[0] !== 0x83 || header[1] !== 0x70) {
202
- throw new Error('Not an 8370 message.');
203
- }
204
- const size = header.subarray(2, 4).readUInt16BE() + 8;
205
- let leftover = Buffer.alloc(0);
206
- if (data.length < size) {
207
- return [[], data];
208
- }
209
- else if (data.length > size) {
210
- leftover = data.subarray(size, data.length);
211
- data = data.subarray(0, size);
212
- }
213
- if (header[4] !== 0x20) {
214
- throw new Error('Missing byte 4');
215
- }
216
- const padding = header[5] >> 4;
217
- const message_type_received = header[5] & 0xf;
218
- data = data.subarray(6, data.length);
219
- if ([MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE, MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST].includes(message_type_received)) {
220
- const sign = data.subarray(data.length - 32, data.length);
221
- data = data.subarray(0, data.length - 32);
222
- data = this.aes_cbc_decrypt(data, this.tcp_key);
223
- if ((0, crypto_1.createHash)('sha256')
224
- .update(Buffer.concat([header, data]))
225
- .digest()
226
- .compare(sign) !== 0) {
227
- throw new Error('Sign does not match');
228
- }
229
- if (padding) {
230
- data = data.subarray(0, data.length - padding);
231
- }
232
- }
233
- this.response_count = data.subarray(0, 2).readUInt16BE();
234
- data = data.subarray(2, data.length);
235
- if (leftover.length > 0) {
236
- const [packets, incomplete] = this.decode_8370(leftover);
237
- return [[data, ...packets], incomplete];
238
- }
239
- return [[data], leftover];
240
- }
241
- }
242
- exports.LocalSecurity = LocalSecurity;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalSecurity = exports.ArtisonClimaSecurity = exports.NetHomePlusSecurity = exports.SimpleSecurity = exports.MeijuCloudSecurity = exports.MSmartHomeCloudSecurity = exports.ProxiedSecurity = exports.CloudSecurity = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const MideaConstants_1 = require("./MideaConstants");
6
+ const MideaUtils_1 = require("./MideaUtils");
7
+ const querystring_1 = require("querystring");
8
+ function unescape_plus(str) {
9
+ return (0, querystring_1.unescape)(str.replace(/\+/g, ' '));
10
+ }
11
+ class CloudSecurity {
12
+ constructor(login_key, iot_key, hmac_key) {
13
+ this.LOGIN_KEY = login_key;
14
+ if (hmac_key) {
15
+ this.HMAC_KEY = Buffer.from(hmac_key.toString(16), 'hex').toString();
16
+ }
17
+ if (iot_key) {
18
+ this.IOT_KEY = Buffer.from(iot_key.toString(16), 'hex').toString();
19
+ }
20
+ }
21
+ // Generate a HMAC signature for the provided data and random data.
22
+ sign(data, random) {
23
+ const message = `${this.IOT_KEY}${data}${random}`;
24
+ return (0, crypto_1.createHmac)('sha256', this.HMAC_KEY).update(message).digest('hex');
25
+ }
26
+ // Encrypt the password for cloud API password.
27
+ encrpytPassword(loginId, password) {
28
+ const m1 = (0, crypto_1.createHash)('sha256').update(password);
29
+ const login_hash = `${loginId}${m1.digest('hex')}${this.LOGIN_KEY}`;
30
+ const m2 = (0, crypto_1.createHash)('sha256').update(login_hash);
31
+ return m2.digest('hex');
32
+ }
33
+ static getUDPID(device_id_buf) {
34
+ const data = (0, crypto_1.createHash)('sha256').update(device_id_buf).digest();
35
+ const output = Buffer.alloc(16);
36
+ for (let i = 0; i < 16; i++) {
37
+ output[i] = data[i] ^ data[i + 16];
38
+ }
39
+ return output.toString('hex');
40
+ }
41
+ }
42
+ exports.CloudSecurity = CloudSecurity;
43
+ class ProxiedSecurity extends CloudSecurity {
44
+ getAppKeyAndIv() {
45
+ const hash = (0, crypto_1.createHash)('sha256').update(Buffer.from(this.APP_KEY, 'utf8')).digest('hex');
46
+ return {
47
+ appKey: Buffer.from(hash.substring(0, 16)),
48
+ iv: Buffer.from(hash.substring(16, 32)),
49
+ };
50
+ }
51
+ encryptAESAppKey(data) {
52
+ const { appKey, iv } = this.getAppKeyAndIv();
53
+ const cipher = (0, crypto_1.createCipheriv)('aes-128-cbc', appKey, iv);
54
+ return Buffer.concat([cipher.update(data), cipher.final()]);
55
+ }
56
+ decryptAESAppKey(data) {
57
+ const { appKey, iv } = this.getAppKeyAndIv();
58
+ const decipher = (0, crypto_1.createDecipheriv)('aes-128-cbc', appKey, iv);
59
+ return Buffer.concat([decipher.update(data), decipher.final()]);
60
+ }
61
+ }
62
+ exports.ProxiedSecurity = ProxiedSecurity;
63
+ class MSmartHomeCloudSecurity extends ProxiedSecurity {
64
+ constructor() {
65
+ super(MSmartHomeCloudSecurity._LOGIN_KEY, BigInt('7882822598523843940'), BigInt('117390035944627627450677220413733956185864939010425'));
66
+ this.APP_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
67
+ }
68
+ encrpytIAMPassword(loginId, password) {
69
+ const m1 = (0, crypto_1.createHash)('md5').update(password);
70
+ const m2 = (0, crypto_1.createHash)('md5').update(m1.digest('hex'));
71
+ const login_hash = `${loginId}${m2.digest('hex')}${this.LOGIN_KEY}`;
72
+ const sha = (0, crypto_1.createHash)('sha256').update(login_hash);
73
+ return sha.digest('hex');
74
+ }
75
+ }
76
+ exports.MSmartHomeCloudSecurity = MSmartHomeCloudSecurity;
77
+ MSmartHomeCloudSecurity._LOGIN_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
78
+ class MeijuCloudSecurity extends ProxiedSecurity {
79
+ constructor() {
80
+ super(MeijuCloudSecurity._LOGIN_KEY, BigInt('9795516279659324117647275084689641883661667'), BigInt('117390035944627627450677220413733956185864939010425'));
81
+ this.APP_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
82
+ }
83
+ encrpytIAMPassword(_loginId, password) {
84
+ const m1 = (0, crypto_1.createHash)('md5').update(password);
85
+ const m2 = (0, crypto_1.createHash)('md5').update(m1.digest('hex'));
86
+ return m2.digest('hex');
87
+ }
88
+ }
89
+ exports.MeijuCloudSecurity = MeijuCloudSecurity;
90
+ MeijuCloudSecurity._LOGIN_KEY = 'ad0ee21d48a64bf49f4fb583ab76e799';
91
+ class SimpleSecurity extends CloudSecurity {
92
+ constructor(login_key) {
93
+ super(login_key);
94
+ }
95
+ encrpytIAMPassword() {
96
+ return '';
97
+ }
98
+ sign(url, query) {
99
+ const parsedUrl = new URL(url);
100
+ const path = parsedUrl.pathname;
101
+ return (0, crypto_1.createHash)('sha256')
102
+ .update(Buffer.from(`${path}${unescape_plus(query)}${this.LOGIN_KEY}`, 'ascii'))
103
+ .digest('hex');
104
+ }
105
+ }
106
+ exports.SimpleSecurity = SimpleSecurity;
107
+ class NetHomePlusSecurity extends SimpleSecurity {
108
+ constructor() {
109
+ super(NetHomePlusSecurity._LOGIN_KEY);
110
+ }
111
+ }
112
+ exports.NetHomePlusSecurity = NetHomePlusSecurity;
113
+ NetHomePlusSecurity._LOGIN_KEY = '3742e9e5842d4ad59c2db887e12449f9';
114
+ class ArtisonClimaSecurity extends SimpleSecurity {
115
+ constructor() {
116
+ super(ArtisonClimaSecurity._LOGIN_KEY);
117
+ }
118
+ }
119
+ exports.ArtisonClimaSecurity = ArtisonClimaSecurity;
120
+ ArtisonClimaSecurity._LOGIN_KEY = '434a209a5ce141c3b726de067835d7f0';
121
+ class LocalSecurity {
122
+ constructor() {
123
+ this.aes_key = Buffer.from(BigInt('141661095494369103254425781617665632877').toString(16), 'hex');
124
+ this.salt = Buffer.from(BigInt('233912452794221312800602098970898185176935770387238278451789080441632479840061417076563').toString(16), 'hex');
125
+ this.iv = Buffer.alloc(16);
126
+ this.request_count = 0;
127
+ this.response_count = 0;
128
+ this.tcp_key = Buffer.alloc(0);
129
+ }
130
+ aes_cbc_encrpyt(raw, key) {
131
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-cbc', key, this.iv);
132
+ cipher.setAutoPadding(false);
133
+ return Buffer.concat([cipher.update(raw), cipher.final()]);
134
+ }
135
+ aes_cbc_decrypt(raw, key) {
136
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-cbc', key, this.iv);
137
+ decipher.setAutoPadding(false);
138
+ return Buffer.concat([decipher.update(raw), decipher.final()]);
139
+ }
140
+ aes_encrypt(data) {
141
+ const cipher = (0, crypto_1.createCipheriv)('aes-128-ecb', this.aes_key, null);
142
+ return Buffer.concat([cipher.update(data), cipher.final()]);
143
+ }
144
+ aes_decrypt(data) {
145
+ const decipher = (0, crypto_1.createDecipheriv)('aes-128-ecb', this.aes_key, null);
146
+ return Buffer.concat([decipher.update(data), decipher.final()]);
147
+ }
148
+ encode32_data(raw) {
149
+ return (0, crypto_1.createHash)('md5')
150
+ .update(Buffer.concat([raw, this.salt]))
151
+ .digest();
152
+ }
153
+ tcp_key_from_resp(response, key) {
154
+ if (response.toString() === 'ERROR') {
155
+ throw Error('Authentication response is ERROR, cannot get TCP key.');
156
+ }
157
+ if (response.length !== 64) {
158
+ throw Error('Authentication response has unexpected data length, cannot get TCP key..');
159
+ }
160
+ const payload = response.subarray(0, 32);
161
+ const sign = response.subarray(32, response.length);
162
+ const plain = this.aes_cbc_decrypt(payload, key);
163
+ if ((0, crypto_1.createHash)('sha256').update(plain).digest().compare(sign) !== 0) {
164
+ throw Error('Authentication sign does not match, cannot get TCP key.');
165
+ }
166
+ this.tcp_key = (0, MideaUtils_1.strxor)(plain, key);
167
+ this.request_count = 0;
168
+ this.response_count = 0;
169
+ return this.tcp_key;
170
+ }
171
+ encode_8370(data, message_type) {
172
+ if (message_type !== MideaConstants_1.TCPMessageType.HANDSHAKE_REQUEST &&
173
+ message_type !== MideaConstants_1.TCPMessageType.HANDSHAKE_RESPONSE &&
174
+ this.tcp_key.length === 0) {
175
+ throw new Error('TCP key is not set.');
176
+ }
177
+ let header = Buffer.from([0x83, 0x70]);
178
+ let size = data.length;
179
+ let padding = 0;
180
+ if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST || message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
181
+ if ((size + 2) % 16 !== 0) {
182
+ padding = 16 - ((size + 2) & 0xf);
183
+ size += padding + 32;
184
+ data = Buffer.concat([data, (0, crypto_1.randomBytes)(padding)]);
185
+ }
186
+ }
187
+ header = Buffer.concat([header, (0, MideaUtils_1.numberToUint8Array)(size, 2, MideaConstants_1.Endianness.Big)]);
188
+ header = Buffer.concat([header, Buffer.from([0x20, (padding << 4) | message_type])]);
189
+ data = Buffer.concat([(0, MideaUtils_1.numberToUint8Array)(this.request_count, 2, MideaConstants_1.Endianness.Big), data]);
190
+ this.request_count += 1;
191
+ if (this.request_count >= 0xffff) {
192
+ this.request_count = 0;
193
+ }
194
+ if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST || message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
195
+ const sign = (0, crypto_1.createHash)('sha256')
196
+ .update(Buffer.concat([header, data]))
197
+ .digest();
198
+ data = Buffer.concat([this.aes_cbc_encrpyt(data, this.tcp_key), sign]);
199
+ }
200
+ return Buffer.concat([header, data]);
201
+ }
202
+ decode_8370(data) {
203
+ if (data.length < 6) {
204
+ return [[], data];
205
+ }
206
+ if (this.tcp_key.length === 0) {
207
+ throw new Error('TCP key is not set.');
208
+ }
209
+ const header = data.subarray(0, 6);
210
+ if (header[0] !== 0x83 || header[1] !== 0x70) {
211
+ throw new Error('Not an 8370 message.');
212
+ }
213
+ const size = header.subarray(2, 4).readUInt16BE() + 8;
214
+ let leftover = Buffer.alloc(0);
215
+ if (data.length < size) {
216
+ return [[], data];
217
+ }
218
+ else if (data.length > size) {
219
+ leftover = data.subarray(size, data.length);
220
+ data = data.subarray(0, size);
221
+ }
222
+ if (header[4] !== 0x20) {
223
+ throw new Error('Missing byte 4');
224
+ }
225
+ const padding = header[5] >> 4;
226
+ const message_type_received = header[5] & 0xf;
227
+ data = data.subarray(6, data.length);
228
+ if ([MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE, MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST].includes(message_type_received)) {
229
+ const sign = data.subarray(data.length - 32, data.length);
230
+ data = data.subarray(0, data.length - 32);
231
+ data = this.aes_cbc_decrypt(data, this.tcp_key);
232
+ if ((0, crypto_1.createHash)('sha256')
233
+ .update(Buffer.concat([header, data]))
234
+ .digest()
235
+ .compare(sign) !== 0) {
236
+ throw new Error('Sign does not match');
237
+ }
238
+ if (padding) {
239
+ data = data.subarray(0, data.length - padding);
240
+ }
241
+ }
242
+ this.response_count = data.subarray(0, 2).readUInt16BE();
243
+ data = data.subarray(2, data.length);
244
+ if (leftover.length > 0) {
245
+ const [packets, incomplete] = this.decode_8370(leftover);
246
+ return [[data, ...packets], incomplete];
247
+ }
248
+ return [[data], leftover];
249
+ }
250
+ }
251
+ exports.LocalSecurity = LocalSecurity;
243
252
  //# sourceMappingURL=MideaSecurity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MideaSecurity.js","sourceRoot":"","sources":["../../src/core/MideaSecurity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MideaSecurity.js","sourceRoot":"","sources":["../../src/core/MideaSecurity.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,33 @@
1
- /// <reference types="node" />
2
- /***********************************************************************
3
- * Homebridge-midea-platform miscellaneous support functions.
4
- *
5
- * Copyright (c) 2023 Kovalovszky Patrik, https://github.com/kovapatrik
6
- * Portions Copyright (c) 2023 David Kerr, https://github.com/dkerr64
7
- *
8
- * Includes very basic implementation of a promise-wrapped Socket class.
9
- *
10
- */
11
- import { Logger } from 'homebridge';
12
- import { Endianness } from './MideaConstants';
13
- export declare function numberToUint8Array(num: number, byte_length: number, endianness: Endianness): Uint8Array;
14
- export declare function strxor(a: Buffer, b: Buffer): Buffer;
15
- export declare function calculate(data: Buffer): number;
16
- /*********************************************************************
17
- * PromiseSocket
18
- * A very basic implementation of promise-wrapped Socket
19
- *
20
- */
21
- export declare class PromiseSocket {
22
- private readonly logger;
23
- private readonly logerror;
24
- private innerSok;
25
- destroyed: boolean;
26
- constructor(logger: Logger, logerror: boolean);
27
- connect(port: number, host: string): Promise<void>;
28
- setTimeout(t: number): void;
29
- destroy(): void;
30
- write(data: string | Buffer, encoding?: BufferEncoding): Promise<void>;
31
- read(): Promise<Buffer>;
32
- }
1
+ /// <reference types="node" />
2
+ /***********************************************************************
3
+ * Homebridge-midea-platform miscellaneous support functions.
4
+ *
5
+ * Copyright (c) 2023 Kovalovszky Patrik, https://github.com/kovapatrik
6
+ * Portions Copyright (c) 2023 David Kerr, https://github.com/dkerr64
7
+ *
8
+ * Includes very basic implementation of a promise-wrapped Socket class.
9
+ *
10
+ */
11
+ import { Logger } from 'homebridge';
12
+ import { Endianness } from './MideaConstants';
13
+ export declare function numberToUint8Array(num: number, byte_length: number, endianness: Endianness): Uint8Array;
14
+ export declare function strxor(a: Buffer, b: Buffer): Buffer;
15
+ export declare function calculate(data: Buffer): number;
16
+ /*********************************************************************
17
+ * PromiseSocket
18
+ * A very basic implementation of promise-wrapped Socket
19
+ *
20
+ */
21
+ export declare class PromiseSocket {
22
+ private readonly logger;
23
+ private readonly logerror;
24
+ private innerSok;
25
+ destroyed: boolean;
26
+ constructor(logger: Logger, logerror: boolean);
27
+ connect(port: number, host: string): Promise<void>;
28
+ setTimeout(t: number): void;
29
+ destroy(): void;
30
+ write(data: string | Buffer, encoding?: BufferEncoding): Promise<void>;
31
+ read(): Promise<Buffer>;
32
+ }
33
33
  //# sourceMappingURL=MideaUtils.d.ts.map