react-native-quick-crypto 1.0.0-beta.9 → 1.0.1

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 (526) hide show
  1. package/QuickCrypto.podspec +156 -8
  2. package/README.md +14 -27
  3. package/android/CMakeLists.txt +64 -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 +323 -0
  18. package/cpp/cipher/HybridCipher.hpp +68 -0
  19. package/cpp/cipher/HybridCipherFactory.hpp +105 -0
  20. package/cpp/cipher/HybridRsaCipher.cpp +367 -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 +757 -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/mldsa/HybridMlDsaKeyPair.cpp +264 -0
  40. package/cpp/mldsa/HybridMlDsaKeyPair.hpp +47 -0
  41. package/cpp/pbkdf2/HybridPbkdf2.cpp +34 -55
  42. package/cpp/pbkdf2/HybridPbkdf2.hpp +5 -16
  43. package/cpp/random/HybridRandom.cpp +6 -17
  44. package/cpp/random/HybridRandom.hpp +5 -6
  45. package/cpp/rsa/HybridRsaKeyPair.cpp +154 -0
  46. package/cpp/rsa/HybridRsaKeyPair.hpp +43 -0
  47. package/cpp/sign/HybridSignHandle.cpp +266 -0
  48. package/cpp/sign/HybridSignHandle.hpp +36 -0
  49. package/cpp/sign/HybridVerifyHandle.cpp +227 -0
  50. package/cpp/sign/HybridVerifyHandle.hpp +36 -0
  51. package/cpp/sign/SignUtils.hpp +108 -0
  52. package/cpp/utils/Macros.hpp +68 -0
  53. package/cpp/utils/Utils.hpp +43 -2
  54. package/cpp/utils/base64.h +309 -0
  55. package/deps/blake3/.cargo/config.toml +2 -0
  56. package/deps/blake3/.git-blame-ignore-revs +2 -0
  57. package/deps/blake3/.github/workflows/build_b3sum.py +38 -0
  58. package/deps/blake3/.github/workflows/ci.yml +491 -0
  59. package/deps/blake3/.github/workflows/tag.yml +43 -0
  60. package/deps/blake3/.github/workflows/upload_github_release_asset.py +73 -0
  61. package/deps/blake3/CONTRIBUTING.md +31 -0
  62. package/deps/blake3/Cargo.toml +135 -0
  63. package/deps/blake3/LICENSE_A2 +202 -0
  64. package/deps/blake3/LICENSE_A2LLVM +219 -0
  65. package/deps/blake3/LICENSE_CC0 +121 -0
  66. package/deps/blake3/README.md +229 -0
  67. package/deps/blake3/b3sum/Cargo.lock +513 -0
  68. package/deps/blake3/b3sum/Cargo.toml +26 -0
  69. package/deps/blake3/b3sum/README.md +72 -0
  70. package/deps/blake3/b3sum/src/main.rs +564 -0
  71. package/deps/blake3/b3sum/src/unit_tests.rs +235 -0
  72. package/deps/blake3/b3sum/tests/cli_tests.rs +680 -0
  73. package/deps/blake3/b3sum/what_does_check_do.md +176 -0
  74. package/deps/blake3/benches/bench.rs +623 -0
  75. package/deps/blake3/build.rs +389 -0
  76. package/deps/blake3/c/CMakeLists.txt +383 -0
  77. package/deps/blake3/c/CMakePresets.json +73 -0
  78. package/deps/blake3/c/Makefile.testing +82 -0
  79. package/deps/blake3/c/README.md +403 -0
  80. package/deps/blake3/c/blake3-config.cmake.in +14 -0
  81. package/deps/blake3/c/blake3.c +650 -0
  82. package/deps/blake3/c/blake3.h +86 -0
  83. package/deps/blake3/c/blake3_avx2.c +326 -0
  84. package/deps/blake3/c/blake3_avx2_x86-64_unix.S +1815 -0
  85. package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +1817 -0
  86. package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +1828 -0
  87. package/deps/blake3/c/blake3_avx512.c +1388 -0
  88. package/deps/blake3/c/blake3_avx512_x86-64_unix.S +4824 -0
  89. package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +2615 -0
  90. package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +2634 -0
  91. package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +32 -0
  92. package/deps/blake3/c/blake3_c_rust_bindings/README.md +4 -0
  93. package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +477 -0
  94. package/deps/blake3/c/blake3_c_rust_bindings/build.rs +253 -0
  95. package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +31 -0
  96. package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +333 -0
  97. package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +696 -0
  98. package/deps/blake3/c/blake3_dispatch.c +332 -0
  99. package/deps/blake3/c/blake3_impl.h +333 -0
  100. package/deps/blake3/c/blake3_neon.c +366 -0
  101. package/deps/blake3/c/blake3_portable.c +160 -0
  102. package/deps/blake3/c/blake3_sse2.c +566 -0
  103. package/deps/blake3/c/blake3_sse2_x86-64_unix.S +2291 -0
  104. package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +2332 -0
  105. package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +2350 -0
  106. package/deps/blake3/c/blake3_sse41.c +560 -0
  107. package/deps/blake3/c/blake3_sse41_x86-64_unix.S +2028 -0
  108. package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +2069 -0
  109. package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +2089 -0
  110. package/deps/blake3/c/blake3_tbb.cpp +37 -0
  111. package/deps/blake3/c/dependencies/CMakeLists.txt +3 -0
  112. package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +28 -0
  113. package/deps/blake3/c/example.c +36 -0
  114. package/deps/blake3/c/example_tbb.c +57 -0
  115. package/deps/blake3/c/libblake3.pc.in +12 -0
  116. package/deps/blake3/c/main.c +166 -0
  117. package/deps/blake3/c/test.py +97 -0
  118. package/deps/blake3/media/B3.svg +70 -0
  119. package/deps/blake3/media/BLAKE3.svg +85 -0
  120. package/deps/blake3/media/speed.svg +1474 -0
  121. package/deps/blake3/reference_impl/Cargo.toml +8 -0
  122. package/deps/blake3/reference_impl/README.md +14 -0
  123. package/deps/blake3/reference_impl/reference_impl.rs +374 -0
  124. package/deps/blake3/src/ffi_avx2.rs +65 -0
  125. package/deps/blake3/src/ffi_avx512.rs +169 -0
  126. package/deps/blake3/src/ffi_neon.rs +82 -0
  127. package/deps/blake3/src/ffi_sse2.rs +126 -0
  128. package/deps/blake3/src/ffi_sse41.rs +126 -0
  129. package/deps/blake3/src/guts.rs +60 -0
  130. package/deps/blake3/src/hazmat.rs +704 -0
  131. package/deps/blake3/src/io.rs +64 -0
  132. package/deps/blake3/src/join.rs +92 -0
  133. package/deps/blake3/src/lib.rs +1835 -0
  134. package/deps/blake3/src/platform.rs +587 -0
  135. package/deps/blake3/src/portable.rs +198 -0
  136. package/deps/blake3/src/rust_avx2.rs +474 -0
  137. package/deps/blake3/src/rust_sse2.rs +775 -0
  138. package/deps/blake3/src/rust_sse41.rs +766 -0
  139. package/deps/blake3/src/test.rs +1049 -0
  140. package/deps/blake3/src/traits.rs +227 -0
  141. package/deps/blake3/src/wasm32_simd.rs +794 -0
  142. package/deps/blake3/test_vectors/Cargo.toml +19 -0
  143. package/deps/blake3/test_vectors/cross_test.sh +25 -0
  144. package/deps/blake3/test_vectors/src/bin/generate.rs +4 -0
  145. package/deps/blake3/test_vectors/src/lib.rs +350 -0
  146. package/deps/blake3/test_vectors/test_vectors.json +217 -0
  147. package/deps/blake3/tools/compiler_version/Cargo.toml +7 -0
  148. package/deps/blake3/tools/compiler_version/build.rs +6 -0
  149. package/deps/blake3/tools/compiler_version/src/main.rs +27 -0
  150. package/deps/blake3/tools/instruction_set_support/Cargo.toml +6 -0
  151. package/deps/blake3/tools/instruction_set_support/src/main.rs +10 -0
  152. package/deps/blake3/tools/release.md +16 -0
  153. package/deps/fastpbkdf2/fastpbkdf2.c +5 -1
  154. package/deps/ncrypto/.bazelignore +4 -0
  155. package/deps/ncrypto/.bazelrc +2 -0
  156. package/deps/ncrypto/.bazelversion +1 -0
  157. package/deps/ncrypto/.clang-format +111 -0
  158. package/deps/ncrypto/.github/workflows/bazel.yml +58 -0
  159. package/deps/ncrypto/.github/workflows/linter.yml +38 -0
  160. package/deps/ncrypto/.github/workflows/macos.yml +43 -0
  161. package/deps/ncrypto/.github/workflows/ubuntu.yml +46 -0
  162. package/deps/ncrypto/.github/workflows/visual-studio.yml +49 -0
  163. package/deps/ncrypto/.python-version +1 -0
  164. package/deps/ncrypto/BUILD.bazel +36 -0
  165. package/deps/ncrypto/CMakeLists.txt +55 -0
  166. package/deps/ncrypto/LICENSE +21 -0
  167. package/deps/ncrypto/MODULE.bazel +1 -0
  168. package/deps/ncrypto/MODULE.bazel.lock +280 -0
  169. package/deps/ncrypto/README.md +18 -0
  170. package/deps/ncrypto/WORKSPACE +15 -0
  171. package/deps/ncrypto/cmake/CPM.cmake +1225 -0
  172. package/deps/ncrypto/cmake/ncrypto-flags.cmake +16 -0
  173. package/deps/ncrypto/include/dh-primes.h +67 -0
  174. package/deps/ncrypto/include/ncrypto.h +1897 -0
  175. package/deps/ncrypto/patches/0001-Expose-libdecrepit-so-NodeJS-can-use-it-for-ncrypto.patch +28 -0
  176. package/deps/ncrypto/pyproject.toml +38 -0
  177. package/deps/ncrypto/src/CMakeLists.txt +15 -0
  178. package/deps/ncrypto/src/engine.cpp +93 -0
  179. package/deps/ncrypto/src/ncrypto.cpp +5613 -0
  180. package/deps/ncrypto/tests/BUILD.bazel +9 -0
  181. package/deps/ncrypto/tests/CMakeLists.txt +7 -0
  182. package/deps/ncrypto/tests/basic.cpp +86 -0
  183. package/deps/ncrypto/tools/run-clang-format.sh +42 -0
  184. package/lib/commonjs/blake3.js +98 -0
  185. package/lib/commonjs/blake3.js.map +1 -0
  186. package/lib/commonjs/cipher.js +180 -0
  187. package/lib/commonjs/cipher.js.map +1 -0
  188. package/lib/commonjs/constants.js +32 -0
  189. package/lib/commonjs/constants.js.map +1 -0
  190. package/lib/commonjs/ec.js +480 -0
  191. package/lib/commonjs/ec.js.map +1 -0
  192. package/lib/commonjs/ed.js +214 -2
  193. package/lib/commonjs/ed.js.map +1 -1
  194. package/lib/commonjs/expo-plugin/@types.js +2 -0
  195. package/lib/commonjs/expo-plugin/@types.js.map +1 -0
  196. package/lib/commonjs/expo-plugin/withRNQC.js +25 -0
  197. package/lib/commonjs/expo-plugin/withRNQC.js.map +1 -0
  198. package/lib/commonjs/expo-plugin/withSodiumAndroid.js +25 -0
  199. package/lib/commonjs/expo-plugin/withSodiumAndroid.js.map +1 -0
  200. package/lib/commonjs/expo-plugin/withSodiumIos.js +26 -0
  201. package/lib/commonjs/expo-plugin/withSodiumIos.js.map +1 -0
  202. package/lib/commonjs/expo-plugin/withXCode.js +51 -0
  203. package/lib/commonjs/expo-plugin/withXCode.js.map +1 -0
  204. package/lib/commonjs/hash.js +215 -0
  205. package/lib/commonjs/hash.js.map +1 -0
  206. package/lib/commonjs/hmac.js +109 -0
  207. package/lib/commonjs/hmac.js.map +1 -0
  208. package/lib/commonjs/index.js +102 -24
  209. package/lib/commonjs/index.js.map +1 -1
  210. package/lib/commonjs/keys/classes.js +115 -52
  211. package/lib/commonjs/keys/classes.js.map +1 -1
  212. package/lib/commonjs/keys/generateKeyPair.js +141 -144
  213. package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
  214. package/lib/commonjs/keys/index.js +229 -0
  215. package/lib/commonjs/keys/index.js.map +1 -1
  216. package/lib/commonjs/keys/publicCipher.js +152 -0
  217. package/lib/commonjs/keys/publicCipher.js.map +1 -0
  218. package/lib/commonjs/keys/signVerify.js +178 -39
  219. package/lib/commonjs/keys/signVerify.js.map +1 -1
  220. package/lib/commonjs/keys/utils.js +18 -13
  221. package/lib/commonjs/keys/utils.js.map +1 -1
  222. package/lib/commonjs/mldsa.js +69 -0
  223. package/lib/commonjs/mldsa.js.map +1 -0
  224. package/lib/commonjs/pbkdf2.js.map +1 -1
  225. package/lib/commonjs/random.js +6 -0
  226. package/lib/commonjs/random.js.map +1 -1
  227. package/lib/commonjs/rsa.js +202 -0
  228. package/lib/commonjs/rsa.js.map +1 -0
  229. package/lib/commonjs/specs/blake3.nitro.js +6 -0
  230. package/lib/commonjs/specs/blake3.nitro.js.map +1 -0
  231. package/lib/commonjs/specs/cipher.nitro.js +6 -0
  232. package/lib/commonjs/specs/cipher.nitro.js.map +1 -0
  233. package/lib/commonjs/specs/ecKeyPair.nitro.js +6 -0
  234. package/lib/commonjs/specs/ecKeyPair.nitro.js.map +1 -0
  235. package/lib/commonjs/specs/hash.nitro.js +6 -0
  236. package/lib/commonjs/specs/hash.nitro.js.map +1 -0
  237. package/lib/commonjs/specs/hmac.nitro.js +6 -0
  238. package/lib/commonjs/specs/hmac.nitro.js.map +1 -0
  239. package/lib/commonjs/specs/mlDsaKeyPair.nitro.js +6 -0
  240. package/lib/commonjs/specs/mlDsaKeyPair.nitro.js.map +1 -0
  241. package/lib/commonjs/specs/rsaCipher.nitro.js +6 -0
  242. package/lib/commonjs/specs/rsaCipher.nitro.js.map +1 -0
  243. package/lib/commonjs/specs/rsaKeyPair.nitro.js +6 -0
  244. package/lib/commonjs/specs/rsaKeyPair.nitro.js.map +1 -0
  245. package/lib/commonjs/specs/sign.nitro.js +6 -0
  246. package/lib/commonjs/specs/sign.nitro.js.map +1 -0
  247. package/lib/commonjs/subtle.js +1092 -0
  248. package/lib/commonjs/subtle.js.map +1 -0
  249. package/lib/commonjs/utils/cipher.js +64 -0
  250. package/lib/commonjs/utils/cipher.js.map +1 -0
  251. package/lib/commonjs/utils/conversion.js +44 -5
  252. package/lib/commonjs/utils/conversion.js.map +1 -1
  253. package/lib/commonjs/utils/hashnames.js +2 -1
  254. package/lib/commonjs/utils/hashnames.js.map +1 -1
  255. package/lib/commonjs/utils/index.js +11 -0
  256. package/lib/commonjs/utils/index.js.map +1 -1
  257. package/lib/commonjs/utils/noble.js +82 -0
  258. package/lib/commonjs/utils/noble.js.map +1 -0
  259. package/lib/commonjs/utils/types.js +32 -17
  260. package/lib/commonjs/utils/types.js.map +1 -1
  261. package/lib/commonjs/utils/validation.js +74 -1
  262. package/lib/commonjs/utils/validation.js.map +1 -1
  263. package/lib/module/blake3.js +90 -0
  264. package/lib/module/blake3.js.map +1 -0
  265. package/lib/module/cipher.js +173 -0
  266. package/lib/module/cipher.js.map +1 -0
  267. package/lib/module/constants.js +28 -0
  268. package/lib/module/constants.js.map +1 -0
  269. package/lib/module/ec.js +470 -0
  270. package/lib/module/ec.js.map +1 -0
  271. package/lib/module/ed.js +212 -3
  272. package/lib/module/ed.js.map +1 -1
  273. package/lib/module/expo-plugin/@types.js +2 -0
  274. package/lib/module/expo-plugin/@types.js.map +1 -0
  275. package/lib/module/expo-plugin/withRNQC.js +21 -0
  276. package/lib/module/expo-plugin/withRNQC.js.map +1 -0
  277. package/lib/module/expo-plugin/withSodiumAndroid.js +20 -0
  278. package/lib/module/expo-plugin/withSodiumAndroid.js.map +1 -0
  279. package/lib/module/expo-plugin/withSodiumIos.js +20 -0
  280. package/lib/module/expo-plugin/withSodiumIos.js.map +1 -0
  281. package/lib/module/expo-plugin/withXCode.js +46 -0
  282. package/lib/module/expo-plugin/withXCode.js.map +1 -0
  283. package/lib/module/hash.js +207 -0
  284. package/lib/module/hash.js.map +1 -0
  285. package/lib/module/hmac.js +104 -0
  286. package/lib/module/hmac.js.map +1 -0
  287. package/lib/module/index.js +21 -21
  288. package/lib/module/index.js.map +1 -1
  289. package/lib/module/keys/classes.js +112 -49
  290. package/lib/module/keys/classes.js.map +1 -1
  291. package/lib/module/keys/generateKeyPair.js +134 -143
  292. package/lib/module/keys/generateKeyPair.js.map +1 -1
  293. package/lib/module/keys/index.js +161 -22
  294. package/lib/module/keys/index.js.map +1 -1
  295. package/lib/module/keys/publicCipher.js +145 -0
  296. package/lib/module/keys/publicCipher.js.map +1 -0
  297. package/lib/module/keys/signVerify.js +170 -39
  298. package/lib/module/keys/signVerify.js.map +1 -1
  299. package/lib/module/keys/utils.js +16 -12
  300. package/lib/module/keys/utils.js.map +1 -1
  301. package/lib/module/mldsa.js +63 -0
  302. package/lib/module/mldsa.js.map +1 -0
  303. package/lib/module/pbkdf2.js.map +1 -1
  304. package/lib/module/random.js +6 -0
  305. package/lib/module/random.js.map +1 -1
  306. package/lib/module/rsa.js +194 -0
  307. package/lib/module/rsa.js.map +1 -0
  308. package/lib/module/specs/blake3.nitro.js +4 -0
  309. package/lib/module/specs/blake3.nitro.js.map +1 -0
  310. package/lib/module/specs/cipher.nitro.js +4 -0
  311. package/lib/module/specs/cipher.nitro.js.map +1 -0
  312. package/lib/module/specs/ecKeyPair.nitro.js +4 -0
  313. package/lib/module/specs/ecKeyPair.nitro.js.map +1 -0
  314. package/lib/module/specs/hash.nitro.js +4 -0
  315. package/lib/module/specs/hash.nitro.js.map +1 -0
  316. package/lib/module/specs/hmac.nitro.js +4 -0
  317. package/lib/module/specs/hmac.nitro.js.map +1 -0
  318. package/lib/module/specs/mlDsaKeyPair.nitro.js +4 -0
  319. package/lib/module/specs/mlDsaKeyPair.nitro.js.map +1 -0
  320. package/lib/module/specs/rsaCipher.nitro.js +4 -0
  321. package/lib/module/specs/rsaCipher.nitro.js.map +1 -0
  322. package/lib/module/specs/rsaKeyPair.nitro.js +4 -0
  323. package/lib/module/specs/rsaKeyPair.nitro.js.map +1 -0
  324. package/lib/module/specs/sign.nitro.js +4 -0
  325. package/lib/module/specs/sign.nitro.js.map +1 -0
  326. package/lib/module/subtle.js +1087 -0
  327. package/lib/module/subtle.js.map +1 -0
  328. package/lib/module/utils/cipher.js +56 -0
  329. package/lib/module/utils/cipher.js.map +1 -0
  330. package/lib/module/utils/conversion.js +26 -5
  331. package/lib/module/utils/conversion.js.map +1 -1
  332. package/lib/module/utils/hashnames.js +2 -1
  333. package/lib/module/utils/hashnames.js.map +1 -1
  334. package/lib/module/utils/index.js +1 -0
  335. package/lib/module/utils/index.js.map +1 -1
  336. package/lib/module/utils/noble.js +76 -0
  337. package/lib/module/utils/noble.js.map +1 -0
  338. package/lib/module/utils/types.js +32 -17
  339. package/lib/module/utils/types.js.map +1 -1
  340. package/lib/module/utils/validation.js +69 -1
  341. package/lib/module/utils/validation.js.map +1 -1
  342. package/lib/tsconfig.tsbuildinfo +1 -1
  343. package/lib/typescript/blake3.d.ts +33 -0
  344. package/lib/typescript/blake3.d.ts.map +1 -0
  345. package/lib/typescript/cipher.d.ts +60 -0
  346. package/lib/typescript/cipher.d.ts.map +1 -0
  347. package/lib/typescript/constants.d.ts +21 -0
  348. package/lib/typescript/constants.d.ts.map +1 -0
  349. package/lib/typescript/ec.d.ts +22 -0
  350. package/lib/typescript/ec.d.ts.map +1 -0
  351. package/lib/typescript/ed.d.ts +28 -1
  352. package/lib/typescript/ed.d.ts.map +1 -1
  353. package/lib/typescript/expo-plugin/@types.d.ts +8 -0
  354. package/lib/typescript/expo-plugin/@types.d.ts.map +1 -0
  355. package/lib/typescript/expo-plugin/withRNQC.d.ts +4 -0
  356. package/lib/typescript/expo-plugin/withRNQC.d.ts.map +1 -0
  357. package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts +4 -0
  358. package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts.map +1 -0
  359. package/lib/typescript/expo-plugin/withSodiumIos.d.ts +4 -0
  360. package/lib/typescript/expo-plugin/withSodiumIos.d.ts.map +1 -0
  361. package/lib/typescript/expo-plugin/withXCode.d.ts +9 -0
  362. package/lib/typescript/expo-plugin/withXCode.d.ts.map +1 -0
  363. package/lib/typescript/hash.d.ts +122 -0
  364. package/lib/typescript/hash.d.ts.map +1 -0
  365. package/lib/typescript/hmac.d.ts +66 -0
  366. package/lib/typescript/hmac.d.ts.map +1 -0
  367. package/lib/typescript/index.d.ts +102 -10
  368. package/lib/typescript/index.d.ts.map +1 -1
  369. package/lib/typescript/keys/classes.d.ts +52 -8
  370. package/lib/typescript/keys/classes.d.ts.map +1 -1
  371. package/lib/typescript/keys/generateKeyPair.d.ts +5 -0
  372. package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
  373. package/lib/typescript/keys/index.d.ts +22 -2
  374. package/lib/typescript/keys/index.d.ts.map +1 -1
  375. package/lib/typescript/keys/publicCipher.d.ts +20 -0
  376. package/lib/typescript/keys/publicCipher.d.ts.map +1 -0
  377. package/lib/typescript/keys/signVerify.d.ts +28 -0
  378. package/lib/typescript/keys/signVerify.d.ts.map +1 -1
  379. package/lib/typescript/keys/utils.d.ts +3 -1
  380. package/lib/typescript/keys/utils.d.ts.map +1 -1
  381. package/lib/typescript/mldsa.d.ts +18 -0
  382. package/lib/typescript/mldsa.d.ts.map +1 -0
  383. package/lib/typescript/pbkdf2.d.ts +1 -1
  384. package/lib/typescript/pbkdf2.d.ts.map +1 -1
  385. package/lib/typescript/random.d.ts +6 -0
  386. package/lib/typescript/random.d.ts.map +1 -1
  387. package/lib/typescript/rsa.d.ts +19 -0
  388. package/lib/typescript/rsa.d.ts.map +1 -0
  389. package/lib/typescript/specs/blake3.nitro.d.ts +15 -0
  390. package/lib/typescript/specs/blake3.nitro.d.ts.map +1 -0
  391. package/lib/typescript/specs/cipher.nitro.d.ts +29 -0
  392. package/lib/typescript/specs/cipher.nitro.d.ts.map +1 -0
  393. package/lib/typescript/specs/ecKeyPair.nitro.d.ts +20 -0
  394. package/lib/typescript/specs/ecKeyPair.nitro.d.ts.map +1 -0
  395. package/lib/typescript/specs/edKeyPair.nitro.d.ts +1 -0
  396. package/lib/typescript/specs/edKeyPair.nitro.d.ts.map +1 -1
  397. package/lib/typescript/specs/hash.nitro.d.ts +13 -0
  398. package/lib/typescript/specs/hash.nitro.d.ts.map +1 -0
  399. package/lib/typescript/specs/hmac.nitro.d.ts +10 -0
  400. package/lib/typescript/specs/hmac.nitro.d.ts.map +1 -0
  401. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +1 -1
  402. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -1
  403. package/lib/typescript/specs/mlDsaKeyPair.nitro.d.ts +16 -0
  404. package/lib/typescript/specs/mlDsaKeyPair.nitro.d.ts.map +1 -0
  405. package/lib/typescript/specs/rsaCipher.nitro.d.ts +44 -0
  406. package/lib/typescript/specs/rsaCipher.nitro.d.ts.map +1 -0
  407. package/lib/typescript/specs/rsaKeyPair.nitro.d.ts +20 -0
  408. package/lib/typescript/specs/rsaKeyPair.nitro.d.ts.map +1 -0
  409. package/lib/typescript/specs/sign.nitro.d.ts +19 -0
  410. package/lib/typescript/specs/sign.nitro.d.ts.map +1 -0
  411. package/lib/typescript/subtle.d.ts +17 -0
  412. package/lib/typescript/subtle.d.ts.map +1 -0
  413. package/lib/typescript/utils/cipher.d.ts +7 -0
  414. package/lib/typescript/utils/cipher.d.ts.map +1 -0
  415. package/lib/typescript/utils/conversion.d.ts +1 -0
  416. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  417. package/lib/typescript/utils/hashnames.d.ts +3 -1
  418. package/lib/typescript/utils/hashnames.d.ts.map +1 -1
  419. package/lib/typescript/utils/index.d.ts +1 -0
  420. package/lib/typescript/utils/index.d.ts.map +1 -1
  421. package/lib/typescript/utils/noble.d.ts +19 -0
  422. package/lib/typescript/utils/noble.d.ts.map +1 -0
  423. package/lib/typescript/utils/types.d.ts +129 -25
  424. package/lib/typescript/utils/types.d.ts.map +1 -1
  425. package/lib/typescript/utils/validation.d.ts +5 -0
  426. package/lib/typescript/utils/validation.d.ts.map +1 -1
  427. package/nitrogen/generated/.gitattributes +1 -0
  428. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +31 -1
  429. package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +1 -1
  430. package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +125 -1
  431. package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +1 -1
  432. package/nitrogen/generated/android/kotlin/com/margelo/nitro/crypto/QuickCryptoOnLoad.kt +35 -0
  433. package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +3 -1
  434. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +1 -1
  435. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +1 -1
  436. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +3 -3
  437. package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +121 -1
  438. package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +1 -1
  439. package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +116 -0
  440. package/nitrogen/generated/shared/c++/CipherArgs.hpp +86 -0
  441. package/nitrogen/generated/shared/c++/HybridBlake3Spec.cpp +28 -0
  442. package/nitrogen/generated/shared/c++/HybridBlake3Spec.hpp +76 -0
  443. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.cpp +21 -0
  444. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.hpp +67 -0
  445. package/nitrogen/generated/shared/c++/HybridCipherSpec.cpp +28 -0
  446. package/nitrogen/generated/shared/c++/HybridCipherSpec.hpp +76 -0
  447. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.cpp +29 -0
  448. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.hpp +77 -0
  449. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.cpp +2 -1
  450. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.hpp +5 -4
  451. package/nitrogen/generated/shared/c++/HybridHashSpec.cpp +26 -0
  452. package/nitrogen/generated/shared/c++/HybridHashSpec.hpp +75 -0
  453. package/nitrogen/generated/shared/c++/HybridHmacSpec.cpp +23 -0
  454. package/nitrogen/generated/shared/c++/HybridHmacSpec.hpp +66 -0
  455. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +1 -1
  456. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +8 -8
  457. package/nitrogen/generated/shared/c++/HybridMlDsaKeyPairSpec.cpp +29 -0
  458. package/nitrogen/generated/shared/c++/HybridMlDsaKeyPairSpec.hpp +73 -0
  459. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +1 -1
  460. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +3 -3
  461. package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +1 -1
  462. package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +3 -3
  463. package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.cpp +24 -0
  464. package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.hpp +72 -0
  465. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.cpp +29 -0
  466. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.hpp +77 -0
  467. package/nitrogen/generated/shared/c++/HybridSignHandleSpec.cpp +23 -0
  468. package/nitrogen/generated/shared/c++/HybridSignHandleSpec.hpp +71 -0
  469. package/nitrogen/generated/shared/c++/HybridVerifyHandleSpec.cpp +23 -0
  470. package/nitrogen/generated/shared/c++/HybridVerifyHandleSpec.hpp +71 -0
  471. package/nitrogen/generated/shared/c++/JWK.hpp +17 -18
  472. package/nitrogen/generated/shared/c++/JWKkty.hpp +12 -14
  473. package/nitrogen/generated/shared/c++/JWKuse.hpp +8 -10
  474. package/nitrogen/generated/shared/c++/KFormatType.hpp +14 -16
  475. package/nitrogen/generated/shared/c++/KeyDetail.hpp +6 -7
  476. package/nitrogen/generated/shared/c++/KeyEncoding.hpp +15 -17
  477. package/nitrogen/generated/shared/c++/KeyObject.hpp +67 -0
  478. package/nitrogen/generated/shared/c++/KeyType.hpp +11 -13
  479. package/nitrogen/generated/shared/c++/KeyUsage.hpp +38 -24
  480. package/nitrogen/generated/shared/c++/NamedCurve.hpp +10 -12
  481. package/package.json +31 -23
  482. package/src/blake3.ts +123 -0
  483. package/src/cipher.ts +335 -0
  484. package/src/constants.ts +32 -0
  485. package/src/ec.ts +657 -0
  486. package/src/ed.ts +297 -13
  487. package/src/expo-plugin/@types.ts +7 -0
  488. package/src/expo-plugin/withRNQC.ts +23 -0
  489. package/src/expo-plugin/withSodiumAndroid.ts +24 -0
  490. package/src/expo-plugin/withSodiumIos.ts +30 -0
  491. package/src/expo-plugin/withXCode.ts +55 -0
  492. package/src/hash.ts +274 -0
  493. package/src/hmac.ts +135 -0
  494. package/src/index.ts +20 -20
  495. package/src/keys/classes.ts +157 -55
  496. package/src/keys/generateKeyPair.ts +177 -134
  497. package/src/keys/index.ts +226 -14
  498. package/src/keys/publicCipher.ts +229 -0
  499. package/src/keys/signVerify.ts +239 -39
  500. package/src/keys/utils.ts +24 -18
  501. package/src/mldsa.ts +125 -0
  502. package/src/pbkdf2.ts +1 -1
  503. package/src/random.ts +7 -0
  504. package/src/rsa.ts +310 -0
  505. package/src/specs/blake3.nitro.ts +12 -0
  506. package/src/specs/cipher.nitro.ts +25 -0
  507. package/src/specs/ecKeyPair.nitro.ts +38 -0
  508. package/src/specs/edKeyPair.nitro.ts +2 -0
  509. package/src/specs/hash.nitro.ts +10 -0
  510. package/src/specs/hmac.nitro.ts +7 -0
  511. package/src/specs/keyObjectHandle.nitro.ts +1 -1
  512. package/src/specs/mlDsaKeyPair.nitro.ts +29 -0
  513. package/src/specs/rsaCipher.nitro.ts +65 -0
  514. package/src/specs/rsaKeyPair.nitro.ts +33 -0
  515. package/src/specs/sign.nitro.ts +31 -0
  516. package/src/subtle.ts +1576 -0
  517. package/src/utils/cipher.ts +60 -0
  518. package/src/utils/conversion.ts +33 -4
  519. package/src/utils/hashnames.ts +4 -2
  520. package/src/utils/index.ts +1 -0
  521. package/src/utils/noble.ts +85 -0
  522. package/src/utils/types.ts +219 -31
  523. package/src/utils/validation.ts +96 -1
  524. package/lib/module/package.json +0 -1
  525. package/nitrogen/generated/android/QuickCryptoOnLoad.kt +0 -1
  526. package/nitrogen/generated/shared/c++/CFRGKeyPairType.hpp +0 -86
