@matter/general 0.11.0-alpha.0-20241005-e3e4e4a7a

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 (692) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/MatterError.d.ts +95 -0
  4. package/dist/cjs/MatterError.d.ts.map +1 -0
  5. package/dist/cjs/MatterError.js +177 -0
  6. package/dist/cjs/MatterError.js.map +6 -0
  7. package/dist/cjs/codec/Base64Codec.d.ts +23 -0
  8. package/dist/cjs/codec/Base64Codec.d.ts.map +1 -0
  9. package/dist/cjs/codec/Base64Codec.js +134 -0
  10. package/dist/cjs/codec/Base64Codec.js.map +6 -0
  11. package/dist/cjs/codec/DerCodec.d.ts +83 -0
  12. package/dist/cjs/codec/DerCodec.d.ts.map +1 -0
  13. package/dist/cjs/codec/DerCodec.js +286 -0
  14. package/dist/cjs/codec/DerCodec.js.map +6 -0
  15. package/dist/cjs/codec/DerTypes.d.ts +73 -0
  16. package/dist/cjs/codec/DerTypes.d.ts.map +1 -0
  17. package/dist/cjs/codec/DerTypes.js +132 -0
  18. package/dist/cjs/codec/DerTypes.js.map +6 -0
  19. package/dist/cjs/codec/DnsCodec.d.ts +86 -0
  20. package/dist/cjs/codec/DnsCodec.d.ts.map +1 -0
  21. package/dist/cjs/codec/DnsCodec.js +355 -0
  22. package/dist/cjs/codec/DnsCodec.js.map +6 -0
  23. package/dist/cjs/codec/index.d.ts +10 -0
  24. package/dist/cjs/codec/index.d.ts.map +1 -0
  25. package/dist/cjs/codec/index.js +27 -0
  26. package/dist/cjs/codec/index.js.map +6 -0
  27. package/dist/cjs/crypto/Crypto.d.ts +169 -0
  28. package/dist/cjs/crypto/Crypto.d.ts.map +1 -0
  29. package/dist/cjs/crypto/Crypto.js +103 -0
  30. package/dist/cjs/crypto/Crypto.js.map +6 -0
  31. package/dist/cjs/crypto/CryptoConstants.d.ts +19 -0
  32. package/dist/cjs/crypto/CryptoConstants.d.ts.map +1 -0
  33. package/dist/cjs/crypto/CryptoConstants.js +48 -0
  34. package/dist/cjs/crypto/CryptoConstants.js.map +6 -0
  35. package/dist/cjs/crypto/Key.d.ts +171 -0
  36. package/dist/cjs/crypto/Key.d.ts.map +1 -0
  37. package/dist/cjs/crypto/Key.js +356 -0
  38. package/dist/cjs/crypto/Key.js.map +6 -0
  39. package/dist/cjs/crypto/Spake2p.d.ts +40 -0
  40. package/dist/cjs/crypto/Spake2p.d.ts.map +1 -0
  41. package/dist/cjs/crypto/Spake2p.js +128 -0
  42. package/dist/cjs/crypto/Spake2p.js.map +6 -0
  43. package/dist/cjs/crypto/index.d.ts +10 -0
  44. package/dist/cjs/crypto/index.d.ts.map +1 -0
  45. package/dist/cjs/crypto/index.js +27 -0
  46. package/dist/cjs/crypto/index.js.map +6 -0
  47. package/dist/cjs/environment/Environment.d.ts +96 -0
  48. package/dist/cjs/environment/Environment.d.ts.map +1 -0
  49. package/dist/cjs/environment/Environment.js +199 -0
  50. package/dist/cjs/environment/Environment.js.map +6 -0
  51. package/dist/cjs/environment/Environmental.d.ts +52 -0
  52. package/dist/cjs/environment/Environmental.d.ts.map +1 -0
  53. package/dist/cjs/environment/Environmental.js +33 -0
  54. package/dist/cjs/environment/Environmental.js.map +6 -0
  55. package/dist/cjs/environment/RuntimeService.d.ts +107 -0
  56. package/dist/cjs/environment/RuntimeService.d.ts.map +1 -0
  57. package/dist/cjs/environment/RuntimeService.js +222 -0
  58. package/dist/cjs/environment/RuntimeService.js.map +6 -0
  59. package/dist/cjs/environment/VariableService.d.ts +58 -0
  60. package/dist/cjs/environment/VariableService.d.ts.map +1 -0
  61. package/dist/cjs/environment/VariableService.js +257 -0
  62. package/dist/cjs/environment/VariableService.js.map +6 -0
  63. package/dist/cjs/environment/index.d.ts +10 -0
  64. package/dist/cjs/environment/index.d.ts.map +1 -0
  65. package/dist/cjs/environment/index.js +27 -0
  66. package/dist/cjs/environment/index.js.map +6 -0
  67. package/dist/cjs/index.d.ts +17 -0
  68. package/dist/cjs/index.d.ts.map +1 -0
  69. package/dist/cjs/index.js +34 -0
  70. package/dist/cjs/index.js.map +6 -0
  71. package/dist/cjs/log/Diagnostic.d.ts +140 -0
  72. package/dist/cjs/log/Diagnostic.d.ts.map +1 -0
  73. package/dist/cjs/log/Diagnostic.js +297 -0
  74. package/dist/cjs/log/Diagnostic.js.map +6 -0
  75. package/dist/cjs/log/DiagnosticSource.d.ts +16 -0
  76. package/dist/cjs/log/DiagnosticSource.d.ts.map +1 -0
  77. package/dist/cjs/log/DiagnosticSource.js +45 -0
  78. package/dist/cjs/log/DiagnosticSource.js.map +6 -0
  79. package/dist/cjs/log/LogFormat.d.ts +33 -0
  80. package/dist/cjs/log/LogFormat.d.ts.map +1 -0
  81. package/dist/cjs/log/LogFormat.js +503 -0
  82. package/dist/cjs/log/LogFormat.js.map +6 -0
  83. package/dist/cjs/log/LogLevel.d.ts +18 -0
  84. package/dist/cjs/log/LogLevel.d.ts.map +1 -0
  85. package/dist/cjs/log/LogLevel.js +57 -0
  86. package/dist/cjs/log/LogLevel.js.map +6 -0
  87. package/dist/cjs/log/Logger.d.ts +220 -0
  88. package/dist/cjs/log/Logger.d.ts.map +1 -0
  89. package/dist/cjs/log/Logger.js +401 -0
  90. package/dist/cjs/log/Logger.js.map +6 -0
  91. package/dist/cjs/log/index.d.ts +11 -0
  92. package/dist/cjs/log/index.d.ts.map +1 -0
  93. package/dist/cjs/log/index.js +28 -0
  94. package/dist/cjs/log/index.js.map +6 -0
  95. package/dist/cjs/math/ReedSolomon.d.ts +11 -0
  96. package/dist/cjs/math/ReedSolomon.d.ts.map +1 -0
  97. package/dist/cjs/math/ReedSolomon.js +109 -0
  98. package/dist/cjs/math/ReedSolomon.js.map +6 -0
  99. package/dist/cjs/math/Verhoeff.d.ts +17 -0
  100. package/dist/cjs/math/Verhoeff.d.ts.map +1 -0
  101. package/dist/cjs/math/Verhoeff.js +64 -0
  102. package/dist/cjs/math/Verhoeff.js.map +6 -0
  103. package/dist/cjs/math/index.d.ts +8 -0
  104. package/dist/cjs/math/index.d.ts.map +1 -0
  105. package/dist/cjs/math/index.js +25 -0
  106. package/dist/cjs/math/index.js.map +6 -0
  107. package/dist/cjs/net/Channel.d.ts +24 -0
  108. package/dist/cjs/net/Channel.d.ts.map +1 -0
  109. package/dist/cjs/net/Channel.js +35 -0
  110. package/dist/cjs/net/Channel.js.map +6 -0
  111. package/dist/cjs/net/NetInterface.d.ts +24 -0
  112. package/dist/cjs/net/NetInterface.d.ts.map +1 -0
  113. package/dist/cjs/net/NetInterface.js +42 -0
  114. package/dist/cjs/net/NetInterface.js.map +6 -0
  115. package/dist/cjs/net/Network.d.ts +54 -0
  116. package/dist/cjs/net/Network.d.ts.map +1 -0
  117. package/dist/cjs/net/Network.js +50 -0
  118. package/dist/cjs/net/Network.js.map +6 -0
  119. package/dist/cjs/net/ServerAddress.d.ts +17 -0
  120. package/dist/cjs/net/ServerAddress.d.ts.map +1 -0
  121. package/dist/cjs/net/ServerAddress.js +32 -0
  122. package/dist/cjs/net/ServerAddress.js.map +6 -0
  123. package/dist/cjs/net/TransportInterface.d.ts +40 -0
  124. package/dist/cjs/net/TransportInterface.d.ts.map +1 -0
  125. package/dist/cjs/net/TransportInterface.js +55 -0
  126. package/dist/cjs/net/TransportInterface.js.map +6 -0
  127. package/dist/cjs/net/UdpChannel.d.ts +25 -0
  128. package/dist/cjs/net/UdpChannel.d.ts.map +1 -0
  129. package/dist/cjs/net/UdpChannel.js +30 -0
  130. package/dist/cjs/net/UdpChannel.js.map +6 -0
  131. package/dist/cjs/net/UdpInterface.d.ts +35 -0
  132. package/dist/cjs/net/UdpInterface.d.ts.map +1 -0
  133. package/dist/cjs/net/UdpInterface.js +82 -0
  134. package/dist/cjs/net/UdpInterface.js.map +6 -0
  135. package/dist/cjs/net/UdpMulticastServer.d.ts +30 -0
  136. package/dist/cjs/net/UdpMulticastServer.d.ts.map +1 -0
  137. package/dist/cjs/net/UdpMulticastServer.js +133 -0
  138. package/dist/cjs/net/UdpMulticastServer.js.map +6 -0
  139. package/dist/cjs/net/index.d.ts +17 -0
  140. package/dist/cjs/net/index.d.ts.map +1 -0
  141. package/dist/cjs/net/index.js +34 -0
  142. package/dist/cjs/net/index.js.map +6 -0
  143. package/dist/cjs/net/mock/MockNetwork.d.ts +19 -0
  144. package/dist/cjs/net/mock/MockNetwork.d.ts.map +1 -0
  145. package/dist/cjs/net/mock/MockNetwork.js +56 -0
  146. package/dist/cjs/net/mock/MockNetwork.js.map +6 -0
  147. package/dist/cjs/net/mock/MockUdpChannel.d.ts +27 -0
  148. package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -0
  149. package/dist/cjs/net/mock/MockUdpChannel.js +76 -0
  150. package/dist/cjs/net/mock/MockUdpChannel.js.map +6 -0
  151. package/dist/cjs/net/mock/NetworkSimulator.d.ts +18 -0
  152. package/dist/cjs/net/mock/NetworkSimulator.d.ts.map +1 -0
  153. package/dist/cjs/net/mock/NetworkSimulator.js +73 -0
  154. package/dist/cjs/net/mock/NetworkSimulator.js.map +6 -0
  155. package/dist/cjs/package.json +6 -0
  156. package/dist/cjs/polyfills/disposable.d.ts +7 -0
  157. package/dist/cjs/polyfills/disposable.d.ts.map +1 -0
  158. package/dist/cjs/polyfills/disposable.js +19 -0
  159. package/dist/cjs/polyfills/disposable.js.map +6 -0
  160. package/dist/cjs/polyfills/index.d.ts +7 -0
  161. package/dist/cjs/polyfills/index.d.ts.map +1 -0
  162. package/dist/cjs/polyfills/index.js +8 -0
  163. package/dist/cjs/polyfills/index.js.map +6 -0
  164. package/dist/cjs/storage/Storage.d.ts +54 -0
  165. package/dist/cjs/storage/Storage.d.ts.map +1 -0
  166. package/dist/cjs/storage/Storage.js +38 -0
  167. package/dist/cjs/storage/Storage.js.map +6 -0
  168. package/dist/cjs/storage/StorageBackendMemory.d.ts +27 -0
  169. package/dist/cjs/storage/StorageBackendMemory.d.ts.map +1 -0
  170. package/dist/cjs/storage/StorageBackendMemory.js +131 -0
  171. package/dist/cjs/storage/StorageBackendMemory.js.map +6 -0
  172. package/dist/cjs/storage/StorageContext.d.ts +26 -0
  173. package/dist/cjs/storage/StorageContext.d.ts.map +1 -0
  174. package/dist/cjs/storage/StorageContext.js +117 -0
  175. package/dist/cjs/storage/StorageContext.js.map +6 -0
  176. package/dist/cjs/storage/StorageManager.d.ts +17 -0
  177. package/dist/cjs/storage/StorageManager.d.ts.map +1 -0
  178. package/dist/cjs/storage/StorageManager.js +59 -0
  179. package/dist/cjs/storage/StorageManager.js.map +6 -0
  180. package/dist/cjs/storage/StorageService.d.ts +35 -0
  181. package/dist/cjs/storage/StorageService.d.ts.map +1 -0
  182. package/dist/cjs/storage/StorageService.js +82 -0
  183. package/dist/cjs/storage/StorageService.js.map +6 -0
  184. package/dist/cjs/storage/StringifyTools.d.ts +16 -0
  185. package/dist/cjs/storage/StringifyTools.d.ts.map +1 -0
  186. package/dist/cjs/storage/StringifyTools.js +105 -0
  187. package/dist/cjs/storage/StringifyTools.js.map +6 -0
  188. package/dist/cjs/storage/index.d.ts +12 -0
  189. package/dist/cjs/storage/index.d.ts.map +1 -0
  190. package/dist/cjs/storage/index.js +29 -0
  191. package/dist/cjs/storage/index.js.map +6 -0
  192. package/dist/cjs/time/Time.d.ts +66 -0
  193. package/dist/cjs/time/Time.d.ts.map +1 -0
  194. package/dist/cjs/time/Time.js +137 -0
  195. package/dist/cjs/time/Time.js.map +6 -0
  196. package/dist/cjs/time/index.d.ts +7 -0
  197. package/dist/cjs/time/index.d.ts.map +1 -0
  198. package/dist/cjs/time/index.js +24 -0
  199. package/dist/cjs/time/index.js.map +6 -0
  200. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  201. package/dist/cjs/util/Array.d.ts +12 -0
  202. package/dist/cjs/util/Array.d.ts.map +1 -0
  203. package/dist/cjs/util/Array.js +24 -0
  204. package/dist/cjs/util/Array.js.map +6 -0
  205. package/dist/cjs/util/Bytes.d.ts +23 -0
  206. package/dist/cjs/util/Bytes.d.ts.map +1 -0
  207. package/dist/cjs/util/Bytes.js +95 -0
  208. package/dist/cjs/util/Bytes.js.map +6 -0
  209. package/dist/cjs/util/Cache.d.ts +33 -0
  210. package/dist/cjs/util/Cache.d.ts.map +1 -0
  211. package/dist/cjs/util/Cache.js +114 -0
  212. package/dist/cjs/util/Cache.js.map +6 -0
  213. package/dist/cjs/util/Construction.d.ts +182 -0
  214. package/dist/cjs/util/Construction.d.ts.map +1 -0
  215. package/dist/cjs/util/Construction.js +417 -0
  216. package/dist/cjs/util/Construction.js.map +6 -0
  217. package/dist/cjs/util/DataReadQueue.d.ts +17 -0
  218. package/dist/cjs/util/DataReadQueue.d.ts.map +1 -0
  219. package/dist/cjs/util/DataReadQueue.js +76 -0
  220. package/dist/cjs/util/DataReadQueue.js.map +6 -0
  221. package/dist/cjs/util/DataReader.d.ts +32 -0
  222. package/dist/cjs/util/DataReader.d.ts.map +1 -0
  223. package/dist/cjs/util/DataReader.js +101 -0
  224. package/dist/cjs/util/DataReader.js.map +6 -0
  225. package/dist/cjs/util/DataWriter.d.ts +26 -0
  226. package/dist/cjs/util/DataWriter.d.ts.map +1 -0
  227. package/dist/cjs/util/DataWriter.js +114 -0
  228. package/dist/cjs/util/DataWriter.js.map +6 -0
  229. package/dist/cjs/util/DeepCopy.d.ts +12 -0
  230. package/dist/cjs/util/DeepCopy.d.ts.map +1 -0
  231. package/dist/cjs/util/DeepCopy.js +58 -0
  232. package/dist/cjs/util/DeepCopy.js.map +6 -0
  233. package/dist/cjs/util/DeepEqual.d.ts +7 -0
  234. package/dist/cjs/util/DeepEqual.d.ts.map +1 -0
  235. package/dist/cjs/util/DeepEqual.js +55 -0
  236. package/dist/cjs/util/DeepEqual.js.map +6 -0
  237. package/dist/cjs/util/Error.d.ts +12 -0
  238. package/dist/cjs/util/Error.d.ts.map +1 -0
  239. package/dist/cjs/util/Error.js +41 -0
  240. package/dist/cjs/util/Error.js.map +6 -0
  241. package/dist/cjs/util/GeneratedClass.d.ts +62 -0
  242. package/dist/cjs/util/GeneratedClass.d.ts.map +1 -0
  243. package/dist/cjs/util/GeneratedClass.js +117 -0
  244. package/dist/cjs/util/GeneratedClass.js.map +6 -0
  245. package/dist/cjs/util/Introspection.d.ts +38 -0
  246. package/dist/cjs/util/Introspection.d.ts.map +1 -0
  247. package/dist/cjs/util/Introspection.js +85 -0
  248. package/dist/cjs/util/Introspection.js.map +6 -0
  249. package/dist/cjs/util/Ip.d.ts +8 -0
  250. package/dist/cjs/util/Ip.d.ts.map +1 -0
  251. package/dist/cjs/util/Ip.js +90 -0
  252. package/dist/cjs/util/Ip.js.map +6 -0
  253. package/dist/cjs/util/Lifecycle.d.ts +97 -0
  254. package/dist/cjs/util/Lifecycle.d.ts.map +1 -0
  255. package/dist/cjs/util/Lifecycle.js +89 -0
  256. package/dist/cjs/util/Lifecycle.js.map +6 -0
  257. package/dist/cjs/util/Multiplex.d.ts +14 -0
  258. package/dist/cjs/util/Multiplex.d.ts.map +1 -0
  259. package/dist/cjs/util/Multiplex.js +22 -0
  260. package/dist/cjs/util/Multiplex.js.map +6 -0
  261. package/dist/cjs/util/Mutex.d.ts +34 -0
  262. package/dist/cjs/util/Mutex.d.ts.map +1 -0
  263. package/dist/cjs/util/Mutex.js +105 -0
  264. package/dist/cjs/util/Mutex.js.map +6 -0
  265. package/dist/cjs/util/NamedHandler.d.ts +21 -0
  266. package/dist/cjs/util/NamedHandler.d.ts.map +1 -0
  267. package/dist/cjs/util/NamedHandler.js +54 -0
  268. package/dist/cjs/util/NamedHandler.js.map +6 -0
  269. package/dist/cjs/util/Number.d.ts +37 -0
  270. package/dist/cjs/util/Number.d.ts.map +1 -0
  271. package/dist/cjs/util/Number.js +97 -0
  272. package/dist/cjs/util/Number.js.map +6 -0
  273. package/dist/cjs/util/Observable.d.ts +197 -0
  274. package/dist/cjs/util/Observable.d.ts.map +1 -0
  275. package/dist/cjs/util/Observable.js +340 -0
  276. package/dist/cjs/util/Observable.js.map +6 -0
  277. package/dist/cjs/util/PromiseQueue.d.ts +25 -0
  278. package/dist/cjs/util/PromiseQueue.d.ts.map +1 -0
  279. package/dist/cjs/util/PromiseQueue.js +107 -0
  280. package/dist/cjs/util/PromiseQueue.js.map +6 -0
  281. package/dist/cjs/util/Promises.d.ts +68 -0
  282. package/dist/cjs/util/Promises.d.ts.map +1 -0
  283. package/dist/cjs/util/Promises.js +199 -0
  284. package/dist/cjs/util/Promises.js.map +6 -0
  285. package/dist/cjs/util/Set.d.ts +60 -0
  286. package/dist/cjs/util/Set.d.ts.map +1 -0
  287. package/dist/cjs/util/Set.js +145 -0
  288. package/dist/cjs/util/Set.js.map +6 -0
  289. package/dist/cjs/util/Singleton.d.ts +7 -0
  290. package/dist/cjs/util/Singleton.d.ts.map +1 -0
  291. package/dist/cjs/util/Singleton.js +36 -0
  292. package/dist/cjs/util/Singleton.js.map +6 -0
  293. package/dist/cjs/util/Stream.d.ts +16 -0
  294. package/dist/cjs/util/Stream.d.ts.map +1 -0
  295. package/dist/cjs/util/Stream.js +38 -0
  296. package/dist/cjs/util/Stream.js.map +6 -0
  297. package/dist/cjs/util/String.d.ts +39 -0
  298. package/dist/cjs/util/String.d.ts.map +1 -0
  299. package/dist/cjs/util/String.js +208 -0
  300. package/dist/cjs/util/String.js.map +6 -0
  301. package/dist/cjs/util/Type.d.ts +84 -0
  302. package/dist/cjs/util/Type.d.ts.map +1 -0
  303. package/dist/cjs/util/Type.js +52 -0
  304. package/dist/cjs/util/Type.js.map +6 -0
  305. package/dist/cjs/util/index.d.ts +30 -0
  306. package/dist/cjs/util/index.d.ts.map +1 -0
  307. package/dist/cjs/util/index.js +47 -0
  308. package/dist/cjs/util/index.js.map +6 -0
  309. package/dist/esm/MatterError.d.ts +95 -0
  310. package/dist/esm/MatterError.d.ts.map +1 -0
  311. package/dist/esm/MatterError.js +157 -0
  312. package/dist/esm/MatterError.js.map +6 -0
  313. package/dist/esm/codec/Base64Codec.d.ts +23 -0
  314. package/dist/esm/codec/Base64Codec.d.ts.map +1 -0
  315. package/dist/esm/codec/Base64Codec.js +114 -0
  316. package/dist/esm/codec/Base64Codec.js.map +6 -0
  317. package/dist/esm/codec/DerCodec.d.ts +83 -0
  318. package/dist/esm/codec/DerCodec.d.ts.map +1 -0
  319. package/dist/esm/codec/DerCodec.js +266 -0
  320. package/dist/esm/codec/DerCodec.js.map +6 -0
  321. package/dist/esm/codec/DerTypes.d.ts +73 -0
  322. package/dist/esm/codec/DerTypes.d.ts.map +1 -0
  323. package/dist/esm/codec/DerTypes.js +122 -0
  324. package/dist/esm/codec/DerTypes.js.map +6 -0
  325. package/dist/esm/codec/DnsCodec.d.ts +86 -0
  326. package/dist/esm/codec/DnsCodec.d.ts.map +1 -0
  327. package/dist/esm/codec/DnsCodec.js +335 -0
  328. package/dist/esm/codec/DnsCodec.js.map +6 -0
  329. package/dist/esm/codec/index.d.ts +10 -0
  330. package/dist/esm/codec/index.d.ts.map +1 -0
  331. package/dist/esm/codec/index.js +10 -0
  332. package/dist/esm/codec/index.js.map +6 -0
  333. package/dist/esm/crypto/Crypto.d.ts +169 -0
  334. package/dist/esm/crypto/Crypto.d.ts.map +1 -0
  335. package/dist/esm/crypto/Crypto.js +73 -0
  336. package/dist/esm/crypto/Crypto.js.map +6 -0
  337. package/dist/esm/crypto/CryptoConstants.d.ts +19 -0
  338. package/dist/esm/crypto/CryptoConstants.d.ts.map +1 -0
  339. package/dist/esm/crypto/CryptoConstants.js +28 -0
  340. package/dist/esm/crypto/CryptoConstants.js.map +6 -0
  341. package/dist/esm/crypto/Key.d.ts +171 -0
  342. package/dist/esm/crypto/Key.d.ts.map +1 -0
  343. package/dist/esm/crypto/Key.js +336 -0
  344. package/dist/esm/crypto/Key.js.map +6 -0
  345. package/dist/esm/crypto/Spake2p.d.ts +40 -0
  346. package/dist/esm/crypto/Spake2p.d.ts.map +1 -0
  347. package/dist/esm/crypto/Spake2p.js +108 -0
  348. package/dist/esm/crypto/Spake2p.js.map +6 -0
  349. package/dist/esm/crypto/index.d.ts +10 -0
  350. package/dist/esm/crypto/index.d.ts.map +1 -0
  351. package/dist/esm/crypto/index.js +10 -0
  352. package/dist/esm/crypto/index.js.map +6 -0
  353. package/dist/esm/environment/Environment.d.ts +96 -0
  354. package/dist/esm/environment/Environment.d.ts.map +1 -0
  355. package/dist/esm/environment/Environment.js +179 -0
  356. package/dist/esm/environment/Environment.js.map +6 -0
  357. package/dist/esm/environment/Environmental.d.ts +52 -0
  358. package/dist/esm/environment/Environmental.d.ts.map +1 -0
  359. package/dist/esm/environment/Environmental.js +13 -0
  360. package/dist/esm/environment/Environmental.js.map +6 -0
  361. package/dist/esm/environment/RuntimeService.d.ts +107 -0
  362. package/dist/esm/environment/RuntimeService.d.ts.map +1 -0
  363. package/dist/esm/environment/RuntimeService.js +202 -0
  364. package/dist/esm/environment/RuntimeService.js.map +6 -0
  365. package/dist/esm/environment/VariableService.d.ts +58 -0
  366. package/dist/esm/environment/VariableService.d.ts.map +1 -0
  367. package/dist/esm/environment/VariableService.js +237 -0
  368. package/dist/esm/environment/VariableService.js.map +6 -0
  369. package/dist/esm/environment/index.d.ts +10 -0
  370. package/dist/esm/environment/index.d.ts.map +1 -0
  371. package/dist/esm/environment/index.js +10 -0
  372. package/dist/esm/environment/index.js.map +6 -0
  373. package/dist/esm/index.d.ts +17 -0
  374. package/dist/esm/index.d.ts.map +1 -0
  375. package/dist/esm/index.js +17 -0
  376. package/dist/esm/index.js.map +6 -0
  377. package/dist/esm/log/Diagnostic.d.ts +140 -0
  378. package/dist/esm/log/Diagnostic.d.ts.map +1 -0
  379. package/dist/esm/log/Diagnostic.js +277 -0
  380. package/dist/esm/log/Diagnostic.js.map +6 -0
  381. package/dist/esm/log/DiagnosticSource.d.ts +16 -0
  382. package/dist/esm/log/DiagnosticSource.d.ts.map +1 -0
  383. package/dist/esm/log/DiagnosticSource.js +25 -0
  384. package/dist/esm/log/DiagnosticSource.js.map +6 -0
  385. package/dist/esm/log/LogFormat.d.ts +33 -0
  386. package/dist/esm/log/LogFormat.d.ts.map +1 -0
  387. package/dist/esm/log/LogFormat.js +483 -0
  388. package/dist/esm/log/LogFormat.js.map +6 -0
  389. package/dist/esm/log/LogLevel.d.ts +18 -0
  390. package/dist/esm/log/LogLevel.d.ts.map +1 -0
  391. package/dist/esm/log/LogLevel.js +37 -0
  392. package/dist/esm/log/LogLevel.js.map +6 -0
  393. package/dist/esm/log/Logger.d.ts +220 -0
  394. package/dist/esm/log/Logger.d.ts.map +1 -0
  395. package/dist/esm/log/Logger.js +381 -0
  396. package/dist/esm/log/Logger.js.map +6 -0
  397. package/dist/esm/log/index.d.ts +11 -0
  398. package/dist/esm/log/index.d.ts.map +1 -0
  399. package/dist/esm/log/index.js +11 -0
  400. package/dist/esm/log/index.js.map +6 -0
  401. package/dist/esm/math/ReedSolomon.d.ts +11 -0
  402. package/dist/esm/math/ReedSolomon.d.ts.map +1 -0
  403. package/dist/esm/math/ReedSolomon.js +89 -0
  404. package/dist/esm/math/ReedSolomon.js.map +6 -0
  405. package/dist/esm/math/Verhoeff.d.ts +17 -0
  406. package/dist/esm/math/Verhoeff.d.ts.map +1 -0
  407. package/dist/esm/math/Verhoeff.js +44 -0
  408. package/dist/esm/math/Verhoeff.js.map +6 -0
  409. package/dist/esm/math/index.d.ts +8 -0
  410. package/dist/esm/math/index.d.ts.map +1 -0
  411. package/dist/esm/math/index.js +8 -0
  412. package/dist/esm/math/index.js.map +6 -0
  413. package/dist/esm/net/Channel.d.ts +24 -0
  414. package/dist/esm/net/Channel.d.ts.map +1 -0
  415. package/dist/esm/net/Channel.js +15 -0
  416. package/dist/esm/net/Channel.js.map +6 -0
  417. package/dist/esm/net/NetInterface.d.ts +24 -0
  418. package/dist/esm/net/NetInterface.d.ts.map +1 -0
  419. package/dist/esm/net/NetInterface.js +22 -0
  420. package/dist/esm/net/NetInterface.js.map +6 -0
  421. package/dist/esm/net/Network.d.ts +54 -0
  422. package/dist/esm/net/Network.d.ts.map +1 -0
  423. package/dist/esm/net/Network.js +30 -0
  424. package/dist/esm/net/Network.js.map +6 -0
  425. package/dist/esm/net/ServerAddress.d.ts +17 -0
  426. package/dist/esm/net/ServerAddress.d.ts.map +1 -0
  427. package/dist/esm/net/ServerAddress.js +12 -0
  428. package/dist/esm/net/ServerAddress.js.map +6 -0
  429. package/dist/esm/net/TransportInterface.d.ts +40 -0
  430. package/dist/esm/net/TransportInterface.d.ts.map +1 -0
  431. package/dist/esm/net/TransportInterface.js +35 -0
  432. package/dist/esm/net/TransportInterface.js.map +6 -0
  433. package/dist/esm/net/UdpChannel.d.ts +25 -0
  434. package/dist/esm/net/UdpChannel.d.ts.map +1 -0
  435. package/dist/esm/net/UdpChannel.js +10 -0
  436. package/dist/esm/net/UdpChannel.js.map +6 -0
  437. package/dist/esm/net/UdpInterface.d.ts +35 -0
  438. package/dist/esm/net/UdpInterface.d.ts.map +1 -0
  439. package/dist/esm/net/UdpInterface.js +62 -0
  440. package/dist/esm/net/UdpInterface.js.map +6 -0
  441. package/dist/esm/net/UdpMulticastServer.d.ts +30 -0
  442. package/dist/esm/net/UdpMulticastServer.d.ts.map +1 -0
  443. package/dist/esm/net/UdpMulticastServer.js +113 -0
  444. package/dist/esm/net/UdpMulticastServer.js.map +6 -0
  445. package/dist/esm/net/index.d.ts +17 -0
  446. package/dist/esm/net/index.d.ts.map +1 -0
  447. package/dist/esm/net/index.js +17 -0
  448. package/dist/esm/net/index.js.map +6 -0
  449. package/dist/esm/net/mock/MockNetwork.d.ts +19 -0
  450. package/dist/esm/net/mock/MockNetwork.d.ts.map +1 -0
  451. package/dist/esm/net/mock/MockNetwork.js +36 -0
  452. package/dist/esm/net/mock/MockNetwork.js.map +6 -0
  453. package/dist/esm/net/mock/MockUdpChannel.d.ts +27 -0
  454. package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -0
  455. package/dist/esm/net/mock/MockUdpChannel.js +56 -0
  456. package/dist/esm/net/mock/MockUdpChannel.js.map +6 -0
  457. package/dist/esm/net/mock/NetworkSimulator.d.ts +18 -0
  458. package/dist/esm/net/mock/NetworkSimulator.d.ts.map +1 -0
  459. package/dist/esm/net/mock/NetworkSimulator.js +53 -0
  460. package/dist/esm/net/mock/NetworkSimulator.js.map +6 -0
  461. package/dist/esm/package.json +6 -0
  462. package/dist/esm/polyfills/disposable.d.ts +7 -0
  463. package/dist/esm/polyfills/disposable.d.ts.map +1 -0
  464. package/dist/esm/polyfills/disposable.js +18 -0
  465. package/dist/esm/polyfills/disposable.js.map +6 -0
  466. package/dist/esm/polyfills/index.d.ts +7 -0
  467. package/dist/esm/polyfills/index.d.ts.map +1 -0
  468. package/dist/esm/polyfills/index.js +7 -0
  469. package/dist/esm/polyfills/index.js.map +6 -0
  470. package/dist/esm/storage/Storage.d.ts +54 -0
  471. package/dist/esm/storage/Storage.d.ts.map +1 -0
  472. package/dist/esm/storage/Storage.js +18 -0
  473. package/dist/esm/storage/Storage.js.map +6 -0
  474. package/dist/esm/storage/StorageBackendMemory.d.ts +27 -0
  475. package/dist/esm/storage/StorageBackendMemory.d.ts.map +1 -0
  476. package/dist/esm/storage/StorageBackendMemory.js +111 -0
  477. package/dist/esm/storage/StorageBackendMemory.js.map +6 -0
  478. package/dist/esm/storage/StorageContext.d.ts +26 -0
  479. package/dist/esm/storage/StorageContext.d.ts.map +1 -0
  480. package/dist/esm/storage/StorageContext.js +97 -0
  481. package/dist/esm/storage/StorageContext.js.map +6 -0
  482. package/dist/esm/storage/StorageManager.d.ts +17 -0
  483. package/dist/esm/storage/StorageManager.d.ts.map +1 -0
  484. package/dist/esm/storage/StorageManager.js +39 -0
  485. package/dist/esm/storage/StorageManager.js.map +6 -0
  486. package/dist/esm/storage/StorageService.d.ts +35 -0
  487. package/dist/esm/storage/StorageService.d.ts.map +1 -0
  488. package/dist/esm/storage/StorageService.js +62 -0
  489. package/dist/esm/storage/StorageService.js.map +6 -0
  490. package/dist/esm/storage/StringifyTools.d.ts +16 -0
  491. package/dist/esm/storage/StringifyTools.d.ts.map +1 -0
  492. package/dist/esm/storage/StringifyTools.js +85 -0
  493. package/dist/esm/storage/StringifyTools.js.map +6 -0
  494. package/dist/esm/storage/index.d.ts +12 -0
  495. package/dist/esm/storage/index.d.ts.map +1 -0
  496. package/dist/esm/storage/index.js +12 -0
  497. package/dist/esm/storage/index.js.map +6 -0
  498. package/dist/esm/time/Time.d.ts +66 -0
  499. package/dist/esm/time/Time.d.ts.map +1 -0
  500. package/dist/esm/time/Time.js +117 -0
  501. package/dist/esm/time/Time.js.map +6 -0
  502. package/dist/esm/time/index.d.ts +7 -0
  503. package/dist/esm/time/index.d.ts.map +1 -0
  504. package/dist/esm/time/index.js +7 -0
  505. package/dist/esm/time/index.js.map +6 -0
  506. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  507. package/dist/esm/util/Array.d.ts +12 -0
  508. package/dist/esm/util/Array.d.ts.map +1 -0
  509. package/dist/esm/util/Array.js +8 -0
  510. package/dist/esm/util/Array.js.map +6 -0
  511. package/dist/esm/util/Bytes.d.ts +23 -0
  512. package/dist/esm/util/Bytes.d.ts.map +1 -0
  513. package/dist/esm/util/Bytes.js +75 -0
  514. package/dist/esm/util/Bytes.js.map +6 -0
  515. package/dist/esm/util/Cache.d.ts +33 -0
  516. package/dist/esm/util/Cache.d.ts.map +1 -0
  517. package/dist/esm/util/Cache.js +94 -0
  518. package/dist/esm/util/Cache.js.map +6 -0
  519. package/dist/esm/util/Construction.d.ts +182 -0
  520. package/dist/esm/util/Construction.d.ts.map +1 -0
  521. package/dist/esm/util/Construction.js +397 -0
  522. package/dist/esm/util/Construction.js.map +6 -0
  523. package/dist/esm/util/DataReadQueue.d.ts +17 -0
  524. package/dist/esm/util/DataReadQueue.d.ts.map +1 -0
  525. package/dist/esm/util/DataReadQueue.js +56 -0
  526. package/dist/esm/util/DataReadQueue.js.map +6 -0
  527. package/dist/esm/util/DataReader.d.ts +32 -0
  528. package/dist/esm/util/DataReader.d.ts.map +1 -0
  529. package/dist/esm/util/DataReader.js +81 -0
  530. package/dist/esm/util/DataReader.js.map +6 -0
  531. package/dist/esm/util/DataWriter.d.ts +26 -0
  532. package/dist/esm/util/DataWriter.d.ts.map +1 -0
  533. package/dist/esm/util/DataWriter.js +94 -0
  534. package/dist/esm/util/DataWriter.js.map +6 -0
  535. package/dist/esm/util/DeepCopy.d.ts +12 -0
  536. package/dist/esm/util/DeepCopy.d.ts.map +1 -0
  537. package/dist/esm/util/DeepCopy.js +38 -0
  538. package/dist/esm/util/DeepCopy.js.map +6 -0
  539. package/dist/esm/util/DeepEqual.d.ts +7 -0
  540. package/dist/esm/util/DeepEqual.d.ts.map +1 -0
  541. package/dist/esm/util/DeepEqual.js +35 -0
  542. package/dist/esm/util/DeepEqual.js.map +6 -0
  543. package/dist/esm/util/Error.d.ts +12 -0
  544. package/dist/esm/util/Error.d.ts.map +1 -0
  545. package/dist/esm/util/Error.js +21 -0
  546. package/dist/esm/util/Error.js.map +6 -0
  547. package/dist/esm/util/GeneratedClass.d.ts +62 -0
  548. package/dist/esm/util/GeneratedClass.d.ts.map +1 -0
  549. package/dist/esm/util/GeneratedClass.js +97 -0
  550. package/dist/esm/util/GeneratedClass.js.map +6 -0
  551. package/dist/esm/util/Introspection.d.ts +38 -0
  552. package/dist/esm/util/Introspection.d.ts.map +1 -0
  553. package/dist/esm/util/Introspection.js +65 -0
  554. package/dist/esm/util/Introspection.js.map +6 -0
  555. package/dist/esm/util/Ip.d.ts +8 -0
  556. package/dist/esm/util/Ip.d.ts.map +1 -0
  557. package/dist/esm/util/Ip.js +70 -0
  558. package/dist/esm/util/Ip.js.map +6 -0
  559. package/dist/esm/util/Lifecycle.d.ts +97 -0
  560. package/dist/esm/util/Lifecycle.d.ts.map +1 -0
  561. package/dist/esm/util/Lifecycle.js +69 -0
  562. package/dist/esm/util/Lifecycle.js.map +6 -0
  563. package/dist/esm/util/Multiplex.d.ts +14 -0
  564. package/dist/esm/util/Multiplex.d.ts.map +1 -0
  565. package/dist/esm/util/Multiplex.js +6 -0
  566. package/dist/esm/util/Multiplex.js.map +6 -0
  567. package/dist/esm/util/Mutex.d.ts +34 -0
  568. package/dist/esm/util/Mutex.d.ts.map +1 -0
  569. package/dist/esm/util/Mutex.js +85 -0
  570. package/dist/esm/util/Mutex.js.map +6 -0
  571. package/dist/esm/util/NamedHandler.d.ts +21 -0
  572. package/dist/esm/util/NamedHandler.d.ts.map +1 -0
  573. package/dist/esm/util/NamedHandler.js +34 -0
  574. package/dist/esm/util/NamedHandler.js.map +6 -0
  575. package/dist/esm/util/Number.d.ts +37 -0
  576. package/dist/esm/util/Number.d.ts.map +1 -0
  577. package/dist/esm/util/Number.js +77 -0
  578. package/dist/esm/util/Number.js.map +6 -0
  579. package/dist/esm/util/Observable.d.ts +197 -0
  580. package/dist/esm/util/Observable.d.ts.map +1 -0
  581. package/dist/esm/util/Observable.js +320 -0
  582. package/dist/esm/util/Observable.js.map +6 -0
  583. package/dist/esm/util/PromiseQueue.d.ts +25 -0
  584. package/dist/esm/util/PromiseQueue.d.ts.map +1 -0
  585. package/dist/esm/util/PromiseQueue.js +87 -0
  586. package/dist/esm/util/PromiseQueue.js.map +6 -0
  587. package/dist/esm/util/Promises.d.ts +68 -0
  588. package/dist/esm/util/Promises.d.ts.map +1 -0
  589. package/dist/esm/util/Promises.js +179 -0
  590. package/dist/esm/util/Promises.js.map +6 -0
  591. package/dist/esm/util/Set.d.ts +60 -0
  592. package/dist/esm/util/Set.d.ts.map +1 -0
  593. package/dist/esm/util/Set.js +125 -0
  594. package/dist/esm/util/Set.js.map +6 -0
  595. package/dist/esm/util/Singleton.d.ts +7 -0
  596. package/dist/esm/util/Singleton.d.ts.map +1 -0
  597. package/dist/esm/util/Singleton.js +16 -0
  598. package/dist/esm/util/Singleton.js.map +6 -0
  599. package/dist/esm/util/Stream.d.ts +16 -0
  600. package/dist/esm/util/Stream.d.ts.map +1 -0
  601. package/dist/esm/util/Stream.js +18 -0
  602. package/dist/esm/util/Stream.js.map +6 -0
  603. package/dist/esm/util/String.d.ts +39 -0
  604. package/dist/esm/util/String.d.ts.map +1 -0
  605. package/dist/esm/util/String.js +188 -0
  606. package/dist/esm/util/String.js.map +6 -0
  607. package/dist/esm/util/Type.d.ts +84 -0
  608. package/dist/esm/util/Type.d.ts.map +1 -0
  609. package/dist/esm/util/Type.js +32 -0
  610. package/dist/esm/util/Type.js.map +6 -0
  611. package/dist/esm/util/index.d.ts +30 -0
  612. package/dist/esm/util/index.d.ts.map +1 -0
  613. package/dist/esm/util/index.js +30 -0
  614. package/dist/esm/util/index.js.map +6 -0
  615. package/package.json +76 -0
  616. package/src/MatterError.ts +205 -0
  617. package/src/codec/Base64Codec.ts +137 -0
  618. package/src/codec/DerCodec.ts +300 -0
  619. package/src/codec/DerTypes.ts +145 -0
  620. package/src/codec/DnsCodec.ts +393 -0
  621. package/src/codec/index.ts +10 -0
  622. package/src/crypto/Crypto.ts +136 -0
  623. package/src/crypto/CryptoConstants.ts +19 -0
  624. package/src/crypto/Key.ts +600 -0
  625. package/src/crypto/Spake2p.ts +128 -0
  626. package/src/crypto/index.ts +10 -0
  627. package/src/environment/Environment.ts +215 -0
  628. package/src/environment/Environmental.ts +60 -0
  629. package/src/environment/RuntimeService.ts +301 -0
  630. package/src/environment/VariableService.ts +308 -0
  631. package/src/environment/index.ts +10 -0
  632. package/src/index.ts +17 -0
  633. package/src/log/Diagnostic.ts +454 -0
  634. package/src/log/DiagnosticSource.ts +30 -0
  635. package/src/log/LogFormat.ts +646 -0
  636. package/src/log/LogLevel.ts +36 -0
  637. package/src/log/Logger.ts +474 -0
  638. package/src/log/index.ts +11 -0
  639. package/src/math/ReedSolomon.ts +100 -0
  640. package/src/math/Verhoeff.ts +47 -0
  641. package/src/math/index.ts +8 -0
  642. package/src/net/Channel.ts +30 -0
  643. package/src/net/NetInterface.ts +33 -0
  644. package/src/net/Network.ts +70 -0
  645. package/src/net/ServerAddress.ts +22 -0
  646. package/src/net/TransportInterface.ts +56 -0
  647. package/src/net/UdpChannel.ts +30 -0
  648. package/src/net/UdpInterface.ts +75 -0
  649. package/src/net/UdpMulticastServer.ts +138 -0
  650. package/src/net/index.ts +17 -0
  651. package/src/net/mock/MockNetwork.ts +42 -0
  652. package/src/net/mock/MockUdpChannel.ts +69 -0
  653. package/src/net/mock/NetworkSimulator.ts +63 -0
  654. package/src/polyfills/disposable.ts +24 -0
  655. package/src/polyfills/index.ts +7 -0
  656. package/src/storage/Storage.ts +61 -0
  657. package/src/storage/StorageBackendMemory.ts +131 -0
  658. package/src/storage/StorageContext.ts +111 -0
  659. package/src/storage/StorageManager.ts +39 -0
  660. package/src/storage/StorageService.ts +73 -0
  661. package/src/storage/StringifyTools.ts +107 -0
  662. package/src/storage/index.ts +12 -0
  663. package/src/time/Time.ts +179 -0
  664. package/src/time/index.ts +7 -0
  665. package/src/tsconfig.json +10 -0
  666. package/src/util/Array.ts +15 -0
  667. package/src/util/Bytes.ts +73 -0
  668. package/src/util/Cache.ts +111 -0
  669. package/src/util/Construction.ts +717 -0
  670. package/src/util/DataReadQueue.ts +55 -0
  671. package/src/util/DataReader.ts +100 -0
  672. package/src/util/DataWriter.ts +109 -0
  673. package/src/util/DeepCopy.ts +47 -0
  674. package/src/util/DeepEqual.ts +49 -0
  675. package/src/util/Error.ts +32 -0
  676. package/src/util/GeneratedClass.ts +204 -0
  677. package/src/util/Introspection.ts +93 -0
  678. package/src/util/Ip.ts +71 -0
  679. package/src/util/Lifecycle.ts +135 -0
  680. package/src/util/Multiplex.ts +14 -0
  681. package/src/util/Mutex.ts +100 -0
  682. package/src/util/NamedHandler.ts +52 -0
  683. package/src/util/Number.ts +71 -0
  684. package/src/util/Observable.ts +550 -0
  685. package/src/util/PromiseQueue.ts +102 -0
  686. package/src/util/Promises.ts +278 -0
  687. package/src/util/Set.ts +189 -0
  688. package/src/util/Singleton.ts +13 -0
  689. package/src/util/Stream.ts +19 -0
  690. package/src/util/String.ts +248 -0
  691. package/src/util/Type.ts +145 -0
  692. package/src/util/index.ts +30 -0
