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
@@ -0,0 +1,67 @@
1
+ ///
2
+ /// KeyObject.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/JSIConverter.hpp>)
11
+ #include <NitroModules/JSIConverter.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
16
+ #include <NitroModules/NitroDefines.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+
21
+
22
+
23
+
24
+
25
+ namespace margelo::nitro::crypto {
26
+
27
+ /**
28
+ * A struct which can be represented as a JavaScript object (KeyObject).
29
+ */
30
+ struct KeyObject {
31
+ public:
32
+ bool extractable SWIFT_PRIVATE;
33
+
34
+ public:
35
+ KeyObject() = default;
36
+ explicit KeyObject(bool extractable): extractable(extractable) {}
37
+ };
38
+
39
+ } // namespace margelo::nitro::crypto
40
+
41
+ namespace margelo::nitro {
42
+
43
+ // C++ KeyObject <> JS KeyObject (object)
44
+ template <>
45
+ struct JSIConverter<margelo::nitro::crypto::KeyObject> final {
46
+ static inline margelo::nitro::crypto::KeyObject fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
47
+ jsi::Object obj = arg.asObject(runtime);
48
+ return margelo::nitro::crypto::KeyObject(
49
+ JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, "extractable"))
50
+ );
51
+ }
52
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::crypto::KeyObject& arg) {
53
+ jsi::Object obj(runtime);
54
+ obj.setProperty(runtime, "extractable", JSIConverter<bool>::toJSI(runtime, arg.extractable));
55
+ return obj;
56
+ }
57
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
58
+ if (!value.isObject()) {
59
+ return false;
60
+ }
61
+ jsi::Object obj = value.getObject(runtime);
62
+ if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, "extractable"))) return false;
63
+ return true;
64
+ }
65
+ };
66
+
67
+ } // namespace margelo::nitro
@@ -2,12 +2,11 @@
2
2
  /// KeyType.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2024 Marc Rousavy @ Margelo
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
9
9
 
10
- #include <cmath>
11
10
  #if __has_include(<NitroModules/JSIConverter.hpp>)
12
11
  #include <NitroModules/JSIConverter.hpp>
13
12
  #else
