@matter/react-native 0.16.0-alpha.0-20250821-dd03e1003 → 0.16.0-alpha.0-20250826-531401faa

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.
@@ -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,EAKL,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,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;CAGtE"}
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 key.sharedSecretFor(peerKey);
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,qBAUO;AACP,iCAAuB;AACvB,uCAAwB;AAlBxB;AAAA;AAAA;AAAA;AAAA;AAsBA,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,IAAI,gBAAgB,OAAO;AAAA,EACtC;AACJ;AAEA,2BAAY,QAAQ,IAAI,uBAAQ,IAAI,kBAAkB,MAA8B,CAAC;",
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,EAKL,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,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;CAGtE"}
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 key.sharedSecretFor(peerKey);
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,EACtC;AACJ;AAEA,YAAY,QAAQ,IAAI,QAAQ,IAAI,kBAAkB,MAA8B,CAAC;",
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-20250821-dd03e1003",
3
+ "version": "0.16.0-alpha.0-20250826-531401faa",
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-20250821-dd03e1003",
40
- "@matter/nodejs": "0.16.0-alpha.0-20250821-dd03e1003",
41
- "@matter/protocol": "0.16.0-alpha.0-20250821-dd03e1003",
39
+ "@matter/general": "0.16.0-alpha.0-20250826-531401faa",
40
+ "@matter/nodejs": "0.16.0-alpha.0-20250826-531401faa",
41
+ "@matter/protocol": "0.16.0-alpha.0-20250826-531401faa",
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-20250821-dd03e1003"
51
+ "@matter/tools": "0.16.0-alpha.0-20250826-531401faa"
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 accomodate T = T(1) | T(2) | T(3) | ... | T(N)
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 key.sharedSecretFor(peerKey);
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));