react-native-quick-crypto 0.7.11 → 1.0.0-beta.10

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 (419) hide show
  1. package/QuickCrypto.podspec +47 -0
  2. package/README.md +6 -4
  3. package/android/CMakeLists.txt +26 -55
  4. package/android/build.gradle +70 -112
  5. package/android/gradle.properties +3 -3
  6. package/android/src/main/cpp/cpp-adapter.cpp +3 -64
  7. package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +43 -0
  8. package/cpp/ed25519/HybridEdKeyPair.cpp +268 -0
  9. package/cpp/ed25519/HybridEdKeyPair.hpp +85 -0
  10. package/cpp/pbkdf2/HybridPbkdf2.cpp +72 -0
  11. package/cpp/pbkdf2/HybridPbkdf2.hpp +35 -0
  12. package/cpp/random/HybridRandom.cpp +59 -0
  13. package/cpp/random/HybridRandom.hpp +33 -0
  14. package/cpp/utils/Utils.hpp +20 -0
  15. package/lib/commonjs/ed.js +42 -0
  16. package/lib/commonjs/ed.js.map +1 -0
  17. package/lib/commonjs/index.js +90 -39
  18. package/lib/commonjs/index.js.map +1 -1
  19. package/lib/commonjs/keys/classes.js +191 -0
  20. package/lib/commonjs/keys/classes.js.map +1 -0
  21. package/lib/commonjs/keys/generateKeyPair.js +148 -0
  22. package/lib/commonjs/keys/generateKeyPair.js.map +1 -0
  23. package/lib/commonjs/keys/index.js +62 -0
  24. package/lib/commonjs/keys/index.js.map +1 -0
  25. package/lib/commonjs/keys/signVerify.js +41 -0
  26. package/lib/commonjs/keys/signVerify.js.map +1 -0
  27. package/lib/commonjs/keys/utils.js +118 -0
  28. package/lib/commonjs/keys/utils.js.map +1 -0
  29. package/lib/commonjs/pbkdf2.js +29 -19
  30. package/lib/commonjs/pbkdf2.js.map +1 -1
  31. package/lib/commonjs/random.js +27 -11
  32. package/lib/commonjs/random.js.map +1 -1
  33. package/lib/commonjs/{NativeQuickCrypto/aes.js → specs/edKeyPair.nitro.js} +1 -1
  34. package/lib/commonjs/{NativeQuickCrypto/aes.js.map → specs/edKeyPair.nitro.js.map} +1 -1
  35. package/lib/commonjs/{NativeQuickCrypto/keygen.js → specs/keyObjectHandle.nitro.js} +1 -1
  36. package/lib/commonjs/{NativeQuickCrypto/hash.js.map → specs/keyObjectHandle.nitro.js.map} +1 -1
  37. package/lib/commonjs/{NativeQuickCrypto/rsa.js → specs/pbkdf2.nitro.js} +1 -1
  38. package/lib/{module/NativeQuickCrypto/aes.js.map → commonjs/specs/pbkdf2.nitro.js.map} +1 -1
  39. package/lib/commonjs/{NativeQuickCrypto/webcrypto.js → specs/random.nitro.js} +1 -1
  40. package/lib/{module/NativeQuickCrypto/rsa.js.map → commonjs/specs/random.nitro.js.map} +1 -1
  41. package/lib/commonjs/utils/conversion.js +117 -0
  42. package/lib/commonjs/utils/conversion.js.map +1 -0
  43. package/lib/commonjs/utils/errors.js +14 -0
  44. package/lib/commonjs/utils/errors.js.map +1 -0
  45. package/lib/commonjs/{Hashnames.js → utils/hashnames.js} +2 -5
  46. package/lib/commonjs/utils/hashnames.js.map +1 -0
  47. package/lib/commonjs/utils/index.js +61 -0
  48. package/lib/commonjs/utils/index.js.map +1 -0
  49. package/lib/commonjs/utils/types.js +40 -0
  50. package/lib/commonjs/utils/types.js.map +1 -0
  51. package/lib/commonjs/utils/validation.js +25 -0
  52. package/lib/commonjs/utils/validation.js.map +1 -0
  53. package/lib/module/ed.js +37 -0
  54. package/lib/module/ed.js.map +1 -0
  55. package/lib/module/index.js +44 -37
  56. package/lib/module/index.js.map +1 -1
  57. package/lib/module/keys/classes.js +182 -0
  58. package/lib/module/keys/classes.js.map +1 -0
  59. package/lib/module/keys/generateKeyPair.js +148 -0
  60. package/lib/module/keys/generateKeyPair.js.map +1 -0
  61. package/lib/module/keys/index.js +29 -0
  62. package/lib/module/keys/index.js.map +1 -0
  63. package/lib/module/keys/signVerify.js +41 -0
  64. package/lib/module/keys/signVerify.js.map +1 -0
  65. package/lib/module/keys/utils.js +110 -0
  66. package/lib/module/keys/utils.js.map +1 -0
  67. package/lib/module/pbkdf2.js +17 -7
  68. package/lib/module/pbkdf2.js.map +1 -1
  69. package/lib/module/random.js +26 -10
  70. package/lib/module/random.js.map +1 -1
  71. package/lib/module/specs/edKeyPair.nitro.js +4 -0
  72. package/lib/{commonjs/NativeQuickCrypto/rsa.js.map → module/specs/edKeyPair.nitro.js.map} +1 -1
  73. package/lib/module/specs/keyObjectHandle.nitro.js +4 -0
  74. package/lib/{commonjs/NativeQuickCrypto/hmac.js.map → module/specs/keyObjectHandle.nitro.js.map} +1 -1
  75. package/lib/module/specs/pbkdf2.nitro.js +4 -0
  76. package/lib/module/specs/pbkdf2.nitro.js.map +1 -0
  77. package/lib/module/specs/random.nitro.js +4 -0
  78. package/lib/module/specs/random.nitro.js.map +1 -0
  79. package/lib/module/utils/conversion.js +107 -0
  80. package/lib/module/utils/conversion.js.map +1 -0
  81. package/lib/module/utils/errors.js +10 -0
  82. package/lib/module/utils/errors.js.map +1 -0
  83. package/lib/module/{Hashnames.js → utils/hashnames.js} +2 -5
  84. package/lib/module/utils/hashnames.js.map +1 -0
  85. package/lib/module/utils/index.js +8 -0
  86. package/lib/module/utils/index.js.map +1 -0
  87. package/lib/module/utils/types.js +42 -0
  88. package/lib/module/utils/types.js.map +1 -0
  89. package/lib/module/utils/validation.js +19 -0
  90. package/lib/module/utils/validation.js.map +1 -0
  91. package/lib/tsconfig.tsbuildinfo +1 -0
  92. package/lib/typescript/ed.d.ts +17 -0
  93. package/lib/typescript/ed.d.ts.map +1 -0
  94. package/lib/typescript/index.d.ts +74 -0
  95. package/lib/typescript/index.d.ts.map +1 -0
  96. package/lib/typescript/keys/classes.d.ts +38 -0
  97. package/lib/typescript/keys/classes.d.ts.map +1 -0
  98. package/lib/typescript/keys/generateKeyPair.d.ts +1 -0
  99. package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -0
  100. package/lib/typescript/keys/index.d.ts +4 -0
  101. package/lib/typescript/keys/index.d.ts.map +1 -0
  102. package/lib/typescript/keys/signVerify.d.ts +1 -0
  103. package/lib/typescript/keys/signVerify.d.ts.map +1 -0
  104. package/lib/typescript/keys/utils.d.ts +32 -0
  105. package/lib/typescript/keys/utils.d.ts.map +1 -0
  106. package/lib/typescript/{src/pbkdf2.d.ts → pbkdf2.d.ts} +4 -3
  107. package/lib/typescript/pbkdf2.d.ts.map +1 -0
  108. package/lib/typescript/{src/random.d.ts → random.d.ts} +4 -4
  109. package/lib/typescript/random.d.ts.map +1 -0
  110. package/lib/typescript/specs/edKeyPair.nitro.d.ts +16 -0
  111. package/lib/typescript/specs/edKeyPair.nitro.d.ts.map +1 -0
  112. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +15 -0
  113. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -0
  114. package/lib/typescript/specs/pbkdf2.nitro.d.ts +9 -0
  115. package/lib/typescript/specs/pbkdf2.nitro.d.ts.map +1 -0
  116. package/lib/typescript/specs/random.nitro.d.ts +9 -0
  117. package/lib/typescript/specs/random.nitro.d.ts.map +1 -0
  118. package/lib/typescript/utils/conversion.d.ts +25 -0
  119. package/lib/typescript/utils/conversion.d.ts.map +1 -0
  120. package/lib/typescript/utils/errors.d.ts +7 -0
  121. package/lib/typescript/utils/errors.d.ts.map +1 -0
  122. package/lib/typescript/{src/Hashnames.d.ts → utils/hashnames.d.ts} +3 -3
  123. package/lib/typescript/utils/hashnames.d.ts.map +1 -0
  124. package/lib/typescript/utils/index.d.ts +6 -0
  125. package/lib/typescript/utils/index.d.ts.map +1 -0
  126. package/lib/typescript/utils/types.d.ts +162 -0
  127. package/lib/typescript/utils/types.d.ts.map +1 -0
  128. package/lib/typescript/utils/validation.d.ts +8 -0
  129. package/lib/typescript/utils/validation.d.ts.map +1 -0
  130. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +65 -0
  131. package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +27 -0
  132. package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +64 -0
  133. package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +25 -0
  134. package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +58 -0
  135. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +17 -0
  136. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +27 -0
  137. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +38 -0
  138. package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +55 -0
  139. package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +12 -0
  140. package/nitrogen/generated/shared/c++/CFRGKeyPairType.hpp +86 -0
  141. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.cpp +29 -0
  142. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.hpp +74 -0
  143. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +27 -0
  144. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +93 -0
  145. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +22 -0
  146. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +66 -0
  147. package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +22 -0
  148. package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +65 -0
  149. package/nitrogen/generated/shared/c++/JWK.hpp +162 -0
  150. package/nitrogen/generated/shared/c++/JWKkty.hpp +86 -0
  151. package/nitrogen/generated/shared/c++/JWKuse.hpp +78 -0
  152. package/nitrogen/generated/shared/c++/KFormatType.hpp +65 -0
  153. package/nitrogen/generated/shared/c++/KeyDetail.hpp +93 -0
  154. package/nitrogen/generated/shared/c++/KeyEncoding.hpp +66 -0
  155. package/nitrogen/generated/shared/c++/KeyType.hpp +65 -0
  156. package/nitrogen/generated/shared/c++/KeyUsage.hpp +102 -0
  157. package/nitrogen/generated/shared/c++/NamedCurve.hpp +82 -0
  158. package/package.json +57 -51
  159. package/src/ed.ts +79 -0
  160. package/src/index.ts +43 -47
  161. package/src/keys/classes.ts +211 -0
  162. package/src/keys/generateKeyPair.ts +146 -0
  163. package/src/keys/index.ts +42 -0
  164. package/src/keys/signVerify.ts +39 -0
  165. package/src/keys/utils.ts +184 -0
  166. package/src/pbkdf2.ts +26 -15
  167. package/src/random.ts +33 -20
  168. package/src/specs/edKeyPair.nitro.ts +41 -0
  169. package/src/specs/keyObjectHandle.nitro.ts +32 -0
  170. package/src/{NativeQuickCrypto/pbkdf2.ts → specs/pbkdf2.nitro.ts} +8 -6
  171. package/src/specs/random.nitro.ts +14 -0
  172. package/src/utils/conversion.ts +123 -0
  173. package/src/utils/errors.ts +15 -0
  174. package/src/{Hashnames.ts → utils/hashnames.ts} +4 -7
  175. package/src/utils/index.ts +5 -0
  176. package/src/utils/types.ts +275 -0
  177. package/src/utils/validation.ts +35 -0
  178. package/android/src/main/java/com/margelo/quickcrypto/QuickCryptoModule.java +0 -70
  179. package/android/src/main/java/com/margelo/quickcrypto/QuickCryptoPackage.java +0 -25
  180. package/cpp/Cipher/MGLCipherHostObject.cpp +0 -663
  181. package/cpp/Cipher/MGLCipherHostObject.h +0 -90
  182. package/cpp/Cipher/MGLCreateCipherInstaller.cpp +0 -75
  183. package/cpp/Cipher/MGLCreateCipherInstaller.h +0 -22
  184. package/cpp/Cipher/MGLCreateDecipherInstaller.cpp +0 -77
  185. package/cpp/Cipher/MGLCreateDecipherInstaller.h +0 -17
  186. package/cpp/Cipher/MGLGenerateKeyPairInstaller.cpp +0 -134
  187. package/cpp/Cipher/MGLGenerateKeyPairInstaller.h +0 -35
  188. package/cpp/Cipher/MGLGenerateKeyPairSyncInstaller.cpp +0 -63
  189. package/cpp/Cipher/MGLGenerateKeyPairSyncInstaller.h +0 -37
  190. package/cpp/Cipher/MGLPublicCipher.h +0 -124
  191. package/cpp/Cipher/MGLPublicCipherInstaller.h +0 -107
  192. package/cpp/Cipher/MGLRsa.cpp +0 -573
  193. package/cpp/Cipher/MGLRsa.h +0 -109
  194. package/cpp/HMAC/MGLHmacHostObject.cpp +0 -95
  195. package/cpp/HMAC/MGLHmacHostObject.h +0 -39
  196. package/cpp/HMAC/MGLHmacInstaller.cpp +0 -43
  197. package/cpp/HMAC/MGLHmacInstaller.h +0 -20
  198. package/cpp/Hash/MGLHashHostObject.cpp +0 -147
  199. package/cpp/Hash/MGLHashHostObject.h +0 -53
  200. package/cpp/Hash/MGLHashInstaller.cpp +0 -44
  201. package/cpp/Hash/MGLHashInstaller.h +0 -20
  202. package/cpp/JSIUtils/MGLJSIMacros.h +0 -110
  203. package/cpp/JSIUtils/MGLJSIUtils.h +0 -41
  204. package/cpp/JSIUtils/MGLSmartHostObject.cpp +0 -43
  205. package/cpp/JSIUtils/MGLSmartHostObject.h +0 -46
  206. package/cpp/JSIUtils/MGLThreadAwareHostObject.cpp +0 -24
  207. package/cpp/JSIUtils/MGLThreadAwareHostObject.h +0 -43
  208. package/cpp/JSIUtils/MGLTypedArray.cpp +0 -352
  209. package/cpp/JSIUtils/MGLTypedArray.h +0 -179
  210. package/cpp/MGLKeys.cpp +0 -1426
  211. package/cpp/MGLKeys.h +0 -203
  212. package/cpp/MGLQuickCryptoHostObject.cpp +0 -127
  213. package/cpp/MGLQuickCryptoHostObject.h +0 -30
  214. package/cpp/Random/MGLRandomHostObject.cpp +0 -96
  215. package/cpp/Random/MGLRandomHostObject.h +0 -27
  216. package/cpp/Sig/MGLSignHostObjects.cpp +0 -757
  217. package/cpp/Sig/MGLSignHostObjects.h +0 -128
  218. package/cpp/Sig/MGLSignInstaller.cpp +0 -24
  219. package/cpp/Sig/MGLSignInstaller.h +0 -29
  220. package/cpp/Sig/MGLVerifyInstaller.cpp +0 -24
  221. package/cpp/Sig/MGLVerifyInstaller.h +0 -22
  222. package/cpp/Utils/MGLDispatchQueue.cpp +0 -75
  223. package/cpp/Utils/MGLDispatchQueue.h +0 -55
  224. package/cpp/Utils/MGLUtils.cpp +0 -295
  225. package/cpp/Utils/MGLUtils.h +0 -358
  226. package/cpp/Utils/base64.h +0 -320
  227. package/cpp/Utils/logs.h +0 -38
  228. package/cpp/Utils/node.h +0 -13
  229. package/cpp/fastpbkdf2/MGLPbkdf2HostObject.cpp +0 -164
  230. package/cpp/fastpbkdf2/MGLPbkdf2HostObject.h +0 -29
  231. package/cpp/webcrypto/MGLWebCrypto.cpp +0 -125
  232. package/cpp/webcrypto/MGLWebCrypto.h +0 -32
  233. package/cpp/webcrypto/crypto_aes.cpp +0 -516
  234. package/cpp/webcrypto/crypto_aes.h +0 -79
  235. package/cpp/webcrypto/crypto_ec.cpp +0 -424
  236. package/cpp/webcrypto/crypto_ec.h +0 -78
  237. package/cpp/webcrypto/crypto_keygen.cpp +0 -86
  238. package/cpp/webcrypto/crypto_keygen.h +0 -38
  239. package/ios/QuickCrypto.xcodeproj/project.pbxproj +0 -274
  240. package/ios/QuickCrypto.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  241. package/ios/QuickCrypto.xcodeproj/project.xcworkspace/xcuserdata/brad.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  242. package/ios/QuickCrypto.xcodeproj/xcuserdata/brad.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  243. package/ios/QuickCryptoModule.h +0 -5
  244. package/ios/QuickCryptoModule.mm +0 -57
  245. package/lib/commonjs/Algorithms.js +0 -224
  246. package/lib/commonjs/Algorithms.js.map +0 -1
  247. package/lib/commonjs/Cipher.js +0 -504
  248. package/lib/commonjs/Cipher.js.map +0 -1
  249. package/lib/commonjs/Hash.js +0 -102
  250. package/lib/commonjs/Hash.js.map +0 -1
  251. package/lib/commonjs/Hashnames.js.map +0 -1
  252. package/lib/commonjs/Hmac.js +0 -81
  253. package/lib/commonjs/Hmac.js.map +0 -1
  254. package/lib/commonjs/NativeQuickCrypto/Cipher.js +0 -30
  255. package/lib/commonjs/NativeQuickCrypto/Cipher.js.map +0 -1
  256. package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js +0 -59
  257. package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js.map +0 -1
  258. package/lib/commonjs/NativeQuickCrypto/hash.js +0 -2
  259. package/lib/commonjs/NativeQuickCrypto/hmac.js +0 -2
  260. package/lib/commonjs/NativeQuickCrypto/keygen.js.map +0 -1
  261. package/lib/commonjs/NativeQuickCrypto/pbkdf2.js +0 -2
  262. package/lib/commonjs/NativeQuickCrypto/pbkdf2.js.map +0 -1
  263. package/lib/commonjs/NativeQuickCrypto/random.js +0 -2
  264. package/lib/commonjs/NativeQuickCrypto/random.js.map +0 -1
  265. package/lib/commonjs/NativeQuickCrypto/sig.js +0 -19
  266. package/lib/commonjs/NativeQuickCrypto/sig.js.map +0 -1
  267. package/lib/commonjs/NativeQuickCrypto/webcrypto.js.map +0 -1
  268. package/lib/commonjs/Utils.js +0 -437
  269. package/lib/commonjs/Utils.js.map +0 -1
  270. package/lib/commonjs/aes.js +0 -282
  271. package/lib/commonjs/aes.js.map +0 -1
  272. package/lib/commonjs/constants.js +0 -85
  273. package/lib/commonjs/constants.js.map +0 -1
  274. package/lib/commonjs/ec.js +0 -275
  275. package/lib/commonjs/ec.js.map +0 -1
  276. package/lib/commonjs/keygen.js +0 -58
  277. package/lib/commonjs/keygen.js.map +0 -1
  278. package/lib/commonjs/keys.js +0 -497
  279. package/lib/commonjs/keys.js.map +0 -1
  280. package/lib/commonjs/rsa.js +0 -248
  281. package/lib/commonjs/rsa.js.map +0 -1
  282. package/lib/commonjs/sig.js +0 -128
  283. package/lib/commonjs/sig.js.map +0 -1
  284. package/lib/commonjs/subtle.js +0 -450
  285. package/lib/commonjs/subtle.js.map +0 -1
  286. package/lib/commonjs/webcrypto.js +0 -14
  287. package/lib/commonjs/webcrypto.js.map +0 -1
  288. package/lib/module/Algorithms.js +0 -219
  289. package/lib/module/Algorithms.js.map +0 -1
  290. package/lib/module/Cipher.js +0 -493
  291. package/lib/module/Cipher.js.map +0 -1
  292. package/lib/module/Hash.js +0 -96
  293. package/lib/module/Hash.js.map +0 -1
  294. package/lib/module/Hashnames.js.map +0 -1
  295. package/lib/module/Hmac.js +0 -76
  296. package/lib/module/Hmac.js.map +0 -1
  297. package/lib/module/NativeQuickCrypto/Cipher.js +0 -26
  298. package/lib/module/NativeQuickCrypto/Cipher.js.map +0 -1
  299. package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js +0 -56
  300. package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js.map +0 -1
  301. package/lib/module/NativeQuickCrypto/aes.js +0 -4
  302. package/lib/module/NativeQuickCrypto/hash.js +0 -2
  303. package/lib/module/NativeQuickCrypto/hash.js.map +0 -1
  304. package/lib/module/NativeQuickCrypto/hmac.js +0 -2
  305. package/lib/module/NativeQuickCrypto/hmac.js.map +0 -1
  306. package/lib/module/NativeQuickCrypto/keygen.js +0 -4
  307. package/lib/module/NativeQuickCrypto/keygen.js.map +0 -1
  308. package/lib/module/NativeQuickCrypto/pbkdf2.js +0 -2
  309. package/lib/module/NativeQuickCrypto/pbkdf2.js.map +0 -1
  310. package/lib/module/NativeQuickCrypto/random.js +0 -2
  311. package/lib/module/NativeQuickCrypto/random.js.map +0 -1
  312. package/lib/module/NativeQuickCrypto/rsa.js +0 -4
  313. package/lib/module/NativeQuickCrypto/sig.js +0 -17
  314. package/lib/module/NativeQuickCrypto/sig.js.map +0 -1
  315. package/lib/module/NativeQuickCrypto/webcrypto.js +0 -4
  316. package/lib/module/NativeQuickCrypto/webcrypto.js.map +0 -1
  317. package/lib/module/Utils.js +0 -369
  318. package/lib/module/Utils.js.map +0 -1
  319. package/lib/module/aes.js +0 -275
  320. package/lib/module/aes.js.map +0 -1
  321. package/lib/module/constants.js +0 -81
  322. package/lib/module/constants.js.map +0 -1
  323. package/lib/module/ec.js +0 -266
  324. package/lib/module/ec.js.map +0 -1
  325. package/lib/module/keygen.js +0 -51
  326. package/lib/module/keygen.js.map +0 -1
  327. package/lib/module/keys.js +0 -482
  328. package/lib/module/keys.js.map +0 -1
  329. package/lib/module/rsa.js +0 -242
  330. package/lib/module/rsa.js.map +0 -1
  331. package/lib/module/sig.js +0 -123
  332. package/lib/module/sig.js.map +0 -1
  333. package/lib/module/subtle.js +0 -445
  334. package/lib/module/subtle.js.map +0 -1
  335. package/lib/module/webcrypto.js +0 -10
  336. package/lib/module/webcrypto.js.map +0 -1
  337. package/lib/typescript/src/Algorithms.d.ts +0 -4
  338. package/lib/typescript/src/Algorithms.d.ts.map +0 -1
  339. package/lib/typescript/src/Cipher.d.ts +0 -85
  340. package/lib/typescript/src/Cipher.d.ts.map +0 -1
  341. package/lib/typescript/src/Hash.d.ts +0 -44
  342. package/lib/typescript/src/Hash.d.ts.map +0 -1
  343. package/lib/typescript/src/Hashnames.d.ts.map +0 -1
  344. package/lib/typescript/src/Hmac.d.ts +0 -37
  345. package/lib/typescript/src/Hmac.d.ts.map +0 -1
  346. package/lib/typescript/src/NativeQuickCrypto/Cipher.d.ts +0 -44
  347. package/lib/typescript/src/NativeQuickCrypto/Cipher.d.ts.map +0 -1
  348. package/lib/typescript/src/NativeQuickCrypto/NativeQuickCrypto.d.ts +0 -33
  349. package/lib/typescript/src/NativeQuickCrypto/NativeQuickCrypto.d.ts.map +0 -1
  350. package/lib/typescript/src/NativeQuickCrypto/aes.d.ts +0 -5
  351. package/lib/typescript/src/NativeQuickCrypto/aes.d.ts.map +0 -1
  352. package/lib/typescript/src/NativeQuickCrypto/hash.d.ts +0 -7
  353. package/lib/typescript/src/NativeQuickCrypto/hash.d.ts.map +0 -1
  354. package/lib/typescript/src/NativeQuickCrypto/hmac.d.ts +0 -6
  355. package/lib/typescript/src/NativeQuickCrypto/hmac.d.ts.map +0 -1
  356. package/lib/typescript/src/NativeQuickCrypto/keygen.d.ts +0 -4
  357. package/lib/typescript/src/NativeQuickCrypto/keygen.d.ts.map +0 -1
  358. package/lib/typescript/src/NativeQuickCrypto/pbkdf2.d.ts +0 -5
  359. package/lib/typescript/src/NativeQuickCrypto/pbkdf2.d.ts.map +0 -1
  360. package/lib/typescript/src/NativeQuickCrypto/random.d.ts +0 -5
  361. package/lib/typescript/src/NativeQuickCrypto/random.d.ts.map +0 -1
  362. package/lib/typescript/src/NativeQuickCrypto/rsa.d.ts +0 -5
  363. package/lib/typescript/src/NativeQuickCrypto/rsa.d.ts.map +0 -1
  364. package/lib/typescript/src/NativeQuickCrypto/sig.d.ts +0 -23
  365. package/lib/typescript/src/NativeQuickCrypto/sig.d.ts.map +0 -1
  366. package/lib/typescript/src/NativeQuickCrypto/webcrypto.d.ts +0 -40
  367. package/lib/typescript/src/NativeQuickCrypto/webcrypto.d.ts.map +0 -1
  368. package/lib/typescript/src/Utils.d.ts +0 -71
  369. package/lib/typescript/src/Utils.d.ts.map +0 -1
  370. package/lib/typescript/src/aes.d.ts +0 -22
  371. package/lib/typescript/src/aes.d.ts.map +0 -1
  372. package/lib/typescript/src/constants.d.ts +0 -76
  373. package/lib/typescript/src/constants.d.ts.map +0 -1
  374. package/lib/typescript/src/ec.d.ts +0 -7
  375. package/lib/typescript/src/ec.d.ts.map +0 -1
  376. package/lib/typescript/src/index.d.ts +0 -139
  377. package/lib/typescript/src/index.d.ts.map +0 -1
  378. package/lib/typescript/src/keygen.d.ts +0 -6
  379. package/lib/typescript/src/keygen.d.ts.map +0 -1
  380. package/lib/typescript/src/keys.d.ts +0 -211
  381. package/lib/typescript/src/keys.d.ts.map +0 -1
  382. package/lib/typescript/src/pbkdf2.d.ts.map +0 -1
  383. package/lib/typescript/src/random.d.ts.map +0 -1
  384. package/lib/typescript/src/rsa.d.ts +0 -12
  385. package/lib/typescript/src/rsa.d.ts.map +0 -1
  386. package/lib/typescript/src/sig.d.ts +0 -21
  387. package/lib/typescript/src/sig.d.ts.map +0 -1
  388. package/lib/typescript/src/subtle.d.ts +0 -15
  389. package/lib/typescript/src/subtle.d.ts.map +0 -1
  390. package/lib/typescript/src/webcrypto.d.ts +0 -9
  391. package/lib/typescript/src/webcrypto.d.ts.map +0 -1
  392. package/react-native-quick-crypto.podspec +0 -40
  393. package/src/Algorithms.ts +0 -247
  394. package/src/Cipher.ts +0 -890
  395. package/src/Hash.ts +0 -139
  396. package/src/Hmac.ts +0 -107
  397. package/src/NativeQuickCrypto/Cipher.ts +0 -103
  398. package/src/NativeQuickCrypto/NativeQuickCrypto.ts +0 -106
  399. package/src/NativeQuickCrypto/aes.ts +0 -14
  400. package/src/NativeQuickCrypto/hash.ts +0 -10
  401. package/src/NativeQuickCrypto/hmac.ts +0 -9
  402. package/src/NativeQuickCrypto/keygen.ts +0 -7
  403. package/src/NativeQuickCrypto/random.ts +0 -12
  404. package/src/NativeQuickCrypto/rsa.ts +0 -12
  405. package/src/NativeQuickCrypto/sig.ts +0 -46
  406. package/src/NativeQuickCrypto/webcrypto.ts +0 -73
  407. package/src/Utils.ts +0 -628
  408. package/src/aes.ts +0 -402
  409. package/src/constants.ts +0 -79
  410. package/src/ec.ts +0 -374
  411. package/src/keygen.ts +0 -80
  412. package/src/keys.ts +0 -797
  413. package/src/rsa.ts +0 -372
  414. package/src/sig.ts +0 -163
  415. package/src/subtle.ts +0 -643
  416. package/src/webcrypto.ts +0 -8
  417. /package/android/src/main/{AndroidManifestNew.xml → AndroidManifest.xml} +0 -0
  418. /package/{cpp → deps}/fastpbkdf2/fastpbkdf2.c +0 -0
  419. /package/{cpp → deps}/fastpbkdf2/fastpbkdf2.h +0 -0