@@ -2,12 +2,11 @@
2
2
  /// KFormatType.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
@@ -25,36 +24,35 @@ namespace margelo::nitro::crypto {
25
24
  * An enum which can be represented as a JavaScript enum (KFormatType).
26
25
  */
27
26
  enum class KFormatType {
28
- KKEYFORMATDER SWIFT_NAME(kkeyformatder) = 0,
29
- KKEYFORMATPEM SWIFT_NAME(kkeyformatpem) = 1,
30
- KKEYFORMATJWK SWIFT_NAME(kkeyformatjwk) = 2,
27
+ DER SWIFT_NAME(der) = 0,
28
+ PEM SWIFT_NAME(pem) = 1,
29
+ JWK SWIFT_NAME(jwk) = 2,
31
30
  } CLOSED_ENUM;
32
31
 
33
32
  } // namespace margelo::nitro::crypto
34
33
 
35
34
  namespace margelo::nitro {
36
35
 
37
- using namespace margelo::nitro::crypto;
38
-
39
36
  // C++ KFormatType <> JS KFormatType (enum)
40
37
  template <>
41
- struct JSIConverter<KFormatType> {
42
- static inline KFormatType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
38
+ struct JSIConverter<margelo::nitro::crypto::KFormatType> final {
39
+ static inline margelo::nitro::crypto::KFormatType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
43
40
  int enumValue = JSIConverter<int>::fromJSI(runtime, arg);
44
- return static_cast<KFormatType>(enumValue);
41
+ return static_cast<margelo::nitro::crypto::KFormatType>(enumValue);
45
42
  }
46
- static inline jsi::Value toJSI(jsi::Runtime& runtime, KFormatType arg) {
43
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::crypto::KFormatType 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
  /// KeyDetail.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
@@ -39,6 +39,7 @@ namespace margelo::nitro::crypto {
39
39
  std::optional<std::string> namedCurve SWIFT_PRIVATE;
40
40
 
41
41
  public:
42
+ KeyDetail() = default;
42
43
  explicit KeyDetail(std::optional<double> length, std::optional<double> publicExponent, std::optional<double> modulusLength, std::optional<std::string> hashAlgorithm, std::optional<std::string> mgf1HashAlgorithm, std::optional<double> saltLength, std::optional<std::string> namedCurve): length(length), publicExponent(publicExponent), modulusLength(modulusLength), hashAlgorithm(hashAlgorithm), mgf1HashAlgorithm(mgf1HashAlgorithm), saltLength(saltLength), namedCurve(namedCurve) {}
43
44
  };
44
45
 
@@ -46,14 +47,12 @@ namespace margelo::nitro::crypto {
46
47
 
47
48
  namespace margelo::nitro {
48
49
 
49
- using namespace margelo::nitro::crypto;
50
-
51
50
  // C++ KeyDetail <> JS KeyDetail (object)
52
51
  template <>
53
- struct JSIConverter<KeyDetail> {
54
- static inline KeyDetail fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
52
+ struct JSIConverter<margelo::nitro::crypto::KeyDetail> final {
53
+ static inline margelo::nitro::crypto::KeyDetail fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
55
54
  jsi::Object obj = arg.asObject(runtime);
56
- return KeyDetail(
55
+ return margelo::nitro::crypto::KeyDetail(
57
56
  JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "length")),
58
57
  JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "publicExponent")),
59
58
  JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "modulusLength")),
@@ -63,7 +62,7 @@ namespace margelo::nitro {
63
62
  JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, "namedCurve"))
64
63
  );
65
64
  }
