mindoodb 0.0.2 → 0.0.4

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 (305) hide show
  1. package/README-server.md +1001 -0
  2. package/README.md +89 -28
  3. package/dist/__mocks__/expo-standard-web-crypto.d.ts +10 -0
  4. package/dist/__mocks__/expo-standard-web-crypto.d.ts.map +1 -0
  5. package/dist/__mocks__/expo-standard-web-crypto.js +22 -0
  6. package/dist/__mocks__/expo-standard-web-crypto.js.map +1 -0
  7. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts +8 -0
  8. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts.map +1 -0
  9. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js +16 -0
  10. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js.map +1 -0
  11. package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts +1 -1
  12. package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts.map +1 -1
  13. package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js +2 -2
  14. package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js.map +1 -1
  15. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +30 -1
  16. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
  17. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +152 -5
  18. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
  19. package/dist/appendonlystores/network/HttpTransport.d.ts +17 -2
  20. package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
  21. package/dist/appendonlystores/network/HttpTransport.js +129 -0
  22. package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
  23. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +22 -2
  24. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
  25. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +110 -0
  26. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
  27. package/dist/appendonlystores/network/index.d.ts +1 -1
  28. package/dist/appendonlystores/network/index.d.ts.map +1 -1
  29. package/dist/appendonlystores/network/index.js.map +1 -1
  30. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts +65 -0
  31. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts.map +1 -0
  32. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js +741 -0
  33. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js.map +1 -0
  34. package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts +25 -0
  35. package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts.map +1 -0
  36. package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js +41 -0
  37. package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js.map +1 -0
  38. package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts +21 -0
  39. package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts.map +1 -0
  40. package/dist/browser/cache/IndexedDBLocalCacheStore.js +106 -0
  41. package/dist/browser/cache/IndexedDBLocalCacheStore.js.map +1 -0
  42. package/dist/browser/index.d.ts +8 -0
  43. package/dist/browser/index.d.ts.map +1 -1
  44. package/dist/browser/index.js +21 -1
  45. package/dist/browser/index.js.map +1 -1
  46. package/dist/core/BaseMindooDB.d.ts +115 -13
  47. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  48. package/dist/core/BaseMindooDB.js +1232 -269
  49. package/dist/core/BaseMindooDB.js.map +1 -1
  50. package/dist/core/BaseMindooTenant.d.ts +69 -6
  51. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  52. package/dist/core/BaseMindooTenant.js +302 -109
  53. package/dist/core/BaseMindooTenant.js.map +1 -1
  54. package/dist/core/BaseMindooTenantDirectory.d.ts +13 -10
  55. package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
  56. package/dist/core/BaseMindooTenantDirectory.js +144 -27
  57. package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
  58. package/dist/core/BaseMindooTenantFactory.d.ts +27 -29
  59. package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
  60. package/dist/core/BaseMindooTenantFactory.js +185 -112
  61. package/dist/core/BaseMindooTenantFactory.js.map +1 -1
  62. package/dist/core/MindooDBServerAdmin.d.ts +238 -0
  63. package/dist/core/MindooDBServerAdmin.d.ts.map +1 -0
  64. package/dist/core/MindooDBServerAdmin.js +345 -0
  65. package/dist/core/MindooDBServerAdmin.js.map +1 -0
  66. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +68 -0
  67. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
  68. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js +659 -0
  69. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
  70. package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts +45 -3
  71. package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts.map +1 -1
  72. package/dist/core/appendonlystores/InMemoryContentAddressedStore.js +184 -23
  73. package/dist/core/appendonlystores/InMemoryContentAddressedStore.js.map +1 -1
  74. package/dist/core/appendonlystores/MaterializationPlanner.d.ts +49 -0
  75. package/dist/core/appendonlystores/MaterializationPlanner.d.ts.map +1 -0
  76. package/dist/core/appendonlystores/MaterializationPlanner.js +325 -0
  77. package/dist/core/appendonlystores/MaterializationPlanner.js.map +1 -0
  78. package/dist/core/appendonlystores/bloom.d.ts +85 -0
  79. package/dist/core/appendonlystores/bloom.d.ts.map +1 -0
  80. package/dist/core/appendonlystores/bloom.js +228 -0
  81. package/dist/core/appendonlystores/bloom.js.map +1 -0
  82. package/dist/core/appendonlystores/network/NetworkTransport.d.ts +37 -2
  83. package/dist/core/appendonlystores/network/NetworkTransport.d.ts.map +1 -1
  84. package/dist/core/appendonlystores/network/types.d.ts +12 -0
  85. package/dist/core/appendonlystores/network/types.d.ts.map +1 -1
  86. package/dist/core/appendonlystores/network/types.js.map +1 -1
  87. package/dist/core/appendonlystores/types.d.ts +206 -0
  88. package/dist/core/appendonlystores/types.d.ts.map +1 -1
  89. package/dist/core/automerge-adapter.d.ts +15 -0
  90. package/dist/core/automerge-adapter.d.ts.map +1 -0
  91. package/dist/core/automerge-adapter.js +73 -0
  92. package/dist/core/automerge-adapter.js.map +1 -0
  93. package/dist/core/cache/CacheManager.d.ts +75 -0
  94. package/dist/core/cache/CacheManager.d.ts.map +1 -0
  95. package/dist/core/cache/CacheManager.js +101 -0
  96. package/dist/core/cache/CacheManager.js.map +1 -0
  97. package/dist/core/cache/EncryptedLocalCacheStore.d.ts +41 -0
  98. package/dist/core/cache/EncryptedLocalCacheStore.d.ts.map +1 -0
  99. package/dist/core/cache/EncryptedLocalCacheStore.js +120 -0
  100. package/dist/core/cache/EncryptedLocalCacheStore.js.map +1 -0
  101. package/dist/core/cache/LocalCacheStore.d.ts +50 -0
  102. package/dist/core/cache/LocalCacheStore.d.ts.map +1 -0
  103. package/dist/core/cache/LocalCacheStore.js +39 -0
  104. package/dist/core/cache/LocalCacheStore.js.map +1 -0
  105. package/dist/core/crypto/pbkdf2Iterations.d.ts +12 -0
  106. package/dist/core/crypto/pbkdf2Iterations.d.ts.map +1 -0
  107. package/dist/core/crypto/pbkdf2Iterations.js +55 -0
  108. package/dist/core/crypto/pbkdf2Iterations.js.map +1 -0
  109. package/dist/core/crypto/privateKeyEncryption.d.ts +5 -0
  110. package/dist/core/crypto/privateKeyEncryption.d.ts.map +1 -0
  111. package/dist/core/crypto/privateKeyEncryption.js +87 -0
  112. package/dist/core/crypto/privateKeyEncryption.js.map +1 -0
  113. package/dist/core/index.d.ts +18 -6
  114. package/dist/core/index.d.ts.map +1 -1
  115. package/dist/core/index.js +42 -1
  116. package/dist/core/index.js.map +1 -1
  117. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts +4 -1
  118. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -1
  119. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +39 -11
  120. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -1
  121. package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts +1 -0
  122. package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts.map +1 -1
  123. package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js +3 -0
  124. package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js.map +1 -1
  125. package/dist/core/indexing/virtualviews/VirtualView.d.ts +43 -0
  126. package/dist/core/indexing/virtualviews/VirtualView.d.ts.map +1 -1
  127. package/dist/core/indexing/virtualviews/VirtualView.js +173 -0
  128. package/dist/core/indexing/virtualviews/VirtualView.js.map +1 -1
  129. package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts +7 -0
  130. package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts.map +1 -1
  131. package/dist/core/indexing/virtualviews/VirtualViewEntryData.js +28 -0
  132. package/dist/core/indexing/virtualviews/VirtualViewEntryData.js.map +1 -1
  133. package/dist/core/keys/KeyBag.d.ts +56 -12
  134. package/dist/core/keys/KeyBag.d.ts.map +1 -1
  135. package/dist/core/keys/KeyBag.js +156 -70
  136. package/dist/core/keys/KeyBag.js.map +1 -1
  137. package/dist/core/keys/KeyContext.d.ts +4 -0
  138. package/dist/core/keys/KeyContext.d.ts.map +1 -0
  139. package/dist/core/keys/KeyContext.js +17 -0
  140. package/dist/core/keys/KeyContext.js.map +1 -0
  141. package/dist/core/types.d.ts +512 -60
  142. package/dist/core/types.d.ts.map +1 -1
  143. package/dist/core/types.js +9 -1
  144. package/dist/core/types.js.map +1 -1
  145. package/dist/core/uri/MindooURI.d.ts +58 -0
  146. package/dist/core/uri/MindooURI.d.ts.map +1 -0
  147. package/dist/core/uri/MindooURI.js +169 -0
  148. package/dist/core/uri/MindooURI.js.map +1 -0
  149. package/dist/core/userid/index.d.ts +0 -10
  150. package/dist/core/userid/index.d.ts.map +1 -1
  151. package/dist/core/utils/idGeneration.d.ts.map +1 -1
  152. package/dist/core/utils/idGeneration.js +37 -3
  153. package/dist/core/utils/idGeneration.js.map +1 -1
  154. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +544 -0
  155. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
  156. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js +1358 -0
  157. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
  158. package/dist/node/attachments/writeAttachmentToFile.d.ts +15 -0
  159. package/dist/node/attachments/writeAttachmentToFile.d.ts.map +1 -0
  160. package/dist/node/attachments/writeAttachmentToFile.js +73 -0
  161. package/dist/node/attachments/writeAttachmentToFile.js.map +1 -0
  162. package/dist/node/cache/FileSystemLocalCacheStore.d.ts +17 -0
  163. package/dist/node/cache/FileSystemLocalCacheStore.d.ts.map +1 -0
  164. package/dist/node/cache/FileSystemLocalCacheStore.js +128 -0
  165. package/dist/node/cache/FileSystemLocalCacheStore.js.map +1 -0
  166. package/dist/node/cli/change-identity-password.d.ts +7 -0
  167. package/dist/node/cli/change-identity-password.d.ts.map +1 -0
  168. package/dist/node/cli/change-identity-password.js +67 -0
  169. package/dist/node/cli/change-identity-password.js.map +1 -0
  170. package/dist/node/cli/cli-utils.d.ts +16 -0
  171. package/dist/node/cli/cli-utils.d.ts.map +1 -0
  172. package/dist/node/cli/cli-utils.js +113 -0
  173. package/dist/node/cli/cli-utils.js.map +1 -0
  174. package/dist/node/cli/identity-export-public.d.ts +4 -0
  175. package/dist/node/cli/identity-export-public.d.ts.map +1 -0
  176. package/dist/node/cli/identity-export-public.js +55 -0
  177. package/dist/node/cli/identity-export-public.js.map +1 -0
  178. package/dist/node/cli/identity-info.d.ts +4 -0
  179. package/dist/node/cli/identity-info.d.ts.map +1 -0
  180. package/dist/node/cli/identity-info.js +57 -0
  181. package/dist/node/cli/identity-info.js.map +1 -0
  182. package/dist/node/index.d.ts +2 -0
  183. package/dist/node/index.d.ts.map +1 -1
  184. package/dist/node/index.js +8 -1
  185. package/dist/node/index.js.map +1 -1
  186. package/dist/node/server/CapabilityMatcher.d.ts +45 -0
  187. package/dist/node/server/CapabilityMatcher.d.ts.map +1 -0
  188. package/dist/node/server/CapabilityMatcher.js +117 -0
  189. package/dist/node/server/CapabilityMatcher.js.map +1 -0
  190. package/dist/node/server/MindooDBServer.d.ts +87 -0
  191. package/dist/node/server/MindooDBServer.d.ts.map +1 -0
  192. package/dist/node/server/MindooDBServer.js +1040 -0
  193. package/dist/node/server/MindooDBServer.js.map +1 -0
  194. package/dist/node/server/ServerSync.d.ts +41 -0
  195. package/dist/node/server/ServerSync.d.ts.map +1 -0
  196. package/dist/node/server/ServerSync.js +187 -0
  197. package/dist/node/server/ServerSync.js.map +1 -0
  198. package/dist/node/server/StoreFactory.d.ts +45 -0
  199. package/dist/node/server/StoreFactory.d.ts.map +1 -0
  200. package/dist/node/server/StoreFactory.js +89 -0
  201. package/dist/node/server/StoreFactory.js.map +1 -0
  202. package/dist/node/server/SystemAdminAuth.d.ts +65 -0
  203. package/dist/node/server/SystemAdminAuth.d.ts.map +1 -0
  204. package/dist/node/server/SystemAdminAuth.js +200 -0
  205. package/dist/node/server/SystemAdminAuth.js.map +1 -0
  206. package/dist/node/server/SystemIpAllowlist.d.ts +21 -0
  207. package/dist/node/server/SystemIpAllowlist.d.ts.map +1 -0
  208. package/dist/node/server/SystemIpAllowlist.js +210 -0
  209. package/dist/node/server/SystemIpAllowlist.js.map +1 -0
  210. package/dist/node/server/TenantManager.d.ts +85 -0
  211. package/dist/node/server/TenantManager.d.ts.map +1 -0
  212. package/dist/node/server/TenantManager.js +493 -0
  213. package/dist/node/server/TenantManager.js.map +1 -0
  214. package/dist/node/server/add-to-network.d.ts +20 -0
  215. package/dist/node/server/add-to-network.d.ts.map +1 -0
  216. package/dist/node/server/add-to-network.js +275 -0
  217. package/dist/node/server/add-to-network.js.map +1 -0
  218. package/dist/node/server/config.d.ts +51 -0
  219. package/dist/node/server/config.d.ts.map +1 -0
  220. package/dist/node/server/config.js +218 -0
  221. package/dist/node/server/config.js.map +1 -0
  222. package/dist/node/server/resolveServerPassword.d.ts +7 -0
  223. package/dist/node/server/resolveServerPassword.d.ts.map +1 -0
  224. package/dist/node/server/resolveServerPassword.js +25 -0
  225. package/dist/node/server/resolveServerPassword.js.map +1 -0
  226. package/dist/node/server/server.d.ts +22 -0
  227. package/dist/node/server/server.d.ts.map +1 -0
  228. package/dist/node/server/server.js +225 -0
  229. package/dist/node/server/server.js.map +1 -0
  230. package/dist/node/server/serverinit.d.ts +21 -0
  231. package/dist/node/server/serverinit.d.ts.map +1 -0
  232. package/dist/node/server/serverinit.js +317 -0
  233. package/dist/node/server/serverinit.js.map +1 -0
  234. package/dist/node/server/types.d.ts +162 -0
  235. package/dist/node/server/types.d.ts.map +1 -0
  236. package/dist/node/server/types.js +24 -0
  237. package/dist/node/server/types.js.map +1 -0
  238. package/dist/node/server/validation.d.ts +47 -0
  239. package/dist/node/server/validation.d.ts.map +1 -0
  240. package/dist/node/server/validation.js +114 -0
  241. package/dist/node/server/validation.js.map +1 -0
  242. package/dist/reactnative/cache/MMKVLocalCacheStore.d.ts +48 -0
  243. package/dist/reactnative/cache/MMKVLocalCacheStore.d.ts.map +1 -0
  244. package/dist/reactnative/cache/MMKVLocalCacheStore.js +113 -0
  245. package/dist/reactnative/cache/MMKVLocalCacheStore.js.map +1 -0
  246. package/dist/reactnative/crypto/AESAdapter.d.ts +18 -0
  247. package/dist/reactnative/crypto/AESAdapter.d.ts.map +1 -0
  248. package/dist/reactnative/crypto/AESAdapter.js +112 -0
  249. package/dist/reactnative/crypto/AESAdapter.js.map +1 -0
  250. package/dist/reactnative/crypto/Ed25519Adapter.d.ts +34 -0
  251. package/dist/reactnative/crypto/Ed25519Adapter.d.ts.map +1 -0
  252. package/dist/reactnative/crypto/Ed25519Adapter.js +386 -0
  253. package/dist/reactnative/crypto/Ed25519Adapter.js.map +1 -0
  254. package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts +23 -0
  255. package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts.map +1 -0
  256. package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js +51 -0
  257. package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js.map +1 -0
  258. package/dist/reactnative/crypto/HMACAdapter.d.ts +13 -0
  259. package/dist/reactnative/crypto/HMACAdapter.d.ts.map +1 -0
  260. package/dist/reactnative/crypto/HMACAdapter.js +50 -0
  261. package/dist/reactnative/crypto/HMACAdapter.js.map +1 -0
  262. package/dist/reactnative/crypto/KeyFormatConverter.d.ts +21 -0
  263. package/dist/reactnative/crypto/KeyFormatConverter.d.ts.map +1 -0
  264. package/dist/reactnative/crypto/KeyFormatConverter.js +72 -0
  265. package/dist/reactnative/crypto/KeyFormatConverter.js.map +1 -0
  266. package/dist/reactnative/crypto/PBKDF2Adapter.d.ts +19 -0
  267. package/dist/reactnative/crypto/PBKDF2Adapter.d.ts.map +1 -0
  268. package/dist/reactnative/crypto/PBKDF2Adapter.js +67 -0
  269. package/dist/reactnative/crypto/PBKDF2Adapter.js.map +1 -0
  270. package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts +37 -0
  271. package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts.map +1 -0
  272. package/dist/reactnative/crypto/QuickCryptoAdapter.js +72 -0
  273. package/dist/reactnative/crypto/QuickCryptoAdapter.js.map +1 -0
  274. package/dist/reactnative/crypto/RSAAdapter.d.ts +38 -0
  275. package/dist/reactnative/crypto/RSAAdapter.d.ts.map +1 -0
  276. package/dist/reactnative/crypto/RSAAdapter.js +184 -0
  277. package/dist/reactnative/crypto/RSAAdapter.js.map +1 -0
  278. package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts +33 -0
  279. package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts.map +1 -0
  280. package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js +61 -0
  281. package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js.map +1 -0
  282. package/dist/reactnative/crypto/SHA256Adapter.d.ts +9 -0
  283. package/dist/reactnative/crypto/SHA256Adapter.d.ts.map +1 -0
  284. package/dist/reactnative/crypto/SHA256Adapter.js +29 -0
  285. package/dist/reactnative/crypto/SHA256Adapter.js.map +1 -0
  286. package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts +63 -0
  287. package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts.map +1 -0
  288. package/dist/reactnative/crypto/SubtleCryptoPolyfill.js +350 -0
  289. package/dist/reactnative/crypto/SubtleCryptoPolyfill.js.map +1 -0
  290. package/dist/reactnative/index.d.ts +9 -0
  291. package/dist/reactnative/index.d.ts.map +1 -0
  292. package/dist/reactnative/index.js +41 -0
  293. package/dist/reactnative/index.js.map +1 -0
  294. package/package.json +63 -7
  295. package/patches/PATCHES.md +111 -0
  296. package/patches/react-native+0.76.9.patch +34 -0
  297. package/patches/react-native-quick-crypto+1.0.7.patch +42 -0
  298. package/scripts/cli.js +21 -0
  299. package/scripts/setup-react-native.js +228 -0
  300. package/templates/reactnative/App.js +252 -0
  301. package/templates/reactnative/app.json +29 -0
  302. package/templates/reactnative/babel.config.js +6 -0
  303. package/templates/reactnative/index.js +26 -0
  304. package/templates/reactnative/metro.config.snippet.js +39 -0
  305. package/templates/reactnative/mindoodb-polyfills.js +116 -0
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * AES-GCM Adapter
4
+ * Implements AES-GCM encryption/decryption using node-forge
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.aesGcmEncrypt = aesGcmEncrypt;
11
+ exports.aesGcmDecrypt = aesGcmDecrypt;
12
+ const node_forge_1 = __importDefault(require("node-forge"));
13
+ /**
14
+ * Encrypt data with AES-GCM
15
+ */
16
+ async function aesGcmEncrypt(params, key, data) {
17
+ // Extract raw key material
18
+ const rawKey = key._rawKey || key;
19
+ const keyBytes = rawKey instanceof ArrayBuffer ? new Uint8Array(rawKey) : new Uint8Array(rawKey);
20
+ const dataBytes = data instanceof Uint8Array ? data : new Uint8Array(data);
21
+ // Ensure IV is a proper ArrayBuffer
22
+ let ivBytes;
23
+ if (params.iv instanceof Uint8Array) {
24
+ ivBytes = params.iv;
25
+ }
26
+ else if (params.iv instanceof ArrayBuffer) {
27
+ ivBytes = new Uint8Array(params.iv);
28
+ }
29
+ else {
30
+ // ArrayBufferView - copy to ensure we have ArrayBuffer
31
+ const view = params.iv;
32
+ const copy = new Uint8Array(view.byteLength);
33
+ copy.set(new Uint8Array(view.buffer, view.byteOffset, view.byteLength));
34
+ ivBytes = copy;
35
+ }
36
+ // Create cipher - node-forge expects key as ByteBuffer
37
+ const cipher = node_forge_1.default.cipher.createCipher("AES-GCM", node_forge_1.default.util.createBuffer(keyBytes.buffer));
38
+ cipher.start({
39
+ iv: node_forge_1.default.util.createBuffer(ivBytes.buffer),
40
+ tagLength: (params.tagLength || 128) / 8, // Convert bits to bytes
41
+ });
42
+ cipher.update(node_forge_1.default.util.createBuffer(dataBytes.buffer));
43
+ cipher.finish();
44
+ // Get ciphertext and tag
45
+ const encrypted = cipher.output;
46
+ const tag = cipher.mode.tag;
47
+ // Combine ciphertext and tag (Web Crypto API appends tag automatically)
48
+ // node-forge ByteBuffer has a toBytes() method that returns a string
49
+ const encryptedHex = encrypted.toHex();
50
+ const encryptedBytes = new Uint8Array(encryptedHex.length / 2);
51
+ for (let i = 0; i < encryptedBytes.length; i++) {
52
+ encryptedBytes[i] = parseInt(encryptedHex.substr(i * 2, 2), 16);
53
+ }
54
+ const tagHex = tag.toHex();
55
+ const tagBytes = new Uint8Array(tagHex.length / 2);
56
+ for (let i = 0; i < tagBytes.length; i++) {
57
+ tagBytes[i] = parseInt(tagHex.substr(i * 2, 2), 16);
58
+ }
59
+ // Combine: ciphertext + tag
60
+ const result = new Uint8Array(encryptedBytes.length + tagBytes.length);
61
+ result.set(encryptedBytes, 0);
62
+ result.set(tagBytes, encryptedBytes.length);
63
+ return result.buffer;
64
+ }
65
+ /**
66
+ * Decrypt data with AES-GCM
67
+ */
68
+ async function aesGcmDecrypt(params, key, data) {
69
+ // Extract raw key material
70
+ const rawKey = key._rawKey || key;
71
+ const keyBytes = rawKey instanceof ArrayBuffer ? new Uint8Array(rawKey) : new Uint8Array(rawKey);
72
+ const dataBytes = data instanceof Uint8Array ? data : new Uint8Array(data);
73
+ let ivBytes;
74
+ if (params.iv instanceof Uint8Array) {
75
+ ivBytes = params.iv;
76
+ }
77
+ else if (params.iv instanceof ArrayBuffer) {
78
+ ivBytes = new Uint8Array(params.iv);
79
+ }
80
+ else {
81
+ // ArrayBufferView
82
+ const view = params.iv;
83
+ ivBytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
84
+ }
85
+ // Extract tag (last 16 bytes for 128-bit tag)
86
+ const tagLength = (params.tagLength || 128) / 8; // Convert bits to bytes
87
+ if (dataBytes.length < tagLength) {
88
+ throw new Error("Encrypted data too short (missing tag)");
89
+ }
90
+ const ciphertext = dataBytes.slice(0, dataBytes.length - tagLength);
91
+ const tag = dataBytes.slice(dataBytes.length - tagLength);
92
+ // Create decipher - node-forge expects key as ByteBuffer
93
+ const decipher = node_forge_1.default.cipher.createDecipher("AES-GCM", node_forge_1.default.util.createBuffer(keyBytes.buffer));
94
+ decipher.start({
95
+ iv: node_forge_1.default.util.createBuffer(ivBytes.buffer),
96
+ tagLength: tagLength * 8, // Convert bytes to bits for node-forge
97
+ tag: node_forge_1.default.util.createBuffer(tag.buffer),
98
+ });
99
+ decipher.update(node_forge_1.default.util.createBuffer(ciphertext.buffer));
100
+ const success = decipher.finish();
101
+ if (!success) {
102
+ throw new Error("AES-GCM decryption failed: authentication tag mismatch");
103
+ }
104
+ const decrypted = decipher.output;
105
+ const decryptedHex = decrypted.toHex();
106
+ const decryptedBytes = new Uint8Array(decryptedHex.length / 2);
107
+ for (let i = 0; i < decryptedBytes.length; i++) {
108
+ decryptedBytes[i] = parseInt(decryptedHex.substr(i * 2, 2), 16);
109
+ }
110
+ return decryptedBytes.buffer;
111
+ }
112
+ //# sourceMappingURL=AESAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AESAdapter.js","sourceRoot":"","sources":["../../../src/reactnative/crypto/AESAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Ed25519 Adapter
3
+ * Implements Ed25519 key generation, signing, and verification using TweetNaCl
4
+ *
5
+ * TweetNaCl is CommonJS compatible and works directly with Jest without mocking.
6
+ * It provides real Ed25519 elliptic curve operations, audited by Cure53.
7
+ */
8
+ /**
9
+ * Generate Ed25519 key pair
10
+ */
11
+ export declare function ed25519GenerateKey(): Promise<CryptoKeyPair>;
12
+ /**
13
+ * Import Ed25519 key from SPKI (public) or PKCS8 (private) format
14
+ */
15
+ export declare function ed25519ImportKey(format: "spki" | "pkcs8", keyData: ArrayBuffer | ArrayBufferLike, algorithm: {
16
+ name: "Ed25519";
17
+ }, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
18
+ /**
19
+ * Export Ed25519 key to SPKI (public) or PKCS8 (private) format
20
+ */
21
+ export declare function ed25519ExportKey(format: "spki" | "pkcs8", key: CryptoKey): Promise<ArrayBuffer>;
22
+ /**
23
+ * Sign data with Ed25519 private key
24
+ */
25
+ export declare function ed25519Sign(algorithm: {
26
+ name: "Ed25519";
27
+ }, key: CryptoKey, data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
28
+ /**
29
+ * Verify Ed25519 signature
30
+ */
31
+ export declare function ed25519Verify(algorithm: {
32
+ name: "Ed25519";
33
+ }, key: CryptoKey, signature: ArrayBuffer | Uint8Array, data: ArrayBuffer | Uint8Array): Promise<boolean>;
34
+ //# sourceMappingURL=Ed25519Adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ed25519Adapter.d.ts","sourceRoot":"","sources":["../../../src/reactnative/crypto/Ed25519Adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,CAoBjE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,OAAO,EAAE,WAAW,GAAG,eAAe,EACtC,SAAS,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,EAC9B,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,SAAS,CAAC,CA8CpB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,GAAG,EAAE,SAAS,GACb,OAAO,CAAC,WAAW,CAAC,CAgBtB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,EAC9B,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,WAAW,GAAG,UAAU,GAC7B,OAAO,CAAC,WAAW,CAAC,CActB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,EAC9B,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,WAAW,GAAG,UAAU,EACnC,IAAI,EAAE,WAAW,GAAG,UAAU,GAC7B,OAAO,CAAC,OAAO,CAAC,CAUlB"}
@@ -0,0 +1,386 @@
1
+ "use strict";
2
+ /**
3
+ * Ed25519 Adapter
4
+ * Implements Ed25519 key generation, signing, and verification using TweetNaCl
5
+ *
6
+ * TweetNaCl is CommonJS compatible and works directly with Jest without mocking.
7
+ * It provides real Ed25519 elliptic curve operations, audited by Cure53.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ed25519GenerateKey = ed25519GenerateKey;
14
+ exports.ed25519ImportKey = ed25519ImportKey;
15
+ exports.ed25519ExportKey = ed25519ExportKey;
16
+ exports.ed25519Sign = ed25519Sign;
17
+ exports.ed25519Verify = ed25519Verify;
18
+ const tweetnacl_1 = __importDefault(require("tweetnacl"));
19
+ // Ed25519 key sizes
20
+ const ED25519_SEED_SIZE = 32; // The 32-byte seed (what PKCS8 stores)
21
+ const ED25519_PUBLIC_KEY_SIZE = 32; // The 32-byte public key
22
+ const ED25519_SECRET_KEY_SIZE = 64; // TweetNaCl's format: seed + public key
23
+ const ED25519_SIGNATURE_SIZE = 64;
24
+ /**
25
+ * Generate Ed25519 key pair
26
+ */
27
+ async function ed25519GenerateKey() {
28
+ const keyPair = tweetnacl_1.default.sign.keyPair();
29
+ return {
30
+ publicKey: {
31
+ type: "public",
32
+ extractable: true,
33
+ algorithm: { name: "Ed25519" },
34
+ usages: ["verify"],
35
+ _rawPublicKey: keyPair.publicKey,
36
+ },
37
+ privateKey: {
38
+ type: "private",
39
+ extractable: true,
40
+ algorithm: { name: "Ed25519" },
41
+ usages: ["sign"],
42
+ // Store the full 64-byte secret key (TweetNaCl format)
43
+ _rawPrivateKey: keyPair.secretKey,
44
+ },
45
+ };
46
+ }
47
+ /**
48
+ * Import Ed25519 key from SPKI (public) or PKCS8 (private) format
49
+ */
50
+ async function ed25519ImportKey(format, keyData, algorithm, extractable, keyUsages) {
51
+ // Ensure we have an ArrayBuffer (not SharedArrayBuffer)
52
+ // Note: We don't explicitly check for SharedArrayBuffer here because:
53
+ // 1. SharedArrayBuffer may not exist in React Native/Expo Go environments
54
+ // 2. Using (keyData as any) and copying works for both SharedArrayBuffer and ArrayBufferView
55
+ // 3. This approach avoids ReferenceError when SharedArrayBuffer is undefined
56
+ let buffer;
57
+ if (keyData instanceof ArrayBuffer) {
58
+ buffer = keyData;
59
+ }
60
+ else {
61
+ // Copy from SharedArrayBuffer or ArrayBufferView
62
+ const view = new Uint8Array(keyData);
63
+ const copy = new Uint8Array(view.length);
64
+ copy.set(view);
65
+ buffer = copy.buffer;
66
+ }
67
+ const keyBytes = new Uint8Array(buffer);
68
+ if (format === "spki") {
69
+ // SPKI format for public keys
70
+ const publicKey = extractEd25519PublicKeyFromSPKI(keyBytes);
71
+ return {
72
+ type: "public",
73
+ extractable,
74
+ algorithm,
75
+ usages: keyUsages,
76
+ _rawPublicKey: publicKey,
77
+ };
78
+ }
79
+ else {
80
+ // PKCS8 format for private keys
81
+ // Extract the 32-byte seed from PKCS8
82
+ const seed = extractEd25519PrivateKeyFromPKCS8(keyBytes);
83
+ // Derive the full 64-byte secret key from the seed using TweetNaCl
84
+ const keyPair = tweetnacl_1.default.sign.keyPair.fromSeed(seed);
85
+ return {
86
+ type: "private",
87
+ extractable,
88
+ algorithm,
89
+ usages: keyUsages,
90
+ // Store the full 64-byte secret key
91
+ _rawPrivateKey: keyPair.secretKey,
92
+ };
93
+ }
94
+ }
95
+ /**
96
+ * Export Ed25519 key to SPKI (public) or PKCS8 (private) format
97
+ */
98
+ async function ed25519ExportKey(format, key) {
99
+ if (format === "spki") {
100
+ const publicKey = key._rawPublicKey;
101
+ if (!publicKey) {
102
+ throw new Error("Key does not contain public key material");
103
+ }
104
+ return encodeEd25519PublicKeyToSPKI(publicKey);
105
+ }
106
+ else {
107
+ const secretKey = key._rawPrivateKey;
108
+ if (!secretKey) {
109
+ throw new Error("Key does not contain private key material");
110
+ }
111
+ // PKCS8 stores only the 32-byte seed (first half of TweetNaCl's 64-byte secret key)
112
+ const seed = secretKey.slice(0, ED25519_SEED_SIZE);
113
+ return encodeEd25519PrivateKeyToPKCS8(seed);
114
+ }
115
+ }
116
+ /**
117
+ * Sign data with Ed25519 private key
118
+ */
119
+ async function ed25519Sign(algorithm, key, data) {
120
+ const secretKey = key._rawPrivateKey;
121
+ if (!secretKey) {
122
+ throw new Error("Key does not contain private key material");
123
+ }
124
+ const dataBytes = data instanceof Uint8Array ? data : new Uint8Array(data);
125
+ // Use detached signature (just the signature, not message + signature)
126
+ const signature = tweetnacl_1.default.sign.detached(dataBytes, secretKey);
127
+ // Ensure we return an ArrayBuffer (not SharedArrayBuffer)
128
+ const copy = new Uint8Array(signature);
129
+ return copy.buffer;
130
+ }
131
+ /**
132
+ * Verify Ed25519 signature
133
+ */
134
+ async function ed25519Verify(algorithm, key, signature, data) {
135
+ const publicKey = key._rawPublicKey;
136
+ if (!publicKey) {
137
+ throw new Error("Key does not contain public key material");
138
+ }
139
+ const sigBytes = signature instanceof Uint8Array ? signature : new Uint8Array(signature);
140
+ const dataBytes = data instanceof Uint8Array ? data : new Uint8Array(data);
141
+ return tweetnacl_1.default.sign.detached.verify(dataBytes, sigBytes, publicKey);
142
+ }
143
+ /**
144
+ * Extract Ed25519 public key from SPKI format
145
+ * SPKI format: SEQUENCE { AlgorithmIdentifier { OID 1.3.101.112 }, BIT STRING }
146
+ */
147
+ function extractEd25519PublicKeyFromSPKI(spki) {
148
+ let pos = 0;
149
+ // Skip outer SEQUENCE tag (0x30)
150
+ if (spki[pos] !== 0x30) {
151
+ throw new Error("Invalid SPKI format: expected SEQUENCE");
152
+ }
153
+ pos++;
154
+ // Skip length (can be 1-4 bytes)
155
+ const seqLength = readASN1Length(spki, pos);
156
+ pos += seqLength.bytesRead;
157
+ // Skip AlgorithmIdentifier SEQUENCE
158
+ if (spki[pos] !== 0x30) {
159
+ throw new Error("Invalid SPKI format: expected AlgorithmIdentifier SEQUENCE");
160
+ }
161
+ pos++;
162
+ const algIdLength = readASN1Length(spki, pos);
163
+ pos += algIdLength.bytesRead + algIdLength.value;
164
+ // Now we should be at the BIT STRING (0x03)
165
+ if (spki[pos] !== 0x03) {
166
+ throw new Error("Invalid SPKI format: expected BIT STRING");
167
+ }
168
+ pos++;
169
+ // Read BIT STRING length
170
+ const bitStringLength = readASN1Length(spki, pos);
171
+ pos += bitStringLength.bytesRead;
172
+ // Skip the unused bits byte (usually 0x00)
173
+ pos++;
174
+ // Extract the 32-byte public key
175
+ if (bitStringLength.value - 1 !== ED25519_PUBLIC_KEY_SIZE) {
176
+ throw new Error(`Invalid Ed25519 public key size: expected ${ED25519_PUBLIC_KEY_SIZE}, got ${bitStringLength.value - 1}`);
177
+ }
178
+ return spki.slice(pos, pos + ED25519_PUBLIC_KEY_SIZE);
179
+ }
180
+ /**
181
+ * Extract Ed25519 private key (seed) from PKCS8 format
182
+ * PKCS8 format: SEQUENCE { version, AlgorithmIdentifier { OID 1.3.101.112 }, OCTET STRING { OCTET STRING { seed } } }
183
+ *
184
+ * Note: RFC 8410 specifies that Ed25519 private keys in PKCS8 are wrapped in an additional OCTET STRING
185
+ */
186
+ function extractEd25519PrivateKeyFromPKCS8(pkcs8) {
187
+ let pos = 0;
188
+ // Skip outer SEQUENCE tag (0x30)
189
+ if (pkcs8[pos] !== 0x30) {
190
+ throw new Error("Invalid PKCS8 format: expected SEQUENCE");
191
+ }
192
+ pos++;
193
+ // Skip length
194
+ const seqLength = readASN1Length(pkcs8, pos);
195
+ pos += seqLength.bytesRead;
196
+ // Skip version INTEGER (0x02)
197
+ if (pkcs8[pos] !== 0x02) {
198
+ throw new Error("Invalid PKCS8 format: expected version INTEGER");
199
+ }
200
+ pos++;
201
+ const versionLength = readASN1Length(pkcs8, pos);
202
+ pos += versionLength.bytesRead + versionLength.value;
203
+ // Skip AlgorithmIdentifier SEQUENCE
204
+ if (pkcs8[pos] !== 0x30) {
205
+ throw new Error("Invalid PKCS8 format: expected AlgorithmIdentifier SEQUENCE");
206
+ }
207
+ pos++;
208
+ const algIdLength = readASN1Length(pkcs8, pos);
209
+ pos += algIdLength.bytesRead + algIdLength.value;
210
+ // Now we should be at the outer OCTET STRING (0x04)
211
+ if (pkcs8[pos] !== 0x04) {
212
+ throw new Error("Invalid PKCS8 format: expected OCTET STRING");
213
+ }
214
+ pos++;
215
+ // Read outer OCTET STRING length
216
+ const outerOctetLength = readASN1Length(pkcs8, pos);
217
+ pos += outerOctetLength.bytesRead;
218
+ // Check if there's an inner OCTET STRING (RFC 8410 format)
219
+ if (pkcs8[pos] === 0x04) {
220
+ // Inner OCTET STRING contains the actual seed
221
+ pos++;
222
+ const innerOctetLength = readASN1Length(pkcs8, pos);
223
+ pos += innerOctetLength.bytesRead;
224
+ if (innerOctetLength.value !== ED25519_SEED_SIZE) {
225
+ throw new Error(`Invalid Ed25519 private key size: expected ${ED25519_SEED_SIZE}, got ${innerOctetLength.value}`);
226
+ }
227
+ return pkcs8.slice(pos, pos + ED25519_SEED_SIZE);
228
+ }
229
+ else {
230
+ // Direct seed (older format)
231
+ if (outerOctetLength.value !== ED25519_SEED_SIZE) {
232
+ throw new Error(`Invalid Ed25519 private key size: expected ${ED25519_SEED_SIZE}, got ${outerOctetLength.value}`);
233
+ }
234
+ return pkcs8.slice(pos, pos + ED25519_SEED_SIZE);
235
+ }
236
+ }
237
+ /**
238
+ * Read ASN.1 length field
239
+ * Returns { value: number, bytesRead: number }
240
+ */
241
+ function readASN1Length(data, pos) {
242
+ if (pos >= data.length) {
243
+ throw new Error("Invalid ASN.1: unexpected end of data");
244
+ }
245
+ const firstByte = data[pos];
246
+ // Short form (length < 128)
247
+ if ((firstByte & 0x80) === 0) {
248
+ return { value: firstByte, bytesRead: 1 };
249
+ }
250
+ // Long form (length >= 128)
251
+ const lengthBytes = firstByte & 0x7f;
252
+ if (lengthBytes === 0 || lengthBytes > 4) {
253
+ throw new Error("Invalid ASN.1: invalid length encoding");
254
+ }
255
+ if (pos + 1 + lengthBytes > data.length) {
256
+ throw new Error("Invalid ASN.1: unexpected end of data");
257
+ }
258
+ let length = 0;
259
+ for (let i = 0; i < lengthBytes; i++) {
260
+ length = (length << 8) | data[pos + 1 + i];
261
+ }
262
+ return { value: length, bytesRead: 1 + lengthBytes };
263
+ }
264
+ /**
265
+ * Encode Ed25519 public key to SPKI format
266
+ */
267
+ function encodeEd25519PublicKeyToSPKI(publicKey) {
268
+ if (publicKey.length !== ED25519_PUBLIC_KEY_SIZE) {
269
+ throw new Error(`Invalid Ed25519 public key size: expected ${ED25519_PUBLIC_KEY_SIZE}, got ${publicKey.length}`);
270
+ }
271
+ // Ed25519 SPKI structure:
272
+ // SEQUENCE {
273
+ // SEQUENCE {
274
+ // OID 1.3.101.112 (Ed25519) = [0x06, 0x03, 0x2b, 0x65, 0x70]
275
+ // }
276
+ // BIT STRING { 0x00 (unused bits), publicKey (32 bytes) }
277
+ // }
278
+ const oid = new Uint8Array([0x06, 0x03, 0x2b, 0x65, 0x70]); // OID 1.3.101.112
279
+ const algorithmId = encodeASN1Sequence([oid]);
280
+ const bitString = encodeASN1BitString(publicKey);
281
+ const outerSequence = encodeASN1Sequence([algorithmId, bitString]);
282
+ // Ensure we return an ArrayBuffer (not SharedArrayBuffer)
283
+ const copy = new Uint8Array(outerSequence);
284
+ return copy.buffer;
285
+ }
286
+ /**
287
+ * Encode Ed25519 private key (seed) to PKCS8 format
288
+ * Uses RFC 8410 format with wrapped OCTET STRING
289
+ */
290
+ function encodeEd25519PrivateKeyToPKCS8(seed) {
291
+ if (seed.length !== ED25519_SEED_SIZE) {
292
+ throw new Error(`Invalid Ed25519 seed size: expected ${ED25519_SEED_SIZE}, got ${seed.length}`);
293
+ }
294
+ // Ed25519 PKCS8 structure (RFC 8410):
295
+ // SEQUENCE {
296
+ // INTEGER 0 (version)
297
+ // SEQUENCE {
298
+ // OID 1.3.101.112 (Ed25519) = [0x06, 0x03, 0x2b, 0x65, 0x70]
299
+ // }
300
+ // OCTET STRING { OCTET STRING { seed (32 bytes) } }
301
+ // }
302
+ const version = encodeASN1Integer(new Uint8Array([0x00])); // INTEGER 0
303
+ const oid = new Uint8Array([0x06, 0x03, 0x2b, 0x65, 0x70]); // OID 1.3.101.112
304
+ const algorithmId = encodeASN1Sequence([oid]);
305
+ // Inner OCTET STRING contains the seed
306
+ const innerOctetString = encodeASN1OctetString(seed);
307
+ // Outer OCTET STRING wraps the inner one
308
+ const outerOctetString = encodeASN1OctetString(innerOctetString);
309
+ const outerSequence = encodeASN1Sequence([version, algorithmId, outerOctetString]);
310
+ // Ensure we return an ArrayBuffer (not SharedArrayBuffer)
311
+ const copy = new Uint8Array(outerSequence);
312
+ return copy.buffer;
313
+ }
314
+ /**
315
+ * Encode ASN.1 SEQUENCE
316
+ */
317
+ function encodeASN1Sequence(items) {
318
+ let totalLength = 0;
319
+ for (const item of items) {
320
+ totalLength += item.length;
321
+ }
322
+ const lengthBytes = encodeASN1Length(totalLength);
323
+ const result = new Uint8Array(1 + lengthBytes.length + totalLength);
324
+ result[0] = 0x30; // SEQUENCE tag
325
+ result.set(lengthBytes, 1);
326
+ let pos = 1 + lengthBytes.length;
327
+ for (const item of items) {
328
+ result.set(item, pos);
329
+ pos += item.length;
330
+ }
331
+ return result;
332
+ }
333
+ /**
334
+ * Encode ASN.1 BIT STRING
335
+ */
336
+ function encodeASN1BitString(data) {
337
+ // BIT STRING: tag (0x03) + length + unused bits (0x00) + data
338
+ const length = 1 + data.length; // 1 byte for unused bits + data
339
+ const lengthBytes = encodeASN1Length(length);
340
+ const result = new Uint8Array(1 + lengthBytes.length + length);
341
+ result[0] = 0x03; // BIT STRING tag
342
+ result.set(lengthBytes, 1);
343
+ result[1 + lengthBytes.length] = 0x00; // unused bits
344
+ result.set(data, 1 + lengthBytes.length + 1);
345
+ return result;
346
+ }
347
+ /**
348
+ * Encode ASN.1 OCTET STRING
349
+ */
350
+ function encodeASN1OctetString(data) {
351
+ const lengthBytes = encodeASN1Length(data.length);
352
+ const result = new Uint8Array(1 + lengthBytes.length + data.length);
353
+ result[0] = 0x04; // OCTET STRING tag
354
+ result.set(lengthBytes, 1);
355
+ result.set(data, 1 + lengthBytes.length);
356
+ return result;
357
+ }
358
+ /**
359
+ * Encode ASN.1 INTEGER
360
+ */
361
+ function encodeASN1Integer(data) {
362
+ const lengthBytes = encodeASN1Length(data.length);
363
+ const result = new Uint8Array(1 + lengthBytes.length + data.length);
364
+ result[0] = 0x02; // INTEGER tag
365
+ result.set(lengthBytes, 1);
366
+ result.set(data, 1 + lengthBytes.length);
367
+ return result;
368
+ }
369
+ /**
370
+ * Encode ASN.1 length field
371
+ */
372
+ function encodeASN1Length(length) {
373
+ if (length < 128) {
374
+ // Short form
375
+ return new Uint8Array([length]);
376
+ }
377
+ // Long form
378
+ const bytes = [];
379
+ let value = length;
380
+ while (value > 0) {
381
+ bytes.unshift(value & 0xff);
382
+ value >>>= 8;
383
+ }
384
+ return new Uint8Array([0x80 | bytes.length, ...bytes]);
385
+ }
386
+ //# sourceMappingURL=Ed25519Adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ed25519Adapter.js","sourceRoot":"","sources":["../../../src/reactnative/crypto/Ed25519Adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Expo Go Crypto Adapter
3
+ * JavaScript-only implementation of CryptoAdapter for Expo Go
4
+ * Uses pure JS crypto libraries since native modules don't work in Expo Go
5
+ */
6
+ import type { CryptoAdapter } from "../../core/crypto/CryptoAdapter";
7
+ /**
8
+ * Expo Go Crypto Adapter
9
+ * Implements the CryptoAdapter interface using JavaScript-only crypto libraries
10
+ */
11
+ export declare class ExpoGoCryptoAdapter implements CryptoAdapter {
12
+ private subtle;
13
+ constructor();
14
+ /**
15
+ * Get the SubtleCrypto interface
16
+ */
17
+ getSubtle(): SubtleCrypto;
18
+ /**
19
+ * Get random values using expo-standard-web-crypto or fallback
20
+ */
21
+ getRandomValues(array: Uint8Array): Uint8Array;
22
+ }
23
+ //# sourceMappingURL=ExpoGoCryptoAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoGoCryptoAdapter.d.ts","sourceRoot":"","sources":["../../../src/reactnative/crypto/ExpoGoCryptoAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAerE;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,MAAM,CAAuB;;IAMrC;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;CAe/C"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * Expo Go Crypto Adapter
4
+ * JavaScript-only implementation of CryptoAdapter for Expo Go
5
+ * Uses pure JS crypto libraries since native modules don't work in Expo Go
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ExpoGoCryptoAdapter = void 0;
9
+ const SubtleCryptoPolyfill_1 = require("./SubtleCryptoPolyfill");
10
+ // Dynamic import of expo-standard-web-crypto to handle environments where it's not available
11
+ let getRandomValuesFn = null;
12
+ try {
13
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
14
+ const expoStandardWebCrypto = require("expo-standard-web-crypto");
15
+ // Handle both default export and named export
16
+ getRandomValuesFn = expoStandardWebCrypto.getRandomValues || expoStandardWebCrypto.default?.getRandomValues;
17
+ }
18
+ catch {
19
+ // expo-standard-web-crypto not available, will use fallback
20
+ }
21
+ /**
22
+ * Expo Go Crypto Adapter
23
+ * Implements the CryptoAdapter interface using JavaScript-only crypto libraries
24
+ */
25
+ class ExpoGoCryptoAdapter {
26
+ constructor() {
27
+ this.subtle = new SubtleCryptoPolyfill_1.SubtleCryptoPolyfill();
28
+ }
29
+ /**
30
+ * Get the SubtleCrypto interface
31
+ */
32
+ getSubtle() {
33
+ return this.subtle;
34
+ }
35
+ /**
36
+ * Get random values using expo-standard-web-crypto or fallback
37
+ */
38
+ getRandomValues(array) {
39
+ if (getRandomValuesFn) {
40
+ return getRandomValuesFn(array);
41
+ }
42
+ // Fallback: use global crypto if available (e.g., in Node.js tests)
43
+ if (typeof crypto !== "undefined" && crypto.getRandomValues) {
44
+ return crypto.getRandomValues(array);
45
+ }
46
+ throw new Error("getRandomValues not available. " +
47
+ "Install expo-standard-web-crypto for React Native support.");
48
+ }
49
+ }
50
+ exports.ExpoGoCryptoAdapter = ExpoGoCryptoAdapter;
51
+ //# sourceMappingURL=ExpoGoCryptoAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoGoCryptoAdapter.js","sourceRoot":"","sources":["../../../src/reactnative/crypto/ExpoGoCryptoAdapter.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,iEAA8D;AAE9D,6FAA6F;AAC7F,IAAI,iBAAiB,GAA+C,IAAI,CAAC;AAEzE,IAAI,CAAC;IACH,8DAA8D;IAC9D,MAAM,qBAAqB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClE,8CAA8C;IAC9C,iBAAiB,GAAG,qBAAqB,CAAC,eAAe,IAAI,qBAAqB,CAAC,OAAO,EAAE,eAAe,CAAC;AAC9G,CAAC;AAAC,MAAM,CAAC;IACP,4DAA4D;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAa,mBAAmB;IAG9B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,2CAAoB,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAiC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAiB;QAC/B,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,oEAAoE;QACpE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5D,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,KAAK,CACb,iCAAiC;YACjC,4DAA4D,CAC7D,CAAC;IACJ,CAAC;CACF;AAhCD,kDAgCC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * HMAC-SHA256 Adapter
3
+ * Implements HMAC-SHA256 signing and verification using node-forge
4
+ */
5
+ /**
6
+ * Sign data with HMAC-SHA256
7
+ */
8
+ export declare function hmacSign(key: ArrayBuffer, data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
9
+ /**
10
+ * Verify HMAC-SHA256 signature
11
+ */
12
+ export declare function hmacVerify(key: ArrayBuffer, signature: ArrayBuffer | Uint8Array, data: ArrayBuffer | Uint8Array): Promise<boolean>;
13
+ //# sourceMappingURL=HMACAdapter.d.ts.map