@@ -0,0 +1,47 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::UI.puts "[QuickCrypto] 💨 crypto just got quicker"
6
+
7
+ Pod::Spec.new do |s|
8
+ s.name = "QuickCrypto"
9
+ s.version = package["version"]
10
+ s.summary = package["description"]
11
+ s.homepage = package["homepage"]
12
+ s.license = package["license"]
13
+ s.authors = package["authors"]
14
+
15
+ s.ios.deployment_target = 16.0 # min_ios_version_supported (see https://github.com/Expensify/App/pull/53149#issuecomment-2562786065)
16
+ s.visionos.deployment_target = 1.0
17
+ s.macos.deployment_target = 10.13
18
+ s.tvos.deployment_target = 13.4
19
+
20
+ s.source = { :git => "https://github.com/margelo/react-native-quick-crypto.git", :tag => "#{s.version}" }
21
+
22
+ s.source_files = [
23
+ # implementation (Swift)
24
+ "ios/**/*.{swift}",
25
+ # ios (Objective-C++)
26
+ "ios/**/*.{h,m,mm}",
27
+ # implementation (C++)
28
+ "cpp/**/*.{hpp,cpp}",
29
+ # dependencies (C++)
30
+ "deps/**/*.{hpp,cpp}",
31
+ # dependencies (C)
32
+ "deps/**/*.{h,c}",
33
+ ]
34
+
35
+ if ENV["USE_FRAMEWORKS"]
36
+ s.dependency "React-Core"
37
+ add_dependency(s, "React-jsinspector", :framework_name => "jsinspector_modern")
38
+ add_dependency(s, "React-rendererconsistency", :framework_name => "React_rendererconsistency")
39
+ end
40
+
41
+ # Add all files generated by Nitrogen
42
+ load 'nitrogen/generated/ios/QuickCrypto+autolinking.rb'
43
+ add_nitrogen_files(s)
44
+
45
+ s.dependency "OpenSSL-Universal"
46
+ install_modules_dependencies(s)
47
+ end
package/README.md CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
  A fast implementation of Node's `crypto` module.