66
- static inline jsi::Value toJSI(jsi::Runtime& runtime, const KeyDetail& arg) {
65
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::crypto::KeyDetail& arg) {
67
66
  jsi::Object obj(runtime);
68
67
  obj.setProperty(runtime, "length", JSIConverter<std::optional<double>>::toJSI(runtime, arg.length));
69
68
  obj.setProperty(runtime, "publicExponent", JSIConverter<std::optional<double>>::toJSI(runtime, arg.publicExponent));
@@ -2,12 +2,11 @@
2
2
  /// KeyEncoding.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
@@ -25,37 +24,36 @@ namespace margelo::nitro::crypto {
25
24
  * An enum which can be represented as a JavaScript enum (KeyEncoding).
26
25
  */
27
26
  enum class KeyEncoding {
28
- KKEYENCODINGPKCS1 SWIFT_NAME(kkeyencodingpkcs1) = 0,
29
- KKEYENCODINGPKCS8 SWIFT_NAME(kkeyencodingpkcs8) = 1,
30
- KKEYENCODINGSPKI SWIFT_NAME(kkeyencodingspki) = 2,
31
- KKEYENCODINGSEC1 SWIFT_NAME(kkeyencodingsec1) = 3,
27
+ PKCS1 SWIFT_NAME(pkcs1) = 0,
28
+ PKCS8 SWIFT_NAME(pkcs8) = 1,
29
+ SPKI SWIFT_NAME(spki) = 2,
30
+ SEC1 SWIFT_NAME(sec1) = 3,
32
31
  } CLOSED_ENUM;
33
32
 
34
33
  } // namespace margelo::nitro::crypto
35
34
 
36
35
  namespace margelo::nitro {
37
36
 
38
- using namespace margelo::nitro::crypto;
39
-
40
37
  // C++ KeyEncoding <> JS KeyEncoding (enum)
41
38
  template <>
42
- struct JSIConverter<KeyEncoding> {
43
- static inline KeyEncoding fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
39
+ struct JSIConverter<margelo::nitro::crypto::KeyEncoding> final {
40
+ static inline margelo::nitro::crypto::KeyEncoding fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
44
41
  int enumValue = JSIConverter<int>::fromJSI(runtime, arg);
45
- return static_cast<KeyEncoding>(enumValue);
42
+ return static_cast<margelo::nitro::crypto::KeyEncoding>(enumValue);
46
43
  }
47
- static inline jsi::Value toJSI(jsi::Runtime& runtime, KeyEncoding arg) {
44
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::crypto::KeyEncoding arg) {
48
45
  int enumValue = static_cast<int>(arg);
49
46
  return JSIConverter<int>::toJSI(runtime, enumValue);
50
47
  }
51
- static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
48
+ static inline bool canConvert(jsi::Runtime&, const jsi::Value& value) {
52
49
  if (!value.isNumber()) {
53
50
  return false;
54
51
  }
55
- double integer;
56
- double fraction = modf(value.getNumber(), &integer);
57
- if (fraction != 0.0) {
58
- // It is some kind of floating point number - our enums are ints.
52
+ double number = value.getNumber();
53
+ int integer = static_cast<int>(number);
54
+ if (number != integer) {
55
+ // The integer is not the same value as the double - we truncated floating points.
56
+ // Enums are all integers, so the input floating point number is obviously invalid.
59
57
  return false;
60
58
  }
61
59
  // Check if we are within the bounds of the enum.
@@ -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.9",
3
+ "version": "1.0.1",
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,41 +72,45 @@
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-quick-base64": "2.1.2",
77
+ "react-native-quick-base64": "2.2.2",
74
78
  "readable-stream": "4.5.2",
75
- "string_decoder": "1.3.0",
79
+ "safe-buffer": "^5.2.1",
76
80
  "util": "0.12.5"
77
81
  },
78
82
  "devDependencies": {
79
- "@eslint/compat": "^1.1.1",
80
- "@eslint/js": "9.16.0",
81
- "@release-it/bumper": "6.0.1",
82
83
  "@types/jest": "29.5.11",
83
- "@types/node": "22.0.0",
84
+ "@types/node": "24.3.0",
84
85
  "@types/react": "18.3.3",
85
- "@types/readable-stream": "4.0.11",
86
- "del-cli": "6.0.0",
87
- "eslint": "9.9.0",
88
- "eslint-plugin-react-native": "^4.1.0",
86
+ "@types/readable-stream": "4.0.18",
87
+ "del-cli": "7.0.0",
88
+ "expo": "^54.0.25",
89
+ "expo-build-properties": "^1.0.0",
89
90
  "jest": "29.7.0",
90
- "nitro-codegen": "0.18.2",
91
- "prettier": "3.3.3",
92
- "react-native-builder-bob": "0.35.2",
93
- "react-native-nitro-modules": "0.18.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
97
  "react-native": "*",
101
- "react-native-nitro-modules": "*"
98
+ "react-native-nitro-modules": ">=0.29.1",
99
+ "expo": ">=48.0.0",
100
+ "expo-build-properties": "*"
101
+ },
102
+ "peerDependenciesMeta": {
103
+ "expo": {
104
+ "optional": true
105
+ },
106
+ "expo-build-properties": {
107
+ "optional": true
108
+ }
102
109
  },
103
110
  "release-it": {
104
111
  "npm": {
105
- "publish": true
112
+ "publish": true,
113
+ "skipChecks": true
106
114
  },
107
115
  "git": false,
108
116
  "github": {