@@ -34,27 +33,26 @@ namespace margelo::nitro::crypto {
34
33
 
35
34
  namespace margelo::nitro {
36
35
 
37
- using namespace margelo::nitro::crypto;
38
-
39
36
  // C++ KeyType <> JS KeyType (enum)
40
37
  template <>
41
- struct JSIConverter<KeyType> {
42
- static inline KeyType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
38
+ struct JSIConverter<margelo::nitro::crypto::KeyType> final {
39
+ static inline margelo::nitro::crypto::KeyType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
43
40
  int enumValue = JSIConverter<int>::fromJSI(runtime, arg);
44
- return static_cast<KeyType>(enumValue);
41
+ return static_cast<margelo::nitro::crypto::KeyType>(enumValue);
45
42
  }
46
- static inline jsi::Value toJSI(jsi::Runtime& runtime, KeyType arg) {
43
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::crypto::KeyType arg) {
47
44
  int enumValue = static_cast<int>(arg);
48
45
  return JSIConverter<int>::toJSI(runtime, enumValue);
49
46
  }
50
- static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
47
+ static inline bool canConvert(jsi::Runtime&, const jsi::Value& value) {
51
48
  if (!value.isNumber()) {
52
49
  return false;
53
50
  }
54
- double integer;
55
- double fraction = modf(value.getNumber(), &integer);
56
- if (fraction != 0.0) {
57
- // It is some kind of floating point number - our enums are ints.
51
+ double number = value.getNumber();
52
+ int integer = static_cast<int>(number);
53
+ if (number != integer) {
54
+ // The integer is not the same value as the double - we truncated floating points.
55
+ // Enums are all integers, so the input floating point number is obviously invalid.
58
56
  return false;
59
57
  }
60
58
  // Check if we are within the bounds of the enum.
@@ -2,7 +2,7 @@
2
2
  /// KeyUsage.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2024 Marc Rousavy @ Margelo
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -35,44 +35,54 @@ namespace margelo::nitro::crypto {
35
35
  VERIFY SWIFT_NAME(verify) = 3,
36
36
  DERIVEKEY SWIFT_NAME(derivekey) = 4,
37
37
  DERIVEBITS SWIFT_NAME(derivebits) = 5,
38
- WRAPKEY SWIFT_NAME(wrapkey) = 6,
39
- UNWRAPKEY SWIFT_NAME(unwrapkey) = 7,
38
+ ENCAPSULATEBITS SWIFT_NAME(encapsulatebits) = 6,
39
+ DECAPSULATEBITS SWIFT_NAME(decapsulatebits) = 7,
40
+ ENCAPSULATEKEY SWIFT_NAME(encapsulatekey) = 8,
41
+ DECAPSULATEKEY SWIFT_NAME(decapsulatekey) = 9,
42
+ WRAPKEY SWIFT_NAME(wrapkey) = 10,
43
+ UNWRAPKEY SWIFT_NAME(unwrapkey) = 11,
40
44
  } CLOSED_ENUM;
41
45
 
42
46
  } // namespace margelo::nitro::crypto
43
47
 
44
48
  namespace margelo::nitro {
45
49
 
46
- using namespace margelo::nitro::crypto;
47
-
48
50
  // C++ KeyUsage <> JS KeyUsage (union)
49
51
  template <>
50
- struct JSIConverter<KeyUsage> {
51
- static inline KeyUsage fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
52
+ struct JSIConverter<margelo::nitro::crypto::KeyUsage> final {
53
+ static inline margelo::nitro::crypto::KeyUsage fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
52
54
  std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
53
55
  switch (hashString(unionValue.c_str(), unionValue.size())) {
54
- case hashString("encrypt"): return KeyUsage::ENCRYPT;
55
- case hashString("decrypt"): return KeyUsage::DECRYPT;
56
- case hashString("sign"): return KeyUsage::SIGN;
57
- case hashString("verify"): return KeyUsage::VERIFY;
58
- case hashString("deriveKey"): return KeyUsage::DERIVEKEY;
59
- case hashString("deriveBits"): return KeyUsage::DERIVEBITS;
60
- case hashString("wrapKey"): return KeyUsage::WRAPKEY;
61
- case hashString("unwrapKey"): return KeyUsage::UNWRAPKEY;
56
+ case hashString("encrypt"): return margelo::nitro::crypto::KeyUsage::ENCRYPT;
57
+ case hashString("decrypt"): return margelo::nitro::crypto::KeyUsage::DECRYPT;
58
+ case hashString("sign"): return margelo::nitro::crypto::KeyUsage::SIGN;
59
+ case hashString("verify"): return margelo::nitro::crypto::KeyUsage::VERIFY;
60
+ case hashString("deriveKey"): return margelo::nitro::crypto::KeyUsage::DERIVEKEY;
61
+ case hashString("deriveBits"): return margelo::nitro::crypto::KeyUsage::DERIVEBITS;
62
+ case hashString("encapsulateBits"): return margelo::nitro::crypto::KeyUsage::ENCAPSULATEBITS;
63
+ case hashString("decapsulateBits"): return margelo::nitro::crypto::KeyUsage::DECAPSULATEBITS;
64
+ case hashString("encapsulateKey"): return margelo::nitro::crypto::KeyUsage::ENCAPSULATEKEY;
65
+ case hashString("decapsulateKey"): return margelo::nitro::crypto::KeyUsage::DECAPSULATEKEY;
66
+ case hashString("wrapKey"): return margelo::nitro::crypto::KeyUsage::WRAPKEY;
67
+ case hashString("unwrapKey"): return margelo::nitro::crypto::KeyUsage::UNWRAPKEY;
62
68
  default: [[unlikely]]
63
69
  throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum KeyUsage - invalid value!");
64
70
  }
65
71
  }
66
- static inline jsi::Value toJSI(jsi::Runtime& runtime, KeyUsage arg) {
72
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::crypto::KeyUsage arg) {
67
73
  switch (arg) {
68
- case KeyUsage::ENCRYPT: return JSIConverter<std::string>::toJSI(runtime, "encrypt");
69
- case KeyUsage::DECRYPT: return JSIConverter<std::string>::toJSI(runtime, "decrypt");
70
- case KeyUsage::SIGN: return JSIConverter<std::string>::toJSI(runtime, "sign");
71
- case KeyUsage::VERIFY: return JSIConverter<std::string>::toJSI(runtime, "verify");
72
- case KeyUsage::DERIVEKEY: return JSIConverter<std::string>::toJSI(runtime, "deriveKey");
73
- case KeyUsage::DERIVEBITS: return JSIConverter<std::string>::toJSI(runtime, "deriveBits");
74
- case KeyUsage::WRAPKEY: return JSIConverter<std::string>::toJSI(runtime, "wrapKey");
75
- case KeyUsage::UNWRAPKEY: return JSIConverter<std::string>::toJSI(runtime, "unwrapKey");
74
+ case margelo::nitro::crypto::KeyUsage::ENCRYPT: return JSIConverter<std::string>::toJSI(runtime, "encrypt");
75
+ case margelo::nitro::crypto::KeyUsage::DECRYPT: return JSIConverter<std::string>::toJSI(runtime, "decrypt");
76
+ case margelo::nitro::crypto::KeyUsage::SIGN: return JSIConverter<std::string>::toJSI(runtime, "sign");
77
+ case margelo::nitro::crypto::KeyUsage::VERIFY: return JSIConverter<std::string>::toJSI(runtime, "verify");
78
+ case margelo::nitro::crypto::KeyUsage::DERIVEKEY: return JSIConverter<std::string>::toJSI(runtime, "deriveKey");
79
+ case margelo::nitro::crypto::KeyUsage::DERIVEBITS: return JSIConverter<std::string>::toJSI(runtime, "deriveBits");
80
+ case margelo::nitro::crypto::KeyUsage::ENCAPSULATEBITS: return JSIConverter<std::string>::toJSI(runtime, "encapsulateBits");
81
+ case margelo::nitro::crypto::KeyUsage::DECAPSULATEBITS: return JSIConverter<std::string>::toJSI(runtime, "decapsulateBits");
82
+ case margelo::nitro::crypto::KeyUsage::ENCAPSULATEKEY: return JSIConverter<std::string>::toJSI(runtime, "encapsulateKey");
83
+ case margelo::nitro::crypto::KeyUsage::DECAPSULATEKEY: return JSIConverter<std::string>::toJSI(runtime, "decapsulateKey");
84
+ case margelo::nitro::crypto::KeyUsage::WRAPKEY: return JSIConverter<std::string>::toJSI(runtime, "wrapKey");
85
+ case margelo::nitro::crypto::KeyUsage::UNWRAPKEY: return JSIConverter<std::string>::toJSI(runtime, "unwrapKey");
76
86
  default: [[unlikely]]
77
87
  throw std::invalid_argument("Cannot convert KeyUsage to JS - invalid value: "
78
88
  + std::to_string(static_cast<int>(arg)) + "!");
@@ -90,6 +100,10 @@ namespace margelo::nitro {
90
100
  case hashString("verify"):
91
101
  case hashString("deriveKey"):
92
102
  case hashString("deriveBits"):
103
+ case hashString("encapsulateBits"):
104
+ case hashString("decapsulateBits"):
105
+ case hashString("encapsulateKey"):
106
+ case hashString("decapsulateKey"):
93
107
  case hashString("wrapKey"):
94
108
  case hashString("unwrapKey"):
95
109
  return true;
@@ -2,7 +2,7 @@
2
2
  /// NamedCurve.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2024 Marc Rousavy @ Margelo
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -38,26 +38,24 @@ namespace margelo::nitro::crypto {
38
38
 
39
39
  namespace margelo::nitro {
40
40
 
41
- using namespace margelo::nitro::crypto;
42
-
43
41
  // C++ NamedCurve <> JS NamedCurve (union)
44
42
  template <>
45
- struct JSIConverter<NamedCurve> {
46
- static inline NamedCurve fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
43
+ struct JSIConverter<margelo::nitro::crypto::NamedCurve> final {
44
+ static inline margelo::nitro::crypto::NamedCurve fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
47
45
  std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
48
46
  switch (hashString(unionValue.c_str(), unionValue.size())) {
49
- case hashString("P-256"): return NamedCurve::P_256;
50
- case hashString("P-384"): return NamedCurve::P_384;
51
- case hashString("P-521"): return NamedCurve::P_521;
47
+ case hashString("P-256"): return margelo::nitro::crypto::NamedCurve::P_256;
48
+ case hashString("P-384"): return margelo::nitro::crypto::NamedCurve::P_384;
49
+ case hashString("P-521"): return margelo::nitro::crypto::NamedCurve::P_521;
52
50
  default: [[unlikely]]
53
51
  throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum NamedCurve - invalid value!");
54
52
  }
55
53
  }
56
- static inline jsi::Value toJSI(jsi::Runtime& runtime, NamedCurve arg) {
54
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::crypto::NamedCurve arg) {
57
55
  switch (arg) {
58
- case NamedCurve::P_256: return JSIConverter<std::string>::toJSI(runtime, "P-256");
59
- case NamedCurve::P_384: return JSIConverter<std::string>::toJSI(runtime, "P-384");
60
- case NamedCurve::P_521: return JSIConverter<std::string>::toJSI(runtime, "P-521");
56
+ case margelo::nitro::crypto::NamedCurve::P_256: return JSIConverter<std::string>::toJSI(runtime, "P-256");
57
+ case margelo::nitro::crypto::NamedCurve::P_384: return JSIConverter<std::string>::toJSI(runtime, "P-384");
58
+ case margelo::nitro::crypto::NamedCurve::P_521: return JSIConverter<std::string>::toJSI(runtime, "P-521");
61
59
  default: [[unlikely]]
62
60
  throw std::invalid_argument("Cannot convert NamedCurve to JS - invalid value: "
63
61
  + std::to_string(static_cast<int>(arg)) + "!");
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "react-native-quick-crypto",
3
- "version": "1.0.0-beta.8",
3
+ "version": "1.0.0",
4
4
  "description": "A fast implementation of Node's `crypto` module written in C/C++ JSI",
5
- "type": "module",
6
5
  "main": "lib/commonjs/index",
7
6
  "module": "lib/module/index",
8
7
  "types": "lib/typescript/index.d.ts",
@@ -10,6 +9,7 @@
10
9
  "source": "src/index",
11
10
  "scripts": {
12
11
  "clean": "del-cli android/build lib",
12
+ "clean:deep": "bun run clean && del-cli node_modules",
13
13
  "tsc": "tsc --noEmit",
14
14
  "typescript": "tsc --noEmit",
15
15
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
@@ -33,9 +33,9 @@
33
33
  "deps",
34
34
  "nitrogen",
35
35
  "react-native.config.js",
36
- "app.plugin.js",
37
36
  "*.podspec",
38
37
  "README.md",
38
+ "app.plugin.js",
39
39
  "!**/__tests__",
40
40
  "!**/__fixtures__",
41
41
  "!**/__mocks__"
@@ -45,9 +45,13 @@
45
45
  "ios",
46
46
  "android",
47
47
  "jsi",
48
+ "nitro",
48
49
  "crypto",
50
+ "cryptography",
51
+ "cryptocurrency",
49
52
  "c++",
50
53
  "fast",
54
+ "quick",
51
55
  "web3"
52
56
  ],
53
57
  "repository": {
@@ -68,40 +72,41 @@
68
72
  "registry": "https://registry.npmjs.org/"
69
73
  },
70
74
  "dependencies": {
71
- "@craftzdog/react-native-buffer": "6.0.5",
75
+ "@craftzdog/react-native-buffer": "6.1.0",
72
76
  "events": "3.3.0",
73
- "react-native-nitro-modules": "0.18.2",
74
- "react-native-quick-base64": "2.1.2",
77
+ "expo-build-properties": "0.14.6",
78
+ "react-native-quick-base64": "2.2.2",
75
79
  "readable-stream": "4.5.2",
76
- "string_decoder": "1.3.0",
80
+ "safe-buffer": "^5.2.1",
77
81
  "util": "0.12.5"
78
82
  },
79
83
  "devDependencies": {
80
- "@eslint/compat": "^1.1.1",
81
- "@eslint/js": "9.16.0",
82
- "@release-it/bumper": "6.0.1",
83
84
  "@types/jest": "29.5.11",
84
- "@types/node": "22.0.0",
85
+ "@types/node": "24.3.0",
85
86
  "@types/react": "18.3.3",
86
- "@types/readable-stream": "4.0.11",
87
- "del-cli": "6.0.0",
88
- "eslint": "9.9.0",
89
- "eslint-plugin-react-native": "^4.1.0",
87
+ "@types/readable-stream": "4.0.18",
88
+ "del-cli": "7.0.0",
89
+ "expo": "^54.0.25",
90
90
  "jest": "29.7.0",
91
- "nitro-codegen": "0.18.2",
92
- "prettier": "3.3.3",
93
- "react-native-builder-bob": "0.35.2",
94
- "release-it": "17.6.0",
95
- "typescript": "5.1.6",
96
- "typescript-eslint": "^8.1.0"
91
+ "nitro-codegen": "0.29.1",
92
+ "react-native-builder-bob": "0.40.15",
93
+ "react-native-nitro-modules": "0.29.1"
97
94
  },
98
95
  "peerDependencies": {
99
96
  "react": "*",
100
- "react-native": "*"
97
+ "react-native": "*",
98
+ "react-native-nitro-modules": ">=0.29.1",
99
+ "expo": ">=48.0.0"
100
+ },
101
+ "peerDependenciesMeta": {
102
+ "expo": {
103
+ "optional": true
104
+ }
101
105
  },
102
106
  "release-it": {
103
107
  "npm": {
104
- "publish": true
108
+ "publish": true,
109
+ "skipChecks": true
105
110
  },
106
111
  "git": false,
107
112
  "github": {
package/src/blake3.ts ADDED
@@ -0,0 +1,123 @@
1
+ import { NitroModules } from 'react-native-nitro-modules';
2
+ import { Buffer } from '@craftzdog/react-native-buffer';
3
+ import type { Blake3 as NativeBlake3 } from './specs/blake3.nitro';
4
+ import type { BinaryLike, Encoding } from './utils';
5
+ import { binaryLikeToArrayBuffer, ab2str } from './utils';
6
+
7
+ const BLAKE3_KEY_LEN = 32;
8
+ const BLAKE3_OUT_LEN = 32;
9
+
10
+ export interface Blake3Options {
11
+ dkLen?: number;
12
+ key?: Uint8Array;
13
+ context?: string;
14
+ }
15
+
16
+ export class Blake3 {
17
+ private native: NativeBlake3;
18
+ private mode: 'hash' | 'keyed' | 'deriveKey';
19
+ private keyData?: Uint8Array;
20
+ private contextData?: string;
21
+
22
+ constructor(opts?: Blake3Options) {
23
+ this.native = NitroModules.createHybridObject<NativeBlake3>('Blake3');
24
+
25
+ if (opts?.key && opts?.context) {
26
+ throw new Error(
27
+ 'BLAKE3: cannot use both key and context options together',
28
+ );
29
+ }
30
+
31
+ if (opts?.key) {
32
+ if (opts.key.length !== BLAKE3_KEY_LEN) {
33
+ throw new Error(`BLAKE3: key must be exactly ${BLAKE3_KEY_LEN} bytes`);
34
+ }
35
+ this.mode = 'keyed';
36
+ this.keyData = opts.key;
37
+ this.native.initKeyed(opts.key.buffer as ArrayBuffer);
38
+ } else if (opts?.context !== undefined) {
39
+ if (typeof opts.context !== 'string' || opts.context.length === 0) {
40
+ throw new Error('BLAKE3: context must be a non-empty string');
41
+ }
42
+ this.mode = 'deriveKey';
43
+ this.contextData = opts.context;
44
+ this.native.initDeriveKey(opts.context);
45
+ } else {
46
+ this.mode = 'hash';
47
+ this.native.initHash();
48
+ }
49
+ }
50
+
51
+ update(data: BinaryLike, inputEncoding?: Encoding): this {
52
+ const buffer = binaryLikeToArrayBuffer(data, inputEncoding ?? 'utf8');
53
+ this.native.update(buffer);
54
+ return this;
55
+ }
56
+
57
+ digest(): Buffer;
58
+ digest(encoding: Encoding): string;
59
+ digest(length: number): Buffer;
60
+ digest(encodingOrLength?: Encoding | number): Buffer | string {
61
+ let length: number | undefined;
62
+ let encoding: Encoding | undefined;
63
+
64
+ if (typeof encodingOrLength === 'number') {
65
+ length = encodingOrLength;
66
+ } else if (encodingOrLength) {
67
+ encoding = encodingOrLength;
68
+ }
69
+
70
+ const result = this.native.digest(length);
71
+
72
+ if (encoding && encoding !== 'buffer') {
73
+ return ab2str(result, encoding);
74
+ }
75
+
76
+ return Buffer.from(result);
77
+ }
78
+
79
+ digestLength(length: number): Buffer {
80
+ return Buffer.from(this.native.digest(length));
81
+ }
82
+
83
+ reset(): this {
84
+ this.native.reset();
85
+ return this;
86
+ }
87
+
88
+ copy(): Blake3 {
89
+ const copied = new Blake3();
90
+ // Replace the native with a copy
91
+ copied.native = this.native.copy() as NativeBlake3;
92
+ copied.mode = this.mode;
93
+ copied.keyData = this.keyData;
94
+ copied.contextData = this.contextData;
95
+ return copied;
96
+ }
97
+
98
+ static getVersion(): string {
99
+ const native = NitroModules.createHybridObject<NativeBlake3>('Blake3');
100
+ native.initHash();
101
+ return native.getVersion();
102
+ }
103
+ }
104
+
105
+ export function createBlake3(opts?: Blake3Options): Blake3 {
106
+ return new Blake3(opts);
107
+ }
108
+
109
+ export function blake3(data: BinaryLike, opts?: Blake3Options): Uint8Array {
110
+ const hasher = new Blake3(opts);
111
+ hasher.update(data);
112
+ const length = opts?.dkLen ?? BLAKE3_OUT_LEN;
113
+ const result = hasher.digestLength(length);
114
+ return new Uint8Array(result);
115
+ }
116
+
117
+ blake3.create = createBlake3;
118
+
119
+ export const blake3Exports = {
120
+ Blake3,
121
+ createBlake3,
122
+ blake3,
123
+ };