react-native-quick-crypto 1.0.0-beta.2 → 1.0.0-beta.21

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 (462) hide show
  1. package/QuickCrypto.podspec +143 -7
  2. package/README.md +12 -6
  3. package/android/CMakeLists.txt +82 -21
  4. package/android/build.gradle +47 -4
  5. package/android/src/main/cpp/cpp-adapter.cpp +3 -10
  6. package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +13 -10
  7. package/app.plugin.js +3 -0
  8. package/cpp/blake3/HybridBlake3.cpp +118 -0
  9. package/cpp/blake3/HybridBlake3.hpp +35 -0
  10. package/cpp/cipher/CCMCipher.cpp +199 -0
  11. package/cpp/cipher/CCMCipher.hpp +26 -0
  12. package/cpp/cipher/ChaCha20Cipher.cpp +97 -0
  13. package/cpp/cipher/ChaCha20Cipher.hpp +25 -0
  14. package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +170 -0
  15. package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +30 -0
  16. package/cpp/cipher/HybridCipher.cpp +322 -0
  17. package/cpp/cipher/HybridCipher.hpp +68 -0
  18. package/cpp/cipher/HybridCipherFactory.hpp +97 -0
  19. package/cpp/cipher/OCBCipher.cpp +55 -0
  20. package/cpp/cipher/OCBCipher.hpp +19 -0
  21. package/cpp/cipher/XSalsa20Cipher.cpp +61 -0
  22. package/cpp/cipher/XSalsa20Cipher.hpp +33 -0
  23. package/cpp/ec/HybridEcKeyPair.cpp +428 -0
  24. package/cpp/ec/HybridEcKeyPair.hpp +48 -0
  25. package/cpp/ed25519/HybridEdKeyPair.cpp +300 -0
  26. package/cpp/ed25519/HybridEdKeyPair.hpp +63 -0
  27. package/cpp/hash/HybridHash.cpp +185 -0
  28. package/cpp/hash/HybridHash.hpp +43 -0
  29. package/cpp/hmac/HybridHmac.cpp +95 -0
  30. package/cpp/hmac/HybridHmac.hpp +31 -0
  31. package/cpp/keys/HybridKeyObjectHandle.cpp +243 -0
  32. package/cpp/keys/HybridKeyObjectHandle.hpp +42 -0
  33. package/cpp/keys/KeyObjectData.cpp +226 -0
  34. package/cpp/keys/KeyObjectData.hpp +71 -0
  35. package/cpp/keys/node.h +5 -0
  36. package/cpp/pbkdf2/HybridPbkdf2.cpp +51 -0
  37. package/cpp/pbkdf2/HybridPbkdf2.hpp +24 -0
  38. package/cpp/random/HybridRandom.cpp +32 -18
  39. package/cpp/random/HybridRandom.hpp +18 -30
  40. package/cpp/rsa/HybridRsaKeyPair.cpp +154 -0
  41. package/cpp/rsa/HybridRsaKeyPair.hpp +43 -0
  42. package/cpp/utils/Macros.hpp +68 -0
  43. package/cpp/utils/Utils.hpp +53 -1
  44. package/deps/blake3/.cargo/config.toml +2 -0
  45. package/deps/blake3/.git-blame-ignore-revs +2 -0
  46. package/deps/blake3/.github/workflows/build_b3sum.py +38 -0
  47. package/deps/blake3/.github/workflows/ci.yml +491 -0
  48. package/deps/blake3/.github/workflows/tag.yml +43 -0
  49. package/deps/blake3/.github/workflows/upload_github_release_asset.py +73 -0
  50. package/deps/blake3/CONTRIBUTING.md +31 -0
  51. package/deps/blake3/Cargo.toml +135 -0
  52. package/deps/blake3/LICENSE_A2 +202 -0
  53. package/deps/blake3/LICENSE_A2LLVM +219 -0
  54. package/deps/blake3/LICENSE_CC0 +121 -0
  55. package/deps/blake3/README.md +229 -0
  56. package/deps/blake3/b3sum/Cargo.lock +513 -0
  57. package/deps/blake3/b3sum/Cargo.toml +26 -0
  58. package/deps/blake3/b3sum/README.md +72 -0
  59. package/deps/blake3/b3sum/src/main.rs +564 -0
  60. package/deps/blake3/b3sum/src/unit_tests.rs +235 -0
  61. package/deps/blake3/b3sum/tests/cli_tests.rs +680 -0
  62. package/deps/blake3/b3sum/what_does_check_do.md +176 -0
  63. package/deps/blake3/benches/bench.rs +623 -0
  64. package/deps/blake3/build.rs +389 -0
  65. package/deps/blake3/c/CMakeLists.txt +383 -0
  66. package/deps/blake3/c/CMakePresets.json +73 -0
  67. package/deps/blake3/c/Makefile.testing +82 -0
  68. package/deps/blake3/c/README.md +403 -0
  69. package/deps/blake3/c/blake3-config.cmake.in +14 -0
  70. package/deps/blake3/c/blake3.c +650 -0
  71. package/deps/blake3/c/blake3.h +86 -0
  72. package/deps/blake3/c/blake3_avx2.c +326 -0
  73. package/deps/blake3/c/blake3_avx2_x86-64_unix.S +1815 -0
  74. package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +1817 -0
  75. package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +1828 -0
  76. package/deps/blake3/c/blake3_avx512.c +1388 -0
  77. package/deps/blake3/c/blake3_avx512_x86-64_unix.S +4824 -0
  78. package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +2615 -0
  79. package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +2634 -0
  80. package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +32 -0
  81. package/deps/blake3/c/blake3_c_rust_bindings/README.md +4 -0
  82. package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +477 -0
  83. package/deps/blake3/c/blake3_c_rust_bindings/build.rs +253 -0
  84. package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +31 -0
  85. package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +333 -0
  86. package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +696 -0
  87. package/deps/blake3/c/blake3_dispatch.c +332 -0
  88. package/deps/blake3/c/blake3_impl.h +333 -0
  89. package/deps/blake3/c/blake3_neon.c +366 -0
  90. package/deps/blake3/c/blake3_portable.c +160 -0
  91. package/deps/blake3/c/blake3_sse2.c +566 -0
  92. package/deps/blake3/c/blake3_sse2_x86-64_unix.S +2291 -0
  93. package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +2332 -0
  94. package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +2350 -0
  95. package/deps/blake3/c/blake3_sse41.c +560 -0
  96. package/deps/blake3/c/blake3_sse41_x86-64_unix.S +2028 -0
  97. package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +2069 -0
  98. package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +2089 -0
  99. package/deps/blake3/c/blake3_tbb.cpp +37 -0
  100. package/deps/blake3/c/dependencies/CMakeLists.txt +3 -0
  101. package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +28 -0
  102. package/deps/blake3/c/example.c +36 -0
  103. package/deps/blake3/c/example_tbb.c +57 -0
  104. package/deps/blake3/c/libblake3.pc.in +12 -0
  105. package/deps/blake3/c/main.c +166 -0
  106. package/deps/blake3/c/test.py +97 -0
  107. package/deps/blake3/media/B3.svg +70 -0
  108. package/deps/blake3/media/BLAKE3.svg +85 -0
  109. package/deps/blake3/media/speed.svg +1474 -0
  110. package/deps/blake3/reference_impl/Cargo.toml +8 -0
  111. package/deps/blake3/reference_impl/README.md +14 -0
  112. package/deps/blake3/reference_impl/reference_impl.rs +374 -0
  113. package/deps/blake3/src/ffi_avx2.rs +65 -0
  114. package/deps/blake3/src/ffi_avx512.rs +169 -0
  115. package/deps/blake3/src/ffi_neon.rs +82 -0
  116. package/deps/blake3/src/ffi_sse2.rs +126 -0
  117. package/deps/blake3/src/ffi_sse41.rs +126 -0
  118. package/deps/blake3/src/guts.rs +60 -0
  119. package/deps/blake3/src/hazmat.rs +704 -0
  120. package/deps/blake3/src/io.rs +64 -0
  121. package/deps/blake3/src/join.rs +92 -0
  122. package/deps/blake3/src/lib.rs +1835 -0
  123. package/deps/blake3/src/platform.rs +587 -0
  124. package/deps/blake3/src/portable.rs +198 -0
  125. package/deps/blake3/src/rust_avx2.rs +474 -0
  126. package/deps/blake3/src/rust_sse2.rs +775 -0
  127. package/deps/blake3/src/rust_sse41.rs +766 -0
  128. package/deps/blake3/src/test.rs +1049 -0
  129. package/deps/blake3/src/traits.rs +227 -0
  130. package/deps/blake3/src/wasm32_simd.rs +794 -0
  131. package/deps/blake3/test_vectors/Cargo.toml +19 -0
  132. package/deps/blake3/test_vectors/cross_test.sh +25 -0
  133. package/deps/blake3/test_vectors/src/bin/generate.rs +4 -0
  134. package/deps/blake3/test_vectors/src/lib.rs +350 -0
  135. package/deps/blake3/test_vectors/test_vectors.json +217 -0
  136. package/deps/blake3/tools/compiler_version/Cargo.toml +7 -0
  137. package/deps/blake3/tools/compiler_version/build.rs +6 -0
  138. package/deps/blake3/tools/compiler_version/src/main.rs +27 -0
  139. package/deps/blake3/tools/instruction_set_support/Cargo.toml +6 -0
  140. package/deps/blake3/tools/instruction_set_support/src/main.rs +10 -0
  141. package/deps/blake3/tools/release.md +16 -0
  142. package/deps/fastpbkdf2/fastpbkdf2.c +356 -0
  143. package/deps/fastpbkdf2/fastpbkdf2.h +68 -0
  144. package/deps/ncrypto/ncrypto.cc +4679 -0
  145. package/deps/ncrypto/ncrypto.h +1625 -0
  146. package/lib/commonjs/blake3.js +98 -0
  147. package/lib/commonjs/blake3.js.map +1 -0
  148. package/lib/commonjs/cipher.js +180 -0
  149. package/lib/commonjs/cipher.js.map +1 -0
  150. package/lib/commonjs/ec.js +344 -0
  151. package/lib/commonjs/ec.js.map +1 -0
  152. package/lib/commonjs/ed.js +185 -0
  153. package/lib/commonjs/ed.js.map +1 -0
  154. package/lib/commonjs/expo-plugin/@types.js +2 -0
  155. package/lib/commonjs/expo-plugin/@types.js.map +1 -0
  156. package/lib/commonjs/expo-plugin/withRNQC.js +25 -0
  157. package/lib/commonjs/expo-plugin/withRNQC.js.map +1 -0
  158. package/lib/commonjs/expo-plugin/withSodiumAndroid.js +25 -0
  159. package/lib/commonjs/expo-plugin/withSodiumAndroid.js.map +1 -0
  160. package/lib/commonjs/expo-plugin/withSodiumIos.js +26 -0
  161. package/lib/commonjs/expo-plugin/withSodiumIos.js.map +1 -0
  162. package/lib/commonjs/expo-plugin/withXCode.js +51 -0
  163. package/lib/commonjs/expo-plugin/withXCode.js.map +1 -0
  164. package/lib/commonjs/hash.js +215 -0
  165. package/lib/commonjs/hash.js.map +1 -0
  166. package/lib/commonjs/hmac.js +109 -0
  167. package/lib/commonjs/hmac.js.map +1 -0
  168. package/lib/commonjs/index.js +152 -32
  169. package/lib/commonjs/index.js.map +1 -1
  170. package/lib/commonjs/keys/classes.js +250 -0
  171. package/lib/commonjs/keys/classes.js.map +1 -0
  172. package/lib/commonjs/keys/generateKeyPair.js +102 -0
  173. package/lib/commonjs/keys/generateKeyPair.js.map +1 -0
  174. package/lib/commonjs/keys/index.js +89 -0
  175. package/lib/commonjs/keys/index.js.map +1 -0
  176. package/lib/commonjs/keys/signVerify.js +41 -0
  177. package/lib/commonjs/keys/signVerify.js.map +1 -0
  178. package/lib/commonjs/keys/utils.js +123 -0
  179. package/lib/commonjs/keys/utils.js.map +1 -0
  180. package/lib/commonjs/pbkdf2.js +89 -0
  181. package/lib/commonjs/pbkdf2.js.map +1 -0
  182. package/lib/commonjs/random.js +9 -3
  183. package/lib/commonjs/random.js.map +1 -1
  184. package/lib/commonjs/rsa.js +129 -0
  185. package/lib/commonjs/rsa.js.map +1 -0
  186. package/lib/commonjs/specs/blake3.nitro.js +6 -0
  187. package/lib/commonjs/specs/blake3.nitro.js.map +1 -0
  188. package/lib/commonjs/specs/cipher.nitro.js +6 -0
  189. package/lib/commonjs/specs/cipher.nitro.js.map +1 -0
  190. package/lib/commonjs/specs/ecKeyPair.nitro.js +6 -0
  191. package/lib/commonjs/specs/ecKeyPair.nitro.js.map +1 -0
  192. package/lib/commonjs/specs/edKeyPair.nitro.js +6 -0
  193. package/lib/commonjs/specs/edKeyPair.nitro.js.map +1 -0
  194. package/lib/commonjs/specs/hash.nitro.js +6 -0
  195. package/lib/commonjs/specs/hash.nitro.js.map +1 -0
  196. package/lib/commonjs/specs/hmac.nitro.js +6 -0
  197. package/lib/commonjs/specs/hmac.nitro.js.map +1 -0
  198. package/lib/commonjs/specs/keyObjectHandle.nitro.js +6 -0
  199. package/lib/commonjs/specs/keyObjectHandle.nitro.js.map +1 -0
  200. package/lib/commonjs/specs/pbkdf2.nitro.js +6 -0
  201. package/lib/commonjs/specs/pbkdf2.nitro.js.map +1 -0
  202. package/lib/commonjs/specs/rsaKeyPair.nitro.js +6 -0
  203. package/lib/commonjs/specs/rsaKeyPair.nitro.js.map +1 -0
  204. package/lib/commonjs/subtle.js +365 -0
  205. package/lib/commonjs/subtle.js.map +1 -0
  206. package/lib/commonjs/utils/cipher.js +64 -0
  207. package/lib/commonjs/utils/cipher.js.map +1 -0
  208. package/lib/commonjs/utils/conversion.js +140 -6
  209. package/lib/commonjs/utils/conversion.js.map +1 -1
  210. package/lib/commonjs/utils/errors.js +14 -0
  211. package/lib/commonjs/utils/errors.js.map +1 -0
  212. package/lib/commonjs/utils/hashnames.js +91 -0
  213. package/lib/commonjs/utils/hashnames.js.map +1 -0
  214. package/lib/commonjs/utils/index.js +65 -5
  215. package/lib/commonjs/utils/index.js.map +1 -1
  216. package/lib/commonjs/utils/noble.js +82 -0
  217. package/lib/commonjs/utils/noble.js.map +1 -0
  218. package/lib/commonjs/utils/types.js +52 -0
  219. package/lib/commonjs/utils/types.js.map +1 -1
  220. package/lib/commonjs/utils/validation.js +98 -0
  221. package/lib/commonjs/utils/validation.js.map +1 -0
  222. package/lib/module/blake3.js +90 -0
  223. package/lib/module/blake3.js.map +1 -0
  224. package/lib/module/cipher.js +173 -0
  225. package/lib/module/cipher.js.map +1 -0
  226. package/lib/module/ec.js +336 -0
  227. package/lib/module/ec.js.map +1 -0
  228. package/lib/module/ed.js +178 -0
  229. package/lib/module/ed.js.map +1 -0
  230. package/lib/module/expo-plugin/@types.js +2 -0
  231. package/lib/module/expo-plugin/@types.js.map +1 -0
  232. package/lib/module/expo-plugin/withRNQC.js +21 -0
  233. package/lib/module/expo-plugin/withRNQC.js.map +1 -0
  234. package/lib/module/expo-plugin/withSodiumAndroid.js +20 -0
  235. package/lib/module/expo-plugin/withSodiumAndroid.js.map +1 -0
  236. package/lib/module/expo-plugin/withSodiumIos.js +20 -0
  237. package/lib/module/expo-plugin/withSodiumIos.js.map +1 -0
  238. package/lib/module/expo-plugin/withXCode.js +46 -0
  239. package/lib/module/expo-plugin/withXCode.js.map +1 -0
  240. package/lib/module/hash.js +207 -0
  241. package/lib/module/hash.js.map +1 -0
  242. package/lib/module/hmac.js +104 -0
  243. package/lib/module/hmac.js.map +1 -0
  244. package/lib/module/index.js +33 -29
  245. package/lib/module/index.js.map +1 -1
  246. package/lib/module/keys/classes.js +241 -0
  247. package/lib/module/keys/classes.js.map +1 -0
  248. package/lib/module/keys/generateKeyPair.js +96 -0
  249. package/lib/module/keys/generateKeyPair.js.map +1 -0
  250. package/lib/module/keys/index.js +32 -0
  251. package/lib/module/keys/index.js.map +1 -0
  252. package/lib/module/keys/signVerify.js +41 -0
  253. package/lib/module/keys/signVerify.js.map +1 -0
  254. package/lib/module/keys/utils.js +114 -0
  255. package/lib/module/keys/utils.js.map +1 -0
  256. package/lib/module/pbkdf2.js +83 -0
  257. package/lib/module/pbkdf2.js.map +1 -0
  258. package/lib/module/random.js +7 -1
  259. package/lib/module/random.js.map +1 -1
  260. package/lib/module/rsa.js +123 -0
  261. package/lib/module/rsa.js.map +1 -0
  262. package/lib/module/specs/blake3.nitro.js +4 -0
  263. package/lib/module/specs/blake3.nitro.js.map +1 -0
  264. package/lib/module/specs/cipher.nitro.js +4 -0
  265. package/lib/module/specs/cipher.nitro.js.map +1 -0
  266. package/lib/module/specs/ecKeyPair.nitro.js +4 -0
  267. package/lib/module/specs/ecKeyPair.nitro.js.map +1 -0
  268. package/lib/module/specs/edKeyPair.nitro.js +4 -0
  269. package/lib/module/specs/edKeyPair.nitro.js.map +1 -0
  270. package/lib/module/specs/hash.nitro.js +4 -0
  271. package/lib/module/specs/hash.nitro.js.map +1 -0
  272. package/lib/module/specs/hmac.nitro.js +4 -0
  273. package/lib/module/specs/hmac.nitro.js.map +1 -0
  274. package/lib/module/specs/keyObjectHandle.nitro.js +4 -0
  275. package/lib/module/specs/keyObjectHandle.nitro.js.map +1 -0
  276. package/lib/module/specs/pbkdf2.nitro.js +4 -0
  277. package/lib/module/specs/pbkdf2.nitro.js.map +1 -0
  278. package/lib/module/specs/rsaKeyPair.nitro.js +4 -0
  279. package/lib/module/specs/rsaKeyPair.nitro.js.map +1 -0
  280. package/lib/module/subtle.js +360 -0
  281. package/lib/module/subtle.js.map +1 -0
  282. package/lib/module/utils/cipher.js +56 -0
  283. package/lib/module/utils/cipher.js.map +1 -0
  284. package/lib/module/utils/conversion.js +120 -8
  285. package/lib/module/utils/conversion.js.map +1 -1
  286. package/lib/module/utils/errors.js +10 -0
  287. package/lib/module/utils/errors.js.map +1 -0
  288. package/lib/module/utils/hashnames.js +89 -0
  289. package/lib/module/utils/hashnames.js.map +1 -0
  290. package/lib/module/utils/index.js +6 -5
  291. package/lib/module/utils/index.js.map +1 -1
  292. package/lib/module/utils/noble.js +76 -0
  293. package/lib/module/utils/noble.js.map +1 -0
  294. package/lib/module/utils/types.js +53 -0
  295. package/lib/module/utils/types.js.map +1 -1
  296. package/lib/module/utils/validation.js +87 -0
  297. package/lib/module/utils/validation.js.map +1 -0
  298. package/lib/tsconfig.tsbuildinfo +1 -1
  299. package/lib/typescript/blake3.d.ts +33 -0
  300. package/lib/typescript/blake3.d.ts.map +1 -0
  301. package/lib/typescript/cipher.d.ts +60 -0
  302. package/lib/typescript/cipher.d.ts.map +1 -0
  303. package/lib/typescript/ec.d.ts +13 -0
  304. package/lib/typescript/ec.d.ts.map +1 -0
  305. package/lib/typescript/ed.d.ts +43 -0
  306. package/lib/typescript/ed.d.ts.map +1 -0
  307. package/lib/typescript/expo-plugin/@types.d.ts +8 -0
  308. package/lib/typescript/expo-plugin/@types.d.ts.map +1 -0
  309. package/lib/typescript/expo-plugin/withRNQC.d.ts +4 -0
  310. package/lib/typescript/expo-plugin/withRNQC.d.ts.map +1 -0
  311. package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts +4 -0
  312. package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts.map +1 -0
  313. package/lib/typescript/expo-plugin/withSodiumIos.d.ts +4 -0
  314. package/lib/typescript/expo-plugin/withSodiumIos.d.ts.map +1 -0
  315. package/lib/typescript/expo-plugin/withXCode.d.ts +9 -0
  316. package/lib/typescript/expo-plugin/withXCode.d.ts.map +1 -0
  317. package/lib/typescript/hash.d.ts +122 -0
  318. package/lib/typescript/hash.d.ts.map +1 -0
  319. package/lib/typescript/hmac.d.ts +66 -0
  320. package/lib/typescript/hmac.d.ts.map +1 -0
  321. package/lib/typescript/index.d.ts +110 -9
  322. package/lib/typescript/index.d.ts.map +1 -1
  323. package/lib/typescript/keys/classes.d.ts +79 -0
  324. package/lib/typescript/keys/classes.d.ts.map +1 -0
  325. package/lib/typescript/keys/generateKeyPair.d.ts +6 -0
  326. package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -0
  327. package/lib/typescript/keys/index.d.ts +7 -0
  328. package/lib/typescript/keys/index.d.ts.map +1 -0
  329. package/lib/typescript/keys/signVerify.d.ts +1 -0
  330. package/lib/typescript/keys/signVerify.d.ts.map +1 -0
  331. package/lib/typescript/keys/utils.d.ts +34 -0
  332. package/lib/typescript/keys/utils.d.ts.map +1 -0
  333. package/lib/typescript/pbkdf2.d.ts +12 -0
  334. package/lib/typescript/pbkdf2.d.ts.map +1 -0
  335. package/lib/typescript/random.d.ts +11 -5
  336. package/lib/typescript/random.d.ts.map +1 -1
  337. package/lib/typescript/rsa.d.ts +10 -0
  338. package/lib/typescript/rsa.d.ts.map +1 -0
  339. package/lib/typescript/specs/blake3.nitro.d.ts +15 -0
  340. package/lib/typescript/specs/blake3.nitro.d.ts.map +1 -0
  341. package/lib/typescript/specs/cipher.nitro.d.ts +29 -0
  342. package/lib/typescript/specs/cipher.nitro.d.ts.map +1 -0
  343. package/lib/typescript/specs/ecKeyPair.nitro.d.ts +20 -0
  344. package/lib/typescript/specs/ecKeyPair.nitro.d.ts.map +1 -0
  345. package/lib/typescript/specs/edKeyPair.nitro.d.ts +17 -0
  346. package/lib/typescript/specs/edKeyPair.nitro.d.ts.map +1 -0
  347. package/lib/typescript/specs/hash.nitro.d.ts +13 -0
  348. package/lib/typescript/specs/hash.nitro.d.ts.map +1 -0
  349. package/lib/typescript/specs/hmac.nitro.d.ts +10 -0
  350. package/lib/typescript/specs/hmac.nitro.d.ts.map +1 -0
  351. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +14 -0
  352. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -0
  353. package/lib/typescript/specs/pbkdf2.nitro.d.ts +9 -0
  354. package/lib/typescript/specs/pbkdf2.nitro.d.ts.map +1 -0
  355. package/lib/typescript/specs/rsaKeyPair.nitro.d.ts +20 -0
  356. package/lib/typescript/specs/rsaKeyPair.nitro.d.ts.map +1 -0
  357. package/lib/typescript/subtle.d.ts +17 -0
  358. package/lib/typescript/subtle.d.ts.map +1 -0
  359. package/lib/typescript/utils/cipher.d.ts +7 -0
  360. package/lib/typescript/utils/cipher.d.ts.map +1 -0
  361. package/lib/typescript/utils/conversion.d.ts +24 -2
  362. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  363. package/lib/typescript/utils/errors.d.ts +7 -0
  364. package/lib/typescript/utils/errors.d.ts.map +1 -0
  365. package/lib/typescript/utils/hashnames.d.ts +13 -0
  366. package/lib/typescript/utils/hashnames.d.ts.map +1 -0
  367. package/lib/typescript/utils/index.d.ts +6 -5
  368. package/lib/typescript/utils/index.d.ts.map +1 -1
  369. package/lib/typescript/utils/noble.d.ts +19 -0
  370. package/lib/typescript/utils/noble.d.ts.map +1 -0
  371. package/lib/typescript/utils/types.d.ts +252 -2
  372. package/lib/typescript/utils/types.d.ts.map +1 -1
  373. package/lib/typescript/utils/validation.d.ts +13 -0
  374. package/lib/typescript/utils/validation.d.ts.map +1 -0
  375. package/nitrogen/generated/.gitattributes +1 -0
  376. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +47 -4
  377. package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +4 -3
  378. package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +144 -0
  379. package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +25 -0
  380. package/nitrogen/generated/android/kotlin/com/margelo/nitro/crypto/QuickCryptoOnLoad.kt +35 -0
  381. package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +11 -8
  382. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +11 -3
  383. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +5 -3
  384. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +16 -7
  385. package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +135 -0
  386. package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +12 -0
  387. package/nitrogen/generated/shared/c++/CFRGKeyPairType.hpp +84 -0
  388. package/nitrogen/generated/shared/c++/CipherArgs.hpp +86 -0
  389. package/nitrogen/generated/shared/c++/HybridBlake3Spec.cpp +28 -0
  390. package/nitrogen/generated/shared/c++/HybridBlake3Spec.hpp +76 -0
  391. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.cpp +21 -0
  392. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.hpp +67 -0
  393. package/nitrogen/generated/shared/c++/HybridCipherSpec.cpp +28 -0
  394. package/nitrogen/generated/shared/c++/HybridCipherSpec.hpp +76 -0
  395. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.cpp +29 -0
  396. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.hpp +77 -0
  397. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.cpp +30 -0
  398. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.hpp +75 -0
  399. package/nitrogen/generated/shared/c++/HybridHashSpec.cpp +26 -0
  400. package/nitrogen/generated/shared/c++/HybridHashSpec.hpp +75 -0
  401. package/nitrogen/generated/shared/c++/HybridHmacSpec.cpp +23 -0
  402. package/nitrogen/generated/shared/c++/HybridHmacSpec.hpp +66 -0
  403. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +26 -0
  404. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +92 -0
  405. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +22 -0
  406. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +66 -0
  407. package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +2 -3
  408. package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +9 -6
  409. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.cpp +29 -0
  410. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.hpp +77 -0
  411. package/nitrogen/generated/shared/c++/JWK.hpp +161 -0
  412. package/nitrogen/generated/shared/c++/JWKkty.hpp +84 -0
  413. package/nitrogen/generated/shared/c++/JWKuse.hpp +76 -0
  414. package/nitrogen/generated/shared/c++/KFormatType.hpp +63 -0
  415. package/nitrogen/generated/shared/c++/KeyDetail.hpp +92 -0
  416. package/nitrogen/generated/shared/c++/KeyEncoding.hpp +64 -0
  417. package/nitrogen/generated/shared/c++/KeyObject.hpp +67 -0
  418. package/nitrogen/generated/shared/c++/KeyType.hpp +63 -0
  419. package/nitrogen/generated/shared/c++/KeyUsage.hpp +116 -0
  420. package/nitrogen/generated/shared/c++/NamedCurve.hpp +80 -0
  421. package/package.json +66 -39
  422. package/src/blake3.ts +123 -0
  423. package/src/cipher.ts +335 -0
  424. package/src/ec.ts +432 -0
  425. package/src/ed.ts +256 -0
  426. package/src/expo-plugin/@types.ts +7 -0
  427. package/src/expo-plugin/withRNQC.ts +23 -0
  428. package/src/expo-plugin/withSodiumAndroid.ts +24 -0
  429. package/src/expo-plugin/withSodiumIos.ts +30 -0
  430. package/src/expo-plugin/withXCode.ts +55 -0
  431. package/src/hash.ts +274 -0
  432. package/src/hmac.ts +135 -0
  433. package/src/index.ts +32 -29
  434. package/src/keys/classes.ts +317 -0
  435. package/src/keys/generateKeyPair.ts +145 -0
  436. package/src/keys/index.ts +52 -0
  437. package/src/keys/signVerify.ts +39 -0
  438. package/src/keys/utils.ts +190 -0
  439. package/src/pbkdf2.ts +154 -0
  440. package/src/random.ts +26 -23
  441. package/src/rsa.ts +176 -0
  442. package/src/specs/blake3.nitro.ts +12 -0
  443. package/src/specs/cipher.nitro.ts +25 -0
  444. package/src/specs/ecKeyPair.nitro.ts +38 -0
  445. package/src/specs/edKeyPair.nitro.ts +43 -0
  446. package/src/specs/hash.nitro.ts +10 -0
  447. package/src/specs/hmac.nitro.ts +7 -0
  448. package/src/specs/keyObjectHandle.nitro.ts +31 -0
  449. package/src/specs/pbkdf2.nitro.ts +18 -0
  450. package/src/specs/random.nitro.ts +2 -2
  451. package/src/specs/rsaKeyPair.nitro.ts +33 -0
  452. package/src/subtle.ts +614 -0
  453. package/src/utils/cipher.ts +60 -0
  454. package/src/utils/conversion.ts +143 -9
  455. package/src/utils/errors.ts +15 -0
  456. package/src/utils/hashnames.ts +98 -0
  457. package/src/utils/index.ts +6 -6
  458. package/src/utils/noble.ts +85 -0
  459. package/src/utils/types.ts +423 -3
  460. package/src/utils/validation.ts +130 -0
  461. package/ios/QuickCryptoOnLoad.mm +0 -19
  462. package/lib/module/package.json +0 -1
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ import { CryptoKey, KeyObject } from './keys';
5
+ import { bufferLikeToArrayBuffer, getUsagesUnion, hasAnyNotIn, kNamedCurveAliases, lazyDOMException, normalizeHashName, HashContext, KeyEncoding, KFormatType } from './utils';
6
+ export class Ec {
7
+ constructor(curve) {
8
+ this.native = NitroModules.createHybridObject('EcKeyPair');
9
+ this.native.setCurve(curve);
10
+ }
11
+ async generateKeyPair() {
12
+ await this.native.generateKeyPair();
13
+ return {
14
+ publicKey: this.native.getPublicKey(),
15
+ privateKey: this.native.getPrivateKey()
16
+ };
17
+ }
18
+ generateKeyPairSync() {
19
+ this.native.generateKeyPairSync();
20
+ return {
21
+ publicKey: this.native.getPublicKey(),
22
+ privateKey: this.native.getPrivateKey()
23
+ };
24
+ }
25
+ }
26
+
27
+ // function verifyAcceptableEcKeyUse(
28
+ // name: AnyAlgorithm,
29
+ // isPublic: boolean,
30
+ // usages: KeyUsage[],
31
+ // ): void {
32
+ // let checkSet;
33
+ // switch (name) {
34
+ // case 'ECDH':
35
+ // checkSet = isPublic ? [] : ['deriveKey', 'deriveBits'];
36
+ // break;
37
+ // case 'ECDSA':
38
+ // checkSet = isPublic ? ['verify'] : ['sign'];
39
+ // break;
40
+ // default:
41
+ // throw lazyDOMException(
42
+ // 'The algorithm is not supported',
43
+ // 'NotSupportedError',
44
+ // );
45
+ // }
46
+ // if (hasAnyNotIn(usages, checkSet)) {
47
+ // throw lazyDOMException(
48
+ // `Unsupported key usage for a ${name} key`,
49
+ // 'SyntaxError',
50
+ // );
51
+ // }
52
+ // }
53
+
54
+ // function createECPublicKeyRaw(
55
+ // namedCurve: NamedCurve | undefined,
56
+ // keyDataBuffer: ArrayBuffer,
57
+ // ): PublicKeyObject {
58
+ // if (!namedCurve) {
59
+ // throw new Error('Invalid namedCurve');
60
+ // }
61
+ // const handle = NitroModules.createHybridObject(
62
+ // 'KeyObjectHandle',
63
+ // ) as KeyObjectHandle;
64
+
65
+ // if (!handle.initECRaw(kNamedCurveAliases[namedCurve], keyDataBuffer)) {
66
+ // console.log('keyData', ab2str(keyDataBuffer));
67
+ // throw new Error('Invalid keyData 1');
68
+ // }
69
+
70
+ // return new PublicKeyObject(handle);
71
+ // }
72
+
73
+ // // Node API
74
+ // export function ec_exportKey(key: CryptoKey, format: KeyFormat): ArrayBuffer {
75
+ // return ec.native.exportKey(format, key.keyObject.handle);
76
+ // }
77
+
78
+ // Node API
79
+ export function ecImportKey(format, keyData, algorithm, extractable, keyUsages) {
80
+ const {
81
+ name,
82
+ namedCurve
83
+ } = algorithm;
84
+ if (!namedCurve || !kNamedCurveAliases[namedCurve]) {
85
+ throw lazyDOMException('Unrecognized namedCurve', 'NotSupportedError');
86
+ }
87
+ if (format !== 'spki' && format !== 'pkcs8' && format !== 'raw') {
88
+ throw lazyDOMException(`Unsupported format: ${format}`, 'NotSupportedError');
89
+ }
90
+
91
+ // Handle JWK format separately
92
+ if (typeof keyData === 'object' && 'kty' in keyData) {
93
+ throw lazyDOMException('JWK format not yet supported', 'NotSupportedError');
94
+ }
95
+
96
+ // Convert keyData to ArrayBuffer
97
+ const keyBuffer = bufferLikeToArrayBuffer(keyData);
98
+
99
+ // Create EC instance with the curve
100
+ const ec = new Ec(namedCurve);
101
+
102
+ // Import the key using Nitro module
103
+ ec.native.importKey(format === 'raw' ? 'der' : format,
104
+ // Convert raw to der for now
105
+ keyBuffer, name, extractable, keyUsages);
106
+
107
+ // Create a KeyObject wrapper for the imported key
108
+ // Use the EC instance's key data to create a proper KeyObject
109
+ const privateKeyData = ec.native.getPrivateKey();
110
+ const keyObject = new KeyObject('private', privateKeyData);
111
+
112
+ // Create and return CryptoKey
113
+ return new CryptoKey(keyObject, algorithm, keyUsages, extractable);
114
+ // // // verifyAcceptableEcKeyUse(name, true, usagesSet);
115
+ // // try {
116
+ // // keyObject = createPublicKey({
117
+ // // key: keyData,
118
+ // // format: 'der',
119
+ // // type: 'spki',
120
+ // // });
121
+ // // } catch (err) {
122
+ // // throw new Error(`Invalid keyData 2: ${err}`);
123
+ // // }
124
+ // // break;
125
+ // // }
126
+ // // case 'pkcs8': {
127
+ // // // verifyAcceptableEcKeyUse(name, false, usagesSet);
128
+ // // try {
129
+ // // keyObject = createPrivateKey({
130
+ // // key: keyData,
131
+ // // format: 'der',
132
+ // // type: 'pkcs8',
133
+ // // });
134
+ // // } catch (err) {
135
+ // // throw new Error(`Invalid keyData 3 ${err}`);
136
+ // // }
137
+ // // break;
138
+ // // }
139
+ }
140
+
141
+ // case 'jwk': {
142
+ // const data = keyData as JWK;
143
+
144
+ // if (!data.kty) throw lazyDOMException('Invalid keyData 4', 'DataError');
145
+ // if (data.kty !== 'EC')
146
+ // throw lazyDOMException('Invalid JWK "kty" Parameter', 'DataError');
147
+ // if (data.crv !== namedCurve)
148
+ // throw lazyDOMException(
149
+ // 'JWK "crv" does not match the requested algorithm',
150
+ // 'DataError',
151
+ // );
152
+
153
+ // verifyAcceptableEcKeyUse(name, data.d === undefined, keyUsages);
154
+
155
+ // if (keyUsages.length > 0 && data.use !== undefined) {
156
+ // const checkUse = name === 'ECDH' ? 'enc' : 'sig';
157
+ // if (data.use !== checkUse)
158
+ // throw lazyDOMException('Invalid JWK "use" Parameter', 'DataError');
159
+ // }
160
+
161
+ // validateKeyOps(data.key_ops, keyUsages);
162
+
163
+ // if (
164
+ // data.ext !== undefined &&
165
+ // data.ext === false &&
166
+ // extractable === true
167
+ // ) {
168
+ // throw lazyDOMException(
169
+ // 'JWK "ext" Parameter and extractable mismatch',
170
+ // 'DataError',
171
+ // );
172
+ // }
173
+
174
+ // if (algorithm.name === 'ECDSA' && data.alg !== undefined) {
175
+ // let algNamedCurve;
176
+ // switch (data.alg) {
177
+ // case 'ES256':
178
+ // algNamedCurve = 'P-256';
179
+ // break;
180
+ // case 'ES384':
181
+ // algNamedCurve = 'P-384';
182
+ // break;
183
+ // case 'ES512':
184
+ // algNamedCurve = 'P-521';
185
+ // break;
186
+ // }
187
+ // if (algNamedCurve !== namedCurve)
188
+ // throw lazyDOMException(
189
+ // 'JWK "alg" does not match the requested algorithm',
190
+ // 'DataError',
191
+ // );
192
+ // }
193
+
194
+ // const handle = NativeQuickCrypto.webcrypto.createKeyObjectHandle();
195
+ // const type = handle.initJwk(data, namedCurve);
196
+ // if (type === undefined)
197
+ // throw lazyDOMException('Invalid JWK', 'DataError');
198
+ // keyObject =
199
+ // type === KeyType.PRIVATE
200
+ // ? new PrivateKeyObject(handle)
201
+ // : new PublicKeyObject(handle);
202
+ // break;
203
+ // }
204
+ // case 'raw': {
205
+ // const data = keyData as BufferLike | BinaryLike;
206
+ // verifyAcceptableEcKeyUse(name, true, keyUsages);
207
+ // const buffer =
208
+ // typeof data === 'string'
209
+ // ? binaryLikeToArrayBuffer(data)
210
+ // : bufferLikeToArrayBuffer(data);
211
+ // keyObject = createECPublicKeyRaw(namedCurve, buffer);
212
+ // break;
213
+ // }
214
+ // default: {
215
+ // throw new Error(`Unknown EC import format: ${format}`);
216
+ // }
217
+ // }
218
+
219
+ // switch (algorithm.name) {
220
+ // case 'ECDSA':
221
+ // // Fall through
222
+ // case 'ECDH':
223
+ // if (keyObject.asymmetricKeyType !== ('ec' as AsymmetricKeyType))
224
+ // throw new Error('Invalid key type');
225
+ // break;
226
+ // }
227
+
228
+ // // if (!keyObject[kHandle].checkEcKeyData()) {
229
+ // // throw new Error('Invalid keyData 5');
230
+ // // }
231
+
232
+ // // const { namedCurve: checkNamedCurve } = keyObject[kHandle].keyDetail({});
233
+ // // if (kNamedCurveAliases[namedCurve] !== checkNamedCurve)
234
+ // // throw new Error('Named curve mismatch');
235
+
236
+ // return new CryptoKey(keyObject, { name, namedCurve }, keyUsages, extractable);
237
+ // }
238
+
239
+ // Node API
240
+ export const ecdsaSignVerify = (key, data, {
241
+ hash
242
+ }, signature) => {
243
+ const isSign = signature === undefined;
244
+ const expectedKeyType = isSign ? 'private' : 'public';
245
+ if (key.type !== expectedKeyType) {
246
+ throw lazyDOMException(`Key must be a ${expectedKeyType} key`, 'InvalidAccessError');
247
+ }
248
+ const hashName = typeof hash === 'string' ? hash : hash?.name;
249
+ if (!hashName) {
250
+ throw lazyDOMException('Hash algorithm is required for ECDSA', 'InvalidAccessError');
251
+ }
252
+
253
+ // Normalize hash algorithm name to WebCrypto format for C++ layer
254
+ const normalizedHashName = normalizeHashName(hashName, HashContext.WebCrypto);
255
+
256
+ // Create EC instance with the curve from the key
257
+ const namedCurve = key.algorithm.namedCurve;
258
+ const ec = new Ec(namedCurve);
259
+
260
+ // Extract and import the actual key data from the CryptoKey
261
+ // Export in DER format with appropriate encoding
262
+ const encoding = key.type === 'private' ? KeyEncoding.PKCS8 : KeyEncoding.SPKI;
263
+ const keyData = key.keyObject.handle.exportKey(KFormatType.DER, encoding);
264
+ const keyBuffer = bufferLikeToArrayBuffer(keyData);
265
+ ec.native.importKey('der', keyBuffer, key.algorithm.name, key.extractable, key.usages);
266
+ const dataBuffer = bufferLikeToArrayBuffer(data);
267
+ if (isSign) {
268
+ // Sign operation
269
+ return ec.native.sign(dataBuffer, normalizedHashName);
270
+ } else {
271
+ // Verify operation
272
+ const signatureBuffer = bufferLikeToArrayBuffer(signature);
273
+ return ec.native.verify(dataBuffer, signatureBuffer, normalizedHashName);
274
+ }
275
+ };
276
+
277
+ // Node API
278
+
279
+ export async function ec_generateKeyPair(name, namedCurve, extractable, keyUsages,
280
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
281
+ _options // TODO: Implement format options support
282
+ ) {
283
+ // validation checks
284
+ if (!Object.keys(kNamedCurveAliases).includes(namedCurve || '')) {
285
+ throw lazyDOMException(`Unrecognized namedCurve '${namedCurve}'`, 'NotSupportedError');
286
+ }
287
+
288
+ // const usageSet = new SafeSet(keyUsages);
289
+ switch (name) {
290
+ case 'ECDSA':
291
+ if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
292
+ throw lazyDOMException('Unsupported key usage for an ECDSA key', 'SyntaxError');
293
+ }
294
+ break;
295
+ case 'ECDH':
296
+ if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
297
+ throw lazyDOMException('Unsupported key usage for an ECDH key', 'SyntaxError');
298
+ }
299
+ // Fall through
300
+ }
301
+ const ec = new Ec(namedCurve);
302
+ await ec.generateKeyPair();
303
+ let publicUsages = [];
304
+ let privateUsages = [];
305
+ switch (name) {
306
+ case 'ECDSA':
307
+ publicUsages = getUsagesUnion(keyUsages, 'verify');
308
+ privateUsages = getUsagesUnion(keyUsages, 'sign');
309
+ break;
310
+ case 'ECDH':
311
+ publicUsages = [];
312
+ privateUsages = getUsagesUnion(keyUsages, 'deriveKey', 'deriveBits');
313
+ break;
314
+ }
315
+ const keyAlgorithm = {
316
+ name,
317
+ namedCurve: namedCurve
318
+ };
319
+
320
+ // Export keys directly from the EC key pair using the internal EVP_PKEY
321
+ // These methods export in DER format (SPKI for public, PKCS8 for private)
322
+ const publicKeyData = ec.native.getPublicKey();
323
+ const privateKeyData = ec.native.getPrivateKey();
324
+ const pub = KeyObject.createKeyObject('public', publicKeyData, 'der', 'spki');
325
+ const publicKey = new CryptoKey(pub, keyAlgorithm, publicUsages, true);
326
+
327
+ // All keys are now exported in PKCS8 format for consistency
328
+ const privateEncoding = 'pkcs8';
329
+ const priv = KeyObject.createKeyObject('private', privateKeyData, 'der', privateEncoding);
330
+ const privateKey = new CryptoKey(priv, keyAlgorithm, privateUsages, extractable);
331
+ return {
332
+ publicKey,
333
+ privateKey
334
+ };
335
+ }
336
+ //# sourceMappingURL=ec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","CryptoKey","KeyObject","bufferLikeToArrayBuffer","getUsagesUnion","hasAnyNotIn","kNamedCurveAliases","lazyDOMException","normalizeHashName","HashContext","KeyEncoding","KFormatType","Ec","constructor","curve","native","createHybridObject","setCurve","generateKeyPair","publicKey","getPublicKey","privateKey","getPrivateKey","generateKeyPairSync","ecImportKey","format","keyData","algorithm","extractable","keyUsages","name","namedCurve","keyBuffer","ec","importKey","privateKeyData","keyObject","ecdsaSignVerify","key","data","hash","signature","isSign","undefined","expectedKeyType","type","hashName","normalizedHashName","WebCrypto","encoding","PKCS8","SPKI","handle","exportKey","DER","usages","dataBuffer","sign","signatureBuffer","verify","ec_generateKeyPair","_options","Object","keys","includes","publicUsages","privateUsages","keyAlgorithm","publicKeyData","pub","createKeyObject","privateEncoding","priv"],"sourceRoot":"../../src","sources":["ec.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ import { Buffer } from '@craftzdog/react-native-buffer';
5
+ import { binaryLikeToArrayBuffer as toAB } from './utils';
6
+ export class Ed {
7
+ constructor(type, config) {
8
+ this.type = type;
9
+ this.config = config;
10
+ this.native = NitroModules.createHybridObject('EdKeyPair');
11
+ this.native.setCurve(type);
12
+ }
13
+
14
+ /**
15
+ * Computes the Diffie-Hellman secret based on a privateKey and a publicKey.
16
+ * Both keys must have the same asymmetricKeyType, which must be one of 'dh'
17
+ * (for Diffie-Hellman), 'ec', 'x448', or 'x25519' (for ECDH).
18
+ *
19
+ * @api nodejs/node
20
+ *
21
+ * @param options `{ privateKey, publicKey }`, both of which are `KeyObject`s
22
+ * @param callback optional `(err, secret) => void`
23
+ * @returns `Buffer` if no callback, or `void` if callback is provided
24
+ */
25
+ diffieHellman(options, callback) {
26
+ checkDiffieHellmanOptions(options);
27
+
28
+ // key types must be of certain type
29
+ const keyType = options.privateKey.asymmetricKeyType;
30
+ switch (keyType) {
31
+ case 'x25519':
32
+ case 'x448':
33
+ break;
34
+ default:
35
+ throw new Error(`Unsupported or unimplemented curve type: ${keyType}`);
36
+ }
37
+
38
+ // extract the private and public keys as ArrayBuffers
39
+ const privateKey = toAB(options.privateKey);
40
+ const publicKey = toAB(options.publicKey);
41
+ try {
42
+ const ret = this.native.diffieHellman(privateKey, publicKey);
43
+ if (!ret) {
44
+ throw new Error('No secret');
45
+ }
46
+ if (callback) {
47
+ callback(null, Buffer.from(ret));
48
+ } else {
49
+ return Buffer.from(ret);
50
+ }
51
+ } catch (e) {
52
+ const err = e;
53
+ if (callback) {
54
+ callback(err, undefined);
55
+ } else {
56
+ throw err;
57
+ }
58
+ }
59
+ }
60
+ async generateKeyPair() {
61
+ this.native.generateKeyPair(this.config.publicFormat || -1, this.config.publicType || -1, this.config.privateFormat || -1, this.config.privateType || -1, this.config.cipher, this.config.passphrase);
62
+ }
63
+ generateKeyPairSync() {
64
+ this.native.generateKeyPairSync(this.config.publicFormat || -1, this.config.publicType || -1, this.config.privateFormat || -1, this.config.privateType || -1, this.config.cipher, this.config.passphrase);
65
+ }
66
+ getPublicKey() {
67
+ return this.native.getPublicKey();
68
+ }
69
+ getPrivateKey() {
70
+ return this.native.getPrivateKey();
71
+ }
72
+
73
+ /**
74
+ * Computes the Diffie-Hellman shared secret based on a privateKey and a
75
+ * publicKey for key exchange
76
+ *
77
+ * @api \@paulmillr/noble-curves/ed25519
78
+ *
79
+ * @param privateKey
80
+ * @param publicKey
81
+ * @returns shared secret key
82
+ */
83
+ getSharedSecret(privateKey, publicKey) {
84
+ return this.native.diffieHellman(toAB(privateKey), toAB(publicKey));
85
+ }
86
+ async sign(message, key) {
87
+ return key ? this.native.sign(toAB(message), toAB(key)) : this.native.sign(toAB(message));
88
+ }
89
+ signSync(message, key) {
90
+ return key ? this.native.signSync(toAB(message), toAB(key)) : this.native.signSync(toAB(message));
91
+ }
92
+ async verify(signature, message, key) {
93
+ return key ? this.native.verify(toAB(signature), toAB(message), toAB(key)) : this.native.verify(toAB(signature), toAB(message));
94
+ }
95
+ verifySync(signature, message, key) {
96
+ return key ? this.native.verifySync(toAB(signature), toAB(message), toAB(key)) : this.native.verifySync(toAB(signature), toAB(message));
97
+ }
98
+ }
99
+
100
+ // Node API
101
+ export function diffieHellman(options, callback) {
102
+ const privateKey = options.privateKey;
103
+ const type = privateKey.asymmetricKeyType;
104
+ const ed = new Ed(type, {});
105
+ return ed.diffieHellman(options, callback);
106
+ }
107
+
108
+ // Node API
109
+ export function ed_generateKeyPair(isAsync, type, encoding, callback) {
110
+ const ed = new Ed(type, encoding);
111
+
112
+ // Async path
113
+ if (isAsync) {
114
+ if (!callback) {
115
+ // This should not happen if called from public API
116
+ throw new Error('A callback is required for async key generation.');
117
+ }
118
+ ed.generateKeyPair().then(() => {
119
+ callback(undefined, ed.getPublicKey(), ed.getPrivateKey());
120
+ }).catch(err => {
121
+ callback(err, undefined, undefined);
122
+ });
123
+ return;
124
+ }
125
+
126
+ // Sync path
127
+ let err;
128
+ try {
129
+ ed.generateKeyPairSync();
130
+ } catch (e) {
131
+ err = e instanceof Error ? e : new Error(String(e));
132
+ }
133
+ if (callback) {
134
+ callback(err, ed.getPublicKey(), ed.getPrivateKey());
135
+ return;
136
+ }
137
+ return [err, ed.getPublicKey(), ed.getPrivateKey()];
138
+ }
139
+ function checkDiffieHellmanOptions(options) {
140
+ const {
141
+ privateKey,
142
+ publicKey
143
+ } = options;
144
+
145
+ // Check if keys are KeyObject instances
146
+ if (!privateKey || typeof privateKey !== 'object' || !('type' in privateKey)) {
147
+ throw new Error('privateKey must be a KeyObject');
148
+ }
149
+ if (!publicKey || typeof publicKey !== 'object' || !('type' in publicKey)) {
150
+ throw new Error('publicKey must be a KeyObject');
151
+ }
152
+
153
+ // type checks
154
+ if (privateKey.type !== 'private') {
155
+ throw new Error('privateKey must be a private KeyObject');
156
+ }
157
+ if (publicKey.type !== 'public') {
158
+ throw new Error('publicKey must be a public KeyObject');
159
+ }
160
+
161
+ // For asymmetric keys, check if they have the asymmetricKeyType property
162
+ const privateKeyAsym = privateKey;
163
+ const publicKeyAsym = publicKey;
164
+
165
+ // key types must match
166
+ if (privateKeyAsym.asymmetricKeyType && publicKeyAsym.asymmetricKeyType && privateKeyAsym.asymmetricKeyType !== publicKeyAsym.asymmetricKeyType) {
167
+ throw new Error('Keys must be asymmetric and their types must match');
168
+ }
169
+ switch (privateKeyAsym.asymmetricKeyType) {
170
+ // case 'dh': // TODO: uncomment when implemented
171
+ case 'x25519':
172
+ case 'x448':
173
+ break;
174
+ default:
175
+ throw new Error(`Unknown curve type: ${privateKeyAsym.asymmetricKeyType}`);
176
+ }
177
+ }
178
+ //# sourceMappingURL=ed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","Buffer","binaryLikeToArrayBuffer","toAB","Ed","constructor","type","config","native","createHybridObject","setCurve","diffieHellman","options","callback","checkDiffieHellmanOptions","keyType","privateKey","asymmetricKeyType","Error","publicKey","ret","from","e","err","undefined","generateKeyPair","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","generateKeyPairSync","getPublicKey","getPrivateKey","getSharedSecret","sign","message","key","signSync","verify","signature","verifySync","ed","ed_generateKeyPair","isAsync","encoding","then","catch","String","privateKeyAsym","publicKeyAsym"],"sourceRoot":"../../src","sources":["ed.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=@types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["expo-plugin/@types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ import { createRunOncePlugin } from 'expo/config-plugins';
4
+ import { withSodiumIos } from './withSodiumIos';
5
+ import { withSodiumAndroid } from './withSodiumAndroid';
6
+ import { withXCode } from './withXCode';
7
+ const withRNQCInternal = (config, props = {}) => {
8
+ // add XCode workarounds for some 16.x releases that are not RN-friendly
9
+ config = withXCode(config, props);
10
+
11
+ // enable libsodium algorithms
12
+ if (props.sodiumEnabled) {
13
+ config = withSodiumIos(config, props);
14
+ config = withSodiumAndroid(config, props);
15
+ }
16
+ return config;
17
+ };
18
+ export function createRNQCPlugin(name, version) {
19
+ return createRunOncePlugin(withRNQCInternal, name, version);
20
+ }
21
+ //# sourceMappingURL=withRNQC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createRunOncePlugin","withSodiumIos","withSodiumAndroid","withXCode","withRNQCInternal","config","props","sodiumEnabled","createRNQCPlugin","name","version"],"sourceRoot":"../../../src","sources":["expo-plugin/withRNQC.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,qBAAqB;AAGzD,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,SAAS,QAAQ,aAAa;AAEvC,MAAMC,gBAA2C,GAAGA,CAACC,MAAM,EAAEC,KAAK,GAAG,CAAC,CAAC,KAAK;EAC1E;EACAD,MAAM,GAAGF,SAAS,CAACE,MAAM,EAAEC,KAAK,CAAC;;EAEjC;EACA,IAAIA,KAAK,CAACC,aAAa,EAAE;IACvBF,MAAM,GAAGJ,aAAa,CAACI,MAAM,EAAEC,KAAK,CAAC;IACrCD,MAAM,GAAGH,iBAAiB,CAACG,MAAM,EAAEC,KAAK,CAAC;EAC3C;EAEA,OAAOD,MAAM;AACf,CAAC;AAED,OAAO,SAASG,gBAAgBA,CAACC,IAAY,EAAEC,OAAe,EAAE;EAC9D,OAAOV,mBAAmB,CAACI,gBAAgB,EAAEK,IAAI,EAAEC,OAAO,CAAC;AAC7D","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import { withGradleProperties } from 'expo/config-plugins';
4
+ export const withSodiumAndroid = config => {
5
+ return withGradleProperties(config, config => {
6
+ config.modResults = config.modResults || [];
7
+
8
+ // Check if the property already exists
9
+ const existingProperty = config.modResults.find(item => item.type === 'property' && item.key === 'sodiumEnabled');
10
+ if (!existingProperty) {
11
+ config.modResults.push({
12
+ type: 'property',
13
+ key: 'sodiumEnabled',
14
+ value: 'true'
15
+ });
16
+ }
17
+ return config;
18
+ });
19
+ };
20
+ //# sourceMappingURL=withSodiumAndroid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["withGradleProperties","withSodiumAndroid","config","modResults","existingProperty","find","item","type","key","push","value"],"sourceRoot":"../../../src","sources":["expo-plugin/withSodiumAndroid.ts"],"mappings":";;AACA,SAASA,oBAAoB,QAAQ,qBAAqB;AAG1D,OAAO,MAAMC,iBAA4C,GAAGC,MAAM,IAAI;EACpE,OAAOF,oBAAoB,CAACE,MAAM,EAAEA,MAAM,IAAI;IAC5CA,MAAM,CAACC,UAAU,GAAGD,MAAM,CAACC,UAAU,IAAI,EAAE;;IAE3C;IACA,MAAMC,gBAAgB,GAAGF,MAAM,CAACC,UAAU,CAACE,IAAI,CAC7CC,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAK,UAAU,IAAID,IAAI,CAACE,GAAG,KAAK,eACnD,CAAC;IAED,IAAI,CAACJ,gBAAgB,EAAE;MACrBF,MAAM,CAACC,UAAU,CAACM,IAAI,CAAC;QACrBF,IAAI,EAAE,UAAU;QAChBC,GAAG,EAAE,eAAe;QACpBE,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;IAEA,OAAOR,MAAM;EACf,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import { withDangerousMod } from 'expo/config-plugins';
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ export const withSodiumIos = config => {
7
+ return withDangerousMod(config, ['ios', config => {
8
+ const podfilePath = path.join(config.modRequest.platformProjectRoot, 'Podfile');
9
+ let contents = fs.readFileSync(podfilePath, 'utf-8');
10
+
11
+ // Check if SODIUM_ENABLED is already set
12
+ if (!contents.includes("ENV['SODIUM_ENABLED']")) {
13
+ // Add it right after the RCT_NEW_ARCH_ENABLED ENV variable
14
+ contents = contents.replace(/^(ENV\['RCT_NEW_ARCH_ENABLED'\].*$)/m, `$1\nENV['SODIUM_ENABLED'] = '1'`);
15
+ fs.writeFileSync(podfilePath, contents);
16
+ }
17
+ return config;
18
+ }]);
19
+ };
20
+ //# sourceMappingURL=withSodiumIos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["withDangerousMod","fs","path","withSodiumIos","config","podfilePath","join","modRequest","platformProjectRoot","contents","readFileSync","includes","replace","writeFileSync"],"sourceRoot":"../../../src","sources":["expo-plugin/withSodiumIos.ts"],"mappings":";;AACA,SAASA,gBAAgB,QAAQ,qBAAqB;AACtD,OAAOC,EAAE,MAAM,IAAI;AACnB,OAAOC,IAAI,MAAM,MAAM;AAGvB,OAAO,MAAMC,aAAwC,GAAGC,MAAM,IAAI;EAChE,OAAOJ,gBAAgB,CAACI,MAAM,EAAE,CAC9B,KAAK,EACLA,MAAM,IAAI;IACR,MAAMC,WAAW,GAAGH,IAAI,CAACI,IAAI,CAC3BF,MAAM,CAACG,UAAU,CAACC,mBAAmB,EACrC,SACF,CAAC;IACD,IAAIC,QAAQ,GAAGR,EAAE,CAACS,YAAY,CAACL,WAAW,EAAE,OAAO,CAAC;;IAEpD;IACA,IAAI,CAACI,QAAQ,CAACE,QAAQ,CAAC,uBAAuB,CAAC,EAAE;MAC/C;MACAF,QAAQ,GAAGA,QAAQ,CAACG,OAAO,CACzB,sCAAsC,EACtC,iCACF,CAAC;MACDX,EAAE,CAACY,aAAa,CAACR,WAAW,EAAEI,QAAQ,CAAC;IACzC;IAEA,OAAOL,MAAM;EACf,CAAC,CACF,CAAC;AACJ,CAAC","ignoreList":[]}