8
8
 
9
- > Note: This version `0.x` is the Old Architecture, Bridged version for React Native. The `1.x` and higher branches are refactored to work with the New Architecture, Bridgeless, and [`Nitro Modules`](https://github.com/mrousavy/react-native-nitro). Status, as always, will be represented in [implementation-coverage.md](../0.x/docs/implementation-coverage.md).
9
+ > Note: This version `1.x` is undergoing a major refactor, porting to New Architecture, Bridgeless, and [`Nitro Modules`](https://github.com/mrousavy/react-native-nitro) and is incomplete compared to the `0.x` version. Status, as always, will be represented in [implementation-coverage.md](../main/docs/implementation-coverage.md).
10
+
11
+ > Note: Minimum supported version of React Native is `0.75`. If you need to use earlier versions, please use `0.x` versions of this library.
10
12
 
11
13
  ## Features
12
14
 
@@ -24,8 +26,8 @@ QuickCrypto can be used as a drop-in replacement for your Web3/Crypto apps to sp
24
26
 
25
27
  | Version | RN Architecture | Modules |
26
28
  | ------- | ------ | ------- |
27
- | `0.x` (you are here) | old | Bridge & JSI |
28
- | `1.x`+ | new [->](https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-apps.md) | Nitro Modules [->](https://github.com/margelo/react-native-nitro) |
29
+ | `1.x` | new [->](https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-apps.md) | Nitro Modules [->](https://github.com/margelo/react-native-nitro) |
30
+ | `0.x` | old | Bridge & JSI |
29
31
 
30
32
  ## Benchmarks
31
33
 
@@ -59,7 +61,7 @@ Creating a Wallet took 289 ms
59
61
  </h3>
60
62
 
61
63
  ```sh
62
- yarn add react-native-quick-crypto
64
+ bun add react-native-quick-crypto react-native-nitro-modules
63
65
  cd ios && pod install
64
66
  ```
65
67
 
@@ -1,84 +1,55 @@
1
- project(ReactNativeQuickCrypto)
1
+ project(QuickCrypto)
2
2
  cmake_minimum_required(VERSION 3.9.0)
3
3
 
4
- set(PACKAGE_NAME "reactnativequickcrypto")
5
- set(BUILD_DIR ${CMAKE_SOURCE_DIR}/build)
4
+ set(PACKAGE_NAME QuickCrypto)
6
5
  set(CMAKE_VERBOSE_MAKEFILE ON)
7
- set(CMAKE_CXX_STANDARD 17)
6
+ set(CMAKE_CXX_STANDARD 20)
8
7
 
9
8
  # Define C++ library and add all sources
10
9
  add_library(
11
10
  ${PACKAGE_NAME} SHARED
12
11
  src/main/cpp/cpp-adapter.cpp
13
- ../cpp/MGLQuickCryptoHostObject.cpp
14
- ../cpp/JSIUtils/MGLTypedArray.cpp
15
- ../cpp/Utils/MGLDispatchQueue.cpp
16
- ../cpp/JSIUtils/MGLThreadAwareHostObject.cpp
17
- ../cpp/JSIUtils/MGLSmartHostObject.cpp
18
- ../cpp/HMAC/MGLHmacInstaller.cpp
19
- ../cpp/HMAC/MGLHmacHostObject.cpp
20
- ../cpp/fastpbkdf2/MGLPbkdf2HostObject.cpp
21
- ../cpp/fastpbkdf2/fastpbkdf2.c
22
- ../cpp/Random/MGLRandomHostObject.cpp
23
- ../cpp/Hash/MGLHashInstaller.cpp
24
- ../cpp/Hash/MGLHashHostObject.cpp
25
- ../cpp/Cipher/MGLCipherHostObject.cpp
26
- ../cpp/Cipher/MGLCreateCipherInstaller.cpp
27
- ../cpp/Cipher/MGLCreateDecipherInstaller.cpp
28
- ../cpp/MGLKeys.cpp
29
- ../cpp/Utils/MGLUtils.cpp
30
- ../cpp/Cipher/MGLRsa.cpp
31
- ../cpp/Cipher/MGLGenerateKeyPairInstaller.cpp
32
- ../cpp/Cipher/MGLGenerateKeyPairSyncInstaller.cpp
33
- ../cpp/Sig/MGLSignInstaller.cpp
34
- ../cpp/Sig/MGLVerifyInstaller.cpp
35
- ../cpp/Sig/MGLSignHostObjects.cpp
36
- ../cpp/webcrypto/MGLWebCrypto.cpp
37
- ../cpp/webcrypto/crypto_aes.cpp
38
- ../cpp/webcrypto/crypto_ec.cpp
39
- ../cpp/webcrypto/crypto_keygen.cpp
12
+ ../cpp/ed25519/HybridEdKeyPair.cpp
13
+ ../cpp/pbkdf2/HybridPbkdf2.cpp
14
+ ../cpp/random/HybridRandom.cpp
15
+ ../deps/fastpbkdf2/fastpbkdf2.c
40
16
  )
41
17
 
18
+ # add Nitrogen specs
19
+ include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/QuickCrypto+autolinking.cmake)
20
+
42
21
  # local includes
43
22
  include_directories(
44
- src/main/cpp
45
- ../cpp
46
- ../cpp/Cipher
47
- ../cpp/fastpbkdf2
48
- ../cpp/Hash
49
- ../cpp/HMAC
50
- ../cpp/JSIUtils
51
- ../cpp/Random
52
- ../cpp/Sig
53
- ../cpp/Utils
54
- ../cpp/webcrypto
23
+ "src/main/cpp"
24
+ "../cpp/ed25519"
25
+ "../cpp/pbkdf2"
26
+ "../cpp/random"
27
+ "../cpp/utils"
28
+ "../deps/fastpbkdf2"
55
29
  )
56
30
 
57
31
  # Third party libraries (Prefabs)
58
32
  find_library(LOG_LIB log)
59
- find_package(openssl REQUIRED CONFIG)
60
- find_package(fbjni REQUIRED CONFIG)
61
- find_package(ReactAndroid REQUIRED CONFIG)
62
33
 
34
+ find_package(openssl REQUIRED CONFIG)
63
35
 
36
+ # Link all libraries together
64
37
  target_link_libraries(
65
38
  ${PACKAGE_NAME}
66
- ${LOG_LIB} # <-- Logcat logger
67
- android # <-- Android JNI core
68
- fbjni::fbjni # <-- Facebook C++ JNI helpers
69
- ReactAndroid::jsi # <-- RN: JSI
70
- openssl::crypto # <-- OpenSSL (Crypto)
71
- )
39
+ ${LOG_LIB} # <-- Logcat logger
40
+ android # <-- Android core
41
+ openssl::crypto # <-- OpenSSL (Crypto)
42
+ )
72
43
 
73
44
  if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
74
45
  target_link_libraries(
75
46
  ${PACKAGE_NAME}
76
- ReactAndroid::reactnative # <-- RN: Native Modules umbrella prefab
47
+ ReactAndroid::reactnative # <-- RN: Native Modules umbrella prefab
77
48
  )
78
49
  else()
79
50
  target_link_libraries(
80
51
  ${PACKAGE_NAME}
81
- ReactAndroid::react_nativemodule_core # <-- RN: TurboModules Core
82
- ReactAndroid::turbomodulejsijni # <-- RN: TurboModules utils (e.g. CallInvokerHolder)
83
- )
52
+ ReactAndroid::turbomodulejsijni
53
+ ReactAndroid::react_nativemodule_core # <-- RN: React Native native module core
54
+ )
84
55
  endif()
@@ -1,119 +1,66 @@
1
- import java.nio.file.Paths
2
- import com.android.Version
3
-
4
- def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION
5
- def agpVersionMajor = agpVersion.tokenize('.')[0].toInteger()
6
- def agpVersionMinor = agpVersion.tokenize('.')[1].toInteger()
7
-
8
1
  buildscript {
2
+ ext.kotlinVersion = '1.9.25'
3
+
9
4
  repositories {
10
5
  google()
11
6
  mavenCentral()
12
7
  }
13
8
 
14
9
  dependencies {
15
- classpath("com.android.tools.build:gradle:8.7.3")
10
+ classpath "com.android.tools.build:gradle:8.7.3"
16
11
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}"
17
12
  }
18
13
  }
