@matter/react-native 0.16.0-alpha.0-20250821-dd03e1003 → 0.16.0-alpha.0-20250822-523588650
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/dist/cjs/crypto/ReactNativeCrypto.d.ts +4 -0
- package/dist/cjs/crypto/ReactNativeCrypto.d.ts.map +1 -1
- package/dist/cjs/crypto/ReactNativeCrypto.js +6 -1
- package/dist/cjs/crypto/ReactNativeCrypto.js.map +1 -1
- package/dist/esm/crypto/ReactNativeCrypto.d.ts +4 -0
- package/dist/esm/crypto/ReactNativeCrypto.d.ts.map +1 -1
- package/dist/esm/crypto/ReactNativeCrypto.js +8 -1
- package/dist/esm/crypto/ReactNativeCrypto.js.map +1 -1
- package/package.json +5 -5
- package/src/crypto/ReactNativeCrypto.ts +13 -2
|
@@ -23,5 +23,9 @@ export declare class ReactNativeCrypto extends StandardCrypto {
|
|
|
23
23
|
* See comment on {@link createHkdfKey}.
|
|
24
24
|
*/
|
|
25
25
|
generateDhSecret(key: PrivateKey, peerKey: PublicKey): Promise<AllowSharedBufferSource>;
|
|
26
|
+
/**
|
|
27
|
+
* QuickCrypto's subtle doesn't support HMAC signing; instead rely on Node.js crypto emulation.
|
|
28
|
+
*/
|
|
29
|
+
signHmac: (key: Bytes, data: Bytes) => Bytes;
|
|
26
30
|
}
|
|
27
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;AAEH,OAAO,EACH,KAAK,
|
|
1
|
+
{"version":3,"file":"ReactNativeCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/ReactNativeCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,KAAK,EAOL,UAAU,EACV,SAAS,EACT,cAAc,EAEjB,MAAM,UAAU,CAAC;AAkBlB;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACxC,kBAAkB,SAAuB;WAElC,QAAQ;IAIxB;;OAEG;IACY,aAAa,CACxB,MAAM,EAAE,KAAK,EACb,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,MAAoC;IAyChD;;;OAGG;IACY,WAAW;IAY1B;;OAEG;IACY,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;IAInE;;OAEG;IACM,QAAQ,qCAA4C;CAChE"}
|
|
@@ -39,6 +39,7 @@ var import_react_native_quick_crypto = __toESM(require("react-native-quick-crypt
|
|
|
39
39
|
* Copyright 2022-2025 Matter.js Authors
|
|
40
40
|
* SPDX-License-Identifier: Apache-2.0
|
|
41
41
|
*/
|
|
42
|
+
const nodeJsCrypto = new import_general.NodeJsStyleCrypto(import_react_native_quick_crypto.default);
|
|
42
43
|
const crypto = import_react_native_quick_crypto.default;
|
|
43
44
|
if (!("Buffer" in globalThis)) {
|
|
44
45
|
globalThis.Buffer = import_react_native_buffer.Buffer;
|
|
@@ -86,8 +87,12 @@ class ReactNativeCrypto extends import_general.StandardCrypto {
|
|
|
86
87
|
* See comment on {@link createHkdfKey}.
|
|
87
88
|
*/
|
|
88
89
|
async generateDhSecret(key, peerKey) {
|
|
89
|
-
return
|
|
90
|
+
return import_general.Key.sharedSecretFor(key, peerKey);
|
|
90
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* QuickCrypto's subtle doesn't support HMAC signing; instead rely on Node.js crypto emulation.
|
|
94
|
+
*/
|
|
95
|
+
signHmac = nodeJsCrypto.signHmac.bind(nodeJsCrypto);
|
|
91
96
|
}
|
|
92
97
|
import_general.Environment.default.set(import_general.Crypto, new ReactNativeCrypto(crypto));
|
|
93
98
|
//# sourceMappingURL=ReactNativeCrypto.js.map
|
|
@@ -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,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAYO;AACP,iCAAuB;AACvB,uCAAwB;AApBxB;AAAA;AAAA;AAAA;AAAA;AAwBA,MAAM,eAAe,IAAI,iCAAkB,iCAAAA,OAAW;AAItD,MAAM,SAAS,iCAAAA;AAIf,IAAI,EAAE,YAAY,aAAa;AAC3B,EAAC,WAAoD,SAAS;AAClE;AAKO,MAAM,0BAA0B,8BAAe;AAAA,EACzC,qBAAqB;AAAA,EAE9B,OAAgB,WAAW;AACvB,WAAO,IAAI,kBAAkB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAe,cACX,QACA,MACA,MACA,SAAiB,4CACnB;AACE,UAAM,MAAM,OACP,WAAW,WAAW,KAAK,aAAa,qBAAM,GAAG,IAAI,IAAI,IAAI,WAAW,oCAAqB,CAAC,EAC9F,OAAO,qBAAM,GAAG,MAAM,CAAC,EACvB,OAAO;AASZ,UAAM,IAAI,KAAK,KAAK,SAAS,oCAAqB;AAIlD,UAAM,IAAI,IAAI,WAAW,uCAAwB,IAAI,KAAK,aAAa,CAAC;AACxE,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,aAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AACzB,QAAE,IAAI,qBAAM,GAAG,IAAI,GAAG,KAAK;AAC3B,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,mBAAI,gBAAgB,KAAK,OAAO;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKS,WAAW,aAAa,SAAS,KAAK,YAAY;AAC/D;AAEA,2BAAY,QAAQ,IAAI,uBAAQ,IAAI,kBAAkB,MAA8B,CAAC;",
|
|
5
5
|
"names": ["QuickCrypto"]
|
|
6
6
|
}
|
|
@@ -23,5 +23,9 @@ export declare class ReactNativeCrypto extends StandardCrypto {
|
|
|
23
23
|
* See comment on {@link createHkdfKey}.
|
|
24
24
|
*/
|
|
25
25
|
generateDhSecret(key: PrivateKey, peerKey: PublicKey): Promise<AllowSharedBufferSource>;
|
|
26
|
+
/**
|
|
27
|
+
* QuickCrypto's subtle doesn't support HMAC signing; instead rely on Node.js crypto emulation.
|
|
28
|
+
*/
|
|
29
|
+
signHmac: (key: Bytes, data: Bytes) => Bytes;
|
|
26
30
|
}
|
|
27
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;AAEH,OAAO,EACH,KAAK,
|
|
1
|
+
{"version":3,"file":"ReactNativeCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/ReactNativeCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,KAAK,EAOL,UAAU,EACV,SAAS,EACT,cAAc,EAEjB,MAAM,UAAU,CAAC;AAkBlB;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACxC,kBAAkB,SAAuB;WAElC,QAAQ;IAIxB;;OAEG;IACY,aAAa,CACxB,MAAM,EAAE,KAAK,EACb,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,MAAoC;IAyChD;;;OAGG;IACY,WAAW;IAY1B;;OAEG;IACY,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;IAInE;;OAEG;IACM,QAAQ,qCAA4C;CAChE"}
|
|
@@ -9,10 +9,13 @@ import {
|
|
|
9
9
|
CRYPTO_HASH_LEN_BYTES,
|
|
10
10
|
CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
11
11
|
Environment,
|
|
12
|
+
Key,
|
|
13
|
+
NodeJsStyleCrypto,
|
|
12
14
|
StandardCrypto
|
|
13
15
|
} from "#general";
|
|
14
16
|
import { Buffer } from "@craftzdog/react-native-buffer";
|
|
15
17
|
import QuickCrypto from "react-native-quick-crypto";
|
|
18
|
+
const nodeJsCrypto = new NodeJsStyleCrypto(QuickCrypto);
|
|
16
19
|
const crypto = QuickCrypto;
|
|
17
20
|
if (!("Buffer" in globalThis)) {
|
|
18
21
|
globalThis.Buffer = Buffer;
|
|
@@ -60,8 +63,12 @@ class ReactNativeCrypto extends StandardCrypto {
|
|
|
60
63
|
* See comment on {@link createHkdfKey}.
|
|
61
64
|
*/
|
|
62
65
|
async generateDhSecret(key, peerKey) {
|
|
63
|
-
return
|
|
66
|
+
return Key.sharedSecretFor(key, peerKey);
|
|
64
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* QuickCrypto's subtle doesn't support HMAC signing; instead rely on Node.js crypto emulation.
|
|
70
|
+
*/
|
|
71
|
+
signHmac = nodeJsCrypto.signHmac.bind(nodeJsCrypto);
|
|
65
72
|
}
|
|
66
73
|
Environment.default.set(Crypto, new ReactNativeCrypto(crypto));
|
|
67
74
|
export {
|
|
@@ -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;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;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,MAAM,GAAG,IAAI,IAAI,IAAI,WAAW,qBAAqB,CAAC,EAC9F,OAAO,MAAM,GAAG,MAAM,CAAC,EACvB,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,GAAG,IAAI,GAAG,KAAK;AAC3B,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,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,OAEG;AACP,SAAS,cAAc;AACvB,OAAO,iBAAiB;AAIxB,MAAM,eAAe,IAAI,kBAAkB,WAAW;AAItD,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,MAAM,GAAG,IAAI,IAAI,IAAI,WAAW,qBAAqB,CAAC,EAC9F,OAAO,MAAM,GAAG,MAAM,CAAC,EACvB,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,GAAG,IAAI,GAAG,KAAK;AAC3B,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,KAAK,OAAO;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKS,WAAW,aAAa,SAAS,KAAK,YAAY;AAC/D;AAEA,YAAY,QAAQ,IAAI,QAAQ,IAAI,kBAAkB,MAA8B,CAAC;",
|
|
5
5
|
"names": []
|
|
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-
|
|
3
|
+
"version": "0.16.0-alpha.0-20250822-523588650",
|
|
4
4
|
"description": "Experimental React Native support for matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@craftzdog/react-native-buffer": "6.1.0",
|
|
39
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
40
|
-
"@matter/nodejs": "0.16.0-alpha.0-
|
|
41
|
-
"@matter/protocol": "0.16.0-alpha.0-
|
|
39
|
+
"@matter/general": "0.16.0-alpha.0-20250822-523588650",
|
|
40
|
+
"@matter/nodejs": "0.16.0-alpha.0-20250822-523588650",
|
|
41
|
+
"@matter/protocol": "0.16.0-alpha.0-20250822-523588650",
|
|
42
42
|
"@react-native-async-storage/async-storage": "^2.2.0",
|
|
43
43
|
"@react-native-community/netinfo": "^11.3.2",
|
|
44
44
|
"@types/node": "^24.3.0",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"react-native-udp": "^4.1.7"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
51
|
+
"@matter/tools": "0.16.0-alpha.0-20250822-523588650"
|
|
52
52
|
},
|
|
53
53
|
"overrides": {
|
|
54
54
|
"brorand": "npm:@matter.js/brorand@1.1.0"
|
|
@@ -10,6 +10,8 @@ import {
|
|
|
10
10
|
CRYPTO_HASH_LEN_BYTES,
|
|
11
11
|
CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
12
12
|
Environment,
|
|
13
|
+
Key,
|
|
14
|
+
NodeJsStyleCrypto,
|
|
13
15
|
PrivateKey,
|
|
14
16
|
PublicKey,
|
|
15
17
|
StandardCrypto,
|
|
@@ -18,6 +20,10 @@ import {
|
|
|
18
20
|
import { Buffer } from "@craftzdog/react-native-buffer";
|
|
19
21
|
import QuickCrypto from "react-native-quick-crypto";
|
|
20
22
|
|
|
23
|
+
// This is probably the crypto implementation we should be building on because Quick Crypto's node.js emulation is more
|
|
24
|
+
// mature than their web crypto support. However, for now we just use for API portions where web crypto does not work
|
|
25
|
+
const nodeJsCrypto = new NodeJsStyleCrypto(QuickCrypto);
|
|
26
|
+
|
|
21
27
|
// The default export from QuickCrypto should be compatible with the standard `crypto` object but the type system
|
|
22
28
|
// seems confused by CJS exports. Use a forced cast to correct types.
|
|
23
29
|
const crypto = QuickCrypto as unknown as typeof QuickCrypto.default;
|
|
@@ -61,7 +67,7 @@ export class ReactNativeCrypto extends StandardCrypto {
|
|
|
61
67
|
|
|
62
68
|
const N = Math.ceil(length / CRYPTO_HASH_LEN_BYTES);
|
|
63
69
|
|
|
64
|
-
// Single T buffer to
|
|
70
|
+
// Single T buffer to accommodate T = T(1) | T(2) | T(3) | ... | T(N)
|
|
65
71
|
// with a little extra for info | N during T(N)
|
|
66
72
|
const T = new Uint8Array(CRYPTO_HASH_LEN_BYTES * N + info.byteLength + 1);
|
|
67
73
|
let prev = 0;
|
|
@@ -106,8 +112,13 @@ export class ReactNativeCrypto extends StandardCrypto {
|
|
|
106
112
|
* See comment on {@link createHkdfKey}.
|
|
107
113
|
*/
|
|
108
114
|
override async generateDhSecret(key: PrivateKey, peerKey: PublicKey) {
|
|
109
|
-
return
|
|
115
|
+
return Key.sharedSecretFor(key, peerKey);
|
|
110
116
|
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* QuickCrypto's subtle doesn't support HMAC signing; instead rely on Node.js crypto emulation.
|
|
120
|
+
*/
|
|
121
|
+
override signHmac = nodeJsCrypto.signHmac.bind(nodeJsCrypto);
|
|
111
122
|
}
|
|
112
123
|
|
|
113
124
|
Environment.default.set(Crypto, new ReactNativeCrypto(crypto as unknown as WebCrypto));
|