@@ -0,0 +1,145 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import {
8
+ BitByteArray,
9
+ ContextTagged,
10
+ ContextTaggedBytes,
11
+ DatatypeOverride,
12
+ DerCodec,
13
+ DerError,
14
+ DerObject,
15
+ DerType,
16
+ ObjectId,
17
+ } from "../codec/DerCodec.js";
18
+
19
+ export namespace X962 {
20
+ export const PublicKeyEcPrime256v1 = (key: Uint8Array) => ({
21
+ type: {
22
+ algorithm: ObjectId("2A8648CE3D0201") /* EC Public Key */,
23
+ curve: ObjectId("2A8648CE3D030107") /* Curve P256_V1 */,
24
+ },
25
+ bytes: BitByteArray(key),
26
+ });
27
+ export const EcdsaWithSHA256 = DerObject("2A8648CE3D040302");
28
+ }
29
+
30
+ export const SHA256_CMS = DerObject("608648016503040201"); // 2.16.840.1.101.3.4.2.1
31
+
32
+ export namespace X509 {
33
+ export const SubjectKeyIdentifier = (identifier: Uint8Array) =>
34
+ DerObject("551d0e", { value: DerCodec.encode(identifier) });
35
+ export const AuthorityKeyIdentifier = (identifier: Uint8Array) =>
36
+ DerObject("551d23", { value: DerCodec.encode({ id: ContextTaggedBytes(0, identifier) }) });
37
+ export const BasicConstraints = (constraints: any) => {
38
+ const toEncode = { ...constraints };
39
+ if (toEncode?.isCa === false) {
40
+ // This is the default value, so we can remove it according to
41
+ // https://datatracker.ietf.org/doc/html/rfc5280#appendix-B
42
+ delete toEncode.isCa;
43
+ }
44
+ return DerObject("551d13", { critical: true, value: DerCodec.encode(toEncode) });
45
+ };
46
+ export const ExtendedKeyUsage = (values: number[] | undefined) => {
47
+ if (values === undefined) {
48
+ return undefined;
49
+ }
50
+ const data = {} as any;
51
+ values.forEach(value => {
52
+ switch (value) {
53
+ case 1: // server Auth
54
+ data.serverAuth = ObjectId("2b06010505070301");
55
+ break;
56
+ case 2: // client Auth
57
+ data.clientAuth = ObjectId("2b06010505070302");
58
+ break;
59
+ case 3: // Code Signing
60
+ data.codeSigning = ObjectId("2b06010505070303");
61
+ break;
62
+ case 4: // Email Protection
63
+ data.emailProtection = ObjectId("2b06010505070304");
64
+ break;
65
+ case 5: // Time Stamping
66
+ data.timeStamping = ObjectId("2b06010505070308");
67
+ break;
68
+ case 6: // OCSP Signing
69
+ data.ocspSigning = ObjectId("2b06010505070309");
70
+ break;
71
+ default:
72
+ throw new DerError(`Unsupported extended key usage value ${value}`);
73
+ }
74
+ });
75
+ return DerObject("551d25", {
76
+ critical: true,
77
+ value: DerCodec.encode(data),
78
+ });
79
+ };
80
+ export const KeyUsage = (value: number) => {
81
+ return DerObject("551d0f", {
82
+ critical: true,
83
+ value: DerCodec.encode(DatatypeOverride(DerType.BitString, value)),
84
+ });
85
+ };
86
+ }
87
+
88
+ export namespace Pkcs7 {
89
+ export const Data = (data: any) => DerObject("2A864886F70D010701", { value: ContextTagged(0, data) });
90
+ export const SignedData = (data: any) => DerObject("2a864886f70d010702", { value: ContextTagged(0, data) });
91
+ }
92
+
93
+ export namespace X520 {
94
+ export const NON_WELL_DEFINED_DATE = new Date("9999-12-31 23:59:59Z");
95
+
96
+ /**
97
+ * Generator function to create a specific ASN string field for a DN with the OID base 2.5.4.*.
98
+ * The returned function takes the value of the string and returns the ASN.1 DER object. Optionally the string
99
+ * can be encoded as a Printable String which adjusts the OID accordingly..
100
+ */
101
+ const GenericString_X520 =
102
+ (id: number) =>
103
+ (data: string, asPrintedString = false) => {
104
+ let value: any = data;
105
+ if (asPrintedString) {
106
+ value = DatatypeOverride(DerType.PrintableString, value);
107
+ }
108
+ return [DerObject(`5504${id.toString(16).padStart(2, "0")}`, { value })];
109
+ };
110
+
111
+ /** commonName = ASN.1 OID 2.5.4.3 */
112
+ export const CommonName = GenericString_X520(3);
113
+ /** surName = ASN.1 OID 2.5.4.4 */
114
+ export const SurName = GenericString_X520(4);
115
+ /** serialNumber = ASN.1 OID 2.5.4.5 */
116
+ export const SerialNumber = GenericString_X520(5);
117
+ /** countryName = ASN.1 OID 2.5.4.6 */
118
+ export const CountryName = GenericString_X520(6);
119
+ /** localityName = ASN.1 OID 2.5.4.7 */
120
+ export const LocalityName = GenericString_X520(7);
121
+ /** stateOrProvinceName = ASN.1 OID 2.5.4.8 */
122
+ export const StateOrProvinceName = GenericString_X520(8);
123
+ /** organizationName = ASN.1 OID 2.5.4.10 */
124
+ export const OrganisationName = GenericString_X520(10);
125
+ /** organizationalUnitName = ASN.1 OID 2.5.4.11 */
126
+ export const OrganizationalUnitName = GenericString_X520(11);
127
+ /** title = ASN.1 OID 2.5.4.12 */
128
+ export const Title = GenericString_X520(12);
129
+ /** name = ASN.1 OID 2.5.4.41 */
130
+ export const Name = GenericString_X520(41);
131
+ /** givenName = ASN.1 OID 2.5.4.42 */
132
+ export const GivenName = GenericString_X520(42);
133
+ /** initials = ASN.1 OID 2.5.4.43 */
134
+ export const Initials = GenericString_X520(43);
135
+ /** generationQualifier = ASN.1 OID 2.5.4.44 */
136
+ export const GenerationQualifier = GenericString_X520(44);
137
+ /** dnQualifier = ASN.1 OID 2.5.4.46 */
138
+ export const DnQualifier = GenericString_X520(46);
139
+ /** pseudonym = ASN.1 OID 2.5.4.65 */
140
+ export const Pseudonym = GenericString_X520(65);
141
+ /** domain-component = ASN.1 OID 0.9.2342.19200300.100.1.25, IA5String */
142
+ export const DomainComponent = (value: string) => [
143
+ DerObject("06092A864886F70D010901", { value: DatatypeOverride(DerType.IA5String, value) }),
144
+ ];
145
+ }
@@ -0,0 +1,393 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { InternalError, NotImplementedError, UnexpectedDataError } from "../MatterError.js";
8
+ import { Bytes, Endian } from "../util/Bytes.js";
9
+ import { DataReader } from "../util/DataReader.js";
10
+ import { DataWriter } from "../util/DataWriter.js";
11
+ import { isIPv4, isIPv6 } from "../util/Ip.js";
12
+
13
+ /**
14
+ * The maximum MDNS message size to usually fit into one UDP network MTU packet. Data are split into multiple messages
15
+ * when needed.
16
+ */
17
+ export const MAX_MDNS_MESSAGE_SIZE = 1232; // 1280bytes (IPv6 packet size) - 8bytes (UDP header) - 40bytes (IPv6 IP header, IPv4 is only 20bytes)
18
+
19
+ export const PtrRecord = (name: string, ptr: string, ttl = 120, flushCache = false): DnsRecord<string> => ({
20
+ name,
21
+ value: ptr,
22
+ ttl,
23
+ recordType: DnsRecordType.PTR,
24
+ recordClass: DnsRecordClass.IN,
25
+ flushCache,
26
+ });
27
+ export const ARecord = (name: string, ip: string, ttl = 120, flushCache = false): DnsRecord<string> => ({
28
+ name,
29
+ value: ip,
30
+ ttl,
31
+ recordType: DnsRecordType.A,
32
+ recordClass: DnsRecordClass.IN,
33
+ flushCache,
34
+ });
35
+ export const AAAARecord = (name: string, ip: string, ttl = 120, flushCache = false): DnsRecord<string> => ({
36
+ name,
37
+ value: ip,
38
+ ttl,
39
+ recordType: DnsRecordType.AAAA,
40
+ recordClass: DnsRecordClass.IN,
41
+ flushCache,
42
+ });
43
+ export const TxtRecord = (name: string, entries: string[], ttl = 120, flushCache = false): DnsRecord<string[]> => ({
44
+ name,
45
+ value: entries,
46
+ ttl,
47
+ recordType: DnsRecordType.TXT,
48
+ recordClass: DnsRecordClass.IN,
49
+ flushCache,
50
+ });
51
+ export const SrvRecord = (
52
+ name: string,
53
+ srv: SrvRecordValue,
54
+ ttl = 120,
55
+ flushCache = false,
56
+ ): DnsRecord<SrvRecordValue> => ({
57
+ name,
58
+ value: srv,
59
+ ttl,
60
+ recordType: DnsRecordType.SRV,
61
+ recordClass: DnsRecordClass.IN,
62
+ flushCache,
63
+ });
64
+
65
+ export type SrvRecordValue = {
66
+ priority: number;
67
+ weight: number;
68
+ port: number;
69
+ target: string;
70
+ };
71
+
72
+ export type DnsQuery = {
73
+ name: string;
74
+ recordType: DnsRecordType;
75
+ recordClass: DnsRecordClass;
76
+ uniCastResponse?: boolean;
77
+ };
78
+
79
+ export type DnsRecord<T> = {
80
+ name: string;
81
+ recordType: DnsRecordType;
82
+ recordClass: DnsRecordClass;
83
+ flushCache?: boolean;
84
+ ttl: number;
85
+ value: T;
86
+ };
87
+
88
+ export type DnsMessage = {
89
+ transactionId: number;
90
+ messageType: DnsMessageType;
91
+ queries: DnsQuery[];
92
+ answers: DnsRecord<any>[];
93
+ authorities: DnsRecord<any>[];
94
+ additionalRecords: DnsRecord<any>[];
95
+ };
96
+
97
+ export type DnsMessagePartiallyPreEncoded = Omit<DnsMessage, "answers" | "additionalRecords"> & {
98
+ answers: (DnsRecord<any> | Uint8Array)[];
99
+ additionalRecords: (DnsRecord<any> | Uint8Array)[];
100
+ };
101
+
102
+ export enum DnsMessageType {
103
+ Query = 0x0000,
104
+ TruncatedQuery = 0x0200,
105
+ Response = 0x8400, // Authoritative Answer
106
+ TruncatedResponse = 0x8600,
107
+ }
108
+
109
+ export enum DnsRecordType {
110
+ A = 0x01,
111
+ PTR = 0x0c,
112
+ TXT = 0x10,
113
+ AAAA = 0x1c,
114
+ SRV = 0x21,
115
+ NSEC = 0x2f,
116
+ ANY = 0xff,
117
+ }
118
+
119
+ export enum DnsRecordClass {
120
+ IN = 0x01,
121
+ ANY = 0xff,
122
+ }
123
+
124
+ export class DnsCodec {
125
+ static decode(message: Uint8Array): DnsMessage | undefined {
126
+ try {
127
+ const reader = new DataReader(message, Endian.Big);
128
+ const transactionId = reader.readUInt16();
129
+ const messageType = reader.readUInt16();
130
+ const queriesCount = reader.readUInt16();
131
+ const answersCount = reader.readUInt16();
132
+ const authoritiesCount = reader.readUInt16();
133
+ const additionalRecordsCount = reader.readUInt16();
134
+ const queries = new Array<DnsQuery>();
135
+ for (let i = 0; i < queriesCount; i++) {
136
+ queries.push(this.decodeQuery(reader, message));
137
+ }
138
+ const answers = new Array<DnsRecord<any>>();
139
+ for (let i = 0; i < answersCount; i++) {
140
+ answers.push(this.decodeRecord(reader, message));
141
+ }
142
+ const authorities = new Array<DnsRecord<any>>();
143
+ for (let i = 0; i < authoritiesCount; i++) {
144
+ authorities.push(this.decodeRecord(reader, message));
145
+ }
146
+ const additionalRecords = new Array<DnsRecord<any>>();
147
+ for (let i = 0; i < additionalRecordsCount; i++) {
148
+ additionalRecords.push(this.decodeRecord(reader, message));
149
+ }
150
+ return { transactionId, messageType, queries, answers, authorities, additionalRecords };
151
+ } catch (error) {
152
+ return undefined;
153
+ }
154
+ }
155
+
156
+ private static decodeQuery(reader: DataReader<Endian.Big>, message: Uint8Array): DnsQuery {
157
+ const name = this.decodeQName(reader, message);
158
+ const recordType = reader.readUInt16();
159
+ const classInt = reader.readUInt16();
160
+ const uniCastResponse = (classInt & 0x8000) !== 0;
161
+ const recordClass = classInt & 0x7fff;
162
+ return { name, recordType, recordClass, uniCastResponse };
163
+ }
164
+
165
+ private static decodeRecord(reader: DataReader<Endian.Big>, message: Uint8Array): DnsRecord<any> {
166
+ const name = this.decodeQName(reader, message);
167
+ const recordType = reader.readUInt16();
168
+ const classInt = reader.readUInt16();
169
+ const flushCache = (classInt & 0x8000) !== 0;
170
+ const recordClass = classInt & 0x7fff;
171
+ const ttl = reader.readUInt32();
172
+ const valueLength = reader.readUInt16();
173
+ const valueBytes = reader.readByteArray(valueLength);
174
+ const value = this.decodeRecordValue(valueBytes, recordType, message);
175
+ return { name, recordType, recordClass, ttl, value, flushCache };
176
+ }
177
+
178
+ private static decodeQName(reader: DataReader<Endian.Big>, message: Uint8Array) {
179
+ const messageReader = new DataReader(message, Endian.Big);
180
+ const qNameItems = new Array<string>();
181
+ while (true) {
182
+ const itemLength = reader.readUInt8();
183
+ if (itemLength === 0) break;
184
+ if ((itemLength & 0xc0) !== 0) {
185
+ // Compressed Qname
186
+ const indexInMessage = reader.readUInt8() | ((itemLength & 0x3f) << 8);
187
+ messageReader.setOffset(indexInMessage);
188
+ qNameItems.push(this.decodeQName(messageReader, message));
189
+ break;
190
+ }
191
+ qNameItems.push(reader.readUtf8String(itemLength));
192
+ }
193
+ return qNameItems.join(".");
194
+ }
195
+
196
+ private static decodeRecordValue(valueBytes: Uint8Array, recordType: DnsRecordType, message: Uint8Array) {
197
+ switch (recordType) {
198
+ case DnsRecordType.PTR:
199
+ return this.decodeQName(new DataReader(valueBytes, Endian.Big), message);
200
+ case DnsRecordType.SRV:
201
+ return this.decodeSrvRecord(valueBytes, message);
202
+ case DnsRecordType.TXT:
203
+ return this.decodeTxtRecord(valueBytes);
204
+ case DnsRecordType.AAAA:
205
+ return this.decodeAaaaRecord(valueBytes);
206
+ case DnsRecordType.A:
207
+ return this.decodeARecord(valueBytes);
208
+ default:
209
+ // Unknown type, don't decode
210
+ return valueBytes;
211
+ }
212
+ }
213
+
214
+ private static decodeSrvRecord(valueBytes: Uint8Array, message: Uint8Array): SrvRecordValue {
215
+ const reader = new DataReader(valueBytes, Endian.Big);
216
+ const priority = reader.readUInt16();
217
+ const weight = reader.readUInt16();
218
+ const port = reader.readUInt16();
219
+ const target = this.decodeQName(reader, message);
220
+ return { priority, weight, port, target };
221
+ }
222
+
223
+ private static decodeTxtRecord(valueBytes: Uint8Array): string[] {
224
+ const reader = new DataReader(valueBytes, Endian.Big);
225
+ const result = new Array<string>();
226
+ let bytesRead = 0;
227
+ while (bytesRead < valueBytes.length) {
228
+ const length = reader.readUInt8();
229
+ result.push(reader.readUtf8String(length));
230
+ bytesRead += length + 1;
231
+ }
232
+ return result;
233
+ }
234
+
235
+ private static decodeAaaaRecord(valueBytes: Uint8Array): string {
236
+ const reader = new DataReader(valueBytes, Endian.Big);
237
+ const ipItems = new Array<string>();
238
+ for (let i = 0; i < 8; i++) {
239
+ ipItems.push(reader.readUInt16().toString(16));
240
+ }
241
+ // Compress 0 sequences
242
+ const zeroSequences = new Array<{ start: number; length: number }>();
243
+ for (let i = 0; i < 8; i++) {
244
+ if (ipItems[i] !== "0") continue;
245
+ const start = i;
246
+ i++;
247
+ while (i < 8 && ipItems[i] === "0") {
248
+ i++;
249
+ }
250
+ zeroSequences.push({ start, length: i - start });
251
+ }
252
+ if (zeroSequences.length > 0) {
253
+ zeroSequences.sort((a, b) => a.length - b.length);
254
+ const { start, length } = zeroSequences[0];
255
+ ipItems[start] = "";
256
+ ipItems.splice(start + 1, length - 1);
257
+ }
258
+ return ipItems.join(":");
259
+ }
260
+
261
+ private static decodeARecord(valueBytes: Uint8Array): string {
262
+ const reader = new DataReader(valueBytes, Endian.Big);
263
+ const ipItems = new Array<string>();
264
+ for (let i = 0; i < 4; i++) {
265
+ ipItems.push(reader.readUInt8().toString());
266
+ }
267
+ return ipItems.join(".");
268
+ }
269
+
270
+ static encode({
271
+ messageType,
272
+ transactionId = 0,
273
+ queries = [],
274
+ answers = [],
275
+ authorities = [],
276
+ additionalRecords = [],
277
+ }: Partial<DnsMessagePartiallyPreEncoded>): Uint8Array {
278
+ if (messageType === undefined) throw new InternalError("Message type must be specified!");
279
+ if (queries.length > 0 && messageType !== DnsMessageType.Query && messageType !== DnsMessageType.TruncatedQuery)
280
+ throw new InternalError("Queries can only be included in query messages!");
281
+ if (authorities.length > 0) throw new NotImplementedError("Authority answers are not supported yet!");
282
+
283
+ const writer = new DataWriter(Endian.Big);
284
+ writer.writeUInt16(transactionId);
285
+ writer.writeUInt16(messageType);
286
+ writer.writeUInt16(queries.length);
287
+ writer.writeUInt16(answers.length);
288
+ writer.writeUInt16(authorities.length);
289
+ writer.writeUInt16(additionalRecords.length);
290
+ queries.forEach(({ name, recordClass, recordType, uniCastResponse = false }) => {
291
+ writer.writeByteArray(this.encodeQName(name));
292
+ writer.writeUInt16(recordType);
293
+ writer.writeUInt16(recordClass | (uniCastResponse ? 0x8000 : 0));
294
+ });
295
+ [...answers, ...authorities, ...additionalRecords].forEach(record => {
296
+ if (record instanceof Uint8Array) {
297
+ writer.writeByteArray(record);
298
+ } else {
299
+ writer.writeByteArray(this.encodeRecord(record));
300
+ }
301
+ });
302
+ return writer.toByteArray();
303
+ }
304
+
305
+ static encodeRecord(record: DnsRecord<any>): Uint8Array {
306
+ const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
307
+
308
+ const writer = new DataWriter(Endian.Big);
309
+ writer.writeByteArray(this.encodeQName(name));
310
+ writer.writeUInt16(recordType);
311
+ writer.writeUInt16(recordClass | (flushCache ? 0x8000 : 0));
312
+ writer.writeUInt32(ttl);
313
+ const encodedValue = this.encodeRecordValue(value, recordType);
314
+ writer.writeUInt16(encodedValue.length);
315
+ writer.writeByteArray(encodedValue);
316
+ return writer.toByteArray();
317
+ }
318
+
319
+ private static encodeRecordValue(value: any, recordType: DnsRecordType): Uint8Array {
320
+ switch (recordType) {
321
+ case DnsRecordType.PTR:
322
+ return this.encodeQName(value as string);
323
+ case DnsRecordType.SRV:
324
+ return this.encodeSrvRecord(value as SrvRecordValue);
325
+ case DnsRecordType.TXT:
326
+ return this.encodeTxtRecord(value as string[]);
327
+ case DnsRecordType.AAAA:
328
+ return this.encodeAaaaRecord(value as string);
329
+ case DnsRecordType.A:
330
+ return this.encodeARecord(value as string);
331
+ default:
332
+ if (value instanceof Uint8Array) return value;
333
+ throw new UnexpectedDataError(`Unsupported record type ${recordType}`);
334
+ }
335
+ }
336
+
337
+ private static encodeARecord(ip: string) {
338
+ if (!isIPv4(ip)) throw new UnexpectedDataError(`Invalid A Record value: ${ip}`);
339
+ const writer = new DataWriter(Endian.Big);
340
+ ip.split(".").forEach(part => {
341
+ writer.writeUInt8(parseInt(part));
342
+ });
343
+ return writer.toByteArray();
344
+ }
345
+
346
+ private static encodeAaaaRecord(ip: string) {
347
+ if (!isIPv6(ip)) throw new UnexpectedDataError(`Invalid AAAA Record value: ${ip}`);
348
+ const writer = new DataWriter(Endian.Big);
349
+ const parts = ip.split(":");
350
+ parts.forEach(part => {
351
+ if (part === "") {
352
+ const compressedParts = 8 - parts.length;
353
+ for (let i = 0; i < compressedParts; i++) {
354
+ writer.writeUInt16(0);
355
+ }
356
+ }
357
+ writer.writeUInt16(parseInt(part, 16));
358
+ });
359
+ return writer.toByteArray();
360
+ }
361
+
362
+ private static encodeTxtRecord(entries: string[]) {
363
+ const writer = new DataWriter(Endian.Big);
364
+ entries.forEach(entry => {
365
+ const entryData = Bytes.fromString(entry);
366
+ writer.writeUInt8(entryData.length);
367
+ writer.writeByteArray(entryData);
368
+ });
369
+ return writer.toByteArray();
370
+ }
371
+
372
+ private static encodeSrvRecord({ priority, weight, port, target }: SrvRecordValue) {
373
+ const writer = new DataWriter(Endian.Big);
374
+ writer.writeUInt16(priority);
375
+ writer.writeUInt16(weight);
376
+ writer.writeUInt16(port);
377
+ writer.writeByteArray(this.encodeQName(target));
378
+ return writer.toByteArray();
379
+ }
380
+
381
+ private static encodeQName(qname: string) {
382
+ const writer = new DataWriter(Endian.Big);
383
+ if (qname.length > 0) {
384
+ qname.split(".").forEach(label => {
385
+ const labelData = Bytes.fromString(label);
386
+ writer.writeUInt8(labelData.length);
387
+ writer.writeByteArray(labelData);
388
+ });
389
+ }
390
+ writer.writeUInt8(0);
391
+ return writer.toByteArray();
392
+ }
393
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export * from "./Base64Codec.js";
8
+ export * from "./DerCodec.js";
9
+ export * from "./DerTypes.js";
10
+ export * from "./DnsCodec.js";
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import * as mod from "@noble/curves/abstract/modular";
8
+ import * as utils from "@noble/curves/abstract/utils";
9
+ import { p256 } from "@noble/curves/p256";
10
+ import { MatterError, NoProviderError } from "../MatterError.js";
11
+ import { Endian } from "../util/Bytes.js";
12
+ import { DataReader } from "../util/DataReader.js";
13
+ import { PrivateKey } from "./Key.js";
14
+
15
+ export const ec = {
16
+ p256,
17
+ ...utils,
18
+ ...mod,
19
+ };
20
+
21
+ export const CRYPTO_RANDOM_LENGTH = 32;
22
+ export const CRYPTO_ENCRYPT_ALGORITHM = "aes-128-ccm";
23
+ export const CRYPTO_HASH_ALGORITHM = "sha256";
24
+ export const CRYPTO_EC_CURVE = "prime256v1";
25
+ export const CRYPTO_EC_KEY_BYTES = 32;
26
+ export const CRYPTO_AUTH_TAG_LENGTH = 16;
27
+ export const CRYPTO_SYMMETRIC_KEY_LENGTH = 16;
28
+ export type CryptoDsaEncoding = "ieee-p1363" | "der";
29
+
30
+ export class CryptoVerifyError extends MatterError {}
31
+
32
+ export abstract class Crypto {
33
+ static get: () => Crypto = () => {
34
+ throw new NoProviderError("No provider configured");
35
+ };
36
+
37
+ abstract encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
38
+ static readonly encrypt = (key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array =>
39
+ Crypto.get().encrypt(key, data, nonce, aad);
40
+
41
+ abstract decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
42
+ static readonly decrypt = (key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array =>
43
+ Crypto.get().decrypt(key, data, nonce, aad);
44
+
45
+ abstract getRandomData(length: number): Uint8Array;
46
+ static readonly getRandomData = (length: number): Uint8Array => Crypto.get().getRandomData(length);
47
+
48
+ static readonly getRandom = (): Uint8Array => Crypto.get().getRandomData(CRYPTO_RANDOM_LENGTH);
49
+
50
+ static readonly getRandomUInt16 = (): number =>
51
+ new DataReader(Crypto.get().getRandomData(2), Endian.Little).readUInt16();
52
+
53
+ static readonly getRandomUInt32 = (): number =>
54
+ new DataReader(Crypto.get().getRandomData(4), Endian.Little).readUInt32();
55
+
56
+ static readonly getRandomBigUInt64 = (): bigint =>
57
+ new DataReader(Crypto.get().getRandomData(8), Endian.Little).readUInt64();
58
+
59
+ static readonly getRandomBigInt = (size: number, maxValue?: bigint): bigint => {
60
+ const { bytesToNumberBE } = ec;
61
+ if (maxValue === undefined) {
62
+ return bytesToNumberBE(Crypto.getRandomData(size));
63
+ }
64
+ while (true) {
65
+ const random = bytesToNumberBE(Crypto.getRandomData(size));
66
+ if (random < maxValue) return random;
67
+ }
68
+ };
69
+
70
+ abstract ecdhGeneratePublicKey(): { publicKey: Uint8Array; ecdh: any };
71
+ static readonly ecdhGeneratePublicKey = (): { publicKey: Uint8Array; ecdh: any } =>
72
+ Crypto.get().ecdhGeneratePublicKey();
73
+
74
+ abstract ecdhGeneratePublicKeyAndSecret(peerPublicKey: Uint8Array): {
75
+ publicKey: Uint8Array;
76
+ sharedSecret: Uint8Array;
77
+ };
78
+ static readonly ecdhGeneratePublicKeyAndSecret = (
79
+ peerPublicKey: Uint8Array,
80
+ ): { publicKey: Uint8Array; sharedSecret: Uint8Array } =>
81
+ Crypto.get().ecdhGeneratePublicKeyAndSecret(peerPublicKey);
82
+
83
+ abstract ecdhGenerateSecret(peerPublicKey: Uint8Array, ecdh: any): Uint8Array;
84
+ static readonly ecdhGenerateSecret = (peerPublicKey: Uint8Array, ecdh: any): Uint8Array =>
85
+ Crypto.get().ecdhGenerateSecret(peerPublicKey, ecdh);
86
+
87
+ abstract hash(data: Uint8Array | Uint8Array[]): Uint8Array;
88
+ static readonly hash = (data: Uint8Array | Uint8Array[]): Uint8Array => Crypto.get().hash(data);
89
+
90
+ abstract pbkdf2(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): Promise<Uint8Array>;
91
+ static readonly pbkdf2 = (
92
+ secret: Uint8Array,
93
+ salt: Uint8Array,
94
+ iteration: number,
95
+ keyLength: number,
96
+ ): Promise<Uint8Array> => Crypto.get().pbkdf2(secret, salt, iteration, keyLength);
97
+
98
+ abstract hkdf(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): Promise<Uint8Array>;
99
+ static readonly hkdf = (
100
+ secret: Uint8Array,
101
+ salt: Uint8Array,
102
+ info: Uint8Array,
103
+ length?: number,
104
+ ): Promise<Uint8Array> => Crypto.get().hkdf(secret, salt, info, length);
105
+
106
+ abstract hmac(key: Uint8Array, data: Uint8Array): Uint8Array;
107
+ static readonly hmac = (key: Uint8Array, data: Uint8Array): Uint8Array => Crypto.get().hmac(key, data);
108
+
109
+ abstract sign(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): Uint8Array;
110
+ static readonly sign = (
111
+ privateKey: JsonWebKey,
112
+ data: Uint8Array | Uint8Array[],
113
+ dsaEncoding?: CryptoDsaEncoding,
114
+ ): Uint8Array => Crypto.get().sign(privateKey, data, dsaEncoding);
115
+
116
+ abstract verify(
117
+ publicKey: JsonWebKey,
118
+ data: Uint8Array,
119
+ signature: Uint8Array,
120
+ dsaEncoding?: CryptoDsaEncoding,
121
+ ): void;
122
+ static readonly verify = (
123
+ publicKey: JsonWebKey,
124
+ data: Uint8Array,
125
+ signature: Uint8Array,
126
+ dsaEncoding?: CryptoDsaEncoding,
127
+ ): void => Crypto.get().verify(publicKey, data, signature, dsaEncoding);
128
+
129
+ abstract createKeyPair(): PrivateKey;
130
+ static readonly createKeyPair = (): PrivateKey => Crypto.get().createKeyPair();
131
+ }
132
+
133
+ // Hook for testing frameworks
134
+ if (typeof MatterHooks !== "undefined") {
135
+ MatterHooks.cryptoSetup?.(Crypto);
136
+ }