19
14
 
20
- def isNewArchitectureEnabled() {
21
- // To opt-in for the New Architecture, you can either:
22
- // - Set `newArchEnabled` to true inside the `gradle.properties` file
23
- // - Invoke gradle with `-newArchEnabled=true`
24
- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
25
- return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
15
+ def reactNativeArchitectures() {
16
+ def value = rootProject.getProperties().get("reactNativeArchitectures")
17
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
26
18
  }
27
19
 
28
- def resolveBuildType() {
29
- Gradle gradle = getGradle()
30
- String tskReqStr = gradle.getStartParameter().getTaskRequests()['args'].toString()
31
-
32
- return tskReqStr.contains('Release') ? 'release' : 'debug'
20
+ def isNewArchitectureEnabled() {
21
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
33
22
  }
34
23
 
35
- apply plugin: 'com.android.library'
24
+ apply plugin: "com.android.library"
36
25
  apply plugin: "org.jetbrains.kotlin.android"
26
+ apply from: "../nitrogen/generated/android/QuickCrypto+autolinking.gradle"
37
27
 
38
28
  if (isNewArchitectureEnabled()) {
39
29
  apply plugin: "com.facebook.react"
40
30
  }
41
31
 
42
- def safeExtGet(prop, fallback) {
43
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
44
- }
45
-
46
- def reactNativeArchitectures() {
47
- def value = project.getProperties().get("reactNativeArchitectures")
48
- return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
49
- }
50
-
51
- static def findNodeModules(baseDir) {
52
- def basePath = baseDir.toPath().normalize()
53
- // Node's module resolution algorithm searches up to the root directory,
54
- // after which the base path will be null
55
- while (basePath) {
56
- def nodeModulesPath = Paths.get(basePath.toString(), "node_modules")
57
- def reactNativePath = Paths.get(nodeModulesPath.toString(), "react-native")
58
- if (nodeModulesPath.toFile().exists() && reactNativePath.toFile().exists()) {
59
- return nodeModulesPath.toString()
60
- }
61
- basePath = basePath.getParent()
62
- }
63
- throw new GradleException("react-native-quick-crypto: Failed to find node_modules/ path!")
32
+ def getExtOrDefault(name) {
33
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["QuickCrypto_" + name]
64
34
  }
65
35
 
66
- def nodeModules = findNodeModules(projectDir)
67
-
68
- repositories {
69
- google()
70
- mavenCentral()
36
+ def getExtOrIntegerDefault(name) {
37
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["QuickCrypto_" + name]).toInteger()
71
38
  }
72
39
 
73
40
  android {
74
- compileSdkVersion safeExtGet("compileSdkVersion", 31)
75
-
76
- if ((agpVersionMajor == 7 && agpVersionMinor >= 3) || agpVersionMajor >= 8) {
77
- // Namespace support was added in 7.3.0
78
- namespace "com.margelo.quickcrypto"
79
-
80
- sourceSets {
81
- main {
82
- manifest.srcFile "src/main/AndroidManifestNew.xml"
83
- }
84
- }
85
- }
86
-
87
- if (agpVersionMajor >= 8) {
88
- buildFeatures {
89
- buildConfig = true
90
- }
91
- }
92
-
93
- // Used to override the NDK path/version on internal CI or by allowing
94
- // users to customize the NDK path/version from their root project (e.g. for M1 support)
95
- if (rootProject.hasProperty("ndkPath")) {
96
- ndkPath rootProject.ext.ndkPath
97
- }
98
- if (rootProject.hasProperty("ndkVersion")) {
99
- ndkVersion rootProject.ext.ndkVersion
100
- }
101
-
102
- buildFeatures {
103
- prefab true
104
- }
41
+ namespace "com.margelo.nitro.quickcrypto"
42
+ ndkVersion getExtOrDefault("ndkVersion")
43
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
105
44
 
106
45
  defaultConfig {
107
- minSdkVersion safeExtGet('minSdkVersion', 23)
108
- targetSdkVersion safeExtGet('targetSdkVersion', 31)
109
- versionCode 1
110
- versionName "1.0"
46
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
47
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
111
48
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
49
+
112
50
  externalNativeBuild {
113
51
  cmake {
114
- cppFlags "-O2 -frtti -fexceptions -Wall -Wno-unused-variable -fstack-protector-all -DANDROID"
52
+ cppFlags "-frtti -fexceptions -Wall -fstack-protector-all"
115
53
  arguments "-DANDROID_STL=c++_shared"
116
54
  abiFilters (*reactNativeArchitectures())
55
+
56
+ buildTypes {
57
+ debug {
58
+ cppFlags "-O1 -g"
59
+ }
60
+ release {
61
+ cppFlags "-O2"
62
+ }
63
+ }
117
64
  }
118
65
  }
119
66
  }
@@ -124,17 +71,29 @@ android {
124
71
  }
125
72
  }
126
73
 
127
- packagingOptions {
128
- doNotStrip resolveBuildType() == 'debug' ? "**/**/*.so" : ''
74
+ buildFeatures {
75
+ buildConfig true
76
+ prefab true
77
+ }
78
+
79
+ packagingOptions {
129
80
  excludes = [
81
+ "META-INF",
82
+ "META-INF/**",
130
83
  "**/libc++_shared.so",
131
84
  "**/libfbjni.so",
132
- "**/libreactnativejni.so",
133
85
  "**/libjsi.so",
134
- "**/libreact_nativemodule_core.so",
135
- "**/libturbomodulejsijni.so",
136
- "**/MANIFEST.MF",
86
+ "**/libfolly_json.so",
87
+ "**/libfolly_runtime.so",
88
+ "**/libglog.so",
89
+ "**/libhermes.so",
90
+ "**/libhermes-executor-debug.so",
91
+ "**/libhermes_executor.so",
137
92
  "**/libreactnative.so",
93
+ "**/libreactnativejni.so",
94
+ "**/libturbomodulejsijni.so",
95
+ "**/libreact_nativemodule_core.so",
96
+ "**/libjscexecutor.so"
138
97
  ]
139
98
  }
140
99
 
@@ -142,25 +101,27 @@ android {
142
101
  release {
143
102
  minifyEnabled false
144
103
  }
145
- debug {
146
- packagingOptions {
147
- doNotStrip '**/*.so'
148
- }
149
- minifyEnabled false
150
- debuggable true
151
- jniDebuggable true
152
- renderscriptDebuggable true
153
- }
154
104
  }
155
105
 
156
106
  lintOptions {
157
- disable 'GradleCompatible'
107
+ disable "GradleCompatible"
158
108
  }
109
+
159
110
  compileOptions {
160
111
  sourceCompatibility JavaVersion.VERSION_1_8
161
112
  targetCompatibility JavaVersion.VERSION_1_8
162
113
  }
163
114
 
115
+ sourceSets {
116
+ main {
117
+ if (isNewArchitectureEnabled()) {
118
+ java.srcDirs += [
119
+ // React Codegen files
120
+ "${project.buildDir}/generated/source/codegen/java"
121
+ ]
122
+ }
123
+ }
124
+ }
164
125
  }
165
126
 
166
127
  repositories {
@@ -168,25 +129,22 @@ repositories {
168
129
  google()
169
130
  }
170
131
 
132
+
171
133
  dependencies {
172
134
  //noinspection GradleDynamicVersion
173
- implementation "com.facebook.react:react-android:+"
135
+ implementation "com.facebook.react:react-native:+"
136
+
137
+ // Add a dependency on NitroModules
138
+ implementation project(":react-native-nitro-modules")
174
139
 
175
140
  // Add a dependency on OpenSSL
176
141
  implementation 'io.github.ronickg:openssl:3.3.2'
177
142
  }
178
143
 
179
- // Resolves "LOCAL_SRC_FILES points to a missing file, Check that libfb.so exists or that its path is correct".
180
- tasks.whenTaskAdded { task ->
181
- if (task.name.contains("configureCMakeDebug")) {
182
- rootProject.getTasksByName("packageReactNdkDebugLibs", true).forEach {
183
- task.dependsOn(it)
184
- }
185
- }
186
- // We want to add a dependency for both configureCMakeRelease and configureCMakeRelWithDebInfo
187
- if (task.name.contains("configureCMakeRel")) {
188
- rootProject.getTasksByName("packageReactNdkReleaseLibs", true).forEach {
189
- task.dependsOn(it)
190
- }
144
+ if (isNewArchitectureEnabled()) {
145
+ react {
146
+ jsRootDir = file("../src/")
147
+ libraryName = "QuickCrypto"
148
+ codegenJavaPackageName = "com.margelo.nitro.quickcrypto"
191
149
  }
192
150
  }
@@ -1,6 +1,6 @@
1
- QuickCrypto_compileSdkVersion=31
2
- QuickCrypto_targetSdkVersion=31
3
- QuickCrypto_ndkversion=21.4.7075529
1
+ QuickCrypto_compileSdkVersion=34
2
+ QuickCrypto_targetSdkVersion=34
4
3
  QuickCrypto_minSdkVersion=23
4
+ QuickCrypto_ndkVersion=21.4.7075529
5
5
 
6
6
  android.useAndroidX=true
@@ -1,69 +1,8 @@
1
- #include <ReactCommon/CallInvokerHolder.h>
2
1
  #include <fbjni/fbjni.h>
3
2
  #include <jni.h>
4
- #include <jsi/jsi.h>
5
- #include <memory>
6
3
 
7
- #include "MGLQuickCryptoHostObject.h"
8
- #include "JSIUtils/MGLTypedArray.h"
4
+ #include "QuickCryptoOnLoad.hpp"
9
5
 
10
- using namespace facebook;
11
-
12
- class CryptoCppAdapter : public jni::HybridClass<CryptoCppAdapter> {
13
- public:
14
- static auto constexpr kJavaDescriptor =
15
- "Lcom/margelo/quickcrypto/QuickCryptoModule;";
16
-
17
- static jni::local_ref<jni::HybridClass<CryptoCppAdapter>::jhybriddata>
18
- initHybrid(jni::alias_ref<jhybridobject> jThis) {
19
- return makeCxxInstance();
20
- }
21
-
22
- CryptoCppAdapter() {}
23
-
24
- void install(jsi::Runtime &runtime,
25
- std::shared_ptr<facebook::react::CallInvoker> jsCallInvoker) {
26
- auto workerQueue = std::make_shared<margelo::DispatchQueue::dispatch_queue>(
27
- "margelo crypto worker thread");
28
- auto hostObject = std::make_shared<margelo::MGLQuickCryptoHostObject>(
29
- jsCallInvoker, workerQueue);
30
- auto object = jsi::Object::createFromHostObject(runtime, hostObject);
31
- runtime.global().setProperty(runtime, "__QuickCryptoProxy",
32
- std::move(object));
33
- // Adds the PropNameIDCache object to the Runtime. If the Runtime gets destroyed, the Object gets destroyed and the cache gets invalidated.
34
- auto propNameIdCache = std::make_shared<InvalidateCacheOnDestroy>(runtime);
35
- runtime.global().setProperty(
36
- runtime,
37
- "rnqcArrayBufferPropNameIdCache",
38
- jsi::Object::createFromHostObject(runtime, propNameIdCache)
39
- );
40
- }
41
-
42
- void nativeInstall(
43
- jlong jsiPtr,
44
- jni::alias_ref<facebook::react::CallInvokerHolder::javaobject>
45
- jsCallInvokerHolder) {
46
- auto jsCallInvoker = jsCallInvokerHolder->cthis()->getCallInvoker();
47
- auto runtime = reinterpret_cast<jsi::Runtime *>(jsiPtr);
48
- if (runtime) {
49
- install(*runtime, jsCallInvoker);
50
- }
51
- // if runtime was nullptr, QuickCrypto will not be installed. This should
52
- // only happen while Remote Debugging (Chrome), but will be weird either
53
- // way.
54
- }
55
-
56
- static void registerNatives() {
57
- registerHybrid(
58
- {makeNativeMethod("initHybrid", CryptoCppAdapter::initHybrid),
59
- makeNativeMethod("nativeInstall", CryptoCppAdapter::nativeInstall)});
60
- }
61
-
62
- private:
63
- friend HybridBase;
64
- };
65
-
66
- JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
67
- return facebook::jni::initialize(vm,
68
- [] { CryptoCppAdapter::registerNatives(); });
6
+ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
7
+ return facebook::jni::initialize(vm, [=] { margelo::nitro::crypto::initialize(vm); });
69
8
  }
@@ -0,0 +1,43 @@
1
+ package com.margelo.nitro.quickcrypto;
2
+
3
+ import android.util.Log;
4
+
5
+ import androidx.annotation.Nullable;
6
+
7
+ import com.facebook.react.bridge.NativeModule;
8
+ import com.facebook.react.bridge.ReactApplicationContext;
9
+ import com.facebook.react.module.model.ReactModuleInfoProvider;
10
+ import com.facebook.react.TurboReactPackage;
11
+ import com.margelo.nitro.core.HybridObject;
12
+ import com.margelo.nitro.core.HybridObjectRegistry;
13
+
14
+ import java.util.HashMap;
15
+ import java.util.function.Supplier;
16
+
17
+ public class QuickCryptoPackage extends TurboReactPackage {
18
+ private static final String TAG = "QuickCrypto";
19
+
20
+ @Nullable
21
+ @Override
22
+ public NativeModule getModule(String name, ReactApplicationContext reactContext) {
23
+ return null;
24
+ }
25
+
26
+ @Override
27
+ public ReactModuleInfoProvider getReactModuleInfoProvider() {
28
+ return () -> {
29
+ return new HashMap<>();
30
+ };
31
+ }
32
+
33
+ static {
34
+ try {
35
+ Log.i(TAG, "Loading C++ library...");
36
+ System.loadLibrary(TAG);
37
+ Log.i(TAG, "Successfully loaded C++ library!");
38
+ } catch (Throwable e) {
39
+ Log.e(TAG, "Failed to load C++ library! Is it properly installed and linked?", e);
40
+ throw e;
41
+ }
42
+ }
43
+ }