@matter/react-native 0.16.0-alpha.0-20250810-5c91a95d2 → 0.16.0-alpha.0-20250812-285b75d83

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 (40) hide show
  1. package/dist/cjs/ble/ReactNativeBleChannel.d.ts.map +1 -1
  2. package/dist/cjs/ble/ReactNativeBleChannel.js +3 -2
  3. package/dist/cjs/ble/ReactNativeBleChannel.js.map +1 -1
  4. package/dist/cjs/ble/ReactNativeBleClient.d.ts.map +1 -1
  5. package/dist/cjs/ble/ReactNativeBleClient.js +27 -17
  6. package/dist/cjs/ble/ReactNativeBleClient.js.map +1 -1
  7. package/dist/cjs/crypto/ReactNativeCrypto.d.ts +21 -8
  8. package/dist/cjs/crypto/ReactNativeCrypto.d.ts.map +1 -1
  9. package/dist/cjs/crypto/ReactNativeCrypto.js +58 -56
  10. package/dist/cjs/crypto/ReactNativeCrypto.js.map +2 -2
  11. package/dist/cjs/net/NetworkReactNative.d.ts.map +1 -1
  12. package/dist/cjs/net/NetworkReactNative.js +0 -2
  13. package/dist/cjs/net/NetworkReactNative.js.map +1 -1
  14. package/dist/cjs/net/UdpChannelReactNative.d.ts +1 -1
  15. package/dist/cjs/net/UdpChannelReactNative.d.ts.map +1 -1
  16. package/dist/cjs/net/UdpChannelReactNative.js +6 -3
  17. package/dist/cjs/net/UdpChannelReactNative.js.map +1 -1
  18. package/dist/esm/ble/ReactNativeBleChannel.d.ts.map +1 -1
  19. package/dist/esm/ble/ReactNativeBleChannel.js +3 -2
  20. package/dist/esm/ble/ReactNativeBleChannel.js.map +1 -1
  21. package/dist/esm/ble/ReactNativeBleClient.d.ts.map +1 -1
  22. package/dist/esm/ble/ReactNativeBleClient.js +27 -17
  23. package/dist/esm/ble/ReactNativeBleClient.js.map +1 -1
  24. package/dist/esm/crypto/ReactNativeCrypto.d.ts +21 -8
  25. package/dist/esm/crypto/ReactNativeCrypto.d.ts.map +1 -1
  26. package/dist/esm/crypto/ReactNativeCrypto.js +62 -58
  27. package/dist/esm/crypto/ReactNativeCrypto.js.map +1 -1
  28. package/dist/esm/net/NetworkReactNative.d.ts.map +1 -1
  29. package/dist/esm/net/NetworkReactNative.js +0 -2
  30. package/dist/esm/net/NetworkReactNative.js.map +1 -1
  31. package/dist/esm/net/UdpChannelReactNative.d.ts +1 -1
  32. package/dist/esm/net/UdpChannelReactNative.d.ts.map +1 -1
  33. package/dist/esm/net/UdpChannelReactNative.js +6 -3
  34. package/dist/esm/net/UdpChannelReactNative.js.map +1 -1
  35. package/package.json +6 -7
  36. package/src/ble/ReactNativeBleChannel.ts +3 -2
  37. package/src/ble/ReactNativeBleClient.ts +27 -19
  38. package/src/crypto/ReactNativeCrypto.ts +108 -106
  39. package/src/net/NetworkReactNative.ts +3 -10
  40. package/src/net/UdpChannelReactNative.ts +16 -5
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/ble/ReactNativeBleClient.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["error"]
6
6
  }
@@ -3,16 +3,29 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { CryptoDsaEncoding } from "#general";
7
- import { NodeJsCrypto } from "#nodejs";
6
+ import { PrivateKey, PublicKey, StandardCrypto } from "#general";
8
7
  /**
9
- * Crypto implementation for React Native
8
+ * Crypto implementation for React Native.
10
9
  */
