react-native-quick-crypto 1.0.0-beta.8 → 1.0.0

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 (480) hide show
  1. package/QuickCrypto.podspec +145 -6
  2. package/README.md +14 -27
  3. package/android/CMakeLists.txt +62 -7
  4. package/android/build.gradle +12 -2
  5. package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +0 -2
  6. package/app.plugin.js +3 -0
  7. package/cpp/blake3/HybridBlake3.cpp +118 -0
  8. package/cpp/blake3/HybridBlake3.hpp +35 -0
  9. package/cpp/cipher/CCMCipher.cpp +199 -0
  10. package/cpp/cipher/CCMCipher.hpp +26 -0
  11. package/cpp/cipher/ChaCha20Cipher.cpp +97 -0
  12. package/cpp/cipher/ChaCha20Cipher.hpp +25 -0
  13. package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +170 -0
  14. package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +30 -0
  15. package/cpp/cipher/GCMCipher.cpp +68 -0
  16. package/cpp/cipher/GCMCipher.hpp +14 -0
  17. package/cpp/cipher/HybridCipher.cpp +322 -0
  18. package/cpp/cipher/HybridCipher.hpp +68 -0
  19. package/cpp/cipher/HybridCipherFactory.hpp +105 -0
  20. package/cpp/cipher/HybridRsaCipher.cpp +348 -0
  21. package/cpp/cipher/HybridRsaCipher.hpp +29 -0
  22. package/cpp/cipher/OCBCipher.cpp +55 -0
  23. package/cpp/cipher/OCBCipher.hpp +19 -0
  24. package/cpp/cipher/XSalsa20Cipher.cpp +61 -0
  25. package/cpp/cipher/XSalsa20Cipher.hpp +33 -0
  26. package/cpp/ec/HybridEcKeyPair.cpp +428 -0
  27. package/cpp/ec/HybridEcKeyPair.hpp +48 -0
  28. package/cpp/ed25519/HybridEdKeyPair.cpp +228 -98
  29. package/cpp/ed25519/HybridEdKeyPair.hpp +42 -56
  30. package/cpp/hash/HybridHash.cpp +185 -0
  31. package/cpp/hash/HybridHash.hpp +43 -0
  32. package/cpp/hmac/HybridHmac.cpp +95 -0
  33. package/cpp/hmac/HybridHmac.hpp +31 -0
  34. package/cpp/keys/HybridKeyObjectHandle.cpp +749 -0
  35. package/cpp/keys/HybridKeyObjectHandle.hpp +51 -0
  36. package/cpp/keys/KeyObjectData.cpp +268 -0
  37. package/cpp/keys/KeyObjectData.hpp +71 -0
  38. package/cpp/keys/node.h +5 -0
  39. package/cpp/pbkdf2/HybridPbkdf2.cpp +34 -55
  40. package/cpp/pbkdf2/HybridPbkdf2.hpp +5 -16
  41. package/cpp/random/HybridRandom.cpp +6 -17
  42. package/cpp/random/HybridRandom.hpp +5 -6
  43. package/cpp/rsa/HybridRsaKeyPair.cpp +154 -0
  44. package/cpp/rsa/HybridRsaKeyPair.hpp +43 -0
  45. package/cpp/sign/HybridSignHandle.cpp +191 -0
  46. package/cpp/sign/HybridSignHandle.hpp +36 -0
  47. package/cpp/sign/HybridVerifyHandle.cpp +158 -0
  48. package/cpp/sign/HybridVerifyHandle.hpp +36 -0
  49. package/cpp/sign/SignUtils.hpp +108 -0
  50. package/cpp/utils/Macros.hpp +68 -0
  51. package/cpp/utils/Utils.hpp +43 -2
  52. package/cpp/utils/base64.h +309 -0
  53. package/deps/blake3/.cargo/config.toml +2 -0
  54. package/deps/blake3/.git-blame-ignore-revs +2 -0
  55. package/deps/blake3/.github/workflows/build_b3sum.py +38 -0
  56. package/deps/blake3/.github/workflows/ci.yml +491 -0
  57. package/deps/blake3/.github/workflows/tag.yml +43 -0
  58. package/deps/blake3/.github/workflows/upload_github_release_asset.py +73 -0
  59. package/deps/blake3/CONTRIBUTING.md +31 -0
  60. package/deps/blake3/Cargo.toml +135 -0
  61. package/deps/blake3/LICENSE_A2 +202 -0
  62. package/deps/blake3/LICENSE_A2LLVM +219 -0
  63. package/deps/blake3/LICENSE_CC0 +121 -0
  64. package/deps/blake3/README.md +229 -0
  65. package/deps/blake3/b3sum/Cargo.lock +513 -0
  66. package/deps/blake3/b3sum/Cargo.toml +26 -0
  67. package/deps/blake3/b3sum/README.md +72 -0
  68. package/deps/blake3/b3sum/src/main.rs +564 -0
  69. package/deps/blake3/b3sum/src/unit_tests.rs +235 -0
  70. package/deps/blake3/b3sum/tests/cli_tests.rs +680 -0
  71. package/deps/blake3/b3sum/what_does_check_do.md +176 -0
  72. package/deps/blake3/benches/bench.rs +623 -0
  73. package/deps/blake3/build.rs +389 -0
  74. package/deps/blake3/c/CMakeLists.txt +383 -0
  75. package/deps/blake3/c/CMakePresets.json +73 -0
  76. package/deps/blake3/c/Makefile.testing +82 -0
  77. package/deps/blake3/c/README.md +403 -0
  78. package/deps/blake3/c/blake3-config.cmake.in +14 -0
  79. package/deps/blake3/c/blake3.c +650 -0
  80. package/deps/blake3/c/blake3.h +86 -0
  81. package/deps/blake3/c/blake3_avx2.c +326 -0
  82. package/deps/blake3/c/blake3_avx2_x86-64_unix.S +1815 -0
  83. package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +1817 -0
  84. package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +1828 -0
  85. package/deps/blake3/c/blake3_avx512.c +1388 -0
  86. package/deps/blake3/c/blake3_avx512_x86-64_unix.S +4824 -0
  87. package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +2615 -0
  88. package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +2634 -0
  89. package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +32 -0
  90. package/deps/blake3/c/blake3_c_rust_bindings/README.md +4 -0
  91. package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +477 -0
  92. package/deps/blake3/c/blake3_c_rust_bindings/build.rs +253 -0
  93. package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +31 -0
  94. package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +333 -0
  95. package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +696 -0
  96. package/deps/blake3/c/blake3_dispatch.c +332 -0
  97. package/deps/blake3/c/blake3_impl.h +333 -0
  98. package/deps/blake3/c/blake3_neon.c +366 -0
  99. package/deps/blake3/c/blake3_portable.c +160 -0
  100. package/deps/blake3/c/blake3_sse2.c +566 -0
  101. package/deps/blake3/c/blake3_sse2_x86-64_unix.S +2291 -0
  102. package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +2332 -0
  103. package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +2350 -0
  104. package/deps/blake3/c/blake3_sse41.c +560 -0
  105. package/deps/blake3/c/blake3_sse41_x86-64_unix.S +2028 -0
  106. package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +2069 -0
  107. package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +2089 -0
  108. package/deps/blake3/c/blake3_tbb.cpp +37 -0
  109. package/deps/blake3/c/dependencies/CMakeLists.txt +3 -0
  110. package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +28 -0
  111. package/deps/blake3/c/example.c +36 -0
  112. package/deps/blake3/c/example_tbb.c +57 -0
  113. package/deps/blake3/c/libblake3.pc.in +12 -0
  114. package/deps/blake3/c/main.c +166 -0
  115. package/deps/blake3/c/test.py +97 -0
  116. package/deps/blake3/media/B3.svg +70 -0
  117. package/deps/blake3/media/BLAKE3.svg +85 -0
  118. package/deps/blake3/media/speed.svg +1474 -0
  119. package/deps/blake3/reference_impl/Cargo.toml +8 -0
  120. package/deps/blake3/reference_impl/README.md +14 -0
  121. package/deps/blake3/reference_impl/reference_impl.rs +374 -0
  122. package/deps/blake3/src/ffi_avx2.rs +65 -0
  123. package/deps/blake3/src/ffi_avx512.rs +169 -0
  124. package/deps/blake3/src/ffi_neon.rs +82 -0
  125. package/deps/blake3/src/ffi_sse2.rs +126 -0
  126. package/deps/blake3/src/ffi_sse41.rs +126 -0
  127. package/deps/blake3/src/guts.rs +60 -0
  128. package/deps/blake3/src/hazmat.rs +704 -0
  129. package/deps/blake3/src/io.rs +64 -0
  130. package/deps/blake3/src/join.rs +92 -0
  131. package/deps/blake3/src/lib.rs +1835 -0
  132. package/deps/blake3/src/platform.rs +587 -0
  133. package/deps/blake3/src/portable.rs +198 -0
  134. package/deps/blake3/src/rust_avx2.rs +474 -0
  135. package/deps/blake3/src/rust_sse2.rs +775 -0
  136. package/deps/blake3/src/rust_sse41.rs +766 -0
  137. package/deps/blake3/src/test.rs +1049 -0
  138. package/deps/blake3/src/traits.rs +227 -0
  139. package/deps/blake3/src/wasm32_simd.rs +794 -0
  140. package/deps/blake3/test_vectors/Cargo.toml +19 -0
  141. package/deps/blake3/test_vectors/cross_test.sh +25 -0
  142. package/deps/blake3/test_vectors/src/bin/generate.rs +4 -0
  143. package/deps/blake3/test_vectors/src/lib.rs +350 -0
  144. package/deps/blake3/test_vectors/test_vectors.json +217 -0
  145. package/deps/blake3/tools/compiler_version/Cargo.toml +7 -0
  146. package/deps/blake3/tools/compiler_version/build.rs +6 -0
  147. package/deps/blake3/tools/compiler_version/src/main.rs +27 -0
  148. package/deps/blake3/tools/instruction_set_support/Cargo.toml +6 -0
  149. package/deps/blake3/tools/instruction_set_support/src/main.rs +10 -0
  150. package/deps/blake3/tools/release.md +16 -0
  151. package/deps/fastpbkdf2/fastpbkdf2.c +5 -1
  152. package/deps/ncrypto/ncrypto.cc +4679 -0
  153. package/deps/ncrypto/ncrypto.h +1625 -0
  154. package/lib/commonjs/blake3.js +98 -0
  155. package/lib/commonjs/blake3.js.map +1 -0
  156. package/lib/commonjs/cipher.js +180 -0
  157. package/lib/commonjs/cipher.js.map +1 -0
  158. package/lib/commonjs/constants.js +32 -0
  159. package/lib/commonjs/constants.js.map +1 -0
  160. package/lib/commonjs/ec.js +480 -0
  161. package/lib/commonjs/ec.js.map +1 -0
  162. package/lib/commonjs/ed.js +214 -2
  163. package/lib/commonjs/ed.js.map +1 -1
  164. package/lib/commonjs/expo-plugin/@types.js +2 -0
  165. package/lib/commonjs/expo-plugin/@types.js.map +1 -0
  166. package/lib/commonjs/expo-plugin/withRNQC.js +25 -0
  167. package/lib/commonjs/expo-plugin/withRNQC.js.map +1 -0
  168. package/lib/commonjs/expo-plugin/withSodiumAndroid.js +25 -0
  169. package/lib/commonjs/expo-plugin/withSodiumAndroid.js.map +1 -0
  170. package/lib/commonjs/expo-plugin/withSodiumIos.js +26 -0
  171. package/lib/commonjs/expo-plugin/withSodiumIos.js.map +1 -0
  172. package/lib/commonjs/expo-plugin/withXCode.js +51 -0
  173. package/lib/commonjs/expo-plugin/withXCode.js.map +1 -0
  174. package/lib/commonjs/hash.js +215 -0
  175. package/lib/commonjs/hash.js.map +1 -0
  176. package/lib/commonjs/hmac.js +109 -0
  177. package/lib/commonjs/hmac.js.map +1 -0
  178. package/lib/commonjs/index.js +102 -24
  179. package/lib/commonjs/index.js.map +1 -1
  180. package/lib/commonjs/keys/classes.js +109 -52
  181. package/lib/commonjs/keys/classes.js.map +1 -1
  182. package/lib/commonjs/keys/generateKeyPair.js +141 -144
  183. package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
  184. package/lib/commonjs/keys/index.js +229 -0
  185. package/lib/commonjs/keys/index.js.map +1 -1
  186. package/lib/commonjs/keys/publicCipher.js +152 -0
  187. package/lib/commonjs/keys/publicCipher.js.map +1 -0
  188. package/lib/commonjs/keys/signVerify.js +178 -39
  189. package/lib/commonjs/keys/signVerify.js.map +1 -1
  190. package/lib/commonjs/keys/utils.js +18 -13
  191. package/lib/commonjs/keys/utils.js.map +1 -1
  192. package/lib/commonjs/pbkdf2.js.map +1 -1
  193. package/lib/commonjs/random.js +6 -0
  194. package/lib/commonjs/random.js.map +1 -1
  195. package/lib/commonjs/rsa.js +202 -0
  196. package/lib/commonjs/rsa.js.map +1 -0
  197. package/lib/commonjs/specs/blake3.nitro.js +6 -0
  198. package/lib/commonjs/specs/blake3.nitro.js.map +1 -0
  199. package/lib/commonjs/specs/cipher.nitro.js +6 -0
  200. package/lib/commonjs/specs/cipher.nitro.js.map +1 -0
  201. package/lib/commonjs/specs/ecKeyPair.nitro.js +6 -0
  202. package/lib/commonjs/specs/ecKeyPair.nitro.js.map +1 -0
  203. package/lib/commonjs/specs/hash.nitro.js +6 -0
  204. package/lib/commonjs/specs/hash.nitro.js.map +1 -0
  205. package/lib/commonjs/specs/hmac.nitro.js +6 -0
  206. package/lib/commonjs/specs/hmac.nitro.js.map +1 -0
  207. package/lib/commonjs/specs/rsaCipher.nitro.js +6 -0
  208. package/lib/commonjs/specs/rsaCipher.nitro.js.map +1 -0
  209. package/lib/commonjs/specs/rsaKeyPair.nitro.js +6 -0
  210. package/lib/commonjs/specs/rsaKeyPair.nitro.js.map +1 -0
  211. package/lib/commonjs/specs/sign.nitro.js +6 -0
  212. package/lib/commonjs/specs/sign.nitro.js.map +1 -0
  213. package/lib/commonjs/subtle.js +987 -0
  214. package/lib/commonjs/subtle.js.map +1 -0
  215. package/lib/commonjs/utils/cipher.js +64 -0
  216. package/lib/commonjs/utils/cipher.js.map +1 -0
  217. package/lib/commonjs/utils/conversion.js +44 -5
  218. package/lib/commonjs/utils/conversion.js.map +1 -1
  219. package/lib/commonjs/utils/hashnames.js +2 -1
  220. package/lib/commonjs/utils/hashnames.js.map +1 -1
  221. package/lib/commonjs/utils/index.js +11 -0
  222. package/lib/commonjs/utils/index.js.map +1 -1
  223. package/lib/commonjs/utils/noble.js +82 -0
  224. package/lib/commonjs/utils/noble.js.map +1 -0
  225. package/lib/commonjs/utils/types.js +32 -17
  226. package/lib/commonjs/utils/types.js.map +1 -1
  227. package/lib/commonjs/utils/validation.js +74 -1
  228. package/lib/commonjs/utils/validation.js.map +1 -1
  229. package/lib/module/blake3.js +90 -0
  230. package/lib/module/blake3.js.map +1 -0
  231. package/lib/module/cipher.js +173 -0
  232. package/lib/module/cipher.js.map +1 -0
  233. package/lib/module/constants.js +28 -0
  234. package/lib/module/constants.js.map +1 -0
  235. package/lib/module/ec.js +470 -0
  236. package/lib/module/ec.js.map +1 -0
  237. package/lib/module/ed.js +212 -3
  238. package/lib/module/ed.js.map +1 -1
  239. package/lib/module/expo-plugin/@types.js +2 -0
  240. package/lib/module/expo-plugin/@types.js.map +1 -0
  241. package/lib/module/expo-plugin/withRNQC.js +21 -0
  242. package/lib/module/expo-plugin/withRNQC.js.map +1 -0
  243. package/lib/module/expo-plugin/withSodiumAndroid.js +20 -0
  244. package/lib/module/expo-plugin/withSodiumAndroid.js.map +1 -0
  245. package/lib/module/expo-plugin/withSodiumIos.js +20 -0
  246. package/lib/module/expo-plugin/withSodiumIos.js.map +1 -0
  247. package/lib/module/expo-plugin/withXCode.js +46 -0
  248. package/lib/module/expo-plugin/withXCode.js.map +1 -0
  249. package/lib/module/hash.js +207 -0
  250. package/lib/module/hash.js.map +1 -0
  251. package/lib/module/hmac.js +104 -0
  252. package/lib/module/hmac.js.map +1 -0
  253. package/lib/module/index.js +21 -21
  254. package/lib/module/index.js.map +1 -1
  255. package/lib/module/keys/classes.js +106 -49
  256. package/lib/module/keys/classes.js.map +1 -1
  257. package/lib/module/keys/generateKeyPair.js +134 -143
  258. package/lib/module/keys/generateKeyPair.js.map +1 -1
  259. package/lib/module/keys/index.js +161 -22
  260. package/lib/module/keys/index.js.map +1 -1
  261. package/lib/module/keys/publicCipher.js +145 -0
  262. package/lib/module/keys/publicCipher.js.map +1 -0
  263. package/lib/module/keys/signVerify.js +170 -39
  264. package/lib/module/keys/signVerify.js.map +1 -1
  265. package/lib/module/keys/utils.js +16 -12
  266. package/lib/module/keys/utils.js.map +1 -1
  267. package/lib/module/pbkdf2.js.map +1 -1
  268. package/lib/module/random.js +6 -0
  269. package/lib/module/random.js.map +1 -1
  270. package/lib/module/rsa.js +194 -0
  271. package/lib/module/rsa.js.map +1 -0
  272. package/lib/module/specs/blake3.nitro.js +4 -0
  273. package/lib/module/specs/blake3.nitro.js.map +1 -0
  274. package/lib/module/specs/cipher.nitro.js +4 -0
  275. package/lib/module/specs/cipher.nitro.js.map +1 -0
  276. package/lib/module/specs/ecKeyPair.nitro.js +4 -0
  277. package/lib/module/specs/ecKeyPair.nitro.js.map +1 -0
  278. package/lib/module/specs/hash.nitro.js +4 -0
  279. package/lib/module/specs/hash.nitro.js.map +1 -0
  280. package/lib/module/specs/hmac.nitro.js +4 -0
  281. package/lib/module/specs/hmac.nitro.js.map +1 -0
  282. package/lib/module/specs/rsaCipher.nitro.js +4 -0
  283. package/lib/module/specs/rsaCipher.nitro.js.map +1 -0
  284. package/lib/module/specs/rsaKeyPair.nitro.js +4 -0
  285. package/lib/module/specs/rsaKeyPair.nitro.js.map +1 -0
  286. package/lib/module/specs/sign.nitro.js +4 -0
  287. package/lib/module/specs/sign.nitro.js.map +1 -0
  288. package/lib/module/subtle.js +982 -0
  289. package/lib/module/subtle.js.map +1 -0
  290. package/lib/module/utils/cipher.js +56 -0
  291. package/lib/module/utils/cipher.js.map +1 -0
  292. package/lib/module/utils/conversion.js +26 -5
  293. package/lib/module/utils/conversion.js.map +1 -1
  294. package/lib/module/utils/hashnames.js +2 -1
  295. package/lib/module/utils/hashnames.js.map +1 -1
  296. package/lib/module/utils/index.js +1 -0
  297. package/lib/module/utils/index.js.map +1 -1
  298. package/lib/module/utils/noble.js +76 -0
  299. package/lib/module/utils/noble.js.map +1 -0
  300. package/lib/module/utils/types.js +32 -17
  301. package/lib/module/utils/types.js.map +1 -1
  302. package/lib/module/utils/validation.js +69 -1
  303. package/lib/module/utils/validation.js.map +1 -1
  304. package/lib/tsconfig.tsbuildinfo +1 -1
  305. package/lib/typescript/blake3.d.ts +33 -0
  306. package/lib/typescript/blake3.d.ts.map +1 -0
  307. package/lib/typescript/cipher.d.ts +60 -0
  308. package/lib/typescript/cipher.d.ts.map +1 -0
  309. package/lib/typescript/constants.d.ts +21 -0
  310. package/lib/typescript/constants.d.ts.map +1 -0
  311. package/lib/typescript/ec.d.ts +22 -0
  312. package/lib/typescript/ec.d.ts.map +1 -0
  313. package/lib/typescript/ed.d.ts +28 -1
  314. package/lib/typescript/ed.d.ts.map +1 -1
  315. package/lib/typescript/expo-plugin/@types.d.ts +8 -0
  316. package/lib/typescript/expo-plugin/@types.d.ts.map +1 -0
  317. package/lib/typescript/expo-plugin/withRNQC.d.ts +4 -0
  318. package/lib/typescript/expo-plugin/withRNQC.d.ts.map +1 -0
  319. package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts +4 -0
  320. package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts.map +1 -0
  321. package/lib/typescript/expo-plugin/withSodiumIos.d.ts +4 -0
  322. package/lib/typescript/expo-plugin/withSodiumIos.d.ts.map +1 -0
  323. package/lib/typescript/expo-plugin/withXCode.d.ts +9 -0
  324. package/lib/typescript/expo-plugin/withXCode.d.ts.map +1 -0
  325. package/lib/typescript/hash.d.ts +122 -0
  326. package/lib/typescript/hash.d.ts.map +1 -0
  327. package/lib/typescript/hmac.d.ts +66 -0
  328. package/lib/typescript/hmac.d.ts.map +1 -0
  329. package/lib/typescript/index.d.ts +102 -10
  330. package/lib/typescript/index.d.ts.map +1 -1
  331. package/lib/typescript/keys/classes.d.ts +50 -8
  332. package/lib/typescript/keys/classes.d.ts.map +1 -1
  333. package/lib/typescript/keys/generateKeyPair.d.ts +5 -0
  334. package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
  335. package/lib/typescript/keys/index.d.ts +22 -2
  336. package/lib/typescript/keys/index.d.ts.map +1 -1
  337. package/lib/typescript/keys/publicCipher.d.ts +20 -0
  338. package/lib/typescript/keys/publicCipher.d.ts.map +1 -0
  339. package/lib/typescript/keys/signVerify.d.ts +28 -0
  340. package/lib/typescript/keys/signVerify.d.ts.map +1 -1
  341. package/lib/typescript/keys/utils.d.ts +3 -1
  342. package/lib/typescript/keys/utils.d.ts.map +1 -1
  343. package/lib/typescript/pbkdf2.d.ts +1 -1
  344. package/lib/typescript/pbkdf2.d.ts.map +1 -1
  345. package/lib/typescript/random.d.ts +6 -0
  346. package/lib/typescript/random.d.ts.map +1 -1
  347. package/lib/typescript/rsa.d.ts +19 -0
  348. package/lib/typescript/rsa.d.ts.map +1 -0
  349. package/lib/typescript/specs/blake3.nitro.d.ts +15 -0
  350. package/lib/typescript/specs/blake3.nitro.d.ts.map +1 -0
  351. package/lib/typescript/specs/cipher.nitro.d.ts +29 -0
  352. package/lib/typescript/specs/cipher.nitro.d.ts.map +1 -0
  353. package/lib/typescript/specs/ecKeyPair.nitro.d.ts +20 -0
  354. package/lib/typescript/specs/ecKeyPair.nitro.d.ts.map +1 -0
  355. package/lib/typescript/specs/edKeyPair.nitro.d.ts +1 -0
  356. package/lib/typescript/specs/edKeyPair.nitro.d.ts.map +1 -1
  357. package/lib/typescript/specs/hash.nitro.d.ts +13 -0
  358. package/lib/typescript/specs/hash.nitro.d.ts.map +1 -0
  359. package/lib/typescript/specs/hmac.nitro.d.ts +10 -0
  360. package/lib/typescript/specs/hmac.nitro.d.ts.map +1 -0
  361. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +1 -1
  362. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -1
  363. package/lib/typescript/specs/rsaCipher.nitro.d.ts +44 -0
  364. package/lib/typescript/specs/rsaCipher.nitro.d.ts.map +1 -0
  365. package/lib/typescript/specs/rsaKeyPair.nitro.d.ts +20 -0
  366. package/lib/typescript/specs/rsaKeyPair.nitro.d.ts.map +1 -0
  367. package/lib/typescript/specs/sign.nitro.d.ts +19 -0
  368. package/lib/typescript/specs/sign.nitro.d.ts.map +1 -0
  369. package/lib/typescript/subtle.d.ts +17 -0
  370. package/lib/typescript/subtle.d.ts.map +1 -0
  371. package/lib/typescript/utils/cipher.d.ts +7 -0
  372. package/lib/typescript/utils/cipher.d.ts.map +1 -0
  373. package/lib/typescript/utils/conversion.d.ts +1 -0
  374. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  375. package/lib/typescript/utils/hashnames.d.ts +3 -1
  376. package/lib/typescript/utils/hashnames.d.ts.map +1 -1
  377. package/lib/typescript/utils/index.d.ts +1 -0
  378. package/lib/typescript/utils/index.d.ts.map +1 -1
  379. package/lib/typescript/utils/noble.d.ts +19 -0
  380. package/lib/typescript/utils/noble.d.ts.map +1 -0
  381. package/lib/typescript/utils/types.d.ts +125 -23
  382. package/lib/typescript/utils/types.d.ts.map +1 -1
  383. package/lib/typescript/utils/validation.d.ts +5 -0
  384. package/lib/typescript/utils/validation.d.ts.map +1 -1
  385. package/nitrogen/generated/.gitattributes +1 -0
  386. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +30 -1
  387. package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +1 -1
  388. package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +115 -1
  389. package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +1 -1
  390. package/nitrogen/generated/android/kotlin/com/margelo/nitro/crypto/QuickCryptoOnLoad.kt +35 -0
  391. package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +3 -1
  392. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +1 -1
  393. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +1 -1
  394. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +3 -3
  395. package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +111 -1
  396. package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +1 -1
  397. package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +104 -0
  398. package/nitrogen/generated/shared/c++/CipherArgs.hpp +86 -0
  399. package/nitrogen/generated/shared/c++/HybridBlake3Spec.cpp +28 -0
  400. package/nitrogen/generated/shared/c++/HybridBlake3Spec.hpp +76 -0
  401. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.cpp +21 -0
  402. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.hpp +67 -0
  403. package/nitrogen/generated/shared/c++/HybridCipherSpec.cpp +28 -0
  404. package/nitrogen/generated/shared/c++/HybridCipherSpec.hpp +76 -0
  405. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.cpp +29 -0
  406. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.hpp +77 -0
  407. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.cpp +2 -1
  408. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.hpp +5 -4
  409. package/nitrogen/generated/shared/c++/HybridHashSpec.cpp +26 -0
  410. package/nitrogen/generated/shared/c++/HybridHashSpec.hpp +75 -0
  411. package/nitrogen/generated/shared/c++/HybridHmacSpec.cpp +23 -0
  412. package/nitrogen/generated/shared/c++/HybridHmacSpec.hpp +66 -0
  413. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +1 -1
  414. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +8 -8
  415. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +1 -1
  416. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +3 -3
  417. package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +1 -1
  418. package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +3 -3
  419. package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.cpp +24 -0
  420. package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.hpp +72 -0
  421. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.cpp +29 -0
  422. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.hpp +77 -0
  423. package/nitrogen/generated/shared/c++/HybridSignHandleSpec.cpp +23 -0
  424. package/nitrogen/generated/shared/c++/HybridSignHandleSpec.hpp +71 -0
  425. package/nitrogen/generated/shared/c++/HybridVerifyHandleSpec.cpp +23 -0
  426. package/nitrogen/generated/shared/c++/HybridVerifyHandleSpec.hpp +71 -0
  427. package/nitrogen/generated/shared/c++/JWK.hpp +17 -18
  428. package/nitrogen/generated/shared/c++/JWKkty.hpp +12 -14
  429. package/nitrogen/generated/shared/c++/JWKuse.hpp +8 -10
  430. package/nitrogen/generated/shared/c++/KFormatType.hpp +14 -16
  431. package/nitrogen/generated/shared/c++/KeyDetail.hpp +6 -7
  432. package/nitrogen/generated/shared/c++/KeyEncoding.hpp +15 -17
  433. package/nitrogen/generated/shared/c++/KeyObject.hpp +67 -0
  434. package/nitrogen/generated/shared/c++/KeyType.hpp +11 -13
  435. package/nitrogen/generated/shared/c++/KeyUsage.hpp +38 -24
  436. package/nitrogen/generated/shared/c++/NamedCurve.hpp +10 -12
  437. package/package.json +28 -23
  438. package/src/blake3.ts +123 -0
  439. package/src/cipher.ts +335 -0
  440. package/src/constants.ts +32 -0
  441. package/src/ec.ts +657 -0
  442. package/src/ed.ts +297 -13
  443. package/src/expo-plugin/@types.ts +7 -0
  444. package/src/expo-plugin/withRNQC.ts +23 -0
  445. package/src/expo-plugin/withSodiumAndroid.ts +24 -0
  446. package/src/expo-plugin/withSodiumIos.ts +30 -0
  447. package/src/expo-plugin/withXCode.ts +55 -0
  448. package/src/hash.ts +274 -0
  449. package/src/hmac.ts +135 -0
  450. package/src/index.ts +20 -20
  451. package/src/keys/classes.ts +148 -55
  452. package/src/keys/generateKeyPair.ts +177 -134
  453. package/src/keys/index.ts +226 -14
  454. package/src/keys/publicCipher.ts +229 -0
  455. package/src/keys/signVerify.ts +239 -39
  456. package/src/keys/utils.ts +24 -18
  457. package/src/pbkdf2.ts +1 -1
  458. package/src/random.ts +7 -0
  459. package/src/rsa.ts +310 -0
  460. package/src/specs/blake3.nitro.ts +12 -0
  461. package/src/specs/cipher.nitro.ts +25 -0
  462. package/src/specs/ecKeyPair.nitro.ts +38 -0
  463. package/src/specs/edKeyPair.nitro.ts +2 -0
  464. package/src/specs/hash.nitro.ts +10 -0
  465. package/src/specs/hmac.nitro.ts +7 -0
  466. package/src/specs/keyObjectHandle.nitro.ts +1 -1
  467. package/src/specs/rsaCipher.nitro.ts +65 -0
  468. package/src/specs/rsaKeyPair.nitro.ts +33 -0
  469. package/src/specs/sign.nitro.ts +31 -0
  470. package/src/subtle.ts +1436 -0
  471. package/src/utils/cipher.ts +60 -0
  472. package/src/utils/conversion.ts +33 -4
  473. package/src/utils/hashnames.ts +4 -2
  474. package/src/utils/index.ts +1 -0
  475. package/src/utils/noble.ts +85 -0
  476. package/src/utils/types.ts +209 -29
  477. package/src/utils/validation.ts +96 -1
  478. package/lib/module/package.json +0 -1
  479. package/nitrogen/generated/android/QuickCryptoOnLoad.kt +0 -1
  480. package/nitrogen/generated/shared/c++/CFRGKeyPairType.hpp +0 -86