11
- export declare class ReactNativeCrypto extends NodeJsCrypto {
10
+ export declare class ReactNativeCrypto extends StandardCrypto {
12
11
  implementationName: string;
13
- signEcdsa(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): Uint8Array;
14
- verifyEcdsa(publicKey: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): void;
15
- encrypt: (key: Uint8Array, data: Uint8Array, nonce: Uint8Array, associatedData?: Uint8Array) => Uint8Array<ArrayBufferLike>;
16
- decrypt: (key: Uint8Array, data: Uint8Array, nonce: Uint8Array, associatedData?: Uint8Array) => Uint8Array<ArrayBufferLike>;
12
+ static provider(): ReactNativeCrypto;
13
+ /**
14
+ * Quick Crypto doesn't currently support {@link SubtleCrypto#deriveBits}.
15
+ */
16
+ createHkdfKey(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): Promise<Uint8Array<ArrayBuffer>>;
17
+ /**
18
+ * Quick Crypto apparently appends a "." to the base64 encoded properties. I'm not aware of a legitimate reason for
19
+ * this, seems likely just a bug. Regardless it trips us off so strip off.
20
+ */
21
+ generateJwk(): Promise<JsonWebKey>;
22
+ /**
23
+ * See comment on {@link createHkdfKey}.
24
+ */
25
+ generateDhSecret(key: PrivateKey, peerKey: PublicKey): Promise<Uint8Array<ArrayBufferLike>>;
26
+ /**
27
+ * Quick Crypto doesn't support import of raw keys so convert to JWK prior to import.
28
+ */
29
+ protected importKey(format: KeyFormat, keyData: JsonWebKey | BufferSource, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;
17
30
  }
18
31
  //# sourceMappingURL=ReactNativeCrypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReactNativeCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/ReactNativeCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAGH,iBAAiB,EAIpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAsDvC;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACtC,kBAAkB,SAAkB;IAEpC,SAAS,CACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,EAC/B,WAAW,GAAE,iBAAgC,GAC9C,UAAU;IAkBJ,WAAW,CAChB,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,WAAW,GAAE,iBAAgC;IAmBxC,OAAO,qHAAoC;IAC3C,OAAO,qHAAoC;CACvD"}
1
+ {"version":3,"file":"ReactNativeCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/ReactNativeCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAMH,UAAU,EACV,SAAS,EACT,cAAc,EAEjB,MAAM,UAAU,CAAC;AAclB;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACxC,kBAAkB,SAAuB;WAElC,QAAQ;IAIxB;;OAEG;IACY,aAAa,CACxB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,MAAoC;IAyChD;;;OAGG;IACY,WAAW;IAY1B;;OAEG;IACY,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;IAInE;;OAEG;cACgB,SAAS,CACxB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,GAAG,YAAY,EAClC,SAAS,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,eAAe,EAC/G,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;CAQzC"}
@@ -3,74 +3,78 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { install } from "react-native-quick-crypto";
7
- install();
8
6
  import {
7
+ Bytes,
9
8
  Crypto,
10
- CRYPTO_HASH_ALGORITHM,
11
- CryptoVerifyError,
9
+ CRYPTO_HASH_LEN_BYTES,
10
+ CRYPTO_SYMMETRIC_KEY_LENGTH,
12
11
  Environment,
12
+ PrivateKey,
13
13
  StandardCrypto
14
14
  } from "#general";
15
- import { NodeJsCrypto } from "#nodejs";
16
- import jwk2pem from "jwk-to-pem";
17
- crypto.hkdf = (digest, ikm, salt, info, keylen) => {
18
- const hashlen = parseInt(digest.substr(3), 10) >> 3 || 20;
19
- const prk = crypto.createHmac(digest, salt.byteLength ? salt : new Uint8Array(hashlen)).update(ikm).digest();
20
- const N = Math.ceil(keylen / hashlen);
21
- const T = new Uint8Array(hashlen * N + info.byteLength + 1);
22
- let prev = 0;
23
- let start = 0;
24
- for (let c = 1; c <= N; c++) {
25
- T.set(info, start);
26
- T[start + info.byteLength] = c;
27
- T.set(
28
- crypto.createHmac(digest, prk).update(T.subarray(prev, start + info.byteLength + 1)).digest(),
29
- start
30
- );
31
- prev = start;
32
- start += hashlen;
15
+ import { Buffer } from "@craftzdog/react-native-buffer";
16
+ import QuickCrypto from "react-native-quick-crypto";
17
+ const crypto = QuickCrypto;
18
+ if (!("Buffer" in globalThis)) {
19
+ globalThis.Buffer = Buffer;
20
+ }
21
+ class ReactNativeCrypto extends StandardCrypto {
22
+ implementationName = "ReactNativeCrypto";
23
+ static provider() {
24
+ return new ReactNativeCrypto();
33
25
  }
34
- return T.slice(0, keylen);
35
- };
36
- class ReactNativeCrypto extends NodeJsCrypto {
37
- implementationName = "React Native";
38
- signEcdsa(privateKey, data, dsaEncoding = "ieee-p1363") {
39
- const signer = crypto.createSign(CRYPTO_HASH_ALGORITHM);
40
- if (Array.isArray(data)) {
41
- data.forEach((chunk) => signer.update(chunk));
42
- } else {
43
- signer.update(data);
26
+ /**
27
+ * Quick Crypto doesn't currently support {@link SubtleCrypto#deriveBits}.
28
+ */
29
+ async createHkdfKey(secret, salt, info, length = CRYPTO_SYMMETRIC_KEY_LENGTH) {
30
+ const prk = crypto.createHmac("SHA-256", salt.byteLength ? salt : new Uint8Array(CRYPTO_HASH_LEN_BYTES)).update(secret).digest();
31
+ const N = Math.ceil(length / CRYPTO_HASH_LEN_BYTES);
32
+ const T = new Uint8Array(CRYPTO_HASH_LEN_BYTES * N + info.byteLength + 1);
33
+ let prev = 0;
34
+ let start = 0;
35
+ for (let c = 1; c <= N; c++) {
36
+ T.set(info, start);
37
+ T[start + info.byteLength] = c;
38
+ T.set(
39
+ crypto.createHmac("SHA-256", prk).update(T.subarray(prev, start + info.byteLength + 1)).digest(),
40
+ start
41
+ );
42
+ prev = start;
43
+ start += CRYPTO_HASH_LEN_BYTES;
44
+ }
45
+ return T.slice(0, length);
46
+ }
47
+ /**
48
+ * Quick Crypto apparently appends a "." to the base64 encoded properties. I'm not aware of a legitimate reason for
49
+ * this, seems likely just a bug. Regardless it trips us off so strip off.
50
+ */
51
+ async generateJwk() {
52
+ const key = await super.generateJwk();
53
+ for (const prop of ["d", "x", "y"]) {
54
+ if (key[prop]?.endsWith(".")) {
55
+ key[prop] = key[prop].slice(0, key[prop].length - 1);
56
+ }
44
57
  }
45
- return new Uint8Array(
46
- signer.sign({
47
- key: jwk2pem(privateKey, { private: true }),
48
- format: "pem",
49
- type: "pkcs8",
50
- dsaEncoding
51
- })
52
- );
58
+ return key;
59
+ }
60
+ /**
61
+ * See comment on {@link createHkdfKey}.
62
+ */
63
+ async generateDhSecret(key, peerKey) {
64
+ return key.sharedSecretFor(peerKey);
53
65
  }
54
- verifyEcdsa(publicKey, data, signature, dsaEncoding = "ieee-p1363") {
55
- const verifier = crypto.createVerify(CRYPTO_HASH_ALGORITHM);
56
- verifier.update(data);
57
- const success = verifier.verify(
58
- {
59
- key: jwk2pem(publicKey),
60
- format: "pem",
61
- type: "spki",
62
- dsaEncoding
63
- },
64
- signature
65
- );
66
- if (!success) throw new CryptoVerifyError("Signature verification failed");
66
+ /**
67
+ * Quick Crypto doesn't support import of raw keys so convert to JWK prior to import.
68
+ */
69
+ importKey(format, keyData, algorithm, extractable, keyUsages) {
70
+ if (format === "raw") {
71
+ format = "jwk";
72
+ keyData = PrivateKey(Bytes.of(keyData));
73
+ }
74
+ return super.importKey(format, keyData, algorithm, extractable, keyUsages);
67
75
  }
68
- // Quick crypto does not support AES-CCM. Install the JS version to compensate
69
- // TODO - remove this once we have proper feature detection to configure crypto
70
- encrypt = StandardCrypto.prototype.encrypt;
71
- decrypt = StandardCrypto.prototype.decrypt;
72
76
  }
73
- Environment.default.set(Crypto, new ReactNativeCrypto());
77
+ Environment.default.set(Crypto, new ReactNativeCrypto(crypto));
74
78
  export {
75
79
  ReactNativeCrypto
76
80
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/crypto/ReactNativeCrypto.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,eAAe;AAExB,QAAQ;AAER;AAAA,EACI;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,oBAAoB;AAE7B,OAAO,aAAa;AAGpB,OAAO,OAAO,CACV,QACA,KACA,MACA,MACA,WACC;AACD,QAAM,UAAU,SAAS,OAAO,OAAO,CAAC,GAAG,EAAE,KAAK,KAAK;AACvD,QAAM,MAAM,OAEP,WAAW,QAAQ,KAAK,aAAa,OAAO,IAAI,WAAW,OAAO,CAAC,EACnE,OAAO,GAAG,EACV,OAAO;AASZ,QAAM,IAAI,KAAK,KAAK,SAAS,OAAO;AAIpC,QAAM,IAAI,IAAI,WAAW,UAAU,IAAI,KAAK,aAAa,CAAC;AAC1D,MAAI,OAAO;AACX,MAAI,QAAQ;AACZ,WAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AACzB,MAAE,IAAI,MAAM,KAAK;AACjB,MAAE,QAAQ,KAAK,UAAU,IAAI;AAE7B,MAAE;AAAA,MACE,OAEK,WAAW,QAAQ,GAAG,EACtB,OAAO,EAAE,SAAS,MAAM,QAAQ,KAAK,aAAa,CAAC,CAAC,EACpD,OAAO;AAAA,MACZ;AAAA,IACJ;AAEA,WAAO;AACP,aAAS;AAAA,EACb;AAGA,SAAO,EAAE,MAAM,GAAG,MAAM;AAC5B;AAKO,MAAM,0BAA0B,aAAa;AAAA,EACvC,qBAAqB;AAAA,EAErB,UACL,YACA,MACA,cAAiC,cACvB;AAEV,UAAM,SAAS,OAAO,WAAW,qBAAqB;AACtD,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,WAAK,QAAQ,WAAS,OAAO,OAAO,KAAK,CAAC;AAAA,IAC9C,OAAO;AACH,aAAO,OAAO,IAAI;AAAA,IACtB;AACA,WAAO,IAAI;AAAA,MACP,OAAO,KAAK;AAAA,QACR,KAAK,QAAQ,YAA2B,EAAE,SAAS,KAAK,CAAC;AAAA,QACzD,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAES,YACL,WACA,MACA,WACA,cAAiC,cACnC;AAEE,UAAM,WAAW,OAAO,aAAa,qBAAqB;AAC1D,aAAS,OAAO,IAAI;AACpB,UAAM,UAAU,SAAS;AAAA,MACrB;AAAA,QACI,KAAK,QAAQ,SAAwB;AAAA,QACrC,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AACA,QAAI,CAAC,QAAS,OAAM,IAAI,kBAAkB,+BAA+B;AAAA,EAC7E;AAAA;AAAA;AAAA,EAIS,UAAU,eAAe,UAAU;AAAA,EACnC,UAAU,eAAe,UAAU;AAChD;AAEA,YAAY,QAAQ,IAAI,QAAQ,IAAI,kBAAkB,CAAC;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OAEG;AACP,SAAS,cAAc;AACvB,OAAO,iBAAiB;AAIxB,MAAM,SAAS;AAIf,IAAI,EAAE,YAAY,aAAa;AAC3B,EAAC,WAAoD,SAAS;AAClE;AAKO,MAAM,0BAA0B,eAAe;AAAA,EACzC,qBAAqB;AAAA,EAE9B,OAAgB,WAAW;AACvB,WAAO,IAAI,kBAAkB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAe,cACX,QACA,MACA,MACA,SAAiB,6BACnB;AACE,UAAM,MAAM,OACP,WAAW,WAAW,KAAK,aAAa,OAAO,IAAI,WAAW,qBAAqB,CAAC,EACpF,OAAO,MAAM,EACb,OAAO;AASZ,UAAM,IAAI,KAAK,KAAK,SAAS,qBAAqB;AAIlD,UAAM,IAAI,IAAI,WAAW,wBAAwB,IAAI,KAAK,aAAa,CAAC;AACxE,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,aAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AACzB,QAAE,IAAI,MAAM,KAAK;AACjB,QAAE,QAAQ,KAAK,UAAU,IAAI;AAE7B,QAAE;AAAA,QACE,OACK,WAAW,WAAW,GAAG,EACzB,OAAO,EAAE,SAAS,MAAM,QAAQ,KAAK,aAAa,CAAC,CAAC,EACpD,OAAO;AAAA,QACZ;AAAA,MACJ;AAEA,aAAO;AACP,eAAS;AAAA,IACb;AAGA,WAAO,EAAE,MAAM,GAAG,MAAM;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAe,cAAc;AACzB,UAAM,MAAM,MAAM,MAAM,YAAY;AAEpC,eAAW,QAAQ,CAAC,KAAK,KAAK,GAAG,GAAY;AACzC,UAAI,IAAI,IAAI,GAAG,SAAS,GAAG,GAAG;AAC1B,YAAI,IAAI,IAAI,IAAI,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,SAAS,CAAC;AAAA,MACvD;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAe,iBAAiB,KAAiB,SAAoB;AACjE,WAAO,IAAI,gBAAgB,OAAO;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKmB,UACf,QACA,SACA,WACA,aACA,WACF;AACE,QAAI,WAAW,OAAO;AAClB,eAAS;AACT,gBAAU,WAAW,MAAM,GAAG,OAAuB,CAAC;AAAA,IAC1D;AACA,WAAO,MAAM,UAAU,QAAQ,SAAS,WAAW,aAAa,SAAS;AAAA,EAC7E;AACJ;AAEA,YAAY,QAAQ,IAAI,QAAQ,IAAI,kBAAkB,MAA8B,CAAC;",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkReactNative.d.ts","sourceRoot":"","sources":["../../../src/net/NetworkReactNative.ts"],"names":[],"mappings":"AA4BA,OAAO,EAKH,OAAO,EAEP,gBAAgB,EAChB,uBAAuB,EAEvB,UAAU,EACV,iBAAiB,EACpB,MAAM,UAAU,CAAC;AAiClB,qBAAa,kBAAmB,SAAQ,OAAO;WAC9B,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;WAW5E,gCAAgC,CACzC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,EAAE,OAAO,GACd,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAwBlC,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM;IAMtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAInC;IAEa,KAAK;mBAIC,+BAA+B;IAwBpD;;;;;;OAMG;IACG,gBAAgB,CAAC,aAAa,GAAE,gBAAgB,EAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAmBrF,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAQzE,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CAG7E"}
1
+ {"version":3,"file":"NetworkReactNative.d.ts","sourceRoot":"","sources":["../../../src/net/NetworkReactNative.ts"],"names":[],"mappings":"AAqBA,OAAO,EAKH,OAAO,EAEP,gBAAgB,EAChB,uBAAuB,EAEvB,UAAU,EACV,iBAAiB,EACpB,MAAM,UAAU,CAAC;AAiClB,qBAAa,kBAAmB,SAAQ,OAAO;WAC9B,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;WAW5E,gCAAgC,CACzC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,EAAE,OAAO,GACd,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAwBlC,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM;IAMtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAInC;IAEa,KAAK;mBAIC,+BAA+B;IAwBpD;;;;;;OAMG;IACG,gBAAgB,CAAC,aAAa,GAAE,gBAAgB,EAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAmBrF,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAQzE,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CAG7E"}
@@ -10,8 +10,6 @@ dgram.createSocket = (...args) => {
10
10
  const socket = rnDGramCreateSocket(...args);
11
11
  socket.setMulticastInterface = () => {
12
12
  };
13
- const originalSend = socket.send;
14
- socket.send = (buffer, port, address, callback) => originalSend(buffer, 0, buffer.length, port, address, callback);
15
13
  return socket;
16
14
  };
17
15
  import {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/net/NetworkReactNative.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["networkInterfaces", "netInterface"]
6
6
  }
@@ -14,7 +14,7 @@ interface Socket {
14
14
  on(event: "error", listener: (error: Error) => void): void;
15
15
  removeListener(event: "message", listener: (msg: Uint8Array, rinfo: RemoteInfo) => void): void;
16
16
  removeListener(event: "error", listener: (error: Error) => void): void;
17
- send(msg: Uint8Array, port: number, address: string, callback: (error: Error | null) => void): void;
17
+ send(msg: Uint8Array, offset: number, length: number, port: number, address: string, callback: (error: Error | null) => void): void;
18
18
  close(): void;
19
19
  address(): {
20
20
  address: string;
@@ -1 +1 @@
1
- {"version":3,"file":"UdpChannelReactNative.d.ts","sourceRoot":"","sources":["../../../src/net/UdpChannelReactNative.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,WAAW,EASX,UAAU,EACV,iBAAiB,EACjB,aAAa,EAChB,MAAM,UAAU,CAAC;AAOlB,UAAU,UAAU;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAoBD,UAAU,MAAM;IACZ,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3E,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5E,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IACnF,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/F,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IACvE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACpG,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAmCD,qBAAa,qBAAsB,YAAW,UAAU;;WAKvC,MAAM,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,iBAAiB;IAgC9F,QAAQ,CAAC,cAAc,SAAwB;gBAEnC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAMhE,aAAa,CAAC,iBAAiB,EAAE,MAAM;IAkBvC,cAAc,CAAC,iBAAiB,EAAE,MAAM;IAkB9C,MAAM,CACF,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI;;;IAiB3G,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAYjD,KAAK;IAQX,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;CAe/C"}
1
+ {"version":3,"file":"UdpChannelReactNative.d.ts","sourceRoot":"","sources":["../../../src/net/UdpChannelReactNative.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,WAAW,EASX,UAAU,EACV,iBAAiB,EACjB,aAAa,EAChB,MAAM,UAAU,CAAC;AAQlB,UAAU,UAAU;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAoBD,UAAU,MAAM;IACZ,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3E,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5E,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IACnF,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/F,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IACvE,IAAI,CACA,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GACxC,IAAI,CAAC;IACR,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAmCD,qBAAa,qBAAsB,YAAW,UAAU;;WAKvC,MAAM,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,iBAAiB;IAmC9F,QAAQ,CAAC,cAAc,SAAwB;gBAEnC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAMhE,aAAa,CAAC,iBAAiB,EAAE,MAAM;IAkBvC,cAAc,CAAC,iBAAiB,EAAE,MAAM;IAkB9C,MAAM,CACF,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI;;;IAiB3G,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAYjD,KAAK;IAQX,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;CAe/C"}
@@ -15,6 +15,7 @@ import {
15
15
  NoAddressAvailableError,
16
16
  repackErrorAs
17
17
  } from "#general";
18
+ import { Platform } from "react-native";
18
19
  import { NetworkReactNative } from "./NetworkReactNative.js";
19
20
  const logger = Logger.get("UdpChannelNode");
20
21
  function createDgramSocket(host, port, options) {
@@ -58,7 +59,9 @@ class UdpChannelReactNative {
58
59
  socketOptions.ipv6Only = true;
59
60
  }
60
61
  const socket = await createDgramSocket(listeningAddress, listeningPort, socketOptions);
61
- socket.setBroadcast(true);
62
+ if (Platform.OS !== "android") {
63
+ socket.setBroadcast(true);
64
+ }
62
65
  let netInterfaceZone;
63
66
  if (netInterface !== void 0) {
64
67
  netInterfaceZone = netInterface;
@@ -133,8 +136,8 @@ class UdpChannelReactNative {
133
136
  }
134
137
  async send(host, port, data) {
135
138
  return new Promise((resolve, reject) => {
136
- this.#socket.send(data, port, host, (error) => {
137
- if (error !== null) {
139
+ this.#socket.send(data, 0, data.length, port, host, (error) => {
140
+ if (error) {
138
141
  reject(repackErrorAs(error, NetworkError));
139
142
  return;
140
143
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/net/UdpChannelReactNative.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["error"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/react-native",
3
- "version": "0.16.0-alpha.0-20250810-5c91a95d2",
3
+ "version": "0.16.0-alpha.0-20250812-285b75d83",
4
4
  "description": "Experimental React Native support for matter.js",
5
5
  "keywords": [
6
6
  "iot",
@@ -35,21 +35,20 @@
35
35
  "#*": "./src/*"
36
36
  },
37
37
  "dependencies": {
38
- "@matter/general": "0.16.0-alpha.0-20250810-5c91a95d2",
39
- "@matter/nodejs": "0.16.0-alpha.0-20250810-5c91a95d2",
40
- "@matter/protocol": "0.16.0-alpha.0-20250810-5c91a95d2",
38
+ "@craftzdog/react-native-buffer": "6.1.0",
39
+ "@matter/general": "0.16.0-alpha.0-20250812-285b75d83",
40
+ "@matter/nodejs": "0.16.0-alpha.0-20250812-285b75d83",
41
+ "@matter/protocol": "0.16.0-alpha.0-20250812-285b75d83",
41
42
  "@react-native-async-storage/async-storage": "^2.2.0",
42
43
  "@react-native-community/netinfo": "^11.3.2",
43
- "@types/jwk-to-pem": "^2.0.3",
44
44
  "@types/node": "^24.1.0",
45
- "jwk-to-pem": "^2.0.7",
46
45
  "react-native-ble-plx": "^3.5.0",
47
46
  "react-native-polyfill-globals": "^3.1.0",
48
47
  "react-native-quick-crypto": "^0.7.16",
49
48
  "react-native-udp": "^4.1.7"
50
49
  },
51
50
  "devDependencies": {
52
- "@matter/tools": "0.16.0-alpha.0-20250810-5c91a95d2"
51
+ "@matter/tools": "0.16.0-alpha.0-20250812-285b75d83"
53
52
  },
54
53
  "overrides": {
55
54
  "brorand": "npm:@matter.js/brorand@1.1.0"
@@ -69,6 +69,7 @@ export class ReactNativeBleCentralInterface implements NetInterface {
69
69
  let device: Device;
70
70
  try {
71
71
  device = await peripheral.connect();
72
+ await device.requestMTU(BLE_MAXIMUM_BTP_MTU);
72
73
  } catch (error) {
73
74
  if (error instanceof ReactNativeBleError && error.errorCode === BleErrorCode.DeviceAlreadyConnected) {
74
75
  device = peripheral;
@@ -85,7 +86,7 @@ export class ReactNativeBleCentralInterface implements NetInterface {
85
86
 
86
87
  for (const service of services) {
87
88
  logger.debug(`found service: ${service.uuid}`);
88
- if (service.uuid !== BLE_MATTER_SERVICE_UUID) continue;
89
+ if (service.uuid.toUpperCase() !== BLE_MATTER_SERVICE_UUID) continue;
89
90
 
90
91
  // So, discover its characteristics.
91
92
  const characteristics = await device.characteristicsForService(service.uuid);
@@ -98,7 +99,7 @@ export class ReactNativeBleCentralInterface implements NetInterface {
98
99
  // Loop through each characteristic and match them to the UUIDs that we know about.
99
100
  logger.debug("found characteristic:", characteristic.uuid);
100
101
 
101
- switch (characteristic.uuid) {
102
+ switch (characteristic.uuid.toUpperCase()) {
102
103
  case BLE_MATTER_C1_CHARACTERISTIC_UUID:
103
104
  logger.debug("found C1 characteristic");
104
105
  characteristicC1ForWrite = characteristic;
@@ -22,7 +22,7 @@ export class ReactNativeBleClient {
22
22
  private deviceDiscoveredCallback: ((peripheral: Device, manufacturerData: Uint8Array) => void) | undefined;
23
23
 
24
24
  constructor() {
25
- // this.bleMnager.setLogLevel(LogLevel.Verbose)
25
+ // this.bleManager.setLogLevel(LogLevel.Verbose)
26
26
  const subscription = this.bleManager.onStateChange(state => {
27
27
  this.bleState = state;
28
28
  logger.debug(`BLE state changed to ${state}`);
@@ -53,7 +53,7 @@ export class ReactNativeBleClient {
53
53
  subscription.remove();
54
54
  void this.stopScanning();
55
55
  }
56
- });
56
+ }, true);
57
57
  }
58
58
 
59
59
  public setDiscoveryCallback(callback: (peripheral: Device, manufacturerData: Uint8Array) => void) {
@@ -70,23 +70,31 @@ export class ReactNativeBleClient {
70
70
  if (this.bleState === BluetoothState.PoweredOn) {
71
71
  logger.debug("Start BLE scanning for Matter Services ...");
72
72
  this.isScanning = true;
73
- await this.bleManager.startDeviceScan([BLE_MATTER_SERVICE_UUID], {}, (error, peripheral) => {
74
- if (error !== null || peripheral === null) {
75
- this.isScanning = false;
76
- logger.error("Error while scanning for BLE devices", error);
77
- if (this.shouldScan) {
78
- this.startScanning().catch(error =>
79
- logger.error("Error while restarting scanning after error", error),
80
- );
81
- } else {
82
- this.stopScanning().catch(error =>
83
- logger.error("Error while stopping scanning after error", error),
84
- );
73
+ await this.bleManager.startDeviceScan(
74
+ null,
75
+ {
76
+ allowDuplicates: false,
77
+ scanMode: 2, // Low Latency
78
+ callbackType: 1, // All matches
79
+ },
80
+ (error, peripheral) => {
81
+ if (error !== null || peripheral === null) {
82
+ this.isScanning = false;
83
+ logger.error("Error while scanning for BLE devices", error);
84
+ if (this.shouldScan) {
85
+ this.startScanning().catch(error =>
86
+ logger.error("Error while restarting scanning after error", error),
87
+ );
88
+ } else {
89
+ this.stopScanning().catch(error =>
90
+ logger.error("Error while stopping scanning after error", error),
91
+ );
92
+ }
93
+ return;
85
94
  }
86
- return;
87
- }
88
- this.handleDiscoveredDevice(peripheral);
89
- });
95
+ this.handleDiscoveredDevice(peripheral);
96
+ },
97
+ );
90
98
  } else {
91
99
  logger.debug("ble state is not poweredOn ... delay scanning till poweredOn");
92
100
  }
@@ -111,7 +119,7 @@ export class ReactNativeBleClient {
111
119
  logger.info(`Peripheral ${peripheral.id} is not connectable ... ignoring`);
112
120
  return;
113
121
  }
114
- const matterServiceDataBase64 = peripheral.serviceData?.[BLE_MATTER_SERVICE_UUID];
122
+ const matterServiceDataBase64 = peripheral.serviceData?.[BLE_MATTER_SERVICE_UUID.toLowerCase()];
115
123
  if (matterServiceDataBase64 === undefined) {
116
124
  logger.info(`Peripheral ${peripheral.id} does not advertise Matter Service ... ignoring`);
117
125
  return;