package/lib/module/ed.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  import { NitroModules } from 'react-native-nitro-modules';
4
- import { binaryLikeToArrayBuffer as toAB } from './utils';
4
+ import { Buffer } from '@craftzdog/react-native-buffer';
5
+ import { CryptoKey, KeyObject } from './keys';
6
+ import { binaryLikeToArrayBuffer as toAB, hasAnyNotIn, lazyDOMException, getUsagesUnion, KFormatType, KeyEncoding } from './utils';
5
7
  export class Ed {
6
8
  constructor(type, config) {
7
9
  this.type = type;
@@ -9,11 +11,58 @@ export class Ed {
9
11
  this.native = NitroModules.createHybridObject('EdKeyPair');
10
12
  this.native.setCurve(type);
11
13
  }
14
+
15
+ /**
16
+ * Computes the Diffie-Hellman secret based on a privateKey and a publicKey.
17
+ * Both keys must have the same asymmetricKeyType, which must be one of 'dh'
18
+ * (for Diffie-Hellman), 'ec', 'x448', or 'x25519' (for ECDH).
19
+ *
20
+ * @api nodejs/node
21
+ *
22
+ * @param options `{ privateKey, publicKey }`, both of which are `KeyObject`s
23
+ * @param callback optional `(err, secret) => void`
24
+ * @returns `Buffer` if no callback, or `void` if callback is provided
25
+ */
26
+ diffieHellman(options, callback) {
27
+ checkDiffieHellmanOptions(options);
28
+
29
+ // key types must be of certain type
30
+ const keyType = options.privateKey.asymmetricKeyType;
31
+ switch (keyType) {
32
+ case 'x25519':
33
+ case 'x448':
34
+ break;
35
+ default:
36
+ throw new Error(`Unsupported or unimplemented curve type: ${keyType}`);
37
+ }
38
+
39
+ // extract the private and public keys as ArrayBuffers
40
+ const privateKey = toAB(options.privateKey);
41
+ const publicKey = toAB(options.publicKey);
42
+ try {
43
+ const ret = this.native.diffieHellman(privateKey, publicKey);
44
+ if (!ret) {
45
+ throw new Error('No secret');
46
+ }
47
+ if (callback) {
48
+ callback(null, Buffer.from(ret));
49
+ } else {
50
+ return Buffer.from(ret);
51
+ }
52
+ } catch (e) {
53
+ const err = e;
54
+ if (callback) {
55
+ callback(err, undefined);
56
+ } else {
57
+ throw err;
58
+ }
59
+ }
60
+ }
12
61
  async generateKeyPair() {
13
- this.native.generateKeyPair(this.config.publicFormat || -1, this.config.publicType || -1, this.config.privateFormat || -1, this.config.privateType || -1, this.config.cipher, this.config.passphrase);
62
+ await this.native.generateKeyPair(this.config.publicFormat ?? -1, this.config.publicType ?? -1, this.config.privateFormat ?? -1, this.config.privateType ?? -1, this.config.cipher, this.config.passphrase);
14
63
  }
15
64
  generateKeyPairSync() {
16
- this.native.generateKeyPairSync(this.config.publicFormat || -1, this.config.publicType || -1, this.config.privateFormat || -1, this.config.privateType || -1, this.config.cipher, this.config.passphrase);
65
+ this.native.generateKeyPairSync(this.config.publicFormat ?? -1, this.config.publicType ?? -1, this.config.privateFormat ?? -1, this.config.privateType ?? -1, this.config.cipher, this.config.passphrase);
17
66
  }
18
67
  getPublicKey() {
19
68
  return this.native.getPublicKey();
@@ -21,6 +70,20 @@ export class Ed {
21
70
  getPrivateKey() {
22
71
  return this.native.getPrivateKey();
23
72
  }
73
+
74
+ /**
75
+ * Computes the Diffie-Hellman shared secret based on a privateKey and a
76
+ * publicKey for key exchange
77
+ *
78
+ * @api \@paulmillr/noble-curves/ed25519
79
+ *
80
+ * @param privateKey
81
+ * @param publicKey
82
+ * @returns shared secret key
83
+ */
84
+ getSharedSecret(privateKey, publicKey) {
85
+ return this.native.diffieHellman(toAB(privateKey), toAB(publicKey));
86
+ }
24
87
  async sign(message, key) {
25
88
  return key ? this.native.sign(toAB(message), toAB(key)) : this.native.sign(toAB(message));
26
89
  }
@@ -34,4 +97,150 @@ export class Ed {
34
97
  return key ? this.native.verifySync(toAB(signature), toAB(message), toAB(key)) : this.native.verifySync(toAB(signature), toAB(message));
35
98
  }
36
99
  }
100
+
101
+ // Node API
102
+ export function diffieHellman(options, callback) {
103
+ const privateKey = options.privateKey;
104
+ const type = privateKey.asymmetricKeyType;
105
+ const ed = new Ed(type, {});
106
+ return ed.diffieHellman(options, callback);
107
+ }
108
+
109
+ // Node API
110
+ export function ed_generateKeyPair(isAsync, type, encoding, callback) {
111
+ const ed = new Ed(type, encoding);
112
+
113
+ // Helper to convert keys to proper output format
114
+ const formatKeys = () => {
115
+ const publicKeyRaw = ed.getPublicKey();
116
+ const privateKeyRaw = ed.getPrivateKey();
117
+
118
+ // Check if PEM format was requested (KFormatType.PEM = 1)
119
+ const isPemPublic = encoding.publicFormat === KFormatType.PEM;
120
+ const isPemPrivate = encoding.privateFormat === KFormatType.PEM;
121
+
122
+ // Convert ArrayBuffer to string for PEM format
123
+ const arrayBufferToString = ab => {
124
+ return Buffer.from(new Uint8Array(ab)).toString('utf-8');
125
+ };
126
+ const publicKey = isPemPublic ? arrayBufferToString(publicKeyRaw) : publicKeyRaw;
127
+ const privateKey = isPemPrivate ? arrayBufferToString(privateKeyRaw) : privateKeyRaw;
128
+ return {
129
+ publicKey,
130
+ privateKey
131
+ };
132
+ };
133
+
134
+ // Async path
135
+ if (isAsync) {
136
+ if (!callback) {
137
+ // This should not happen if called from public API
138
+ throw new Error('A callback is required for async key generation.');
139
+ }
140
+ ed.generateKeyPair().then(() => {
141
+ const {
142
+ publicKey,
143
+ privateKey
144
+ } = formatKeys();
145
+ callback(undefined, publicKey, privateKey);
146
+ }).catch(err => {
147
+ callback(err, undefined, undefined);
148
+ });
149
+ return;
150
+ }
151
+
152
+ // Sync path
153
+ let err;
154
+ try {
155
+ ed.generateKeyPairSync();
156
+ } catch (e) {
157
+ err = e instanceof Error ? e : new Error(String(e));
158
+ }
159
+ const {
160
+ publicKey,
161
+ privateKey
162
+ } = err ? {
163
+ publicKey: undefined,
164
+ privateKey: undefined
165
+ } : formatKeys();
166
+ if (callback) {
167
+ callback(err, publicKey, privateKey);
168
+ return;
169
+ }
170
+ return [err, publicKey, privateKey];
171
+ }
172
+ function checkDiffieHellmanOptions(options) {
173
+ const {
174
+ privateKey,
175
+ publicKey
176
+ } = options;
177
+
178
+ // Check if keys are KeyObject instances
179
+ if (!privateKey || typeof privateKey !== 'object' || !('type' in privateKey)) {
180
+ throw new Error('privateKey must be a KeyObject');
181
+ }
182
+ if (!publicKey || typeof publicKey !== 'object' || !('type' in publicKey)) {
183
+ throw new Error('publicKey must be a KeyObject');
184
+ }
185
+
186
+ // type checks
187
+ if (privateKey.type !== 'private') {
188
+ throw new Error('privateKey must be a private KeyObject');
189
+ }
190
+ if (publicKey.type !== 'public') {
191
+ throw new Error('publicKey must be a public KeyObject');
192
+ }
193
+
194
+ // For asymmetric keys, check if they have the asymmetricKeyType property
195
+ const privateKeyAsym = privateKey;
196
+ const publicKeyAsym = publicKey;
197
+
198
+ // key types must match
199
+ if (privateKeyAsym.asymmetricKeyType && publicKeyAsym.asymmetricKeyType && privateKeyAsym.asymmetricKeyType !== publicKeyAsym.asymmetricKeyType) {
200
+ throw new Error('Keys must be asymmetric and their types must match');
201
+ }
202
+ switch (privateKeyAsym.asymmetricKeyType) {
203
+ // case 'dh': // TODO: uncomment when implemented
204
+ case 'x25519':
205
+ case 'x448':
206
+ break;
207
+ default:
208
+ throw new Error(`Unknown curve type: ${privateKeyAsym.asymmetricKeyType}`);
209
+ }
210
+ }
211
+ export async function ed_generateKeyPairWebCrypto(type, extractable, keyUsages) {
212
+ if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
213
+ throw lazyDOMException(`Unsupported key usage for ${type}`, 'SyntaxError');
214
+ }
215
+ const publicUsages = getUsagesUnion(keyUsages, 'verify');
216
+ const privateUsages = getUsagesUnion(keyUsages, 'sign');
217
+ if (privateUsages.length === 0) {
218
+ throw lazyDOMException('Usages cannot be empty', 'SyntaxError');
219
+ }
220
+
221
+ // Request DER-encoded SPKI for public key, PKCS8 for private key
222
+ const config = {
223
+ publicFormat: KFormatType.DER,
224
+ publicType: KeyEncoding.SPKI,
225
+ privateFormat: KFormatType.DER,
226
+ privateType: KeyEncoding.PKCS8
227
+ };
228
+ const ed = new Ed(type, config);
229
+ await ed.generateKeyPair();
230
+ const algorithmName = type === 'ed25519' ? 'Ed25519' : 'Ed448';
231
+ const publicKeyData = ed.getPublicKey();
232
+ const privateKeyData = ed.getPrivateKey();
233
+ const pub = KeyObject.createKeyObject('public', publicKeyData, KFormatType.DER, KeyEncoding.SPKI);
234
+ const publicKey = new CryptoKey(pub, {
235
+ name: algorithmName
236
+ }, publicUsages, true);
237
+ const priv = KeyObject.createKeyObject('private', privateKeyData, KFormatType.DER, KeyEncoding.PKCS8);
238
+ const privateKey = new CryptoKey(priv, {
239
+ name: algorithmName
240
+ }, privateUsages, extractable);
241
+ return {
242
+ publicKey,
243
+ privateKey
244
+ };
245
+ }
37
246
  //# sourceMappingURL=ed.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NitroModules","binaryLikeToArrayBuffer","toAB","Ed","constructor","type","config","native","createHybridObject","setCurve","generateKeyPair","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","generateKeyPairSync","getPublicKey","getPrivateKey","sign","message","key","signSync","verify","signature","verifySync"],"sourceRoot":"../../src","sources":["ed.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NitroModules","Buffer","CryptoKey","KeyObject","binaryLikeToArrayBuffer","toAB","hasAnyNotIn","lazyDOMException","getUsagesUnion","KFormatType","KeyEncoding","Ed","constructor","type","config","native","createHybridObject","setCurve","diffieHellman","options","callback","checkDiffieHellmanOptions","keyType","privateKey","asymmetricKeyType","Error","publicKey","ret","from","e","err","undefined","generateKeyPair","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","generateKeyPairSync","getPublicKey","getPrivateKey","getSharedSecret","sign","message","key","signSync","verify","signature","verifySync","ed","ed_generateKeyPair","isAsync","encoding","formatKeys","publicKeyRaw","privateKeyRaw","isPemPublic","PEM","isPemPrivate","arrayBufferToString","ab","Uint8Array","toString","then","catch","String","privateKeyAsym","publicKeyAsym","ed_generateKeyPairWebCrypto","extractable","keyUsages","publicUsages","privateUsages","length","DER","SPKI","PKCS8","algorithmName","publicKeyData","privateKeyData","pub","createKeyObject","name","priv"],"sourceRoot":"../../src","sources":["ed.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=@types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["expo-plugin/@types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ import { createRunOncePlugin } from 'expo/config-plugins';
4
+ import { withSodiumIos } from './withSodiumIos';
5
+ import { withSodiumAndroid } from './withSodiumAndroid';
6
+ import { withXCode } from './withXCode';
7
+ const withRNQCInternal = (config, props = {}) => {
8
+ // add XCode workarounds for some 16.x releases that are not RN-friendly
9
+ config = withXCode(config, props);
10
+
11
+ // enable libsodium algorithms
12
+ if (props.sodiumEnabled) {
13
+ config = withSodiumIos(config, props);
14
+ config = withSodiumAndroid(config, props);
15
+ }
16
+ return config;
17
+ };
18
+ export function createRNQCPlugin(name, version) {
19
+ return createRunOncePlugin(withRNQCInternal, name, version);
20
+ }
21
+ //# sourceMappingURL=withRNQC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createRunOncePlugin","withSodiumIos","withSodiumAndroid","withXCode","withRNQCInternal","config","props","sodiumEnabled","createRNQCPlugin","name","version"],"sourceRoot":"../../../src","sources":["expo-plugin/withRNQC.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,qBAAqB;AAGzD,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,SAAS,QAAQ,aAAa;AAEvC,MAAMC,gBAA2C,GAAGA,CAACC,MAAM,EAAEC,KAAK,GAAG,CAAC,CAAC,KAAK;EAC1E;EACAD,MAAM,GAAGF,SAAS,CAACE,MAAM,EAAEC,KAAK,CAAC;;EAEjC;EACA,IAAIA,KAAK,CAACC,aAAa,EAAE;IACvBF,MAAM,GAAGJ,aAAa,CAACI,MAAM,EAAEC,KAAK,CAAC;IACrCD,MAAM,GAAGH,iBAAiB,CAACG,MAAM,EAAEC,KAAK,CAAC;EAC3C;EAEA,OAAOD,MAAM;AACf,CAAC;AAED,OAAO,SAASG,gBAAgBA,CAACC,IAAY,EAAEC,OAAe,EAAE;EAC9D,OAAOV,mBAAmB,CAACI,gBAAgB,EAAEK,IAAI,EAAEC,OAAO,CAAC;AAC7D","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import { withGradleProperties } from 'expo/config-plugins';
4
+ export const withSodiumAndroid = config => {
5
+ return withGradleProperties(config, config => {
6
+ config.modResults = config.modResults || [];
7
+
8
+ // Check if the property already exists
9
+ const existingProperty = config.modResults.find(item => item.type === 'property' && item.key === 'sodiumEnabled');
10
+ if (!existingProperty) {
11
+ config.modResults.push({
12
+ type: 'property',
13
+ key: 'sodiumEnabled',
14
+ value: 'true'
15
+ });
16
+ }
17
+ return config;
18
+ });
19
+ };
20
+ //# sourceMappingURL=withSodiumAndroid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["withGradleProperties","withSodiumAndroid","config","modResults","existingProperty","find","item","type","key","push","value"],"sourceRoot":"../../../src","sources":["expo-plugin/withSodiumAndroid.ts"],"mappings":";;AACA,SAASA,oBAAoB,QAAQ,qBAAqB;AAG1D,OAAO,MAAMC,iBAA4C,GAAGC,MAAM,IAAI;EACpE,OAAOF,oBAAoB,CAACE,MAAM,EAAEA,MAAM,IAAI;IAC5CA,MAAM,CAACC,UAAU,GAAGD,MAAM,CAACC,UAAU,IAAI,EAAE;;IAE3C;IACA,MAAMC,gBAAgB,GAAGF,MAAM,CAACC,UAAU,CAACE,IAAI,CAC7CC,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAK,UAAU,IAAID,IAAI,CAACE,GAAG,KAAK,eACnD,CAAC;IAED,IAAI,CAACJ,gBAAgB,EAAE;MACrBF,MAAM,CAACC,UAAU,CAACM,IAAI,CAAC;QACrBF,IAAI,EAAE,UAAU;QAChBC,GAAG,EAAE,eAAe;QACpBE,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;IAEA,OAAOR,MAAM;EACf,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import { withDangerousMod } from 'expo/config-plugins';
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ export const withSodiumIos = config => {
7
+ return withDangerousMod(config, ['ios', config => {
8
+ const podfilePath = path.join(config.modRequest.platformProjectRoot, 'Podfile');
9
+ let contents = fs.readFileSync(podfilePath, 'utf-8');
10
+
11
+ // Check if SODIUM_ENABLED is already set
12
+ if (!contents.includes("ENV['SODIUM_ENABLED']")) {
13
+ // Add it right after the RCT_NEW_ARCH_ENABLED ENV variable
14
+ contents = contents.replace(/^(ENV\['RCT_NEW_ARCH_ENABLED'\].*$)/m, `$1\nENV['SODIUM_ENABLED'] = '1'`);
15
+ fs.writeFileSync(podfilePath, contents);
16
+ }
17
+ return config;
18
+ }]);
19
+ };
20
+ //# sourceMappingURL=withSodiumIos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["withDangerousMod","fs","path","withSodiumIos","config","podfilePath","join","modRequest","platformProjectRoot","contents","readFileSync","includes","replace","writeFileSync"],"sourceRoot":"../../../src","sources":["expo-plugin/withSodiumIos.ts"],"mappings":";;AACA,SAASA,gBAAgB,QAAQ,qBAAqB;AACtD,OAAOC,EAAE,MAAM,IAAI;AACnB,OAAOC,IAAI,MAAM,MAAM;AAGvB,OAAO,MAAMC,aAAwC,GAAGC,MAAM,IAAI;EAChE,OAAOJ,gBAAgB,CAACI,MAAM,EAAE,CAC9B,KAAK,EACLA,MAAM,IAAI;IACR,MAAMC,WAAW,GAAGH,IAAI,CAACI,IAAI,CAC3BF,MAAM,CAACG,UAAU,CAACC,mBAAmB,EACrC,SACF,CAAC;IACD,IAAIC,QAAQ,GAAGR,EAAE,CAACS,YAAY,CAACL,WAAW,EAAE,OAAO,CAAC;;IAEpD;IACA,IAAI,CAACI,QAAQ,CAACE,QAAQ,CAAC,uBAAuB,CAAC,EAAE;MAC/C;MACAF,QAAQ,GAAGA,QAAQ,CAACG,OAAO,CACzB,sCAAsC,EACtC,iCACF,CAAC;MACDX,EAAE,CAACY,aAAa,CAACR,WAAW,EAAEI,QAAQ,CAAC;IACzC;IAEA,OAAOL,MAAM;EACf,CAAC,CACF,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ import { withBuildProperties } from 'expo-build-properties';
4
+ import { withDangerousMod } from 'expo/config-plugins';
5
+ import fs from 'fs';
6
+ import path from 'path';
7
+
8
+ /**
9
+ * Workaround for some jank XCode releases that break React Native native modules
10
+ *
11
+ * see: https://github.com/mrousavy/nitro/issues/422#issuecomment-2545988256
12
+ */
13
+ export const withXCode = config => {
14
+ // Use expo-build-properties to bump iOS deployment target
15
+ config = withBuildProperties(config, {
16
+ ios: {
17
+ deploymentTarget: '16.1'
18
+ }
19
+ });
20
+ // Patch the generated Podfile fallback to ensure platform is always 16.1
21
+ config = withDangerousMod(config, ['ios', modConfig => {
22
+ const podfilePath = path.join(modConfig.modRequest.platformProjectRoot, 'Podfile');
23
+ let contents = fs.readFileSync(podfilePath, 'utf-8');
24
+
25
+ // Check if the IPHONEOS_DEPLOYMENT_TARGET setting is already present
26
+ // We search for the key being assigned, e.g., config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] =
27
+ const deploymentTargetSettingExists = /\.build_settings\s*\[\s*['"]IPHONEOS_DEPLOYMENT_TARGET['"]\s*\]\s*=/.test(contents);
28
+ if (!deploymentTargetSettingExists) {
29
+ // IPHONEOS_DEPLOYMENT_TARGET setting not found, proceed to add it.
30
+ contents = contents.replace(/(post_install\s+do\s+\|installer\|[\s\S]*?)(\r?\n\s\send\s*)$/m, `$1
31
+
32
+ # Expo Build Properties: force deployment target
33
+ # https://github.com/mrousavy/nitro/issues/422#issuecomment-2545988256
34
+ installer.pods_project.targets.each do |target|
35
+ target.build_configurations.each do |config|
36
+ config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.1'
37
+ end
38
+ end
39
+ $2`);
40
+ }
41
+ fs.writeFileSync(podfilePath, contents);
42
+ return modConfig;
43
+ }]);
44
+ return config;
45
+ };
46
+ //# sourceMappingURL=withXCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["withBuildProperties","withDangerousMod","fs","path","withXCode","config","ios","deploymentTarget","modConfig","podfilePath","join","modRequest","platformProjectRoot","contents","readFileSync","deploymentTargetSettingExists","test","replace","writeFileSync"],"sourceRoot":"../../../src","sources":["expo-plugin/withXCode.ts"],"mappings":";;AAEA,SAASA,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,gBAAgB,QAAQ,qBAAqB;AACtD,OAAOC,EAAE,MAAM,IAAI;AACnB,OAAOC,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,SAAoC,GAAGC,MAAM,IAAI;EAC5D;EACAA,MAAM,GAAGL,mBAAmB,CAACK,MAAM,EAAE;IAAEC,GAAG,EAAE;MAAEC,gBAAgB,EAAE;IAAO;EAAE,CAAC,CAAC;EAC3E;EACAF,MAAM,GAAGJ,gBAAgB,CAACI,MAAM,EAAE,CAChC,KAAK,EACLG,SAAS,IAAI;IACX,MAAMC,WAAW,GAAGN,IAAI,CAACO,IAAI,CAC3BF,SAAS,CAACG,UAAU,CAACC,mBAAmB,EACxC,SACF,CAAC;IACD,IAAIC,QAAQ,GAAGX,EAAE,CAACY,YAAY,CAACL,WAAW,EAAE,OAAO,CAAC;;IAEpD;IACA;IACA,MAAMM,6BAA6B,GACjC,qEAAqE,CAACC,IAAI,CACxEH,QACF,CAAC;IAEH,IAAI,CAACE,6BAA6B,EAAE;MAClC;MACAF,QAAQ,GAAGA,QAAQ,CAACI,OAAO,CACzB,gEAAgE,EAChE;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GACQ,CAAC;IACH;IAEAf,EAAE,CAACgB,aAAa,CAACT,WAAW,EAAEI,QAAQ,CAAC;IACvC,OAAOL,SAAS;EAClB,CAAC,CACF,CAAC;EACF,OAAOH,MAAM;AACf,CAAC","ignoreList":[]}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+
3
+ import { Stream } from 'readable-stream';
4
+ import { NitroModules } from 'react-native-nitro-modules';
5
+ import { ab2str, binaryLikeToArrayBuffer, bufferLikeToArrayBuffer } from './utils';
6
+ import { validateMaxBufferLength } from './utils/validation';
7
+ import { lazyDOMException } from './utils/errors';
8
+ import { normalizeHashName } from './utils/hashnames';
9
+ class HashUtils {
10
+ static native = NitroModules.createHybridObject('Hash');
11
+ static getSupportedHashAlgorithms() {
12
+ return this.native.getSupportedHashAlgorithms();
13
+ }
14
+ }
15
+ export function getHashes() {
16
+ return HashUtils.getSupportedHashAlgorithms();
17
+ }
18
+ class Hash extends Stream.Transform {
19
+ validate(args) {
20
+ if (typeof args.algorithm !== 'string' || args.algorithm.length === 0) throw new Error('Algorithm must be a non-empty string');
21
+ if (args.options?.outputLength !== undefined && args.options.outputLength < 0) throw new Error('Output length must be a non-negative number');
22
+ if (args.options?.outputLength !== undefined && typeof args.options.outputLength !== 'number') throw new Error('Output length must be a number');
23
+ }
24
+
25
+ /**
26
+ * @internal use `createHash()` instead
27
+ */
28
+ constructor(args) {
29
+ super(args.options);
30
+ this.validate(args);
31
+ this.algorithm = args.algorithm;
32
+ this.options = args.options ?? {};
33
+ if (args.native) {
34
+ this.native = args.native;
35
+ return;
36
+ }
37
+ this.native = NitroModules.createHybridObject('Hash');
38
+ this.native.createHash(this.algorithm, this.options.outputLength);
39
+ }
40
+
41
+ /**
42
+ * Updates the hash content with the given `data`, the encoding of which
43
+ * is given in `inputEncoding`.
44
+ * If `encoding` is not provided, and the `data` is a string, an
45
+ * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored.
46
+ *
47
+ * This can be called many times with new data as it is streamed.
48
+ * @since v1.0.0
49
+ * @param inputEncoding The `encoding` of the `data` string.
50
+ */
51
+
52
+ update(data, inputEncoding) {
53
+ const defaultEncoding = 'utf8';
54
+ inputEncoding = inputEncoding ?? defaultEncoding;
55
+ this.native.update(binaryLikeToArrayBuffer(data, inputEncoding));
56
+ return this; // to support chaining syntax createHash().update().digest()
57
+ }
58
+
59
+ /**
60
+ * Calculates the digest of all of the data passed to be hashed (using the `hash.update()` method).
61
+ * If `encoding` is provided a string will be returned; otherwise
62
+ * a `Buffer` is returned.
63
+ *
64
+ * The `Hash` object can not be used again after `hash.digest()` method has been
65
+ * called. Multiple calls will cause an error to be thrown.
66
+ * @since v1.0.0
67
+ * @param encoding The `encoding` of the return value.
68
+ */
69
+
70
+ digest(encoding) {
71
+ const nativeDigest = this.native.digest(encoding);
72
+ if (encoding && encoding !== 'buffer') {
73
+ return ab2str(nativeDigest, encoding);
74
+ }
75
+ return Buffer.from(nativeDigest);
76
+ }
77
+
78
+ /**
79
+ * Creates a new `Hash` object that contains a deep copy of the internal state
80
+ * of the current `Hash` object.
81
+ *
82
+ * The optional `options` argument controls stream behavior. For XOF hash
83
+ * functions such as `'shake256'`, the `outputLength` option can be used to
84
+ * specify the desired output length in bytes.
85
+ *
86
+ * An error is thrown when an attempt is made to copy the `Hash` object after
87
+ * its `hash.digest()` method has been called.
88
+ *
89
+ * ```js
90
+ * // Calculate a rolling hash.
91
+ * import { createHash } from 'react-native-quick-crypto';
92
+ *
93
+ * const hash = createHash('sha256');
94
+ *
95
+ * hash.update('one');
96
+ * console.log(hash.copy().digest('hex'));
97
+ *
98
+ * hash.update('two');
99
+ * console.log(hash.copy().digest('hex'));
100
+ *
101
+ * hash.update('three');
102
+ * console.log(hash.copy().digest('hex'));
103
+ *
104
+ * // Etc.
105
+ * ```
106
+ * @since v1.0.0
107
+ * @param options `stream.transform` options
108
+ */
109
+
110
+ copy(options) {
111
+ const newOptions = options ?? this.options;
112
+ const newNativeHash = this.native.copy(newOptions.outputLength);
113
+ const hash = new Hash({
114
+ algorithm: this.algorithm,
115
+ options: newOptions,
116
+ native: newNativeHash
117
+ });
118
+ return hash;
119
+ }
120
+
121
+ /**
122
+ * Returns the OpenSSL version string
123
+ * @since v1.0.0
124
+ */
125
+ getOpenSSLVersion() {
126
+ return this.native.getOpenSSLVersion();
127
+ }
128
+
129
+ // stream interface
130
+ _transform(chunk, encoding, callback) {
131
+ this.update(chunk, encoding);
132
+ callback();
133
+ }
134
+ _flush(callback) {
135
+ this.push(this.digest());
136
+ callback();
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Creates and returns a `Hash` object that can be used to generate hash digests
142
+ * using the given `algorithm`. Optional `options` argument controls stream
143
+ * behavior. For XOF hash functions such as `'shake256'`, the `outputLength` option
144
+ * can be used to specify the desired output length in bytes.
145
+ *
146
+ * The `algorithm` is dependent on the available algorithms supported by the
147
+ * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc.
148
+ * On recent releases of OpenSSL, `openssl list -digest-algorithms` will
149
+ * display the available digest algorithms.
150
+ *
151
+ * Example: generating the sha256 sum of a file
152
+ *
153
+ * ```js
154
+ * import crypto from 'react-native-quick-crypto';
155
+ *
156
+ * const hash = crypto.createHash('sha256').update('Test123').digest('hex');
157
+ * console.log('SHA-256 of "Test123":', hash);
158
+ * ```
159
+ * @since v1.0.0
160
+ * @param options `stream.transform` options
161
+ */
162
+ export function createHash(algorithm, options) {
163
+ // @ts-expect-error private constructor
164
+ return new Hash({
165
+ algorithm,
166
+ options
167
+ });
168
+ }
169
+
170
+ // Implementation for WebCrypto subtle.digest()
171
+
172
+ /**
173
+ * Asynchronous digest function for WebCrypto SubtleCrypto API
174
+ * @param algorithm The hash algorithm to use
175
+ * @param data The data to hash
176
+ * @returns Promise resolving to the hash digest as ArrayBuffer
177
+ */
178
+ export const asyncDigest = async (algorithm, data) => {
179
+ validateMaxBufferLength(data, 'data');
180
+ switch (algorithm.name) {
181
+ case 'SHA-1':
182
+ // Fall through
183
+ case 'SHA-256':
184
+ // Fall through
185
+ case 'SHA-384':
186
+ // Fall through
187
+ case 'SHA-512':
188
+ return internalDigest(algorithm, data);
189
+ }
190
+ throw lazyDOMException(`Unrecognized algorithm name: ${algorithm.name}`, 'NotSupportedError');
191
+ };
192
+ const internalDigest = (algorithm, data) => {
193
+ const normalizedHashName = normalizeHashName(algorithm.name);
194
+ const hash = createHash(normalizedHashName);
195
+ hash.update(bufferLikeToArrayBuffer(data));
196
+ const result = hash.digest();
197
+ const arrayBuffer = new ArrayBuffer(result.length);
198
+ const view = new Uint8Array(arrayBuffer);
199
+ view.set(result);
200
+ return arrayBuffer;
201
+ };
202
+ export const hashExports = {
203
+ createHash,
204
+ getHashes,
205
+ asyncDigest
206
+ };
207
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Stream","NitroModules","ab2str","binaryLikeToArrayBuffer","bufferLikeToArrayBuffer","validateMaxBufferLength","lazyDOMException","normalizeHashName","HashUtils","native","createHybridObject","getSupportedHashAlgorithms","getHashes","Hash","Transform","validate","args","algorithm","length","Error","options","outputLength","undefined","constructor","createHash","update","data","inputEncoding","defaultEncoding","digest","encoding","nativeDigest","Buffer","from","copy","newOptions","newNativeHash","hash","getOpenSSLVersion","_transform","chunk","callback","_flush","push","asyncDigest","name","internalDigest","normalizedHashName","result","arrayBuffer","ArrayBuffer","view","Uint8Array","set","hashExports"],"sourceRoot":"../../src","sources":["hash.ts"],"mappings":"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","ignoreList":[]}